一 軟件過程
-
軟件過程定義以下內(nèi)容
- 人員與分工
- 所執(zhí)行的活動
- 活動的細(xì)節(jié)與步驟
-
軟件過程通過一下方式組織和管理軟件生命周期
- 定義軟件生產(chǎn)過程中的活動
- 定義這些活動的順序及其關(guān)系
-
軟件過程的目的
- 標(biāo)準(zhǔn)化(可模仿)、可預(yù)見性(降低風(fēng)險)、提高開發(fā)頻率、得到高質(zhì)量產(chǎn)品
- 提升制定時間和預(yù)算計劃的能力
黑盒過程和白盒過程

黑盒過程
- 存在的問題
- 要求開發(fā)之前需求被充分理解
- 與客戶的交互只在開始(需求)和最后(發(fā)布)--類似于產(chǎn)品制造過程
- 而實際情況與這完全不同

白盒過程
- 優(yōu)點
- 可通過改進可見性來減少風(fēng)險
- 在開發(fā)過程中,通過不斷地獲得顧客的回饋允許變更--類似于服務(wù)過程
二 典型的軟件過程模型
- 瀑布模型
-
增量過程模型
- 增量模型
- 快速應(yīng)用程序開發(fā)
-
演化過程模型
- 螺旋模型
- 原型模型
-
其他過程模型
- 形式化過程
- 基于復(fù)用的軟件過程
- 敏捷過程模型
瀑布模型

瀑布模型
- 優(yōu)點 -- 追求效率
- 缺點 -- 過于理想化
增量過程模型
- 增量模型

增量模型
** 軟件被作為一系列的增量來設(shè)計、實現(xiàn)、集成和測試,每一個增量是由多種相互作用的模塊所形成的提供功能的代碼片段構(gòu)成 **
本質(zhì): 「以迭代的方式運用瀑布模型」
-
RAD模型
- 快速應(yīng)用開發(fā)RAD(Rapid Application Development)
- 側(cè)重于短開發(fā)周期(一般為60-90天)的增量過程模型
- 多個團隊并行進行開發(fā)
- 缺點
- 需要大量的人力資源
- 如果沒有在短時間內(nèi)急速完成整個系統(tǒng)做好準(zhǔn)備,RAD項目將會失敗
- 如果系統(tǒng)不能被合理的模塊化,RAD將會帶來很多問題
- 技術(shù)風(fēng)險很高的情況下,不宜采用RAD
- 快速應(yīng)用開發(fā)RAD(Rapid Application Development)
演化過程模型
- 快速原型法

快速原型法
「原型的類型」
-
Throwaway prototyping(拋棄式原型)
- 最初的原型在完成并得到認(rèn)可后,將不會作為交付給用戶的最終系統(tǒng)的一部分,而是被拋棄,其目的只是為了收集與驗證需求
- 該原型可能是不可執(zhí)行的
- Evolutionary prototyping(演化式原型)
- 最初構(gòu)造的原型將具備較高的質(zhì)量,包含了系統(tǒng)的核心功能,然后通過收集需求對其不斷進行改善和精華
- 該類原型是可執(zhí)行的,將成為最終系統(tǒng)的一部分
「快速原型法的優(yōu)缺點」
優(yōu)點:提高和改善客戶/用戶的參與程度,最大程度響應(yīng)用戶的變化。
缺點:為了盡快完成原型,開發(fā)者沒有考慮整體軟件的質(zhì)量和長期的可維護性,系統(tǒng)結(jié)構(gòu)通常較差;可能混淆原型系統(tǒng)與最終系統(tǒng);額外的開發(fā)費用。
螺旋式過程模型

螺旋式過程模型
- 螺旋模型沿著螺線旋轉(zhuǎn),在四個象限內(nèi)表達(dá)四個方面的活動
- 制定計劃:確定軟件目標(biāo),選定實施方案,弄清項目開發(fā)的限制
- 風(fēng)險分析:分析所選方案,考慮如何識別和消除風(fēng)險
- 實施工程:實施軟件開發(fā)
- 客戶評估:評價開發(fā)工作,提出修正建議
「螺旋式過程模型的優(yōu)缺點」
- 出發(fā)點:開發(fā)過程中及時識別和分析風(fēng)險,并采取適當(dāng)措施以消除或減少風(fēng)險來的危害。
- 優(yōu)點:結(jié)合了原型的迭代性質(zhì)與瀑布模型的系統(tǒng)性和可控性,是一種風(fēng)險驅(qū)動型的過程模型。
- 缺點:適用于大規(guī)模軟件項目,特別是內(nèi)部項目,周期長、成本高。
三 總結(jié)
「軟件過程」存在黑盒過程、白盒過程。其中黑盒過程與客戶交流不夠,客戶只在開始和結(jié)束才能接觸到產(chǎn)品開發(fā);白盒過程則可以在產(chǎn)品過程開發(fā)中獲得客戶的反饋,從而不斷的改進開發(fā)。
?? 「軟件過程模型」主要有「瀑布模型」、「增量過程模型」、「演化過程模型」?!钙俨寄P汀购茈y回溯,一般適用成熟的技術(shù)開發(fā)?!冈隽窟^程模型」中有「增量模型」和「RAD模型」,從本質(zhì)上來講,「增量模型」是一種迭代方式運用瀑布模型,「RAD模型」是一種并行的增量模型?!缚焖僭汀故菢?gòu)建一個原型,然后客戶據(jù)此原型提出進一步的需求?!嘎菪竭^程模型」結(jié)合了原型的迭代性質(zhì)和瀑布模型的系統(tǒng)性和可控性,但周期長、成本高。
??綜合各個模型,只有確定項目開發(fā)的性質(zhì),才能合理選擇適合的軟件過程模型,使得軟件開發(fā)正常的進行。