• 规格化设计-----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.代码的规格很有必要,如果不写规格,其他程序员很难理解方法的目的和相关要求,在团队合作中这显得尤为重要。可以说规格相当于第二自然语言,便于沟通。

    我以我血荐轩辕
  • 相关阅读:
    ava的动态代理机制详解
    Windows10系统切换JDK版本(前提是装了多个版本的JDK)
    关于springMVC传参问题
    js的replace函数把"$"替换成成"$"
    vue框架之组件通信及插槽简介等相关内容-113
    vue框架之前后端交互等相关内容-112
    django框架之cookie和session的使用等相关内容-74
    vue框架之基础语法等相关内容-111
    vue框架之初始、模板语法、指令等相关内容-110
    django框架之forms渲染错误信息、全局钩子及cookie引入等相关内容-73
  • 原文地址:https://www.cnblogs.com/wangjianbing123/p/9107694.html
Copyright © 2020-2023  润新知