瀑布模型
瀑布模型是典型的軟/硬件開發(fā)模型酷师,包括需求珠闰、設(shè)計惜浅、編碼、測試伏嗜、運行與維護(hù)幾個階段坛悉。產(chǎn)品流經(jīng)“正向”開發(fā)是開發(fā)的基本步驟路徑伐厌,“反向”的步驟流表示對前一個可提交產(chǎn)品的重復(fù)變更,由于所有開發(fā)活動的非確定性裸影,因此是否需要重復(fù)變更挣轨,這僅在下一個階段或更后的階段才能認(rèn)識到。這種“返工”不僅在以前階段的某一地方需要轩猩,而且對當(dāng)前正在進(jìn)行的工作也同樣需要卷扮。
主要特點:
- 每一階段都以驗證/確認(rèn)話動作為結(jié)束,其目的是盡可能多地消除本階段產(chǎn)品中存在的問題
- 在隨后階段里均践,盡可能對前面階段的產(chǎn)品進(jìn)行迭代
優(yōu)點: - 容易理解画饥、管理成本低。
瀑布模型的主要成果是通過文檔從一個階段傳遞到下一個階段浊猾,各階段間原則上不連續(xù)也不交迭,因此可以預(yù)先制定計劃热鞍,來降低計劃管理的成本 - 它提供有形的軟件成果
文檔產(chǎn)生并提供了貫穿生命期的進(jìn)展過程的充分說明葫慎,允許基線和配置,早期接受控制薇宠。
軟件配置項:
軟件工程過程各項話動的產(chǎn)物(程序文檔偷办、數(shù)據(jù))經(jīng)評審或市批后都稱為軟件配置項(SCD),第一次交付的軟件配置項構(gòu)成基線(Base Line)配置項澄港。軟件開發(fā)中的主要配置項有:操作概念椒涯、需求規(guī)格說明、設(shè)計文檔回梧、源代碼废岂、目標(biāo)代碼、測試計劃狱意、測試用例湖苞、測試配置和測試結(jié)果、維護(hù)和開發(fā)工具详囤、用戶手冊财骨、維護(hù)手冊、接口控制文檔...
為了控制這些條目并避免過分制約早期開發(fā)活動藏姐,需要在合適的點上建立基線隆箩。
基線:
基線是經(jīng)過正式評審和認(rèn)可的組軟件配置項(文檔或其他軟件產(chǎn)品),此后它們將作為下一步開發(fā)工作的基礎(chǔ)羔杨,只有通過正式的變更控制流程才能被更改捌臊。
基線的作用是把各階段的工作劃分得更加明確使本來連續(xù)的工作在這些點上斷開,以便于驗證和確認(rèn)開發(fā)成果问畅。因此娃属,基線可為軟件制品提供三種能力: - 再生能力:即能夠“返回”到原先的某-時間重新制造軟件系統(tǒng)的特定版本或再現(xiàn)曾經(jīng)存在的開發(fā)環(huán)境六荒。
- 可追蹤能力:即將需求、項目計劃矾端、測試用例以及各種軟件工件關(guān)聯(lián)在一起掏击。為了實現(xiàn)可追蹤能力,不僅需要對系統(tǒng)中的各種工件進(jìn)行基線化秩铆,而且要對項目管理工件進(jìn)行基線化砚亭。
- 報告能力:即能夠查詢?nèi)我?基線中的內(nèi)容以及對比不同基線的內(nèi)容∨孤辏基線的比較結(jié)果可以支持排錯以及輔助生成新版發(fā)布說明捅膘。
這些能力助團(tuán)隊修復(fù)已發(fā)布產(chǎn)品中的缺陷,為規(guī)范開發(fā)流程滚粟,通過審核提供便利條件寻仗,最重要的是保設(shè)計實現(xiàn)需求、代碼實現(xiàn)設(shè)計凡壤,并且使用正確版本的代碼構(gòu)建可執(zhí)行的應(yīng)用程序署尤。
缺點: - 客戶必須能夠完整、正確和清晰地表達(dá)其需要亚侠。但在系統(tǒng)開發(fā)中經(jīng)常發(fā)現(xiàn)用戶與開發(fā)人員溝通存在巨大差異曹体、用戶提出含糊需求又被開發(fā)人員隨意解釋,以及用戶需求會隨著時間推移不斷變化等問題
- 可能要花費更多的時間來建立一些用處不大的文檔
- 在開始的兩個或三個階段中硝烂,很難評估真正的進(jìn)度狀態(tài)
- 在一個項目的早期階段箕别,過分強(qiáng)調(diào)了基線和里程碑處的文檔
- 當(dāng)接近項目結(jié)束時,出現(xiàn)了大量的集成和測試工作
- 直到項目結(jié)束之前滞谢,都不能演示系統(tǒng)的能力
適用范圍:
- 一個項目有穩(wěn)定的產(chǎn)品定義和很容易被理解的技術(shù)解決方案時
- 對一個定義得很好的版本進(jìn)行維護(hù)串稀,或移植到一個新的平臺上時
- 開發(fā)一個容易理解但很復(fù)雜的項目時
- 質(zhì)量需求高于成本需求和進(jìn)度需求時
理念:
“用最普通的人,做不普通的事”狮杨。對于一個大系統(tǒng)厨诸,為了達(dá)到預(yù)期目標(biāo),需要做好周密的計劃禾酱,在階段微酬、活動和任務(wù)的關(guān)鍵點加強(qiáng)評審和輔助性的管理,通過撰寫大量的文檔來盡量避免交流的歧義性和不確定性颤陶。為了保證最終提交物的高質(zhì)量颗管,在支持過程與輔助工作上花費大量資源,使整個過程顯得過于笨重滓走,因此被稱為“重量級過程”垦江。
敏捷開發(fā)【需求變更和迭代升級】
敏捷過程強(qiáng)調(diào)短期交付、客戶的緊密參與搅方,強(qiáng)調(diào)適應(yīng)性面不是可預(yù)見性比吭,強(qiáng)調(diào)為當(dāng)前的需要而不考慮將來的簡化設(shè)計绽族。只將最必要的內(nèi)容文檔化,因此也被稱為“輕量級過程”衩藤。敏捷不是方法論吧慢,也不是開發(fā)軟件的具體方法,更不是開發(fā)框架或過程赏表,而是一套價值觀和原則检诗。
核心理念:
- 個體和互動 高于 流程和工具
- 工作的軟件 高于 詳盡的文檔
- 客戶合作 高于 合同談判
- 響應(yīng)變化 高于 遵循計劃
a) 我們最重要的目標(biāo),是通過持續(xù)不斷地及早交付有價值的軟件使客戶滿意瓢剿。
b) 欣然面對需求變化逢慌,即使在開發(fā)后期也一樣。為了客戶的競爭優(yōu)勢间狂,敏捷過程掌控變化攻泼。
c) 經(jīng)常地交付可工作的軟件,相隔幾星期或一兩個月鉴象,傾向于采取較短的周期坠韩。
d) 業(yè)務(wù)人員和開發(fā)人員必須相互合作,項目中的每一天都不例外炼列。
e) 激發(fā)個體的斗志,以他們?yōu)楹诵拇罱椖恳舯取L峁┧璧沫h(huán)境和支援俭尖,輔以信任,從而達(dá)成目標(biāo)洞翩。
f) 不論團(tuán)隊內(nèi)外稽犁,傳遞信息效果最好效率也最高的方式是面對面的交談。
g) 可工作的軟件是進(jìn)度的首要度量標(biāo)準(zhǔn)骚亿。
h) 敏捷過程倡導(dǎo)可持續(xù)開發(fā)已亥。責(zé)任人、開發(fā)人員和用戶要能夠共同維持其步調(diào)穩(wěn)定延續(xù)来屠。
i) 堅持不懈地追求技術(shù)卓越和良好設(shè)計虑椎,敏捷能力由此增強(qiáng)。
j) 以簡潔為本俱笛,它是極力減少不必要工作量的藝術(shù)捆姜。
k) 最好的架構(gòu)、需求和設(shè)計出自自組織團(tuán)隊迎膜。
l) 團(tuán)隊定期地反思如何能提高成效泥技,并依此調(diào)整自身的舉止表現(xiàn)。
srcum
Scrum作為敏捷的落地方法之一磕仅,用不斷迭代的框架方法來管理復(fù)雜產(chǎn)品的開發(fā)珊豹,成為當(dāng)前最火的敏捷管理方法簸呈。項目成員會以1-2周的迭代周期(sprint)不斷產(chǎn)出新版本軟件,而在每次迭代完成后店茶,項目成員和利益方再次碰頭確認(rèn)下次迭代的方向和目標(biāo)蜕便。
Scrum有一套其獨特且固定管理方式,從角色忽妒、工件和不同形式的會議三個維度出發(fā)玩裙,來保證執(zhí)行過程更高效。例如在每次sprint開始前會確立整個過程:迭代規(guī)劃段直、每日站會吃溅、迭代演示和回顧。并在sprint期間用可視化工件確認(rèn)進(jìn)度和收集客戶反饋鸯檬。
Scrum的三種角色:
產(chǎn)品經(jīng)理:
負(fù)責(zé)規(guī)劃產(chǎn)品决侈,并將研發(fā)這種產(chǎn)品的愿景傳達(dá)給團(tuán)隊。產(chǎn)品負(fù)責(zé)人需要整理產(chǎn)品需求清單(backlog)喧务,關(guān)注市場需求的變化來調(diào)整產(chǎn)品需求優(yōu)先級赖歌,確認(rèn)下次迭代需要交付的功能。與團(tuán)隊功茴、客戶庐冯、利益相關(guān)方持續(xù)保持溝通和反饋,保證每位項目成員了解項目意義和愿景坎穿。
Scrum Master:
Scrum Master幫助團(tuán)隊盡其所能地完成工作展父。例如:組織會議,處理遇到的障礙和挑戰(zhàn)玲昧,與產(chǎn)品經(jīng)理合作栖茉,在下次迭代前準(zhǔn)備好backlog,確保團(tuán)隊遵循Scrum流程孵延。Scrum Master對團(tuán)隊成員在做的事情沒有權(quán)力吕漂,但對這一過程擁有權(quán)力——Scrum Master不能告訴某人該做什么,但可以提出新的sprint尘应。
Scrum團(tuán)隊:
Scrum團(tuán)隊由五到七名成員組成惶凝。與傳統(tǒng)的開發(fā)團(tuán)隊不同,成員們沒有固定角色犬钢,比如會由測試人員來做研發(fā)梨睁。團(tuán)隊成員間相互幫助、共享成果娜饵,旨在完成全部的工作坡贺。Scrum團(tuán)隊需要做好整體規(guī)劃,并為每次迭代劃分合適的工作量。
Scrum會議:
整理產(chǎn)品需求清單(Product backlog):產(chǎn)品經(jīng)理和Scrum團(tuán)隊進(jìn)行碰頭遍坟,基于用戶故事和需求反饋來確定產(chǎn)品需求的優(yōu)先級拳亿。Backlog并不是代辦事項列表,而是產(chǎn)品的所有功能列表愿伴。然后研發(fā)團(tuán)隊在每次迭代階段去完成清單中一部分肺魁,最終完成整個項目。
確定迭代規(guī)劃(Sprint planning):在每次迭代開始之前隔节,產(chǎn)品經(jīng)理會在迭代規(guī)劃會議上和團(tuán)隊討論優(yōu)先級高的功能需求鹅经。然后確認(rèn)有哪些功能將會在下次迭代時完成,并將這些功能從產(chǎn)品需求清單中移至迭代任務(wù)清單(Sprint backlog)中怎诫。
梳理產(chǎn)品需求清單:結(jié)束迭代后瘾晃,產(chǎn)品經(jīng)理需要和團(tuán)隊碰頭來確認(rèn)下次迭代的任務(wù)清單。團(tuán)隊可以利用這個階段剔除相關(guān)度低的用戶故事幻妓,提出新的用戶故事蹦误,再重新評估故事的優(yōu)先級,或?qū)⒂脩艄适路殖筛〉娜蝿?wù)肉津。這次梳理會議的目的是確保產(chǎn)品需求清單里的內(nèi)容足夠詳細(xì)强胰,并且和項目目標(biāo)保持一致。
每日站會:每天花15分鐘左右開一次站會妹沙,期間團(tuán)隊每個成員都會討論當(dāng)前的進(jìn)度和出現(xiàn)的問題偶洋。這個過程有助于團(tuán)隊保持日常聯(lián)系。
迭代演示:在每次迭代結(jié)束時距糖,團(tuán)隊需要向產(chǎn)品經(jīng)理報告已完成的工作玄窝,并做產(chǎn)品現(xiàn)場演示。迭代回顧:在每次迭代結(jié)束后肾筐,團(tuán)隊需要開例會總結(jié)使用Scrum進(jìn)行研發(fā)帶來的影響,并探討在下次迭代中是否有能做的更好的地方缸剪。
Scrum常用工件:
- Scrum任務(wù)板:我們可以用Scrum任務(wù)板使Sprint任務(wù)清單形象化吗铐。任務(wù)板可以用不同的形式來呈現(xiàn),比較傳統(tǒng)的做法有索引卡杏节,便利貼或白板唬渗。Scrum任務(wù)板通常分為三列:待辦事項,正在進(jìn)行中和已完成奋渔。團(tuán)隊需要在整個Sprint過程中不斷更新镊逝。例如,如果某人想出新任務(wù)嫉鲸,他會寫一張新卡并將其加入到合適的位置撑蒜。
- 用戶故事:用戶故事是從客戶角度對軟件提出功能的描述。它包括用戶類型細(xì)分,他們想要什么以及他們?yōu)槭裁葱枰ぁK鼈冏裱嗨频慕Y(jié)構(gòu):作為<用戶類型>狸眼,我希望<執(zhí)行某項任務(wù)>以便我能<實現(xiàn)某個目標(biāo)>。團(tuán)隊根據(jù)這些用戶故事進(jìn)行研發(fā)來滿足用戶需求浴滴。
- 燃盡圖(Burndown chart):豎軸表示迭代任務(wù)清單拓萌,橫軸表示剩余時間。剩下工作可以通過不同的點位或其他指標(biāo)來表示升略。當(dāng)事情不按照計劃進(jìn)行并且影響后續(xù)決策時微王,burndown chart可以在這時給團(tuán)隊提個醒。
看板
可視化流程框架
這種可視化框架能夠清晰地向項目成員展示整個項目進(jìn)度(要做什么/什么時候做/做多少)品嚣。我們會建議你當(dāng)需要對系統(tǒng)進(jìn)行小幅度改動的時候炕倘,可以采用看板方法來輕量化解決這個問題,因為看板本身并不需要額外去制定流程腰根,我們可以在任何工作流上加看板激才。限制工作進(jìn)度(WIP)
WIP將確定看板圖上每列的最大、最小工作量额嘿。通過對WIP進(jìn)行限制瘸恼,我們能夠根據(jù)自己的意愿來調(diào)整速度、靈活度册养,提升解決高優(yōu)先級需求的效率东帅。在這種情況下,開發(fā)中工作(WIP)代替庫存球拦,只有看板上空了以后才能加入新工作靠闭。軟件開發(fā)項目的分列可能包括代辦、準(zhǔn)備階段坎炼、研發(fā)愧膀、測試、審批和已完成谣光。管理和改進(jìn)流程
我們需要對看板圖上的流程進(jìn)行定期監(jiān)控和總結(jié)改進(jìn)檩淋,從而得到流暢高效的工作流,快速創(chuàng)造價值萄金。制定明確的執(zhí)行策略
為了防止在進(jìn)行看板時發(fā)生協(xié)作變化蟀悦,我們需要有明確的執(zhí)行策略,每位成員都需要了解如何完成任務(wù)和“完成”的真正含義氧敢。持續(xù)改進(jìn)
看板方法鼓勵持續(xù)性的小幅度改進(jìn)日戈。一旦看板系統(tǒng)到位,該團(tuán)隊將能夠識別孙乖、理解問題并提出改進(jìn)建議浙炼。團(tuán)隊通過回顧總結(jié)工作流和測量周期時間來評估其有效性份氧,提高產(chǎn)出質(zhì)量。