用例在需求分析中的使用
多年來,分析者總是利用情節(jié)或經(jīng)歷來描述用戶和軟件系統(tǒng)的交互方式,從而獲取需求(McGraw and Harbison 1997)。Ivar Jacobson(1992)把這種看法系統(tǒng)地闡述成用例(用例)的方法進行需求獲取和建模。雖然用例來源于面向?qū)ο蟮拈_發(fā)環(huán)境,但是它也能應(yīng)用在具有許多開發(fā)方法的項目中,因為用戶并不關(guān)心你是怎樣開發(fā)你的軟件。而最重要的,用例的觀點和思維過程帶給需求開發(fā)的改變比起是否畫正式的用例圖顯得更為重要。注意用戶要利用系統(tǒng)做什么遠遠強于詢問用戶希望系統(tǒng)為他們做什么這一傳統(tǒng)方法。
用例的重要功能是用畫用例圖的功能來鑒別和劃分系統(tǒng)功能。它把系統(tǒng)分成角色(actor)和用例(用例)。角色(actor)表示系統(tǒng)用戶能扮演的角色(role)。這些用戶可能是人,可能是其他的計算機一些硬件或者甚至是其它軟件系統(tǒng),唯一的標準是它們必須要在被劃分進用例的系統(tǒng)部分以外。它們必須能刺激系統(tǒng)部分并接收返回。用例描述了當角色給系統(tǒng)特定的刺激時系統(tǒng)的活動。這些活動被文本描述。它描述了觸發(fā)用例的刺激的本質(zhì),輸入和輸出到其他活動者,和轉(zhuǎn)換輸入到輸出的活動。用例文本通常也描述每一個活動在特殊的活動線時可能的錯誤和系統(tǒng)應(yīng)采取的補救措施。
這樣說可能會非常復雜,其實一個用例描述了系統(tǒng)和一個角色(actor)的交互順序。用例被定義成系統(tǒng)執(zhí)行的一系列動作,動作執(zhí)行的結(jié)果能被指定角色察覺到。用例可以:
用例捕獲某些用戶可見的需求,實現(xiàn)一個具體的用戶目標。
用例由角色激活,并提供確切的值給角色。
用例可大可小,但它必須是對一個具體的用戶目標實現(xiàn)的完整描述。在UML中,用例表示為一個橢圓。
角色是指用戶在系統(tǒng)中所扮演的角色。其圖形化的表示是一個小人。在某些組織中很可能有許多角色實例(例如有很多個銷售員),但就該系統(tǒng)而言,他們均起著同一種作用,扮演著相同的角色,所以用一個角色表示。一個用戶也可以扮演多種角色。例如,一個高級營銷人員既可以是貿(mào)易經(jīng)理,也可以是普通的營銷人員;一個營銷人員也可以是售貨員。在處理角色時,應(yīng)考慮其作用,而不是人或工作名稱,這一點是很重要的。
我們使用不帶箭頭的線段將角色與用例連接到一起,表示兩者之間交換信息,稱之為通信聯(lián)系。角色觸發(fā)用例,并與用例進行信息交換。單個角色可與多個用例聯(lián)系;反過來,一個用例可與多個角色聯(lián)系。對同一個用例而言,不同角色有著不同的作用:他們可以從用例中取值,也可以參與到用例中。需要注意的是角色在用例圖中是用類似人的圖形來表示,盡管執(zhí)行的,但角色未必是人。例如,角色也可以是一個外界系統(tǒng),該外界系統(tǒng)可能需要從當前系統(tǒng)中獲取信息,與當前系統(tǒng)有進行交互。
一個用例可能包括完成某項任務(wù)的許多邏輯相關(guān)任務(wù)和交互順序。因此,一個用例是相關(guān)的用法說明的集合,并且一個說明(scenario)是用例的實例。這種關(guān)系就像是類和對象的關(guān)系。在用例中,一個說明被視為事件的普通過程(normal course),也叫作主過程,基本過程,普通流,或“滿意之路” (happy path)。在描述普通過程時列出執(zhí)行者和系統(tǒng)之間相互交互或?qū)υ挼捻樞?。當這種交互結(jié)束時,執(zhí)行者也達到了預期的目的。
在用例中的其它說明可以描述為可選過程(alternative coruse)??蛇x過程也可促進成功地完成任務(wù),但它們代表了任務(wù)的細節(jié)或用于完成任務(wù)的途徑的變化部分。在交互序列中,普通過程可以在一些決策點上分解成可選過程,然后再重新匯成一個普通過程。
角色類和角色實例
軟件產(chǎn)品最終是給一些用戶來使用的,而用戶之間的差異是非常大的。造成差異的原因包括了對計算
項目經(jīng)理勝任力免費測評PMQ上線啦!快來測測你排多少名吧~
http://opto-elec.com.cn/pmqhd/index.html