<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Vincent.Chan‘s Blog

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    網(wǎng)站

    最新評論

    Java 建模: UML 工作簿,第 3部分 在用例建模上的用戶接口邏輯

    在這一部分的 Java 建模中,Granville引領(lǐng)您進(jìn)入介于建模和方法之間的區(qū)域,同時(shí)看一下通過用例建模所收集的需求。他特別著重討論了用戶接口、系統(tǒng)接口和用例描述之 間的關(guān)系。盡管現(xiàn)在正試圖在用例中包括用戶接口邏輯,但這通常被認(rèn)為是不好的形式。接著,Grancille用序列圖和系統(tǒng)接口告訴您具體原因。請點(diǎn)擊文 章頂部或底部的 討論,參與討論論壇,與本文作者和其他讀者分享您對本文的想法。

    需求收集是任何成功的軟件開發(fā)周期中不可缺少的一步。雖然有眾多的需求收集方法,但是最普通的方法是用例建模。在 先前的兩個(gè)專欄中,我們已經(jīng)完成了一部分將序列圖同用例建模關(guān)聯(lián)起來的工作。這次我將更多地談?wù)摲椒ㄖ蟮睦碚摚⑶乙苍黾右恍┠慕T~匯。

    這次討論中,我更關(guān)心的是闡明用戶接口、系統(tǒng)接口和用例描述之間的關(guān)系。因?yàn)樗⒌拇蠖鄶?shù)系統(tǒng)將被設(shè)計(jì)成人機(jī)交互式的,所以將用例描述設(shè)計(jì)成以用戶接口 開始運(yùn)行是很誘人的。但是在用例中包括用戶接口邏輯通常被認(rèn)為是不好的形式。這種說法的一個(gè)簡單解釋是,用戶接口提供一個(gè)系統(tǒng)透視圖的系統(tǒng)概貌。用例總是 以參與者(或用戶)透視圖被描述。

    為了真正理解為什么我們在用例描述中不包括 UI 邏輯,我想無論如何我們不得不采用親身實(shí)踐的方法。我們將使用我的 第一個(gè)專欄中的貸款申請的示例,并且您將看到用例是如何隨著尺寸的增大而變得復(fù)雜的。特別地,我們要注意在用例建模中透視圖的角色。隨著我們的深入,您將看到透視圖是怎樣被用來為您工作的,或者,如果被不正確地應(yīng)用,它是如何阻礙您工作的。

    什么是用例模型?

    一個(gè)用例模型由一張圖表和一組闡明該用例的描述組成。一個(gè)用例是在一個(gè)系統(tǒng)中的一組可能的交互,它的參與者朝著同一個(gè)被定義的目標(biāo)進(jìn)行。這些描述描述了系統(tǒng)中該用例的功能性;這張圖表提供了這些描述的可視化路標(biāo)。UML 規(guī)定了建立用例圖表的標(biāo)準(zhǔn),但并不是為了編寫用例描述的。結(jié)果產(chǎn)生了許多編寫用例描述的方法,這些方法有時(shí)是互相競爭的。

    最流行的編寫用例描述的方法體現(xiàn)著 Ivar Jacobson (用例建模的發(fā)明者)的思想。Jacobson 的方法涉及一系列進(jìn)入和退出的準(zhǔn)則,分別被稱作 前置條件后置條件,和一個(gè)稱為 事件流的核心準(zhǔn)則。這個(gè)事件流描述了一系列參與者(用戶或外部系統(tǒng))和被制定的系統(tǒng)之間的交互。這個(gè)事件流代表一個(gè)經(jīng)過系統(tǒng)的通向成功輸出的單一路徑 。這是用例描述的核心部分,但不是全部。

    事件流的交替和例外

    除描述中心事件流之外,用例描述必須說明那些發(fā)生在普通事件流之外的交互。例如錄像帶租用用例的主要事件流(在簡單情況下)可以如下表示:

    • 錄像帶租賃店店員掃描顧客的會(huì)員卡。
    • 系統(tǒng)取得會(huì)員名和他目前的租賃狀況。一個(gè)“允許租賃”狀態(tài)表示這個(gè)顧客可以租用錄像帶。
    • 錄像帶租賃店店員掃描每盤被租借的錄像帶。
    • 系統(tǒng)通過掃描每盤錄像帶,將可出租的錄像帶加入到用戶可見的列表中,并顯示當(dāng)前的可出租的錄像帶列表。
    • 錄像帶租賃店店員輸入應(yīng)收取的錢的數(shù)量(如果是現(xiàn)金)或者掃描信用卡。
    • 系統(tǒng)標(biāo)記這盤錄像帶為已在某段時(shí)間被出租并且打印這筆交易的收據(jù)。

    但是如果顧客在上次租借中欠了逾期費(fèi)怎么辦?在她能再次租借她所選的錄像帶之前,她需付清所欠的逾期費(fèi)。逾期費(fèi)的交互表現(xiàn)為一個(gè) 交替流或 例外流。事件流的交替和例外是很正常的。在某些情況下,他們可以被糾正以重新開始正常的事件流,在其他情況下,他們則達(dá)不到目標(biāo)。在我們的示例中,如果顧客付了逾期費(fèi)和這次的租金,那她就達(dá)到了繼續(xù)租借錄像帶的目的了。



    回頁首


    用例建模中的事務(wù)處理

    伴隨著它的交替和例外,事件流是由一系列的事務(wù)處理組成。 事務(wù)處理是由參與者發(fā)起,并且當(dāng)系統(tǒng)等候來自參與者的觸發(fā)信號(hào)時(shí)完成的交互(注意完成事務(wù)處理的參與者不一定就是發(fā)起該事務(wù)處理的參與者)。事務(wù)處理允許我們把用例分割成更小的元素,并在每個(gè)決定點(diǎn)上將邏輯分組。 決定點(diǎn)是在描述中參與者必須作出決定或者提供額外信息的那個(gè)點(diǎn)。

    所有的事務(wù)處理是由一個(gè)參與者和一個(gè)系統(tǒng)交互組成。您將極少需要計(jì)劃一個(gè)沒有啟動(dòng)的系統(tǒng),即使這個(gè)啟動(dòng)僅僅以時(shí)間為基礎(chǔ)。當(dāng)建立用例模型的時(shí)候,您必須確保每個(gè)啟動(dòng)被某種類型的系統(tǒng)響應(yīng)訪問到。這個(gè)調(diào)用和響應(yīng)對于用例來說是完整的。

    序列圖中的事務(wù)處理

    事 務(wù)處理在序列圖中是很容易識(shí)別的。在我的第一個(gè)專欄中,我介紹了只有兩個(gè)事務(wù)處理的方案。當(dāng)申請者請求新的貸款申請時(shí),第一個(gè)事務(wù)處理被啟動(dòng)。這個(gè)事務(wù)處 理以系統(tǒng)等待申請者填寫請求和提交請求為結(jié)束。當(dāng)申請者在線提交了貸款申請時(shí),第二個(gè)事務(wù)處理被啟動(dòng)。它以系統(tǒng)請求商業(yè)資信咨詢機(jī)構(gòu)的信用報(bào)告為結(jié)束。

    圖 1 讓我們再看一下建立用來描述這個(gè)方案的序列圖 -- 提交貸款請求和它的兩個(gè)事務(wù)處理。這個(gè)圖表建立了從開始到結(jié)束的兩個(gè)事務(wù)處理的模型。您將會(huì)想起,這是一個(gè)一般的序列圖,它允許我們在以后添加更多的方案 (從而加入更多的事務(wù)處理)。至少就這個(gè)開發(fā)循環(huán)的分析階段而言,當(dāng)我們添加方案時(shí),我們將完成這個(gè)用例。然而,當(dāng)我們轉(zhuǎn)向設(shè)計(jì)的時(shí)候,我們可能發(fā)現(xiàn)我們 需要添加更多的事務(wù)處理。例如,如果我們選擇作屏幕到屏幕的確認(rèn)(代替當(dāng)前在提交時(shí)的單一確認(rèn)),我們必須在每一步確認(rèn)時(shí)添加一個(gè)事務(wù)處理。

    現(xiàn) 在看一下圖 1,仔細(xì)注意事務(wù)處理的描述。以識(shí)別信息的方向從參與者到出現(xiàn)在最接近頂部的一個(gè)類或者實(shí)例為開始。正如您在下面的圖表中看到,第一個(gè)事務(wù)處理通常是從左 邊開始。沿著箭頭的順序直到您到達(dá)了另外一個(gè)參與者或者順序結(jié)束。當(dāng)順序結(jié)束時(shí),它返回到最初的參與者。這就是一個(gè)事務(wù)處理。在圖 1 中您應(yīng)該能看到兩個(gè)完整的事務(wù)處理。


    圖 1. 一個(gè)提交貸款請求用例的部分序列圖
    一個(gè)提交貸款請求用例的部分序列圖

    象其他大多數(shù)用例那樣,提交貸款請求用例使用多重的事務(wù)處理。迄今為止,我們只列出了其中的兩個(gè)圖表,但是一個(gè)普通的用例使用大約 3 到 15 個(gè)事務(wù)處理。

    為了理解透視圖和事務(wù)處理的關(guān)系,我們可以看一下當(dāng)兩個(gè)系統(tǒng)通訊時(shí)事務(wù)處理是如何表現(xiàn)的。一些軟件系統(tǒng)實(shí)際上是一系列互連的較小系統(tǒng)。這些較小系統(tǒng)相互合 作提供整個(gè)系統(tǒng)的功能性。每個(gè)較小系統(tǒng)只提供整個(gè)系統(tǒng)功能的一個(gè)子集。他們通過一組協(xié)議和機(jī)器接口進(jìn)行通訊,這將把我們的用例模型提高一個(gè)全新的復(fù)雜程 度。



    回頁首


    互連系統(tǒng)的系統(tǒng)建模

    當(dāng)考慮到互連系統(tǒng)時(shí),這對建立由較小互連系統(tǒng)組成的大系統(tǒng)有意義。您可以交換一個(gè)系統(tǒng)并且用其它的系統(tǒng)替換它。您也可以獨(dú)立地建立每一個(gè)系統(tǒng)。并且您可以用許多站點(diǎn)或廠商來完成整個(gè)系統(tǒng)。

    這樣一個(gè)系統(tǒng)的最好示例是典型的電話網(wǎng)絡(luò)。電話網(wǎng)絡(luò)的一部分提供撥入通道,另一部分傳送聲音或數(shù)據(jù),還有另一部分提供帳單服務(wù),以及有許多其它部分開展象 呼叫轉(zhuǎn)移和語音郵件這樣的服務(wù)。電話網(wǎng)絡(luò)也許是由互連系統(tǒng)組成的系統(tǒng)的一個(gè)最大的示例,并且它的連續(xù)工作也證明了這種系統(tǒng)的有效性。同樣的,懂得如何構(gòu)思 和建立這樣的系統(tǒng)模型是十分重要的。

    一個(gè)相似的示例

    我 們將使用一個(gè)相似的貸款處理申請來建立一個(gè)由互連系統(tǒng)組成的系統(tǒng)的模型。到現(xiàn)在,我們已經(jīng)建立了提交貸款請求用例的模型,但是這個(gè)用例實(shí)際上只是一個(gè)較大 的貸款處理系統(tǒng)的一部分。貸款提交系統(tǒng)和其進(jìn)行交互的商業(yè)資信咨詢機(jī)構(gòu)是兩個(gè)必須合作以提供必要的數(shù)據(jù)來處理貸款請求的系統(tǒng)。在現(xiàn)實(shí)生活中,還會(huì)涉及額外 的系統(tǒng)。然而,我們的示例僅僅討論兩個(gè)系統(tǒng)。圖 2 顯示了兩個(gè)系統(tǒng)、貸款提交和商業(yè)資信咨詢機(jī)構(gòu)系統(tǒng)以及我們將在這個(gè)專欄的余下部分著重討論的交互。(注意,圖 2 不是一個(gè) UML 圖表;它是一個(gè)真實(shí)世界的圖表,目的是簡單地圖示這兩個(gè)系統(tǒng)和它們之間的交互。)


    圖 2. 兩個(gè)系統(tǒng)之間的交互
    圖 2. 兩個(gè)系統(tǒng)之間的交互

    正如我們前面圖表說明的那樣,圖 3 從貸款提交系統(tǒng)的透視圖中顯示了提交貸款請求用例的子集。這張圖說明了我們第二次事務(wù)處理的結(jié)束是在申請者提交貸款請求時(shí)開始,在貸款提交系統(tǒng) ( CreditChecker ) 給代表商業(yè)資信咨詢機(jī)構(gòu) ( CreditBureau ) 的參與者發(fā)出請求時(shí)結(jié)束。


    圖 3. 一個(gè)提交貸款請求用例的系統(tǒng)部分的子集
    圖 3. 一個(gè)提交貸款請求用例的系統(tǒng)部分的子集

    現(xiàn)在,讓我們注意來自于商業(yè)資信咨詢機(jī)構(gòu)系統(tǒng)的透視圖的這個(gè)請求。我們將以代表請求一份信用報(bào)告的一個(gè)外部系統(tǒng) ( CreditInstitution ) 的參與者開始。從商業(yè)資信咨詢機(jī)構(gòu)的透視圖來看,當(dāng)參與者請求報(bào)告時(shí)事務(wù)處理開始并且在商業(yè)資信咨詢機(jī)構(gòu)系統(tǒng) ( CreditReporter ) 返回這個(gè)報(bào)告時(shí)結(jié)束,就如圖 4 中的圖表所示。


    圖 4. 商業(yè)資信咨詢機(jī)構(gòu)系統(tǒng)的一個(gè)序列圖
    圖 4. 商業(yè)資信咨詢機(jī)構(gòu)系統(tǒng)的一個(gè)序列圖

    回到貸款提交系統(tǒng),我們現(xiàn)在能擴(kuò)展提交貸款請求用例以包括報(bào)告的接收。當(dāng) CreditReporter 返回報(bào)告時(shí),一個(gè)新的事務(wù)處理開始,并且報(bào)告被加入到與申請相聯(lián)系的信息中。然后我們可以通知貸款官員(一個(gè)新的參與者)新的申請已到達(dá)。這將是我們的貸款提交方案中的第三個(gè)事務(wù)處理。為了創(chuàng)建整個(gè)用例,我們需要再加幾個(gè)事務(wù)處理,但是我們將那個(gè)練習(xí)留到以后來做。



    回頁首


    逆向透視圖邏輯

    上面的圖表說明了互連系統(tǒng)的系統(tǒng)建模中的兩個(gè)重要方面。第一,從信息順序透視圖我們可以容易地將貸款提交和商業(yè)資信咨詢機(jī)構(gòu)系統(tǒng)作為單一的系統(tǒng)來進(jìn)行建模。圖 5 顯示了這兩個(gè)系統(tǒng)是如何在一個(gè)單一的圖表中被建模成一個(gè)系統(tǒng)的。


    圖 5. 一個(gè)單系統(tǒng)的信用報(bào)告功能視圖
    圖 5. 一個(gè)單系統(tǒng)的信用報(bào)告功能視圖

    這項(xiàng)技術(shù)在我們開發(fā)循環(huán)的分析階段中一直起作用。然而,當(dāng)我們進(jìn)入設(shè)計(jì)階段時(shí),兩個(gè)系統(tǒng)中的通訊機(jī)制建模的必要性使得單一的圖表過于復(fù)雜。除非我們使用一種象 CORBA (請參閱 參考資料)這樣的通訊技術(shù),否則我們一旦進(jìn)入設(shè)計(jì)階段,就必須分別為這兩個(gè)系統(tǒng)建模。要分離它們,我們將插入一些參與者(就如圖 3 和圖 4 中所示)來分別互相代表兩個(gè)系統(tǒng)。

    第二個(gè)觀察更加微妙,也是我們這周討論的中心:我們能對這些服務(wù)形成一個(gè)概念上的理解,這些服務(wù)必須通過系統(tǒng)通過觀察其它系統(tǒng)的需要來提供的。換句話說,我們可以通過查看其它系統(tǒng)的用例中的事務(wù)處理信息的子集來為每個(gè)系統(tǒng)確定概念上的接口。

    接著考慮貸款提交系統(tǒng)的第二和第三個(gè)事務(wù)處理。尤其得讓我們查看第二個(gè)事務(wù)處理的 系統(tǒng)部分和第三個(gè)事務(wù)處理的 參與者部分。如果從概念上研究我們的商業(yè)資信咨詢機(jī)構(gòu),參與者部分 ( CreditReporter ) 是貸款提交系統(tǒng)的系統(tǒng)部分的一個(gè)子集。也就是說,貸款提交系統(tǒng)用例表示“系統(tǒng)向商業(yè)資信咨詢機(jī)構(gòu)發(fā)送一個(gè)請求要求信用報(bào)告的一個(gè)副本。”

    另一方面,商業(yè)資信咨詢機(jī)構(gòu)系統(tǒng)用例表示“這個(gè)信用機(jī)構(gòu)參與者請求信用報(bào)告的一個(gè)副本。”這樣,商業(yè)資信咨詢機(jī)構(gòu)事務(wù)處理的參與者部分是貸款提交系統(tǒng)的第 二個(gè)事務(wù)處理的系統(tǒng)部分的一個(gè)子集。這對于第三個(gè)事務(wù)處理也是一樣的,商業(yè)資信咨詢機(jī)構(gòu)事務(wù)處理的系統(tǒng)部分是第三個(gè)事務(wù)處理的參與者部分的一個(gè)子集。換句 話說,事務(wù)處理的部分可以在兩個(gè)系統(tǒng)間逆轉(zhuǎn)。

    在兩個(gè)系統(tǒng)間概念上的逆轉(zhuǎn)事務(wù)處理提供了在兩個(gè)互連系統(tǒng)間的概念上的粘合。例如,我們知道我們需要一個(gè)進(jìn)入商業(yè)資信咨詢機(jī)構(gòu)的接口,以提供來自于貸款提交系統(tǒng)接口的信用報(bào)告,貸款提交系統(tǒng)接口同樣請求這些報(bào)告。



    回頁首


    怎樣把這個(gè)應(yīng)用到用戶接口

    我們并不是經(jīng)常建立互連系統(tǒng)。然而,我們確實(shí)為我們所建立的大多數(shù)系統(tǒng)創(chuàng)建用戶接口。我們通過逆轉(zhuǎn)它們的用例事務(wù)處理將兩個(gè)系統(tǒng)間的機(jī)器接口概念化。如果我們用一個(gè)用戶接口替換一個(gè)機(jī)器接口,這也是對的。

    作為這篇文章的示例所顯示的那樣,我們?yōu)槲覀兊南到y(tǒng)所建立的用戶接口將成為我們從相應(yīng)的參與者透視圖得出的用例描述的逆轉(zhuǎn)。這就是為什么不能依靠用戶接口透視圖來編寫出我們的用例。這兒的邏輯是創(chuàng)建概念上的用戶接口,但是事務(wù)處理將不得不在應(yīng)用之前被逆轉(zhuǎn)。

    也就是說,如果您已經(jīng)在編寫基于 UI 的用例并能夠以這種方法提供的話,那就堅(jiān)持下去。您的提供能力比那些制定標(biāo)準(zhǔn)的頭頭們制定的標(biāo)準(zhǔn)遠(yuǎn)遠(yuǎn)重要。然而,如果使用這種方法陷入混亂,那么,您現(xiàn)在知道為什么了。

    下次我們將著眼于在靈活處理中捕獲請求的不同機(jī)制,以及何時(shí)和為什么您應(yīng)該使用那些特色、用戶經(jīng)歷和在一個(gè)開發(fā)項(xiàng)目中的用例。下次見!



    回頁首


    參考資料



    回頁首


    關(guān)于作者

    author

    Granville 加入面向?qū)ο笊鐓^(qū)已有 13 年了。他是 高級用例建模 (Advanced Use Case Modeling)系列的合著者,并在全世界范圍的各種面向?qū)ο蠹夹g(shù)會(huì)議中介紹過教程。他的面向?qū)ο箝_發(fā)的實(shí)踐方法來自于他在多家公司供職的經(jīng)驗(yàn),其中包括從處于創(chuàng)業(yè)階段的公司到相當(dāng)成熟的軟件業(yè)巨擘在內(nèi)的各種公司。
    他目前正在教授有關(guān)靈活過程、方法和 Java 技術(shù)的研習(xí)班、教程和課程,同時(shí)還在輔導(dǎo)和幫助實(shí)現(xiàn)一些積極的項(xiàng)目。可以通過 rmiller@togethersoft.com 與 Granville 聯(lián)系。

    posted on 2006-02-18 15:08 Vincent.Chen 閱讀(127) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 亚洲AV无码一区二区三区牲色| AAAAA级少妇高潮大片免费看| 亚洲不卡AV影片在线播放| 美女无遮挡拍拍拍免费视频| 亚洲人成亚洲精品| 夜夜嘿视频免费看| 三级黄色在线免费观看| 亚洲第一页在线观看| 免费国产在线观看老王影院| 嫩草影院在线播放www免费观看| 最新国产成人亚洲精品影院| 亚洲中文字幕无码久久2017| 免费H网站在线观看的| 一个人免费播放在线视频看片| 亚洲国产电影在线观看| 亚洲阿v天堂在线2017免费| 四虎精品视频在线永久免费观看| 国产亚洲一卡2卡3卡4卡新区| 久久久亚洲欧洲日产国码农村| 国产午夜无码视频免费网站| 最近中文字幕电影大全免费版 | 亚洲一级二级三级不卡| 免费的涩涩视频在线播放| 日批视频网址免费观看| 亚洲国产一区二区三区在线观看| 亚洲女久久久噜噜噜熟女| 日本不卡高清中文字幕免费| 亚洲国产精品一区二区三区久久| 永久在线观看www免费视频| 一级一看免费完整版毛片| 亚洲无码一区二区三区 | 亚洲综合国产精品| 亚洲区小说区图片区QVOD| 日本免费的一级v一片| 国产h视频在线观看网站免费| 91亚洲自偷在线观看国产馆| 亚洲综合国产一区二区三区| 亚洲AV无码之日韩精品| 嫩草视频在线免费观看| 99久久99久久精品免费看蜜桃| 无码专区AAAAAA免费视频|