軟件開發(fā)流程方法論, 2022-06-08

(2022.06.08 Wed)
完整的軟件開發(fā)流程SDLC也被稱為瀑布式開發(fā)waterfall,該流程隨著場景的多樣化需求而不停進(jìn)化。本文介紹幾種常見的軟件開發(fā)流程方法論,以及各自擅長的場景奖蔓,包括

  • 瀑布式開發(fā) waterfall
  • 敏捷開發(fā) agile and scrum 和Devops
  • 迭代遞增 iterative and incremental
  • V型 V-shaped
  • 螺旋型開發(fā) spiral
  • 快速應(yīng)用開發(fā) Rapid Application Development, RAD

瀑布式開發(fā) waterfall

也稱線性順序開發(fā)模型linear sequential model或計(jì)劃驅(qū)動型開發(fā),它是最常見和傳統(tǒng)的開發(fā)模式铁孵,嚴(yán)格遵循SDLC锭硼,逐步依次完成每一步進(jìn)程,

優(yōu)勢包括易于理解蜕劝,開發(fā)團(tuán)隊(duì)可以遵循清晰的開發(fā)流程檀头、便于管理。
劣勢包括

  • 耗時(shí)過多:開發(fā)的各步驟按順序執(zhí)行岖沛,在前一步完成之前暑始,下一步無法開展
  • 非自適應(yīng):如果需求不明確則無法開展項(xiàng)目,客戶需要對需求有清晰的認(rèn)知和表述
  • 不適合短期項(xiàng)目:不適合持續(xù)時(shí)間短的項(xiàng)目
  • 缺乏靈活性:無法測試最小可用模型 MVP婴削,直到上線才可以

適用于目標(biāo)廊镜、需求、技術(shù)棧在開發(fā)周期中都相對穩(wěn)定唉俗、不會產(chǎn)生劇烈變化的情況嗤朴,適合于需要在開始前有清晰sign-offs、文檔和范圍餓大型項(xiàng)目虫溜。

敏捷開發(fā) agile and scrum 和DevOps

相較于有嚴(yán)格流程的waterfall雹姊,敏捷開發(fā)更加靈活和自適應(yīng)。它基于短促的開發(fā)流程(sprints)衡楞。與waterfall不同的是吱雏,開發(fā)團(tuán)隊(duì)不會花大量時(shí)間從頭開始建立一個(gè)完整的軟件產(chǎn)品,而是創(chuàng)建一個(gè)Minaimal Viable Product MVP最小可用產(chǎn)品瘾境,并逐步交付給客戶歧杏。

采用敏捷開發(fā)的項(xiàng)目會被分解為更小的增量builds。每個(gè)增量build對應(yīng)的周期被稱為sprints迷守。每個(gè)sprint持續(xù)時(shí)間大約2到4個(gè)星期犬绒。每個(gè)sprint之初,開發(fā)團(tuán)隊(duì)與客戶溝通明確該sprint的目標(biāo)兑凿,并進(jìn)行開發(fā)測試懂更。最終在sprint結(jié)束時(shí)交付于客戶眨业。

敏捷開發(fā)的常見變體包括scrum急膀,extreme編程和特征驅(qū)動開發(fā)沮协。

敏捷開發(fā)方式適合于需要持續(xù)更新的項(xiàng)目和產(chǎn)品,但管理成本和難度會相對提高卓嫂。

敏捷開發(fā)聚焦于:

  • 增量改進(jìn)
  • 用戶反饋
  • 2到4周為周期的sprint
  • 持續(xù)測試

敏捷開發(fā)的優(yōu)勢包括

  • 自適應(yīng):靈活慷暂,團(tuán)隊(duì)隨時(shí)根據(jù)需求調(diào)整工作
  • 提高客戶滿意度:與客戶的溝通頻率提高,便于客戶在開發(fā)的每一步提供反饋
  • 容易加新特性:每個(gè)開發(fā)周期為2到4周晨雳,加入新特性很方便

劣勢包括:

  • 經(jīng)驗(yàn)要求高:需要團(tuán)隊(duì)成員或管理者有經(jīng)驗(yàn)
  • 無文檔:關(guān)注軟件品質(zhì)勝過文檔
  • 需要清晰:客戶需要清晰指出他們的預(yù)期行瑞,因?yàn)槊艚蓍_發(fā)沒有SDS文檔

敏捷開發(fā)適用于對產(chǎn)品做持續(xù)更新的動態(tài)團(tuán)隊(duì)。由于其以用戶為中心的屬性餐禁,敏捷開發(fā)被眾多初創(chuàng)公司青睞血久,技術(shù)公司測試新產(chǎn)品和對長期產(chǎn)品的持續(xù)更新也會應(yīng)用敏捷開發(fā)。由于使得快捷發(fā)布和收集用戶反饋?zhàn)兊萌菀装锓牵艚蓍_發(fā)允許公司快速推進(jìn)項(xiàng)目和測試氧吐,而免去了major release帶來的潛在風(fēng)險(xiǎn)。而且每次迭代后都要測試末盔,便于跟蹤bug和版本回滾筑舅。

敏捷開發(fā)不適用于預(yù)算和時(shí)間都緊張的團(tuán)隊(duì)。敏捷開發(fā)的靈活性意味著項(xiàng)目可能輕易超出最初的時(shí)間框架和預(yù)算陨舱,與現(xiàn)有架構(gòu)沖突翠拣,或由于管理失誤而進(jìn)展緩慢。此外采用敏捷開發(fā)需要對底層的過程有深入的了解游盲,需要團(tuán)隊(duì)有scrum大師以保證sprint和milestone都能夠達(dá)成误墓。

DevOps是敏捷開發(fā)的擴(kuò)展,它優(yōu)先了持續(xù)改進(jìn)與合作益缎。與其說DevOps是一種開發(fā)方法論不如說是一種組織文化谜慌,DevOps依賴于開發(fā)流程上不同團(tuán)隊(duì)之間的合作。

在傳統(tǒng)方法論中链峭,開發(fā)者傾向于使用單一工具完成一個(gè)任務(wù)并將其傳遞給流水線的下一人畦娄。而DevOps開發(fā)者常使用工具鏈-系列工具使得他們可以與項(xiàng)目的stakeholder持續(xù)溝通與合作。對于需要持續(xù)和盡快更新的項(xiàng)目弊仪,DevOps是一個(gè)好方法但是對于過程驅(qū)動型的公司和項(xiàng)目來說可能會有很多問題熙卡。

迭代遞增 iterative and incremental

針對waterfall開發(fā)的缺陷,迭代遞增方式應(yīng)運(yùn)而生励饵,該模型支持以循環(huán)迭代的方式進(jìn)行開發(fā)驳癌,介于waterfall和敏捷開發(fā)之間。在迭代遞增開發(fā)過程中役听,每次產(chǎn)品遞增都根據(jù)反饋對MVP也就是核心功能加入新的特性颓鲜。

迭代遞增開發(fā)模塊有不同的階段:

  • 開端 Inception:這個(gè)階段明確需求和項(xiàng)目的范圍
  • 思考 Elaboration:根據(jù)開端的需求設(shè)計(jì)產(chǎn)品架構(gòu)
  • 建設(shè) Construction:開發(fā)團(tuán)隊(duì)根據(jù)產(chǎn)品架構(gòu)表窘,分析、設(shè)計(jì)甜滨、實(shí)現(xiàn)和測試代碼
  • 轉(zhuǎn)譯 Transition:將產(chǎn)品推向生產(chǎn)環(huán)境

優(yōu)勢:

  • 易于修改:軟件可以輕易適配新的需求
  • 識別風(fēng)險(xiǎn):開發(fā)在迭代中進(jìn)行乐严,風(fēng)險(xiǎn)也可以在早期識別和解決
  • bug檢測:每次迭代中發(fā)現(xiàn)
  • 易于管理:將項(xiàng)目分解為多個(gè)階段,使得創(chuàng)建衣摩、測試和管理軟件變得容易

劣勢:

  • 完全理解:開發(fā)團(tuán)隊(duì)需要對產(chǎn)品有足夠了解并逐步建立產(chǎn)品

適用于有著清晰需求且不采用waterfall方法的團(tuán)隊(duì)昂验。

不適用于沒有長期未來技術(shù)規(guī)劃的團(tuán)隊(duì)。該方法需要詳細(xì)規(guī)劃和早期的架構(gòu)構(gòu)建艾扮,這意味著對于仍然測試user-case的小項(xiàng)目或正在尋找產(chǎn)品與市場結(jié)合點(diǎn)的團(tuán)隊(duì)并不理想既琴。

迭代遞增與敏捷開發(fā)的對比
遞增中的每次增量都構(gòu)建一個(gè)完整的feature。而迭代中每次構(gòu)建的是所有feature中的一小部分泡嘴。

敏捷開發(fā)結(jié)合了不同方法的不同方面甫恩。在敏捷開發(fā)的sprint中,構(gòu)建每個(gè)feature的一小部分酌予,每次只開發(fā)一個(gè)磺箕,并向其中逐步添加新功能和feature。

V型 V-shaped

V型對waterfall中QA部分做了擴(kuò)展霎终,強(qiáng)調(diào)測試并加強(qiáng)測試的比重滞磺。QA一步擴(kuò)展為unit testing,integration testing莱褒,system testing和acceptance testing击困。
適用于有嚴(yán)格范圍和明確、靜態(tài)需求的小項(xiàng)目广凸。

螺旋型開發(fā) Spiral

螺旋形開發(fā)結(jié)合了V型開發(fā)過程中的測試和迭代遞增方式中的風(fēng)險(xiǎn)評估阅茶。
一旦在某個(gè)迭代周期中計(jì)劃正常進(jìn)行,下一步就是做深度風(fēng)險(xiǎn)分析以識別出誤差和可能引起風(fēng)險(xiǎn)的領(lǐng)域谅海。比如脸哀,你想出了一個(gè)未經(jīng)客戶驗(yàn)證的feature特性想要加到產(chǎn)品中。比起將該feature直接加到milestone中扭吁,你可以先建立一個(gè)原型prototype交給用戶測試撞蜂,之后再將其移動到開發(fā)周期中。每個(gè)milestone完成之后侥袜,范圍像落選一樣進(jìn)一步擴(kuò)展蝌诡,根據(jù)計(jì)劃執(zhí)行開發(fā)并做下一次的風(fēng)險(xiǎn)評估。

適合于開發(fā)大型項(xiàng)目且厭倦風(fēng)險(xiǎn)的團(tuán)隊(duì)枫吧。該方法的核心是降低風(fēng)險(xiǎn)浦旱。如果從事大型或重要項(xiàng)目,在開發(fā)過程中對文檔和驗(yàn)證的要求較高九杂,采用該方法則合情合理颁湖。如果客戶對需求不能完全確認(rèn)宣蠕,并且期待在開發(fā)過程中有大幅修改,這個(gè)方法也適用甥捺。

不適合于大多數(shù)人抢蚀。盡管理論上聽上去新奇,螺旋形開發(fā)過程很少被付諸實(shí)踐涎永,因其高昂的時(shí)間成本思币。相反,該法更多應(yīng)用于對迭代法應(yīng)用于開發(fā)的批判性思考的舉例羡微。

快速應(yīng)用開發(fā) RAD

RAD的目標(biāo)是以最小代價(jià)得到產(chǎn)品最大化的品質(zhì)。RAD以用戶為中心惶我,并依賴于用戶在開發(fā)過程中提供的輸入妈倔。

RAD摒棄了嚴(yán)格的開發(fā)流程,以最快速度開發(fā)出功能性的產(chǎn)品原型绸贡,并不斷打磨直到可以部署到線上盯蝴。

RAD只適用于小型、時(shí)間敏感型項(xiàng)目和有經(jīng)驗(yàn)的團(tuán)隊(duì)听怕。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捧挺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子尿瞭,更是在濱河造成了極大的恐慌闽烙,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件声搁,死亡現(xiàn)場離奇詭異黑竞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)疏旨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門很魂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人檐涝,你說我怎么就攤上這事遏匆。” “怎么了谁榜?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵幅聘,是天一觀的道長。 經(jīng)常有香客問我惰爬,道長喊暖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任撕瞧,我火速辦了婚禮陵叽,結(jié)果婚禮上狞尔,老公的妹妹穿的比我還像新娘。我一直安慰自己巩掺,他們只是感情好偏序,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胖替,像睡著了一般研儒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上独令,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天端朵,我揣著相機(jī)與錄音,去河邊找鬼燃箭。 笑死冲呢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的招狸。 我是一名探鬼主播敬拓,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼裙戏!你這毒婦竟也來了乘凸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤累榜,失蹤者是張志新(化名)和其女友劉穎营勤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體信柿,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甲献,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年宏胯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了况凉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媳握。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖形病,靈堂內(nèi)的尸體忽然破棺而出客年,到底是詐尸還是另有隱情,我是刑警寧澤漠吻,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布量瓜,位于F島的核電站,受9級特大地震影響途乃,放射性物質(zhì)發(fā)生泄漏绍傲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烫饼。 院中可真熱鬧猎塞,春花似錦、人聲如沸杠纵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽比藻。三九已至铝量,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間银亲,已是汗流浹背慢叨。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留群凶,地道東北人插爹。 一個(gè)月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像请梢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子力穗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容