敏捷建模:增強溝通和理解

來源:互聯網
上載者:User

我們都看過有關項目失敗的統計資訊,也可能親自遭遇過失敗。大多數軟體項目都逃脫不了失敗的命運。思考一下,我們會發現導致項目失敗的方式有(顯然這個列表並不詳盡!):


工作方式上的:

  • 團隊不理解提供的需求
  • 提供的需求並不正確

如果我們把這個問題抽象到一個高層次的視圖,可以發現理解問題並形成解決方案是有困難的。

不過這個視圖過於簡化。從問題得出解決方案,我們不應該把這個過程看成是資訊的單向流動,也絕不能把它看成是一次性、瀑布式的過程。這種做法我們先前都見過,它的進展並不順利。

那來更新一下視圖,我們發現問題和解決方案之間互有資訊流,而且需要迭代。

現在的認知已經清楚一些了,不過它仍然很簡單。讓我們更進一層。我們都需要認識到,開發是一項團隊活動。我們會有多個利益相關者,負責設計、開發、部署和運營的人也不少。

這樣我們對這種情形有了更為真實的認識。不過值得思考的空間還是很大。雖然我們力求有一個本地協作的團隊,但事實上我們的工作是分布式、網路化的。

總結一下這個過程,會發現項目的成功受限於我們的如下能力:

1. 理解

  • a. 我們瞭解問題領域嗎?
  • b. 我們是否通曉解決方案領域?
  • c. 我們知不知道兩個領域之間該怎樣轉換?

2. 溝通

  • a. 利益相關者能不能把需求傳遞給確定解決方案的那些人?
  • b. 確定解決方案的人在彼此溝通時能不能把解決方案的細節描述清楚?
  • c. 確定解決方案的人能把挑戰和替代方案準確地告訴利益相關者嗎?

此外,還要認識到一個棘手的問題,就是我們需要處理地理和時間的問題(比如工作地點和時區)。

解決這些問題的方法有很多,它們也能增加項目成功的勝算。但我們應該從哪裡開始呢?從敏捷的一些基本理念(宣言、原則和部分常識)入手是個不錯的主意。

與其把錢砸在一堆工具上(我敢肯定這種投入非常可觀!),並試圖採用命令方式和全方位的流程,還不如讓我們用不同的方法。讓我們更重視人、溝通、互動,來應對變化、交付軟體。怎麼才能用這種方法給人們提供最好的支援呢?

一種常被忽視、低估或誤解的關鍵技術是建模的使用——尤其是我們開始採用敏捷方法之後。在反對重量級的流程和以工具為中心的開發過程時,建模也受到了牽連。讓我們花幾分鐘時間來澄清一下……

我們先統一一下對建模的定義。簡單說來,建模是對現實的簡化。就是這樣,不過如此。它並不意味著要用特定的符號、工具和流程。我們只是想研究複雜的東西,讓其中的一些部分易於理解。正如他們所說,有時候你是見木不見林。不必要的細節反而會讓情況更加難以理解。最好還是隱藏那些不必要的細節,只專註於具體情況的重要方面。

如果對建模的定義達成一致了,那我們就深入一步,考慮下敏捷建模吧。利用敏捷建模,我們可以用一種敏捷的方法去藉助模型進行理解和溝通。很抱歉在這裡進行了迴圈定義,但這很容易讓我們提出問題:“使用模型的時候,我們怎麼採用敏捷方法?”

和一般的敏捷開發一樣,我們用一套價值觀、原則和實踐來進行指導,以便儘可能地敏捷。敏捷建模方法的重點有:

  1. 敏捷建模遵循敏捷宣言和原則。正因為如此,敏捷建模可以是一種實踐,你可以把它添加到你的敏捷工具箱裡。
  2. 模型能用來溝通和理解。
  3. 我們力爭用簡單的工具建立簡單的模型。擁抱簡單。
  4. 我們知道需求是變化的,因此我們在建立模型的時候要擁抱變化。
  5. 我們的重點是交付軟體,而不是交付模型。模型能帶來價值的時候,我們就使用它們。如果模型沒有價值、不能加速軟體的交付,那我們就不建立它們。
  6. 我們只保留需要的模型。如果模型完成了它的使命,我們就可以把它扔掉。這能讓我們輕裝上陣,而不會陷入繁忙的工作。
  7. 我們使用多種模型。我們使用模型時會考慮不同的角度和抽象層次,還有不同的讀者。對於我們建立出來的所有模型,我們都知道它的讀者是誰、要達成什麼目標。要是我們還沒理解目標,我們就不會建立模型。
  8. 根據具體情況、讀者和目標的不同,我們會結合著用非正式和正式的模型。比如說,一個模型可以由多個簡單圖形組成,用來說明系統的隱喻,也可以用UML的類圖。
總結

我們建立軟體解決方案時,建模有助於我們進行溝通和理解。因為在交付軟體解決方案的時候,溝通和理解是最關鍵的兩個環節,所以不應該忽略建模這一有價值的工具。

消除對建模的誤解吧,把它融匯到你的敏捷工作當中。敏捷建模遵循敏捷價值觀和原則,應該成為敏捷工具箱裡的實踐之一。敏捷建模成為工具箱的一員後,會提高項目成功的勝算!

在這個系列的第二部分,讓我們一起更深入地研究一下敏捷建模的價值觀、原則和實踐吧。

資源

AgileModeling.com:Scott Ambler建立、維護的敏捷建模首頁,裡面的資源又好又詳細。

敏捷建模的要點: 這個工作坊主要提供敏捷建模的基本技能。

規範敏捷交付(Disciplined Agile Delivery):提供敏捷交付規範方法的社區網站。

關於作者

Lee Ackerman是The Emphasys Group的產品副總裁和CTO。Lee多年來主要調查、評估新理念,設計、開發解決方案,其他人做這些事情的時候他也會伸出援手。他目前的工作重點是協助一些組織,讓他們藉助自動化、重用和敏捷最佳實務去提升交付軟體的能力。

[1] 《IT項目:超支400%,卻只實現了25%的收益》:這篇新聞研究了IT項目風險和一些失敗相關的驚人資料。

查看英文原文:Agile Modeling: Enhancing Communication and Understanding

註:文章系本人原創:發佈於

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.