csdn c++學習小組 張進昌 杜萬智 王鍇
一.軟體開發模型
a.軟體開發模型包括的範圍及作用
軟體開發模型(software development model)是指軟體開發全部過程、活動和任務的結構框架。軟體開發包括需求、設計、編碼和測試等階段,有時也包括維護階段。
軟體開發模型能清晰、直觀地表達軟體開發全過程,明確規定了要完成的主要活動和任務,用來作為軟體專案工作的基礎。
b.典型開發模型的應用及優缺點
典型的開發模型有:
1. 邊做邊改模型(build-and-fix model)
許多產品都是使用"邊做邊改"模型來開發的,沒有規格說明,也沒有經過設計,軟體隨著客戶的需要一次又一次地不斷被修改,知道客戶滿意為止。
2. 瀑布模型(wate***ll model)
瀑布模型將軟體生命週期劃分為制定計畫、需求分析、軟體設計、程式編寫、軟體測試和執行維護等六個基本活動,並且規定了它們自上而下、相互銜接的固定次序,逐級下落。當前活動的工作結果需要進行驗證,如果驗證通過,則該結果作為下一項活動的輸入,繼續進行下一項活動,否則返回修改。
3. 快速原型模型(rapid prototype model)
快速原型的關鍵在於盡可能快速地建造出軟體原型,一旦確定了客戶的真正需求,所建造的原型將被丟棄。因此,原型系統的內部結構並不重要,重要的是必須迅速建立原型,隨之迅速修改原型,以反映客戶的需求。
4. 增量模型(incremental model)
增量模型在各個階段並不交付乙個可執行的完整產品,而是交付滿足客戶需求的乙個子集的可執行產品。整個產品被分解成若干個構件,開發人員逐個構件地交付產品,這樣做的好處是軟體開發可以較好地適應變化,客戶可以不斷地看到所開發的軟體,從而降低開發風險。 5.
螺旋模型(spiral model)
將瀑布模型和快速原型模型結合起來,強調了其他模型所忽視的風險分析,特別適合於大型複雜的系統。
螺旋模型沿著螺線進行若干次迭代,每次迭代包括以下活動:
(1) 制定計畫:確定軟體目標,選定實施方案,弄清專案開發的限制條件;
(2) 風險分析:分析評估所選方案,考慮如何識別和消除風險;
(3) 實施工程:實施軟體開發和驗證;
(4) 客戶評估:評價開發工作,提出修正建議,制定下一步計畫。 6.
演化模型(incremental model)
主要針對事先不能完整定義需求的軟體開發。使用者可以給出待開發系統的核心需求,軟體開發人員根據使用者的需求,首先開發核心系統。當該核心系統投入執行後,軟體開發人員根據使用者的反饋,實施開發的迭代過程。第一迭代過程均由需求、設計、編碼、測試、整合等階段組成,為整個系統增加乙個可定義的、可管理的子集。 7.
噴泉模型(fountain model, (物件導向的生存期模型, oo模型))
噴泉模型與傳統的結構化生存期比較,具有更多的增量和迭代性質,生存期的各個階段可以相互重疊和多次反覆,而且在專案的整個生存期中還可以嵌入子生存期。就像水噴上去又可以落下來,可以落在中間,也可以落在最底部。 8.
智慧型模型(四代技術(4gl))
智慧型模型擁有一組工具(如資料查詢、報表生成、資料處理、螢幕定義、**生成、高層圖形功能及電子**等),每個工具都能使開發人員在高層次上定義軟體的某些特性,並把開發人員定義的這些軟體自動地生成為源**。目前主要限於事務資訊系統的中、小型應用程式的開發。 9.
混合模型(hybrid model)
過程開發模型又叫混合模型(hybrid model),或元模型(meta-model),把幾種不同模型組合成一種混合模型,它允許乙個專案能沿著最有效的路徑發展,這就是過程開發模型(或混合模型)。 10
.統一軟體過程rup模型
整個軟體開發時間被分解為四個順序的階段,分別是:
初始階段 b細化階段 c構造階段 d交付階段 a
初始階段的目標是為系統建立商業案例並確定專案的邊界。
細化階段的目標是分析問題領域,建立健全的體系結構基礎,編制專案計畫,淘汰專案中最高風險的元素。
c在構建階段,所有剩餘的構件和應用程式功能被開發並集成為產品,所有的功能被詳細測試。
d交付階段的重點是確保軟體對終端使用者是可用的。
11. 極限程式設計 敏捷
開發模型
極限程式設計誕生於一種加強開發者與使用者的溝通需求,讓客戶全面參與軟體的開發設計,保證變化的需求及時得到修正。核心是先給客戶乙個軟體未來的模型,測試使用者滿意度,再進行軟體開發。
敏捷就是「快」,快才可以適應目前社會的快節奏;要快就要發揮個人的個性思維多一些,個性思維的增多,雖然通過結隊程式設計、**共有、團隊替補等方式減少個人對軟體的影響力,但也會造成軟體開發繼承性的下降,因此敏捷開發是乙個新的思路,但不是軟體開發的終極選擇。對於長時間、人數眾多的大型軟體應用的開發,文件的管理與銜接作用還是不可替代的。
各種模型的比較
每個軟體開發組織應該選擇適合於該組織的軟體開發模型,並且應該隨著當前正在開發的特定產品特性而變化,以減小所選模型的缺點,充分利用其優點。 模型
優點 缺點
瀑布模型
文件驅動
系統可能不滿足客戶的需求,文件處理工作量大
快速原型模型
關注滿足客戶需求
可能導致系統設計差、效率低,難於維護
增量模型
開發早期反饋及時,易於維護
需要開放式體系結構,可能會設計差、效率低
螺旋模型
風險驅動
風險分析人員需要有經驗且經過充分訓練
統一軟體過程rup模型
簡潔和清晰的過程結構,為開發提供較大的通用性。
只是乙個開發過程,並沒有涵蓋軟體過程的全部內容
敏捷軟體開發模型
速度快效率高
個性思維的增多導致軟體開發繼承性下降
二.軟體開發團隊模型
有效的軟體專案團隊由擔當各種角色的人員所組成。每位成員扮演乙個或多個角色;可能乙個人專門負責專案管理,而另一些人則積極地參與系統的設計與實現。常見的一些專案角色包括:
· 分析師
· 策劃師
· 資料庫管理員
· 設計師
· 操作/支援工程師
· 程式設計師
· 專案經理
· 專案贊助者
· 質量保證工程師
· 需求分析師
· 主題專家(使用者)
· 測試人員
a.按團隊組成分
l垂直團隊組織
以垂直方案組織的團隊由多面手組成,每個成員都充當多重角色。以水平方案組織的團隊由專家組成,每個成員充當一到兩個角色。以混合方案組織的團隊既包括多面手,又包括專家。
l水平團隊組織
水平團隊由專家組成。此類團隊同時處理多個用例,每個成員都從事用例中有關其自身的方面。
l混合團隊組織
混合團隊由專家和多面手共同組成。多面手繼續操作乙個用例的整個開發過程,支援並處理多個使用例中各部分的專家們一起工作。
b.按團隊目標分:
通常有4種型別的專案小組(團隊),每一種都有其特殊的要求和目標。4種團隊分別是:
l 戰術型團隊:其工作是做某件事情,關鍵是遵循計畫,需要良好定義的規劃和過程;
l 問題解決型團隊:其工作是去定位某事情,關鍵是解決問題,需要已經定義好的規則和信任;
l 創新型團隊:其工作是去創造某事情,關鍵是創造新事物,需要自由,不受約束;
l 學習型團隊:其工作是去學習某事情,關鍵是構建可理解的模型,需要一致的、共享的模型。(是研究型組織)。
團隊與軟體開發模型
學習程式設計,首先關注到團隊與軟體開發過程,這是因為,對於軟體開發而言,其三要素是團隊 人 過程 技術 工具。軟體開發是乙個智力遊戲,建立在溝通與協作的基礎之上 技術和工具,只是其因素之一。所以,同學在學校中所體驗到的,多是技術和工具的應用,而對於團隊和過程,大家則是通過閱讀些軟體工程的材料去了解。...
小團隊軟體開發
軟體開發是自己的本行,這裡談談對乙個小團隊開發軟體的幾點思考 1 每個開發人員要對所要開發的東西在開發之前就要有一定的了解,最好是在開始的時候就把需求問的詳細一些,不要對著乙個全是文字的東西談需求,最好用圖形來互動,做軟體的都有個體會,往往到自己把介面做的差不多了,給使用者一看,使用者馬上就補充了一...
高效軟體開發團隊
高效的軟體開發團隊是建立在合理的開發流程及團隊成員密切的合作的基礎之上的,成員共同的迎接挑戰 有效的計畫 協調和管理各自的工作以至完成明確的目標,高效的開發團隊具有如下特徵 1 具有明確且有挑戰性的共同目標 乙個具有明確的而且有挑戰性目標的團隊比目標不明確或不具有很大的挑戰性目標的團隊效率高得多,通...