軟體構造實驗四總結
p4主要是針對健壯性和正確性來程式設計
本次實驗重點訓練學生面向健壯性和正確性的程式設計技能,利用錯誤和異常處理、斷言與防禦式程式設計技術、日誌/斷點等除錯技術、黑盒測試程式設計技術,使程式可在不同的健壯性/正確性需求下能恰當的處理各種例外與錯誤情況,在出錯後可優雅的退出或繼續執行,發現錯誤之後可有效的定位錯誤並做出修改。
實驗針對 lab 3 中寫好的 adt **和基於該 adt 的三個應用的**,使用以下技術進行改造,提高其健壯性和正確性:
1.錯誤處理
2.異常處理
3.assertion 和防禦式程式設計
4.日誌
5.除錯技術
6.黑盒測試及**覆蓋度
對於程式來說,正確性肯定是首選的,需求是第一生產力嗎,需求都沒有達到,那這個程式肯定不是個好程式。而健壯性呢,就是這個程式處理問題的能力,健壯性越強,這個程式遇到錯誤,問題都能做出越好的回應。所以健壯性和正確性強弱也是衡量乙個程式好壞的重要因素。
本次實驗是基於lab3進行一系列的改進,從而提高lab3的健壯性和正確性。
這裡就運用到了異常處理,斷言技術,防禦性拷貝,日誌管理和最開始學習的程式測試。
之後又練習了我們debug的能力。
這裡我就說說那幾道debug的題吧
debug之前應該先根據spec和等價類來編寫測試程式,看程式都會在**出錯,然後根據錯誤位置進行針對性改進。
1.eventmanager
首先就是函式規約,沒有day引數宣告
然後還要新增個引數合法性的判斷,並對各種情況做出相應反應。
2.lowestprice
該程式運用的動態規劃思想。
於是就扔用動態規劃來改動**使其完整實現
//j遍歷需求陣列,等號要刪掉
//如果該策略讓某一種商品數量變為負值,則該策略不能用flag置為false
for (j = 0; j < needs.size(); j++)
clone.set(j, diff);
}
//若該策略不能用繼續遍歷下乙個策略
if(!flag) continue;
//判斷使用該策略便宜還是不使用該策略便宜,s價錢為s[j]
if (j == needs.size())
res = math.min(res, s.get(j) + shopping(price, special, clone));
3.flightclient
同第乙個一樣,要新增引數合法性判斷。
然後要新增比較器,按起飛的時間公升序排序。
之後不能隨機選擇飛機,要是沒有飛機可分配,程式會陷入死迴圈,所以要遍歷飛機。
軟體構造實驗三總結
軟體構造實驗三總結 這次就乙個目標實現乙個adt。本次實驗給定了五個具體應用 高鐵車次管理 航班管理 作業系統程序管 理 大學課表管理 學習活動日程管理 學生不是直接針對五個應用分別程式設計 實現,而是通過 adt 和泛型等抽象技術,開發一套可復用的 adt 及其實現,充 分考慮這些應用之間的相似性...
軟體構造Lab3實驗總結
本次實驗是軟體構造課程當中工作量最大,且最為複雜的乙個。主要工作是實現乙個多軌道系統,在這個系統的基礎上完成三個應用。track game atom structure social network circle 三種應用都具有一定的多軌道結構。track game 中的軌道是跑道,atom str...
軟體構造Lab4實驗總結
本實驗的主要工作是找到程式容易出錯的地方,並且盡力避免程式的崩潰。主要找到了以下幾種容易出錯的場合 1.trackgame的錯誤處理 1 如果game標籤沒有找到或者不合法,則丟擲異常game type error.2 如果num of track標籤沒有找到或者不合法,則丟擲異常num of tr...