敏捷軟件開發(fā)宣言
敏捷開發(fā)以用戶的需求進(jìn)化為核心,采用迭代、循序漸進(jìn)的方法進(jìn)行軟件開發(fā)。在敏捷開發(fā)中,軟件項(xiàng)目在構(gòu)建初期被切分成多個子項(xiàng)目,各個子項(xiàng)目的成果都經(jīng)過測試,具備可視、可集成和可運(yùn)行使用的特征。換言之,就是把一個大項(xiàng)目分為多個相互聯(lián)系,但也可獨(dú)立運(yùn)行的小項(xiàng)目,并分別完成,在此過程中軟件一直處于可使用狀態(tài)。
??在2001年,17位編程大師共同發(fā)布《敏捷軟件開發(fā)宣言》。其他的核心思想可以分為以下四個部分:
- “人”以及“人與人的互動” > “過程”和“工具”;
- 可運(yùn)行的軟件 > 面面俱到的文檔;
- 客戶合作 > 合同談判;
- 響應(yīng)變化 > 遵循計(jì)劃。
基于《敏捷軟件開發(fā)宣言》的思想,其共有12條原則,這里不一一敘述,可以在這里查看詳情。
敏捷過程模型
1. 特點(diǎn)
開發(fā)過程中的“變化”無處不在,也是不可避免的。在實(shí)際項(xiàng)目中,很難預(yù)測需求和系統(tǒng)何時以及如何發(fā)生變化,并且對于開發(fā)者來說,要將變化的意識貫穿在每一項(xiàng)開發(fā)活動中。面對這寫要求,敏捷開發(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)勢,而弱化人的缺點(diǎn),突出人在軟件開發(fā)過程中的作用。 - 適用范圍:
XP適合規(guī)模小,進(jìn)度緊,需求變化大,質(zhì)量要求嚴(yán)的項(xiàng)目。功能需求可以固定的,可以作比較精確的需求設(shè)計(jì)的,生命周期很長的,超大型軟件項(xiàng)目不適于適用XP方法。 - 核心價(jià)值觀:
- 溝通問題往往是由于開發(fā)人員與設(shè)計(jì)人員,設(shè)計(jì)人員與客戶之間的溝通不暢造成的;
- 簡單在系統(tǒng)可運(yùn)行的前提下,做最簡單的工作。時刻保持代碼的簡單,無冗余;
- 反饋盡快獲得用戶反饋,越詳細(xì)越好,使得開發(fā)人員能夠保證自己的成果符合用戶的需要;
- 勇氣“擁抱變化”對于用戶的反饋,要用于對自己的代碼進(jìn)行修改,丟掉壞的代碼。
- XP設(shè)計(jì)過程:
- XP Planning:計(jì)劃階段
- XP Design:設(shè)計(jì)階段
- XP Coding & Testing:編碼與測試階段

3. SCRUM
- 背景:
1990年代由Schwaber & Beedle提出并實(shí)踐。 - 特點(diǎn):
整個開發(fā)過程由若干個短的迭代周期組成,一個短的迭代周期稱為一個Sprint,每個Sprint的建議長度是2到4周。使用產(chǎn)品Backlog來管理需求,是一個按照商業(yè)價(jià)值排序的需求列表,列表?xiàng)l目的體現(xiàn)形式通常為用戶故事。在Sprint中,Scrum團(tuán)隊(duì)從產(chǎn)品Backlog中挑選最高優(yōu)先級的需求進(jìn)行開發(fā)。挑選的需求在Sprint計(jì)劃會議上經(jīng)過討論、分析和估算得到相應(yīng)的任務(wù)列表(backlog)。在每個迭代結(jié)束時,Scrum團(tuán)隊(duì)將遞交潛在可交付的產(chǎn)品增量。 - 基本過程:
- 找出完成產(chǎn)品需要做的事情;
- 決定當(dāng)前的沖刺需要解決的事情;
- 沖刺沖刺Sprint;
- 每日站會。
- 常用方式:
Sprint Burndown ChartTask board
個人總結(jié)
我個人認(rèn)為敏捷開發(fā)中最重要的因素是:人 。
??通過對《敏捷軟件開發(fā)宣言》的學(xué)習(xí),“人與人的合作交流”就一個敏捷軟件開發(fā)項(xiàng)目是否成功的主要因素。所以在軟件軟件開發(fā)過程中,開發(fā)者的編程環(huán)境需要做到盡量的開放,而且盡量實(shí)現(xiàn)“結(jié)對編程”,這樣才能使得開發(fā)過程變得不易于原計(jì)劃脫軌,大大增強(qiáng)了開發(fā)的成功率。
??而對于較為典型的SCRUM和XP這兩種敏捷過程模型,Scrum注重的是管理和組織實(shí)踐,而XP關(guān)注的是實(shí)際的編程實(shí)踐,兩者都聚焦于信息價(jià)值流和信息溝通除了迭代長度稍有差別外,大多數(shù)Scrum實(shí)踐與XP是兼容且相互補(bǔ)充。
??所以說:組合使用Scurm和XP會有顯著收獲!