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