為開發人員提供的需求管理實踐

發表于:2007-05-24來源:作者:點擊數: 標簽:管理開發需求實踐人員
引言 作為開發人員,是否常常有人要求您對代碼作一些小小的改動,從而使現有系統得到改進?您是否感覺這樣的請求無處不在?您經常依據的規格說明書是否完整或精確?是否經常不清楚這些需求要表達的真正意思是什么?是否感覺無法真正解需求,因此覺得目標也總
引言
作為開發人員,是否常常有人要求您對代碼作一些小小的改動,從而使現有系統得到改進?您是否感覺這樣的請求無處不在?您經常依據的規格說明書是否完整或精確?是否經常不清楚這些需求要表達的真正意思是什么?是否感覺無法真正解需求,因此覺得目標也總是在變化?是否感覺的自己就像是鞭梢,總是隨著客戶的變化而變化。

如果您對以上任一問題的答案是肯定的,那么請繼續閱讀下文,您的問題很有希望得到解決。作為開發人員,您可能認為需求管理(RM)不如設計和實現技巧來得重要。實際上,很多開發人員認為 RM 是項目團隊中分析人員的責任,開發人員在此過程中的任務僅限于接收需求規格說明書。在一個項目中,如果開發人員的角色僅限于需求的接受者,那么您會發現經常需要返工。這將導致延誤項目交付日期,縮小項目的范圍,而且導致交付給客戶的項目質量不合格。而這些將最終導致客戶不滿,客戶的不滿意反過來又會影響項目團隊的士氣和心情。在成功的項目中,開發人員在 RM 中涉足的范圍更廣,扮演著較為重要的角色。這使得他們對開發對象具有更好的控制力,最大程度地減少返工量,最終也就能夠給向客戶交付正確的解決方案。

本文旨在說明在一個成功的軟件項目團隊中開發人員在 RM 中扮演的重要角色。此外,本文還提供了一些 RM 實施方面的技巧,開發人員可通過應用這些技巧,幫助項目團隊在為客戶提供正確的解決方案方面取得更大的成功。

開發人員為什么要關注需求管理?
作為開發人員,您可能認為"我沒有時間進行需求管理",或者"RM 與我毫無關系"。如果情況正是這樣,那么項目團隊如何定義您正在構建的系統功能呢?實際上,您對于項目交付的職責是由某位人員決定并定義的。無論這位人員只是在頭腦中計劃著這些需求、在紙上草畫出需求、在正式會議上討論了需求,還是將需求正式記錄在需求文檔中,每個軟件開發團隊都要涉及某種形式的需求管理。他們可能并沒有意識到,因為他們的 RM 實踐可能極其不規范。不管怎樣,所有軟件團隊都要進行某種程度的 RM。問題只是您的軟件團隊的 RM 實踐的規范化程度如何。

理解開發人員在 RM 中的重要性,有助于反映 RM 的目的。RM 的目的是在客戶和軟件組之間建立共識,其內容包括查找、文檔化、組織并跟蹤不斷變化的需求。與客戶達成共識是計劃和管理項目的基礎。如果項目團隊不能有效管理需求,那么他們達到關鍵里程碑的能力就會受到損害,進而影響項目計劃的精確度和效用。這通常導致開發和測試資源被浪費在錯誤方面。開發人員在 RM 上扮演了重要角色,不僅因為他們根據需求構建軟件,而且因為他們能夠防止項目團隊一開始就使用不完整或者模糊需求。最大化需求的完整性和清晰度是保證整個項目成功的轉折點,可以確保包括測試人員和文檔編寫人員在內的整修團隊能夠在最短的時間內構建質量合格的系統。

RM 的正式程度因項目和項目團隊而異,并且與您的項目團隊在不能交付正確的軟件解決方案方面愿意冒多大的風險直接相關。RM 過程的正式程度越差,項目團隊不能向客戶交付令他們滿意的軟件的風險就越大。幸運的是,項目中 RM 的松散程度是權衡 RM 形式的優缺點之后所作的一個簡明的決定。關于采用松散 RM 過程的最常見的論據包括:它可以使的開發速度更快,可以更好地適應不斷變化的市場,并且不需要正式的需求文檔來了解我們應該創建什么系統。不幸的是,這些論據是項目團隊很難實際把握的,并且需要仔細分析項目成功所需的 RM 正式程度。從根本上說,RM 實踐應該產生:1)所有項目團隊成員都能夠清楚理解的需求,2)對不斷變化的需求的控制,以保證項目團隊能夠跟蹤正確解決方案的交付,3)有效的溝通,以保證整個項目團隊協調一致。

有時使用非常正式的 RM 實踐可能是小題大做。比如,如果您的項目團隊任務是構建一個視頻游戲,那么擴展請求和需求變更就可能頻繁出現,以至于隨后如果使用傳統變更控制過程(需要變更控制委員會的批準)實際上可能妨礙項目成功。這種情況下,變更控制過程實際上限制了開發人員的創新,并且成為軟件交付的瓶頸。然而,即使在這種情況下,項目團隊仍可以使用諸如故事板或原型這樣的RM技術在開發和交付之前驗證游戲創意,并從中獲益。

在另一個極端上,也有極其需要使用非常正式的 RM 實踐的時候。比如,如果項目團隊的任務是開發一個運行醫療設備的軟件,它能根據情況自動管理病人的精確的、正確的用藥量,那么項目團隊就應該采用高度正式的 RM 過程來保證開發出正確的系統。這種情況下需求錯誤的風險可能危及人的生命安全。

那么 RM 如何影響像您這樣的開發人員呢?諸如 Standish Group 報告(見參考文獻)這樣的研究表明,需求錯誤是修復成本最高的錯誤,因為它們出錯的時間越長,影響就越大。隨著軟件開發生命周期的進展,這些錯誤越來越難以糾正,這實際上產生了雪球效應。如果您從一個錯誤的需求或者需求變更開始,那么您的設計就是無效的,這最終會導致進行代價昂貴的構架返工。確認測試也是錯誤的,用戶文檔也不精確,等等。最終,這將導致花費更多的時間來修復問題,而這些是完全可以避免的。

但您是開發人員,而不是分析人員。RM 不是僅用于分析人員的嗎?可以肯定的是,您項目團隊中代表客戶的那些人涉入 RM 最深。分析人員通常負責創建需求。然而,需求的質量不僅僅落在分析人員的肩上。記住,整個項目團隊對需求有一個完整清楚的理解是至關重要的。為了實現這種質量,開發人員必須盡早參與,以幫助澄清最初需求版本中的模糊性。開發人員提供了一種實現視角,能夠提高已編寫需求的質量,并且能夠增加開發解決方案的成功率。與開發人員的合作是"如魚得水";開發人員負責將概念轉化為現實。因此,開發人員越早參與需求的澄清,項目成功交付正確的軟件解決方案的機會就越大。

開發人員還應該關心適當的 RM,因為它可以簡化他們的工作。當從高質量的需求而不是很差勁的需求(這樣的需求總需要團隊成員查找測試內容,并且用各種問題打斷開發人員)開始工作時,質量保證(QA)或質量工程(QE)和文檔編輯團隊的工作就更有效率。另外,維護活動可以減少到只專注于系統中真正的實施缺陷,而不是由不清楚和不完整的原始需求導致的缺陷。更高質量的需求最終能夠保證軟件的質量更高,這使得開發人員可以集中精力思考如何對系統作出改進。

與拙劣的需求管理相關的軟件問題
讓我們看一下可能面對的問題,將它們與拙劣的 RM 實踐中的根本原因掛鉤,并為每個問題提出解決辦法。

問題1:持續變更
市場或銷售人員每隔多久會要求您在代碼中加入客戶請求的變更?通常變更看上去都是很小,并且看上去是合理的。當然您希望能夠成功地完成代碼編寫,所以您非常愿意滿足他們的請求,并且加班加點地在代碼中加入變更。這些持續性的中斷影響您設計和交付優質軟件的效率。您很難集中精力。但是更大的破壞是接受這些隨意的請求對項目計劃和總體軟件質量造成的影響。像這樣持續的中斷使項目計劃超出了最初的范圍,這就是通常所說的"范圍蔓延"。這些打斷分散了項目團隊的思路,使他們無法按照最初目標交付軟件,從而導致所交付的軟件不能滿足客戶期望。

該需求問題的根源在于,項目團隊在接受變更或擴展請求之前不能正確評估它們的影響。

讓開發人員對這些直接請求作出響應,可能導致項目團隊不能正確評估接受變更的整體影響。結果,如果開發人員接受這些乍一看很小的請求,就會導致必須對代碼的其他部分作出必要變更的漣漪效應。同樣,漣漪效應超出了代碼范圍,擴大到了項目團隊的其他領域。比如,如果沒有將變更有效地通知測試人員,那么他們可能就不能構建出必要的驗證腳本來測試變更,從而帶來了影響軟件質量的風險。此外,即使變更只需要開發人員的一點點努力就能實現,但是對 QA/QE 或文檔的影響可能延誤整個項目進度。由于漣漪效應的存在,整個項目團隊為出現的變更召開會議就很有必要。

由于這些依賴關系,開發人員將接受變更的權利委派給項目團隊中對項目交付有著高度和完整預見性的人就變得很重要。為了降低破壞項目穩定性的風險,您只希望接受被項目團隊批準的變更,這樣您就知道您正在實現的是一個商定的功能,并且每個人都有義務測試和記錄該功能。

解決辦法:通過評估變更的影響控制需求變更
良好的 RM 實踐可以避免未經評估就隨意做出變更。他們將變更請求視為"頭等公民",以保證所有潛在的變更都經過檢查,并且接受變更的影響能在影響開發人員的工作之前得到評估。

需求規格說明書應該經過由客戶、開發團隊和測試團隊三方代表組成的小組批準之后才能進行變更。這個小組通常被稱為 CCB。該組的職責是從客戶的角度、開發的角度、測試和文檔化的角度評估每一個被請求的變更。根據應用程序類型的不同,培訓和支持人員可能也需要參與進來。

為什么需要所有這些人參與呢?因為每個代表都在分析實施給定變更請求的潛在影響或成本時具有不同的視角:

    開發代表負責評估變更請求影響的所有軟件設計區域,以及實施變更所需的后續努力。通常需要個別開發人員作為這樣的代表參與分析變更請求的影響。 QA 代表必需評估與接受提議變更相關的測試工作的可行性和程度。我們應該時刻記住變更可能很容易加入到代碼中,但是很難(有時候甚至不可能)測試。 客戶代表提供了業務視角,并保證變更不會使項目偏離最初的業務目標,以及提供有關變更的任何信息來幫助 CCB 理解客戶需要。 最后,為了安全起見,包含來自 CCB 的培訓、支持和文檔化代表也是我們推薦的,因為變更請求通常也對這些領域有影響。

    為了保證評估過程的有效性,CCB 的每個成員應該負責查找一個適當的替代品,以防萬一,從而保證對變更請求的評估絕沒有偏見。對于所有方面都沒有代表的罕見情況,應該將變更請求推遲到以后再評估。

    好的 RM 實踐應該防止開發人員匆忙地對事情做出變更。需求的變更方面,從您編寫它們開始直到交付軟件,都是項目中最難應付的事情。Standish Group 在它 2001 Extreme Chaos 報告中指出:"變更需求就像死亡和稅收一樣確定無疑"。掌握管理變更需求的技巧對于項目的成功很重要,并且它還是一種直接影響開發人員生活的實踐。

    迭代開發取代傳統的瀑布型方法對管理需求變更是一種很大的幫助。在傳統方法中,需求規格說明書在項目一開始就被凍結了,并且直到軟件發布之后變更還不能加入進入。讓變更進入版本中的唯一方法就是直接找開發人員,請求他們變更代碼。這也正是我們前面看到的由于不能評估變更對項目真正的總體影響而導致項目不穩定的方法。迭代開發允許軟件團隊將工作分割成小的部分,其中需求是穩定的并且在迭代過程中保持不變。在下一次迭代開始時,團隊就有機會更新需求規格說明書,以加入上一次迭代中提交和接受的變更。在迭代開發中,規格說明書只在迭代開始時發生變更,而不能在迭代過程中進行變更。這使得我們可以在迭代期間把注意力集中在一組需求上。當下一次迭代來臨時,您就會被分配一組缺陷和新的或更新過的需求。

    問題2:處在影響您工作的變更的盲區
    當需求發生變更時,如何通知您?您的經理被通知嗎?通常開發人員都依據過時的需求工作,因為有些人忘了將影響他們工作的變更通知給他們。

    即使在實際中,QE/QA 和文檔化通常比開發人員更處于盲區之中,經常出現這種情況:沒有及時將間接影響開發人員工作的變更通知開發人員。團隊中的分析人員可能與另一位開發人員討論,衡量變更的影響,但是卻沒有意識到它可能對開發人員工作的影響。

    解決辦法:需求變更通知
    好的 RM 實踐確保在影響您工作的變更發生時,您能夠得到通知。同時通知您應該與哪些人取得聯系,以保證您使用的是最新的需求。

    如何知道需求變更何時會影響您的工作?除非您團隊中的某個人對需求與實現這些需求的設計要素之間的關系進行跟蹤,否則很難快速評估需求變更對設計的影響。好的RM都對需求和設計工件之間的依賴關系做了跟蹤,以便在需求發生變更時您能查明設計的哪一部分受到影響。

    由于需求是不斷變化的目標,所以RM的一個主要利益是能跟蹤需求是否被實現。這就是所謂的可跟蹤性。存在各種級別的可跟蹤性,但不幸的是,同時也有許多方法在濫用可跟蹤性??筛櫺缘娜蝿帐潜WC您為客戶許諾的功能能夠真正實現(由開發人員來完成),并且按照指定的要求工作(由測試人員確認)。為了保證能夠實現需求,并評估需求變更對設計的影響,需求應該被跟蹤到設計元素。為了保證需求發生變更時能夠得到驗證同時測試驗證也得到更新,需求應該被跟蹤到測試工件(通常為測試用例)。

    從需求跟蹤到源代碼會如何呢?雖然乍一看很有吸引力(比如,如果我變更一個需求,我知道哪些代碼必須更新),但實際上代碼在本質上比需求更具動態性。您可以從一個設計開始,然后優化該設計。新設計可能會導致代碼變更,但是它仍與需求一致。維護可跟蹤性鏈接需要花費時間,但是軟件團隊永遠也沒有足夠的時間。所以您應該明智地使用可跟蹤性??筛櫺缘恼嬲齼r值在于將需求跟蹤到設計和測試。編寫代碼實施規格說明書的方法有很多種,但是最終用戶不會關心您編寫的代碼是什么,只要它滿足需要就可以了(需求是清楚無誤地向整個軟件團隊表達這些需要的媒介)。這種情況的一個例外是如果您工作的系統經過了標準實體(如 FDA)的審計,該標準實體托管了從需求到代碼(有時甚至幾行代碼)的可跟蹤性。即使這種情況,您在構建軟件時仍不應該將需求跟蹤到代碼。您只需要報告最終產品需求跟蹤到了代碼,并且每段代碼都實現了一個需求。管理需求和源代碼之間的可跟蹤性鏈接可能是一個沒有多少實效的耗時工作。

    問題3:根據不完整的需求規格說明書編寫代碼
    需求文檔的最初版本中總是存在模糊性,這是您的團隊面臨的主要RM挑戰之一。上一次讀需求文檔并感覺您確切理解了構建目標是什么時候?大部分需求文檔不包含開發人員設計系統所需的足夠信息,而是留下了讓他們"解釋"用戶需要的余地。

    盡管分析人員通過RM會議、聯合應用開發(JAD)會議、會見或者專題組收集和文檔化需求下了不少功夫,但是開發人員在第一次讀完需求之后還是有很多疑問。不管分析人員多么專業,都會出現這種情況。通常,開發人員只提供了一個可能被分析人員忽略的不同的視角。比如,開發人員通常會提出系統用戶可能遇到而分析人員卻沒有意識到的異常情況。因此,開發人員和分析人員必須緊密合作,在開始設計之前精化原始的需求規格說明書。開發人員應該無拘束地向分析人員提出有關需求規格說明書的問題,而分析人員則應該提供答案,必要時甚至可以直接與客戶聯系。

    解決辦法:詳細且無歧義的需求規格說明書
    好的RM實踐認識到需求規格說明書的初版需要項目團隊的檢查,并且還需要開發人員關于該規格說明書的提問。因此,必須給予開發人員足夠的時間來檢查并提出關于需求的問題。反過來,負責任的需求分析人員應該回答工程師提出的問題,并將這些澄清記錄在需求文檔中。出于項目規劃的目的,應該為這種檢查分配時間,尤其是讓分析人員直接與客戶一起檢查未知問題以獲得更多細節的時間。因此,需求規格說明書檢查應該成為常規工作,而不是項目中的例外情況。最后,在開始設計之前應該解決所有的開發人員問題。如果完備的需求規格說明書檢查受到影響,那么您的項目團隊就面臨著工程師在系統設計中引進不希望的假定的風險。

    除了檢查之外,另一種可用的有效實踐是使用用例來表達功能需求。用例通過從用戶的觀點將系統功能記錄為一系列步驟描述了系統與外部世界交互時的行為。該視角為軟件團隊和他們的客戶提供了對待建系統的預期行為的共同理解。通過最小化需求誤解的風險,用例還能夠提高需求的清晰度。比如,在使用用例的項目中,分析人員通常只注意主要用例(關于如何使用系統的用法場景)并且相信沒有大問題。然而,一旦開發人員開始通過識別所有備用流(在出錯情況下的備用用法場景)來整理用例的細節,真正的問題就浮出水面。如果開發人員在設計之前沒有進行這種細化,那么該設計就需要多次返工,以便包含所有的用戶場景。該細化過程中,能否在開發人員和分析人員之間建立起關鍵的交流關系,通常決定了能否成功交付最終產品。

    然而,必須注意到并非所有需求都可以用用例表達。比如,可靠性性能需求更適合以聲明性的形式表達(如,"系統應該……"),但是用例確實提供了一種從各種視角記錄系統的用戶體驗的機制。通過專注于用戶觀點,用例還避免了在需求規格說明書中引進設計元素的問題,從而將設計者從無根據的設計約束中解脫出來。

    問題4:根據過時的需求規格說明書編寫代碼
    在可以開始設計和編寫代碼之前,需要了解交付目標,并且分析人員負責確認您理解了客戶需要。這是需求規格說明文檔的任務。它必須保證項目團隊中的每個人對要將要開發用來解決客戶提出的特定問題的系統有著共同理解。如果需求規格說明文檔的角色已經給定,那么開發人員就可以很容易地定位文檔,更重要的是定位它的最新版本。這看上去可能沒有什么意義,但經過驗證它非常靈活。通常,要按照特別的基礎來檢查規格說明書,并且還要做出決定和假設。不幸的是,在這種情況下,需求并不總能及時得到更新。此外,更新過的需求不能總是重新分發給項目團隊。另一種情況可能是更新過的需求被重新分發之后,淹沒在每個人郵箱中的郵件堆里,無從尋覓。最后,保證最新的需求并提供對它們的訪問應該是項目團隊的標準實踐。

    解決辦法:最新的規格說明書隨時可用
    好的 RM 實踐為管理需求規格說明書清楚地確定了一個中央知識庫,這樣每個人都能總是得到最新的需求版本。作為開發人員不能依賴電子郵件時間標記,您可以保證不以一個過時版本的需求文檔開始工作,從而不浪費時間和精力。此外,與項目團隊交流(通過電子郵件、電話、會議等)需求已經被更新的消息也是一種良好、健康的實踐。

    在機構中改善需求管理的六種技巧
    本節,我們提供為開發人員提供簡單有效的指導,幫助他們避免前面討論過的軟件問題。

    技巧1:參與建立變更請求過程
    這可能看上去令人畏縮,但實際上卻很容易實現。簡單地說,任何變更請求在被接受之前都應該經過確認。

      建立變更請求過程的第一步是確定您的團隊如何收集和管理變更請求。最簡單的方法是創建一個標準的紙張形式表格,每個人都可以通過電子郵件或者親自填寫該表格。更健壯的方法是使用某種程度的自動化工具支持。 接著,您需要確定如何存儲這些請求。這些紙張形式文檔可以存放在一個三環的活頁夾中嗎?或者您會使用有些種類的電子數據庫?使用商業性的缺陷與變更跟蹤工具(如 IBM Rational ClearQuest),允許在Web上提交變更請求,不需要本地軟件安裝,并且允許 CCB 進行查詢以篩選變更請求并確定接受哪些,從而極大地簡化了變更請求的管理。 然后項目團隊需要決定 CCB 多久應碰一次面來檢查變更請求,并且要決定在確定應該實現哪一個時所使用的標準。

      技巧2:在加強已建立的變更請求過程中學會說"No"
      作為開發人員,您在成功建立變更請求過程中扮演了關鍵角色。越是沒有讓 CCB 評估它們就接受和實施來自典型來源(如,銷售人員、客戶和高級經理等)的特別變更請求,項目團隊就越感覺變更無窮無盡。同樣,這只會增加直接奔您而來的特別請求的數量,因為請求者知道您是他們實現希望的特性所可以依賴的人。

      為了幫助控制影響您項目團隊的持續不斷的變更,您必須學會向請求者說"不",并且將他們引導到您已建立的變更控制過程。這看上去可能很容易,但是這通常會導致高壓情形。比如,最成功的銷售人員可能很有影響力和說服力,并且通常是很多特別請求的煽動者。銷售人員通過說這樣的話來施加壓力,"如果您添加那個特性我就用不著 XYZ 賬戶了"或者"我最近從競爭對手那里丟掉了很多生意,因為我們沒有 ABC 特性"。不管他的論據看上去多么充分,您和開發團隊都必須表現出堅定的原則,并禮貌地將這些請求者引導到您已建立的變更控制過程中。這些請求者的行為不可能一夜之間改變,但是假以時日,一定會有所改觀。

      技巧3:建立和參與需求規格說明書檢查
      需求規格說明書檢查是確認是否理解需求的簡單有效的方法。作為開發人員,您知道不管何時收到一組需求您都會有很多問題,因為有些規格說明書不清楚或者是含糊的。與其猜測規格說明書的意圖,從而增加不能交付客戶期望的軟件的風險并導致返工,不如為項目計劃分配時間進行定期的需求規格說明書檢查。這些檢查不需要很正式,相反它們應該是一個開放的論壇,需求規格說明書的特定部分都可以拿來與指定的開發人員公開討論,以保證人們清楚地理解了這些需求。

      作為開發人員,應該主動參與這些檢查會議,并且應該在對需求的解釋的基礎上準備一個初步的設計或者概念。該過程本質上是高度迭代的,因為在開發團隊能夠對需求有一個清楚的理解并且開始設計之前通常需要多次會議。同樣,通過這些迭代,保證所有變更被正確捕獲和記錄就是分析人員的責任了。在您以及其他開發人員開始設計之前,整個項目團隊必須對所有需求有一致的理解。

      此外,需求規格說明書檢查的迭代本性為項目團隊提供了一種自我檢查機制,保證了軟件需求和初步設計的質量。通過保持這兩個工件的同步,項目團隊會保持同步前進,并增加交付成功解決方案的機會。因此,在實際階段應該分配時間進行需求規格說明書檢查。經常在設計階段,很多開發人員在需求規格說明書檢查中發現更多的含糊性需要澄清。這里再一次需要需求規格說明書檢查。

      技巧4:需要一個術語表
      術語表是消除需求規格說明書中模糊性并避免誤解的簡單卻強有力的手段,應該由分析人員擁有、開發和維護。由于時間的限制,項目團隊成員可能不知道他們對同一需求有著不同的解釋。術語表不需要列出需求規格說明書中用過的每一個詞匯,但是它必須包含可能有歧義的詞匯。術語表通過給出需求規格說明書中關鍵詞匯的定義,消除了模糊性。如果術語表中的詞匯有具體和重要的關系(比如,在構建財務應用中,客戶可能只有一定數目的賬戶,并且同一賬戶不能被兩個以上的人擁有),您可能希望用一個域模型來補充術語表。該域模型可視化地描述了客戶與賬戶之間的一致關系,因為開發軟件時需要考慮這些關系。

      項目團隊的任何成員都可以建議分析人員在術語表中添加詞匯,但是整個項目團隊必須對詞匯的定義達成一致。作為開發人員,您必須保證清楚地理解了影響您正負責開發的系統領域的關鍵詞匯。

      技巧5:堅持項目遠景以幫助提供解決方案的環境
      為了幫助獲得對正在構建的軟件應用程序的理解,項目領導人或者分析人員應該將項目團隊要解決的特定業務問題文檔化。由于時間壓力,很多軟件團隊沒有花時間分析他們將要解決的業務問題。相反,他們將重點放在他們負責的特定需求上,并且盡可能快地轉移到設計上。如果沒有理解業務問題,開發人員就面臨著開發出來的產品不不能滿足客戶希望的風險。

      讓我們暫且考慮一下車模配件吧,完全包裝在一個很好看的盒子里,盒子上印著一個完整的汽車。您打開之后會看到說明書以及大量需要粘合在一起的零部件。如果您只是一頭扎進說明書,開始構建您的車模,那么您將不能得到包裝盒上所描繪的漂亮的小汽車。您將得到一個不倫不類的東西。然而,如果仔細研究盒子上的圖片,然后再根據說明書組裝汽車,那么您將得到正確的最終產品,一輛令您興奮的小汽車。在這項比喻中,盒子上的汽車圖片就像是遠景,說明書就是需求。同樣,在軟件項目中,項目團隊需要知道遠景,以便為客戶構建正確的解決方案。作為開發人員,在您研究需求并開始設計之前,先檢查項目的遠景文檔。如果它不存在,那么可以向項目領導人或者分析人員提出該問題,并堅持讓他們為您開發一個。這樣就可以節省大量的時間,避免浪費在開發無用軟件上。

      技巧6:采用用例來說明系統功能
      以用例的形勢表達功能性需求,以更好地理解用戶如何使用該軟件。通過創建軟件的用法故事,用例幫助我們整理需求細節,并避免了開發人員的很多猜測工作。用例在為技術和非技術人員提供需求表達格式方面具有獨特作用。它們創建了一個通用描述,表達了軟件應該為用戶提供哪些功能。通過避免需求傳統的用戶和系統表示(通常導致技術性稍差的分析人員和技術性很強的開發人員之間的脫節),用例給予軟件團隊對預期系統功能達成一致理解的更好機會。

      此外,用例故事板是構建用戶接口原型以確認需求的另一種不錯的方法。用例故事板是關于用例中描述的功能如何以用戶接口表示的邏輯和概念性描述。用例故事板尤其適用于理解可用性需求。它們代表了用戶接口的高級理解,并且開發起來比實際的用戶接口更快。用例故事板因此可用于在各種用戶接口被原型化、設計和實現之前對其進行討論。

      編寫良好的用例已成為一種實踐,IBM Rational 在 Rational Edge (http://www.therationaledge.com)上提供了關于如何編寫良好用例的在線研討會和各種文章。此外,對于現有的 IBM Rational 客戶,Rational Developer Network 上也有大量的信息。

      利用工具自動完成需求管理過程
      在進行需求管理時能給予軟件團隊的最大幫助就是過程指南。一個 RM 工具本身可能有幫助,但是只能達到過程還不錯的程度。此外,RM 工具只能幫助自動完成部分過程。比如,沒有工具能夠取代項目團隊成員之間的交流需要。為了成功,首先把重點放在您機構的 RM 實踐上,并保證它們是健康的,能夠正常工作。只有此時,您的項目團隊才能從使用 RM工具中獲益。

      IBM Rational 提供了完整的 RM 解決方案,包括 IBM Rational Unified Process? (RUP?)中的過程指南、利用 Rational RequisitePro? 進行的工具自動完成,以及來自 Rational University (http://www.rational.com/university/index.jsp)的公共或現場課堂。IBM Rational還通過當地的客戶服務部門提供了各種形式的現場專業服務。

      需求管理最佳實踐
      幾本書中總結了最佳實踐(見本文推薦的一些參考書目)。然而,及時訪問指南通常是確保遵守指南的最佳實踐。這也正是 IBM Rational 為什么在 RUP 中以可導航和可搜索的 Web 站點的形式發布在線軟件開發過程指南的原因。這些指南包括用于有效管理需求的角色和職責。您可以從 http://www.rational.com/products/rup/index.jsp 上大概了解一下 RUP。

      圖1 Rational Unified Process 中的最佳實踐
      圖1 Rational Unified Process 中的最佳實踐

      RUP 還包括工具指導,告訴您如何利用 Rational RequisitePro 實現 RM 最佳實踐。

      圖2 Rational RequisitePro Tool Mentor--Rational Unified Process 中的工具指南
      圖2 Rational RequisitePro Tool Mentor--Rational Unified Process 中的工具指南

      一種用于開發人員的需求管理工具
      通過自動完成RM的部分過程,Rational RequisitePro 為開發人員提供了如下利益: