测试与正确性论证
测试根据各种在合理范围内的情况构造对应的测试样例来对程序进行覆盖性测试。
正确性论证则是通过严谨的逻辑语言来对程序达到预期目标的一般性描述。
测试的优点是可以直接对程序进行检查,缺点是没有办法保证测试覆盖全面。
正确性论证优点是可以通过更一般的论证来覆盖程序,能够代表测试穷举性测试,缺点是为了论证整个程序,需要花费很多时间,发现程序问题的方式更加复杂。
OCL语言与JSF规格
OCL是约束语言和查询语言,一个约束就是对一个(或部分)面向对象模型或者系统的一个或者一些值的限制。OCL的基础是数学中的集合论和谓词逻辑,并且它有一个形式化的数学语义,但是它并没有使用某种数学符号。因为虽然数学符号能够清晰的、无歧义的表达事物,但是只有极少的专家可以看懂。所以数学符号并不适合用于一个广泛应用的标准语言。
OCL语言与JSF的相似之处是都可以对面向对象的程序的方法实现进行约束,帮助参与程序设计和使用的各方人员都能有统一的标准,不同是JSF是通过逻辑布尔表达式将规格分成前置条件、副作用、后置条件来表示,而OCL取了自然语言和数学符号的折中方案,使用普通的ASCII字符来表达数学中同样的概念,OCL规范还允许你定义自己的OCL符号集。
UML图
UML类图是系统的静态结构视图,在类图总的UML建模元素包括类及其结构和行为、接口、协作、关联、依赖、泛化关系、多重性和导航指示符、角色名字等。在类图的描述中,属性和操作具有不同的可见性,常见的有+public、-private和#protected。总结了类图的六种关系继承 -- 实现 -- 组合 -- 聚合 -- 关联 -- 依赖,这六种关系的依赖程度由强到弱的排序也是如此。
UML顺序图也叫时序图,它按时间顺序显示对象之间的交互,描述了如何通过对象之间的交互实现用例。对象表述为虚垂线顶端的矩形框,这些对象都排列在图的顶部。其中,发起用例活动的对象放在最左边,其它边界按边界对象、控制对象、实体对象依次排列。每个对象下面有一条虚垂线,称为该对象的生命线,表明对象在一段时间内存在,以此说明对象可以在交互过程中创建,在交互过程中消失。
UML状态图是表示每个类的对象的生存周期过程。再次过程中对象具有若干典型的状态,当探测到某一事件发生,对象做出响应就将导致状态的转变。对象的每个状态执行若干活动或动作,从而表现出某种行为并完成某种工作。状态分为起始状态、终止状态和中间状态。其实状态激活一个对象,开始该对象的生存周期的历程,终止状态表示对象完成生存周期的状态迁移的所有活动,借书对象的生存周期历程。中间状态表示对象处于生存周期的某一位置并执行相关的活动或动作。一个状态机图可以有一个起始状态和零个或多个终止状态。
总结
知识点
第一单元主要是我们学习一种面向对象的语言的基础知识,第二单元是多线程的使用以及怎么解决多线程引起的冲突问题。第三单元是规格化设计,帮助我们更加规范化设计程序。第四单元是单元测试和正确性论证以及UML图的学习和使用。
工程化开发
用公平、合理、规范的标准去协调各方各面的要求,然后进行架构和开发。
个人总结
一个学期就要结束了,回想过去学习面向对象的一个学期的时间,有过第一次接触java写作业时无从下笔的一筹莫展,也有过能够完全自己写出一个可以运行的多线程程序的喜悦,有过临近ddl决定重构的绝望与焦急,也有过和室友在沙河的夜幕里互相督促坚持下去的感动与希望,有过最初与别人无法沟通、沟通结果无法接受的跳脚,也有过最后可以坦然接受所有别人提出的或合理或不合理的质疑。虽然说一路走来布满荆棘,受过伤,流过泪,但也收获了很多,有知识上的进步,面向对象程序从构造框架到填补血肉的每一步都可以通过自己的努力完成,也有心态上的进步,面对别人不同的声音也能冷静地倾听。
爱与梦想,都要棋逢对手。在变好的路上,又一次完成了跨越与飞升,虽然抱怨过,但是真的很值得。