oo课程回顾第三次博客作业

一、规格化设计的大致发展历史及受到重视的原因

  在计算机系统发展的初期,由于目的的单一性,软件的通用性是很有限的。大多数软件是由使用该软件的个人或机构研制的,软件往往带有强烈的个人色彩。早期的软件开发也没有什么系统的方法可以遵循。而且,除了源代码往往没有软件说明书等文档。
 
  从60年代中期开始,软件开始作为一种产品被广泛使用,出现了“软件作坊”专职应别人的需求写软件。这一软件开发的方法基本上仍然沿用早期的个体化软件开发方式,但软件的数量急剧膨胀,软件需求日趋复杂,维护的难度越来越大,开发成本令人吃惊地高,而失败的软件开发项目却屡见不鲜。“软件危机”就这样开始了!现在人们普遍认为优秀的程序除了功能正确,性能优良之外,还应该容易看懂、容易使用、容易修改和扩充。1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机”(softwarecrisis)这个名词。 概括来说,软件危机包含两方面问题:一、如何开发软件,以满足不断增长,日趋复杂的需求;二、如何维护数量不断膨胀的软件产品。

  1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。在那次会议上第一次提出了软件工程(software engineering)这个概念。软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科。通过不断努力,人们逐渐解决了软件危机,并认识到规格化设计的重要性,在此期间,一些重要的文档格式的标准被确定下来,包括变量、符号的命名规则以及源代码的规范式。后来随着发展,这些规范逐渐形成了软件开发中的规格化设计,并且由于其高效性与高可靠性,越来越受到软件开发人员的重视。

  规格化设计之所以能够受到软件开发人员的重视,主要是因为它能大幅度提高软件工程的质量。例如在大型软件开发中,随着时间的推移可能有越来越多的新功能被要求添加,但是随意修改代码会造成代码的不可靠,只有用抽象与规格的方法设计程序,才能保证代码的高可靠性与易维护性。规格实际上是一种契约化编程手段,将代码的功能进行抽象,使设计人员无需关注代码实现的细节,从而提高设计效率与正确性。

二、bug

  第七次作业有效,第九次,第十次无效。

  第七次作业未加可视化,导致测试者难以判断,提出许多bug。其实只需将可视化操作加上即可。

  

由于未能及时发现bug和多线程问题的复杂性,延误了后两次作业。

前置条件的不好的写法有,随意使用null,none等,使用自然语言时有可能一时疏忽导致产生二义性。

三、规格bug五个不好的后置条件写法:

1.简单函数的的功能,即便很短也要写。

this.state ==> this.state = i

2.自然语言 ==> 改成用数据变现的对应关系

3.写方法内涵的算法 ==> 只关注最后需要获得的数据的限制

扫描二维码关注公众号,回复: 1167780 查看本文章

4.对于多线程需要加入多线程的后置条件

更改前
/** @ EFFECTS:randomly driving refer to flowmap @ */
更改后
/** @ EFFECTS:randomly driving refer to flowmap @ THREAD_EFFECTS:\locked(guigv.flowmap) ;\locked(guigv.m.graph) @ */

   如果能在写代码之前做好规格设计,那么在实现时只要关注函数实现符合规格即可.但是前提是规格设计是正确的,在自己写的时候会出现因为设计上的问题,要改动实现,增加或者减少些属性,那么应该先改变好规格,然后根据规格来实现代码.不要改了代码再去修改规格.

  规格应该帮助阅读者理解代码,同时要保持严谨,严格用布尔表达式可以保证规格的正确性,但是有时比代码还不好看懂.用一点自然语言加上布尔表达式好像更好理解一些.

猜你喜欢

转载自www.cnblogs.com/hanbro/p/9112621.html