一、 规格发展历史
ENIAC奠定了电子计算机的发展基础,开辟了一个计算机科学技术的新纪元。有人将其称为人类第三次产业革命开始的标志。
ENIAC诞生后,数学家冯•诺依曼提出了重大的改进理论,主要有两点:其一是电子计算机应该以二进制为运算基础,其二是电子计算机应采用存储程序方式工作,并且进一步明确指出了整个计算机的结构应由五个部分组成:运算器、控制器、存储器、输入装置和输出装置。冯•诺依曼的这些理论的提出,解决了计算机的运算自动化的问题和速度配合问题,对后来计算机的发展起到了决定性的作用。直至今天,绝大部分的计算机还是采用冯•诺依曼方式工作。
ENIAC诞生后短短的几十年间,计算机的发展突飞猛进。主要电子器件相继使用了真空电子管,晶体管,中、小规模集成电路和大规模、超大规模集成电路,引起计算机的几次更新换代。每一次更新换代都使计算机的体积和耗电量大大减小,功能大大增强,应用领域进一步拓宽。特别是体积小、价格低、功能强的微型计算机的出现,使得计算机迅速普及,进入了办公室和家庭,在办公室自动化和多媒体应用方面发挥了很大的作用。目前,计算机的应用已扩展到社会的各个领域。
二、 bug统计
规格BUG | 功能BUG | 是否有联系 | |
第九次作业 | 3 | 0 | 有 |
第十次作业 | 0 | 0 | 无 |
第十一次作业 | 0 | 0 | 无 |
从上面这个表格可以看出来,我的三次作业都没有被报功能性BUG,我认为这村内在两方面原因:一是我写了作业,二是测试者没有测出来我的BUG,在第九次作业中,我被报告了3个规格BUG,在我看来,这三处BUG都是一摸一样的,因为这是我三个判断正则表达式的地方,都是由于前置条件写的有问题,当时我认为不需要条件就要写null,可是并不是,要写成空,所以被报告了三个BUG。
我认为被报告的BUG和代码行数并没有多大联系,这三处代码算上我习惯的空行应该也没有40行,有效代码更是少,但是就会被报告规格BUG,而其他地方写的很长的方法并没有被报告BUG。
所以,我认为我被报告BUG的原因主要是我没有仔细看好那份word,所以才会被报告规格BUG,这也是第一次写规格,所以会出现一些纰漏。
三、 规格举例
1、运用了自然语言
/** @REQUIRES: Req_list类的对象r
*@MODIFIES: this
*@EFFECTS: 给this里的变量赋值
*@THREAD_REQUIRES:
*@THREAD_EFFECTS:
*/
修改后:
/** @REQUIRES: r!=null
*@MODIFIES: this
*@EFFECTS: this!=null
*@THREAD_REQUIRES:
*@THREAD_EFFECTS:
*/
2、打出了null
/** @REQUIRES: null
*@MODIFIES: start_x, start_y, end_x, end_y
*@EFFECTS: 给上面的变量赋值
*@THREAD_REQUIRES:
*@THREAD_EFFECTS:
*/
修改后:
/** @REQUIRES:
*@MODIFIES: start_x, start_y, end_x, end_y
*@EFFECTS: start_x=a1 && end_x=b1&&start_y=a2&&end_y=b2
*/
3、effect写的不清楚
/** *@REQUIRES: null
*@MODIFIES: null
*@EFFECTS: 返回value
*@THREAD_REQUIRES: Vocked(value)
*@THREAD_EFFECTS:
*/
修改后:
/** *@REQUIRES:
*@MODIFIES:
*@EFFECTS:
esult==>value
*@THREAD_REQUIRES: locked(value)
*@THREAD_EFFECTS:
*/
4、较为简单的都是用了自然语言
/** @REQUIRES: null
*@MODIFIES: null
*@EFFECTS: 返x1
*@THREAD_REQUIRES: locked(x1)
*@THREAD_EFFECTS:
*/
修改后:
/** @REQUIRES:
*@MODIFIES:
*@EFFECTS:
esult==>x1
*@THREAD_REQUIRES: locked(x1)
*@THREAD_EFFECTS:
*/
5、限定范围不明确
/** @REQUIRES: null
*@MODIFIES: value
*@EFFECTS: 修改value为x
*@THREAD_REQUIRES: locked(value)
*@THREAD_EFFECTS:
*/
修改后:
/** @REQUIRES: x>=0 && x<=300
*@MODIFIES: value
*@EFFECTS:value==>x
*@THREAD_REQUIRES: locked(value)
*@THREAD_EFFECTS:
*/
四、 聚焦关系
功能bug | 规格BUG | |
match | 0 | 1 |
match_op | 0 | 1 |
match_cl | 0 | 1 |
可以看出,BUG基本都在规格方面,所以主要是由于没有看清楚word,所以才会出现BUG。
五、写规格的思路
要大量运用布尔表达式,才会逻辑清楚没有二义性。
详细写出前置条件。
六、心得体会
代码和JSF还是要好好写,分数只是好好学习的附属品,我们不应该为了几分就抛却了重要的学习。开心的学习知识才是我们上大学的目的,不是吗?