開發方法---軟體生命週期

hu19930613發表於2018-08-28

       軟體開發方法是軟體開發的方法學。自從“軟體危機”爆發以來,軟體研究人員就在對開發方法進行不斷地研究,以期能夠提高軟體的質量、降低軟體的成本。經過 40 多年的研究,人們提出了很多開發方法,如最初的結構化開發到現在非常流行的物件導向的開發方法等。本章將介紹軟體生命週期、軟體開發模型、軟體重用技術、逆向工程及形式化開發方法。

    1  軟體生命週期 

    軟體生命週期也就是軟體生存的週期。同萬物一樣,軟體也有誕生和消亡,軟體生命週期就是指軟體自開始構思與研發到不再使用而消亡的過程。有關軟體生命週期的階段劃分,不同的標準有不同的規定。在 GB8566-88(《軟體工程國家標準——計算機軟體開發規範》)中將軟體生命週期劃分為 8 個階段:可行性研究與計劃、需求分析、概要設計、詳細設計、實現、整合測試、確認測試、使用和維護。

    (1)可行性研究與計劃:在決定是否開發軟體之前,首先需要進行可行性研究。通過可行性研究,來確定開發此軟體的必要性,並根據可行性研究的結果初步確定軟體的目標、範圍、風險、開發成本等內容。從而制定出初步的軟體開發計劃。通過可行性研究,如果確定該軟體具有研發的必要,則將產生《可行性研究報告》和《軟體開發計劃》,並進入需求分析的階段。

    (2)需求分析:需求分析是軟體開發的重要階段。經過可行性研究後,初步確定了軟體開發的目標和範圍,之後則需要對軟體的需求進行細緻的分析,來確定軟體要做成什麼樣的。需求分析是軟體開發過程中極其重要的一環,如果需求分析出現了重大偏差,那麼軟體開發必然會偏離正確的道路,越走越遠。尤其是需求分析的錯誤如果在軟體開發後期才被發現,修正的代價是非常大的。

    (3)概要設計:概要設計確定整個軟體的技術藍圖,負責將需求分析的結果轉化為技術層面的設計方案。在概要設計中,需要確定系統架構、各子系統間的關係、介面規約、資料庫模型、編碼規範等內容。概要設計的結果將作為程式設計師的工作指南,供程式設計師瞭解系統的內部原理,並在其基礎上進行詳細設計和編碼工作。

    (4)詳細設計:詳細設計完成編碼前最後的設計,詳細設計在概要設計的基礎上,進行細化,如類設計。詳細設計不是開發過程中必需的階段,在一些規模較小、結構簡單的系統中,詳細設計往往被省略。同樣,在某一次軟體開發中,可能只會對部分關鍵模組進行詳細設計。

    (5)實現:實現過程包括編碼和單元測試。單元測試指的是對剛剛編寫出的一個小的程式單元進行測試,如某一個過程、方法或函式。因為單元測試的物件是小的程式單元,而不是完整的程式,因此往往需要編寫一些測試程式來進行測試。有效的單元測試可以大大提高編碼的質量,降低軟體系統的缺陷率。

    (6)整合測試:整合測試又稱為組裝測試。通過單元測試的程式並不意味著沒有缺陷,當程式單元被整合到一起進行互動的時候,往往會出現單元測試中不能發現的問題。同單元測試不同,整合測試必須經過精心的組織,指定整合測試計劃,確定如何將這些程式單元整合到一起,按照什麼樣的順序進行測試,使用哪些測試資料等問題。

    (7)確認測試:當完成整合測試後,軟體之間的介面方面的錯誤已經排除,這時需要驗證軟體是否同需求一致,是否達到了預期目標。同整合測試一樣,確認測試也需要進行計劃和組織,逐步地驗證軟體系統同需要的一致性。經過確認測試的軟體將投入正常使用,並進入維護期。

    (8)使用和維護:即使通過了單元測試、整合測試和確認測試,也不可能發現軟體系統中的全部缺陷;軟體系統的需求也會根據業務的發展變化而變化。因此,在軟體使用過程中,必須不斷地對軟體進行維護,修正軟體中的缺陷,修改軟體中已經不能適應最新情況的功能或者增加新的功能。軟體維護的過程會貫穿整個軟體的使用過程。當使用和維護階段結束後,軟體系統也就自然消亡,軟體系統的生命週期結束。

相關文章