oo第三次博客作业

规格化设计的大致发展历史和为什么得到了人们 的重视:

规格化设计的发展历史网上资料也不多。规格化的存在使得代码有好的移植性。每个人有各自的写法,规格能告诉使用者关于代码整体上的思路,不去关注代码实现的具体细节。告诉别人如何使用,对于输入我如何处理。使得代码更好去移植使用。在程序发生错误时,能更加有效寻找问题出处,使得维护更加方便。

规格错误:

错误类别 代码行数
EFFECTS 不完整 42
不符合jsf规范 35
repOK不完整 11

规格产生bug原因:

很多时候养成的先写代码的习惯,没有好好的写规格,在写完代码后才补规格,最后对于一些方法忘写规格。

==被写成=。

前置条件的不好写法:

 1:没有指定类型

* @REQUIRE:(x!=null && x.state==state.order)

修改:

* @REQUIRE:(x instanceof taxi && x!=null  x.state==order)

2:自然语言

* @REQUIRE:(input taxi and taxi has already existed)

修改:

* @REQUIRE:(x instanceof taxi && taxi!=null && taxi_list.contain(x)==true)

3:== 写成 =

* @REQUIRE:(x instanceof taxi && x!=null  x.state=order)

修改

* @REQUIRE:(x instanceof taxi && x!=null  x.state==order)

后置条件的不好写法:

1:直接把实现写入规格

* @EFFECTS:(credit==credit+k);

修改:

* @EFFECTS:(credit==old(credit)+k);

2:没有异常处理

* @EFFECTS:norma_behavior(this.contain(a)==false => list.size == old(list.size+1) && list.contain(a) )

修改:

* @EFFECTS:norma_behavior(this.contain(a)==false => list.size == old(list.size+1) && list.contain(a)  )

exception_behavior(throw ArgumentExistException)

3:使用自然语言

* @EFFECTS:return the position of taxi in taxi_list

修改:

* @EFFECTS:(\exist i;0<=i<taxi_list.size;taxi_list(i)==taxi=>\result==i)

功能bug、规格bug:

方法名: bfs 

问题: 没有实现最小流量 

功能bug:1

规格bug:0

方法名: Main

问题: try catch 在catch中的异常写为FileNotFoundException  导致不能catch 所有的exception 程序发生crash。

功能bug:1

规格bug:0

方法名:create_taxilist

问题:没有实现jsf

功能bug:0

规格bug:1

功能bug和规格bug 出现的地方 没有任何关系,只是实现的过程出现了错误,或者jsf 规格格式错误。

体会:

oo课程快要结束。后续的课程作业压力确实减轻。经过几次实验课,熟悉怎么用jsf去写内部实现。在写规格时,我们不能想着如何实现,规格是给人看的,如果自己不看代码能否根据自己的规格知道如何使用。

posted @ 2018-05-27 23:33  16061176  阅读(127)  评论(0编辑  收藏  举报