敏捷軟件開發(fā)宣言
敏捷開發(fā)以用戶的需求
進(jìn)化為核心,采用迭代
漠趁、循序漸進(jìn)
的方法進(jìn)行軟件開發(fā)扁凛。在敏捷開發(fā)中,軟件項(xiàng)目在構(gòu)建初期被切分成多個(gè)子項(xiàng)目闯传,各個(gè)子項(xiàng)目的成果都經(jīng)過測(cè)試谨朝,具備可視、可集成和可運(yùn)行使用的特征甥绿。換言之字币,就是把一個(gè)大項(xiàng)目分為多個(gè)相互聯(lián)系沫勿,但也可獨(dú)立運(yùn)行的小項(xiàng)目龟糕,并分別完成,在此過程中軟件一直處于可使用狀態(tài)帘营。
??在2001年图谷,17位編程大師共同發(fā)布《敏捷軟件開發(fā)宣言》
翩活。其他的核心思想可以分為以下四個(gè)部分:
- “人”以及“人與人的互動(dòng)” > “過程”和“工具”;
- 可運(yùn)行的軟件 > 面面俱到的文檔;
- 客戶合作 > 合同談判;
- 響應(yīng)變化 > 遵循計(jì)劃。
基于《敏捷軟件開發(fā)宣言》的思想便贵,其共有12條原則
菠镇,這里不一一敘述,可以在這里查看詳情承璃。
敏捷過程模型
1. 特點(diǎn)
開發(fā)過程中的“變化”無處不在利耍,也是不可避免的。在實(shí)際項(xiàng)目中盔粹,很難預(yù)測(cè)需求和系統(tǒng)何時(shí)以及如何發(fā)生變化隘梨,并且對(duì)于開發(fā)者來說,要將變化的意識(shí)貫穿在每一項(xiàng)開發(fā)活動(dòng)中舷嗡。面對(duì)這寫要求轴猎,敏捷開發(fā)
應(yīng)運(yùn)而生。所有敏捷過程模型都遵循敏捷軟件開發(fā)宣言和敏捷原則进萄,每種模型又各有特點(diǎn)税稼,一下介紹兩種:XP
與SCRUM
。
2. XP(extreme programing)
- 背景:
1996年由Ken Beck等人提出垮斯,著名書籍:
《Extreme Programing Explained:Embrace Change》
郎仆。 - 基本觀點(diǎn):
軟件開發(fā)是人與人合作進(jìn)行的過程,因此成功的軟件開發(fā)過程應(yīng)該充分利用人的優(yōu)勢(shì)兜蠕,而弱化人的缺點(diǎn)扰肌,突出人在軟件開發(fā)過程中的作用。 - 適用范圍:
XP適合規(guī)模小熊杨,進(jìn)度緊曙旭,需求變化大盗舰,質(zhì)量要求嚴(yán)的項(xiàng)目。功能需求可以固定的桂躏,可以作比較精確的需求設(shè)計(jì)的钻趋,生命周期很長(zhǎng)的,超大型軟件項(xiàng)目不適于適用XP方法剂习。 - 核心價(jià)值觀:
- 溝通問題往往是由于開發(fā)人員與設(shè)計(jì)人員蛮位,設(shè)計(jì)人員與客戶之間的溝通不暢造成的;
- 簡(jiǎn)單在系統(tǒng)可運(yùn)行的前提下鳞绕,做最簡(jiǎn)單的工作失仁。時(shí)刻保持代碼的簡(jiǎn)單,無冗余们何;
- 反饋盡快獲得用戶反饋萄焦,越詳細(xì)越好,使得開發(fā)人員能夠保證自己的成果符合用戶的需要冤竹;
- 勇氣“擁抱變化”對(duì)于用戶的反饋拂封,要用于對(duì)自己的代碼進(jìn)行修改,丟掉壞的代碼鹦蠕。
- XP設(shè)計(jì)過程:
- XP Planning:計(jì)劃階段
- XP Design:設(shè)計(jì)階段
- XP Coding & Testing:編碼與測(cè)試階段
3. SCRUM
- 背景:
1990年代由Schwaber & Beedle提出并實(shí)踐冒签。 - 特點(diǎn):
整個(gè)開發(fā)過程由若干個(gè)短的迭代周期組成,一個(gè)短的迭代周期稱為一個(gè)Sprint片部,每個(gè)Sprint的建議長(zhǎng)度是2到4周。使用產(chǎn)品Backlog來管理需求霜定,是一個(gè)按照商業(yè)價(jià)值排序的需求列表档悠,列表?xiàng)l目的體現(xiàn)形式通常為用戶故事。在Sprint中望浩,Scrum團(tuán)隊(duì)從產(chǎn)品Backlog中挑選最高優(yōu)先級(jí)的需求進(jìn)行開發(fā)辖所。挑選的需求在Sprint計(jì)劃會(huì)議上經(jīng)過討論、分析和估算得到相應(yīng)的任務(wù)列表(backlog)磨德。在每個(gè)迭代結(jié)束時(shí)缘回,Scrum團(tuán)隊(duì)將遞交潛在可交付的產(chǎn)品增量。 - 基本過程:
- 找出完成產(chǎn)品需要做的事情典挑;
- 決定當(dāng)前的沖刺需要解決的事情酥宴;
- 沖刺沖刺Sprint;
- 每日站會(huì)您觉。
- 常用方式:
Sprint Burndown Chart
Task board
個(gè)人總結(jié)
我個(gè)人認(rèn)為敏捷開發(fā)中最重要的因素是:人 拙寡。
??通過對(duì)《敏捷軟件開發(fā)宣言》的學(xué)習(xí),“人與人的合作交流”
就一個(gè)敏捷軟件開發(fā)項(xiàng)目是否成功的主要因素琳水。所以在軟件軟件開發(fā)過程中肆糕,開發(fā)者的編程環(huán)境需要做到盡量的開放般堆,而且盡量實(shí)現(xiàn)“結(jié)對(duì)編程”
,這樣才能使得開發(fā)過程變得不易于原計(jì)劃脫軌诚啃,大大增強(qiáng)了開發(fā)的成功率淮摔。
??而對(duì)于較為典型的SCRUM和XP這兩種敏捷過程模型,Scrum注重的是管理和組織實(shí)踐始赎,而XP關(guān)注的是實(shí)際的編程實(shí)踐和橙,兩者都聚焦于信息價(jià)值流和信息溝通除了迭代長(zhǎng)度稍有差別外,大多數(shù)Scrum實(shí)踐與XP是兼容且相互補(bǔ)充极阅。
??所以說:組合使用Scurm和XP會(huì)有顯著收獲胃碾!