4.1.3 敏捷方法
1、敏捷方法的特點(diǎn)
敏捷方法是“適應(yīng)性”而非“預(yù)設(shè)性”的,重型方法在計(jì)劃制定完成后拒絕變化,而敏捷方法則歡迎變化。
“面向人的”而非“面向過程的”
傳統(tǒng)的軟件開發(fā)方法的基本思路一般是 只要圖紙?jiān)O(shè)計(jì)得合理并考慮充分,施工隊(duì)伍可以完全遵照?qǐng)D紙順利構(gòu)造。
但是,一些設(shè)計(jì)錯(cuò)誤只能在編碼和測(cè)試時(shí)才能發(fā)現(xiàn)。
傳統(tǒng)正規(guī)開發(fā)方法是 個(gè)體不重要,角色才是重要的,盡量減少人的因素對(duì)開發(fā)過程的影響,但是敏捷方法正好相反。
管理人員已經(jīng)脫離實(shí)際開發(fā)活動(dòng)相當(dāng)長(zhǎng)的時(shí)間了,如此設(shè)計(jì)出來的開發(fā)過程是難以為開發(fā)人員所接受的。
只有在第一線的開發(fā)人員才能真正掌握和理解開發(fā)過程中的技術(shù)細(xì)節(jié),所以技術(shù)方面的決定必須由他們來做出。
敏捷方法特別強(qiáng)調(diào) 相關(guān)人員之間的信息交流。因?yàn)轫?xiàng)目失敗的原因最終都可以追溯到信息沒有及時(shí)準(zhǔn)確地傳遞到應(yīng)該接受它的人。
特別提倡直接的面對(duì)面交流,交流成本遠(yuǎn)遠(yuǎn)低于文檔的交流。
按照高內(nèi)聚、松散耦合的原則 將項(xiàng)目劃分為若干個(gè)小組,以增加溝通。
2、敏捷方法的核心思想
1.適應(yīng)性型,利用變化來發(fā)展。
2.以人為本,在無過程控制和過于嚴(yán)格繁瑣的過程控制中取得一種平衡,以保證軟件的質(zhì)量。
3.迭代增量式的開發(fā)過程,發(fā)行版本小型化,根據(jù)客戶需求的 優(yōu)先級(jí)和開發(fā)風(fēng)險(xiǎn),制訂版本發(fā)行計(jì)劃。
3、敏捷方法的含義及其特征
重型方法注重開發(fā)文檔的完備和充分性;而敏捷方法認(rèn)為最根本的文檔應(yīng)該是源碼。
4、敏捷方法的適用范圍
實(shí)際上,滿足工程設(shè)計(jì)標(biāo)準(zhǔn)的唯一文檔是源代碼清單。
敏捷方法比較適合需求變化比較大 或者 開發(fā)前期對(duì)需求不是很清晰的項(xiàng)目。
敏捷方法對(duì)設(shè)計(jì)者、開發(fā)者、客戶 之間的有效溝通和及時(shí)反饋要求比較高,不易在開發(fā)團(tuán)隊(duì)比較龐大的項(xiàng)目中實(shí)施。
5、敏捷方法的主要內(nèi)容
四個(gè)核心價(jià)值觀:溝通、簡(jiǎn)單、反饋、勇氣。
簡(jiǎn)單:只要滿足當(dāng)前功能需求,不做假象設(shè)計(jì)。
勇氣:用于抉擇,用于實(shí)踐,用于重構(gòu)。
12條實(shí)踐規(guī)則:簡(jiǎn)單設(shè)計(jì)、測(cè)試驅(qū)動(dòng)、代碼重構(gòu)、結(jié)對(duì)編程、繼續(xù)集成、現(xiàn)場(chǎng)客戶、開發(fā)版本小型化、系統(tǒng)隱喻、代碼集體所有制、規(guī)劃策略、規(guī)范代碼、40小時(shí)工作機(jī)制。
6、主要敏捷方法簡(jiǎn)介
極限編程
水晶系列方法
開放式源碼,任何人發(fā)現(xiàn)Bug都可以將補(bǔ)丁發(fā)給維護(hù)者。
SCRUM
Coad的功用驅(qū)動(dòng)開發(fā)方法:短時(shí)迭代階段 和 可見可用的功能,一個(gè)迭代周期一般為兩周,編程人員分為 類程序員、首席程序員。
ASD方法,猜測(cè)、合作、學(xué)習(xí)。
4.1.4 RUP
RUP把軟件開發(fā)生命周期劃分為多個(gè)循環(huán)(cycle),每個(gè)cycle生成產(chǎn)品的一個(gè)新版本,每個(gè)cycle依次由4個(gè)連續(xù)階段(phase)組成:
初始:定義最終產(chǎn)品視圖和業(yè)務(wù)模型,并確定系統(tǒng)范圍。
細(xì)化:制定工作計(jì)劃及資源要求。
構(gòu)造。
移交。
迭代并不是重復(fù)地做相同的事,而是針對(duì)不同用例細(xì)化和實(shí)現(xiàn),每一個(gè)迭代都是一個(gè)完整的開發(fā)過程。
每個(gè)階段結(jié)束前有一個(gè)里程碑(milestone)評(píng)估該階段的工作。如果未能通過該里程碑的評(píng)估,則決策者應(yīng)該做出決定,是取消該項(xiàng)目還是繼續(xù)做該階段的工作。
RUP中的核心概念
角色(Role),who的問題,某個(gè)人或一個(gè)小組的行為與職責(zé)。
活動(dòng)(Activity),how的問題,是一個(gè)有明確目的的獨(dú)立工作單元。
制品(Artifact),what的問題,是活動(dòng)生成、創(chuàng)建、修改 第一段信息。
工作流(Workflow),when的問題,每個(gè)工作流產(chǎn)生一些有價(jià)值的產(chǎn)品,并顯示了角色之間的關(guān)系。
RUP的特點(diǎn)
RUP是用例驅(qū)動(dòng)的、以體系結(jié)構(gòu)為中心的、迭代和增量的軟件開發(fā)過程。
用例驅(qū)動(dòng):需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試,都是用例驅(qū)動(dòng)的。
以體系結(jié)構(gòu)為中心:刻畫了系統(tǒng)的整體設(shè)計(jì),去掉了細(xì)節(jié)部分,突出了系統(tǒng)的重要特征。
不依賴于具體語言,是軟件設(shè)計(jì)過程的一個(gè)層次。
體系結(jié)構(gòu)層次的設(shè)計(jì)問題包括:總體組織和全局控制、通訊協(xié)議、同步、數(shù)據(jù)存取、給設(shè)計(jì)元素分配特定功能、設(shè)計(jì)元素的組織、物理分布、系統(tǒng)的伸縮性、性能 等。
一個(gè)系統(tǒng)不可能在所有特性上都達(dá)到最優(yōu),對(duì)于一個(gè)系統(tǒng),不同人員所關(guān)心的內(nèi)容也是不一樣的,對(duì)于不同類型的人員,只需提供這類人員關(guān)心的視圖即可。
分析和測(cè)試人員關(guān)心用例圖,最終用戶關(guān)心邏輯視圖,程序員關(guān)心實(shí)現(xiàn)視圖,系統(tǒng)工程師關(guān)心部署視圖。
RUB強(qiáng)調(diào)采用迭代和增量的方法來開發(fā)軟件,每次迭代中,之考慮系統(tǒng)的一部分需求,每次增加一些新的功能實(shí)現(xiàn)。
好處:
早期就可以對(duì)關(guān)鍵的、影響大的風(fēng)險(xiǎn)進(jìn)行處理。
可以提出一個(gè)軟件體系結(jié)構(gòu)來指導(dǎo)開發(fā)。
處理不可避免的需求變更。
可以較早地得到一個(gè)可運(yùn)行的系統(tǒng),鼓舞開發(fā)團(tuán)隊(duì)的士氣,增強(qiáng)項(xiàng)目成功的信心。
更有效工作的開發(fā)過程。
沒有一個(gè)項(xiàng)目會(huì)使用RUP中所有的東西,用用RUP時(shí)要裁剪,裁剪步驟:
1.確定本項(xiàng)目 需要哪些工作流。
2.確定每個(gè)工作流要產(chǎn)出哪些制品。
3.確定四個(gè)階段之間(初始階段、細(xì)化階段、構(gòu)造階段、移交階段)如何演進(jìn)。
4.確定每個(gè)階段內(nèi)迭代計(jì)劃。
5.規(guī)劃工作流內(nèi)部結(jié)構(gòu)。
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |