RUP和XP基础
一、RUP(Rational Unified Process)
?
(一)、簡介
?
RUP(Rational Unified Process),統一軟件開發過程,(統一軟件過程)是一個面向對象且基于網絡的程序開發方法論。RUP?吸收了多種開發模型的優點,具有很好的可操作性和實用性。從它一推出市場,憑借Booch、Ivar Jacobson、以及Rumbagh?在業界的領導地位以及與統一建模語言(Unified Model Language ,?以下簡稱UML)的良好集成、多種CASE工具的支持、不斷的升級與維護,迅速得到業界廣泛的認同,越來越多的組織以它作為軟件開發模型框架。
RUP最重要的它有三大特點:1)軟件開發是一個迭代過程,2)軟件開發是由Use Case驅動的,3)軟件開發是以架構設計(Architectural Design)為中心的。
?
(二)、開發過程
?
RUP中的軟件生命周期在時間上被分解為四個順序的階段,分別是:初始階段(Inception)、細化階段(Elaboration)、構造階段(Construction)和交付階段(Transition)。每個階段結束于一個主要的里程碑(Major Milestones);每個階段本質上是兩個里程碑之間的時間跨度。在每個階段的結尾執行一次評估以確定這個階段的目標是否已經滿足。如果評估結果令人滿意的話,可以允許項目進入下一個階段。
?
初始階段
初始階段的目標是為系統建立商業案例并確定項目的邊界。為了達到該目的必須識別所有與系統交互的外部實體,在較高層次上定義交互的特性。本階段具有非常重要的意義,在這個階段中所關注的是整個項目進行中的業務和需求方面的主要風險。對于建立在原有系統基礎上的開發項目來講,初始階段可能很短。初始階段結束時是第一個重要的里程碑:生命周期目標(Lifecycle Objective)里程碑。生命周期目標里程碑評價項目基本的生存能力。
?
細化階段
細化階段的目標是分析問題領域,建立健全的體系結構基礎,編制項目計劃,淘汰項目中最高風險的元素。為了達到該目的,必須在理解整個系統的基礎上,對體系結構作出決策,包括其范圍、主要功能和諸如性能等非功能需求。同時為項目建立支持環境,包括創建開發案例,創建模板、準則并準備工具。細化階段結束時第二個重要的里程碑:生命周期結構(Lifecycle Architecture)里程碑。生命周期結構里程碑為系統的結構建立了管理基準并使項目小組能夠在構建階段中進行衡量。此刻,要檢驗詳細的系統目標和范圍、結構的選擇以及主要風險的解決方案。
?
構造階段
在構建階段,所有剩余的構件和應用程序功能被開發并集成為產品,所有的功能被詳細測試。從某種意義上說,構建階段是一個制造過程,其重點放在管理資源及控制運作以優化成本、進度和質量。構建階段結束時是第三個重要的里程碑:初始功能(Initial Operational)里程碑。初始功能里程碑決定了產品是否可以在測試環境中進行部署。此刻,要確定軟件、環境、用戶是否可以開始系統的運作。此時的產品版本也常被稱為“beta”版。
?
交付階段
交付階段的重點是確保軟件對最終用戶是可用的。交付階段可以跨越幾次迭代,包括為發布做準備的產品測試,基于用戶反饋的少量的調整。在生命周期的這一點上,用戶反饋應主要集中在產品調整,設置、安裝和可用性問題,所有主要的結構問題應該已經在項目生命周期的早期階段解決了。在交付階段的終點是第四個里程碑:產品發布(Product Release)里程碑。此時,要確定目標是否實現,是否應該開始另一個開發周期。在一些情況下這個里程碑可能與下一個周期的初始階段的結束重合。
?
(三)、RUP有九個核心的工作流
?
以下簡單描述這些工作流的目的:
商業建模(Business Modeling):理解待開發系統的組織結構及其商業運作,確保所有參與人員對待開發系統有共同的認識。
需求(Requirements):定義系統功能及用戶界面,使客戶知道系統的功能,開發人員知道系統的需求,為項目預算及計劃提供基礎。
分析和設計(Analysis and Design):把需求分析的結果轉化為實現規格。
實現(Implementation):定義代碼的組織結構、實現代碼、單元測試、系統集成。
測試(Test):校驗各自子系統的交互與集成。確保所有的需求被正確實現并在系統發布前發現錯誤。
部署(Deployment):打包、分發、安裝軟件,升級舊系統;培訓用戶及銷售人員,并提供技術支持。制定并實施beta測試。
配置和變更管理(Configuration and Change Management):跟蹤并維護系統所有產品s的完整性和一致性。
項目管理(Project Management):為計劃、執行和監控軟件開發項目提供可行性的指導;為風險管理提供框架。
環境(Environment):為組織提供過程管理和工具的支持。
?
二、XP(Extreme Programming)
?
(一)、簡介
?
極限編程(Extreme Programming,XP)是一門針對業務和軟件開發的規則,它的作用在于將兩者的力量集中在共同的、可以達到的目標上。它是以符合客戶需要的軟件為目標而產生的一種方法論,XP使開發者能夠更有效的響應客戶的需求變化,哪怕是在軟件生命周期的后期。它強調,軟件開發是人與人合作進行的過程,因此成功的軟件開發過程應該充分利用人的優勢,而弱化人的缺點,突出了人在軟件開發過程中的作用。極端編程屬于輕量級的方法,認為文檔、架構不如直接編程來的直接。
?
(二)、核心價值
?
極限編程中有5個核心價值是我們在開發中必須注意的:溝通(Communication)、簡單(Simplicity)、反饋(Feedback)、尊重(Respect)和勇氣(Courage)。
XP用“溝通、簡單、反饋、尊重和勇氣”來減輕開發壓力和包袱;不管是術語命名、專著敘述內容和方式、進程要求,都可以從中感遭到輕松愉快和主動奮發的態度和藹氛。這是1種幫助理解和更容易激起人的潛力的手段。XP用自己的實踐,在1定范圍內成功地打破了軟件工程“必須重量”才能成功的傳統觀念。
XP精神可以啟發我們如何學習和對待快速變化、多樣的開發技術。成功學習XP的關鍵,是用“溝通、簡單、反饋、尊重和勇氣”的態度來對待XP;輕松愉快地來感受XP的實踐思想;自己認真實踐后,通過對真實反饋的分析,來決定XP對自己的價值;有勇氣接受它,或改進它。
?
(三)、有效實踐
?
1.完全團隊:
XP項目的所有參與者(開發人員、客戶、測試人員等)1起工作在1個開放的場所中,他們是同1個團隊的成員。這個場所的墻壁上隨便懸掛著大幅的、顯著的圖表和其他1些顯示他們進度的東西。
2.計劃游戲:
計劃是延續的、按部就班的。每2周,開發人員就為下2周估算候選特性的本錢,而客戶則根據本錢和商務價值來選擇要實現的特性。
3.客戶測試:
作為選擇每一個所期望的特性的1部份,客戶可以根據腳本語言來定義出自動驗收測試來表明該特性可以工作。
4.簡單設計:
團隊保持設計恰好和當前的系統功能相匹配。它通過了所有的測試,不包括任何重復,表達出了編寫者想表達的所有東西,并且包括盡量少的代碼。
5.結對編程:
所有的產品軟件都是由兩個程序員、并排坐在1起在同1臺機器上構建的。
6.測試驅動開發:
編寫單元測試是1個驗證行動,更是1個設計行動。一樣,它更是1種編寫文檔的行動。編寫單元測試避免了相當數量的反饋循環,特別是功能驗證方面的反饋循環。程序員以非常短的循環周期工作,他們先增加1個失敗的測試,然后使之通過。
7.改進設計:
隨時利用重構方法改進已腐化的代碼,保持代碼盡量的干凈、具有表達力。
8.延續集成:
團隊總是使系統完全地被集成。1個人遷入(Check in)后,其它所有人負責代碼集成。
9.集體代碼所有權:
任何結對的程序員都可以在任什么時候候改進任何代碼。沒有程序員對任何1個特定的模塊或技術單獨負責,每一個人都可以參與任何其它方面的開發。
10.編碼標準:
系統中所有的代碼看起來就好像是被單唯一人編寫的。
11.隱喻:
將全部系統聯系在1起的全局視圖;它是系統的未來影象,是它使得所有單獨模塊的位置和外觀變得明顯直觀。如果模塊的外觀與全部隱喻不符,那末你就知道該模塊是毛病的。
12.可延續的速度:
團隊只有持久才有獲勝的希望。他們以能夠長時間保持的速度努力工作,他們保存精力,他們把項目看做是馬拉松長跑,而不是全速短跑。
?
?
轉載于:https://www.cnblogs.com/xxhhuan/p/7598147.html
總結
- 上一篇: poj2154Color polya定理
- 下一篇: app pay开发遇到的坑