第三次博客作业

一. 规格设计的发展历程:

在1960年代末至1970年代初期,出现了一次软件危机:一方面需要大量的软件系统,如操作系统、数据库管理系统;另一方面,软件研制周期长,可靠性差,维护困难。人们希望编写出的程序结构清晰、易阅读、易修改、易验证,即产生良好结构的程序。60年代中期,大容量、高速度的计算机出现,随之出现的是代码量急剧提升,复杂度急剧增长、程序可靠性的重要性突出的问题。结果化程序设计随之提出,它要求程序设计时以模块为单位,每个模块专职自己的工作,而要在模块间交流,在开发者和用户,开发者和开发者之间交流,就只需要相应接口即可。到了80年代,“软件工程”的概念第一次被提出,计算机的速度和容量大大提高,程序的复杂度也急剧增长,人们开始在程序设计时以模块为单位,各部分有了自己各自独立的工作,开始出现规格化抽象。比如说C++和JAVA的类说明和类实现出现了分离。之后,随着计算机软件规模日渐庞大,结构化程序设计方法开始无法满足用户的需求,面向对象程序设计(OOP)应运而生。面向对象程序设计是一场重大的革命,提高了开发人员的效率,有效地控制了软件开发的复杂度,提高了软件的可维护性和可拓展性。(本部分来自于互联网和适当修订)

规格化的设计大大提高了程序的规范性和规模化,提高了程序可读性,并降低了维护难度,所以得到了广泛的重视。

二. 作业中出现的规格bug:

第九次作业无bug。

第十次作业中因为是对第九次的补充。。。导致一些地方忘了补充repok方法和其他规格而被报了bug。。。

第十一次还是落下了一个类没写repok。。。

这种bug。。。不分析也罢。。。

三. 分析BUG产生的原因:

不想写规格,所有的规格都是最后往上加,所以东丢西落。(胡乱分析)

四. 写法改进:

  1. 前置条件:

第一类(无限制):

/**

         * 增删流量

         * @REQUIRES: None;

         * @MODIFIES: guigv.flowmap;

         * @EFFECTS:

         * increase and reduce the flow by time interval;

         */

改为* @REQUIRES: 0<=xbegin, ybegin, xend, yend<80;

第二类(未检查repok):

/**

  * 获取乘客请求

  * @REQUIRES: r1!=null;

  * @MODIFIES: this.request,this.sign,this.state;

  * @EFFECTS:

  * request == r1;

  * sign == 1;

  * state == 3;

  * r1.tapoint ="("+Integer.toString(this.x)+","+Integer.toString(this.y)+")";

         */

                     改为:* @REQUIRES: r1!=null && r1.repok()!=false;

  2.影响:

/**

       * 读地图

       * @REQUIRES: None;

       * @EFFECTS:

       * initialize map

*/

加上* @MODIFIES: this.map;

  3.后置:

基本都上的自然语言,没得改。

五. 心得体会:

好人有好报。善恶终有报。人在做,天在看。我就不信抓着一个crash换花样报三个点,没检查map格式扣四个bug,测试文件名里面加空格的人,能是什么好人。

就这些,没了。

原文地址:https://www.cnblogs.com/sxz1606/p/9112276.html