oo第四次作业

.测试与正确性论证

测试与正确性论证是从系统的不同层面对其可靠性进行验证。测试倾向于论证具体情况,正确性论证倾向于论证整体全部情况。

测试只是根据规格对所有可能的情况的自己进行试验,用样例命中bug,通过多次试验来验证代码的可靠性,很难覆盖完整全部代码。即使代码覆盖率和分支覆盖率达到100%,也不能说明程序是完全正确的。

相较而言,正确性论证更加稳定可靠,它是对指定的描述在软件系统的设计中有形式论证(Formal Verification),即据某个或某些形式规范或属性,使用数学的方法证明其正确性或非正确性。正确性论证几乎可以做到全覆盖,涉及到了所有的情况。

正确性论证和测试各有优劣,在实际应用中可以根据程序的规模、测试的可行性以及对可靠性的要求程度等情况,合理选择验证方式。适合的才是最好的。

.OCL语言

对象约束语言Object Constraint Language,简称OCL是一种指示用户建模系统中的限制方式。它是UML可选的附加内容,可以用来更好地定义对象的行为,并为任何类元指定约束。它的特点如下:

  • OCL是一种纯表达式语言,它是具有没有任何副作用的声明式语言,大部分表达式执行后会返回一个布尔值,计算不会改变系统的状态。
  • OCL是一种精确地、无二义性的语言,易于掌握和使用
  • OCL是一种规范说明性语言,所有有关实现的问题都不能用OCL来表达。
  • OCL是一种类型化语言,即OCL中的每个表达式都是具有类型的
  • OCL不是一种程序设计语言,不能用OCL编写程序逻辑和控制流程

由此我们可以得知,OCL与JSF相比,两者的相似指出有:

  • 都可以描述前置条件、后置条件和不变量
  • 都有一个数学化的定义,仅仅描述应该“做什么”,而非“怎么做”
  • 理想情况下,都无二义性

两者的不同之处有:

  • OCL是一个类型语言,这个类型可以是预定义的标准类型例如Boolean或者Integer,也可以是UML图中的元素例如对象,也可以是这些元素组成的集合,例如对象的集合、包、有序集合等等。 但JSF中并没有对这一点做出要求。
  • JSF仅仅是一种规格,但OCL是一种语言

三、图

UML类图

 

Uml时序图

 

Uml状态图

 

四.学期总结

·知识点

第一单元主要是基础训练,例如单周期,类的抽象,属性私有化,接口,继承等等,第二单元主要训练多线程的线程安全,为了线程安全,第一单元掌握得知识十分重要。第三单元是规格化设计,这一单元主要向工业化设计靠近,强调程序规格的重要性。第四单元是单元测试和正确性论证,根据规格对每个方法进行测试和覆盖率检查,对每个类进行正确性论证。

·设计的程序

①多项式加减

②傻瓜单部电梯

③可捎带单电梯

④可捎带多线程电梯

⑤IFTTT

⑥出租车调度

⑦增加了可开关道路的出租车调度

⑧在之前的基础上新增红绿灯

⑨在之前的基础上新增可追踪的特殊出租车

在测试上,我从一开始无从下手测试到后来根据测试树来构造测试样例,再后来学会测试和正确性论证,测试方面越来越得心应手。

程序的质量说实话进步不是很大,依然存在比例不协调的问题,对solid设计原则没有贯彻执行。不过经过这么长时间的练习,对面向对象还是有了一定理解,较之前面向过程编程有了一定进步,通过设计,能够清晰地知道每一步需要完成的事情,在编程上提高了效率。

·对工程化开发的理解

工程化开发是多人协作,这就意味着你的代码要能够让别人很快理解并上手,因此设计是非常重要的,思考了很久这门课的意义,个人认为这门课的目的还是在于培养我们工程化开发的能力,在一次次作业中让我们形成一个固定的套路,也利于在今后涉及到工程化开发的时候能够更容易地进行程序的融合和对接。工程化开发对于设计和规格的要求应该是相当高的,个人理解就是把要阅读你的设计和规格的人当成什么都不懂的小白,要通过你的readme和jsf能够顺利理解你的代码。

·对课程的期望和建议

1.希望能够不要分小班来回答问题,助教们有时会按照自己的理解来回答某一个相同的问题,但是给出的回复是不一样的,这就导致了互测时信息冲突,撕逼扯皮。

2.如果之前有严格的要求,应当按照严格的要求来评定,而不是等到周二晚上说“这个地方其实不算bug,那个地方也不用写……”,这样对于之前已经写完的同学不是很公平,因觉不公平而导致产生“凭什么懒人也能拿分”的想法。不患严格而患不公,这可能是很多人生气的点吧。

3.jsf的实验课能否提前在作业之前?在做第一次jsf作业的时候,整个人不知道如何下手,看了PPT和模板发现其实有很多地方是不一样的,这样没有一个很好的示范。但是在做完实验课的作业之后,对jsf有了新的理解,也更加熟练了。对于jsf还有一点,应该有一部分同学并不是先设计规格后写代码,所以这个作业在一定程度上变成了形式主义和扣分者的狂欢,对于真正意义上的使用没有多大的优势。

猜你喜欢

转载自www.cnblogs.com/lemonj1998/p/9218049.html