国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看
打開APP
未登錄
開通VIP,暢享免費電子書等14項超值服
開通VIP
首頁
好書
留言交流
下載APP
聯(lián)系客服
采用[ICONIX] 方法實踐BLOG設(shè)計之四 [健壯性分析]
haijd
>《其它》
2008.01.11
關(guān)注
在前三章中通過(問題域)建模和用例分析之后,在許多的UML書中可能接下來就要進(jìn)行時序
圖和協(xié)同圖的繪制了。但是問題好像還沒那么簡單,因為這里有一條鴻溝還沒有跨過去,正如下圖
所示:
在我剛學(xué)開始學(xué)習(xí) UML時,在拿到用例文本時要去畫時序圖總感覺有些別扭,不知如何才能將
文本中的意思完全用圖的形式表達(dá)出來,總是感覺分析出來的文本中缺了一些很重要的東西, 而這
些被丟掉的對象最終可能會導(dǎo)致無法繪制時序圖,但又找不出用例文本中到底還有什么東西被遺漏,
最終導(dǎo)致設(shè)計癱瘓。后來從網(wǎng)上搜索到的一些文章里發(fā)現(xiàn)了這種方法(robustness), 在看了半天之
后感覺找到了方向和竅門:)
而本文的所說的內(nèi)容在Iconix方法中的位置如下圖所示(紅圈標(biāo)記部分):
好了,說了這些題外話,那這到底是怎樣一種方法呢?
健壯性分析即Robustness,是Ivar Jacobson早在1991就發(fā)明了的,它最開始是用于解決用例
需要哪些對象這個問題,并指出參與場景的對象相互之間如何交互。這種技術(shù)本身是一種應(yīng)用于分析
階段技術(shù)(不是設(shè)計階段)。它不是UML的核心部分,只是"三人幫"在創(chuàng)建UML時“發(fā)現(xiàn)”了它,把它
作為Objectory特定過程的擴(kuò)展, 即通過使用構(gòu)造型(stereotyping,一種UML技術(shù))加以實現(xiàn)。同
時因為它通常不會被文檔保存,只是以草圖形式呈現(xiàn)(本文為了記錄和給大家一個清晰的示例,使用
Rose圖將它記錄下來),所以在許多的00及 UML書中被打入“冷宮”。但該方法有著“承上啟下”的作
用, 好在ICONIX方法又再次將它從“冷宮”中抬了出來,讓它再次找到用武之地:)
那么它到底能做什么呢? 請看下圖:
現(xiàn)在引用書中的解釋就是:
1.它幫助您確保用例文本的正確性,且沒有指定不合理或不可能的行為 (基于要使用的一組對
象),從而提供了健康性檢查。
2.幫助確保用例考慮了所有必需的分支流程,從而提供了完整性和正確性檢查。
3.讓您能夠(持續(xù))發(fā)現(xiàn)對象,因為在域建模期間可能會遺漏一些對象, 而這些對象在繪制時
序圖時不易被發(fā)現(xiàn),并且很可能正是它導(dǎo)致無法繪制時序圖。
4.縮小分析和設(shè)計的鴻溝,從而最終完成初步設(shè)計(關(guān)于初步設(shè)計復(fù)核會在下一篇中介紹)。
另外,該方法使用下面三種構(gòu)造型元素:
實體對象(entity object):
通常是來自域模型中的對象(也就是現(xiàn)實世界),它常對應(yīng)于數(shù)據(jù)庫表和文件,這些數(shù)據(jù)表
和文件中存儲了執(zhí)行用例所需的數(shù)據(jù)。有些實體對象是“臨時”對象(如搜索結(jié)果),當(dāng)用例
結(jié)束后將消失。
邊界對象(boundary object):
參與者使用它來同系統(tǒng)交互,這通常包含窗口,屏幕,對話框和菜單。如果有GUI原型,
將會知道許多主要的邊界對象是什么。
控制對象(control object):
將邊界對象和實體對象關(guān)聯(lián)起來(通常被稱為控制器,因為它們通常不是真正的對象),
它包含了大部分應(yīng)用邏輯,它們在用戶和存儲的數(shù)據(jù)之間架起一座橋梁??刂茖ο笾邪?jīng)常
修改的業(yè)務(wù)規(guī)則和策略。這樣修改只需要在這些對象中進(jìn)行,而不會涉及到用戶界面和數(shù)據(jù)庫
模式??刂破髋紶?(20%的時間內(nèi))也會是設(shè)計中的“真正對象”,但大部分時間內(nèi),控制器只
是一個占位符,用于避免您遺漏用例要求的任何功能和系統(tǒng)行為。
圖形表示如下:
在看到這里,熟悉MVC的朋友可能會產(chǎn)生一些想法,就是上述三種對象與model,view,control有
些相似,這的確是一種巧合,同時也說明了Ivar Jacobson的遠(yuǎn)見卓識,大師必定是大師呀!!!
對應(yīng)上面所說的三種構(gòu)造型元素,有下面四個交互規(guī)則如下:
1. 參與者只同邊界對象交互。
2. 邊界對象只能同控制器和參與者交互(本人感覺這條并不絕對)。
3. 實體對象只能同控制器交互。
4. 控制器可同邊界對象,實體對象以及其他控制器交互,但不能同參與者交互。
還有書中給出關(guān)于如何記住上面四個規(guī)則的簡便方式就是:
邊界對象和實體對象都是名詞,而控制器是動詞。名詞和名詞之間不能交互,但動詞之間可以。
上面的四個規(guī)則可用下面這個圖來表示:
注意圖中的箭頭不同于時序圖(時序圖中箭頭代表消息的傳遞),而是一種邏輯關(guān)系, 也可以
說是通信關(guān)聯(lián)。如: 從邊界對象指向控制對象的箭頭表明前者命令后者執(zhí)行,控制對象和實體對象
之間的雙向箭頭表明它們相互進(jìn)行讀寫。
另外書中對用例進(jìn)行健壯性分析的方法是:
仔細(xì)檢查用例文本,每次一個句子,并繪制參與者,邊界對象,實體對象和控制器以及圖中不
同元素之間的關(guān)系。
好了,有了上面的介紹之后,按照書中提供的繪制方法進(jìn)行一下實踐, 先以“登陸系統(tǒng)”為例:)
首先就是把
登陸系統(tǒng)
這個用例的文本列出來,以便進(jìn)行相應(yīng)分析。
用戶名稱:
登陸系統(tǒng)
基本流程:
用戶在網(wǎng)站首頁點擊登陸鏈接,系統(tǒng)顯示后臺登陸頁面。用戶在登陸表單中輸入其姓名,密
碼然后點擊提交按鈕。系統(tǒng)在確認(rèn)該用戶提交信息有效之后,初始用戶相關(guān)信息。并返回首頁。
分支流程:
如果用戶沒有提供姓名,系統(tǒng)將顯示一條錯誤信息,來告之用戶輸入姓名。
如果用戶提供的密碼不正確,系統(tǒng)將顯示一條錯誤信息, 要求用戶輸入正確密碼。
通過用例文本我們不難找出了"網(wǎng)站首頁", "后臺登陸頁面"這個邊界對象,同時因為系統(tǒng)提供了
校驗功能(即當(dāng)未提供用戶名或密碼不正確的情況下), 因此這里加上“驗證”這個控制對象。另外為了
把錯誤信息顯示到界面上也需要“顯示”這個標(biāo)準(zhǔn)的控制對象。到目前為止,還沒有從文本中發(fā)現(xiàn)實體
對象,這是非常不正常的,通過檢查文本發(fā)現(xiàn),系統(tǒng)需要去查找用戶信息列表,找出與之相應(yīng)的用戶
信息之后才能確定登陸用戶的合法身份,并初始用戶相關(guān)信息。因此,這里需要將用例文本進(jìn)行的修
改,以使文本所描述的信息更加合理。同時也要加入“用戶信息列表”,“用戶信息”這兩個實體對象以
及“初始化用戶信息”這個控制對象。(注意這里使用“驗證”, “顯示”這樣的命名方式主要是增加該控
制對象的通用性,因為在分析一定數(shù)量的用例之后您會發(fā)現(xiàn),這樣的對象使用會非常頻繁)
考慮文章的篇幅以及用戶需求,這個用例基本上先分析到此,下面是相應(yīng)的健壯性圖:
另外要強(qiáng)調(diào)一點的就是大家千萬不要在健壯性圖上花費過多的時間,一是因為避免出現(xiàn)分析崩潰
的局面,另外就是會使用這種分析喪失它應(yīng)有的價值和意義。
有了上面的那壺酒墊底,相信下面這個用例的健壯性分析就不會那么費勁了。
用戶名稱:
發(fā)表文章
基本流程:
用戶在發(fā)表文章頁面中輸入文章標(biāo)題,所屬分類(自定義或系統(tǒng)類型),文章內(nèi)容,是否使用
摘要,是否發(fā)表(或放入草稿箱)等信息之后點擊提交按鈕,系統(tǒng)在確認(rèn)該篇文章提交信息有效
之后,使用當(dāng)前數(shù)據(jù)添加到文章列表中。
分支流程:
如果用戶沒有文章標(biāo)題,系統(tǒng)將顯示一條錯誤信息,告之用戶輸入文章標(biāo)題。
如果用戶提供文章內(nèi)容,系統(tǒng)將顯示一條錯誤信息, 要求用戶輸入文章內(nèi)容。
如果用戶采用摘要形式發(fā)布,但卻沒有錄入摘要內(nèi)容時,系統(tǒng)將顯示一條錯誤信息, 要求用
戶輸入摘要內(nèi)容。
如果用戶在未完成當(dāng)前文章內(nèi)容時要跳轉(zhuǎn)到其它頁面,系統(tǒng)將顯示一條警告信息,提示用戶
所編輯的內(nèi)容將會丟失。
如果用戶提交的文章標(biāo)題已在文章列表中存在,系統(tǒng)將告訴用戶并建議用戶使用其它的標(biāo)題。
通過瀏覽用例文本找出一個邊界對象就是“發(fā)表文章頁面”, 以及“驗證”,“顯示”,“檢索”,“創(chuàng)建”
文章這四個控制對象。
另外要指出的是關(guān)于顯示文章分類(供用戶選擇)的問題,這里要通過檢索文章分類列表來獲取,
因此需要添加一個“文章分類列表”的實體對象。另外一個實體對象就是文章列表,相信大家也都也
經(jīng)看到了。下面就把相應(yīng)的健壯性圖貼出來,以便大家將相應(yīng)對象按圖入座:)
接著要說的就是"瀏覽評論"用例了,它的用例文本如下:
用例名稱:
瀏覽評論
基本流程:
用戶瀏覽“評論列表”,列表當(dāng)中顯示評論人,內(nèi)容,日期,評論人IP,所評論文章標(biāo)題等
內(nèi)容,并在每條評論上顯示相關(guān)評論刪除按鈕。
分支流程:
如果用戶沒有任何評論,系統(tǒng)顯示“您的文章評論為0”信息。
如果用戶單擊頁面上的刪除按鈕,系統(tǒng)將打開“刪除評論頁面”(調(diào)用"刪除評論"用例)。
這里因為它過于簡單,就先將其健壯性圖放出來,但如果大家細(xì)心閱讀三種元素的交互規(guī)則的話,
會從中發(fā)現(xiàn)一個有爭議的問題。
大家看到了吧,這里的邊界對象“刪除評論頁面”和“刪除評論按鈕”直接交互了,但是前面說
過有關(guān)Robustness的元素交互規(guī)則如下:
邊界對象只能同控制器和參與者交互。
其實這里的“刪除評論頁面”是在點擊“刪除評論按鈕”之后才顯示出來的,所在應(yīng)該引入一個
新的“創(chuàng)建刪除評論頁面”控制對象會更合理,但熟悉軟件開發(fā)的朋友應(yīng)該都知道這只是一句話(web
開發(fā)中是一行js代碼)就能搞定的事。所以就在這面省略了。其實這里再次告訴我們這樣一個事實,
就是規(guī)則只是一些防止犯錯誤的條條框框,當(dāng)開發(fā)小組已經(jīng)能夠有效避免相關(guān)錯誤時,相應(yīng)的規(guī)則就
只是一種參考了,千萬不要因為規(guī)則自身而約束了您的思維:)
然后再說一下“提交評論”用例
用例名稱: 提交評論
基本流程:
用戶點擊瀏覽文章頁面上的評論鏈接后,系統(tǒng)將鏈接重定向到評論頁面。當(dāng)用戶輸入評論內(nèi)容,
用戶名和校驗碼后,點擊提交按鈕,系統(tǒng)在驗證用戶身份后和校驗碼后,并將提交的評論信息添加
到評論列表中。同時顯示提交成功信息后將頁面重定向到瀏覽文章頁面。
分支流程:
用戶未輸入用戶名或評論內(nèi)容,系統(tǒng)提示用戶輸入相應(yīng)信息。
用戶輸入的校驗碼不正確,系統(tǒng)提示用戶重新輸入校驗碼。
系統(tǒng)發(fā)現(xiàn)當(dāng)前用戶名不是有效的系統(tǒng)用戶,提示用戶所用的名稱不正確。
這里限于篇幅就直接將健壯性圖放出來了,如果大家看著有什么問題可以在回復(fù)中進(jìn)行討論:)
最后要說的一個用例是“刪除評論”
用例名稱:
刪除評論
基本流程:
用戶在瀏覽評論列表上的相應(yīng)評論上點擊刪除按鈕。系統(tǒng)跳轉(zhuǎn)到“刪除評論頁面”,在檢索
到要刪除的評論信息之后將該評論從"評論列表"中刪除。同時將相應(yīng)用戶信息中的評論數(shù)減1。
并顯示刪除成功信息之后,將頁面重定向到瀏覽評論頁面。
分支流程:
當(dāng)檢索要刪除的評論不在評論列表中(已被刪除),系統(tǒng)將顯示已刪除該評論信息。
里面可以看到有兩個邊界對象,一個是"刪除評論頁面",“瀏覽評論頁面”, 而控制器有檢索,
刪除,顯示和更新(用戶信息)。而相應(yīng)的邊界對象有“評論列表”,“用戶信息”。將這些元素繪
制成Robustness圖如下:
本人還繪制了其它一些用例的健壯圖,但不是每個用例都有,這主要是因為寫文章的時間緊造成的,
希望大家能夠理解。如果感興趣的朋友可以下載本章所提供的ROSE文件完成其余健壯性圖的繪制工作。
這里不是要給大家布置什么homework, 只是希望大家能夠通過實踐來掌握這個工具,相信使用過它之
后,才能知道它的確很“厲害”。
還有要強(qiáng)調(diào)的是分析結(jié)束后不要忘記要根據(jù)分析結(jié)果更新一下域模型。如果不做這一步,等于半
途而廢。這一點正如書中所說:“只有更新域模型后,健壯性分析才算完成,才能進(jìn)入使用時序圖的
交互建模階段。畢竟,您無法將行為分配給那些沒有出現(xiàn)在靜態(tài)模型中的類”。
通過上面的幾個用例的健壯性分析和已繪制的其它用例的健壯性圖,將其中的關(guān)鍵屬性分配到主
要的類中, 并對域模型做如下更新(見下圖)
最后列出這個階段最常見的健壯性分析錯誤及其相關(guān)說明(希望大家不要認(rèn)為我在湊字,而是已有
朋友在前面三篇文章中懷疑其中一些常見錯誤的正確懷 為了便于說明相應(yīng)錯誤的立足依據(jù),所以在這
里引用書中的一些說明),以便給大家提供一個參考。有不同意見的朋友可以在回復(fù)中進(jìn)行討論:)
十種最常見的健壯性分析錯誤
10.違反一種或多種健壯性分析規(guī)則。
制定這些規(guī)則的主要目的是使文本格式為名詞-動詞-名詞,并防止您在獲得足夠的做出設(shè)
計決策的信息之前將行為分配給對象。針對邊界對象制定規(guī)則是為了確保您明確地指定邊界對
象,用例涉及到的參與者位于這些邊界對象的外面。
9.不使用健壯性分析來幫助您在用例文本中采用一致的格式。
模式邊界對象-控制器-實體對象常出現(xiàn)在眾多的健壯性圖中。這種設(shè)計同英語句子中的主語
-謂語-賓語模式密切相關(guān)。應(yīng)通過健壯性分析來確保用例文本的文體盡可能一致,這將極大地提
高它們的可讀性和可維護(hù)性。
8.健壯性圖中不包含分支流程。
應(yīng)針對所有用例文本進(jìn)行健壯性分析,而不僅僅是基本流程。系統(tǒng)大部分有趣行為都是在分
支流程中發(fā)生的,因此在建模工作中對這些行為進(jìn)行分析至關(guān)重要。健壯性分析還將幫助您發(fā)現(xiàn)
新的分支流程,尤其是當(dāng)您使用諸如“核對”和“驗證”等標(biāo)簽繪制控制器時。
7.不使用健壯性分析來確保類圖和用例文本中的類名一致。
在對象模型中指出系統(tǒng)使用情況是一個神奇的規(guī)則,要建立有用的時序圖,必須使用這些規(guī)
則。通過在用例中對邊界對象和實體對象進(jìn)行命名,您已為時序圖有一個良好的開端邁出了正確
的一步。對于每個用例您只需要簡單地將這些對象放在時序圖的頂端即可。
6.給健壯性圖中的類分配行為。
控制器被用做功能和系統(tǒng)行為占位符。不應(yīng)給健壯性圖上的類分配方法,因為此時您很可能
還沒有足夠的信息。您將使用時序圖來完成行為分配方面的決策。
5.包含的控制器過多或過少
建議每個健壯性圖中包含 2-5個控制器。如果每個用例只有一個控制器,則很可能有大量非
常小的用例,其中每個用例沒有描述足夠多的行為。另一方面,如果一個健壯性圖中包含10個以
上的控制器,則應(yīng)考慮將用例分解成多個易于管理的用例。
4.試圖使健壯性圖十全十美,而花費過多的時間。
健壯性圖相當(dāng)于輔助引擎,它啟動這樣一個過程:即驅(qū)動用例向前發(fā)展,成為一個面向?qū)ο?br> 的設(shè)計方案。健壯懷分析是一種工具,幫助我們發(fā)現(xiàn)對象,分配屬性以及檢查用例文本的完整性
和正確性。當(dāng)我們完成整個任務(wù)后,就不再需要工具(健壯性圖)了。這是一種實現(xiàn)目的手段,而
不是目的本身。
3.試圖在健壯性圖上完成詳細(xì)設(shè)計。
臨時性圖的概念對初步設(shè)計很有用,但對詳細(xì)設(shè)計沒有任何用處。詳細(xì)設(shè)計應(yīng)在時序圖中完
成。在健壯性分析中,應(yīng)快速地檢查要構(gòu)建的所有場景,以給項目提供最大的價值。如果初步設(shè)
計的時間和詳細(xì)設(shè)計的時間一樣長,將失去這種快速的健康性檢查的益處。
2.不在用例文本和健壯性圖之間進(jìn)行可視化跟蹤。
建議您對照所有的用例文本和健壯性圖進(jìn)行復(fù)核,所有復(fù)核人員都采用手指跟蹤方法。在沒
有通過所有的可視化跟蹤檢查之前,用例就不能算完成。
1.不更新靜態(tài)模型。
只有更新域模型后,健壯性分析才算完成,才能進(jìn)入使用時序圖的交互建模階段。畢竟,您
無法將行為分配給那些沒有出現(xiàn)在靜態(tài)模型中的類。
ROSE文件(已復(fù)核過的用例和域模型)
http://daizhj.cnblogs.com/Files/daizhj/blog_Sequrence.rar
關(guān)鍵字:ICONIX,UML,USE CASE,用例,OO,面向?qū)ο?用例驅(qū)動,Robustness,健壯性分析,魯棒分析。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報
。
打開APP,閱讀全文并永久保存
查看更多類似文章
猜你喜歡
類似文章
三、面向?qū)ο蟮男枨?/div>
【轉(zhuǎn)載】邊界類、控制類、實體類1
活動:設(shè)計用戶界面原型
活動目錄基礎(chǔ)
開始開發(fā)iOS應(yīng)用 入門指南
VR開發(fā)的24個技巧
更多類似文章 >>
生活服務(wù)
首頁
萬象
文化
人生
生活
健康
教育
職場
理財
娛樂
藝術(shù)
上網(wǎng)
留言交流
回頂部
聯(lián)系我們
分享
收藏
點擊這里,查看已保存的文章
導(dǎo)長圖
關(guān)注
一鍵復(fù)制
下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!
聯(lián)系客服
微信登錄中...
請勿關(guān)閉此頁面
先別劃走!
送你5元優(yōu)惠券,購買VIP限時立減!
5
元
優(yōu)惠券
優(yōu)惠券還有
10:00
過期
馬上使用
×