OO第四次课程总结分析

测试与正确性论证的效果差异及优缺点 


  测试,即使用测试样例来验证我们的程序是否能完成相应功能的过程。测试数据的产生基于前置条件和后置条件,通过执行测试数据检查方法输出是否满足需求。由此,测试的优缺点显而易见。优点是易于实施,可以针对特定的功能构造相应的测试数据去加以检验,好的测试数据能有效及时地发现错误;缺点是我们构造的测试数据并不能完全保证覆盖到了所有的情况,即我们无法保证程序的正确性,程序可能还存在我们未发现的bug。

  正确性论证,就是针对规格化的代码,通过对代码逻辑进行分析,确认是否所有满足前置条件的输入都能产生满足后置条件的结果的过程。其优点是可以保证程序的正确性(当然前提是规格得写的正确);缺点是验证过程比较耗时间,且无法保证自然语言层次逻辑推理的严谨性。

  因为是最后一次作业才用到正确性论证,还没有真正感受到正确性论证的强大之处,现在几乎还是用测试来进行论证,但不能完全保证正确(心里没个底),今后会试着使用正确性论证来论证自己程序的正确性。

OCL语言与JSF规格


  OCL即对象约束语言(Object Constraint Language),是一种指示用户建模系统中的限制方式,它是UML可选的附加内容,可以用来更好地定义对象的行为,并为任何类元指定约束。是规范说明性语言,具有精确、无二义性的特点。

  二者的相同点在于他们都是一种形式语言,在程序中进行无二义的逻辑约束。二者表达式也基本相同,OCL包括附加在模型元素上的不变量或约束的表达式、前置条件、后置条件和监护条件等,而JSF格式上有repOK(),前置条件,后置条件和Modifies。

  二者的差异在于OCL的能力比JSF要强,可以约束附加在模型元素上、操作上等,比较自由,OCL也具有强大的可计算性,相比之下虽然JSF功能上并没有OCL丰富,但也能进行规范,且有着方便快捷的优点。

第十四次作业


类图

顺序图

状态图

学期总结


  • 四个单元模块知识点之间的关系

   第一单元重要是体会java和面向对象的思想,从面向过程转向面向对象。

   第二单元初步引入多线程,程序可同时处理多个任务,功能更加丰富,同时也引入了同步与并发安全的问题,在设计上要考虑避免资源共享等问题。

   第三单元引入规格化设计,软件工程发展到如今,规格化的程序尤为重要。不能只一味地追求实现功能即可,应该在实现功能的同时,也要考虑程序的规范性。

   第四单元主要是关于测试及论证,通过测试及论证等方法来验证程序的正确性。

   通过分析发现,课程安排并不失其可理性,是一个循序渐进的过程。

  • 梳理与进步

   程序框架上,从一开始的一类一方法到现在的多类多方法,类的分工,各个方法的工作分配比之前更加成熟。

   程序逻辑上,通过规格化设计,程序的逻辑比之前更加清晰,可读性有所加强。

   工程化思想得到加强,不再以自己能看懂为中心,应做到以人为本。

  • 对工程化开发的理解

   工程化开发,基本上是要与人合作,不再像写作业那般想怎么写就怎么写,只要实现即可;工程化开发团队每个人有各自的分工,所以规格化设计就显得尤为重要,需要考虑的事情不再只是单纯地功能实现,变量的命名、程序的可移植性、用户的体验等,这些都是工程化开发中必不可少的因素。此外,用户的需求是多变的,程序的鲁棒性也有很高要求。

  • 期望与建议

  建议嘛,其实指导书可以进行一些改进,也省去了一直问助教的麻烦,可能有些要求改了在群里说过但被刷了没发现,就很痛(建一个需求改动通知群?),大致就是这些吧;最后期望课程能越办越好,同时也要感谢老师和助教一学期以来的付出!

OO第四次课程总结分析的更多相关文章

  1. OO第三次课程总结分析

    OO第三次课程总结分析 规格化设计发展历史 在网上找了好久也没找到合适的信息,稍稍参考了同学的博客.大致如下:最初的的软件并没有形式化方法,随着软件工程的兴起,为了便于工程间的协调管理,人们提出采用工 ...

  2. OO第四单元&课程总结

    一.本单元架构设计 第一次作业 本次作业要求解析UML类图. 首先,将UML中的各个元素(比如UmlClass.UmlInterface等)转化成自己定义的类(MyClass.MyInterface) ...

  3. OO第四单元总结——查询UML类图 暨 OO课程总结

    一.本单元两次作业的架构设计总结 作业一.UML类图查询 1. 统计信息图 2. 复杂度分析 基本复杂度(Essential Complexity (ev(G)).模块设计复杂度(Module Des ...

  4. OO第四单元总结及课程总结

    OO第四单元总结及课程总结 一.前言 紧张刺激的OO“昆仑课程”接近尾声,经过一个学期的学习,我的收获和感触颇多,借此博客作业的机会,对自己OO这门课程做一个总结.本博客主要有以下五个方面,一是第UM ...

  5. oo第四单元及课程总结

    一.第四单元作业总结 第四单元有两次作业,第十三次作业是实现一个UML类图解析器,可以通过输入一些查询指令来查询一些类图的信息.程序的主干部分已经提供,我们的任务就是实现给出的接口,过程并不繁琐.第十 ...

  6. OO第四单元——基于UML的UML解析器总结&OO课程总结

    OO第四单元--基于UML的UML解析器总结&OO课程总结 前言:一学期愉快(痛苦)的OO课程学习结束了,OO几个单元作业都各有特色,实验也各有特色,仔细回味起来,不再是单纯的敲代码(但自己还 ...

  7. OO第四单元总结暨OO课程总结

    一.第四单元作业总结 本单元的主要任务是对 Uml 图元素进行管理和查询,测试一开始会输入一个静态图,之后会对图中相关内容进行查询. 第13,14次作业 第14次作业新增内容很少,故与第13次作业放在 ...

  8. oo第四单元作业总结暨课程总结

    oo第四单元作业总结暨课程总结 一.本单元作业架构设计 本单元需要构建一个UML解析器,通过对输入的UML类图/顺序图/状态图的相关信息进行解析以供查询,其中课程组已提供输入整体架构及输入解析部分,仅 ...

  9. OO第四单元作业总结以及课程总结

    第四单元总结--UML 第四单元作业架构分析 第一次作业其实是本单元三次作业中最难的一次.由于第一次是第一次作业,要考虑到搭建框架和设计架构,这次作业的思维性很强.在了解了各个类型元素(Element ...

随机推荐

  1. docker-compose在dockerfile更新后自动更新image

    比如在dockerfile里需要新安装包 形如 加一行 RUN pip3 install XXX 之后,希望docker-compose能更新镜像, 然后启动容器 只需要启动时使用 --build即可 ...

  2. Python splinter 环境搭建

    今天无意间看到了splinter. Splinter是一个使用Python开发的开源Web应用测试工具.它可以帮你实现自动浏览站点和与其进行交互. Splinter对已有的自动化工具(如:Seleni ...

  3. h5屏幕旋转的时间和样式的设置

    好几天没更新博客了,今天写写小感悟和一个小东西吧! 随着前端的前端的越来越火,对前端的要求也越来越高,从之前的切图到开发网站再到现在移动端开发,微信开发,手机app混合开发,不得不说现在前端在开发行业 ...

  4. python+selenium2(一)

    一.安装python (1)在官网下载python的安装包,这里使用的是python3.5.安装一路下一步,安装路径我的是D:\Python35. (2)在计算机的path变量中添加D:\Python ...

  5. Appium的工作原理

    把我们写的python语言代码,看做客户端 通过客户端向appium服务器发送请求 appium服务器把我们的代码转换成手机可以识别的指令 然后把指令发给手机,手机根据指令做出相应的操作 最后手机把操 ...

  6. 自动化部署之jenkins及简介

    一.什么是持续集成? (1)Continuous integration(CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集 ...

  7. java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: service-one

    一.异常信息 java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have a ...

  8. 架构探险笔记5-使框架具备AOP特性(下)

    开发AOP框架 借鉴SpringAOP的风格,写一个基于切面注解的AOP框架.在进行下面的步骤之前,确保已经掌了动态代理技术. 定义切面注解 /** * 切面注解 */ @Target(Element ...

  9. Vue.js总结 [2017.6.5]

    <head> <script src="https://unpkg.com/vue/dist/vue.js"></script> </he ...

  10. python记录_day07

    一.基本数据类型补充 1.列表的拼接用join()方法 li = ["hello","world"] s = "_".join(li) pr ...