軟體工程/部署/演進介紹
軟體演進是軟體工程(特別是軟體維護)中使用的術語,指的是最初開發軟體,然後出於各種原因反覆更新軟體的過程。
弗雷德·布魯克斯在其關鍵著作《人月神話》[1]中指出,典型系統成本的90%以上發生在維護階段,任何成功的軟體都將不可避免地需要維護。
事實上,敏捷方法源於圍繞基於 Web 的技術進行的維護活動,其中大部分功能來自框架和標準。 [需要引用]
軟體維護解決錯誤修復和微小增強,而軟體演進則專注於適應和遷移。
E.B. Swanson 最初確定了三類維護:糾正性、適應性和完善性。 然後,Lientz 和 Swanson (1980) [2] 對四類軟體進行了分類。 從那以後,這些類別一直在更新,並在 ISO/IEC 14764:2006 中得到國際規範化:[3]
- 糾正性維護:在交付後對軟體產品進行的反應性修改,以糾正發現的問題;
- 適應性維護:在交付後對軟體產品進行的修改,以使軟體產品在已改變或正在變化的環境中保持可用性;
- 完善性維護:在交付後對軟體產品進行的修改,以提高效能或可維護性;
- 預防性維護:在交付後對軟體產品進行的修改,以在潛伏故障成為有效故障之前,檢測和糾正軟體產品中的潛伏故障。
以上所有維護都發生在需要更改時。
雖然這些類別得到了 Warren 等人(1999)[需要引用] 和 Chapin (2001)[需要引用] 等許多作者的補充,但 ISO/IEC 14764:2006 國際標準保留了基本的四類。
近年來,使用本體論對軟體維護和演進進行了描述(Kitchemham 等人 (1999)[需要引用],Derider (2002)[需要引用],Vizcaíno 2003[需要引用],Dias (2003)[需要引用],以及 Ruiz (2004))[需要引用],豐富了對許多演進活動的描述。
Meir M. Lehman 教授,他從 1972 年到 2002 年在倫敦帝國理工學院工作,他和他的同事們發現了一組關於專有軟體演進行為。 這些行為(或觀察結果)被稱為萊曼定律,共有八條。
- 持續變化
- 複雜度增加
- 大型程式演進
- 工作量不變
- 熟悉性守恆
- 持續增長
- 質量下降
- 反饋系統
值得一提的是,這些定律被認為主要適用於單片專有軟體。 例如,來自開源軟體開發研究的一些經驗觀察似乎挑戰了一些定律。 [需要引用]。
這些定律預測,變化是不可避免的,而不是糟糕的程式設計造成的,而且軟體演進團隊在安全地實施更改和新功能方面所能實現的程度有限。
已開發出專門針對軟體演進的成熟度模型,以幫助改進流程,確保軟體不斷迭代演進。
許多利益相關者(例如開發者、使用者、他們的經理)組成的“全域性流程”包含許多反饋迴圈。 演進速度是反饋迴圈結構和其他全域性系統特徵的函式。 系統動力學等過程模擬技術有助於理解和管理這種全域性過程。
軟體演進不太可能遵循達爾文主義、拉馬克主義或鮑德溫主義,而是一種獨立的重要現象。 由於社會和經濟各階層對軟體越來越依賴,軟體的成功演進變得越來越重要。 這是一個尚未得到足夠重視的重要研究課題。
萊曼認為,軟體演進因其與其他人工實體相比的快速發展軌跡,被視為人工系統演進研究的“果蠅”。
- ↑ Fred Brooks,人月神話。 Addison-Wesley,1975 & 1995。ISBN 0-201-00650-2 & ISBN 0-201-83595-9。
- ↑ Lientz,B.P. 和 Swanson,E.B.,軟體維護管理:對 487 個數據處理組織中計算機應用程式軟體維護的研究。 Addison-Wesley,Reading MA,1980。 ISBN 0201042053
- ↑ ISO/IEC 14764:2006,2006 年。