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. 蓝桥杯-k倍区间

    http://lx.lanqiao.cn/problem.page?gpid=T444 问题描述 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, .. ...

  2. FFMpeg笔记(二) 使用FFmpeg对视频进行编解码的一般流程

    1. 编码: 1.对编码资源的初始化 AVCodec* m_pVideoEncoder;// 特定编码器的参数信息 AVCodecContext* m_pVideoEncoderContext;// ...

  3. jQuery插件,判断鼠标的移入移出方向

    今天用jQuery封装了一个简单的插件,判断鼠标的移入移出方向,以后的项目中可能还会遇到这样一个简单的效果,就记录下来吧! 先看结构和样式: <!DOCTYPE html> <htm ...

  4. redis 基本数据类型-字符串(String)

    不瘦原来对redis也是有个大概的了解(就你知道的多), 但是最近和大神聊天的过程中才明白自己知道的简直就是鸡毛蒜皮(让你得瑟),所以不瘦打算从头在捋一遍,顺便把过程也记录下来,如果能给大家在学习re ...

  5. Redis--位图BitMap

    一.BitMap是什么 通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身,value对应0或1,我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省储存 ...

  6. Web安全0001 - MySQL SQL注入 - 如何寻找注入点

    注:本文是学习网易Web安全进阶课的笔记,特此声明. 其他数据库也可以参考寻找注入点. A: 一.信息搜集(百度) 1.无特定目标 inurl:.php?id= 2.有特定目标 inurl:.php? ...

  7. GATK--数据预处理,质控,检测变异

    版权声明:本文源自 解螺旋的矿工, 由 XP 整理发表,共 13781 字. 转载请注明:从零开始完整学习全基因组测序(WGS)数据分析:第4节 构建WGS主流程 | Public Library o ...

  8. Android签名验证漏洞POC及验证

    poc实际上就是一段漏洞利用代码,以下是最近炒得很火Android签名验证漏洞POC,来自https://gist.github.com/poliva/36b0795ab79ad6f14fd8 #!/ ...

  9. jQuery学习-属性选择器

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. 01- web应用与https协议

    1. import socket server = socket.socket() server.bind(("127.0.0.1", 8800)) server.listen(5 ...