oo第三次博客做业

1、 规格发展历史

软件研究人员每每根据本身的研究对象和研究范围对软件规格说明作了相应的限定和要求。例如, 软件工程的传统观点假定软件需求规格说明在需求分析的基础上产生, 软件设计规格说明在软件设计的基础上产生。然而, 根据程序设计方法学的观点, 则干脆把对程序的要求统称为程序规格说明。
对软件所应知足的要求,以可验证的方式做出彻底、精确陈述的文件。“规格说明”一词与其余工业产品的“规格说明书”有类似的含义。不过,在软件领域中,它已成为一个特定的技术用语。软件产品与使用环境之间的关系,软件产品内部各组成部分之间的接口每每十分复杂,而且在发展过程当中软件产品要经历屡次变换,以各类不一样形式出现于不一样的阶段。所以,对软件的各组成部分之间、各发展阶段之间的接口关系应当规定得十分准确。软件规格说明须用某种语言书写。天然语言的陈述中常存在歧义性,易引发误解。于是,最好使用人工语言或者人工语言与天然语言的混合形式书写软件的规格说明。这种语言就叫做规格说明语言。大型软件的规格说明每每十分冗长,于是但愿这种语言易于用计算机处理,以便能用机器检查软件规格说明中有无遗漏或自相矛盾的地方。软件规格说明的内容可根据不一样场合的须要而有所侧重。
在我看来,代码的规格确实很是有必要,我认为,一我的拿到别人的代码的时候,是不会仔细阅读代码的,因此,咱们写出相应的规格,就能够帮助别人了解本身的代码,这就是方便了别人,我认为,这样是一种极为优秀的作法,而且,别人看代码尚且可能存在看不懂的状况,可是规格就不同了啊,人人均可以看得懂,因此规格这种东西在计算机的发展历史上颇有必要,我认为计算机软件的急速发展就是有了规格的出现,人们能够很方便的看懂别人的代码,因此就会有了很好的继承与发展。
世界上第一台电子数字式计算机于1946年2月15日在美国宾夕法尼亚大学正式投入运行,它的名称叫ENIAC(埃尼阿克),是 电子数值积分计算机(The Electronic Numberical Intergrator and Computer)的缩写。它使用了17468个真空电子管,耗电174千瓦,占地170平方米,重达30吨,每秒钟可进行5000次加法运算。虽然它的功能还比不上今天最普通的一台微型计算机,但在当时它已经是运算速度的绝对冠军,而且其运算的精确度和准确度也是前所未有的。以圆周率(π)的计算为例,中国的古代科学家祖冲之利用算筹,耗费15年心血,才把圆周率计算到小数点后7位数。一千多年后,英国人 香克斯以毕生精力计算圆周率,才计算到小数点后707位。而使用ENIAC进行计算,仅用了40秒就达到了这个记录,还发现香克斯的计算中,第528位是错误的。 
ENIAC奠基了电子计算机的发展基础,开辟了一个计算机科学技术的新纪元。有人将其称为人类第三次产业革命开始的标志。 
ENIAC诞生后,数学家冯•诺依曼提出了重大的改进理论,主要有两点:其一是电子计算机应该以二进制为运算基础,其二是电子计算机应采用存储程序方式工做,而且进一步明确指出了整个计算机的结构应由五个部分组成:运算器、控制器、存储器、输入装置和输出装置。冯•诺依曼的这些理论的提出,解决了计算机的运算自动化的问题和速度配合问题,对后来计算机的发展起到了决定性的做用。直至今天,绝大部分的计算机仍是采用冯•诺依曼方式工做。 
ENIAC诞生后短短的几十年间,计算机的发展日新月异。主要电子器件相继使用了真空电子管,晶体管,中、小规模集成电路和大规模、超大规模集成电路,引发计算机的几回更新换代。每一次更新换代都使计算机的体积和耗电量大大减少,功能大大加强,应用领域进一步拓宽。特别是体积小、价格低、功能强的微型计算机的出现,使得计算机迅速普及,进入了办公室和家庭,在办公室自动化和多媒体应用方面发挥了很大的做用。目前,计算机的应用已扩展到社会的各个领域。 

2、 bug统计

  规格BUG 功能BUG 是否有联系
第九次做业 3 0
第十次做业 0 0
第十一次做业 0 0

 

从上面这个表格能够看出来,个人三次做业都没有被报功能性BUG,我认为这村内在两方面缘由:一是我写了做业,二是测试者没有测出来个人BUG,在第九次做业中,我被报告了3个规格BUG,在我看来,这三处BUG都是一摸同样的,由于这是我三个判断正则表达式的地方,都是因为前置条件写的有问题,当时我认为不须要条件就要写null,但是并非,要写成空,因此被报告了三个BUG。正则表达式

我认为被报告的BUG和代码行数并无多大联系,这三处代码算上我习惯的空行应该也没有40行,有效代码更是少,可是就会被报告规格BUG,而其余地方写的很长的方法并无被报告BUG。学习

因此,我认为我被报告BUG的缘由主要是我没有仔细看好那份word,因此才会被报告规格BUG,这也是第一次写规格,因此会出现一些纰漏。测试

3、 规格举例

一、运用了天然语言this

/** @REQUIRES: Req_list类的对象r
*@MODIFIES: this
*@EFFECTS: 给this里的变量赋值
*@THREAD_REQUIRES:
*@THREAD_EFFECTS:
*/设计

修改后:对象

/** @REQUIRES: r!=null
*@MODIFIES: this
*@EFFECTS: this!=null
*@THREAD_REQUIRES:
*@THREAD_EFFECTS:
*/继承

二、打出了null接口

/** @REQUIRES: null
*@MODIFIES: start_x, start_y, end_x, end_y
*@EFFECTS: 给上面的变量赋值
*@THREAD_REQUIRES:
*@THREAD_EFFECTS:
*/get

修改后:数学

/** @REQUIRES: 
*@MODIFIES: start_x, start_y, end_x, end_y
*@EFFECTS: start_x=a1 && end_x=b1&&start_y=a2&&end_y=b2

 

*/

三、effect写的不清楚

/** *@REQUIRES: null
*@MODIFIES: null
*@EFFECTS: 返回value
*@THREAD_REQUIRES: Vocked(value)
*@THREAD_EFFECTS:
*/

修改后:

/** *@REQUIRES: 
*@MODIFIES: 
*@EFFECTS: \result==>value
*@THREAD_REQUIRES: \locked(value)
*@THREAD_EFFECTS:
*/

四、较为简单的都是用了天然语言

/** @REQUIRES: null
*@MODIFIES: null
*@EFFECTS: 返x1
*@THREAD_REQUIRES: \locked(x1)
*@THREAD_EFFECTS:
*/

修改后:

/** @REQUIRES:
*@MODIFIES: 
*@EFFECTS: \result==>x1
*@THREAD_REQUIRES: \locked(x1)
*@THREAD_EFFECTS:
*/

五、限定范围不明确

/** @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:
*/

4、 聚焦关系

  功能bug 规格BUG
match 0 1
match_op 0 1
match_cl 0 1

能够看出,BUG基本都在规格方面,因此主要是因为没有看清楚word,因此才会出现BUG。

5、写规格的思路

要大量运用布尔表达式,才会逻辑清楚没有二义性。

详细写出前置条件。

6、心得体会

 代码和JSF仍是要好好写,分数只是好好学习的附属品,咱们不该该为了几分就抛却了重要的学习。开心的学习知识才是咱们上大学的目的,不是吗?

相关文章
相关标签/搜索