oo第三次总结
一.(1)规格化设计的大致发展历史
20世纪60年代,随着大容量、高速度的计算机出现,以及大量语言的新增和软件的不可靠,爆发了所谓的“软件危机”。而针对这个问题,人们提出了规格化设计的解决方法。通过把程序分成模块,以模块为单位,每个模块实现相应的功能,使得在进行交流的时候,只需要相应模块的接口就好。
随着规格化设计带来的诸多便利,其在之后30多年的研究和应用期间,让程序的可读性得到不断的增强,并让程序便于进一步修改和移植。而如今规格化设计的发展,已经取得了大量重要的成果,产生了基于逻辑、状态机、网络、进程代数、代数等多种形式的规格说明,为软件的开发和维护带来了巨大便利。
(2)人们重视规格化设计的原因
通过使用规划化设计,在进行交流的时候,彼此之间不需要关心对方的实现方法,只需要关心这个模块的接口的要求,改动以及功能。这样方便多人更快捷清晰地完成任务。在之后对程序的维护和修改过程中,也能更具有针对性,更有效。
二.规格BUG分析
第九次作业为无效作业,在此不做分析。
第十次作业在互测过程中,没有被报规格BUG。
第十一次作业
|
BUG内容 |
BUG类型 |
BUG代码行数 |
BUG原因 |
|
规格检查->抽象对象有效性实现检查:Overview是否明确抽象对象 |
规格 |
n |
Load类没有写类规格,无overview。 |
|
规格检查->抽象对象有效性实现检查:Overview是否明确抽象对象 |
规格 |
n |
Qingqiu类没有写类规格,无overview。 |
|
规格检查->抽象对象有效性实现检查:Overview是否明确抽象对象 |
规格 |
n |
Traceabletaxi类没有写类规格,无overview。 |
三.产生规格BUG的原因
写作业的时候操之过急,忘了给新增的类写类规格。
四.不好写法及其改进
- 前置:传入的参数应该加以限制
错误:

改进:

2.前置:“=”应该为“==”
错误:

改进:

3.前置:前置条件应为布尔表达式
错误:

改进:

4.前置:优先级问题
错误:

改进:

5.前置:前置条件范围错误
错误:

改进:

6.后置:“=”应该为“==”
错误:

改进:

7.后置:未处理异常
错误:

改进:

8.后置:后置条件遗漏修改变量
错误:

改进:

9.后置:后置条件描述不完整
错误:

改进:

10.后置:格式不正确
错误:

改进:

五.功能BUG和规格BUG的聚焦关系
功能BUG和规格BUG没有聚焦关系。规格BUG不是因为功能BUG所导致的。
六.基本思路和体会
基本是先写好方法后,才开始写规格。有尝试按照规格的方式写,但是写着写着就写不下来了,水平不够。以及在写规格时,要注意隐含的前置条件。在修改代码后,要注意修改规格,不然容易忘。
oo第三次总结的更多相关文章
- OO第三次课程总结分析
OO第三次课程总结分析 规格化设计发展历史 在网上找了好久也没找到合适的信息,稍稍参考了同学的博客.大致如下:最初的的软件并没有形式化方法,随着软件工程的兴起,为了便于工程间的协调管理,人们提出采用工 ...
- [BUAA OO]第三次博客作业
OO第三次博客作业 1. 规格化设计的发展 我认为,规格化设计主要源自于软件设计的两次危机.第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼 ...
- OO第三次博客作业——规格
OO第三次博客作业——规格 一.调研结果: 规格的历史: 引自博文链接:http://blog.sina.com.cn/s/blog_473d5bba010001x9.html 传统科学的特点是发现世 ...
- OO第三单元作业总结
OO第三单元作业总结--JML 第三单元的主题是JML规格的学习,其中的三次作业也是围绕JML规格的实现所展开的(虽然感觉作业中最难的还是如何正确适用数据结构以及如何正确地对于时间复杂度进行优化). ...
- 规格化设计——OO第三单元总结
规格化设计--OO第三单元总结 一.JML语言理论基础.应用工具链 1.1 JML语言 JML(java modeling language)是一种描述代码行为的语言,包括前置条件.副作用等等.J ...
- 【OO学习】OO第三单元作业总结
[OO学习]OO第三单元作业总结 第三单元,我们学习了JML语言,用来进行形式化设计.本单元包括三次作业,通过给定的JML来实行了一个对路径的管理系统,最后完成了一个地铁系统,来管理不同的线路,求得关 ...
- OO第三单元(地铁,JML)单元总结
OO第三单元(地铁,JML)单元总结 这是我们OO课程的第二个单元,这个单元的主要目的是让我们熟悉并了解JML来是我们具有规格化编程架构的思想.这个单元的主题一开始并不明了,从第一次作业的路径到第二次 ...
- OO第三单元——基于JML的社交网络总结
OO第三单元--基于JML的社交网络总结 一.JML知识梳理 1)JML的语言基础以及基本语法 JML是用于java程序进行规格化设计的一种表示语言,是一种行为接口规格语言.其为严格的程序设计提供了一 ...
- OO第三单元作业——魔教规格
OO第三单元作业--魔教规格 JML的理论基础和相关工具 JML(Java Modeling Language,Java建模语言),在Java代码种增加了一些符号,这些符号用来标志一个方法是干什么 ...
- OO第三单元个人总结
OO第三单元个人总结 JML理论与基础与应用工具链 JML是什么? Java建模语言(JML)是一种行为接口规范语言,可用于指定Java模块的行为 .它结合了Eiffel的契约设计方法 和Larch ...
随机推荐
- 简易解说拉格朗日对偶(Lagrange duality)
引言:尝试用最简单易懂的描述解释清楚机器学习中会用到的拉格朗日对偶性知识,非科班出身,如有数学专业博友,望多提意见! 1.原始问题 假设是定义在上的连续可微函数(为什么要求连续可微呢,后面再说,这里不 ...
- RabbitMQ环境搭建
消息 RabbitMQ 1.安装erlang环境 2.安装rabbitmq 3.参考资料 AMQP协议,可以跨语言通信 Advance Message Queuing Protocol Rabbit ...
- javascipt继承机制(from阮一峰)
Javascript继承机制的设计思想 我一直很难理解Javascript语言的继承机制. 它没有"子类"和"父类"的概念,也没有"类" ...
- ssh反向代理
文章链接:https://www.cnblogs.com/kwongtai/p/6903420.html 前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后 ...
- Solidity构造函数和析构函数
构造函数:当方法名字和合约名字相同的时候,这个就是构造函数,构造函数在合约对象创建之后执行的 contract Person{ function Peron(){//构造函数Person ... } ...
- 初学python之路-day05
每天一总结,今天学习的是数据类型及其使用方法与可变与不可变类型. 今天了解的数据类型有整型int,浮点型float,字符串类型str,布尔型bool,列表list. 整型int与浮点型float都属于 ...
- django 实战篇之视图层
视图层(views.py) django必会三板斧 HttpResponse >>> 返回字符串 render >>> 支持模板语法,渲染页面,并返回给前端 red ...
- 末学者笔记--Linux中RAID磁盘阵列及centos7启动过程
<一>RAID概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 磁盘阵列是由很多价格较便 ...
- ==、Equals 、ReferenceEquals它们的异同
链接 string foobar = "foobar"; string foobar2 = new StringBuilder().Append("foo"). ...
- nginx在后端服务维护时,自动挂公告页
本想用lua玩一把,但我发现我的要求很简单,直接用upstream的weight和backup就OK了. 于是,这样玩了一把. 作个记录. 1).down 表示当前的server暂时不参与负载2).w ...