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. centos配置静态ip地址

    1.输入以下命令: vim /etc/sysconfig/network-scripts/ifcfg-eth0 2.注释掉BOOTPROTO=dhcp 3.添加如下内容: ONBOOT=yes 表示开 ...

  2. linux中服务环境的搭建

    一.Samba服务 samba服务的安装及配置: sudo apt-get install samba 二.配置: 1.创建一个需要共享的目录,并修改权限: lpf@ubuntu:~$ mkdir l ...

  3. 接口与协议学习笔记-AMBA片上通信协议_APB_AHB_AXI_AXI4不同版本(二)

    随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用.在基于IP复用的SoC设计中,片上总线设计是最 ...

  4. 大数据入门第七天——MapReduce详解(一)入门与简单示例

    一.概述 1.map-reduce是什么 Hadoop MapReduce is a software framework for easily writing applications which ...

  5. SSM整合思路

    引自网友: https://zhuanlan.zhihu.com/p/23917781

  6. struts2第三天——值栈

    大致内容: ognl概述 ognl入门 值栈 一.OGNL概述 OGNL,全称为Object-Graph Navigation Language,对象图导航语言 它是一个功能强大的表达式语言,用来获取 ...

  7. JavaScript总结(二)

    JavaScript的数据类型 ✍ 原始数据类型值: JavaScript有5中原始数据类型,通过调用typeof运算符返回值查看变量类型: ➣ Undefined ➔ 'undefined': Un ...

  8. 单调性优化DP

    单调性优化DP Tags:动态规划 作业部落链接 一.概述 裸的DP过不了,怎么办? 通常会想到单调性优化 单调队列优化 斜率优化 决策单调性 二.题目 [x] 洛谷 P2120 [ZJOI2007] ...

  9. lastIndexOf()

    方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索.

  10. 办公区公网Ip访问不到阿里云ECS

    办公区公网Ip访问不到阿里云ECS 工作中遇见这样的问题, Hadoop 部署在办公区内网, 而应用有些的数据在阿里云ECS主机中,现在hadoop 访问ECS 却访问不到ESC ,最终电话咨询阿里云 ...