官术网_书友最值得收藏!

3.2 敏捷

3.2.1 敏捷的理念

軟件工程有很大的進(jìn)步意義,但是慢慢地,人們覺得好像哪里不太對勁。軟件開發(fā)跟別的技術(shù)領(lǐng)域還是有一些區(qū)別的:它是富有創(chuàng)造性的活動(dòng),它不是那么可預(yù)測和可計(jì)劃的,并且它的成果往往是等用戶用起來才能切身體會(huì)到。所以工程化的方法不是100%適用。似乎開發(fā)過程、角色分工有點(diǎn)兒太復(fù)雜、太僵化了,好像各種中間產(chǎn)物特別是文檔有點(diǎn)兒太多了,特別是對于小產(chǎn)品、小團(tuán)隊(duì)來說,過猶不及!在這樣的背景下,敏捷運(yùn)動(dòng)興起了。

在2001年提出的“敏捷軟件開發(fā)宣言”[1]中說,“我們一直在實(shí)踐中探尋更好的軟件開發(fā)方法,身體力行的同時(shí)也幫助他人。由此我們建立了如下價(jià)值觀:

? 個(gè)體和互動(dòng) 高于 流程和工具。

? 工作的軟件 高于 詳盡的文檔。

? 客戶合作 高于 合同談判。

? 響應(yīng)變化 高于 遵循計(jì)劃。

也就是說,盡管右項(xiàng)有其價(jià)值,但我們更重視左項(xiàng)的價(jià)值?!?/p>

所以它的核心意思就是,你們引入軟件工程,用工程化的思想做軟件開發(fā),挺好,上面每句話中的后半句都是有道理的。但是不要太過了,還是要靈活一點(diǎn)、務(wù)實(shí)一點(diǎn),這就是上面每句話中的前半句高于后半句的含義。

“敏捷軟件開發(fā)宣言”遵循的原則[2]有12條,這也是它的核心思路。具體如下:

? 我們最重要的目標(biāo),是通過持續(xù)不斷地及早交付有價(jià)值的軟件使客戶滿意。

? 欣然面對需求變化,即使在開發(fā)后期也一樣。為了客戶的競爭優(yōu)勢,敏捷過程掌控變化。

? 經(jīng)常地交付可工作的軟件,相隔幾星期或一兩個(gè)月,傾向于采取較短的周期。

? 業(yè)務(wù)人員和開發(fā)人員必須相互合作,項(xiàng)目中的每一天都不例外。

? 激發(fā)個(gè)體的斗志,以他們?yōu)楹诵拇罱?xiàng)目。提供所需的環(huán)境和支援,輔以信任,從而達(dá)成目標(biāo)。

? 不論團(tuán)隊(duì)內(nèi)外,傳遞信息效果最好、效率也最高的方式是面對面的交談。

? 可工作的軟件是進(jìn)度的首要度量標(biāo)準(zhǔn)。

? 敏捷過程倡導(dǎo)可持續(xù)開發(fā)。責(zé)任人、開發(fā)人員和用戶要能夠共同維持其步調(diào)穩(wěn)定延續(xù)。

? 堅(jiān)持不懈地追求技術(shù)卓越和良好設(shè)計(jì),敏捷能力由此增強(qiáng)。

? 以簡潔為本,它是極力減少不必要工作量的藝術(shù)。

? 最好的架構(gòu)、需求和設(shè)計(jì)出自自組織團(tuán)隊(duì)。

? 團(tuán)隊(duì)定期地反思如何能提高成效,并依此調(diào)整自身的舉止表現(xiàn)。

總體來說,敏捷是在糾正軟件工程過于強(qiáng)調(diào)工程化的傾向。當(dāng)然,如果把敏捷片面地理解成不要流程、不寫文檔、不做計(jì)劃,那就矯枉過正了。說到底,是要找一個(gè)對特定業(yè)務(wù)、特定團(tuán)隊(duì)來說合適的“姿勢”。

3.2.2 敏捷的實(shí)踐

敏捷的落地,包括管理實(shí)踐和工程實(shí)踐兩個(gè)方面。在管理實(shí)踐中,接受度最高的是Scrum,相信讀者大多耳熟能詳。大體上,Scrum團(tuán)隊(duì)以每兩到四周的時(shí)間作為一個(gè)沖刺(Sprint)周期,也就是做一次迭代。在一個(gè)沖刺之初,確定好要實(shí)現(xiàn)哪些用戶故事(User Story),迭代中一般不會(huì)再改變。當(dāng)?shù)Y(jié)束時(shí),這些用戶故事應(yīng)該已經(jīng)被集成并且可以演示。可以看出,與瀑布模型、V模型、RUP(Rational Unified Process,Rational統(tǒng)一過程)相比,Scrum是一個(gè)相當(dāng)輕量的開發(fā)計(jì)劃和管理的框架。對于小團(tuán)隊(duì)來說,它好上手,招人喜歡。

敏捷的工程實(shí)踐包括不少內(nèi)容,其中被普遍采用的有單元測試、持續(xù)集成等。相對來說,結(jié)對編程、測試驅(qū)動(dòng)開發(fā)等還沒有被廣泛地采用。

其中的持續(xù)集成,在3.4節(jié)中會(huì)稍微詳細(xì)地介紹一下。盡管從敏捷的角度來看,它是敏捷的工程實(shí)踐之一,但它已經(jīng)重要和獨(dú)立到我們應(yīng)該單獨(dú)介紹了。

主站蜘蛛池模板: 神池县| 云南省| 兰州市| 北宁市| 深州市| 朝阳县| 海南省| 仙游县| 高青县| 桐柏县| 巴彦淖尔市| 始兴县| 陆良县| 洪洞县| 连南| 垣曲县| 安龙县| 高台县| 涡阳县| 绍兴市| 新建县| 长岭县| 北安市| 嘉善县| 汕尾市| 英吉沙县| 临汾市| 泗水县| 聂拉木县| 宿松县| 积石山| 兴安县| 泰来县| 莱西市| 西宁市| 东城区| 五莲县| 台湾省| 页游| 静海县| 调兵山市|