程式設計·用例,概念,如何理解用例,USE CASE的來歷,創建USE CASE的原則,Use Case 事件流,Use Case 說明書,Use Cases將做成多大,Use Cases的說明,使需求有利於回顧,Use Cases的圖形符號,Use Case 的評價標準,Use Case 模型評價標準,使用Use Case 的誤區,套用的複雜性和危險,Use Cases的適用性,Use Case的描述,小結,
試圖決定Use Case的大小是一個很有趣的話題,處理這件事的一個方法是將Use Case的大小跟它的意圖和範圍關聯起來,對於一個真正大的範圍來說,一個Use Case並不要在一個系統中處理那么多,但這些系統都用於同一商業領域,稱為Business Use Case,它把整個公司看作一個黑盒和Actor關於公司目標的說明。這些Business Use Case的場景不允許假定任何公司內部的結構,一個客戶將向公司下一個定單而不是客戶服務部門。
對於系統發展而言,Use Case的範圍限制一個單一的系統,這是Use Cases最通常的形式,我們稱之為System Use Case,它把整個系統看作是一個黑盒,它不指定任何內部結構並且僅受限於問題域的語言描述。
Use Cases的另一範圍是設計子系統和系統內部組件的,稱為Implementation Use Cases,它把組件看作一個黑盒,並且這些Actors是區分它的成員。例如:可能會用Implementation Use Cases去說明套用系統中email組件的需求。
Use Cases圖沒有顯示不同的場景,它們的意圖是顯示角色和Use Cases之間的關係。所以Use Cases圖需求用結構化敘述文本來補充。UML提供一些可供選擇的圖來顯示不同的場景,這些常規的圖形有互動圖、活動圖、順序圖、狀態圖等。使用這些圖的主要缺點是它們不象文本一樣是緊密的,但它們能用於給出Use Case的整體感覺。
Use Case 的評價標準
是否每個Use Case 都包括至少一個actor?
是否每個Use Case 都獨立於其他Use Case?
是否每個Use Case 都有一個簡單的行為或事件流?
是否每個Use Case 都有一個唯一的、直觀的、可擴展的名稱,使它不至於在後期被混淆。
用戶是否容易理解Use Case 的名稱和描述。
Use Case 模型評價標準
Use Case模型顯示系統中的Use Case與Actor 及其相互關係。其評價標準有:
Use Case 模型是可理解的嗎?
通過對Use Case 模型的研究是否能對系統功能有一個清晰的概念。
所有的actor都定義了嗎?所有的功能需求都滿足了嗎?
Use Case 模型是否存在多餘的行為。
從模型到Use Case包的劃分是否是恰當的。
使用Use Case 的誤區
由於具有簡單的圖形符號、易理解的自然語言說明書,Use Case在文檔系統和軟體需求領域成為一 項越來越受歡迎的技術。Use Case對開發小組極具吸引力,即使小組成員對正式的需求文檔沒有經驗,但這些簡單性卻具有欺騙性,即使項目小組在開始使用Use Case 時沒有任何麻煩,當他們將其套用於大項目時常常會遇到許多同樣的問題。
使用 use case 十大誤區
系統的boundary 沒有定義或經常改變;
從系統觀點而不是actor觀點來定義Use Case;
Actor的名稱不一致;
Use Case 定義過多;
Use Case 和actor之間的關係象蜘蛛網一樣錯綜複雜;
Use Case的說明太長;
Use Case的說明不清楚;
Use Case沒有正確的描述功能需求;
用戶無法理解Use Case;
Use Case 無法正常結束。
2 如何避免以上問題
清楚的確定系統的boundary.
簡單來說,系統的boundary就像一個加了標籤的盒子,actor在盒子外,而Use Case在盒子內。我們稱之為系統的這個盒子究竟是什麼呢?一個計算機系統?一個套用系統?或一個完整的企業?…Use Case 可以用來合理地描述任意系統。但一次只能用來描述一個系統,在一個系統中恰當定義的actor和Use Case用於另一個不同的系統中就會出現錯誤。
使用標準模板書寫Use Case 說明書
Use Case 圖形符號已經被標準化並作為對象管理小組UML的一部分,但自然語言的Use Case 說明書還沒有被標準化。為了成功書寫Use Case 說明書,我們需要一個標準模板來保證Use Case 的一致性。
關注actor的真正目的,從actor的觀點而不是系統觀點來命名Use Case
面向Use Case 的需求與傳統的功能性系統需求之間最顯著的區別在於actor ,以面向Use Case的觀點,系統存在是由於actors 要通過該系統實現某些目標,actor與系統進行互動來實現其目標,我們將這些互動行為定義為Use Case 。
不要將Use Case 說明書與用戶接口設計相混淆
有一種很流行的觀點:由於Use Case 是actors 與系統之間的互動,所以將所有的用戶接口設計圖放在Use Case說明書中是一個好辦法。初看時,這的確很有用,因為它將在說明書中描述的actor/系統之間的互動行為以圖的形式表示出來,非常直觀。但是這樣做的負面影響卻遠遠大於其好處,用戶接口設計可能會隨著時間而改變,我們不應該讓系統需求依賴於用戶接口設計,相反地,用戶接口設計應該滿足Use Case 需求。如果我們將用戶接口設計置於Use Case 說明書中,當需求需要被認可和定為基線時,很自然地,這些設計元素可能仍然在改變,這就使得用戶接口設計成為不完整的、不正確的和/或不一致的。
將用戶接口設計置於Use Case 說明書還會出現另一個問題,為了在Use Case 之間和接口之間建立一對一的通信,我們會選擇反映用戶接口的Use Case塊而不是反映用戶目標的Use Case 塊,這樣,為了表達一個完整的用戶目標,我們使用互動Use Case 關係,將不同的、基於用戶接口的Use Case 聯接起來,結果在Use Case 模型中,我們得到了一幅類似蜘蛛網的關係圖。實際上,這副圖是用戶接口說明圖,雖然它在系統文檔中是很重要的一部分,但他屬於用戶接口設計文檔,而不是Use Case 需求文檔。
實現用戶接口和Use Case 互動之間的鬆散耦合
鬆散耦合是比較合適的,低逼真度的用戶接口圖有助於理解Use Case ,但要注意不要過度的將基本互動與用戶界面機制相連,用戶界面很有可能會改變。在功能說明書中,要注意actor做些什麼(如"提交請求")而不是互動是怎樣完成的(如"雙擊提交按鈕")。
不要在Use Case 和用戶接口之間建立通信
試圖在Use Case 和用戶接口之間建立通信可能會存在潛在的、不正確的功能操作。Use Case 不僅與只能訪問某個接口的actor相聯,而且與那些能夠更新該接口的actors相連(這可能是例外流),結果就造成了不正確的功能操作。我們應該在基於實際用戶目標和功能操作的基礎上拆分Use Case ,而不是在基於用戶接口的基礎上組合Use Case ,只有這樣才能得到正確的Use Case 模型。
回顧Use Case 模型和Use Case 說明書,如果你不能防止所有的誤區,你應該儘早認識問題並確定問題
這個觀點並不是什麼新東西,有關代碼檢查的經典算法已有大約25年歷史了,但怎樣將其套用於Use Case 呢? 首先,回顧Use Case 模型,回顧一下Use Case 的簡單說明(Use Case 名稱、目標、簡單描述)。這項工作應在繪製草圖時儘早執行,並在寫詳細的Use Case 說明書之前完成。接著是回顧Use Case 草圖,保證圖是正確的,並且詳細的Use Case說明書是完整的。最後是正式回顧最終的Use Case 圖和Use Case 說明書。