OO第三次博客作业

1、 规格化设计的发展

我认为,规格化设计主要源自于软件设计的两次危机。第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼与熊掌不可兼得。故而,人们提出了结构化程序设计的编程思想,旨在使程序实现结构化设计的思想。这种设计思想旨在控制各个模块的程序复杂度,从而保证整体工程的正确性。

然而,由于硬件设备的快速迭代,对于软件的要求也越来越高。工程的日益庞大、面向过程程序的可扩展性差、可维护性有限,使得人们提出了面型对象程序编程的思想。而面向对象程序编程之中,模块的对接是必不可少的。为了使自己的程序不至于让他人无法阅读,也不至于让其本身显得过于臃肿。一个良好的规格化设计显然是必须的。

2、 JSF不规范写法

这几次作业我的运气可以说是比较不错,第九次作业JSF写的不是很认真,许多不太好描述的后置条件都是用自然语言写的(当时也不太清楚符合规范的写法是如何,在后面的上机课上看到老师写的才明白),但是互测的同学并没有申报。。。第十次作业在这方面有所改进,但是还是存在着modifies中由于对传进来的对象参数本身进行修改,故而我写的是modifies:该对象参数,被测试者申报书写不规范。在一番争论之后,我也明白了这种看似聪明的写法无疑是偷懒。也就服从了测试者的判断,根据规范修改了代码的规范。第十一次作业由于我的代码相比第十次的,没有大量的更改,而老的问题也已经修复,所以也没有被测试出不规范问题。

3、 JSF写法改进

1改进前:

1改进后:

2改进前

2改进后

3改进前

3改进后

4改进前

4改进后

4、 功能BUG与规格BUG的聚焦分析

我的功能bug与规格bug并无明显联系,我的规格bug主要是因为我第一次不太会写,第二次在有些地方写的不是很清楚导致的。而我的功能bug是由于我没有即使看群聊天和issue导致的(这点真让人很不开心,指导书里面对某一个程序功能并没有要求,而在微信群里面助教解答问题的时候居然要求了,真是让人无法适从),核心功能上三次作业并没有出现问题。

5、 设计规格和撰写规格的基本思路和体会

我认为一个好的规格,首先要求我们对于这段函数的功能设计上就要清晰。比如对于传进来参数合理性的判断,也就是前置条件,我们是应该统一放在调用函数之前,还是该函数体之内,这样细小的设计虽然不会影响我们程序的执行,但是对于一个良好的程序规范,统一的规格显然是必须的。其次,我们的规格要写的尽量清晰。就比如我第十次作业被测试者找出的bug就是一个很好的错误示范。对于对象参数的修改只写该对象的名字,并不能让人很明显的知道这个函数究竟对什么进行了修改。而上机课中老师们所写的规范就非常值得我们学习,我们甚至可以根据老师们所写的规范,反向写出、补全甚至修改不正确的代码,这就体现了规范在程序可维护性上的重要体现。

[BUAA OO]第三次博客作业的更多相关文章

  1. OO第三次博客作业——规格

    OO第三次博客作业——规格 一.调研结果: 规格的历史: 引自博文链接:http://blog.sina.com.cn/s/blog_473d5bba010001x9.html 传统科学的特点是发现世 ...

  2. OO第三次博客作业---透过代码看设计

    不得不说的JSF 经过前几次作业的煎熬.出租车的代码量不断地增多.而出租车问题在不断的完善,这也就牵涉到一个问题,那就是最初出租车程序的设计问题,如果一开始设计的就有问题的话,那么在后来的过程中就会遇 ...

  3. [BUAA OO]第四次博客作业

      一.      测试与正确性论证的区别 在最后一个单元的OO作业中,我们主要进行了代码的测试与正确性论证工作.这俩者在作业中的体现分别是junit单元测试以及jsf论述语言.这两者在java代码开 ...

  4. OO第三次博客作业

    一.规格化的发展历史 最早的程序设计都是面向机器,从一开始使用的机器语言,到后面的汇编语言,都是面向机器的语言,编写困难也容易出错.随着需求的发展,程序的编写从面向机器走向面向过程,但由于goto语句 ...

  5. oo第三单元博客作业

    JML语言理论基础 Java建模语言(Java Modeling Language,JML)是一种进行详细设计的符号语言,他鼓励你用一种全新的方式来看待Java的类和方法.JML是一种行为接口规格语言 ...

  6. OO第三次博客作业(第三单元总结)

    (1)梳理JML语言的理论基础.应用工具链情况 Java 建模语言(JML)将注释添加到 Java 代码中,这样我们就可以确定方法所执行的内容,而不必说明它们如何做到这一点.有了 JML,我们就可以描 ...

  7. OO第三次博客作业--第三单元总结

    一.JML 语言的理论基础及应用工具链 JML 是一种行为接口规格语言,提供了对方法和类型的规格定义手段.通过 JML 和其支持工具,不仅可以基于规格自动构造测试用例,并整合了 SMT Solver ...

  8. OO第四次博客作业!

    oo第四次博客作业 一.测试与正确性论证比较 测试只是单方面片面的证明对于当前的输入程序是正确的,测试只能证明程序有错误,不能说明程序是对的. 正确性论证是程序达到预期目的的一般性陈述,是通过规范化的 ...

  9. OO第4次博客作业

    OO第4次博客作业 一.第4单元设计 第四单元主要围绕UML图的结构进行JAVA代码编写,对JAVA的层次结构进行更多的认识.个人认为编程操作在实质上与上一章的PathContainer有许多的相同之 ...

随机推荐

  1. 《Mysql必知必会》笔记

    两年前买的书,因为种种原因一直没看,零碎抽点时间看一遍,感觉对自己有用的就顺手记录下.之后转身就把这本书甩了,因为这本书的内容大多是增删改查语句,不实操只看的话,没有什么意义.而且作为一个测试,其实在 ...

  2. 生产环境mysql数据库主从恢复从数据库

    故障:系统硬盘损坏,完全重装 故障机器:172.16.100.32 恢复根据的主机器:172.16.100.31 1. 重装完成后,把master主库vs/program目录拷贝过来,然后把数据库的d ...

  3. 【取色】ColorMania

    取色剂软件

  4. Jumpserver堡垒机搭建

    系统: CentOS 7 IP: 192.168.11.199关闭 selinux 和防火墙 # setenforce # 临时关闭,重启后失效 # systemctl stop firewalld. ...

  5. 笔记:iOS字符串的各种用法(字符串插入、字符串覆盖、字符串截取、分割字符串)(别人的代码直接复制过来的,我脸皮有点厚)

    NSString* str=@"hello";//存在代码区,不可变 NSLog(@"%@",str); //1.[字符串插入] NSMutableString ...

  6. MySQL 基础回顾

    mysql 回顾 数据库的设计必须满足三范式 1NF: 强调列的原子性,列不可拆分 eg: 一张表(联系人) 有(姓名,性别,电话)三列,但是现实中电话又可分为家庭电话和公司电话,这种表结构设计就不符 ...

  7. lua通用数据类型

    TValue结构 TValue这个结构体是Lua的通用结构体,,Lua中的所有的数据都可以使用这个结构体来表示.很容易想到,在面向对象中,这个结构体是一个基类,派生出来的都是其他的子类. TValue ...

  8. jslint

    auto execution/self execution/ Immediate function http://www.jslint.com/ (function () { 'use strict' ...

  9. weblogic在linux和window下的安装

    weblogic在linux和window下的安装 weblogic下载地址 Windows server2008 一直下一步没什么坑 centos6.5 使用rpm安装jdk8 JDK下载 安装jd ...

  10. [学习笔记]SiftGPU入门

    当有读者看到我这篇SiftGPU入门的学习笔记时,相信你已经读过了高博那篇<SLAM拾萃:SiftGPU>,那篇文章写于16年,已经过去两年的时间.在我尝试配置SiftGPU的环境时,遇到 ...