1.论述测试与正确性论证的效果差异,比较其优缺点

  测试:通过大量测试样例覆盖测试代码,来检测代码功能的实现是否正确是否完善。正确性论证:通过对代码规格和逻辑的严密分析,推论和证明,来验证代码实现的正确性。因此,测试能够通过测试结果,直观的判断出程序是否错误。但是又因为难以构造覆盖完整的测试集,所以不能保证程序在设计方面没有问题。而正确性论证能够通过严谨的分析论证,保证程序的正确性和覆盖率。但因为它是形式论证和自然语言层次逻辑的结合,自然语言层次逻辑推理的正确性又难以确保和验证。所以如果它不够直观,出现错误也难以察觉。

2.调研OCL语言,并比较其与课程所介绍的JSF规格之间的相似和不同之处

  OCL(object constraint language)是对象约束语言,用来进行对象的约束定义,是形式化的无二异语言。OCL主要用于在建模时作为图形符号的补充,含有约束,前置条件,后置条件等。OCL还用于对UML图中的任何元素写表达式。OCL是约束和查询语言,有一个形式化的数学语义,允许用户定义自己的OCL符号集。

  相同点:都是形式化的约束语言,在程序中进行无二义的逻辑约束。都有同样的前置条件,后置条件和不变式

  不同点:约束的时间不同:OCL主要是在写程序前理论建模的时候,对每个类进行约束,JSF则主要在代码功能实现前,对每个类进行约束。表达的不同:JSF主要使用逻辑表达式,自然语言使用的少。OCL的表达式和数据都有基本类型。

3.根据第十四次作业的单电梯系统,针对调度器、电梯、请求队列和 请求,至少整理出 一幅UML类图、一幅顺序图和一幅状态图,并使用 图(graph)来表示出模型

  第十四次作业没有提交,所以不做整理。

4.整理总结一个学期所学所练

4.1阐述四个单元模块知识点之间的关系

  第一单元:java入门到面向对象设计。作业从多项式计算到傻瓜电梯,巩固了面向对象设计的思维。

  第二单元:从面向对象设计到多线程的转变。作业通过对电梯功能的扩展,实现多线程。以及对线程的安全问题和如何合理的利用线程的同步和互斥的研究。

  第三单元:规格化设计。学会如何增强自身代码的可读性和如何从方法的层面去实现程序的正确性。

  第四单元:引入自动化测试。通过实现基于输入实现软件生成的自动化覆盖测试,学会论证程序地正确性。

4.2梳理自己所设计实现的程序,分析自己在设计、测试和质量上的进步

  有进步,同时有待提高的方面也很多。

4.3阐述自己对工程化开发的理解

  工程化开发是一个复杂的大型的工作,是需要多人一起配合完成的。因此代码的可读性和规格很重要。以及对每一部分程序的正确性和完善性的测试也很重要。

4.4对课程的任何期望或建议

05-11 11:09