一.规格化设计的发展
首先我们来了解下什么是抽象编程
抽象编程是通过抽象的方法来减少编程工作量或有效地减轻编程难度
/**@MODIFIES:this.NowPosition[0],
this.NowPosition[1],
this.queue,
this.WTime,
this.state,
this.credit,
this.Rtime,
this.gui,
this.c;
*@EFFECTS: judge the statement of the car then choose a right way which has a better distance and flow to move;
*/
改进方法
/**@MODIFIES:this
*@EFFECTS: judge the statement of the car then choose a right way which has a better distance and flow to move;
*/
/**@EFFECTS:this.NowPosition[1];
* @THREAD_EFFECTS:locked();
*/
改进方法
/**@EFFECTS:
esult==this.NowPosition[1];
* @THREAD_EFFECTS:locked();
*/
(3)源代码
/**@REQUIRES:int i;queue[i]!=c;
* end<400;
* c.getFi()!=c.getTi() && c.getFj()!=c.getTj();
*@MODIFIES:queue,end;
*@EFFECTS:queue[++end]==c;
*@THREAD_EFFECTS:locked();
*/
改进方法
/**@REQUIRES:all int i;start<=i<=end;queue[i]!=c;
* end<400;
* c.getFi()!=c.getTi() && c.getFj()!=c.getTj();
*@MODIFIES:queue,end;
*@EFFECTS:queue[++end]==c;
*@THREAD_EFFECTS:locked();
*/
4.功能bug和规格bug的聚焦关系
emmmmmm规格bug只被报了一个,功能bug倒是不少,总体来说因为是先写的程序后写的规格,二者相对独立,所以并没有产生太大的联系。功能失分多在于自己粗心大意,或者对于题目根本没有理解清楚,以及一些极其细节的地方没有搞清楚。而规格bug多在于不熟悉、不认真而造成的失分。
三.规格设计思路及体会
1.先写规格再写代码!先写规格再写代码!先写规格再写代码!重要的事情说三遍!
2.其实说真的,对于自己设计好规格的程序再去编写,确实是可以达到事半功倍的效果,而且不容易出错。现在编程还是想一出是一出,很容易造成不必要的麻烦
3.自己当初在写的时候就是,大概总览程序,回忆自己当时的设计思路,然后去填写REQUIRES部分,阅读具体方法来填写MODIFIES部分以及EFFECTS部分
4.感觉自己对于规格设计的训练还不够,因为课程在要求规格设计的同时还增加了很多新的要求,也许对于我这种菜鸡来说,仅仅是完成所要求的功能就已经到了上限了,规格就按照自己的想象随便写了上去。规格设计发展到今天还十分活跃一定有他的道理,而且应该成为编程中比较重要的一个环节,但感觉自己虽然写了这么多,但实际水平并没有得到多大提升。还是希望课程组能照顾下和我水平差不多的菜鸡们,能够给予更多的时间和空间