程序的测试须要经过输入特定数据等方式,检查程序是否和预期相同,由于测试不可能穷举,致使了不穷举的测试不可能验证程序是彻底正确的,只能验证程序在测试时没有发生错误,尽管如此,测试依然是一种高效的检查程序的方法,经过输入数据或复现现场,直观的发现代码的问题,进而在代码中找到问题的来源并修正。
程序的正确性论证是在用户提出需求后,进行规格撰写后,论证程序是否符合规格的过程。由于规格每每是布尔型或天然语言,对程序员来讲并不如代码和测试数据直观,且工做量巨大。但相应的,好处是对代码总体进行了具体的剖析,在规格符合需求的前提下,可以发现程序与规格间的逻辑上的不符。
两者相比较而言,测试是一种较为简单,较为直接与直观的方法。经过编写测试数据就能够对于程序进行黑盒测试,不须要花大量时间在理解程序自己上。相比之下正确性论证就须要测试者对于程序自己就很细致的了解,对于要求功能有很细致的了解,每一部分的测试都会显得十分麻烦,尤为是在面对一些逻辑较为复杂的代码,正确性论证的工做量呈指数型增加。java
OCL语言全拼为objective constraint language,中文叫作对象约束语言,是用来约束定义的,形式化无二义的语言。OCL语言是一种声明式语言,用来描述应用于UML模型的规则,如今是UML标准的一部分。OCL语言和JSF都是声明式语言,但OCL通常与UML图相关,语法更规范。程序员
UML类图
UML顺序图
UML状态图
编程
本学期所学内容大概可分为如下四个单元。
1、什么叫作面向对象编程,面向对象和面向过程的区别在哪里。主要是第一次至第四次做业。
2、多线程编程,多线程编程的运行特色及调试方法。主要是第五次至第九次做业。
3、规格设计,如何在宏观上对于程序进行设计与调试,为之后大规模的软件开发打基础。主要是第十次至第十三次做业。
4、正确性论证,从科学理论的角度去评价一个程序的好坏,改变以前黑盒测试的逻辑习惯。主要是第十四次做业。
四个单元深刻浅出,从全面讲解java知识,深刻多线程设计,到较为轻松的测试和jsf论述,咱们体验了从语言学习、构建工程到单元测试的完整过程。多线程
应该说OO这门课给我带来了很大的提高。一是面向对象的编程,二是多线程的相关内容,三是工程化开发的相关知识。在阅读博客,进行互评,与室友同窗的交流过程当中,我学到了不少东西,简单的如常量的定义(其实很想叫他宏定义,由于主要做用其实相似于宏定义),大到编程风格,编程结构,能够说,没有与同窗们之间的大量交流,我是难以得到这些提升的。在面向对象课程以前,虽然我也编写过一些小型的程序,基本没有接触过测试方面的内容,测试时也更多地根据本身想固然的方式来测试,没有一个规范的,高效的方式,在如今看来,之前本身的测试也略显笨拙。工具
软件开发无疑须要大量的团队合做,工程化代码就尤其重要。代码规范、JSF规范,都是方便工程化开发的实用工具。工程化之因此出现,也是由于计算机行业从量变到质变的一个过程,一我的编写代码,只须要本身可以编写时读懂,甚至不须要考虑维护。几我的开发的程序,须要有必定的规范,方便他人阅读,对接。几十上百人的工程,须要的则是一个高效的开发规范,不只须要考虑到当前的开发成本,甚至须要考虑到多年后,其余人阅读并维护代码的代价。我的代码的可阅读性,鲁棒性,与整个工程息息相关,一我的的不留意可能会带来整个团队很大的困扰。工程化开发正是适合当前的大规模计算机开发的一个有效手段。单元测试
首先不可否认,OO这门课有必定的不足,通过一个学期的学习,你们也能体验到很多。但总的来讲OO这门课,是利大于弊的,对咱们我的能力的提高很是巨大,因此我的仍是认为能够保留当前OO的主要形式,但也不能否认须要一些改进,好比受到不少人吐槽的指导书常常修改,助教的解答甚至互相矛盾等等,这些也须要助教团队和老师们多总结之前的同窗们的常见问题,以减小没必要要的工做量
同时,对于很多同窗恶意的查找bug,乱报bug的行为,我的认为能够采用同窗们曾经提到过的,每次测试后,由被测者给测试者打一个印象分,对于乱找bug的同窗报以相对较低的分数,除了段位匹配外,也增长印象分的匹配,从而能够必定程度上限制一些同窗乱报bug的风气。学习