1. 程式人生 > >軟體工程與軟體開發模型、軟體開發方法

軟體工程與軟體開發模型、軟體開發方法

什麼是軟體工程?

    軟體工程一直以來都缺乏一個統一的定義。

    IEEE給出的定義是:軟體工程是:1.將系統化的、嚴格約束的、可質量化的方法應用於軟體的開發、執行和維護,即將工程化應用於軟體;2.在1中所述方法的研究。

比較認可的一種定義是:軟體工程是研究和應用如何以系統性的、規範化的、可定量的過程化方法去開發和維護軟體,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。

什麼是軟體開發方法(或軟體開發過程)?

    軟體開發方法找不到統一的定義,但是我們說極限程式設計(ExtremeProgramming,簡稱XP)、水晶(Crystal)方法、動態系統開發方法(DSDM)、Scrum、基於體系結構的軟體開發、自適應軟體開發(ASD)都是一種軟體開發方法。這些方法都涉及了整個軟體生命週期,都有相應的原則和方法論。

    所以可以將軟體開發方法定義為:一套應用於整個軟體生命週期的方法論,它對軟體生命週期(三個階段:軟體定義、軟體開發、軟體執行與維護)的活動作出了具體的描述和表示。軟體開發方法應該是軟體工程的一個產物或者說是軟體工程的具體方法的集合。

什麼是軟體開發模型?

    軟體開發模型是軟體開發實際過程的抽象與概括,它包括構成軟體過程的各種活動,是對軟體開發過程各階段之間關係的一個描述、約束和表示。軟體開發模型為軟體開發過程提供原則和方法,為軟體工程管理提供里程碑和進度表。

    我們常見的軟體開發基本模型有:瀑布模型(傳統瀑布模型、迭代的瀑布模型、V模型)、原型模型(快速原型模型、演化模型或原型進化模型)、增量模型、螺旋模型、迭代模型等。

    另外還有一些其他模型,例如:噴泉模型、敏捷模型、基於體系結構的開發模型,基於可重用構件的模型、基於面向物件的模型、基於第四代技術的模型、快速應用開發(RAD)模型等。這些模型都可以歸結為基本模型中的一類,例如噴泉模型就是迭代模型的一種,敏捷模型是演化模型的一種,基於體系結構的開發模型是迭代模型的一種,基於可重用構件的模型只是強調了可重用元件在開發過程中的應用,開發過程可以是基本模型中的任何一種,基於面向物件的模型是面向物件技術在基本模型中的應用,快速應用開發(RAD)模型是增量模型的一種。

    軟體開發模型可以做以下歸類:(沒有任何參考,個人總結)

序號

基本模型

擴充套件模型

基本特徵

1

瀑布模型

傳統瀑布模型、迭代的瀑布模型、V模型

各個階段的劃分完全固定,階段之間產生大量的文件,適用於需求明確的工程專案

2

原型模型

快速原型模型、演化模型或原型進化模型、敏捷模型

快速構建原型,頻繁與客戶溝通,開發階段不斷迭代,適用於需求不明確、變化快的工程專案

3

增量模型

快速應用開發(RAD)模型

整體上按照瀑布模型的流程實施,實際建立中將軟體系統按功能分解為許多增量構件,適用於需求明確且可模組化的工程專案

4

螺旋模型

 

引入風險分析,每一個週期都包括需求定義、風險分析、工程實現和評審4個階段,週期性迭代,適用於龐大、複雜並具有高風險的工程專案

5

迭代模型

噴泉模型、基於體系結構的開發模型

各個開發階段基本固定,各階段內部迭代、階段之間迭代、整個流程迭代(演化),有明確的里程碑

 

軟體開發方法與軟體開發模型的關係?(沒有任何參考,個人總結)

    軟體開發方法是軟體開發模型的實際運用,是開發方法在軟體開發實際過程的詳細描述和具體規約。每個軟體開發方法中都含有相應的軟體開發模型,在軟體開發方法中總能找到對應的基本開發模型。每個軟體開發方法都有自己的側重點、價值目標、規範和流程,直接面向適用的開發團隊,甚至約束到人員職責、工作時間和協作內容。

    例如敏捷開發中的極限程式設計,可以對應到演化模型(原型進化模型),適合小型開發團隊。它對團隊的參與者作出了規定,強調從簡單做起、尋求反饋、勇於實事求是,主要目標在於降低因需求變更而帶來的成本。極限程式設計技術以溝通、簡單、反饋、勇氣和尊重為價值標準,提倡團隊協作和結對程式設計,每週40小時工作制。

    後面軟體開發方法的討論都從相應的開發模型入手,以軟體開發週期為基線展開,最後討論該方法的特徵、適用的團隊。通過討論理清利用該方法組織開發的流程及其注意事項。