规格设计的发展历史

  随着计算机软硬件的发展,代码的复杂程度也在不短增加,随着计算机软件规模日渐庞大,结构化程序设计方法开始无法满足用户的需求,面向对象程序设计产生。面向对象程序设计是一场重大的革命,提高了开发人员的效率,有效的控制了软件开发的复杂度,提高了软件的可维护性和可拓展性。一个复杂,功能强大的程序,往往不只是由单个人员设计而成,需要多人的合作,各司其职,再把多人的工作整合起来,而要达到多人为一份作业服务,就需要要求代码的规格化,提高程序的规范性以及程序的模块化划分. 这样使得程序设计的数据更加安全, 软件的可维护性得到有效的提高.

bug分析:

  功能性bug:

  第九次作业:出租车不能初始化信用值

  产生原因:把指导书里面的NO和status看到了一起,所以在设置初值的时候忘记还有个信用值了,自己的测试不够准确.

    代码:

public void set(int mode,int honesty,int x,int y){
/**@ REQUIRES:0<=x,y<=79,1<=mode<=4
@ MODIFIES:customer dest mode
@ EFFECTS:mode = input(mode) pos = input(pos)
@ */
pos = new Point(x,y);
if(mode == 0)
this.mode = 4;
if(mode == 1)
this.mode = 3;
if(mode == 2)
this.mode = 1;
if(mode == 3)
this.mode = 2;
this.honest = honesty;
if(mode == 3 || mode == 4){
customer = new Point(1,1);
dest = new Point(1,2);
}
}

  第十次作业:没有按照最短流量规则行走.

  产生原因:因为功能改变导致流量计算规则更新,重写了流量相关的代码,结果最后增加流量的一个语句写掉了,主要还是自己的测试有点简单,不充分.

规格 bug:

  第九次作业有需要写得不合规范,第十次作业和第十一次作业有关于jsf格式问题被扣很多,比如空格还有'\result的格式等等.

规格 bug 产生的原因

  自己并没有充分理解格式,对于jsf的规范写法不够了解,仅仅当做注释一类的作用

  有的测试者比较过分.按照自己的理解而又不给出依据.

分别列举 5 个前置条件和 5 个后置条件的不好写法, 并给出改进

前置条件

鉴于自己的做修改

  • @ REQUIRES:中间@不要加空格,@REQUIRES
  • 对于对象数组, 应判断数组中每个对象也不为空 @REQUIRES: (arr != null) && (\all i in arr; i != null)
  • 要对传进的所有有对象进行描述,不要忽略 null的情况@REQUIRES: * != null
  • 少用自然语言
  • 约束对象范围,如坐标值需要大于0等

后置条件

  • 要写完整,对于满足requires和不满足的都要填写
  • 不能用纯代码的格式,要用规范格式书写,比如==需要用两个=,只能是判断
  • 描述规范,/all /exsit要分清.
  • 对常量单独定义, 否则失去意义 @EFFECTS: (0 <= x < max_limit) ==> (\result == true)
  • 少用自然语言

 

功能 bug 与规格 bug 在方法上的聚类关系

功能 bug 与规格 bug 在我的程序中没有同时出现.无法描述

设计规格和撰写规格的基本思路和体会

说实话这个规格有点让人难受,描写规格本来是很好的,很规范,让人对于代码的理解更轻松的一件事情.但是由于不够准确的规格指导,规范化完全不够的jsf写法,就我个人很言,写起来让我很烦恼,很难写,甚至比我写那些代码都更麻烦,而且,按照写法写完的jsf也并不利于阅读,对于这个规格同学们都有各自的理解,往往有很多人能找出很多无理的错误,对于作业来说,公测现在已经够弱了,基本上已经快变成想拿分就能拿分的情况,你要做到jsf能符合完全的"规范"(我现在也没有了解完全的规范),比你写出一个合适的程序更加困难.

希望以后能让jsf达成他应有的效果,是提供方便,提高效率,消除分歧,而不是现在这样的麻烦,降低了效率,引发了争端.

OO第十二次作业的更多相关文章

  1. 软工 · 第十二次作业 - Beta答辩总结

    福大软工 · 第十二次作业 - Beta答辩总结 写第十二次的时候操作失误直接在Beta版本的博客里改了...第七次冲刺的作业链接补在这里 Beta(7/7) 组长本次博客作业链接 项目宣传视频链接 ...

  2. 201621123005《Java程序设计》第十二次作业

    <Java程序设计>第十二次作业 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造 ...

  3. 2017-2018-1 《Linux内核原理与设计》第十二周作业

    <linux内核原理与设计>第十二周作业 Sql注入基础原理介绍 分组: 和20179215袁琳完成实验 一.实验说明   SQL注入攻击通过构建特殊的输入作为参数传入Web应用程序,而这 ...

  4. 实验十二 团队作业8:软件测试与Alpha冲刺

    实验十二 团队作业8:软件测试与Alpha冲刺 实验时间 2018-6-13 Deadline: [6.13-6.19]之间任选连续5天的23:00,以团队随笔博文提交时间为准. 评分标准: 按时交 ...

  5. 实验十二 团队作业8:软件测试与Alpha冲刺 第四天

    项目 内容 这个作业属于哪个课程 老师链接 这个作业的要求在哪里 实验十二 团队作业8:软件测试与Alpha冲刺 团队名称 Always Run! 作业学习目标 (1)掌握软件测试基础技术 (2)学习 ...

  6. 实验十二 团队作业8:软件测试与Alpha冲刺 第五天

    项目 内容 这个作业属于哪个课程 老师链接 这个作业的要求在哪里 实验十二 团队作业8:软件测试与Alpha冲刺 团队名称 Always Run! 作业学习目标 (1)掌握软件测试基础技术 (2)学习 ...

  7. 【西北师大-2108Java】第十二次作业成绩汇总

    [西北师大-2108Java]第十二次作业成绩汇总 作业题目 面向对象程序设计(JAVA) 第14周学习指导及要求 实验目的与要求 (1)掌握GUI布局管理器用法: (2)掌握Java Swing文本 ...

  8. 2019-2020-1 20199329《Linux内核原理与分析》第十二周作业

    <Linux内核原理与分析>第十二周作业 一.本周内容概述: 通过编程理解 Set-UID 的运行机制与安全问题 完成实验楼上的<SET-UID程序漏洞实验> 二.本周学习内容 ...

  9. 第十二周作业_PSP总结报告

    回顾1 (1)回想一下你曾经对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的?经过一个学期,你的看法改变了么,为什么? 你认为过去接触到的课程是否符合你对计算机专业的期待,为什么?经过一个学 ...

随机推荐

  1. idea工具和激活码获取

    1.下载最新的idea https://blog.csdn.net/mashuai720/article/details/79389314 2.获取激活码 最后一个有效,亲测 https://blog ...

  2. Sitecore8.2 Solr5.1.0配置步骤

    1.首先下载Solr安装包,官方提供了几种下载,我选的的solr的5.1.0版本zip包,下载链接:http://mirror.bit.edu.cn/apache/lucene/solr. 2.下载后 ...

  3. LINQ to Entities does not recognize the method 'System.DateTime AddDays(Double)' method, and this method cannot be translated into a store expression.

    NormalSubmission=analysis.Count(x=>x.FinishTime<= endTime.AddDays(1))报错linq不能识别 => var endT ...

  4. Kotlin 泛型

    泛型,即 "参数化类型",将类型参数化,可以用在类,接口,方法上. 与 Java 一样,Kotlin 也提供泛型,为类型安全提供保证,消除类型强转的烦恼. 声明一个泛型类: cla ...

  5. RabbitMQ跟Redis做消息队列的区别

    区别 https://www.zhihu.com/question/20795043 https://blog.csdn.net/dd18709200301/article/details/79077 ...

  6. 环境准备—之—linux下安装python3和pip3

    转自 上海悠悠 https://www.cnblogs.com/yoyoketang/p/10195102.html 前言 centos7 自带有 python,但是却是 python2 版本的 py ...

  7. [python]html格式转md格式

    html格式转md格式 # 模块html2text pip install html2text/pip3 install html2text 测试: import html2text as ht te ...

  8. 织梦默认编辑器换成kindEditor实操教程

    织梦默认编辑是CKeditor,要想换成kindEditor编辑器,按如下步骤操作. 先看效果图: 首先下载打包好的 kindEditor_for_dedeCMS.ZIP,下载地址:https://d ...

  9. IPhone手机常用的一些连

    1.查看固件可下载链接. ipsw.me 2.查看手机型号(是global还是GSM). https://ipsw.me/device-finder 3.系统降级链接. https://jingyan ...

  10. MACE移植要求

    MACE支持Tensorflow的depth_to_space和space_to_depth,以及strided_slice算子. 其中depth_to_space可以用来无平滑地进行上采样. spa ...