軟體開發過程

軟體開發過程(英語:software development process),或軟體過程(英語:software process),是軟體開發的開發生命周期(software development life cycle),其各個階段實現了軟體的需求定義與分析、設計、實現、測試、交付和維護。軟體過程是在開發與構建系統時應遵循的步驟,是軟體開發的路線圖。

簡介

軟體過程方法涉及交付(deliverables)和工件(artifacts)的預定義、軟體產品在項目團隊中的開發與維護。過程方法的套用可以完善軟體設計、產品管理和項目管理。敏捷開發是現代軟體開發中被廣泛使用的範式。過程模型(英語:process models)則意圖解決軟體過程中的混亂,將軟體開發過程中的溝通、計畫、建模、構建和部署等活動(activities)有效地組織了起來。

軟體過程為軟體的開發定義了一個框架,將自動化工具、軟體開發方法和質量管理緊密結合在了一起。軟體過程構成了軟體項目管理控制的基礎,創建了一個環境以便於技術方法的採用、工作產品(模型、文檔、報告、表格等)的產生、里程碑(milestones)的創建、質量的保證、正常變更的正確管理。

歷史

軟體開發方法(英語:software development methodology, SDM)框架在20世紀60年代開始出現。在信息系統的構建中,系統開發生命周期(SDLC)可被視作最早的形式化方法。SDLC的主要想法是,在採用框架時應當“以審慎、結構化和方法化的方式開發信息系統。生命周期中的每個階段,從概念提出到系統交付,都應當嚴格、依次地進行”。當時的軟體開發目標是,“在大型商業集團中開發大規模的功能性商業系統,系統需要承載大量數據處理和數據運算任務”。

方法、過程和框架覆蓋範圍甚廣,包含從日常開發的步驟到為特定項目量身定製的靈活框架。一些情況下,組織會正式發布描述過程的文檔。

軟體開發方法歷史中的重要事件有:

•1969年,結構化編程

•1980年,結構化系統分析與設計方法(Structured Systems Analysis and Design Method, SSADM)

•面向對象程式設計,起步於1960年代,1990年代中期成為一種主流方法

•1991年,快速應用程式開發

•1995年,Scrum

•1998年,團隊軟體過程

•1998年,由IBM維護的統一軟體開發過程

•1999年,極限編程

•2005年,敏捷統一過程(Agile Unified Process, AUP)

•2010年代,基於大規模的敏捷框架(Scaled Agile Framework, SAFe)

•2010年代,大規模Scrum(Large-Scale Scrum, LeSS)

實踐

在軟體工程領域, 項目生命周期刻畫了一個工程從起始到完成,是如何進行計畫、控制和監控的模型。在項目生命周期的早期和後期,軟體架構、需求和系統定義是一個問題:

系統/軟體的市場是什麼?

競爭對手有哪些?

系統/軟體的運行平台是什麼?

這個項目可用的時間有多少?

項目需要是什麼?

1.

系統/軟體的市場是什麼?

2.

競爭對手有哪些?

3.

系統/軟體的運行平台是什麼?

4.

這個項目可用的時間有多少?

5.

項目需要是什麼?

經過這些年,從最早也最簡單的瀑布模型開始,已經開發出了許多不同的模型。但是,隨著軟體變得更大和更複雜,這種開發方法已經出現負面影響,尤其是牽扯到有大型團隊的時候。疊代的模型得到了發展,它包括原型法、演化原型法、增量開發、螺旋模型、V模型和混沌模型。

這些模型的使用大部分都局限於項目的總體管理,但是現在認為,如果在項目的單獨部分都由最合適的模型控制,則這個項目受到了更好的控制。例如,一個項目用增量開發模型,但是在每一個增量過程,文檔是按照瀑布模型創建和管理,而代碼開發使用V模型管理。

每個項目的生命周期的正規性和複雜性受到很多因素的制約,包括預算約束,經驗,項目規模和複雜度,開發隊伍。

敏捷軟體開發

敏捷軟體開發(英語:Agile software development),又稱 敏捷開發,是一種從1990年代開始逐漸引起廣泛關注的一些新型軟體開發方法,是一種應對快速變化的需求的一種軟體開發能力。它們的具體名稱、理念、過程、術語都不盡相同,相對於“非敏捷”,更強調程式設計師團隊與業務專家之間的緊密協作、面對面的溝通(認為比書面的文檔更有效)、頻繁交付新的軟體版本、緊湊而自我組織型的團隊、能夠很好地適應需求變化的代碼編寫和團隊組織方法,也更注重軟體開發過程中人的作用。

敏捷軟體開發(或稱快速程式開發RAD)描述了一套軟體開發的價值和原則,在這些開發中,需求和解決方案皆通過自組織跨功能團隊達成。敏捷軟體開發主張適度的項目、進化開發、提前交付與持續改進,並且鼓勵快速與靈活的面對開發與變更。這些原則支持許多軟體開發方法的定義和持續進化。

相關詞條

相關搜尋

熱門詞條

聯絡我們