摘自《軟體工程》,張海藩、呂云翔著。
概括地說,軟體生命週期由軟體定義、軟體開發和執行維護3個時期組成,每個時期又可進一步劃分成若干個階段。
軟體定義時期的任務是確定軟體開發工程必須完成的總目標;確定工程的可行性;匯出實現工程目標應該採用的策略及系統必須完成的功能;估計完成該項工程需要的資源和成本,並且制訂工程進度表。這個時期的工作通常又稱為系統分析,由系統分析員負責完成。軟體定義時期通常進一步劃分為3個階段,即
問題定義、可行性研究和需求分析。
軟體開發時期具體設計和實現在前乙個時期定義的軟體,它通常由下述4個階段組成:
概要設計、詳細設計、編碼和單元測試、綜合測試。其中前兩個階段又稱為系統設計,後兩個階段又稱為系統實現。
執行維護時期的主要任務是使軟體持久地滿足使用者的需要。具體地說,當軟體在使用過程中發現錯誤時應該加以改正;當環境改變時應該修改軟體以適應新的環境;當使用者有新要求時應該及時改進軟體以滿足使用者的新需要。通常對維護時期不再進一步劃分階段,但是每一次維護活動本質上都是一次壓縮和簡化了的定義和開發過程。
下面簡要介紹上述各個階段應該完成的基本任務。
1.問題定義
問題定義階段必須回答的關鍵問題是:「要解決的問題是什麼」。如果不知道問題是什麼就試**決這個問題,顯然是盲目的,只會白白浪費時間和金錢,最終得出的結果很可能是毫無意義的。儘管確切地定義問題的必要性是十分明顯的,但是在實踐中它卻可能是最容易被忽視的乙個步驟。
通過調研,系統分析員應該提出關於問題性質、工程目標和工程規模的書面報告,並且需要得到客戶對這份報告的確認。
2.可行性研究
這個階段要回答的關鍵問題是:「上乙個階段所確定的問題是否有行得通的解決辦法」。並非所有問題都有切實可行的解決辦法,事實上,許多問題不可能在預定的系統規模或時間期限之內解決。如果問題沒有可行的解,那麼花費在這項工程上的任何時間、資源和經費都是無謂的浪費。
可行性研究的目的就是用最小的代價在盡可能短的時間內確定問題是否能夠解決。必須記住,可行性研究的目的不是解決問題,而是確定問題是否值得去解。要達到這個目的,不能靠主觀猜想而只能靠客觀分析。系統分析員必須進一步概括地了解使用者的需求,並在此基礎上提出若干種可能的系統實現方案,對每種方案都從技術、經濟、社會因素(如法律)等方面分析可行性,從而最終確定這項工程的可行性。
3.需求分析
這個階段的任務仍然不是具體地解決客戶的問題,而是準確地回答「目標系統必須做什麼」這個問題。
雖然在可行性研究階段已經粗略了解了使用者的需求,甚至還提出了一些可行的方案,但是,可行性研究的基本目的是用較小的成本在較短的時間內確定是否存在可行的解法,因此許多細節被忽略了。然而在最終的系統中卻不能遺漏任何乙個微小的細節,所以可行性研究並不能代替需求分析,它實際上並沒有準確地回答「系統必須做什麼」這個問題。
需求分析的任務還不是確定系統怎樣完成它的工作,而僅僅是確定系統必須完成哪些工作,也就是對目標系統提出完整、準確、清晰和具體的要求。使用者了解他們所面對的問題,知道必須做什麼,但是通常不能完整準確地表達出他們的要求,更不知道怎樣利用計算機解決他們的問題;軟體開發人員知道怎樣用軟體實現人們的要求,但是對特定使用者的具體要求並不完全清楚。因此,系統分析員在需求分析階段必須與使用者密切配合,充分交流資訊,以得出經過使用者確認的系統需求。
這個階段的另外一項重要任務,是用正式文件準確地記錄對目標系統的需求,該文件通常稱為規格說明(specification)。
4.概要設計
這個階段的基本任務是:概括地回答「怎樣實現目標系統?」概要設計又稱為初步設計、邏輯設計、高層設計或
總體設計。
首先,應該設計出實現目標系統的幾種可能的方案。軟體工程師應該用適當的表達工具描述每種可能的方案,分析每種方案的優缺點,並在充分權衡各種方案利弊的基礎上,推薦乙個最佳方案。此外,還應該制定出實現所推薦方案的詳細計畫。如果客戶接受所推薦的系統方案,則應該進一步完成本階段的另一項主要任務。
上述設計工作確定了解決問題的策略及目標系統中應包含的程式。但是,對於怎樣設計這些程式,軟體設計的一條基本原理指出,程式應該模組化,也就是說,乙個程式應該由若干個規模適中的模組按合理的層次結構組織而成。因此,概要設計的另一項主要任務就是設計程式的體系結構,也就是確定程式由哪些模組組成以及模組間的關係。
5.詳細設計
概要設計階段以比較抽象概括的方式提出了解決問題的辦法。詳細設計階段的任務就是把解法具體化,也就是回答「應該怎樣具體地實現這個系統」這個關鍵問題。這個階段的任務還不是編寫程式,而是設計出程式的詳細規格說明。這種規格說明的作用很類似於其他工程領域中工程師經常使用的工程藍圖,它們應該包含必要的細節,
程式設計師可以根據它們寫出實際的程式**。
詳細設計也稱為模組設計、物理設計或低層設計。在這個階段將詳細地設計每個模組,確定實現模組功能所需要的演算法和資料結構。
6.編碼和單元測試
這個階段的關鍵任務是寫出正確的,容易理解、容易維護的程式模組。
程式設計師應該根據目標系統的性質和實際環境,選取一種適當的高階程式語言(必要時用組合語言),
把詳細設計的結果翻譯成用選定的語言書寫的程式,並且仔細測試編寫出的每乙個模組。
7.綜合測試
這個階段的關鍵任務是通過各種型別的測試(及相應的除錯)使軟體達到預定的要求。最基本的測試是整合測試和驗收測試。所謂整合測試是根據設計的軟體結構,把經過單元測試檢驗的模組按某種選定的策略裝配起來,在裝配過程中對程式進行必要的測試。所謂驗收測試則是按照規格說明書的規定(通常在需求分析階段確定),由使用者(或在使用者積極參加下)對目標系統進行驗收。必要時還可以再通過現場測試或平行執行等方法對目標系統進一步測試檢驗。為了使使用者能夠積極參加驗收測試,並且在系統投入生產性執行以後能夠正確有效地使用這個系統,通常需要以正式的或非正式的方式對使用者進行培訓。通過對軟體測試結果的分析可以**軟體的可靠性;反之,根據對軟體可靠性的要求,也可以決定測試和除錯過程什麼時候可以結束。應該用正式的文件資料把測試計畫、詳細測試方案以及實際測試結果儲存下來,作為軟體配置的乙個組成部分。
8.軟體維護
維護階段的關鍵任務是,通過各種必要的維護活動使系統持久地滿足使用者的需要。通常有 4類維護活動:改正性維護,也就是診斷和改正在使用過程中發現的軟體錯誤;適應性維護,即修改軟體以適應環境的變化;完善性維護,即根據使用者的要求改進或擴充軟體使它更完善;預防性維護,即修改軟體為將來的維護活動預先做準備。
雖然沒有把維護階段進一步劃分成更小的階段,但是實際上每一項維護活動都應該經過提出維護要求(或報告問題),分析維護要求,提出維護方案,審批維護方案,確定維護計畫,修改軟體設計,修改程式,測試程式,複查驗收等一系列步驟,因此,實質上是經歷了一次壓縮和簡化了的軟體定義和開發的全過程。
軟體生命週期
軟體生命週期 三個過程 定義,開發,維護 九個階段 可行性研究 需求分析,概要設計 詳細設計 編碼與單元測試 整合測試 驗收測試,執行與維護 退役。可行性研究 系統分析人員在使用者的配合下對使用者的要求和現有的環境及條件進行深入調查寫出調研報告,從技術可行性,經濟可行性,法律可行性,操作可行性等方面...
軟體生命週期
同任何事物一樣,乙個軟體產品或軟體系統也要經歷孕育 誕生 成長 成熟 衰亡等階段,一般稱為軟體生存週期 軟體生命週期 把整個軟體生存週期劃分為若干階段,使得每個階段有明確的任務,使規模大,結構複雜和管理複雜的軟體開發變的容易控制和管理。通常,軟體生存週期包括可行性分析與開發項計畫 需求分析 設計 概...
軟體生命週期
軟體有乙個孕育 誕生 成長 成熟和衰亡的生成過程。這個過程即為軟體的生命週期 軟體生存期的六個步驟為 1.制定計畫 2.需求分析 3.設計 4.程式編碼 5.測試 6.執行與維護 確定要開發軟體系統的總目標 給出功能 效能 可靠性以及介面等方面的要求 完成該任務的可行性研究 估計可利用的資源 硬體 ...