軟體演化
出自 MBA智库百科(https://wiki.mbalib.com/)
目錄 |
軟體演化是一個程式不斷調節以滿足新的軟體需求過程。根據不同的特征,軟體演化具有不同的分類方法。
根據演化時軟體系統是否在運行,可分為靜態演化和動態演化。
1)靜態演化
靜態演化是指軟體在停機狀態下的演化。其優點是不用考慮運行狀態的變遷,同時也沒有活動的進行需要處理。然而停止一個應用程式就意味著中斷它提供的服務,造成軟體暫時失效。
2)動態演化
動態演化是指軟體在執行期間的軟體演化。其優點是軟體不會暫時的失效。有持續可用性的明顯優點。但由於涉及狀態遷移等問題,比靜態演化從技術上更難處理。動態演化是最複雜也是最有實際意義的演化行為。動態演化使得軟體在運行過程中,可以根據應用需求和環境變化,動態地進行配置、維護和更新,其表現形式包括系統元素數目的可變性、結構關係的可調整性等。軟體的動態演化特性對於適應未來軟體發展的開放性、多態性具有重要意義。
根據演化發生的時機,軟體演化可分為設計時演化、裝載期演化和運行時演化。
1)設計時演化
設計時演化是指在軟體編譯前,通過修改軟體的設計、源代碼,重新編譯、部署系統來適應變化。設計時演化是目前在軟體開發實踐中應用最廣泛的演化形式。
2)裝載期演化
裝載期演化是指在軟體編譯後、運行前進行的演化,變更發生在運行平臺裝載代碼期間。因為系統尚未開始執行,這類演化不涉及系統狀態的維護問題。
3)運行時演化
發生在程式執行過程中的任何時刻,部分代碼或者對象中執行期間修改。顯而易見,設計時演化是靜態演化,運行時演化是一種典型的動態演化,而裝載期間的演化既可以被看作靜態演化也可以看作是動態演化,取決於它怎樣被平臺或提供者使用。
1985年Lehman和Belady在專門研究了許多大型軟體系統的發展和演化的基礎上總結了軟體在變更過程中的演化動態特征,具體包括:
(1)軟體維護和演化是一個必然的過程。
現實世界在不斷變化和發展,當系統的環境發生改變時,新的需求就會浮現。因此為了適應變化的環境需要,繼續發揮其應有的作用,軟體系統也必鬚根據需要不斷地進行維護和演化。當修改後的系統重新投入使用,又會促使環境的改變,於是演化過程進入迴圈。
(2)軟體的不斷修改會導致軟體的退化。
隨著系統的改變,其結構在衰退。因此,為了能夠防止退化的發生.必須增加額外的成本以改善軟體的結構和質量。這樣,在實現必要的系統變更成本上又會增加額外的支出。
(3)軟體系統的動態特性是在開發過程的早期建立起來的。
軟體的規模限制著自身發生的變更,由於較大的變更會引入更多的缺陷,因而限制了新版本的演化有效程度。這也決定了系統維護過程的總趨勢以及系統變更可能次數的極限——系統一旦超過某個最小規模就會變得難以變更。
(4)資源和人員的變化對系統長期演化的影響是不易察覺的。
在大型軟體項目開發中,團隊成員數量的增加不一定就能提高軟體的開發效率。
(5)在軟體系統中添加新的功能不可避免地會產生新的缺陷。
軟體演化過程是軟體演化和軟體過程的統一。按ISO/IECl2207標準,軟體過程是指軟體生命期中的若幹活動的集合。活動又稱為工作流程,又可細分為子活動或任務。Lehman認為軟體演化過程是一個多層次,多迴圈,多用戶的反饋系統。從軟體再工程的角度看,軟體演化過程是對軟體系統進行不斷地再工程的過程,是軟體系統在其生命周期中不斷完善的系統動力學行為。
軟體演化過程並非是順序進行的,它是根據一定的環境迭代地、多層次地進行的。在軟體演化過程中,不同粒度的活動都會發生,因此它必須更具有靈活性。通過觀察和分析,軟體演化過程模型中存在以下特征。
1)迭代性
在軟體演化過程中,由於軟體系統必須不斷地進行變更,許多活動要以比傳統開發過程更高頻率進行重覆執行;在整個軟體演化過程中存在著大量的呈迭代的活動,許多活動一次又一次地被執行。一次迭代過程類似於傳統的瀑布模型,處理相應的活動。每次迭代在其結束時需要進行評估,判斷是否提出了新的需求、結果是否達到了預定的要求,然後再進行下一個迭代過程。迭代性是軟體演化過程的一個重要特性。
2)並行性
在軟體演化過程中,有許多並行的活動,而且這些活動的並行性比傳統軟體開發過程中的活動的並行性要高。如軟體過程的並行、子過程的並行、階段並行、軟體發佈版本之間的並行、軟體活動之間的並行等。為了提高軟體演化過程的效率,必須對軟體演化過程進行並行性處理。
3)反饋性
儘管促使軟體系統進行演化的原因很複雜,但演化的推動力必然是從對需求的不滿產生的。用戶的需求和軟體系統所處的環境是在不斷地變化的,所以當環境變化後就必須作處反饋,以便於軟體演化過程的執行。反饋是軟體系統演化的基礎和依據。
4)多層次性
從不同的角度看,由於粒度的不同,軟體演化過程包括不同粒度的過程和活動。為了減少這種複雜性,軟體演化過程應被劃分為不同的層次,低層模型是對高層模型的細化,而高層模型是對低層模型的抽象。
5)交錯性
軟體演化過程中活動的執行並不像瀑布模型一樣是順序進行的,軟體演化過程是連續性與間斷性的統一,其活動的執行是交錯著進行的。
- 李彤,王煒,鬱湧編著,軟體工程概論,科學出版社,2012.02,第234頁