标签:自然语言 image 规范 知识 集合 资源 内容 .com 移植
测试和论证都是验证程序正确性的方法。
测试是在一组测试用例上执行一个程序,并将实际结果与期望结果进行比较以揭示错误的存在,但不会精确地揭示错误所在之处。如果可能输入的集合很小,进行彻底的测试时可能的,但如果输入集合非常大,则彻底的测试时不可能的。测试的优点是易于实施,工程广为采用,缺点在于其不能完全确保程序的正确性。
论证针对格式化的规格和代码实现,人工方式对代码逻辑进行分析,确认是否正确。论证可以对代码进行全面地分析,可以确定错误的存在范围。论证是形式验证与自然语言层次逻辑推理的结合,缺点是无法确保自然语言层次逻辑推理的严谨性。
UML图表例如类图可用于描述规格,但还不足以描述规格的全部内容。对象建模中需要描述对对象的约束条件,通常用自然语言来描述。由于自然语言总是有二义性的,人们就使用无二义性的形式化语言,形式化语言对数学要求较高,对普通的从业人员来说有一定难度。OCL就是在这样的背景下诞生的,OCL也是形式化语言,但它易于阅读和编写,并且语义清晰。
第一章的多项式计算和傻瓜电梯,主要是为了使我们从面向过程编程转变到面向对象编程,在写代码的过程中体会面向对象的思想。
第二章主要是线程安全的学习,引入线程的概念,运用多线程来提高工作效率,同时也就引入了线程安全的问题,如何保证进程互斥和资源共享是我们本章需要思考的问题。
第三章主要是抽象和规格化设计,通过写规格来增强代码的可读性、可移植性,让我们写的代码可以为他人所用。
第四章是测试与论证,随着程序规模的逐渐增大,人工测试难以保证程序的正确性(其实哪怕程序规模小人工测试也很难完全覆盖),所以无论是自动化测试还是正确性论证,都是为了通过理论层面论证程序的正确性。
程序肯定是写得比以前好很多,无论是在程序结构还是可读性上,从一开始的数量少但功能贼多的类(GOD类)到一点点每个类的功能相对均衡,各个类可扩展的空间也多了不少。可读性上,命名风格向大佬们学习基本也能做到精简且明晰,同时也按照课程要求写了详细的JSF(虽然有些还是很长很长很长很长),可读性改观了许多。
测试方面,从一开始的只能靠乱想例子,寝室共享一波数据,到现在的覆盖性测试,还有正确性论证,使得测试的过程更加有条理,结果更加可信。
emmmm工程化开发就是很多很多很多人一起写代码,所以自己写的代码就会被自己的队友所使用,因此本着“以人为本”的思想,我们就要让自己的程序可以很方便的被别人使用,就像一个很标准的、契合的齿轮,可以帮助整台机器运转,与其它部件共同合作完成各项功能,而不是因为自己的不契合而导致整个团队延缓开发速度甚至项目失败。
标签:自然语言 image 规范 知识 集合 资源 内容 .com 移植
原文地址:https://www.cnblogs.com/hanbro/p/9224553.html