规格化设计的发展历史

(这一部分并没有找到答案,于是参考了好黄和温莎莎的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. tomcat允许跨域请求:

    在springmvc-servlet.xml中配置 <mvc:interceptors> <bean class="com.read.api.pc.interceptor. ...

  2. English trip M1 - AC1 My Dream Car Teacher:Corrine

    In this lesson you will learn to describe an object. 课上内容(Lesson) You want to rent a car. Go to the ...

  3. LeetCode--012--整数转罗马数字(java)

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...

  4. 20170906xlVBA_CopyDataAndFormatFromSheets

    Public Sub GatherDataInSameWorkbook() AppSettings ' On Error GoTo ErrHandler Dim StartTime, UsedTime ...

  5. 架构探险笔记6-ThreadLocal简介

    什么是ThreadLocal? ThreadLocal直译为“线程本地”或“本地线程”,如果真的这么认为,那就错了!其实它就是一个容器,用于存放线程的局部变量,应该叫ThreadLocalVariab ...

  6. js传输图片路径

    数据库中存储数据/commons/img/***.jpg格式的图片路径. "<a onclick=\"showImg(\'"+dataEle.imgPath.rep ...

  7. P3911 最小公倍数之和

    终于找到了一个只会用[gcd(i,j)==1] = sigema d|gcd(i,j) mu(d) 做不了的题. 考虑枚举gcd后. 此时,ans可以表示为一个 sigema x f(x)的形式. 考 ...

  8. python面向对象之 类的关系

    内容梗概: 1. 依赖关系 2. 关联关系, 组合关系, 聚合关系 3. 继承关系, self到底是什什么鬼? 4. 类中的特殊成员 1. 依赖关系def:在方法中给方法传递一个对象. 此时类与类之间 ...

  9. 基于Mybatis实现一个查库的接口

    基本功能就是写一个接口,该接口的主要功能是根据给的条件查询特定表: 先通过Workbench来看一下在给定条件下的查询的结果,先给出最终的结果查询的表以及查询的条件: 也就是该接口实现在image_t ...

  10. SqlSever查询某个表的列名称、说明、备注、注释,类型等

    这周整理了数据库文档,发现用导出脚本来整理表的信息注释查看不方便,因此我就想能不能SQL语句查询表的注释或者表的字段.我就我问朋友是不是可以,他给我点指导,然后自己也在网上百度,来实现自己的想法,我把 ...