- 軟件交付通識(shí)
- 董越
- 1291字
- 2022-05-06 13:18:16
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ú)介紹了。
- DevOps原理與實(shí)踐
- 從零基礎(chǔ)到精通Flutter開發(fā)
- App草圖+流程圖+交互原型設(shè)計(jì)教程
- 深度學(xué)習(xí):21天實(shí)戰(zhàn)Caffe
- 程序員度量:改善軟件團(tuán)隊(duì)的分析學(xué)
- 軟件測試之魂:核心測試設(shè)計(jì)精解
- 自己動(dòng)手構(gòu)造編譯系統(tǒng):編譯、匯編與鏈接
- Unity AR/VR開發(fā):從新手到專家
- CATIA V5 從入門到精通(第二版)
- 現(xiàn)代交換技術(shù)(第3版)
- 軟件單元測試
- 微信小程序?qū)崙?zhàn)入門(內(nèi)含完整實(shí)例解析)
- 云原生測試實(shí)戰(zhàn)
- 移山之道:VSTS軟件開發(fā)指南
- 騰訊Android自動(dòng)化測試實(shí)戰(zhàn)