官术网_书友最值得收藏!

1.4 敏捷軟件項目管理

1.4.1 關于敏捷

軟件項目是一類特殊項目,是腦力成果,而且依賴于用戶需求,具有不斷變化的特征。軟件開發具有唯一性,是一次性的,這些都決定了軟件項目的工程化有一定的難度。

從系統角度看軟件項目,傳統軟件開發面臨很多挑戰,例如質量問題、測試問題、用戶問題、進度問題、成本問題、團隊的溝通問題等。快速變化的環境要求快速的開發和快速的提交,這促成了敏捷模型的產生。敏捷開發(agile development)是一種靈活的開發方法,用于在動態環境中向干系人快速交付產品。其主要特點是關注持續的交付價值,通過迭代和快速的用戶反饋管理不確定性和應對變更。

由于高新技術的出現,技術更迭速度越來越快,產品的生命周期日益縮短,企業要面對新的競爭環境,抓住市場機遇,迅速開發出用戶所需要的產品,就必須實現敏捷反應。與此同時,業界不斷探尋適合軟件項目的開發模式,其中,敏捷軟件開發模式得到大家越來越多的關注。

高度不確定的項目變化速度快,復雜性和風險也較高。這些特點可能會給傳統預測法帶來問題,傳統預測法旨在預先確定大部分需求,并通過變更請求過程控制變更。而敏捷方法的出現是為了在短時間內探討可行性,根據評估和反饋快速調整。

2001年年初,許多公司的軟件團隊都陷入了不斷增長的過程的泥潭,一批業界專家聚集在一起概括出一些可以讓軟件開發團隊具有快速工作、響應變化能力的價值觀和原則,他們稱自己為敏捷聯盟。在隨后的幾個月中,他們發表了一份價值觀聲明,即“敏捷宣言”,正式宣告敏捷開發運動的開始。

1.4.2 敏捷項目管理

“敏捷宣言”代表了敏捷的核心價值,其內容如下。

? 個體和交互勝過過程和工具(individuals and interactions over processes and tools)。

? 可以工作的軟件勝過面面俱到的文檔(working software over comprehensive documentation)。

? 客戶合作勝過合同談判(customer collaboration over contract negotiation)。

? 響應變化勝過遵循計劃(responding to change over following a plan)。

上述4個核心價值對應以下12個原則。

? 我們最先要做的是通過盡早地、持續地交付有價值的軟件來使客戶滿意。

? 即使到了開發的后期,也歡迎改變需求。敏捷過程利用適應變化來為客戶創造競爭優勢。

? 經常性地交付可以工作的軟件,交付的間隔可以從幾個星期到幾個月,交付的時間間隔越短越好。

? 在整個項目開發期間,業務人員和開發人員應盡可能在一起工作。

? 圍繞被激勵起來的個體組成團隊來構建項目。給他們提供所需的環境與支持,并且信任他們能夠完成工作。

? 在團隊內部以及團隊之間,最有效果并且最有效率的傳遞信息的方式就是面對面的交流。

? 可以工作的軟件是首要的進度度量標準。

? 敏捷過程提倡平穩的開發。發起人、開發者和用戶應該能夠保持長期的、恒定的開發速度。

? 不斷地關注優秀的技能和好的設計會增強敏捷的能力。

? 簡單—使未完成的工作最大化的藝術—是根本的。

? 最好的架構、需求和設計出自自組織的團隊。

? 每隔一定的時間,團隊會在如何才能更有效地工作方面進行反思,然后相應地調整自己的行為。

盡管這些原則源自軟件行業,但已經擴展到許多其他行業。這種思維模式、價值觀和原則定義了敏捷方法的組成部分。今天所使用的各種敏捷方法都植根于敏捷思維模式、價值觀和原則,它們之間的關系如圖1-23所示。

圖1-23 敏捷思維模式、價值觀和原則之間的關系

圖1-24是在艾哈邁德·西德基(Ahmed Sidky)啟發下提出的模式,它將敏捷明確表述為一種思維模式,由“敏捷宣言”的價值觀所界定,受“敏捷宣言”原則的指導,并通過各種實踐實現。總之,敏捷方法是一個囊括各種框架和方法的涵蓋性術語,它指的是符合“敏捷宣言”價值觀和原則的任何方法、技術、框架、手段或實踐。敏捷開發是一種靈活、快速的開發方法,可以應對迅速變化的需求,是一種迭代、循序漸進的開發方法。

敏捷思維主要體現為快速交付成果并獲得早期反饋,同時強調以一種透明的方式工作,從圖1-25可以看到,第一種方式是比較模糊的項目管理方式,而第二種方式更加透明和具體。

圖1-24 敏捷是許多方法的總稱

圖1-25 模糊和透明方式的比較

敏捷軟件開發是一種面臨迅速變化的需求快速開發軟件的能力,是對傳統生存期模型的挑戰,也是對復雜過程管理的挑戰,是一種以人為核心、迭代、循序漸進的開發方法,是一種輕量級的軟件開發方法。傳統軟件項目管理更傾向于不考慮項目后續需求的變化,在項目開始時預測用戶需求,然后凍結需求,制訂相應的開發計劃,再按照計劃執行。與之形成鮮明對比的是,敏捷軟件項目管理通過不斷的用戶反饋動態調整需求,最終達成目標。這種自適應的特性使敏捷開發的產品更符合實際需求,如圖1-26所示。

圖1-26 敏捷軟件項目管理與傳統軟件項目管理的比較過程

隨著云技術和敏捷思路的發展,云原生(cloud native)產生了。云原生是Matt Stine提出的一個概念,它是一個思想的集合,包括DevOps、持續交付(continuous delivery)、微服務(micro service)、敏捷基礎設施(agile infrastructure)、康威定律(conway's law)等。云原生包含一組應用的模式,用于幫助企業快速、持續、可靠、規模化地交付業務軟件。云原生由微服務架構、DevOps和以容器為代表的敏捷基礎架構組成。因此,技術的發展也推動了敏捷軟件項目管理的發展,如圖1-27所示。

敏捷軟件項目管理是應對快速變化環境的開發模型,以多迭代為代表,每個迭代在短期內完成一個有價值的、可用的結果。敏捷起源于軟件,但是已經應用于很多行業。特斯拉采用了敏捷開發的原則,并建立了自己的工廠來模仿這一方法論的基本原則。一個由機器人和靈活、適應性強的工廠組成的系統本質上是一種簡單的編程語言,可以隨著用戶需求的變化進行動態調整。例如,如果特斯拉的工程師設計出一種更好的車門—更輕、更安全、更便宜—特斯拉就可以重新規劃工廠來制造新的車門,并將其整合到現有的工廠流程中。這家工廠可以隨著新需求的添加和設計而進行調整。

圖1-27 技術與管理相互促進

主站蜘蛛池模板: 牙克石市| 岗巴县| 屯昌县| 乌鲁木齐市| 固安县| 调兵山市| 曲阳县| 株洲县| 厦门市| 阿拉善右旗| 贡山| 商南县| 泸州市| 南宫市| 金阳县| 土默特左旗| 峨边| 崇阳县| 屏东市| 罗山县| 井研县| 文成县| 白城市| 大方县| 陇南市| 彰武县| 西峡县| 思茅市| 托里县| 江城| 门源| 泾源县| 朔州市| 东明县| 博乐市| 岢岚县| 墨江| 平阴县| 遵义市| 蒙山县| 邵阳市|