一.1规格化设计的大致发展历史

20世纪60年代,随着大容量、高速度的计算机出现,以及大量语言的新增和软件的不可靠,爆发了所谓的“软件危机”。而针对这个问题,人们提出了规格化设计的解决方法。通过把程序分成模块,以模块为单位,每个模块实现相应的功能,使得在进行交流的时候,只需要相应模块的接口就好。

随着规格化设计带来的诸多便利,其在之后30多年的研究和应用期间,让程序的可读性得到不断的增强,并让程序便于进一步修改和移植。而如今规格化设计的发展,已经取得了大量重要的成果,产生了基于逻辑、状态机、网络、进程代数、代数等多种形式的规格说明,为软件的开发和维护带来了巨大便利。

(2)人们重视规格化设计的原因

通过使用规划化设计,在进行交流的时候,彼此之间不需要关心对方的实现方法,只需要关心这个模块的接口的要求,改动以及功能。这样方便多人更快捷清晰地完成任务。在之后对程序的维护和修改过程中,也能更具有针对性,更有效。

二.规格BUG分析

第九次作业为无效作业,在此不做分析。

第十次作业在互测过程中,没有被报规格BUG。

第十一次作业

BUG内容

BUG类型

BUG代码行数

BUG原因

规格检查->抽象对象有效性实现检查:Overview是否明确抽象对象

规格

n

Load类没有写类规格,无overview。

规格检查->抽象对象有效性实现检查:Overview是否明确抽象对象

规格

n

Qingqiu类没有写类规格,无overview。

规格检查->抽象对象有效性实现检查:Overview是否明确抽象对象

规格

n

Traceabletaxi类没有写类规格,无overview。

三.产生规格BUG的原因

写作业的时候操之过急,忘了给新增的类写类规格。

四.不好写法及其改进

  1. 前置:传入的参数应该加以限制

错误:

改进:

  2.前置:“=”应该为“==”

错误:

  

改进:

  3.前置:前置条件应为布尔表达式

错误:

改进:

  4.前置:优先级问题

错误:

改进:

  5.前置:前置条件范围错误

错误:

改进:

  6.后置:“=”应该为“==”

错误:

改进:

  7.后置:未处理异常

错误:

改进:

  8.后置:后置条件遗漏修改变量

错误:

改进:

  9.后置:后置条件描述不完整

错误:

改进:

  10.后置:格式不正确

错误:

改进:

五.功能BUG和规格BUG的聚焦关系

功能BUG和规格BUG没有聚焦关系。规格BUG不是因为功能BUG所导致的。

六.基本思路和体会

基本是先写好方法后,才开始写规格。有尝试按照规格的方式写,但是写着写着就写不下来了,水平不够。以及在写规格时,要注意隐含的前置条件。在修改代码后,要注意修改规格,不然容易忘。

oo第三次总结的更多相关文章

  1. OO第三次课程总结分析

    OO第三次课程总结分析 规格化设计发展历史 在网上找了好久也没找到合适的信息,稍稍参考了同学的博客.大致如下:最初的的软件并没有形式化方法,随着软件工程的兴起,为了便于工程间的协调管理,人们提出采用工 ...

  2. [BUAA OO]第三次博客作业

    OO第三次博客作业 1. 规格化设计的发展 我认为,规格化设计主要源自于软件设计的两次危机.第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼 ...

  3. OO第三次博客作业——规格

    OO第三次博客作业——规格 一.调研结果: 规格的历史: 引自博文链接:http://blog.sina.com.cn/s/blog_473d5bba010001x9.html 传统科学的特点是发现世 ...

  4. OO第三单元作业总结

    OO第三单元作业总结--JML 第三单元的主题是JML规格的学习,其中的三次作业也是围绕JML规格的实现所展开的(虽然感觉作业中最难的还是如何正确适用数据结构以及如何正确地对于时间复杂度进行优化). ...

  5. 规格化设计——OO第三单元总结

    规格化设计--OO第三单元总结 一.JML语言理论基础.应用工具链 1.1 JML语言 ​ JML(java modeling language)是一种描述代码行为的语言,包括前置条件.副作用等等.J ...

  6. 【OO学习】OO第三单元作业总结

    [OO学习]OO第三单元作业总结 第三单元,我们学习了JML语言,用来进行形式化设计.本单元包括三次作业,通过给定的JML来实行了一个对路径的管理系统,最后完成了一个地铁系统,来管理不同的线路,求得关 ...

  7. OO第三单元(地铁,JML)单元总结

    OO第三单元(地铁,JML)单元总结 这是我们OO课程的第二个单元,这个单元的主要目的是让我们熟悉并了解JML来是我们具有规格化编程架构的思想.这个单元的主题一开始并不明了,从第一次作业的路径到第二次 ...

  8. OO第三单元——基于JML的社交网络总结

    OO第三单元--基于JML的社交网络总结 一.JML知识梳理 1)JML的语言基础以及基本语法 JML是用于java程序进行规格化设计的一种表示语言,是一种行为接口规格语言.其为严格的程序设计提供了一 ...

  9. OO第三单元作业——魔教规格

    OO第三单元作业--魔教规格 JML的理论基础和相关工具   JML(Java Modeling Language,Java建模语言),在Java代码种增加了一些符号,这些符号用来标志一个方法是干什么 ...

  10. OO第三单元个人总结

    OO第三单元个人总结 JML理论与基础与应用工具链 JML是什么? Java建模语言(JML)是一种行为接口规范语言,可用于指定Java模块的行为 .它结合了Eiffel的契约设计方法 和Larch ...

随机推荐

  1. [Harbor]Harbor简要介绍

    前一段时间写过一篇文章:[Kubernetes]CentOS7下搭建Harbor仓库,只是知道了如何搭建,但是对于背后的整体架构还不是太清楚,这篇文章就来讲讲. 默认情况下,Harbor运行起来后有如 ...

  2. POJ 2318 TOYS (叉积+二分)

    题目: Description Calculate the number of toys that land in each bin of a partitioned toy box. Mom and ...

  3. 34. Find First and Last Position of Element in Sorted Array

    1. 原始题目 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在 ...

  4. windows :config windows update … 一直处于假死状态

    参考文章:http://www.cnblogs.com/teacat/p/9204225.html 环境:win7 64bit 旗舰版 问题:重启后,系统更新到35%后,一直处于假死状态,未能正确进入 ...

  5. ASP.NET Core之依赖注入

    本文翻译自:http://www.tutorialsteacher.com/core/dependency-injection-in-aspnet-core ASP.NET Core支持依赖注入,依赖 ...

  6. 【原创】大叔问题定位分享(21)spark执行insert overwrite非常慢,比hive还要慢

    最近把一些sql执行从hive改到spark,发现执行更慢,sql主要是一些insert overwrite操作,从执行计划看到,用到InsertIntoHiveTable spark-sql> ...

  7. Flask简述

    Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后 ...

  8. Java:Spring @Transactional工作原理

    本文将深入研究Spring的事务管理.主要介绍@Transactional在底层是如何工作的.之后的文章将介绍: propagation(事务传播)和isolation(隔离性)等属性的使用 事务使用 ...

  9. pta编程总结1

    7-1 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个符 ...

  10. mybatis循环、mybatis传map

    mybatis中使用循环.mybatis传入map案例 <!-- 根据id修改商户提成配置--> <update id="editStopAll" paramet ...