OO作业总结报告3
规格化设计的发展史
下面部分来源:https://www.cnblogs.com/eggert/p/9098446.html;
随着计算机硬件的飞速发展,以及应用复杂度越来越高,软件规模越来越大,原有的程序开发方式已经越 来越不能满足需求了。1960 年代中期开始爆发了第一次软件危机,典型表现有软件质量低下、项目无法 如期完成、项目严重超支等,因为软件而导致的重大事故时有发生。
1975年,Liskov等人发表了论文Specification Techniques for Data Abstractions,从数据抽象的角度论述了规格的优点、特性及重要性。
1976年,在第二届国际软件工程会议上,Belford等人在Specifications a key to effective software development一文中从开发复杂系统的角度论证了完整的、一致的规格的重要性。在系统研发周期中,规格提供了在概念和定义阶段的过渡。一个清楚、无歧义的规格是取得成功的关键,同时能减少开发过程中的开销。软件需求本身具有模糊的特点,所以需要一个定义明确的规格来开发出可靠的软件。
1993年,Liskov等人发表了Specifications and their use in defining subtypes,从类型层次的角度进一步论证了规格的重要性。
如今,北航的OO课程组也十分重视规格化的设计,提出了JSF规格设计,并且将其应用到计算机学院的面向对象课程中,让同学们更加深刻的理解到程序规格化设计的重要性。
可见,程序的规格化设计在计算机长期的发展中不断的完善和受到重视。
BUG分析
1.bug记录表
| 类型 | 方法代码行数 | 产生原因 |
| EFFECTS内容为实现算法 | 15 | 内容表达的有些多 |
| 不符合JSF规范 | 23 | 线程规格写错误 |
| REQUIRES逻辑错误 | 21 | 没写requires |
| 不符合JSF规范 | 10 | 没写requires |
2.功能性bug
出租车会回头,原因是GUI的流量刷新有延迟,出现线程不安全的问题,所以访问的数据不是最新的数据,导致车会回头;
出租车在去接单时没有模拟乘客上车,原因是没有搞清楚具体要求;
出租车输出的信息是抢单时刻的状态信息,测试者说是抢单窗口结束时的出租车状态,指导书中只说了输出抢单出租车信息,但是issue中有提到,,认栽,,没有勤刷issue.
功能性bug和jsf在我这个水平的来看,,好像并没有什么较大的联系,但是个人觉得设计规格还是十分重要的,如果有较好的规格的话,提供了从理论推理上来发现和避免bug的方法。
规格不好的写法
1.缺少REQUIRES

改进后:

2.后置条件格式错误

改进后:

3.前置条件书写不规范

改进后:

4.this使用未添加“\”

改进后:

总结与体会
从这门课里,与其说是学到了很多技能,不如说是懂得了何为重要。面向对象的编程思想很重要,规格化的程序设计很重要,设计原则很重要,工程化的思维方式很重要。一学期的训练中,我们可以看到老师们训练的重点在哪里,也得到了较好的锻炼,但是由于制度的不健全,可能在实施训练计划的时候往往会出现偏差。同学中有部分遭到恶意扣分,当然这不是仅仅我们这一届有,指导书不够明确,模棱两可,助教很辛苦,同学们的体验不够好,在这里,我是十分赞同昂神(大佬)所说的关于工程的看法,但是OO这门课的相关测试有时候却又让人不得不去纠结一些细节,其实很多地方是可以readme的。
有的时候说提出问题,发现问题是最重要的,但有的时候又说提出问题很简单,真正解决问题才是最难的,所以到底是如何,不知。就这门课,同学们在实践中提出了很多问题,但我发现能想到一个真正完美的解决方案还是挺难的。听说课程组最后会有一个最多BUG奖项,但是不知道有没有最具建设性意见奖项,如果有,说不定哪位同学就真的会提出非常不错的意见呢,也许当同学们知道解决问题难的时候,就会少一些抱怨吧。
学习是自己的,分数是别人的,最后还是希望所有努力认真的同学都能够取得不错的分数。
OO作业总结报告3的更多相关文章
- oo作业总结报告
oo第一次博客 以前从未真正的写过Java代码,接触Java也只是寒假的时候简单的看了看语法,不懂该如何面向对象,但没事,心里不惧,想着什么都是可以学的(直到真正开始写工程的时候,才发现自己还是太天真 ...
- oo作业总结报告2
第五次作业 多线程电梯 多线程同步和控制的设计策略 明确类和对象,以及是否区分对象实例.具体类可以从类图中看出: 明确线程的类型和数量.输入作为一个线程,调度作为一个线程,三个电梯独立工作,互不影响, ...
- oo作业总结(二)
概述 和前三次作业相比,这几次作业最大的不同是难度的飞跃.遗憾的是在这难度的变化面前,我自己却没有做好充分的准备,错误的低估了作业难度导致给自己带来了很多不必要麻烦和损失.接下来我将对它们进行说明(度 ...
- oo作业总结(四)
测试与正确性论证 测试是通过构造一系列测试数据,通过对比程序的实际运行结果和预期输出结果来判断程序是否有bug的一种手段.同时,在测试的时候是默认看不到程序的具体实现的,即进行黑盒测试,例如每次OO作 ...
- oo作业总结(一)
概述 经历了三次oo作业的洗礼,让我对java语言的强大以及面向对象编程有了初步的理解(当然,我是小白).本文接下来就将对自己这三次作业的代码进行分析以及分享自己的心路历程. 基础知识点考核 针对前三 ...
- 北航oo作业第一单元小结
前言 在经过了三次艰辛的oo作业后,oo课程的第一单元告一段落,这一单元,我作为一个oo小白,开始了解oo的编程思想,也有了自己的一点心得体会.把笔粗成字,不当之处,还请各位大佬多多指教. 一.分析程 ...
- 北航oo作业第四单元小结
1.总结本单元两次作业的架构设计 在我动手开始总结我的设计之前,我看了其他同学已经提交在班级群里的博客,不禁汗颜,我是真的偷懒.其他同学大多使用了新建一个类,用以储存每一个UMLelemet元素的具体 ...
- 【作业2.0】HansBug的5-7次OO作业分析与小结,以及一些个人体会
不知不觉又做了三次作业,容我在本文胡言乱语几句2333. 第五次作业 第五次作业是前面的电梯作业的多线程版本,难度也有了一些提升.(点击就送指导书) 类图 程序的类图结构如下: UML时序图 程序的逻 ...
- 【作业】HansBug的前三次OO作业分析与小结
OO课程目前已经进行了三次的作业,容我在本文中做一点微小的工作. 第一次作业 第一次作业由于难度不大,所以笔者程序实际上写的也比较随意一些.(点击就送指导书~) 类图 程序的大致结构如下: 代码分析 ...
随机推荐
- SpringBoot 文件上传、下载、设置大小
本文使用SpringBoot的版本为2.0.3.RELEASE 1.上传单个文件 ①html对应的提交表单 <form action="uploadFile" method= ...
- SpringBoot集成ActiveMQ
前面提到了原生API访问ActiveMQ和Spring集成ActiveMQ.今天讲一下SpringBoot集成ActiveMQ.SpringBoot就是为了解决我们的Maven配置烦恼而生,因此使用S ...
- TCHART FROM DATATABLE
using System;using System.Collections;using System.ComponentModel;using System.Drawing;using System. ...
- 如何抓取Amazon大图
https://www.douban.com/note/277033391/ 進入到日本Amazon看到某些商品有預覽圖可以放大欣賞,當你想要右鍵下載卻發現只得到空白圖或白邊圖.縮圖.切割圖,究竟原圖 ...
- 算法之如何实现LRU缓冲淘汰策略
1)什么是缓存? 缓存是一种提高数据读取性能的技术,在硬件设计.软件开发中都有着非广泛的应用,比如常见的CPU缓存.数据库缓存.浏览器缓存等等. 2)为什么使用缓存?即缓存的特点缓存的大小是有限的,当 ...
- gem "ransack"(4000✨) 简单介绍
Object-based searching:演示. git: https://github.com/activerecord-hackery/ransack Gorails视频和我的博客记录:ht ...
- BAT 大规模Hadoop集群实践
百度高级架构师马如悦:我的Hadoop 2.0 http://www.csdn.net/article/2011-04-28/296869 腾讯大规模Hadoop集群实践 腾讯 hadoop 基线版本 ...
- android -------- Data Binding的使用(一)
Google推出自己官方的数据绑定框架Data Binding Library 已经很久了,很多企业也在使用 面试的时候也有问到,所以也去学习了一番,特来分享一下,希望对各位有所帮助 描述: Data ...
- Confluence 6 空间的权限是附加的
空间的权限是附加的.如果一个用户以个人的方式或者以一个用户组成员的方式赋予了权限,Confluence 将会把这些权限合并在一起. 下面是这个概念的示例... Sasha 是 confluence- ...
- HDU-6386-最短路
Age of Moyu Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Tot ...