Constantine和Lockwood的例子如圖1和圖2所示。圖1采用一般用例,用“用戶動作”和“系統響應”進行描述,圖2采用本質用例,用“用戶意圖”和“系統職責”進行描述?梢钥吹,采用本質用例的描述更抽象,更易于適應具體實現的變化,它更簡短而且易于理解。
Jacobson使用用例支持面向對象的軟件設計; Constantine 和Lockwood提出了本質用例和更廣泛的基本模型框架,以支持界面設計和開發。我們注意到除了面向對象的軟件開發外,本質用例實際上是毫無用處的。換句話說,本質用例的優點只有在面向對象的軟件開發領域才能得到體現。
自動取款系統的一般用例描述(Constantine 和Lockwood)
用戶動作 系統響應
插入卡 讀取磁卡
提示輸入PIN
輸入PIN 校驗PIN
顯示交易菜單
按鍵 顯示總額菜單
按鍵 提示總額
輸入總額 顯示總額
按鍵 退卡
取卡 吐鈔
取鈔
自動取款系統本質用例描述(Constantine 和Lockwood)
用戶意圖 系統職責
身份識別 驗證身份
提供選擇
選擇 吐鈔
取鈔
本質用例和需求
在設計過程中,CRC技術可以在團隊活動中提高對設計的理解和設計的有效性,而在用例分析和評估過程中卻缺乏這樣的技術。我們希望開發這樣一種技術。本質用例有許多適應這種技術的特性,因此,我們開始在面向對象軟件開發過程中使用本質用例。
與CRC技術類似,該技術包括索引卡和角色扮演。經過大家討論確定用例以后,給每個用例分配一張卡片,在頂部寫上用例的名稱。將卡片縱向分成兩部分,左側描述用戶,右側描述系統,如圖3所示。然后,團隊中每兩人一組來研究人機對話過程,一個扮演用戶,一個扮演系統,并記錄對話的經過,把結果提交給用例的審查小組進行復審。
本質用例描述系統的人機對話過程,是角色扮演的腳本,可以通過一部分人扮演系統,一部分人扮演用戶的方式來模擬系統的人機對話過程。與純文本的描述不同,這個過程是可視化的,不易引起歧義。Wirfs-Brock指出,用例可以看做用戶和系統的“交談”過程,有助于系統建模。另外,用例和角色扮演還可以幫助確定系統邊界,劃清系統內部和外部的界限。
我們在應用領域和學校的開發小組中展開進一步的工作,獲得了使用的實際經驗。我們發現,抽象的本質用例有很多好處,簡短的卡片式描述可以加速分析過程,更多地考慮交互細節,無需早期就在系統交互的具體問題上糾纏不清,被系統的具體實現所困擾而花費大量時間,從而可以集中精力確定系統的本質用例。
本質用例的抽象過程實際上是指導角色扮演的過程,并不是一個真正可實現的對話過程。但是,開發早期的角色扮演實際上是輕量級的,不能判斷能否實現。如果需要對抽象元素的具體例子加以明確,那么,把它作為一個可操作的本質用例,可以由此討論產生一個具體的腳本,描述可能的實現細節。
1.用例
本質用例的對話并不是指簡單的用戶動作,而是用戶意圖。
在角色扮演中,要從角色的視角考慮問題,深入理解其動機和類型,考慮其所處的環境,了解其背景。這樣才能準確表現其意圖。
從這個意義上說,角色扮演對團隊其它成員和聽眾變得更加重要。對用戶意圖的充分考慮賦予角色扮演更豐富的內容。更重要的是,復審人員需要更深入詳細地考慮用例,評估其一致性,驗證是否提取對話中的所有元素。
除此之外,用例著眼于系統與外部世界的交互過程和使用細節。而在大多數系統的開發過程中,系統使用的不確定導致用例實現完全依靠理解能力和創造能力的發揮。本質用例通過對用戶意圖的理解來確認系統用途,但并不否認用途也可以基于對用戶本身的理解進行提取。在這種方式下,用戶意圖成為用例設計的原動力。
在RUP等軟件開發過程中,用戶界面原型包括對用戶本身和用戶需求的理解,因此很早就需要進行開發。采用本質用例方法,在理解用戶意圖的前提下,為用戶建立一個清晰的流程設想,同樣可以作為系統后期設計的輸入。但是,這種方法是輕量級的,不需要產生具體的用戶界面,可以支持更快速的開發過程。
2.系統職責
在本質用例中,采用系統職責代替系統響應進行描述是因為系統職責包括了更多與用戶意圖相關的內容,并在系統后期設計中產生其它影響。
在角色扮演中,用戶角色扮演特定的人,意圖可以通過多種方式表達,而系統扮演的未知實體則很難進行發揮。但是必須達到驗證、確認人機交互過程的目的。
要深入理解人機對話中的任何一個元素,都需要在目標基礎上加以引申。因此,本質用例對用戶的描述采納用戶意圖而不是用戶目的。用戶意圖中除了可以理解的內容外,有一部分我們可以適當地加以引申。
對系統的描述應增加一些針對內部的說明,用以指導下一步的設計。系統職責是描述系統需要做什么,而不是系統實現的細節。這與用戶意圖的產生動機略有不同,但有助于確定用例和角色扮演。引入用戶意圖是為了描述系統實現的目標,而引入系統職責是為了描述系統實現的責任。
在本質用例中,某些用戶界面與大系統的開發有千絲萬縷的聯系。在使用本質用例開發用戶界面的例子中,系統職責作為人機對話的參與者,主要關心提供給用戶的信息內容。但是,在大系統中,系統職責必須包括更廣泛的內容。例如,在圖2所示的銀行系統取款的本質用例中,清楚地描述了與用戶界面相關的內容,卻缺乏與銀行財會業務相關內容的描述。
當然,一般用例也有這樣的缺點。如果用例只用于描述系統和用戶之間的對話,必然難以準確地體現各系統(子系統)之間的聯系,比如圖1的用例也有這樣的缺點。
從這個意義上說,著眼于系統職責的本質用例更加實用,因為它并不直接、簡單地描述系統與用戶的交流過程。在圖4的本質用例中,我們補充了對系統職責的描述,雖然這些描述不會在具體的對話過程中體現,但是交流過程的完整性和場景的一致性能夠指導系統的開發。
補充后的自動取款系統的本質用例描述
用戶意圖 系統職責
身份識別 驗證身份
啟動交易服務
提供選擇
選擇 吐鈔
結余
取鈔; 終止交易服務
文章來源于領測軟件測試網 http://www.kjueaiud.com/
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月