oo第四次博客作业
一、测试与正确性论证
a) 程序测试是指对一个完成了全部或部分功能、模块的计算机程序在正式使用前的检测,以确保程序能按预定的方式正确运行。测试用例由测试数据和预期结果构成,高效的测试应用尽量少的测试用例发现软件尽可能多的错误。但程序测试只能发现错误,测试用例全部通过仍不能证明程序的正确性,穷举测试(穷举所有情况)几乎是不可能的,同时将耗费大量时间和精力。
b) 正确性论证是从逻辑上论证程序的正确性,使用数学推理来严格论证程序是否符合其目标。正确性论证可靠性与稳定性更强,但论证过程的完备性和正确性随代码规模增大、功能扩展越来越难以保证。
二、OCL语言
OCL是英文Object Constraint Language的缩写,又称对象约束语言。它作为图形符号的补充,是一种形式化的无二义的语言,说明了建模元素的有关细节,如约束、前置条件、后置条件等。
OCL的原则:
①声明性语言,不会改变模型中的内容。
②形式化语言。
③无二义规范语言。
④类型性语言,每一个表达式都有类型。
⑤易学好用。
OCL与JSF:
①相似之处
二者说明了建模元素的有关细节,如约束、前置条件、后置条件、不变量等;都是表达程序运行对系统状态的更改而非具体的算法逻辑流程;目的相似。
②不同之处
OCL的表达式由操作数和运算符按一定规则构成,表达式和特定上下文有关,具有特定的值和类型。JSF的表达式主要是布尔类型,可以视为轻量级的OCL;OCL的语法定义较之JSF更加全面、精准、无二义,可以看作JSF的升级版。
三、UML
1.UML类图

2.顺序图

3.状态图

四、总结
1.四个单元模块的知识点联系
第一单元练习任务是多项式计算和电梯程序,通过写代码基本掌握java语法规则,是基础知识掌握篇。
第二单元引入多线程,主要练习用共享对象协调线程间的并行关系,是进阶升级篇。
第三单元开始学习规格化程序设计,学会用JSF等语言规范约束方法行为,是工程设计篇。
第四单元重心在自动测试,练习使用了JUNIT,掌握语句覆盖、分支覆盖等基本概念,了解测试的方法和方向,并按照一定步骤论证了程序设计的正确性,是测试证明篇。
2.程序分析
程序设计方面,开始有意识避免过长方法体出现,均衡的划分各个类之间的职责关系,处理好对类的私有属性的保护,在设计之前明确可能对共享对象操作的各个类和大概操作方法。
程序功能方面,尽可能将功能划分细致,降低耦合度,不同功能划分给不同类的不同函数实现,是程序精简、利于修改和维护。
测试方面,学会利用分支树划分输入组合,结合junit视线自动化测试。
3.对工程化开发的理解
工程化开发思想在大型软件项目开发中十分重要,它利用某些约束规范在不同群体中达成共识,将工程划分成不同群体的协作任务,不仅有利于加快开发速度、提升开发质量,而且由于约束规范的存在,后期对程序的升级加工、后期维护也将方便许多。
4、课程建议
希望在课程初次学习到继承、接口、同步等概念时,配套的练习任务和需要练习的相应概念之间的关系能更加清晰、一目了然。比如接口实现,在电梯任务中并非必要用到接口的概念,而且感觉抽象出的接口功能也很模糊,不同人可能有很大差异。部分人只是简单写了一个interface,并没有在程序中使用到,也不是很理解这个接口存在的意义,个人感觉这样的练习不能很好达到预期目标。

浙公网安备 33010602011771号