一 軟件過程
-
軟件過程定義以下內容
- 人員與分工
- 所執行的活動
- 活動的細節與步驟
-
軟件過程通過一下方式組織和管理軟件生命周期
- 定義軟件生產過程中的活動
- 定義這些活動的順序及其關系
-
軟件過程的目的
- 標準化(可模仿)、可預見性(降低風險)、提高開發頻率、得到高質量產品
- 提升制定時間和預算計劃的能力
黑盒過程和白盒過程
黑盒過程
- 存在的問題
- 要求開發之前需求被充分理解
- 與客戶的交互只在開始(需求)和最后(發布)--類似于產品制造過程
- 而實際情況與這完全不同
白盒過程
- 優點
- 可通過改進可見性來減少風險
- 在開發過程中,通過不斷地獲得顧客的回饋允許變更--類似于服務過程
二 典型的軟件過程模型
- 瀑布模型
-
增量過程模型
- 增量模型
- 快速應用程序開發
-
演化過程模型
- 螺旋模型
- 原型模型
-
其他過程模型
- 形式化過程
- 基于復用的軟件過程
- 敏捷過程模型
瀑布模型
瀑布模型
- 優點 -- 追求效率
- 缺點 -- 過于理想化
增量過程模型
- 增量模型
增量模型
** 軟件被作為一系列的增量來設計、實現、集成和測試,每一個增量是由多種相互作用的模塊所形成的提供功能的代碼片段構成 **
本質: 「以迭代的方式運用瀑布模型」
-
RAD模型
- 快速應用開發RAD(Rapid Application Development)
- 側重于短開發周期(一般為60-90天)的增量過程模型
- 多個團隊并行進行開發
- 缺點
- 需要大量的人力資源
- 如果沒有在短時間內急速完成整個系統做好準備,RAD項目將會失敗
- 如果系統不能被合理的模塊化,RAD將會帶來很多問題
- 技術風險很高的情況下,不宜采用RAD
- 快速應用開發RAD(Rapid Application Development)
演化過程模型
- 快速原型法
快速原型法
「原型的類型」
-
Throwaway prototyping(拋棄式原型)
- 最初的原型在完成并得到認可后,將不會作為交付給用戶的最終系統的一部分,而是被拋棄,其目的只是為了收集與驗證需求
- 該原型可能是不可執行的
- Evolutionary prototyping(演化式原型)
- 最初構造的原型將具備較高的質量,包含了系統的核心功能,然后通過收集需求對其不斷進行改善和精華
- 該類原型是可執行的,將成為最終系統的一部分
「快速原型法的優缺點」
優點:提高和改善客戶/用戶的參與程度,最大程度響應用戶的變化。
缺點:為了盡快完成原型,開發者沒有考慮整體軟件的質量和長期的可維護性,系統結構通常較差;可能混淆原型系統與最終系統;額外的開發費用。
螺旋式過程模型
螺旋式過程模型
- 螺旋模型沿著螺線旋轉,在四個象限內表達四個方面的活動
- 制定計劃:確定軟件目標,選定實施方案,弄清項目開發的限制
- 風險分析:分析所選方案,考慮如何識別和消除風險
- 實施工程:實施軟件開發
- 客戶評估:評價開發工作,提出修正建議
「螺旋式過程模型的優缺點」
- 出發點:開發過程中及時識別和分析風險,并采取適當措施以消除或減少風險來的危害。
- 優點:結合了原型的迭代性質與瀑布模型的系統性和可控性,是一種風險驅動型的過程模型。
- 缺點:適用于大規模軟件項目,特別是內部項目,周期長、成本高。
三 總結
「軟件過程」存在黑盒過程、白盒過程。其中黑盒過程與客戶交流不夠,客戶只在開始和結束才能接觸到產品開發;白盒過程則可以在產品過程開發中獲得客戶的反饋,從而不斷的改進開發。
?? 「軟件過程模型」主要有「瀑布模型」、「增量過程模型」、「演化過程模型」。「瀑布模型」很難回溯,一般適用成熟的技術開發。「增量過程模型」中有「增量模型」和「RAD模型」,從本質上來講,「增量模型」是一種迭代方式運用瀑布模型,「RAD模型」是一種并行的增量模型。「快速原型」是構建一個原型,然后客戶據此原型提出進一步的需求。「螺旋式過程模型」結合了原型的迭代性質和瀑布模型的系統性和可控性,但周期長、成本高。
??綜合各個模型,只有確定項目開發的性質,才能合理選擇適合的軟件過程模型,使得軟件開發正常的進行。