规格化设计的发展历史

(这一部分并没有找到答案,于是参考了好黄和温莎莎的blogs)

1950年代,第一次分离,主程序和子程序的分离程序结构模型是树状模型,子程序可先于主程序编写。通过使用库函数来简化编程,实现最初的代码重用。产生基本的软件开发过程:分析—设计—编码—测试,使大型软件系统的开发成为可能

1975—1980年代,第二次分离,规格说明(Spec)和体(body)的分离说明是类型定义和操作描述,体是操作的具体实现。(具体的例子就是C++,Java等面向对象语言的类说明与类实现的分离。)解决方案设计只关注说明,实现时引用或者设计体。体的更改、置换不影响规格说明,保证了可移植性。支持多机系统,但要同样环境。此时产生了划时代的面向对象技术。

1995—2000年代,第三次分离,对象使用和对象实现的分离基于构件开发:标准化的软件构件如同硬件IC,可插拔,使用者只用外特性,不计内部实现。Web Services:软件就是服务。分布式,跨平台,松耦合。


规格化设计为何得到大家的重视

大概就是有些方法(函数)代码段会被多次使用,而使用这些方法(函数)的人并不一定就是编写的人,因此就需要用规格来告诉使用者这个方法(函数)需要保证的条件是哪些,以及会产生什么影响,如果不对这些进行说明,调用者并不知道这个方法(函数)有哪些限制,调用就变得十分危险了。

除了为了保证调用者能够安全使用方法(函数)外,规格也是帮助编写方法(函数)者理清思路的利器(虽然我都是先写的方法后补JSF),写好规格理清了逻辑,就能够避免出现问题。


被报告的规格bug

树上开花了解一下~

出现这么多规格类bug根本原因还是自己没有体会到规格的重要性,觉得其实是一种可有可无的东西,所以也就没认真写也没有很认真的看Guideline,也遇到了一个狠人r,被人挑了这么多也没话说……


JSF不好的写法

(1) 使用自然语言

(2) 对于一些模糊的问题不严格按照一种标准处理

(3) 过于简略

(4) 没有异常处理

(5) 各种笔误

改进措施

(1) 尽量不要写太长的方法,否则逻辑太复杂真的没法用布尔表达式来表示

(2) 这……只能自己注意了吧……毕竟看了别的代码自己也没有细究所以确实有些地方MODIFIES就写了gui或者System.out,但有的方法就没写,人家给的理由就是:你到底觉得该不该写呢?为啥有的地方写有的地方不写?因为我菜啊QAQ…

(3) 尽量用布尔表达式把所有的情况都列举出来吧。

(4) 补上补上。

(5) 自己菜不会用JSFtool嘤嘤嘤……结果就出现了“==”写成“=”、\lock()写成了\lock(s)这种……


功能bug

(因为确实没感觉功能bug和规格bug有什么关系所以就不混为一谈写了……)

第九次:

PointBFS太慢了导致当输入巨多请求的时候,哪怕开了额外的计算线程也算不完……

第十次:

加了红绿灯以后出租车不再同步导致流量不知道出了什么问题,时不时回头走一走……

第十一次:

(我觉得这不是功能性bug只是笔误!!)

Main.java中在TAXI和VIP_TAXI转化之间脑抽写错了条件,导致有的时候LOAD会出现问题,个人觉得这不是功能性bug不过既然被报了ERROR就先挂在这……


心得体会

从实用性的角度来说:

还是应该先写好规格,把各个因素都考虑全面了,再开始写代码,而不是先写程序回头补规格。

从课程的角度来说:

(1) 你永远叫不醒一个装睡的人。

(2) 如果被测试者(我)的JSF不是用来被挂满分支树,那将毫无意义(无奈摊手)

OO Summary Ⅲ的更多相关文章

  1. OO Summary Ⅳ

    测试与正确性论证的效果差异 测试,或者说用断言进行黑箱测试,用大量的数据进行“覆盖性测试”,目的是当分支覆盖率达到100%也就是理论上来说所有可能的输入都已经测试过了,而输出结果均是正确的,那么我们理 ...

  2. OO Summary Ⅱ

    [第五次作业——多线程电梯] 类图 度量 协作图 设计分析: 多线程电梯是我第一次接触多线程,因此真的是无(瞎)从(g)下(2)手(写),感觉仿佛只是用一个调度器来调度3部电梯但又总觉得好像哪里不太对 ...

  3. OO unit1 summary

    Unit 1 summary 一.前言 三周左右的学习,OO第一单元顺利结束了,个人认为有必要写个blog来反思总结一下自己第一单元的学习情况,以便更好地进行后面的学习. 之前从来没有写blog的习惯 ...

  4. OO unit4 summary

    Unit4 一.第四单元作业的架构设计 第四单元个人认为主要是考察对于层次结构的理解,即如何理解并处理好UML图的树状结构组织,在理好层次之间以及层次内部的相互关系之后,就只剩下代码实现的问题了.但是 ...

  5. OO unit3 summary

    Unit3 ​ JML(Java Modeling Language) 是用于对 Java 程序进行规格化设计的一种表示语言,它对于方法内部具体是如何实现的并无要求,只是对方法的接口以及行为进行限制, ...

  6. OO unit2 summary

    Unit2 一.第一次作业 1.UML 2.Sequence Diagram 3.同步块设置与锁处理 采用了生产者-消费者模式,用共享对象来连接不同的线程. 第一次作业中,我有三个线程:Receive ...

  7. ABAP OO的八大理由

    原贴地址:http://scnblogs.techweb.com.cn/abaplv/archives/127.html 几年前SAP BASIS 4.6为ABAP扩展了OO功能,这是很多传统的ABA ...

  8. 【作业2.0】HansBug的5-7次OO作业分析与小结,以及一些个人体会

    不知不觉又做了三次作业,容我在本文胡言乱语几句2333. 第五次作业 第五次作业是前面的电梯作业的多线程版本,难度也有了一些提升.(点击就送指导书) 类图 程序的类图结构如下: UML时序图 程序的逻 ...

  9. 第一节:从面向对象思想(oo)开发、接口、抽象类以及二者比较

    一. 面向对象思想 1. 面向过程(OP)和面向对象(OO)的区别: (1):面向过程就是排着用最简单的代码一步一步写下去,没有封装,当业务复杂的时候,改动就很麻烦了 (2):面向对象将复杂的业务分离 ...

随机推荐

  1. JAVA基础知识总结:十二

    一.String类 字符串是一种特殊的对象,一旦被初始化就不能被改变了 字符串常量存储于常量池中 二.StringBuffer类 是一个字符串缓冲区,相当于一个容器 特点 a.可以对字符串进行增加和删 ...

  2. 线程---local数据隔离

    线程之间本身是数据共享的,当多个线程同时修改一份数据的时候,数据就可能不 准确,特别是线程量特别大的时候,为了保证数据准确性: (1) 通过线程锁Lock (2)通过local数据隔离 from th ...

  3. python+selenium:点击页面元素时报错:WebDriverException: Message: Element is not clickable at point (1372.5, 9.5). Other element would receive the click: <li style="display: list-item;" id="tuanbox"></li>

      遇到一个非常郁闷的问题,终于解决了, 问题是这样的,NN网站的价格计划,每一个价格计划需要三连击才能全部点开,第一个房型的价格计划是可以正确三连击打开的,可是第二个房弄就不行了,报错说不是可点击的 ...

  4. 图片路径转base64字节码

    package product; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOE ...

  5. 【转】 多线程之linux线程调度策略

    转自:http://blog.csdn.net/byperseverance/article/details/44522731 Linux线程的调度策略分为3个:SCHED_OTHER,SCHED_F ...

  6. springboot---->javax.servlet.ServletException

    springboot访问静态资源时发生以下异常: javax.servlet.ServletException: Circular view path [login]: would dispatch ...

  7. Winform开发框架之框架演化

    Winform开发框架方面的文章我介绍很多了,有宏观介绍,也有部分技术细节的交流,每次我希望能从不同角度,不同方面来介绍我的WInform开发框架,这些其实都是来源于客户的需求,真实的项目场景.本文主 ...

  8. hihocoder-1419 后缀数组四·重复旋律4 求连续重复次数最多的子串

    对于重复次数,如果确定了重复子串的长度len,那重复次数k=lcp(start,start+len)/len+1.而暴力枚举start和len的复杂度是O(n^2),不能接受.而有一个规律,若我们只枚 ...

  9. android -------- android studio 中设置创建类时的说明信息(包含 作者 ,创建时间,注释说明等)

    今天简单来说一下android studio开发工具中的 一个小设置功能: 在开发过程中我们习惯给新建的类添加一些注释信息,创建日期.时间和作者等. 设置信息 File—>Settings—&g ...

  10. 电脑用U盘启动

    除了根据提示按DEL或者F2进入到BIOS界面更改设置之外. 还可以在开机时按F8或F12进入到引导界面,可直接选择USB. 当把登录用户登录,其他用户都被禁用时,电脑登不进去.要制作启动U盘,进入到 ...