面向对象第四次总结作业

测试与正确性论证

通过实际的测试样例来测试代码是检查代码正确性最常见的方法。通过实际的运行,可以检验程序的基本功能,还能发现一些只看代码难以发现的问题,运行效率和使用体验也难以仅从代码检验。但是例子是无穷多的,枚举所有实际情况是不现实的,能做的仅是测试到所有类别。

正确性论证从理论层面证明了工程的正确性。但是论证是有难度的,比样例测试更加耗费时间和精力。而且也人可能出错,保证论证准确又要花更多精力。

OCL语言与JSF

OCL(object constraint language)对象约束语言,用来进行约束定义的,形式化的无二义的语言。主要是在建模时说明建模元素的有关细节,例如:约束,前置条件,后置条件等。

用OCL包含四种基本语言要素:类型(基本类型,高级类型),操作,表达式,语句。

相同点:

相似性:

OCL与JSF都是形式化的约束语言,消除了二义性。

OCL主要包括不变量,前置条件,后置条件以及监护规则,

JSF对应有repOK(),REQUIRES,EFFECTS以及MODIFIES。

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

不同点:

OCL是统一建模语言(UML) 模型的规则,作为对图形符号的补充。

OCL规定更详细复杂。

UML

UML类图

UML顺序图

UML状态图

 

学期总结

四个模块的知识

java面向对象基础:基础。学习java语法,继承,正则表达式。大致了解工程的标准与理念。

多线程:多线程程序设计,考虑多线程之间的同步互斥问题。

规格化设计:通过规格来约束程序,提高工程质量。定义标准,便于合作。

测试与论证:通过覆盖性测试和正确性论证来测试和保证程序的正确性。

程序梳理

前几次的作业主要都在学习新的东西:java,正则,继承,多线程,文件操作等。

从开始检查程序设计原则时我才开始注意功能以外的地方,程序的风格(变量名,方法名的格式,空行等),方法规模和类规模的合适大小,类的数量,更方便继承的写法,异常处理的习惯等。

很多写法都是从阅读别人代码中学到的(当然前提是代码好读),有时直到发现我的bug别人以这种方式应对才会认为这种写法合理。课上讲的虽然增进了了解,但难以直接体现在代码上(我好菜啊)。

工程化开发

个人感觉对工程化开发的理解还是很浅显。

就是要明确地区分模块功能,确定统一合理的代码风格,利用工程方法(或者叫相应工具吧)进行分析和测试。而这几点都需要锻炼才能做得更好。

期望和建议

只是一些胡乱的设想

期末公开相关人名单。

先有一次规格设计,下一次再程序设计。

猜你喜欢

转载自www.cnblogs.com/ffiamz/p/9224713.html