oo第四次博客作业

一,测试与正确性论证

  ①测试是使用测试样例对程序进行检测。

  在完成程序后通过测试一些用例可以短时间很高效地找到的bug,但如果想要验证程序有没有bug,测试是难以完全覆盖的。

  ②正确性论证是根据代码的逻辑进行验证。

  正确性论证相对于测试就需要花费更多的时间去论证,但是覆盖率很高,很好地完成正确性论证可以让程序没有bug。

二,OCL语言

  OCL是约束(Constraint)语言和查询(Query)语言

  一个约束就是对一个(或部分)面向对象模型或者系统的一个或者一些值的限制。UML类图中的所有值都可以被约束,而表达这些约束的方法就是 OCL。在UML2标准中,  OCL不仅用来写约束,还能够用来对UML图中的任何元素写表达式。每个OCL表达式都能指出系统中的一个值或者对象。因为 OCL表达式能够求出一个系统中的任何值或者值的集合,因此它具有了和SQL同样的能力,也就是说OCL也是一种查询语言。

  OCL是基于数学的,但没有使用数学符号

  OCL的基础是数学中的集合论和谓词逻辑,并且它有一个形式化的数学语义,但是它并没有使用某种数学符号。因为虽然数学符号能够清晰的、无歧义的表达事物,但是只有极少的专家可以看懂。所以数学符号并不适合用于一个广泛应用的标准语言。

  自然语言是最易懂的,但是它是含混不清晰的。OCL取了自然语言和数学符号的折中方案,使用普通的ASCII字符来表达数学中同样的概念。如果你不喜欢当前的OCL表达方法,OCL规范还允许你定义自己的OCL符号集,这点是可以理解的,因为OCL有一个清晰的数学语义。

  JSF与OCL的目的是相似的,但是OCL风格更贴近于自然语言风格。

三,图

                  UML类图

                   顺序图

                    状态图

 

 四,总结

  这学期主要学了四个单元,面向对象入门、多线程设计与并发安全、代码抽象及规范化设计、测试与正确性论证。这四单元是循序渐进的。

  前几次的作业,由于还是以大一数据结构的思维来写,导致了到电梯时还是只有一个java文件,这让我的程序看起来非常臃肿,在debug时也特别困难。但到了第二次电梯作业时,由于一个java文件一个public类的写法很难完成,所以开始写多个class来实现作业要求内容,每一个类都各司其职,先对问题分析进行行为抽象,将类的功能划分出来,类内部管理自己的数据和方法,将类的功能划分为每一个小功能,再让小功能之间相互协同即可完成整个类的功能实现。这样就让程序看起来思路清晰,并且在debug时能够很有目的的寻找有问题的类。再在后来的作业中,类之间的协调越来越重要,能够让类协调的运行成为了主要任务,这也让我感受到了’工程‘的含义。在出租车系列作业中,通过一次一次的需求增加,发现程序一开始的架构非常重要,这意味着在接下来不断的新需求到来时能否有很清晰明确打的思路来解决。后面几次作业就是偏向于一些正确性论证和JSF的练习,这在工程中是非常重要的,因为我们的作业是自己独立完成的,但如果让多个人来完成一个工程,那么在交接时,没有JSF会让后者很难去理解前者的代码。而正确性论证对于程序完整性的提高是不可或缺的。

  这么课虽然压力很大,但确实让我学到了很多东西,老师和助教都很认真负责,真挚地感谢老师和助教!每一次作业也很合理很有挑战性,当然我希望指导书能够写的更加详细,能够更加严谨,这样会让我们在写代码时少很多顾忌。

 

posted @ 2018-06-25 19:57  Mengql  阅读(115)  评论(0编辑  收藏  举报