OO第三次课程总结分析安全
规格化设计发展历史模块化
在网上找了很久也没找到合适的信息,稍稍参考了同窗的博客。大体以下:最初的的软件并无形式化方法,随着软件工程的兴起,为了便于工程间的协调管理,人们提出采用工程方法来组织、管理软件的开发过程并深刻探讨程序和程序开发过程的规律,创建严密的理论。随着时代的发展,软件的复杂度日益加大,结构化程序设计的缺点日渐暴露出来,面向对象设计由此产生,规格化设计进一步发展,这一次的规格设计能够更好地区分置换条件,以适应面向对象设计。现在,规格化设计基本完善,软件能够轻松实现跨平台、松耦合的开发需求。测试
规格化设计获得重视的缘由ui
规格化设计能够提升程序的规范性、可读性,能够有效整理逻辑,避免出错;对类、方法等进行规范化设计,也有利于程序的模块化划分。规格化设计程序可使得数据更加安全可控,也便于测试、维护程序,于是受到程序设计人员的重视。spa
被报告的规格bug以及缘由分析设计
做业3d |
bug类别对象 |
所在方法blog |
方法的代码行数ip |
bug产生缘由 |
9 |
JSF不符合规范 |
readmap |
50 |
直接使用所给的例子,未进行修改,实际是不符合布尔表达式规范的 |
10 |
JSF不符合规范 |
readmap |
50 |
同上,直接用时忘记改了 |
Requires逻辑错误 |
readlight |
64 |
这个各个条件之间未用&&链接,不符合布尔表达式 |
|
Modifies逻辑错误 |
is_right |
25 |
Modifies不该该有方法内新建的变量 |
|
11 |
无 |
无 |
无 |
无 |
前置、后置条件很差写法及改进
前置很差写法:
1.直接用天然语言阐述
2.直接用天然语言阐述
3.没有使用布尔表达式
4.逻辑不够严谨
5. 对前置条件不作要求
前置改进:
1.换成规范写法
2.不使用天然语言
3.使用布尔表达式
4.使用规范语句
5.应该进行约束
后置很差写法:
1.使用天然语言
2.蕴含式不对
3.使用else
4.表述不规范
5.使用天然语言
后置改进:
1.使用比较规范的语言
2.改为正确形式
3.不使用else
4.规范表述
5.使用规范语言
功能bug与规格bug关系分析
方法 |
功能bug数 |
规格bug数 |
which_run |
2 |
0 |
WriteStringToFile |
1 |
0 |
readmap |
0 |
2 |
readlight |
1 |
2 |
is_right |
0 |
1 |
Vip_taxi |
1 |
0 |
service_shortest_run() |
1 |
0 |
reqok |
2 |
0 |
仔细分析彷佛没有太大聚焦,毕竟是先码的代码再照着代码写的规格。
设计规格和撰写规格的基本思路
先写好规格确实能有效帮助实现和避免犯错误,从几回上机实践能深入地感觉到规格的强大做用,设计规格的基本思路基本上就是能够先构思好这个方法具体的功能是实现什么,会形成什么效果,而后能够推断要产生这个效果必须得知足什么条件,进行约束(固然能容错也能够没必要),最后思考产生这个效果修改了什么数据,产生了什么反作用(我的想法)。
体会
写JSF要花上大把时间,不只如此,还由于这些换来bug,实验课上收获的明显比JSF互测要多,经过实验课的练习,我以为JSF能有效提升,但经过互测提升设计规格的能力确实不如实验来得实在。