OO第三阶段总结
1、 规格化设计的发展
我认为规格化设计的需求主要来源于在软件与互联网行业飞速发展下,工程随着代码量的增长,往往会显得异常的臃肿,难以阅读。这为多人合作的工程创造了巨大的不便。而在这样的背景下,大家都认为代码风格的统一和良好编程习惯的养成是及其必要的。但是还是会在在阅读和理解代码时使用很多的时间,因此对规格的需求就不可避免。
2、作业BUG
第十次作业被申报了两个规格bug。
第一个是由于之前需要实现删路功能,我在设计后期,在Map类中添加了一个属性用以记录关闭或开启道路的次数,但在代码的添加时忘记了修改关闭道路方法的规格中的Modified属性。
第二个是由于之前需要实现红绿灯功能,在某个类的构造方法中添加了this.lightCtrler = lightCtrler;这样的语句但是没有修改规格中的Modified属性。
所有作业均没有被申报功能bug。
3、规格改进
改进前:
/**
* @REQUIRES: None;
* @MODIFIES: None;
* @EFFECTS: \result == hash of this req;
*/
@Override
public int hashCode() {
return Objects.hash(src, dst, rqTime);
}
改进后:
改进前:
改进后:
改进前:
改进后:
4、分析功能bug和规格bug的聚集关系。
未被查出功能bug,规格bug往往是由于中途更改需求之后忘了改规格而导致的。这体现了我在设计初期没有全面的分析方法的功能需求,导致实现后续功能时突然发现这个方法应该修改。
5、心得体会
这三次OO作业大大地提升了我的工程能力,无论是在编码上,测试和debug上,我都有了长足的经验,可以游刃有余地实现添加的功能,对继承的运用也变得更加熟练,理解上也深了一个层次。
由于测试者抬了一手,没有仔细找我程序的bug,可能是由于本次作业测试比较困难,黑箱测试会很耗费时间,必须要读代码,所以很多测试者都使用了摸鱼测试法,比如说我自己。(事实上我认为虽然我的程序已经较为完善,但还是很有可能出现一些遗漏的地方)