敏捷軟件開發[中篇]

作者:Brian Swan 10/5/2005
出自: http://www.zdnet.com.cn/developer/code/story/0,3800066897,39375772,00.htm 

我們已經瞭解了敏捷開發如何影響每一個開發人員個體,那麼現在我們可以來看看整個開發小組如何採用敏捷開發的做法。

在《敏捷軟件開發》上中下系列的<上篇>裏,我們探討了開發人員做法,也回顧了技術優勢如何大幅提高軟件質量。第一部分把重點主要放在了測試-編碼-重整循環上。現在我們轉到中間一個圓環,看看敏捷開發做法如何在小組這一層次發揮作用。

讓小組高效工作——小組做法
一旦每個開發人員都在緊密圍繞中心圓環的反饋循環工作時,我們就可以看看整個開發小組能夠如何以更加敏捷的方式工作。小組這一層次的做法是敏捷開發的核心,因爲它們能夠顯示出小組成員可以如何更加高效地一起工作並推動共同進行技術決策。我們將分別從四個方面來討論小組的這種改變——設定基調、基於小組的代碼編寫標準、提高和保持效率、採用“統一小組”方式(包括與開發小組直接相關的東西)的首要步驟。我們給你舉的例子來自於3Q Solutions公司,這是一家生產財物管理系統並完全使用敏捷開發方法的軟件公司。

設定基調——第一步
敏捷軟件開發的一箇中心思想是小組朝着一個共同的目標工作。儘管很多流程都提倡小組工作,但是敏捷開發(真正)融合了支持小組工作的做法,並將小組工作放到了日常做法裏。在開始討論小組做法之前,我們需要先爲小組設定一個基調,讓他們開始感覺更像是一個真正的小組。

開放的工作空間
爲更加開放的、基於小組的敏捷開發方式設定基調的一種最佳方法是爲小組創造一種開放的工作空間(open workplace)。這意味着要建立一個或多個開放的區域,並盡最大可能進行溝通和合作。你想要專門瞭解什麼樣的環境能夠讓配對編程更容易。小格間和辦公室是與敏捷開發開放工作空間格格不入的,所以應該避免其出現。在一家與Exoftware有合作關係的公司裏,開放空間區域只被用於工作,裏面只有用於配對編程、集成和構建軟件的機器。其它的所有區域都留給帶有Internet連接和電話的個人計算機。如果你有這樣的空間,這就是應該考慮的東西,因爲它有助於清楚地表明“當我們在工作區的時候,我們在工作”。

不要低估開放的工作空間對於小組的重要性——這就是爲什麼我們將其作爲第一步的原因。下面的一幅照片就是是3Q Solutions開發小組的工作空間。

 

就如上面圖畫所顯示的,構建服務器能夠向小組提供額外的信息。

 

重要的成功因素

    • 自動化——這需要成爲一個自動化的過程。否則你將不得不專門找一個開發人員來維持構建過程——這可不是一個有意思的工作。首先就要營造環境,取得設備和實現自動化。
    • TCR和配對編程——對於這一層次的集成工作,小組必須按照測試-編碼-重整循環來進行,這樣他們纔有信心保證所有的問題只會發生在集成過程裏。如果沒有TCR循環,這一部分的過程將會非常困難。
    • 按部就班——就像這個小標題說的,不慌不忙地從簡單的地方開始,然後隨着時間的推移來逐步改進——尤其是在代碼編寫標準這一塊。

 

保持高效率——第三步
就如我們在《上篇》裏說的,敏捷開發過程是一項工作強度很大的編程方式。除此之外,軟件開發本身就壓力重重,而小組累垮的可能性非常高。

可持續的步伐意味着開發小組現在和未來的工作都將非常艱苦。加班不是我們希望鼓勵的事情,儘管有的時候需要如此。如果小組不得不加班工作,那麼我們想要嘗試將可持續步伐裏的加班時間控制在一到兩週而不是一到兩個月。再強調一遍,敏捷開發是一項強度很大的工作;配對編程要求很多交互和重視,測試-編碼-重整循環也是如此。儘管敏捷開發會引發我們小組的最大潛能,但是我們需要清楚很多時候的大量加班會累垮整個小組的風險。

重要的成功因素
這是管理者必須十分清楚的一個領域。確保小組在整個項目裏保持合理的步伐是其主要職責。

開始轉移到統一小組——第四步
有的人可能認爲Metaphor的概念應該來得更早一些,但是我們建議在這一階段快結束的時候才引入它,因爲這是我們首次提到客戶/業務方(customer/business)。Metaphor是客戶與開發人員之間系統的通用語言。它看起來可能不重要,但是以Exoftware的政府顧客爲例,開發小組一般都把業務方(也就是定義系統需求的人)當作客戶。但是對於業務方而言,“客戶”指的是最終用戶。這就導致開發人員和“業務方”之間的困惑和挫折。

Metaphor的作用不只是一門通用語言——它還與上下文和對系統是什麼的高層次理解有關。在這裏我們能夠採取步驟做到真正地與我們的業務合作伙伴溝通並共享共同的目標。3Q公司使用一種叫做Adaptor Tree Hierarchy體系,它通過一門客戶/業務方共同認可的語言給予開發人員一個廣闊的系統視野。例如:

ThreeQData

  • todaysDate
  • marriage
    • spouse
    • economicindicators
    • client
      • lossofincomestory
        • annualincome
        • coveramortisationeroision
        • ...
      • managedfundstory
      • pensionstory

這個樹形結構的每一部分都可以擴展出更多細節,能夠輕易地改變,並提供一個很好的系統視角,同爲整個小組提供一門通用的語言。

 

重要的成功因素

  • 堅持到底——只有當你堅持使用的時候Metaphor纔會有效。它將會成爲日常語言的一部分,但是適應它需要花時間。
  • 從基本的開始——從Metaphor的基本框架開始,瞭解它,使用它,然後以此爲基礎來創建它。
  • 取得幫助——讓儘可能多的相關業務方/客戶參與Metaphor的創建——讓其他人儘早參與進來是至關重要的。

敏捷開發的小組做法的目的是幫助小組把重點放在集體工作上,並理解其共有的做法和目標。儘管有的做法,比如代碼編寫標準,能夠在隔離的情況下完成,但是如果與具體的開發人員做法,例如測試-編碼-重整和配對編程結合起來,那麼這些小組做法將發揮最大效用。

本系列的最後一部分將探討開發人員小組如何開始同客戶方/業務構成“統一小組”。

 

Brian SwanExoftware公司教授敏捷開發的指導老師。他在敏捷開發的技術和管理方面具有相當豐富的經驗,曾經帶領很多小組成功地轉換到了敏捷開發,並以敏捷開發的思想和做法來培訓開發人員和管理人員。他在Exoftware公司和在敏捷開發方面的工作使他到過很多公司,並對其開發小組產生了持續的、積極的影響。Brian先前的經驗還包括擔任Napier大學的講師,講授軟件開發和人機互動。Brian可以通過電子郵件聯繫上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章