在認(rèn)識到開發(fā)流程在某些情況下可能需要更多的靈活性后,基于簡化控制方法和評估此做法中風(fēng)險的機會,敏捷開發(fā)方法提供一個剪裁框架。剪裁程度取決于縮短項目周期的機會是否值得冒險去不按順序或并行執(zhí)行開發(fā)步驟。
與IID類似,敏捷開發(fā)亦因速度和適應(yīng)性而區(qū)別于傳統(tǒng)方法。敏捷開發(fā)在進行中確認(rèn)。通過采用下列七種敏捷SE的關(guān)鍵實踐,任何組織都可以提高其速度以達成客戶滿意。
1. 項目團隊在定義明確的SE流程內(nèi)理解、尊重、工作和行為。這一流程在組織內(nèi)是系統(tǒng)性的,對于參與者是不容置疑的。
2. 項目執(zhí)行期間,盡量縮短項目所用時間或減少人員分流。把握每次機會推進項目向前發(fā)展,特別是關(guān)鍵路徑上的活動。
3. 所有關(guān)鍵參與者均通過物理或電子方式密切協(xié)作,其他參與者7天 ×24小時在線。
4. 對于自動生成的電子文檔有一種很強的偏好。工程師依靠他們的工具和“電子工程筆記本”記錄決策的根本原因。運行和復(fù)用的制品僅在必要時去做——而不是為了支持現(xiàn)有的制度或方針。筆記本是團隊共同擁有且對所有人可用。
5. 通過正式、口頭協(xié)議實現(xiàn)基線管理和變更控制是基于“作出承諾,保持承諾”的紀(jì)律——參與者彼此堅守責(zé)任。決策門協(xié)議通過有約束力的握手而確認(rèn)。這種形式涉及的是行動的約束力,而不是文檔的量。
6. 通過專家咨詢、模型快速驗證以及客戶的緊密合作,完成機會的探索和風(fēng)險的降低。軟件開發(fā)是在快速開發(fā)環(huán)境中完成的,而硬件開發(fā)是在多學(xué)科模型工作場所中完成的。對獲得專家?guī)椭粦?yīng)有阻礙或惰性;需要尋求而不是抵制。
7. 建設(shè)性的面對面文化貫穿于項目組織之中。任何人都應(yīng)主動找問題并將其傳遞給最可能的解決者。任何問題都應(yīng)得到解決。團隊是成功的主體;這絕不是“別人的職責(zé)”。
敏捷開發(fā)原則(適于SE)如下:
● 最高的優(yōu)先級是通過盡早地和持續(xù)地交付有價值的軟件(以及其他系統(tǒng)元素)來滿足客戶。
● 歡迎變更需求,即使是在項目開發(fā)后期。敏捷流程利用需求變更幫助客戶獲得競爭優(yōu)勢。
● 不斷交付可用的軟件(以及其他系統(tǒng)元素),周期從幾周到幾個月不等,且越短越好。
● 在項目中業(yè)務(wù)人員與開發(fā)人員必須每天在一起工作。
● 善于激勵項目人員,給他們提供所需環(huán)境和支持,并相信他們能夠完 成任務(wù)。
● 在開發(fā)團隊內(nèi)部和在團隊之間,最有效的傳遞信息的方法是面對面的交談。
● 工作軟件(以及其他系統(tǒng)元素)是進展的主要度量。
● 敏捷流程促進可持續(xù)的開發(fā)。項目方、開發(fā)人員和用戶應(yīng)能夠維持一個恒久穩(wěn)定的步調(diào)。
● 對技術(shù)的精益求精以及對設(shè)計的不斷完善將提升敏捷性。
● 簡單性——盡最大可能減少不必要的工作的藝術(shù)——這是精髓。
● 最佳的構(gòu)架、需求和設(shè)計出自于自組織的團隊。
● 團隊要定期反省如何能夠做到更有效,并相應(yīng)地調(diào)整團隊的行為。