标签:实现 基本类型 说明 返回值 形式语言 art 优雅 通过 repo
测试与正确性论证:
测试的目的是将程序的代码做到全覆盖,从而确保每个分支都运行一遍,进而分析代码中是否有错误,错误出在哪里。这个方法是实用的,但不是完备的。而正确性论证则通过大量的穷举,基于repOK和jsf来论证正确性,是逻辑层次的,可以说绝对正确,但相对复杂。私以为,二者的区别在于,测试可以说明没找到错,论证说明是对的。
对象约束语言:
OCL(object constraint language)对象约束语言,一种用来进行约束定义的,形式化的无二义的语言。包含四种基本语言要素:
它是UML可选的附加内容,可以用来更好地定义对象的行为,并为任何类元指定约束。在对象约束语言中,对象代表了系统的组件,它定义了完善的项目,约束代表限制。
OCL是一种形式语言,可以应用于任何实现方式的非正规语言。它对UML中图形或其他组件都没有控制权,它只是在使用时返回值。OCL并不能修改对象的状态,而是用来指示对状态的修改何时发生。OCL表达式以附加在模型元素上的条件和限制来表现对该对象的约束,其中包括附加在模型元素上的不变量或约束的表达式、附加在操作和方法上的前置条件和后置条件等。
相比JSF,OCL中涉及到上下文,不变量等一系列规范,相比我们所使用的JSF更加复杂和精细化,OCL中本身定义了基本数据类型和一些高级数据类型,还有运算符和表达式中的一些书写规范,几乎算得上是一种编程语言。(然而并不是)
OCL和JSF中都有对前置条件和后置条件的说明,都是不具有二义性的,可以说JSF是一种简化以及自由化了的OCL。
学期总结
知识点联系
第一单元主要是一些设计思想,类,接口,继承等,第二单元是多线程的共享数据管理和冲突解决,第一章是必要的基础,只有封装好每个类,才能实现更好多线程的程序。第三单元是规格化设计。第四单元是单元测试和正确性论证,根据规格对每个方法进行测试和覆盖率检查,对每个类进行正确性论证。
设计的程序
多项式加减
傻瓜单电梯
可捎带单电梯
可捎带多线程电梯
出租车调度
可开关道路的出租车调度
可开关道路和带有红绿灯的出租车调度
可开关道路和带有可追踪出租车和红绿灯的出租车调度
写多项式作业时,初次接触面向对象,写得很面向过程。在之后的系列作业中,由于本身功能实现具有难度,虽然对一些类进行了封装,但是仍然没有实现功能的划分,于是每次作业都在对之前的作业进行大改(直到出租车才有所改善)。从电梯到出租车的系列作业,从简单的两三个类到十几个类,在设计上已经能够尝试去遵循SOLID设计原则。
在测试上没什么太大进步。。。大概是是从胡乱测试到了根据测试树构造数据?
而程序的质量是仍然有很大的进步空间的,人懒写的又少,还是要多练才行(下周一定又开始努力)。
工程化开发
了解不深,也无法实现工程化。过短的作业周期,过大的作业压力,过迷的指导要求,光是活下来都已经举步维艰,还指望什么舞姿优雅。
期望和建议
望越办越好。
标签:实现 基本类型 说明 返回值 形式语言 art 优雅 通过 repo
原文地址:https://www.cnblogs.com/sxz1606/p/9225824.html