OO第三次课程总结分析
OO第三次课程总结分析
规格化设计发展历史
在网上找了好久也没找到合适的信息,稍稍参考了同学的博客。大致如下:最初的的软件并没有形式化方法,随着软件工程的兴起,为了便于工程间的协调管理,人们提出采用工程方法来组织、管理软件的开发过程并深入探讨程序和程序开发过程的规律,建立严密的理论。随着时代的发展,软件的复杂度日益加大,结构化程序设计的缺点日渐暴露出来,面向对象设计由此产生,规格化设计进一步发展,这一次的规格设计可以更好地区分置换条件,以适应面向对象设计。如今,规格化设计基本完善,软件可以轻松实现跨平台、松耦合的开发需求。
规格化设计得到重视的原因
规格化设计可以提高程序的规范性、可读性,可以有效整理逻辑,避免出错;对类、方法等进行规范化设计,也有利于程序的模块化划分。规格化设计程序可以使得数据更加安全可控,也便于测试、维护程序,因而受到程序设计人员的重视。
被报告的规格bug以及原因分析
|
作业 |
bug类别 |
所在方法 |
方法的代码行数 |
bug产生原因 |
|
9 |
JSF不符合规范 |
readmap |
50 |
直接使用所给的例子,未进行修改,实际是不符合布尔表达式规范的 |
|
10 |
JSF不符合规范 |
readmap |
50 |
同上,直接用时忘记改了 |
|
Requires逻辑错误 |
readlight |
64 |
这个各个条件之间未用&&连接,不符合布尔表达式 |
|
|
Modifies逻辑错误 |
is_right |
25 |
Modifies不应该有方法内新建的变量 |
|
|
11 |
无 |
无 |
无 |
无 |
前置、后置条件不好写法及改进
前置不好写法:
1.直接用自然语言阐述

2.直接用自然语言阐述

3.没有使用布尔表达式

4.逻辑不够严谨

5. 对前置条件不做要求

前置改进:
1.换成规范写法

2.不使用自然语言

3.使用布尔表达式

4.使用规范语句

5.应该进行约束

后置不好写法:
1.使用自然语言

2.蕴含式不对

3.使用else

4.表述不规范

5.使用自然语言

后置改进:
1.使用比较规范的语言

2.改成正确形式

3.不使用else

4.规范表述

5.使用规范语言

功能bug与规格bug关系分析
|
方法 |
功能bug数 |
规格bug数 |
|
which_run |
2 |
0 |
|
WriteStringToFile |
1 |
0 |
|
readmap |
0 |
2 |
|
readlight |
1 |
2 |
|
is_right |
0 |
1 |
|
Vip_taxi |
1 |
0 |
|
service_shortest_run() |
1 |
0 |
|
reqok |
2 |
0 |
仔细分析似乎没有太大聚焦,毕竟是先码的代码再照着代码写的规格。
设计规格和撰写规格的基本思路
先写好规格确实能有效帮助实现和避免犯错误,从几次上机实践能深刻地感受到规格的强大作用,设计规格的基本思路基本上就是可以先构思好这个方法具体的功能是实现什么,会造成什么效果,然后可以推断要产生这个效果必须得满足什么条件,进行约束(当然能容错也可以不必),最后思考产生这个效果修改了什么数据,产生了什么副作用(个人想法)。
体会
写JSF要花上大把时间,不仅如此,还因为这些换来bug,实验课上收获的明显比JSF互测要多,通过实验课的练习,我觉得JSF能有效提高,但通过互测提高设计规格的能力确实不如实验来得实在。
OO第三次课程总结分析的更多相关文章
- OO第四次课程总结分析
OO第四次课程总结分析 测试与正确性论证的效果差异及优缺点 测试,即使用测试样例来验证我们的程序是否能完成相应功能的过程.测试数据的产生基于前置条件和后置条件,通过执行测试数据检查方法输出是否满足需求 ...
- OO第二次课程总结分析
前几次的作业都是单线程的,总体来说和以前的思维模式和调试等存在着一定的挂钩,在设计上整体难度还不算太大,这次开始了多线程编程,难度可以说是质的飞跃,构思上所考虑的不止一点两点,在整体的基础上还要考虑线 ...
- OO第三次博客作业——规格
OO第三次博客作业——规格 一.调研结果: 规格的历史: 引自博文链接:http://blog.sina.com.cn/s/blog_473d5bba010001x9.html 传统科学的特点是发现世 ...
- OO第三单元(地铁,JML)单元总结
OO第三单元(地铁,JML)单元总结 这是我们OO课程的第二个单元,这个单元的主要目的是让我们熟悉并了解JML来是我们具有规格化编程架构的思想.这个单元的主题一开始并不明了,从第一次作业的路径到第二次 ...
- OO第三单元作业——魔教规格
OO第三单元作业--魔教规格 JML的理论基础和相关工具 JML(Java Modeling Language,Java建模语言),在Java代码种增加了一些符号,这些符号用来标志一个方法是干什么 ...
- 2020 OO 第三单元总结 JML语言
title: 2020 OO 第三单元总结 date: 2020-05-21 10:10:06 tags: OO categories: 学习 第三单元终于结束了,这是我目前为止最惨的一单元,第十次作 ...
- [BUAA OO]第三次博客作业
OO第三次博客作业 1. 规格化设计的发展 我认为,规格化设计主要源自于软件设计的两次危机.第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼 ...
- OO第三单元作业总结
OO第三单元作业总结--JML 第三单元的主题是JML规格的学习,其中的三次作业也是围绕JML规格的实现所展开的(虽然感觉作业中最难的还是如何正确适用数据结构以及如何正确地对于时间复杂度进行优化). ...
- 规格化设计——OO第三单元总结
规格化设计--OO第三单元总结 一.JML语言理论基础.应用工具链 1.1 JML语言 JML(java modeling language)是一种描述代码行为的语言,包括前置条件.副作用等等.J ...
随机推荐
- AD中设置PCB线间距
Design->Rules->Electrical->Clearance->Clearance
- lambda表达式底层处理机制
为了支持函数式编程,Java 8引入了Lambda表达式,那么在Java 8中到底是如何实现Lambda表达式的呢? Lambda表达式经过编译之后,到底会生成什么东西呢? 在没有深入分析前,让我们先 ...
- Tqdm 进度条可视化模块
2018-12-04 14:34:25 使用python Tqdm进度条库让你的python进度可视化 Tqdm在阿拉伯语表示进步,在西班牙语中表示我非常爱你.是一个快速,可扩展的Python进度条, ...
- v891 安卓平板的root
看了 油管的视频,标题:Onda V891 - Root Android 4.4.4 (Kit Kat) 2)下载工具,照着做就行了. 3)root完之后,安装 [钛备份](TitaniumBacku ...
- ubuntu 14.04 postgresql 的总结
1)为了允许远程连接: a) http://askubuntu.com/questions/423165/remotely-access-postgresql-database To open the ...
- 《HTTP 权威指南》笔记:第十二章 基本认证体制
导言 客户端可以通过网络来得到想要的信息,但是有一些信息并不能是对所有人都能看到的,因此必须有一种认证机制.服务器需要通过这种方式来了解用户身份,一旦服务器知道了用户的身份,就可以让用户能够访问请求的 ...
- 20165327 2017-2018-2 《Java程序设计》第2周学习总结
20165327 2017-2018-2 <Java程序设计>第2周学习总结 内容:教材第2.3章 内容小结: (一)标识符由字母.下划线.美元符号和数字组成, 并且第一个字符不能是数字字 ...
- English Voice of <<All Of Me>>
"All Of Me"我的一切 [Verse 1:]What would I do without your smart mouth没有你的蜜语甜言,我该怎办Drawing me ...
- vs2013+caffe+cpu
1.下载caffe官网提供的工具包,复制Windows下CommonSettings.props.example,后缀改为CommonSettings.props 2.由于电脑无GPU,所以修改复制过 ...
- implode
$names = implode('|', array_column($categoryBackNameArr, 'name'));