重点放前面,因此先放4.4。测试
取消互测,并非说取消就取消的,而是有充分的理由的:设计
首先,OO这门课的重要目的之一,就是在于锻炼同窗们对需求的理解能力(这也是为何指导书并无在细节方面规定的面面俱到)。而正如老师上课所说,需求理解没有绝对的正确标准,只有功能的完成度与实现成本的权衡。对象
可是,OO又偏要引入互测这种评判形式。而因为互测牵扯到同窗们我的的最后得分,固然大多数同窗都想尽可能多扣分,在可扣可不扣的地方都会选择扣分。换句话说,为了不本身被扣分,同窗们必然会在种种细节上向助教求证,以确保本身不会被扣分,也就是说,互测为了规范测试者的行为,必需要有一个绝对性的正确标准。 这学期中,这个绝对的正确标准能够说就是助教对需求的理解。blog
这就是互测带来的矛盾:需求理解训练中,没有惟一正确标准,因此指导书写的很归纳很简略;但互测中为了评判标准与规范行为,又必需要存在一个绝对的正确标准做为判断依据。这一矛盾致使每次同窗们都须要花费极为大量的时间在询问细节要求、或者根据后来忽然更改的要求修改代码上,致使同窗们付出的时间巨大,学到的东西却极为有限。 开发
的确OO目前的模式确实也能让咱们学到东西,对咱们也有好处,可是这一矛盾带来问题也让不少同窗十分痛苦。换句话说,天天跑步有利身体健康,因此就让你天天跑50KM,换了你,你愿意嘛???博客
测试只能确保测试到的部分彻底正确,但对于没有测试到的部分没法对正确性作出判断。数学
优势:简单直接,不容易出错工程化
缺点:难以彻底覆盖全部分支,保证程序总体正确性基础
正确性论证在论证过程正确的基础上,能够确保整个程序的正确性。软件
优势:从理论层面论证,对论证过的部分能够彻底覆盖
缺点:论证较难,论证过程自己也可能出错
一个约束就是对一个(或部分)面向对象模型或者系统的一个或者一些值的限制。UML类图中的全部值均可以被约束,而表达这些约束的方法就是 OCL。天然语言是最易懂的,可是它是含混不清晰的。OCL取了天然语言和数学符号的折中方案,使用普通的ASCII字符来表达数学中一样的概念。若是你不喜欢当前的OCL表达方法,OCL规范还容许你定义本身的OCL符号集,这点是能够理解的,由于OCL有一个清晰的数学语义。
也就是说,OCL在功能上与JSF规格极为类似,但OCL以牺牲一部分严谨性为代价,使用了更易懂的语言,而JSF则使用数学语言,确保了严谨性,下降了可读性。
类图:
时序图:
状态图:
四个单元的知识点相辅相成,逐渐深刻。
通过OO的训练,设计时考虑的更加周全,测试的更加全面,代码质量有必定提高。
工程化开发是现代在实际的软件开发过程当中所没必要可少的一项技能,也是咱们未来走入职场时必须所要掌握的一项技能。尽管现阶段因为代码量有限,工程化开发的优点与必要性还不能很好的体现出来,可是这并不影响其重要性。