规格设计的发展历史

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

bug分析:

  功能性bug:

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

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

    代码:

  1. 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. 洛谷 P5019 铺设道路

    题目描述 春春是一名道路工程师,负责铺设一条长度为 \(n\) 的道路. 铺设道路的主要工作是填平下陷的地表.整段道路可以看作是 \(n\) 块首尾相连的区域,一开始,第 \(i\) 块区域下陷的深度 ...

  2. 配置TortoiseGit与Github

    https://jingyan.baidu.com/article/495ba841f2892638b30edefa.html https://www.cnblogs.com/maojunyi/p/7 ...

  3. CentOS yum换源

    1.备份系统自带yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.进入yum源配 ...

  4. 数据类型(data type)

    基本数据类型(primitive data type):字符型(2个字节),布尔型(一位),byte(1个字节),short(两个字节),int(4个字节),long(8个字节),float(2个字节 ...

  5. SearchScore

    static void Main(string[] args) { Console.WriteLine("请输入要查询的学生姓名!"); string nameToQuery = ...

  6. Kotlin 扩展

    Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 Decorator 模式. 扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响. 扩展函数 扩展函数可以在已有类中添加新的方法 ...

  7. python常见报错类型

     更新ing 报错类型 报错内容 错误判断 错误解决方式 IndentationError IndentationError:unexpected indent 格式错误:以外缩进   Indenta ...

  8. HDU 5299 Circles Game

    HDU 5299 思路: 圆扫描线+树上删边博弈 圆扫描线有以下四种情况,用set维护扫描线与圆的交点,重载小于号 代码: #pragma GCC optimize(2) #pragma GCC op ...

  9. 20190407 Word合并单元格

    很长一段时间没处理word合并单元格,又忘记了采取忽略错误的方式测试出相应单元格的行列坐标这种方式.真是浪费时间.以后再也不想为此在深夜熬命. 今晚算是和它杠上了,很想弄清楚合并单元格之后行列坐标重新 ...

  10. xaf 如何添加logo信息

    https://documentation.devexpress.com/eXpressAppFramework/113156/Task-Based-Help/Miscellaneous-UI-Cus ...