軟件測試到了後期,出現了一個奇怪的BUG。幾經查找,是因爲對DB中某條數據的狀態Flag判斷不夠,從代碼中反映爲只有IF而沒有ELSE,這樣反映到系統中就出現了意想不到的效果。一般來說,出現過兩次的問題就值得總結一番了,這就引出了本節文字。
開發軟件項目要接觸到很多與狀態有關的東西,如狀態遷移。舉例如:計劃書狀態(臨時,草稿,校覈,審查,審定,批准,發佈,歸檔,作廢)。暫時想到了這麼多,狀態單步變換尚可輕易把握,但狀態可能會跳級變換及回退。這些變換主要集中在業務端,對數據表的狀態字段操作應該是簡單統一。假設有三級計劃,各級計劃有不同的狀態,並且各級計劃的狀態相互影響,夠複雜的。從設計者的角度來說,希望用盡量簡單的方法實現現實的功能。但由於現實世界的複雜性,即使用最簡單的方法實現也不是想象的那麼容易。所以,對狀態應有足夠的重視。
涉及到編程,尤其是WEB系統。單兵作戰的市場已難以存在,每個項目將消耗很大的人力資源。狀態的問題是一個長期的問題,從分析,設計,編碼,測試。套用一句俗語:狀態無處不在。如果系統分析,將業務理清楚,將狀態寫清楚。如果詳細設計,將處理表述完整,把狀態的方方面面用各種圖表列詳細。如果編碼,將狀態的準確含義弄明白,將狀態與各方面(業務,DB)的聯繫弄明白,對狀態的處理在代碼中顯出條理來。如果測試,更要深刻理解現實需求的東西,應該行的要行,不應該行的一定不能行。
是否有過這種情況,一張表格在開發過程中被頻頻使用,且不時翻出來作爲開發依據,成爲珍貴的參考資料?狀態遷移圖是一種常見的圖。還有一種二維表很有用,例如狀態/動作的有效性檢查。總之,在軟件實現的各個階段,要儘早地對狀態結下天羅地網。
程序備忘錄:之七-狀態的聯想(2004/08/31 19:10)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
SimpleRouter: the problem
Problem StatementA routers job is to route packets of information to the co
ralph623
2020-06-16 12:13:20
regex_test.cpp -- learning boost.regex
boost.regex 庫的用法,看來這可能是 boost 當中寫法最“常規”的庫之一了。regex_test.cpp:#include #inclu
ralph623
2020-06-16 12:13:20
TopCoder challenge: SimpleRouter --- Reloaded
ralph623
2020-02-24 10:27:43
TopCoder challenge: SimpleRouter
ralph623
2020-02-24 10:27:43
DiskDefrag: the problem
ralph623
2020-02-24 10:27:43
程序備忘錄:之八-畫面遷移表(2004/09/24 15:27)
ogogog
2018-09-02 02:18:35
程序備忘錄:之一-從B票到編碼的回視(2004/06/30 11:30)
ogogog
2018-09-02 02:18:35
程序備忘錄:之三-郵件轟炸(2004/07/12 15:42)
ogogog
2018-09-02 02:18:35
程序備忘錄:引言(2004/06/28 13:54)
ogogog
2018-09-02 02:18:35
程序備忘錄:之五-熟悉數據表(2004/08/23 20:04)
ogogog
2018-09-02 02:18:35
程序備忘錄:之四-時間表中的計劃(2004/07/21 13:18)
ogogog
2018-09-02 02:18:35
程序備忘錄:之十-WEB經典小問題(2004/10/23 13:48)
ogogog
2018-09-02 02:18:35
程序備忘錄:之九-用例和腳本(2004/09/27 20:17)
ogogog
2018-09-02 02:18:35
程序備忘錄:之二-積累創作素材(2004/07/06 17:20)
ogogog
2018-09-02 02:18:33
程序備忘錄:之六-判定樹的用法(2004/08/23 20:06)
ogogog
2018-09-02 02:18:33