軟件開(kāi)發(fā)的新方法NewMethodology_第1頁(yè)
軟件開(kāi)發(fā)的新方法NewMethodology_第2頁(yè)
軟件開(kāi)發(fā)的新方法NewMethodology_第3頁(yè)
軟件開(kāi)發(fā)的新方法NewMethodology_第4頁(yè)
軟件開(kāi)發(fā)的新方法NewMethodology_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、軟件開(kāi)發(fā)的新方法(New Methodology)Agile方法1主要內(nèi)容概述Agile方法的核心理念及特點(diǎn)Agile與CMMAgile具體方法XP,SCRUM結(jié)束語(yǔ)2概 述 軟件開(kāi)發(fā)的新挑戰(zhàn)互聯(lián)網(wǎng)的迅猛發(fā)展和經(jīng)濟(jì)全球化 快速的市場(chǎng)進(jìn)入時(shí)間快速變化的需求快速發(fā)展的技術(shù)3概 述 傳統(tǒng)的軟件開(kāi)發(fā)方法強(qiáng)調(diào)過(guò)程強(qiáng)調(diào)文檔開(kāi)發(fā)人員負(fù)擔(dān)過(guò)重重載(Heavyweight)方法4概述Agile方法的產(chǎn)生針對(duì)上述問(wèn)題,產(chǎn)生了一系列輕載(Lightweight)方法,如XP,SCRUM等。2001年2月,新方法的一些創(chuàng)始人在美國(guó)猶他州成立Agile 聯(lián)盟( )LightweightAgile5概述Agile方法的含

2、義Agile方法是在保證軟件開(kāi)發(fā)有成功產(chǎn)出的前提下,盡量減少開(kāi)發(fā)過(guò)程中的活動(dòng)和制品的方法?;\統(tǒng)的講就是,“剛剛好”(Just enough),即開(kāi)發(fā)中的活動(dòng)及制品既不要太多也不要太少。 6概述 Agile方法的實(shí)踐效果我預(yù)言XP對(duì)當(dāng)今時(shí)代的作用可與CMM在八十年代和九十年代初的作用相媲美 - Tom DeMarco, Cutter Trends Report新方法在實(shí)踐中取得了巨大的成功 IONA公司的Obix技術(shù)支持小組在采用了XP方法后,軟件生產(chǎn)率提高了67% SPG( software productivity group) 的Capers Jones則稱,SCRUM方法可提高生產(chǎn)率6倍

3、7Agile方法的核心理念基于適應(yīng)而非預(yù)測(cè) 以人為導(dǎo)向而非過(guò)程導(dǎo)向 -Martin Fowler “New Methodology”8Agile方法的核心理念及特點(diǎn)適應(yīng)而非預(yù)測(cè)開(kāi)始計(jì)劃的結(jié)果實(shí)際需要的結(jié)果需求不可預(yù)測(cè)-Peter Wegner用數(shù)學(xué)的方法給出了嚴(yán)格的證明按計(jì)劃的過(guò)程基于適應(yīng)的過(guò)程理論上來(lái)說(shuō),軟件開(kāi)發(fā)應(yīng)是一個(gè)自適應(yīng)的跟蹤過(guò)程 9Agile方法的核心理念及特點(diǎn)適應(yīng)而非預(yù)測(cè)自適應(yīng)系統(tǒng)是一個(gè)強(qiáng)反饋系統(tǒng) 在軟件開(kāi)發(fā)中,需求的獲取和分析、軟件設(shè)計(jì)、編碼等實(shí)質(zhì)上均為前饋環(huán)節(jié),真正的反饋環(huán)節(jié)應(yīng)該是用戶對(duì)可運(yùn)行軟件的使用、使用中的判斷及判斷后與開(kāi)發(fā)人員的信息交流。反饋和前饋這一回路的響應(yīng)速度應(yīng)大

4、于被跟蹤(或被適應(yīng))的系統(tǒng)的變化速度,這就要求軟件開(kāi)發(fā)有快速的產(chǎn)出能力 。10Agile方法的核心理念及特點(diǎn)適應(yīng)而非預(yù)測(cè)特點(diǎn) Agile方法通過(guò)快速、短迭代式的開(kāi)發(fā),不斷產(chǎn)出和演化可運(yùn)行軟件,根據(jù)用戶的反饋信息作適應(yīng)性調(diào)整,然后進(jìn)入下一輪快速短迭代式開(kāi)發(fā)。11軟件開(kāi)發(fā)中,人的因素是第一位的 Agile方法的核心理念及特點(diǎn)以人為導(dǎo)向而非過(guò)程導(dǎo)向 人是過(guò)程的主體,而人的工作承受力是有限的軟件開(kāi)發(fā)中的大部分是需要?jiǎng)?chuàng)造力的設(shè)計(jì)工作,軟件人員是創(chuàng)造性的工作者軟件人員有主觀上做好工作的意愿軟件開(kāi)發(fā)的目的是為人提供方便,應(yīng)首先著眼于有用的可執(zhí)行的軟件,也就是首先考慮商務(wù)目標(biāo),而不是為過(guò)程而過(guò)程12Agile

5、方法的核心理念及特點(diǎn)以人為導(dǎo)向而非過(guò)程導(dǎo)向 強(qiáng)調(diào)軟件開(kāi)發(fā)中相關(guān)人員間信息交流 軟件開(kāi)發(fā)中的中間過(guò)程和制品(文檔),追根究底其目的是為了交流項(xiàng)目失敗的原因最終都可追溯到某個(gè)信息沒(méi)有及時(shí)準(zhǔn)確地傳遞到應(yīng)該接收它的人 -Alistir Cockburn人特別擅長(zhǎng)面對(duì)面的交流,面對(duì)面交流的成本要遠(yuǎn)遠(yuǎn)低于文檔交流的成本 - Alistir cockburn13Agile方法的核心理念及特點(diǎn) Agile方法的一個(gè)共同特點(diǎn): 努力營(yíng)造誠(chéng)信、開(kāi)放的組織氛圍,根據(jù)項(xiàng)目中信息流通的具體情況,按高內(nèi)聚、松耦合的原則,將項(xiàng)目組劃分為若干個(gè)小組(每個(gè)小組以不超過(guò)10人為宜,組員均在一個(gè)工作間內(nèi)工作),通過(guò)小組內(nèi)各種渠道的

6、溝通,來(lái)減少中間制品的工作負(fù)擔(dān),提高應(yīng)變能力。 以人為導(dǎo)向而非過(guò)程導(dǎo)向 14任何軟件開(kāi)發(fā)方法都有一個(gè)相應(yīng)的價(jià)值系統(tǒng)(Value system),方法通過(guò)價(jià)值系統(tǒng)對(duì)過(guò)程予以指導(dǎo),方法只有在其應(yīng)用周境(context)與價(jià)值系統(tǒng)相吻合時(shí)才能發(fā)揮真正效力Agile聯(lián)盟提出了“四個(gè)價(jià)值”、“十二個(gè)指導(dǎo)原則” Agile方法的核心理念及特點(diǎn)Agile方法的價(jià)值系統(tǒng)和指導(dǎo)原則15Agile方法的核心理念及特點(diǎn)Agile方法的價(jià)值系統(tǒng)較之于過(guò)程和工具,更注重人及其相互作用的價(jià)值較之于無(wú)所不及的各類文檔,更注重可運(yùn)行的軟件的價(jià)值較之于合同談判,更注重與客戶合作的價(jià)值較之于按計(jì)劃行事,更注重適應(yīng)需求變化的價(jià)值1

7、6(1)在快速不斷地交付用戶可運(yùn)行軟件的過(guò)程中,將使用戶滿意放在第一位(2)以積極的態(tài)度對(duì)待需求的變化(不管該變化出現(xiàn)在開(kāi)發(fā)早期還是后期)(3)以幾周到幾個(gè)月為周期,盡快、不斷地交付可運(yùn)行的軟件供用戶使用 (4)在項(xiàng)目過(guò)程中,業(yè)務(wù)人員和開(kāi)發(fā)人員最好能一起工作(5)以積極向上的員工為中心建立項(xiàng)目組,給予他們所需的環(huán)境和支持,對(duì)他們的工作予以充分的信任(6) 在項(xiàng)目組中,最有用、最有效的信息溝通手段是面對(duì)面的交談Agile方法的核心理念及特點(diǎn)Agile方法的指導(dǎo)原則17 Agile方法的核心理念及特點(diǎn) Agile方法的指導(dǎo)原則(7)測(cè)量項(xiàng)目進(jìn)展的首要依據(jù)是可運(yùn)行的軟件(8) Agile過(guò)程高度重視

8、可持續(xù)開(kāi)發(fā) 項(xiàng)目發(fā)起者、開(kāi)發(fā)者和用戶應(yīng)能始終保持步調(diào)一致(9) 應(yīng)時(shí)刻關(guān)注技術(shù)上的精益求精和設(shè)計(jì)的合理,這樣能提高軟件的快速應(yīng)變力(10)簡(jiǎn)單化(盡可能減少不必要工作的藝術(shù))(11)最好的框架結(jié)構(gòu)、需求和設(shè)計(jì)產(chǎn)生于自組織的項(xiàng)目組(12)項(xiàng)目組要定期對(duì)其運(yùn)作情況進(jìn)行反思,提出改進(jìn)意見(jiàn),并進(jìn)行相應(yīng)的微調(diào)18Agile方法的核心理念及特點(diǎn)Agile方法的適用范圍 Martin Fowler認(rèn)為:新方法不是到處可適用的適合采用Agile方法的情況:l需求不確定、易揮發(fā)(Volatile,意指今天的要求明天就不需要了)l有責(zé)任感和積極向上的開(kāi)發(fā)人員l用戶容易溝通并能參與19Agile與CMM(1)CMM

9、更注重管理問(wèn)題(組織過(guò)程的有效性和過(guò)程的系統(tǒng)化改進(jìn)),Agile更注重技術(shù)和效率(2)CMM提供了一個(gè)高度抽象的框架,有廣泛的適用范圍,Agile適用于小組織和需求不定、有用戶緊密參與的情況(在高可靠性要求和大型項(xiàng)目組,或虛擬項(xiàng)目組中不宜采用)(3)CMM與Agile方法雖有一些公共的特點(diǎn),但Agile方法只是滿足或部分滿足了CMM2到3級(jí)中部分KPA(關(guān)鍵過(guò)程區(qū)域)的要求(4) Agile方法提出了在某些周境(context)下非常有效的實(shí)踐,與CMM方法有一定的互補(bǔ)性,CMM著重于“應(yīng)該做什么”,Agile則側(cè)重于“如何做” CMM的視角( Mark Paulk 的看法)20XP方法從某種

10、意義上來(lái)說(shuō)是CMM2到5級(jí)的一個(gè)垂直切片(滿足了CMM2到5級(jí)中的部分KPA目標(biāo)要求)若將之應(yīng)用于整個(gè)組織則還需更多的度量工作,但他同時(shí)指出,XP方法中更多的度量不是不可以做,而是要根據(jù)投入回報(bào)分析決定是否有必要Agile與CMMXP的視角( Ron Jeffries的看法)21CMM更注重質(zhì)量,Agile更注重生產(chǎn)率CMM強(qiáng)調(diào)過(guò)程的可觀測(cè)性,Agile強(qiáng)調(diào)可觀測(cè)的結(jié)果(可運(yùn)行軟件)CMM注重管理和過(guò)程,Agile注重技術(shù)和效率CMM注重組織,Agile注重個(gè)人CMM無(wú)所不包(Universal),Agile有明確的適用范圍它們都包含了一些軟件工程的好的實(shí)踐(Practices)Agile與C

11、MM個(gè)人觀點(diǎn)(僅供參考)結(jié)合點(diǎn)在哪里,如何Just Enough?22Agile 具體方法介紹Extreme Programming (簡(jiǎn)稱XP) SCRUMCrystal Methodologies (簡(jiǎn)稱Crystal)Feature Driven Development(簡(jiǎn)稱FDD)Dynamic Systems Development Methodology(簡(jiǎn)稱DSDM) Adaptive Software Development(簡(jiǎn)稱ASD)Pragmatic Programming等 23由Kent Beck提出,是Agile方法中最引人注目的一個(gè)XP最初實(shí)踐于1997年Crys

12、ler公司的C3項(xiàng)目 (Smalltalk開(kāi)發(fā))適用于10人以下項(xiàng)目組、開(kāi)發(fā)地點(diǎn)集中的場(chǎng)合 廣泛用于需求模糊和揮發(fā)性強(qiáng)的場(chǎng)合 Agile 具體方法介紹XP方法Website:24l交流(Communication) 項(xiàng)目相關(guān)人員之間充分、多渠道(最好面對(duì)面)的溝通l簡(jiǎn)化(Simplicity)在系統(tǒng)可運(yùn)轉(zhuǎn)的前提下,做最簡(jiǎn)潔的工作在開(kāi)發(fā)中不斷優(yōu)化設(shè)計(jì),時(shí)刻保持代碼簡(jiǎn)潔、無(wú)冗余l(xiāng)反饋(Feedback) 強(qiáng)調(diào)各種形式(如小交付、短迭代等)的反饋l 膽識(shí)(Courage) 面對(duì)壓力做正確的判斷并敢于付諸行動(dòng)(如敢于丟棄設(shè)計(jì)不良的代碼,疲憊時(shí)立即休息等)Agile 具體方法介紹XP方法(4個(gè)價(jià)值)25

13、l工作團(tuán)隊(duì)(Whole Team)所有的小組成員應(yīng)在同一個(gè)工作地點(diǎn)工作成員中必須有一個(gè)現(xiàn)場(chǎng)用戶(On-site User)通常還設(shè)一個(gè)“教練”(Coach)角色l計(jì)劃(Planning Game) 包括兩類:交付計(jì)劃和迭代(Iteration)計(jì)劃l 系統(tǒng)比擬(Metaphor) 相當(dāng)于一個(gè)粗略的軟件體系結(jié)構(gòu)l 小交付(Small release)l測(cè)試(testing) 先開(kāi)發(fā)測(cè)試用例后進(jìn)行編碼(testing then coding)Agile 具體方法介紹XP方法(12個(gè)核心實(shí)踐)26Agile 具體方法介紹 XP方法(12個(gè)核心實(shí)踐)l簡(jiǎn)潔設(shè)計(jì)(Simple Design)設(shè)計(jì)只考慮當(dāng)

14、前定義的功能而不考慮以后需求的變化該設(shè)計(jì)是完成目前功能所需的最簡(jiǎn)潔的設(shè)計(jì)l結(jié)對(duì)開(kāi)發(fā)(Pair Programming)l設(shè)計(jì)改進(jìn)(Design Improvement)l 持續(xù)集成(Continuous Integration)l代碼共享(Collective code Ownership) 任何結(jié)對(duì)開(kāi)發(fā)者在任何時(shí)候都可改進(jìn)項(xiàng)目組中的任何代碼l 編碼標(biāo)準(zhǔn)(Coding Standard)l 可持續(xù)步調(diào)(Sustainable Pace) 每周40小時(shí)工作制27Agile 具體方法介紹XP方法(開(kāi)發(fā)過(guò)程)最新版本體系結(jié)構(gòu)刺探(spike)系統(tǒng)比擬制訂交付計(jì)劃交付計(jì)劃 迭代開(kāi)發(fā)驗(yàn)收測(cè)試用戶認(rèn)可小交

15、付 用戶 故事(user stories)下一迭代Bugs新用戶故事需求測(cè)試用例不確定的估計(jì)確定的估計(jì)難點(diǎn)刺探28由Ken Schwaber和 Jeff Sutherland 提出 名稱來(lái)自Rugby Scrum(英式橄欖球)最初實(shí)踐于Easel公司(1993年) 是對(duì)迭代式面向?qū)ο蠓椒ǖ母倪M(jìn) 基于復(fù)雜性理論,過(guò)程分為確定性(Defined)過(guò)程和經(jīng)驗(yàn)性(Empirical)過(guò)程適用于需求難以預(yù)測(cè)的復(fù)雜商務(wù)應(yīng)用產(chǎn)品的開(kāi)發(fā) Agile 具體方法介紹SCRUM方法29Agile 具體方法介紹SCRUM方法提出的SCRUM Meeting、Sprint、Backlog、SCRUM Master、SC

16、RUM Team、Demo等模式已被PLOP (Pattern Language Of Programs)作為組織和過(guò)程模式(Organizational and Process Pattern)的標(biāo)準(zhǔn) 被認(rèn)為可提高生產(chǎn)率6倍(微軟的開(kāi)發(fā)過(guò)程與此類似,另一與此類似的開(kāi)發(fā)過(guò)程是Borland 的Quattro項(xiàng)目,每人周產(chǎn)出1000行的交付代碼)Website: 30Agile 具體方法介紹SCRUM方法(開(kāi)發(fā)過(guò)程)確定性過(guò)程經(jīng)驗(yàn)性過(guò)程確定性過(guò)程31Agile 具體方法介紹SCRUM方法(開(kāi)發(fā)過(guò)程) (1) 計(jì)劃和體系結(jié)構(gòu)設(shè)計(jì)(確定性過(guò)程) 將Backlog(急待完成的一系列任務(wù),包括:未細(xì)化的

17、產(chǎn)品功能要求、Bugs、缺陷、用戶提出的改進(jìn)、具競(jìng)爭(zhēng)力的功能及技術(shù)升級(jí)等)按優(yōu)先級(jí)排序形成Backlog 列表,根據(jù)該表和風(fēng)險(xiǎn)評(píng)估制訂產(chǎn)品交付基線。 建立系統(tǒng)體系結(jié)構(gòu)(如為已有系統(tǒng)改進(jìn),則只作有限分析、調(diào)整),將Backlog項(xiàng)按高內(nèi)聚低耦合的原則分解為一系列問(wèn)題包(Packets,每個(gè)Packet是一組對(duì)象或構(gòu)件的集合) ,依據(jù)同樣原則相應(yīng)劃分若干個(gè)開(kāi)發(fā)小組(SCRUM 小組),分配各小組合適的Backlog項(xiàng)或問(wèn)題包。建立開(kāi)發(fā)運(yùn)行環(huán)境。 32Agile 具體方法介紹SCRUM方法(開(kāi)發(fā)過(guò)程)(2) Sprint(經(jīng)驗(yàn)性過(guò)程)該過(guò)程由若干個(gè)迭代的沖刺(Sprint) 活動(dòng)組成,直至風(fēng)險(xiǎn)評(píng)估認(rèn)

18、為產(chǎn)品可交付為止。一個(gè)Sprint是在限定時(shí)間段內(nèi)(Sprint周期,通常為16周,可在前一個(gè)Sprint結(jié)束時(shí)調(diào)整)的一系列開(kāi)發(fā)活動(dòng)(包括分析、設(shè)計(jì)、編碼、測(cè)試等),每個(gè)SCRUM小組并行開(kāi)發(fā)且必須步調(diào)一致(在一個(gè)Sprint結(jié)束后,均須完成所分配的Backlog項(xiàng)并有可執(zhí)行的產(chǎn)出)。33Agile 具體方法介紹SCRUM方法(開(kāi)發(fā)過(guò)程)每個(gè)Sprint包含以下活動(dòng): 開(kāi)發(fā)。對(duì)分配的Backlog工作進(jìn)行分析,打開(kāi)packets,進(jìn)行領(lǐng)域分析,然后設(shè)計(jì)、開(kāi)發(fā)、實(shí)施、測(cè)試、文檔化這些改動(dòng)。 打包(Wrap)。封裝packets,產(chǎn)生一個(gè)滿足Backlog需求的可執(zhí)行版本。 評(píng)審(Review)。所有的SCRUM小組一起開(kāi)會(huì),提交各自的工作并演示(Demo),然后提出和解決問(wèn)題(Issue)及難點(diǎn)(problem),增加新的Backlog項(xiàng);發(fā)布、審查或調(diào)整產(chǎn)品的標(biāo)準(zhǔn)規(guī)范;進(jìn)行風(fēng)險(xiǎn)評(píng)估并提出合適的對(duì)策;確定下一個(gè)Sprint的工作內(nèi)容和結(jié)束時(shí)間。 調(diào)整(Adjust)。根據(jù)評(píng)審會(huì)匯集的信息,對(duì)受影響的Packets進(jìn)行適當(dāng)調(diào)整和鞏固。 34Agile 具體方法介紹SCRUM方法(開(kāi)發(fā)過(guò)程) (3) 交付和鞏固(確定性過(guò)程) 一旦根據(jù)風(fēng)險(xiǎn)評(píng)估結(jié)果認(rèn)為可交付產(chǎn)品時(shí),即進(jìn)入該階段。該階段的活動(dòng)包括:組裝,系統(tǒng)測(cè)試和回歸測(cè)試(Regr

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論