1. 程式人生 > >軟件工程之學習RUP、XP筆記

軟件工程之學習RUP、XP筆記

團隊合作 也不能 部署 編碼 叠代開發 英雄主義 font 捕獲 商業

RUPRational Unified Process)即統一軟件開發過程。它是以面向對象方法為基礎的方法,RUP堅持以用例驅動,以架構為中心,叠代和增量的開發方法。RUP描述了如何有效地利用商業的、可靠的方法開發和部署軟件,是一種重量級過程,因此特別適合於大型團隊開發大型軟件項目。

RUP思維導圖如下:(圖片來自網絡)

技術分享

RUP開發過程:

RUP軟件開發生命周期是一個二維的軟件開發模型。RUP中的軟件生命周期在時間上被分解為四個順序的階段,分別是:

初始階段(Inception:定義最終產品視圖、商業模型並確定系統範圍。

細化階段(Elaboration:設計及確定系統的體系結構,制定工作計劃及資源要求。

構造階段(Construction:構造產品並繼續演進需求、體系結構、計劃直至產品提交。

交付階段(Transition:重點為確保軟件對最終用戶是可用的,確定目標是否完成,是否進行下一個階段?

各個階段與九大核心工作流的關聯如下圖:(圖片來源於百度)

技術分享

RUP學習見解:

在現代大型軟件開發項目中,瀑布模型強調捕獲需求和設計的,但在這種情況下,現實世界的反復無償就顯得瀑布模型有些不切實際了。而RUP中的每個階段可以進一步分解為叠代。一個叠代是一個完整的開發循環,產生一個可執行的產品版本,是最終產品的一個子集,它增量式地發展,從一個叠代過程到另一個叠代過程到成為最終的系統。相比較下來就RUP

對於需求能更好的進行管理,但是也不能就否定了瀑布模型的地位。

在整個軟件發展史中,瀑布模型屬於軟件工程階段的產物,RUP模型屬於軟件過程階段的產物,更加適合現在的大型軟件。

軟件工程階段:不再認為軟件是個人英雄主義的產物;

軟件不只是程序,還應當有需求分析,測試,維護等;

強調程序的可讀性,易修改性,可測試等工程化原則。

軟件過程階段:強調軟件開發的效率,質量,以及軟件開發相關的管理工作。

他們之間最大的區別是因為軟件越發復雜,不可能一次性就能把軟件做的完整,而RUP可以用叠代開發來更好的應對變化,使軟件的實踐更加完整。

極限編程(Extreme Programming--XP)。極限編程是一種輕量級軟件開發方法論,其特點就是簡單、快速、低缺陷率、適應需求變化,是敏捷開發中最著名的方法。

在開發過程中需要註意極限編程的四個核心價值觀:溝通(Communication)、簡單(Simplicity)、反饋(Feedback)、勇氣(Courage),以及後續拓展的第五個價值觀:謙遜(Modesty)。

極限編程的開發流程簡單來說分為七個叠代周期:

秒級叠代--結對編程:由兩個人為一個小組,一個編碼的同時另一個在思考;

分鐘級叠代--自動測試:寫程序之前先寫單元測試,代碼完成後就自動測試;

小時級叠代--結對討論:在開發過程中發現問題可以兩個人及時討論;

每日叠代--每日站會:每天早晨全體人員一起站著開個短會;

數日叠代--驗收測試:客戶對每個需求都定義了一些驗收測試。通過運行驗收測試,開發人員和客戶可以知道開發出來的軟件是否符合要求;

一周叠代--叠代計劃:在一個Release過程中,開發人員要求客戶選擇最有價值的UserStory作為未來一兩個星期的開發內容。

季度叠代--發布計劃:客戶闡述需求,開發人員估算開發成本和風險。客戶根據開發成本、風險和每個需求的重要性,制訂一個大致的項目計劃。

XP不做過多長遠規劃,只要保證每一天、每分每秒都在做最重要、最有價值的事情即可,至於項目是否繼續由客戶和管理層決定。

XP要求項目團隊遵循13個核心實踐,如下圖(來自網絡):

技術分享

XP學習見解:

XP方法適合於2-10人的小型開發,客戶也作為項目組的成員參與其中,便於需求以及功能的確認。

XP的一個成功因素是重視客戶的反饋——開發的目的就是為了滿足客戶的需要。XP方法使開發人員始終都能自信地面對客戶需求的變化。XP強調團隊合作,經理、客戶和開發人員都是開發團隊中的一員。團隊通過相互之間的充分交流和合作,使用XP這種簡單但有效的方式,努力開發出高質量的軟件。XP的設計簡單而高效;程序員們通過測試獲得客戶反饋,並根據變化修改代碼和設計,他們總是爭取盡可能早地將軟件交付給客戶。XP程序員能夠勇於面對需求和技術上的變化。

XP很象一個由很多小塊拼起來的智力拼圖,單獨看每一小塊都沒有什麽意義,但拼裝好後,一幅美麗的圖畫就會呈現在你面前。

軟件工程之學習RUP、XP筆記