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 ...
随机推荐
- ARM 处理器:RISC与CISC 是什么?【转】
转自:https://blog.csdn.net/willsun2017/article/details/83388990 完全看懂 ARM 处理器:RISC与CISC 是什么? 历史.架构一次看透 ...
- vim简单使用教程【转】
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...
- unicode & utf-8
简单来说: Unicode 是「字符集」 UTF-8 是「编码规则」 其中: 字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point) 编码规则:将「码位」转换为 ...
- OpenCV3编程入门-读书笔记3-滤波
一.领域滤波(卷积) 邻域算子值利用给定像素周围像素的值决定此像素的最终输出.如图左边图像与中间图像卷积得到右边图像.目标图像中绿色的像素由原图像中蓝色标记的像素计算得到. 通用线性邻域滤波是一种常用 ...
- 【原创】大数据基础之Oozie(3)Oozie从4.3升级到5.0
官方文档如下: http://oozie.apache.org/docs/5.0.0/AG_OozieUpgrade.html 这里写的比较简单,大概过程如下:1 下载5.0代码并编译:2 解压5.0 ...
- 【原创】大数据基础之Oozie vs Azkaban
概括 Azkaban是一个非常轻量的开源调度框架,适合二次开发,但是无法直接用于生产环境,存在致命缺陷(比如AzkabanWebServer是单点,1年多时间没有修复),在一些情景下的行为简单粗暴(比 ...
- poj3126 Prime Path 广搜bfs
题目: The ministers of the cabinet were quite upset by the message from the Chief of Security stating ...
- 解决Eclipse启动时报Initializing Java Tooling异常信息
1.启动Eclipse报错:An internal error occurred during: "Initializing Java Tooling".java.lang.Nul ...
- Gathering Fingerprinting
1. Banner grabbing with Netcat Netcat is multipurpose networking tool that can be used to perform mu ...
- ubuntu的磁盘扩容
前言:以前项目的人给ubuntu虚拟机分配磁盘空间走的默认,导致后期/根和swap空间跟不上需求,需要扩容 流程如下: 1.先添加块硬盘,命令行输入fdisk -l,会发现多了个/dev/sdb(vd ...