OO第十二次作業(yè)
規(guī)格設(shè)計的發(fā)展歷史
隨著計算機軟硬件的發(fā)展,代碼的復(fù)雜程度也在不短增加,隨著計算機軟件規(guī)模日漸龐大,結(jié)構(gòu)化程序設(shè)計方法開始無法滿足用戶的需求,面向?qū)ο蟪绦蛟O(shè)計產(chǎn)生。面向?qū)ο蟪绦蛟O(shè)計是一場重大的革命,提高了開發(fā)人員的效率,有效的控制了軟件開發(fā)的復(fù)雜度,提高了軟件的可維護性和可拓展性。一個復(fù)雜,功能強大的程序,往往不只是由單個人員設(shè)計而成,需要多人的合作,各司其職,再把多人的工作整合起來,而要達到多人為一份作業(yè)服務(wù),就需要要求代碼的規(guī)格化,提高程序的規(guī)范性以及程序的模塊化劃分. 這樣使得程序設(shè)計的數(shù)據(jù)更加安全, 軟件的可維護性得到有效的提高.
bug分析:
功能性bug:
第九次作業(yè):出租車不能初始化信用值
產(chǎn)生原因:把指導(dǎo)書里面的NO和status看到了一起,所以在設(shè)置初值的時候忘記還有個信用值了,自己的測試不夠準確.
代碼:
public void set(int mode,int honesty,int x,int y){
/**@ REQUIRES:0<=x,y<=79,1<=mode<=4
@ MODIFIES:customer dest mode
@ EFFECTS:mode = input(mode) pos = input(pos)
@ */
pos = new Point(x,y);
if(mode == 0)
this.mode = 4;
if(mode == 1)
this.mode = 3;
if(mode == 2)
this.mode = 1;
if(mode == 3)
this.mode = 2;
this.honest = honesty;
if(mode == 3 || mode == 4){
customer = new Point(1,1);
dest = new Point(1,2);
}
}
第十次作業(yè):沒有按照最短流量規(guī)則行走.
產(chǎn)生原因:因為功能改變導(dǎo)致流量計算規(guī)則更新,重寫了流量相關(guān)的代碼,結(jié)果最后增加流量的一個語句寫掉了,主要還是自己的測試有點簡單,不充分.
規(guī)格 bug:
第九次作業(yè)有需要寫得不合規(guī)范,第十次作業(yè)和第十一次作業(yè)有關(guān)于jsf格式問題被扣很多,比如空格還有'\result的格式等等.
規(guī)格 bug 產(chǎn)生的原因
自己并沒有充分理解格式,對于jsf的規(guī)范寫法不夠了解,僅僅當做注釋一類的作用
有的測試者比較過分.按照自己的理解而又不給出依據(jù).
分別列舉 5 個前置條件和 5 個后置條件的不好寫法, 并給出改進
前置條件
鑒于自己的做修改
- @ REQUIRES:中間@不要加空格,@REQUIRES
- 對于對象數(shù)組, 應(yīng)判斷數(shù)組中每個對象也不為空 @REQUIRES: (arr != null) && (\all i in arr; i != null)
- 要對傳進的所有有對象進行描述,不要忽略 null的情況@REQUIRES: * != null
- 少用自然語言
- 約束對象范圍,如坐標值需要大于0等
后置條件
- 要寫完整,對于滿足requires和不滿足的都要填寫
- 不能用純代碼的格式,要用規(guī)范格式書寫,比如==需要用兩個=,只能是判斷
- 描述規(guī)范,/all /exsit要分清.
- 對常量單獨定義, 否則失去意義 @EFFECTS: (0 <= x < max_limit) ==> (\result == true)
- 少用自然語言
功能 bug 與規(guī)格 bug 在方法上的聚類關(guān)系
功能 bug 與規(guī)格 bug 在我的程序中沒有同時出現(xiàn).無法描述
設(shè)計規(guī)格和撰寫規(guī)格的基本思路和體會
說實話這個規(guī)格有點讓人難受,描寫規(guī)格本來是很好的,很規(guī)范,讓人對于代碼的理解更輕松的一件事情.但是由于不夠準確的規(guī)格指導(dǎo),規(guī)范化完全不夠的jsf寫法,就我個人很言,寫起來讓我很煩惱,很難寫,甚至比我寫那些代碼都更麻煩,而且,按照寫法寫完的jsf也并不利于閱讀,對于這個規(guī)格同學(xué)們都有各自的理解,往往有很多人能找出很多無理的錯誤,對于作業(yè)來說,公測現(xiàn)在已經(jīng)夠弱了,基本上已經(jīng)快變成想拿分就能拿分的情況,你要做到j(luò)sf能符合完全的"規(guī)范"(我現(xiàn)在也沒有了解完全的規(guī)范),比你寫出一個合適的程序更加困難.
希望以后能讓jsf達成他應(yīng)有的效果,是提供方便,提高效率,消除分歧,而不是現(xiàn)在這樣的麻煩,降低了效率,引發(fā)了爭端.
浙公網(wǎng)安備 33010602011771號