~Ooops:本篇博文爲觀看《軟件工程導論 第五版 》張海潘書籍所做的總結性筆記,
有錯誤請望指出?
第八章. 維護
一.軟件維護的定義和特點
1.定義:在軟件已經交付使用後,爲了改正錯誤或滿足新的需要,而對軟件產品所做出的修改。
2.目的:通過必要的維護工作 ,使系統持久的滿足用戶的需要。
3.維護的類型:
- 改正性維護: 指的是在特定環境下暴露的問題,識別和糾正錯誤,修改性能缺陷。
- 適應性維護:針對硬件和軟件的變化,爲適應新環境而進行軟件修改。
- 完善性維護:針對用戶提出的新增功能或者時修改已有的功能要求,而進行軟件修改。
一般大部分爲這種類型。
- 其他維護:除以上維護類型之外的維護。
4.維護的特點:
-
結構化和非結構化維護差異明顯。
-
非結構化維護(代價很大)
只有程序代碼,從評價程序代碼開始,文檔不足,改動的後果難以估計。
-
結構化維護(代價較小,維護質量高)
有程序代碼和相關文檔,從評價設計文檔開始,修改設計並進行復查,根據說明書進行迴歸測試。
-
-
維護的代價高昂。
-
有形代價: 維護成本高、
-
無形代價:引發用戶的不滿,降低軟件質量,影響新項目開發。
維護工作量的模型:
M = P + K * exp(c - d) M 維護工作總量 P 生產性工作量 K 經驗常數 c 軟件複雜程度 d 維護人員對軟件的熟悉程度
以上模型表明,如果軟件
開發的途徑不當
,原開發人員不參加維護
工作,都加使維護工作量呈指數級增加
。
-
5.影響軟件維護的因素:
修改別人的程序 ,文檔不全,軟件結構不合理,軟件維護易受挫。與軟件維護有關的大多數問題,都可歸因於軟件定義和軟件開發方法有缺陷。
二.軟件維護的過程
軟件維護過程本質上是修改和壓縮了軟件定義和開發過程
,而遠在提出意向維護要求之前,與軟件維護有關的工作已經開始了。
維護的一般過程:
建立維護組織 ——> 維護報告 ——> 維護事件流 ——> 保存維護記錄
——> 評價維護活動
-
軟件維護的決定性因素
1.可理解性 2.可測試性 3. 可移植性 4.可修改性 5.可重用性
-
文檔
軟件文檔可以分爲
用戶文檔
和系統文檔
。用戶文檔: 描述系統功能和使用方法。
系統文檔: 描述系統設計,實現,測試等方面內容。
-
可維護性複審
軟件工程每一個階段結束前,應該着重對可維護性進行復審。在系統設計階段的複審期間,應該從
容易修改,模塊化,和功能獨立的目的
出發
4.逆向過程與再工程
逆向工程是指分析已有的程序,尋求比源代碼高級的抽象式更高一級的抽象形式。 再生工程,也稱爲修復和改造工程,它是在逆向工程所獲信息的基礎上修改或再 生 已有的系統,產生系統的一個新版本。
再工程是:指通過對目標系統的檢查和改造,其中包括設計恢復(庫存目錄分析)、再文檔、逆向工程、程序和數據重構以及正向工程等一系列活動,旨在將逆向工程、重構和正向工程組合起來,將現存系統重新構造爲新的形式,以開發出質量更高、維護性更好的軟件。
三.總結
維護是軟件生命週期的最後一個階段,也是持續時間最長,代價最大的一個階段,而軟件工程的主要目的就是提高軟件的可維護性
,降低維護的代價
。
1.軟件工程的四類活動(類型)。
2.決定軟件可維護性的基本因素。
3.文檔是影響軟件可維護性的決定因素,文檔比可執行的程序代碼更重要,分爲用戶文檔
和系統文檔
。