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第三次课程总结分析的更多相关文章

  1. OO第四次课程总结分析

    OO第四次课程总结分析 测试与正确性论证的效果差异及优缺点 测试,即使用测试样例来验证我们的程序是否能完成相应功能的过程.测试数据的产生基于前置条件和后置条件,通过执行测试数据检查方法输出是否满足需求 ...

  2. OO第二次课程总结分析

    前几次的作业都是单线程的,总体来说和以前的思维模式和调试等存在着一定的挂钩,在设计上整体难度还不算太大,这次开始了多线程编程,难度可以说是质的飞跃,构思上所考虑的不止一点两点,在整体的基础上还要考虑线 ...

  3. OO第三次博客作业——规格

    OO第三次博客作业——规格 一.调研结果: 规格的历史: 引自博文链接:http://blog.sina.com.cn/s/blog_473d5bba010001x9.html 传统科学的特点是发现世 ...

  4. OO第三单元(地铁,JML)单元总结

    OO第三单元(地铁,JML)单元总结 这是我们OO课程的第二个单元,这个单元的主要目的是让我们熟悉并了解JML来是我们具有规格化编程架构的思想.这个单元的主题一开始并不明了,从第一次作业的路径到第二次 ...

  5. OO第三单元作业——魔教规格

    OO第三单元作业--魔教规格 JML的理论基础和相关工具   JML(Java Modeling Language,Java建模语言),在Java代码种增加了一些符号,这些符号用来标志一个方法是干什么 ...

  6. 2020 OO 第三单元总结 JML语言

    title: 2020 OO 第三单元总结 date: 2020-05-21 10:10:06 tags: OO categories: 学习 第三单元终于结束了,这是我目前为止最惨的一单元,第十次作 ...

  7. [BUAA OO]第三次博客作业

    OO第三次博客作业 1. 规格化设计的发展 我认为,规格化设计主要源自于软件设计的两次危机.第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼 ...

  8. OO第三单元作业总结

    OO第三单元作业总结--JML 第三单元的主题是JML规格的学习,其中的三次作业也是围绕JML规格的实现所展开的(虽然感觉作业中最难的还是如何正确适用数据结构以及如何正确地对于时间复杂度进行优化). ...

  9. 规格化设计——OO第三单元总结

    规格化设计--OO第三单元总结 一.JML语言理论基础.应用工具链 1.1 JML语言 ​ JML(java modeling language)是一种描述代码行为的语言,包括前置条件.副作用等等.J ...

随机推荐

  1. 温馨小程序前端布局Flex

    伸缩容器支持的属性有: 1,display 2,flex-direction 3,flex-wrap 4,flex-flow 5,justify-content 6,align-items 7,ali ...

  2. 利用Anaconda完美解决Python 2与python 3的共存问题

    前言 现在Python3 被越来越多的开发者所接受,同时让人尴尬的是很多遗留的老系统依旧运行在 Python2 的环境中,因此有时你不得不同时在两个版本中进行开发,调试. 如何在系统中同时共存 Pyt ...

  3. VA&RVA 和 RVA to RAW

    VA&RVA VA指的是进程虚拟内存的绝对地址,RVA(Relative Virtual Address,相对虚拟地址)指从某个基准位置(ImageBase)开始的相对地址.VA与RVA满足下 ...

  4. LeetCode--263--丑数

    问题描述: 编写一个程序判断给定的数是否为丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例 1: 输入: 6 输出: true 解释: 6 = 2 × 3 示例 2: 输入: 8 输出: ...

  5. 20180821ImportContactFromExcel

    Excel创建vcf文件,借助百度云助手导入Iphone6Plus Sub CreateContractList() Set Wb = Application.ThisWorkbook FilePat ...

  6. p1467 Runaround Numbers

    直接搜就行. #include <iostream> #include <cstdio> #include <cmath> #include <algorit ...

  7. navicat和 plsql 连接oracle数据库 总结

    打开 navicat  -->工具-->选项-->oci   右侧选择oci.dll 的路径 默认 在 navicat的安装目录下有一个 instantclient 的文件夹 直接选 ...

  8. 电影《Green book》观后感_已补全:携带着种族歧视的“光环”,艰难地获得朋友的相互依赖,依然得享受生活的酸甜苦咸。

    目录 1.电影基本情况介绍 2.故事整个发展经历 3.观影感受 4.网友评论 <Green book>--绿皮书 作者总共看这部影片三次,第一次英文版慢看,第二次中文版快看,第三次中文版总 ...

  9. windows系统文件和linux系统文件

    windows系统文件和linux系统文件 1.单用户操作系统和多用户操作系统 单用户操作系统:指一台计算机在同一时间 只能由一个用户 使用,一个用户独自享用系统的全部硬件和软件资源 Windows ...

  10. python记录_day09 初识函数

    一.认识函数 函数:对动作或者功能的封装 格式: 函数声明     def  函数名(): 函数体 函数调用     函数名() #定义函数 def xiao(): print("你的笑像一 ...