二是忽視需求定義的準確與共識。系統的用例模型是由多個系統分析員協同完成的,模型本身也是由多個工件所組成。如果忽略了不同工件之間是否存在矛盾或沖突的地方,就會在模型內部產生不一致性,這種不一致性將會直接影響到需求定義的準確性。同時用例模型最大的優點就在于它應該易于被不同涉眾所理解且無二義性,因此用例的粒度、個數以及模型元素之間的關系復雜程度都應該依此原則所決定,從而使準確的需求定義成為 團隊成員和所有涉眾達成共識的基礎。
三是在初始階段過于細化需求。根據RUP對生命周期的階段、目的和里程碑的劃分,初始階段的目的是定義系統的邊界并理解最重要的用戶需求,這個階段最重要的任務是盡快建立可執行的架構,以化解重大 風險,因此不必在初始階段花費太多時間細化需求。這一階段只要得到一個合理并完整的參與者和用例的清單,廣泛而扼要地描述需求,細化基本的或關鍵的用例,就可結束任務,爾后盡早轉入到細化階段,從而為后續的細化需求工作留出充裕的時間。
四是不善于設置需求的優先級。由于 資源或技術條件的限制,不可能把所有需求都一次性完成,這樣就必須進行精心設置,按優先級排序,分批予以實現。為需求設置優先級時應當思考:某個用例是否必須在另一個用例之前實現?是否必須實現整個用例?哪些用例或用例的哪些部分是最重要的?哪一些提供了最多的價值?應把每個需求按對效益的貢獻打分,然后將優先級高的先實現,低的到下一個版本,對不斷進來的新需求也應照此辦理。還要注意的一點是,最合理的需求不一定是要最先考慮的,“經濟為本”應始終是指導優先排序的最高原則。
軟件需求是一個軟件系統必須完成或達到的目標總和,需求管理是指了解、記錄、追蹤不斷變化的需求的一個系統化方法。至今許多軟件開發的實踐都表明,有無良好的需求管理是整個軟件項目成敗的至關重要的一步,是與項目得失關系最大的首要因素。RUP把需求定義為“(正在構建的)系統必須符合的條件或具備的功能”,并描述了如何提取、組織需要的功能和限制;跟蹤和文檔化適中方案和決策;捕獲和進行商業需求交流。在此過程中的用例和場景(用例的實例)的使用,已被證明是捕獲功能性需求的卓越方法,并確保由它們來驅動軟件的設計、實現和測試,使最終系統更能滿足最終用戶的需要。下面對此稍作具體的分析。
一、用例驅動較之功能分解的優勢
在不同行業中,都有很多機會足以去發明產品,或改善制造和管理的過程,而把握機會的一個重要方法就是從問題中找機會。Rational正是一家善于思考問題的企業。
長期以來,在 軟件工程實踐中普遍存在這樣一種認識——用戶知道需求是什么,開發人員要做的就是從他們那里得到需求,并由此做出系統功能的說明;谶@樣的認識和思想指導,傳統的軟件需求規約采用的基本上都是以功能分解的方式來描述系統功能。在這種表述方式中,系統功能被分解到各個系統功能模塊中,通過描述細分的系統模塊功能來達到描述整個系統功能的目的。但采用這種方法來描述系統需求,非常容易混淆需求和設計的界限,其表述中實際上已經包含了部分的設計在內。由此常常導致這樣的迷惑:系統需求應該詳細到何種程度?極端的情況就是需求可以詳細到概要設計,因為這樣的需求表述既包含了外部需求也包含了內部設計。以往在有些公司的開發流程中,對于需求就有"內部需求"(實為內部設計)和"外部需求"之區分與稱謂。
功能分解方法的另一個缺點是它分割了各項系統功能的應用環境,從各個功能項入手,你就很難了解到這些功能項是如何相互關聯來實現一個完整的系統服務的。所以在傳統的SRS文檔中,我們往往需要另外一些章節來描述系統的整體結構及各部分之間的相互關聯,這些內容使得SRS需求更像是一個設計文檔。
通過軟件開發的反復實踐后發現,任何系統都會有很多用戶(或不同類型的用戶),每個用戶只知道其個人如何使用系統,他們并不知道也不想了解系統的內部結構、設計及整體運行情況,他們所關心的只是系統所能提供的服務,也就是被開發出來的系統將是如何被使用的,這就是Rational思考問題的角度,也是創制用例方法的基本指導思想。
用例方法是完全站在用戶的角度上(即從系統的外部)來描述系統的功能,所要回答的問題是“系統應該為每個用戶做什么”。它把被定義的系統看作是一個黑箱,先不去關心系統內部是如何完成它所提供的功能,而僅描述被定義系統有哪些外部使用者(抽象成為Actor)會與其發生交互;針對每一參與者,又描述系統為這些參與者提供了什么樣的服務(抽象成為Use Case),或者說系統是如何被這些參與者使用的。在所有用例構成的用例模型中,判斷系統各項功能是否重要或有價值的 標準,是考慮系統為每個用戶提供的價值,包括該功能輔助哪個用戶進行工作?需要提供什么業務?能夠為業務增加多少價值?因此,用例能夠用于指導找出每個用戶所需要的功能,避免提出用戶根本就不需要的冗余功能,從而有效界定系統的范圍和行為,使整個系統的業務為每個用戶提供最大的價值。
文章來源于領測軟件測試網 http://www.kjueaiud.com/