规格化设计-----JSF(第三次博客作业)
从20世纪60年代开始,就存在着许多不同的形式规格说明语言和软件开发方法。在形式规格说明领域一些最主要的发展过程列举如下:
1969-1972 C.A.R Hoare撰写了"计算机编程的公理基础(An Axiomatic Basis for Computer Programming)"和"数据表示的正确性证明"两篇开创性的论文,并提出了规格说明的概念。
1974-1975 B.Liskow/S.N. Zilles和J. Guttag引入了"抽象数据类型"的概念。
1976 E.W. Dijkstra定义了"最弱前置条件"的概念
1977 R.Burstall和J.Goguen提出了第一个代数规格说明语言:Clear
1988 Standford的SRI开发了代数规格说明语言OBJ3
1980-1986 C.Jones定义了VDM语言,也就是维也纳开发方法。
1985-1992 牛津大学的程序研究小组开发了Z规格说明语言。与此同时BP研究室开发了称之为B方法的面向模型的规格说明语言。
1985-1993 在MIT和Digital SRC开发了代数规格说明语言Larch
从1991年开始,面向对象的形式规格说明语言开始发展,例如,Object-Z, VDM++, CafeOBJ等语言。
1996-2000年 在欧洲CoFI(Common Framework Initiative)项目资助下开发"统一"代数规格说明语言CASL(Common Algebraic Specification Language)
上述规格说明语言可以分为两大类:
l 基于代数和公理方法(Clear, OBJ, Larch, CafeOBJ)
l 基于模型的方法(VDM, Z, B, Object-Z)
来源:https://blog.csdn.net/jnucstan/article/details/1724259
至于为什么得到了人们的重视:我觉的是因为写出来的代码要有广泛的使用价值才是好代码,而广泛的适用性则要求必须要有相对统一的标准格式,这样有利于程序员之间沟通交流。
第九次作业的代码规格使用了自然语言来实现,没有说明性,就不列出来了。
第十次的代码有两个格式错误,
1.
public Mypoint(int x, int y) {
/**
* @REQUIRES:None;
* @MODIFIES:None;
* @EFFECTS:实例化一个对象并设置相应参数
*/
super(x,y);
this.x=x;
this.y=y;
this.link=new char[4];
link[0]='f'; //up
link[1]='f'; //right
link[2]='f'; //down
link[3]='f'; //left
p = new Vector<Point>();
}
对于类的初始化方法中MODIFIES应该为this,而我写了None;
2.
public void setcredit(int credit) {
/**
* @REQUIRES:None;
* @MODIFIES:this.credit;
* @EFFECTS:this.credit==credit;
*/
this.credit=credit;
}
该方法的前置条件REQUIRES不完整,credit应该约束一个范围。
功能bug与这两个格式bug无关。
功能bug:
字符串转数字crash,没有捕捉。
出租车会走回头路,也就是流量设置有问题,或者道路选择有问题。
派单时,对于两个相同起点的乘车请求,虽然出租车被派单,但有一个不会被接单。
在非十字路口设置红绿灯,没做报错处理。(至于要不要做报错处理,我一头雾水,助教,issues, 一天变一次,然后自己没勤刷聊天记录,信息更新不及时)
测试者在地图文件里多添加几个空格,被提供的GUI类认定为非法地图文件并退出
第十一次作业:
规格bug
我将GUI提供的一个类单独成一个类文件,然后没写规格,报了两个规格bug.
一个类没写overview, 一个类的repOK写错了。
功能bug:
不是最短路径
路径字符串限制了长度没在readme中说明
红绿灯只能加在十字路口
功能bug与规格bug之间没有明显的联系,方法多为获取类的属性或者设置类的属性或者简单的运算,因此也没有什么明显的改进。
撰写规格的体会:
1.要懂得均衡方法的长度,太长了,规格不太好写,就像老师说的,多余50行的方法很难写出规格。而我的方法就没掌握好长度,零散的方法比较多,都是set, get方法,要么就是方法很长,比如有的run方法超过了100行,根本没法规格。
2.代码的规格很有必要,如果不写规格,其他程序员很难理解方法的目的和相关要求,在团队合作中这显得尤为重要。可以说规格相当于第二自然语言,便于沟通。
规格化设计-----JSF(第三次博客作业)的更多相关文章
- [BUAA OO]第三次博客作业
OO第三次博客作业 1. 规格化设计的发展 我认为,规格化设计主要源自于软件设计的两次危机.第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼 ...
- OO第三次博客作业——规格
OO第三次博客作业——规格 一.调研结果: 规格的历史: 引自博文链接:http://blog.sina.com.cn/s/blog_473d5bba010001x9.html 传统科学的特点是发现世 ...
- [2017BUAA软工]第三次博客作业:案例分析
第三次博客作业:案例分析 1. 调研和评测 1.1 BUG及设计缺陷描述 主要测试博客园在手机端上的使用情况. [BUG 01] 不能后退到上一界面(IOS) 重现步骤:打开博客首页中任意博文,点击博 ...
- 第三次博客作业JSF
JSF规格化设计发展史以及为什么得到人们重视 查阅了n多资料但是仍然没找到. 就说一些jsf的优势吧. 优势: (1)UI组件 (2)事件驱动模式 (3)用户界面到业务逻辑的直接映射 (4)程序 ...
- 北航OO(2020)第三单元博客作业
一.JML理论基础及相关工具链 1.JML理论基础 该部分梳理本单元作业中涉及到的JML知识. 1.1注释结构 JML采用javadoc注释的方式来表示规格,且每行以@开头.通过使用//@annota ...
- 第三周博客作业<西北师范大学|李晓婷>
1.助教博客链接:https://www.cnblogs.com/lxt-/MyComments.html 2.学生作业打分要求: https://www.cnblogs.com/nwnu-dai ...
- OO第三次博客作业---透过代码看设计
不得不说的JSF 经过前几次作业的煎熬.出租车的代码量不断地增多.而出租车问题在不断的完善,这也就牵涉到一个问题,那就是最初出租车程序的设计问题,如果一开始设计的就有问题的话,那么在后来的过程中就会遇 ...
- OO第三次博客作业
一.规格化的发展历史 最早的程序设计都是面向机器,从一开始使用的机器语言,到后面的汇编语言,都是面向机器的语言,编写困难也容易出错.随着需求的发展,程序的编写从面向机器走向面向过程,但由于goto语句 ...
- C语言第三次博客作业---单层循环结构
一.PTA实验作业 题目1 1.实验代码 int N,i; //N为用户数,i记录循环变量 double height; //height放身高 char sex; //sex放性别F为女,M为男 s ...
随机推荐
- Django框架----render函数和redirect函数的区别
render函数和redirect函数的区别: render:只会返回页面内容,但是未发送第二次请求 redirect:发挥了第二次请求,url更新 具体实例说明 render: redirect:
- Android LCD(二):LCD常用接口原理篇(转)
源: Android LCD(二):LCD常用接口原理篇
- Linux下useradd命令创建的用户不能登录的问题
Linux下useradd命令创建的用户不能登录的问题 问题: 用useradd命令新创建一个用户tester 密码pwdtest mkdir -p /home/tester(创建文件夹) user ...
- STL与泛型编程(第一周)
part 1 C++模版简介 一,模版概观 1.模板 (Templates)是C++的一种特性,允许函数或类(对象)通过泛型(generic types)的形式表现或运行. 模板可以使得函数或类在对应 ...
- 20165310_JavaExp1
20165310_JavaExp1_Java开发环境的熟悉 一.Exp1 Exp1_1 实验目的与要求: 使用JDK编译.运行简单的Java程序: 使用Vim进行Java源代码编译: 利用Git上传代 ...
- Python3基础 list 查看filter()返回的对象
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- 自定义Web框架与jinja2模板
web应用与web框架 web应用 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 import socket def handle_reque ...
- TeeChart取消3D
tChart1.Aspect.View3D = false;//此属性默认是true 3d的效果 2d平面的效果 题外话,在使用控件的时候,需要注意: 在TChart控件上增加Series, se ...
- C#学习笔记(十八):数据结构和泛型
数据结构 只有这四种 a.集合:数据之间没有特定的关系 b.线性结构:数据之间有一对一的前后联系 c.树形结构:数据之间有一对多的关系,一个父节点有多个子节点,一个子节点只能有一个父节点 d.图状结构 ...
- C#学习笔记(七):结构体、数组、冒泡排序和调试
结构体 结构体不能重写默认无参构造函数 一位数组 using System; using System.Collections.Generic; using System.Linq; using Sy ...