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. 牛客国庆集训派对Day3 G Stones

    Stones 思路: sg函数打表找规律 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #in ...

  2. Codeforces 813E - Army Creation

    813E - Army Creation 思路: 线段树+二分 先预处理每个点往后走k步的下标 线段树二叉树的每个节点用vector维护这些下标,给这些下标排个序 询问区间L,R,那么把下标小于等于R ...

  3. JAVA基础知识总结:十八

    一.进程和线程 1.进程 是一个程序的运行状态和资源占用的描述 进程的特点: a.独立性:不同的进程之间是独立的,相互之间资源不共享 b.动态性:进程在系统中不是静止不动的,而是一直活动的 c.并发性 ...

  4. 第 3 章 镜像 - 016 - Dockerfile 常用指令

    Dockerfile 常用指令 1.FROM 指定base镜像2.MAINTAINER 设置镜像的作者,可以为任意字符串3.COPY 从build context 复制到镜像 COPY 支持两种形式: ...

  5. pythonl输出的预警消息中的json串的中文展示乱码(中文的unicode码)

    来源:ctrip接口名称:ReviewStandartAPI错误信息:[{'ReviewTime': u'\u63a5\u53e3\u8fd4\u56de\u7684\u70b9\u8bc4\u65f ...

  6. java8新特性(二)_lambda表达式

    最近一直找java8相关新特性的文章,发现都太没有一个连贯性,毕竟大家写博客肯定都有自己的侧重点,这里找到一本书,专门介绍java8新特性的,感觉大家可以看看<写给大忙人看的JavaSE8> ...

  7. 数组方法map(映射),reduce(规约),foreach(遍历),filter(过滤)

    数组方法map(映射),reduce(规约),foreach(遍历),filter(过滤) map()方法返回一个由原数组中每一个元素调用一个指定方法后返回的新数组 reduce()方法接受一个函数作 ...

  8. TP5中的小知识

    在TP5中如果想用select 查询后,变成数组,用toArray()这个函数的话,必须在连接数据库中把 数据集返回类型变成 'resultset_type'=>'\think\Collecti ...

  9. 【洛谷p2669】【一本通p1100】金币

    (今天高产) 金币[传送门] 洛谷上的算法标签 自我感觉主要靠循环 这道题是2015年NOIp普及组的题,其实还是很简单的.但为什么写这道题呢? 这道题第一次接触是在一本通刷题的时候,当时学循环结构, ...

  10. 合并CSV文件.bat

    @echo off E:\保存文件夹 cd E:\文件所在的文件夹 dir copy *.csv all_keywords.csv echo @@@@@@@@@@@@@合并成功!@@@@@@@@@@@ ...