方法 | 基本原則 | 主要特點 | 限制 |
---|---|---|---|
自閉癥譜系障礙 | ? 適應文化 ? 任務驅動、基于組件的迭代開發(fā)過程鼓勵協(xié)作 | 組織服務于適應性系統(tǒng)的目的,該系統(tǒng)鼓勵出現(xiàn)而不是嚴格的計劃或決定論。 | ASD 與概念和文化有關,而不是實際軟件開發(fā)。 |
數(shù)字數(shù)據(jù)管理系統(tǒng) | ? 利用 RAD 控制、時間盒方法 ? 授權 DSDM 團隊 | 使用原型制作;各種用戶角色,例如大使、遠見者和顧問 | 該方法本身可能適用于所有人;但是詳細介紹該方法復雜性的白皮書僅限于相關利益相關者。 |
經(jīng)驗值 | ? 客戶驅動的開發(fā) ? 每日構建 | 重構——系統(tǒng)不斷地重新設計以適應變化并提高響應能力。 | 不太重視或關注全局視圖和管理。 |
SCRUM | ? 獨立、小型、自組織、自管理的團隊; ? 30 天周期 | 用 Scrum 的新產品開發(fā)視圖取代舊的定義和可重復的軟件開發(fā)方式。 | 30天周期的無縫執(zhí)行雖然有詳細的規(guī)范,但是集成和驗收測試沒有詳細說明。 |
軟驅 | ? 五步流程 ? 面向對象、組件或基于特征的開發(fā) | 方法簡單;系統(tǒng)功能的設計與實現(xiàn);對象建模。 | 只專注于設計和實施。需要其他支持方法。 |
自適應軟件開發(fā) (ASD):復雜軟件開發(fā)過程的極簡方法
介紹
自適應軟件開發(fā) (ASD) 是極限編程和 Scrum 等其他敏捷框架中鮮為人知的框架。它在業(yè)內人士中不太受歡迎的原因可能是一種誤解,認為它不是滿足軟件開發(fā)實驗室不斷變化和快節(jié)奏環(huán)境需求的理想框架。
好消息是這只是一種誤解。而且,壞消息是,它確實粉碎了你的信仰,因此,挑戰(zhàn)你忘卻、重新學習并無縫地適應你自己的新信仰體系!
自適應軟件開發(fā)是最早的敏捷方法之一。它是 Jim Highsmith 和 Sam Bayer 在快速應用程序開發(fā) (RAD) 方面的工作成果。這種方法有趣地驗證了一個事實,即不斷適應軟件開發(fā)過程是很正常的。
這種驗證消除了對任何軟件開發(fā)周期中經(jīng)常涉及的未知和不確定性的恐懼。事實上,這種驗證為后來的方法論以更加開放和平衡的心態(tài)迎接不確定性和混亂鋪平了道路。
然后讓我們探討這種不太流行的自適應軟件開發(fā)敏捷方法的各個方面。
簡短的歷史
自適應軟件開發(fā)是軟件工程中的一個經(jīng)典例子,必然是發(fā)明之母的諺語。在 1990 年代初期,當 Sam Bayer 和 Jim Highsmith 充分利用 RAD 并創(chuàng)建 RADical Software Development 時,他們意識到這些方法還不夠。
重要的是要有一個鼓勵組織內部以及與客戶協(xié)作的過程。他們意識到,他們需要一個讓所有利益相關者都能輕松應對軟件開發(fā)固有不確定性的過程,同時為過程本身的持續(xù)、一致和真正的學習騰出空間。
正是出于這些需求,自適應軟件開發(fā)應運而生。海史密斯在 2000 年出版了一本書,名為:自適應軟件開發(fā):管理復雜系統(tǒng)的協(xié)作方法,拜耳和海史密斯都成為 2001 年敏捷宣言的簽署者之一。
在技術領域,自適應軟件開發(fā)引入了:
更短的迭代
更快的速度
更多協(xié)作
更容易應對不確定性
更加開放地忘記和重新學習。
什么是自適應軟件開發(fā)?
ASD 是一種開發(fā)方法,鼓勵在整個軟件開發(fā)項目中不斷學習。它相信這是順利渡過軟件開發(fā)固有復雜性的唯一正確途徑。遵循嚴格的計劃或原則不會增加業(yè)務或產品的價值;它提出。
自適應軟件開發(fā)制定了最低限度的指導方針,使其成為一種極簡主義的方法,旨在通過刪除所有不“有趣”和“有機”的東西來提高效率。
是的,ASD 強烈提倡一種既有趣又自然或有機的軟件開發(fā)過程。海史密斯對此有一個有趣的術語——涌現(xiàn)。他相信最好的軟件總是偶然的結果。
當必要的情況自行出現(xiàn)時,它們會產生一種有可能改變世界的產品。根據(jù)海史密斯的說法,這種情況的結合就是出現(xiàn)。
以下是定義 ASD 的一些主要原則:
有足夠的出現(xiàn)空間而不是決定論
專注于稱為應用程序功能的結果,而不是任務
與生命周期的表面變化相比,更喜歡管理周期的深層變化
面向高速迭代和生命周期
使用時間盒迭代周期和風險驅動計劃等技術
盡管有足夠的不確定性和混亂空間,但仍能夠快速向客戶交付增值產品的能力。
在自適應軟件開發(fā)中,項目經(jīng)歷一個迭代周期。這個周期涉及三個經(jīng)常重疊的階段。讓我們詳細探討每一個。
我們的產品負責人喜歡我們,因為我們確保不與內置質量妥協(xié)。以下是我們如何引領成功的敏捷轉型。
適應性生命周期的三個階段
適應性生命周期是 20 世紀 80 年代中期開始的螺旋生命周期的演變。螺旋式生命周期的主要問題是它對可預測性的依賴。盡管 RAD 的可預測性和確定性較差,但螺旋式生命周期實踐者的心態(tài)仍未改變。
自適應軟件開發(fā)中的自適應生命周期試圖通過反思來解決改變思維方式的問題,并完全按照該反思命名此過程中的階段。
在軟件開發(fā)過程中將不確定性和混亂視為“正?!钡淖赃m應生命周期的這些階段是推測、協(xié)作和學習。
推測
描述自適應生命周期第一階段的“推測”一詞本身就反映了自適應軟件開發(fā)示例的全部內容。投機階段謹慎而有意地消除了經(jīng)常帶來許多不必要的包袱和緊張的計劃因素。
這個階段讓團隊完全自由地歡迎和接受結果,而不必擔心未知或不確定性。它完全消除了始終正確的有害需求,讓所有利益相關者都放心。
在推測階段:
定義項目任務說明
創(chuàng)建和分享要實現(xiàn)的目標的總體思路
團隊采用可幫助他們在整個項目周期中根據(jù)需求進行調整和更改的工具。
大多數(shù)情況下,投機階段發(fā)現(xiàn)自己分為兩個步驟。這些步驟大致稱為項目啟動步驟和適應性規(guī)劃步驟。顧名思義,啟動的第一步涉及作為項目基礎的東西。這包括項目管理信息、任務說明和其他基本工具和信息。
在自適應規(guī)劃中,不同的產品功能會根據(jù)他們的專業(yè)知識和技能分配給不同的團隊。這需要團隊決定:
項目的時間表
開發(fā)周期數(shù)
根據(jù)一致決定的時間框,每個周期將花費的時間
循環(huán)的主題和目標
每個循環(huán)的組件分配
項目的任務列表
推測階段的目的是:
消除不必要的計劃負擔
開放全流程,創(chuàng)造創(chuàng)新空間
將計劃保持在最低限度或最基本的水平
為最終產品設置適當?shù)目蚣?/span>
允許通過小迭代對每個新的推測階段進行探索和實驗。
自適應軟件開發(fā)的推測階段涉及三個主要工具,團隊使用這些工具開始流程。他們是:
章程:此工具包含帶有視覺摘要的項目愿景。它定義了業(yè)務成果并突出了主要的產品差異化因素。
數(shù)據(jù)表:其中包含項目和客戶的基本信息。這是項目所有利益相關者關注的焦點。
產品規(guī)格大綱:其中包含有關產品規(guī)格的詳細信息。它定義了所需的組件或產品的特性。
合作
正是在這個階段,真正的發(fā)展才開始。這個階段是關于群體出現(xiàn)的。它是關于將不同的經(jīng)驗、知識和技能結合在一起。這形成了一個協(xié)作環(huán)境,在這個環(huán)境中,多樣性是整個開發(fā)周期中創(chuàng)造力和創(chuàng)新的基石。
協(xié)作階段的內在原則是:
多樣性對于有效收集、分析海量數(shù)據(jù)或信息并將其應用于產品開發(fā)至關重要
協(xié)作或協(xié)作環(huán)境是充分利用這種多樣性的唯一真正方式
當這種多樣性被徹底應用時,就不需要構建復雜的應用程序。多樣性使他們能夠有機地發(fā)展。
通過在傳統(tǒng)項目管理技術和漸進式協(xié)作環(huán)境之間取得平衡來實現(xiàn)協(xié)作
一種根深蒂固的感覺,一種開放式的涌現(xiàn)方式。
這些原則可以由了解協(xié)作在自適應軟件開發(fā)中的重要性的強大且經(jīng)驗豐富的團隊來構建。如果團隊遵循相互信任、相互尊重、相互參與和相互承諾的四個基本原則,協(xié)作階段就會取得巨大成功。
學習
自適應軟件開發(fā)全都與實驗和探索有關。因此,它自然也提供了很好的學習機會。學習階段正是關于這一點。
在每次迭代之后發(fā)生的這個階段,敏捷軟件開發(fā)團隊聚集在一起分析其知識、技能和專業(yè)知識水平。這是通過以下方式完成的:
研究技術評論
研究項目回顧
通過焦點小組和其他可能或可用的方式促進用戶反饋。
在其他方法中,學習階段也稱為回顧或回顧。為了充分利用這一階段,應該:
短迭代和多次迭代,因為短迭代意味著更小的錯誤。而且,從小錯誤中吸取教訓比從大錯誤中吸取教訓更容易、成本更低。
幾次密集的迭代將幫助團隊發(fā)現(xiàn)產品中最小的錯誤
最終用戶對用戶體驗的慷慨貢獻
包括開發(fā)人員和最終用戶在內的所有利益相關者對假設的誠實評估
接受消除各自利益相關者的基本假設的結果
就定義適應性周期下一步的共同學習達成共識。
學習階段是適應性生命周期中非常關鍵的階段,因為它為下一步行動定下基調,并在整個軟件開發(fā)過程中引導利益相關者朝著正確的方向前進。這一階段的成功取決于有效的協(xié)作,這是第二階段,也是適應性生命周期的核心。
從頂級軟件開發(fā)公司
構建功能豐富的軟件 950+ 開發(fā)人員 | 10年以上的經(jīng)驗
自適應軟件開發(fā)的主要特征
ASD 不僅僅是構建組件或產品功能。它還涉及對現(xiàn)有組件進行必要的修改。這與它的起源有關。
自適應軟件開發(fā)起源于快速應用程序開發(fā)或 RAD。這是因為意識到 RAD 的機械和極端線性方法不起作用。
為了解決這個問題,Jim Highsmith 和 Sam Bayer 經(jīng)過多年的不懈努力,提出了圍繞持續(xù)開發(fā)過程的適應性生命周期。其主要特點是:
盡管是開放式的,但特定的任務驅動著它
它是一個基于特征的
它鼓勵頻繁和小的迭代
它采用時間盒
它是風險驅動的
它容忍變化
它具有基于組件的循環(huán)。
ASD 的風險驅動功能具有有趣的內涵。這意味著它創(chuàng)造了一種氛圍,在這種氛圍中,失敗是不受抑制的,而且失敗得太快了!當然,它相信快速失敗并通過徹底吸取教訓快速前進!
ASD 中的風險驅動方法要求在項目開始時通過將高風險項目置于周期的早期來識別風險。如果盡早識別風險,則減少組件故障會更容易且成本更低。
而且,如果沒有降低風險的可能性,加速失敗可能有助于在項目開始時相應地修改組件。
自適應軟件開發(fā)宣稱幾乎所有的東西都會過于頻繁地改變,從而徹底改變了軟件開發(fā)過程。它教會了癡迷于計劃的行業(yè)根本不要對計劃挑剔。這有助于它創(chuàng)造一個環(huán)境,在這個環(huán)境中,變化不會壓倒一切,而是激發(fā)創(chuàng)造和創(chuàng)新。
與其他方法的廣泛比較
將 ASD 與其他方法區(qū)分開來的一個主要因素是 ASD 周期是以組件為中心而不是以任務為中心。ASD 中的組件是一組功能,重點始終放在預期結果上。這些特性或組件是協(xié)同計劃、實施和交付的。
ASD 中的組件不僅僅是按鈕、表單字段或其他界面元素等視覺或有形實體。它本質上也包括負責創(chuàng)建這些有形實體的所有無形事物。
存在三個這樣的組件:主要組件、技術組件和支持組件。
主要部件
主要組成部分是指業(yè)務的方式和與之相關的事物。
技術組件
技術組件代表實現(xiàn)主要組件所需的技術基礎設施。它們包括硬件和網(wǎng)絡基礎設施以及軟件基礎設施。軟件基礎設施包括操作系統(tǒng)、數(shù)據(jù)庫、框架等。
通常,技術組件幾乎可以使用。但是,如果不是,則需要根據(jù)自適應生命周期的確切要求安裝它們。
支持組件
顧名思義,它包括其他兩個組件未涵蓋的所有內容。它可能包括與軟件開發(fā)、培訓材料和成功的自適應軟件開發(fā)過程所需的其他類似事物有關的外部因素的文檔。
2015 年,電氣和計算機工程作者兼 Payame Noor 大學教授 Mahdi Javanmard 進行了一項名為:敏捷與傳統(tǒng)軟件開發(fā)方法的比較。
在同一篇論文中,他還比較了不同的敏捷方法。以下是他在同一項研究中提供的表格的摘要:
與其他敏捷方法相比的其他一些差異:
特征驅動開發(fā) (FDD) 為其工程實踐設定了規(guī)定。它的軟件開發(fā)過程取決于工程實踐,例如持續(xù)構建、領域對象建模和個人代碼所有權。
在 ASD 中,絕對沒有堅持任何類型的技術。
與極限編程或 XP 不同,ASD 是一個基于組件的過程,其中組件在推測階段被分配到周期以實現(xiàn)無縫實施。
與此相反,XP 側重于面向任務的方法。開發(fā)人員在當前迭代的每個計劃會議之后挑選故事,將它們分解為任務,估計它們,并就它們的實施達成一致。
自適應軟件開發(fā)的優(yōu)勢
自適應軟件開發(fā)過程應運而生,以擺脫其他軟件開發(fā)過程中存在的問題。了解它的優(yōu)勢會很有趣。
一個精心設計的框架,可以快速開發(fā)復雜的軟件應用程序
更短和更小的迭代有助于在一開始就發(fā)現(xiàn)錯誤
較短的迭代意味著檢測到較小的錯誤,與較大的錯誤相比更容易處理
更短的迭代也具有成本效益
一個有意設計的框架,允許出現(xiàn)、探索和實驗
通過營造協(xié)作和學習的氛圍,鼓勵所有利益相關者之間的絕對透明
將最終用戶及其反饋整合到開發(fā)過程中
以平衡的方式允許多樣性文化
對短迭代進行密集測試以減少出現(xiàn)錯誤和其他漏洞的可能性
非常注重結果
鼓勵責任文化,幾乎沒有留下糟糕結果的余地
自適應軟件開發(fā)的陷阱
任何事物都有一些缺點是很自然的,即使它是為了最高利益。自適應軟件開發(fā)有其自身的陷阱。他們是:
它的開放式方法需要Scrum 團隊具有一定的成熟度和經(jīng)驗。很難有一個成熟且經(jīng)驗豐富的團隊,能夠接受和處理有時的不確定性。
在任務驅動的框架中,一開始就制定了一個非常簡短的計劃。對于習慣于將詳細計劃作為關注點的頭腦來說,這可能是一個挑戰(zhàn)。
自適應軟件開發(fā)在不斷的用戶反饋中茁壯成長。開發(fā)人員必須獲得詳細的反饋,這有時是一個挑戰(zhàn)。此外,最終用戶并不總是清楚他們想要的解決方案是什么。
協(xié)作可能會很棘手,因為它有時可能會導致不必要的會議和討論,從而導致項目延遲。
糟糕的協(xié)作也可能導致模棱兩可的決策。
由于在每次迭代中進行密集和頻繁的測試,基線成本會增加。
隨著自適應軟件開發(fā)過程的快速步伐,細致的文檔變得很困難。
與結構相對良好的其他傳統(tǒng)方法相比,自適應軟件開發(fā)生命周期更難衡量。
它的開放式敏捷方法可能會導致團隊取得不一致的進展。
結論
根據(jù)討論,很明顯,所有敏捷方法論本質上都是在努力擁抱變化,而不是被它淹沒。
所有這些方法,包括自適應軟件開發(fā),都促進協(xié)作、適應和密集迭代。自適應軟件開發(fā)在這些方法中很特別,因為它直接解決了規(guī)劃的諷刺或悖論。
不完全是放棄計劃,而是通過協(xié)作和學習更加重視涌現(xiàn)、探索和創(chuàng)新。對于以下企業(yè)來說,這是一個很好的框架:
? 有信心有足夠的心理和基礎設施準備好接受自適應軟件開發(fā)
? 準備好承擔增加的基準成本
? 渴望看到他們的產品處于不斷發(fā)展的狀態(tài)
? 準備好探索新的想法或方法
? 足夠靈活以適應持續(xù)的風險緩解和測試
如果您是這樣一家企業(yè),認為它確實具備無縫實施自適應軟件開發(fā)框架所需的條件,請不假思索地聘請軟件開發(fā)人員并為之努力!