规格化设计的发展历史

(因为很难寻找,所以参考了下别的同学的调研结果)

规格化设计与结构化、模块化设计密不可分,伴随着OOP语言的发展,规格化设计思想逐渐形成体系,慢慢完善。

20世纪60年代,程序的模块化设计思想被提出。伴随着计算机行业的迅速发展,为了解决程序可靠性等问题,结构化、模块化的设计为程序员提供了使用接口。每个模块各司其职,这样的程序便于扩展和维护,大大降低了当时开发者的困难。

20世纪80年代,面向对象语言兴起,结构化、模块化的思想在面向对象语言里作用被体现得更加彻底。与此同时,为了提高程序语言的规范性,对类和方法进行更好的维护,对其进行规范化设计,也使得数据变得更加安全可控,测试也更加简单易行。


规格化设计为何受到重视

为了类和方法能够变得规范可控,对类和方法进行规范化要求就变得有必要起来。在工程里面, 一个程序也许会有多人同时进行编写,那么由于没人不同的代码习惯,可能产生不同的设计理念,通过规格化设计也可以同步多人的设计方法,避免产生设计上的漏洞。规格化的程序不更易于调试,也更容易被维护,有利于程序的长远生存和发展。


规格BUG表

仅homework9有规格bug,且无雷同问题(雷同的俩都被报了)

Bug类别 Bug内容 出现位置 代码行数
前置条件不为布尔表达式 用了逗号来连接而不是用&& updateMap 22
前置条件不为布尔表达式 用了逗号来连接而不是用&& updateFlow 4

规格BUG原因

究其原因是因为在写不等式时用了逗号,比如:0<=x1,x2<=1 这种类型,导致前置条件不是布尔表达式。但是很奇怪,在下一次作业里,助教又告诉我前置条件可以不为布尔表达式了,既然要这样子,我也没什么办法,起码从此以后我每次都有注意前置条件要为布尔表达式。


前置条件和后置条件的不好写法

(1)不用布尔表达式,而选择用自然语言

改进条件:use bool expression

(2)在后置条件里写出代码的算法实现

改进条件:only display the changes of attributes instead of the algorithm

(3)很多人喜欢在前置条件里写None,但我觉得这不是布尔表达式

改进条件: @REQUIRES: true

(4)过于简略,没有完整体现后置条件

改进条件: complete the effects

(5)用=代替==

改进条件: use ==


功能BUG

和规格BUG无聚集关系,一共就俩,就不列什么表了

第一次被报了3个都是因为整体算法偏慢,运行久了每个出租车就不同步了,然后就有问题了,为了解决这个问题,我让每个车sleep的时间变成了setTime-算法花费的时间。也就是给程序"造了个假",这样每辆车就同步了。

第二次是因为对于Load filename的指令忘记正则了,输个a|file.txt,程序也能正常执行,虽然我readme写了Load filename 由测试者来保证正确,但我也懒得管了。


心得体会

规格这个东西设置的初衷是好的,但拿来被恶意扣分就很可耻了。

有的人恶意扣了分后还站在制高点教育被测者,这就更不对了。

这种人我这么多周就遇到过一个,然后上次作业在吐槽版又看到了有同学恶意被扣,我也不知道是谁,但我只觉得,这很可悲。

在这种课程制度下,人性变得好可怕。

OO第三次总结博客的更多相关文章

  1. oo前三次作业博客总结

    第一次作业 实现多项式的加减运算,主要问题是解决输入格式的判断问题. 输入实例: {(3,0), (2,2), (12,3)} + {(3,1), (-5,3)} – {(-199,2), (29,3 ...

  2. OO第三单元“技术”博客

    主要针对第三单元的三次作业 JML语言的理论基础.应用工具链情况 JML指的是Java建模语言,全称是Java modeling language,是一种行为接口规范语言,可用于指定Java模块的行为 ...

  3. Beta版本——第三次冲刺博客

    我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...

  4. OO Unit2多线程电梯总结博客

    OO Unit2多线程电梯总结博客 传说中的电梯居然就这样写完了-撒花

  5. RocEDU.课程设计2018 第六组 第三周进展 博客补交

    RocEDU.课程设计2018第六组 第三周进展 博客补交 小组成员:20155211解雪莹,20155217杨笛,20155227辜彦霖 计划完成任务:完成课设所有内容 实际完成任务:跑通老师uco ...

  6. # RocEDU.课程设计2018 第三周进展 博客补交

    RocEDU.课程设计2018 第三周进展 博客补交 本周计划完成的任务 (1).本周计划完成在平板电脑上实现程序的功能,跟第二周计划完成任务基本相似. 本周实际完成情况 (1).实际完成情况还差最后 ...

  7. 第三次ScrumMeeting博客

    第三次ScrumMeeting博客 本次会议于10月27日(五)22时整在3公寓725房间召开,持续10分钟. 与会人员:刘畅.方科栋.窦鑫泽.张安澜. 1. 每个人的工作(有Issue的内容和链接) ...

  8. Linux内核分析第三周学习博客——跟踪分析Linux内核的启动过程

    Linux内核分析第三周学习博客--跟踪分析Linux内核的启动过程 实验过程截图: 过程分析: 在Linux内核的启动过程中,一共经历了start_kernel,rest_init,kernel_t ...

  9. Hadoop案例(三)找博客共同好友

    找博客共同好友案例 1)数据准备 以下是博客的好友列表数据,冒号前是一个用户,冒号后是该用户的所有好友(数据中的好友关系是单向的) A:B,C,D,F,E,O B:A,C,E,K C:F,A,D,I ...

随机推荐

  1. 实现JavaScript继承

    使用TypeScript或者ES2015+标准中的extends关键字是很容易实现继承的,但这不是本文的重点.JS使用了基于原型(prototype-based)的继承方式,extends只是语法糖, ...

  2. Ext CheckBoxGroup使用

    一.效果图展示 我这里主要是为了实现选择周期时间.如周一.周二.周三等 二.界面界面代码 下面就是我实现的代码,包含了界面.数据处理.回填数据等.可能架构的方式,您的代码和我的代码有差异,但是大体就是 ...

  3. 关于django的坑(一)

    关于django orm 的坑: 关于设置数据库表自动更新 django的orm关于更新数据库的方法有update和save两种方法.想要表中自动更新需要一下几个条件: 使用 DateTimeFiel ...

  4. device_create为何可以在/sys/class/具体类/属性文件?怎么实现的

    答案: 版本3.6.9: device_create -> device_register -> device_add -> device_add_attrs -> devic ...

  5. Turtlebot3新手教程:OpenCR软件设置(shell)

    *本文针对如何利用脚本来更新固件进行讲解 具体步骤如下: burger的固件更新 $ export OPENCR_PORT=/dev/ttyACM0 $ export OPENCR_MODEL=bur ...

  6. 关于echarts中的noDataLoadingOption——loading动画的问题

    在最近的一个项目中用到echarts这个插件,其中关于noDataLoadingOption配置项的问题让我困惑了好长时间.经过蛋疼的查找下,终于搞明白是版本的原因. 且看官网的介绍:ECharts, ...

  7. tree 中文(转)

    原文:http://www.dutor.net/index.php/2009/05/tree-cn-code/ 简介: tree命令可以以目录树的形式显示指定(默认显示这个文件系统)目录的所有文件夹和 ...

  8. netcore.ydal可能是东半球最好ORM框架

    typora-copy-images-to: static ydal 项目框架介绍 可能是东半球最好netcore ORM框架,目前暂时支持mysql.mssql,其核心设计目标是开发迅速.学习简单. ...

  9. 第6章 未来的函数:生成器和promise

    目录 1. 生成器函数 1.1 定义生成器函数 1.2 迭代器对象 1.3 对迭代器进行迭代 1.4 把执行权交给下一个生成器 2. 使用生成器 2.1 用生成器生成ID 2.2 用迭代器遍历DOM树 ...

  10. linux安装ftp步骤

    1,查看是否安装了FTP:rpm -qa |grep vsftpd 2,如果没有安装,可以使用如下命令直接安装 yum -y install vsftpd 默认安装目录:/etc/vsftpd 3,添 ...