第四次博客总结

一.测试与正确性论证的差异

  测试,便是用自己所构造的测试数据对程序进行不断验证,也可以通过脚本生成的测试数据进行轰炸,测试可以很直观的发现程序的bug,并且相比于论证,测试不用编写大篇幅的文章,在工作量上会减少很多。但由于人为的测试难以覆盖所有情况,人也很难去调理的设计每种情况的测试数据。同时,用数据发现了bug之后还需要再不断地分析与调试去发现bug的具体所在位置,在定位bug与分析bug上会耗费大量精力,浪费时间。

  正确性论证,则要求条理清晰的对每一个方法,每一条语句进行分析,论证过程中便会对程序有了更加清晰的理解以及找出某处的bug,相比较测试,论证可以比较系统、完善的对程序的正确性进行验证,但论证过程需花费大量的时间,以及可能会因为人为的失误导致论证不够完善,达不到想要的效果。

二.OCL与JSF  

  对象约束语言(Object Constraint Language),简称OCL,是一种指示用户建模系统中的限制方式。它是UML可选的附加内容,可以用来更好地定义对象的行为,并为任何类元指定约束。在对象约束语言中,对象代表了系统的组件,它定义了完善的项目,约束代表限制,而语言并非是指一种正式的计算机语言。对象约束语言是一种形式化的语言,它主要用于表示UML模型中施加于模型上的约束。

  OCL是一种形式语言,可以应用于任何实现方式的非正规语言。对象约束语言对UML中图形或其他组件都没有控制权,它只是在使用时返回值。OCL并不能修改对象的状态,而是用来指示对状态的修改何时发生。OCL表达式以附加在模型元素上的条件和限制来表现对该对象的约束,其中包括附加在模型元素上的不变量或约束的表达式、附加在操作和方法上的前置条件和后置条件等。

   JSF是针对类和方法而产生进行约束,而OCL是对对象进行约束而产生的。

三.

四.总结整理

  4.1四个模块之间的关联

  第一个模块主要是方向在java的入门上,重点在于让我们适应java面向对象的编程风格,在多次的编程与修改中逐渐从面相过程转变为面相对象,同时,这也是让人深刻认识到自学能力的一个重要阶段:课堂上只讲思想,不讲具体,这让完全没java基础的我一度十分崩溃,例如第二次作业开始了才学会的正则表达式。在这一阶段深深地体会到了网络的便利性,也慢慢理解了老师曾说的语言只是工具,并不是最重要的的内涵。

  第二阶段,当我刚开始适应java,并有点小得意时,我们迎来了多线程电梯,在这一单元中集中训练了我们队多线程的掌握以及熟练程度,深刻体会到了资源共享与线程带来的好处(与磨难),我的编程思想又有了大大的改变。

  第三个阶段,对编程能力的提升结束后便开始了惨无人道的过程规格模块,在这一模块中我们用血的教训体会到了方法规格、类规格的点点细节。使我们的程序向工程迈向了一小步。

  最后一个阶段,重点放在了测试、验证、覆盖上,个人认为这是迈向工程化的又一大步,在校园就有做测试,验证的体验一定会对我们以后有很大的帮助。

  感觉oo课程总的设计是一个十分条理、非常棒的路线,从入门到编程到规格再到测试,真的将太多太多的东西压缩起来教给了我们。

  4.2自己的进步

  现在遥想起第一次第二次的oo作业都是在一个class里完成的我就会感受到我的进步。由于开始前完全没了解过java,所以oo之旅的前几次过得异常艰难,慢慢的开始发现分类的好处,之后多线程、写规格又慢慢发现一个方法简短的好处,以及一个好的规格的巨大优势。再到现在的正确性论证与覆盖,虽然还没体会到它的作用,但就像上完计组时不理解工程化的意义一样,我会慢慢体会到论证与测试的重要性的。同时,大二的计组与oo极大的磨砺了我们的心智,这一年心理上的成长是无法估量的。

  4.3工程化开发

  工程化开发面向的是一个团队,它需要严格的设计程序与执行程序,也要求加强每个人的协作能力。因为一个大的工程通常不是一个人可以完成的,为了所有人的体验,就对每个环节的要求都异常严格,编程环节就需增强代码可读性,因而过程规格显得尤其重要,大程序的出错的代价是非常大的,因此对每个人负责的代码段的正确性就提出了严峻的要求,必须保证绝对的正确,因此正确性论证就也非常重要。工程化开发是一个非常系统的过程,每一个环节都需要严格执行。

  4.4建议

  希望在大二上学期选课时强调一下oo对java的需求,如果当初我知道要用java,那我一定会在大二上选择java这门选修课,也就不会导致Oo开始时的狼狈与无奈。

  

猜你喜欢

转载自www.cnblogs.com/huiyan/p/9225639.html