軟件開發(fā)工具StarUML及其應(yīng)用課件_第1頁
軟件開發(fā)工具StarUML及其應(yīng)用課件_第2頁
軟件開發(fā)工具StarUML及其應(yīng)用課件_第3頁
軟件開發(fā)工具StarUML及其應(yīng)用課件_第4頁
軟件開發(fā)工具StarUML及其應(yīng)用課件_第5頁
已閱讀5頁,還剩123頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2023年6月6日第1頁軟件開發(fā)工具StarUML及其應(yīng)用本章內(nèi)容結(jié)構(gòu)本章引言學(xué)習(xí)目標(biāo)教學(xué)內(nèi)容本章小結(jié)思考和練習(xí)課堂討論本章引言StarUML(簡稱SU)是一款開放源碼的UML開發(fā)工具,本身具有發(fā)展快、靈活、可擴(kuò)展性強(qiáng)等特點(diǎn),是當(dāng)前應(yīng)用范圍較廣的軟件建模工具之一。StarUML可以讀取RationalRose生成的文件,讓原先Rose的用戶可以轉(zhuǎn)而使用免費(fèi)的StarUML。本章主要介紹StarUML環(huán)境對(duì)面向?qū)ο蠓治雠c設(shè)計(jì)過程的支持和UML圖形描述。本章最后通過一個(gè)教學(xué)管理系統(tǒng)的系統(tǒng)分析設(shè)計(jì)過程,描述StarUML工具在系統(tǒng)分析與設(shè)計(jì)中的使用。2023年6月6日第2頁2023年6月6日第3頁學(xué)習(xí)目標(biāo)熟悉并掌握StarUML工具的用法理解和掌握StarUML工具用于分析、設(shè)計(jì)的用法掌握面向?qū)ο蠓治?、設(shè)計(jì)的方法2023年6月6日第4頁教學(xué)內(nèi)容1軟件開發(fā)工具StarUML概述2StarUML環(huán)境下的UML圖形建模3一個(gè)簡易教學(xué)管理系統(tǒng)的分析和設(shè)計(jì)4本章小結(jié)和習(xí)題2023年6月6日第5頁1軟件開發(fā)工具StarUML概述當(dāng)前,業(yè)界使用最廣泛的UML建模工具包括RationalRose、ArgoUML、StarUML等。StarUML不僅包含Rose所具有的功能全面、滿足所有建模環(huán)境需求能力和靈活性等特點(diǎn),最關(guān)鍵的是,StarUML開源、可擴(kuò)展、靈活小巧(基本構(gòu)成只有約20M)。與Rose類似,StarUML可以和任何一種面向?qū)ο蟮膽?yīng)用程序結(jié)構(gòu)組合使用,得到各類主要的面向?qū)ο缶幊陶Z言和快速應(yīng)用開發(fā)工具的直接支持。StarUML工具基于UML1.4版本,提供11種不同類型的圖,支持UML2.0的表示法,通過支持UML輪廓(profile)的概念積極地支持模型驅(qū)動(dòng)結(jié)構(gòu)(ModelDrivenArchitecture,UMD)方法。1.1StarUML的安裝及使用1.2StarUML的主要功能2023年6月6日第6頁1.1StarUML的安裝及使用StarUML是完全開放源碼的軟件,不僅免費(fèi)自由下載,連代碼都免費(fèi)開放,官方網(wǎng)站為:/en/。國內(nèi)的各大計(jì)算機(jī)軟件下載網(wǎng)站也均有免費(fèi)軟件下載,目前使用的StarUML版本大部分為StarUML5.0版。最低系統(tǒng)需求:①Intel?Pentium?233MHz或更高。②Windows?2000,WindowsXP?,或更高版本。③Microsoft?InternetExplorer5.0或更高版本。④128MBRAM(推薦256MB)。⑤110MB硬盤空間(推薦150MB空間)。⑥SVGA或更高分辨率(推薦1024×768)。⑦鼠標(biāo)或其他指引設(shè)備。1.1StarUML的安裝及使用2.StarUML的安裝步驟(此處省略安裝過程界面)①單擊StarUML安裝包,彈出歡迎界面(此處省略歡迎界面)。②單擊Next>按鈕,點(diǎn)擊“Iaccepttheagreement”同意安裝協(xié)議,再點(diǎn)擊Next>按鈕。③設(shè)置StarUML安裝的路徑后,單擊Next>按鈕,則開始安裝過程。④單擊Finish,完成安裝并退出。2023年6月6日第7頁1.1StarUML的安裝及使用3.StarUML的使用StarUML工具是個(gè)菜單驅(qū)動(dòng)的應(yīng)用程序,具有非常友好的圖形用戶界面。與常規(guī)應(yīng)用程序的啟動(dòng)方法類似,StarUML可以從“開始”→“所有程序”中選擇StarUML文件夾下的StarUML啟動(dòng),或者在安裝過程中建立快捷方式,直接點(diǎn)擊快捷方式啟動(dòng)StarUML。2023年6月6日第8頁2023年6月6日第9頁1.2StarUML的主要功能1.StarUML的主菜單窗口及使用StarUML應(yīng)用程序界面窗口包括工具欄區(qū)域、UML圖例區(qū)域、工作區(qū)域、模型視圖區(qū)域、屬性編輯區(qū)域及狀態(tài)信息欄6大區(qū)域,參見圖2。1.2StarUML的主要功能2023年6月6日第10頁圖2StarUML應(yīng)用程序窗口1.2StarUML的主要功能工具欄區(qū)域包括菜單欄及標(biāo)準(zhǔn)工具欄兩個(gè)部分。菜單欄用于顯示當(dāng)前可供使用的菜單項(xiàng),包括文件(File)、編輯(Edit)、格式(Format)、模型(Model)、視圖(View)、工具(Tools)、幫助(Help)7個(gè)項(xiàng)目,其內(nèi)容隨當(dāng)前正在操作的模型圖而有所不同;標(biāo)準(zhǔn)工具欄位于菜單欄下,沿著應(yīng)用程序窗口的頂部展開,包含一系列可以簡化常用操作的圖標(biāo),與打開的模型圖窗口無關(guān)。另外,用戶可以通過工具欄幫助使用常用特性。StarUML對(duì)不同的圖顯示不同的工具欄,除了工具欄和菜單外,StarUML還有相關(guān)的彈出菜單,可以用右鍵單擊來進(jìn)行項(xiàng)目訪問。例如,鼠標(biāo)右鍵單擊類圖中的類,彈出一個(gè)菜單,其中的選項(xiàng)包括增加類的屬性或操作、瀏覽和編輯類規(guī)范、產(chǎn)生類的代碼和瀏覽產(chǎn)生的代碼等。2023年6月6日第11頁1.2StarUML的主要功能UML圖例區(qū)域中包括了適用于當(dāng)前模型圖的各種組成成分,模型圖就是通過選擇圖例區(qū)域中的模型在工作區(qū)域中設(shè)計(jì)而成的。每種模型圖都有各自對(duì)應(yīng)的工具箱。工作區(qū)域是建立和修改當(dāng)前模型圖的主操作區(qū),區(qū)域左上角的圖標(biāo)表示當(dāng)前正在被操作的圖的名稱,圖中繪制的每個(gè)模型元素都會(huì)顯示在工作區(qū)域中,用戶可以通過對(duì)模型元素的控制來達(dá)到成功繪制圖形的目的。其中工作區(qū)域右下角的圖標(biāo)表示綜覽窗口標(biāo)識(shí),用于顯示模型圖當(dāng)前區(qū)域在整個(gè)模型中的位置。模型視圖區(qū)域是一個(gè)層次結(jié)構(gòu)的導(dǎo)航工具,通過它可以快速查看順序圖、類圖、用例圖、狀態(tài)圖、活動(dòng)圖和部署圖的名稱及其中的模型元素和其他許多模型元素。2023年6月6日第12頁1.2StarUML的主要功能屬性編輯區(qū)域是對(duì)圖中各個(gè)組成成分、成分之間的關(guān)系,甚至圖本身的屬性進(jìn)行編輯的工具,其中包括許多預(yù)定義及自定義的屬性設(shè)置,其中一些設(shè)置會(huì)直觀地在工作區(qū)域中的圖上表示出來。另外,描述文檔編輯區(qū)域在默認(rèn)情況下是和屬性編輯區(qū)域放在一起的,用戶可以通過單擊下方Document選項(xiàng)進(jìn)行切換。狀態(tài)信息欄用于顯示執(zhí)行某些命令和操作之后的進(jìn)展情況、結(jié)果和錯(cuò)誤提示。2023年6月6日第13頁2023年6月6日第14頁2StarUML環(huán)境下的UML圖形建模StarUML模型是問題陳述域與軟件系統(tǒng)表示的聯(lián)系紐帶,軟件系統(tǒng)的所有工作可以從StarUML模型的建立開始。在默認(rèn)情況下,StarUML模型都以擴(kuò)展名為.uml的文件進(jìn)行保存,一個(gè)項(xiàng)目包含并管理模型(Model)、子系統(tǒng)(Subsystem)和包(Package)等子元素。模型是由圖形和相關(guān)的說明組成的,StarUML共提供了類圖、用例圖、順序圖、順序圖(角色)、協(xié)作圖(UML2.0中修改為通信圖)、協(xié)作圖(角色)、狀態(tài)圖、活動(dòng)圖、構(gòu)件圖、部署圖、組合結(jié)構(gòu)圖11種模型圖的繪制方法。2StarUML環(huán)境下的UML圖形建模2.1StarUML的用例圖、類圖和包圖2.2StarUML的交互圖和狀態(tài)機(jī)圖2.3StarUML的構(gòu)件圖與部署圖2.4StarUML的正向工程和逆向工程2023年6月6日第15頁2023年6月6日第16頁2.1StarUML的用例圖、類圖和包圖用例圖主要用于對(duì)系統(tǒng)、子系統(tǒng)或類的行為進(jìn)行建模,與具體的實(shí)現(xiàn)細(xì)節(jié)無關(guān),它只說明系統(tǒng)實(shí)現(xiàn)什么功能,而不必說明如何實(shí)現(xiàn),表示從系統(tǒng)外部用戶的觀點(diǎn)看系統(tǒng)應(yīng)具有的功能。類圖用于對(duì)系統(tǒng)的靜態(tài)結(jié)構(gòu)建模,是邏輯視圖的重要組成部分,涉及具體的實(shí)現(xiàn)細(xì)節(jié),不僅定義系統(tǒng)中的類,表示類的內(nèi)部結(jié)構(gòu)(屬性和操作),還表示系統(tǒng)中類之間的關(guān)系,包括關(guān)聯(lián)、依賴及聚集等,類之間的這種復(fù)雜關(guān)聯(lián)關(guān)系在UML2.0中也可定義為組合結(jié)構(gòu)圖。2.1StarUML的用例圖、類圖和包圖1.用例圖(UseCaseDiagram)在軟件開發(fā)的生存周期中,用例圖主要用在系統(tǒng)需求分析階段和系統(tǒng)設(shè)計(jì)階段。在系統(tǒng)需求分析階段,用例圖用來獲取系統(tǒng)的需求,幫助理解系統(tǒng)應(yīng)當(dāng)如何工作;在系統(tǒng)設(shè)計(jì)階段,用例圖可以用來規(guī)定系統(tǒng)要實(shí)現(xiàn)的行為。一般地,每個(gè)用例圖都應(yīng)包含三個(gè)方面的內(nèi)容:一個(gè)(或一組)用例、參與者、參與者與系統(tǒng)中的用例之間的交互及用例之間的關(guān)系。在使用StarUML繪制用例圖之前,一般地應(yīng)該已經(jīng)有過對(duì)系統(tǒng)的建模過程。用例圖是系統(tǒng)的外部行為視圖,在確定了參與者和相關(guān)用例的基礎(chǔ)上,通過繪制用例圖可以更清晰地理解系統(tǒng)的行為。2023年6月6日第17頁2.1StarUML的用例圖、類圖和包圖一般地,用例圖的建立步驟如下。①找出系統(tǒng)外部的參與者和外部系統(tǒng),確定系統(tǒng)的邊界和范圍。②確定每一個(gè)參與者所希望的系統(tǒng)行為。③把這些系統(tǒng)行為命名為用例。④把一些公共的系統(tǒng)行為分解為一批新的用例,供其他的用例引用,把一些變更的行為分解為擴(kuò)展用例。⑤編制每一個(gè)用例的腳本。⑥繪制用例圖。⑦區(qū)分主業(yè)務(wù)流和例外情況的事件流??梢园驯磉_(dá)例外情況的事件流的用例圖畫成一個(gè)單獨(dú)的子用例圖。⑧精化用例圖,簡化用例中的對(duì)話序列。用例圖可以有不同的層次,高層次系統(tǒng)的用例可以分解為若干個(gè)下屬子系統(tǒng)中的子用例2023年6月6日第18頁2.1StarUML的用例圖、類圖和包圖下面給出在StarUML中創(chuàng)建用例圖的各組成元素的方法描述。(1)用例圖中的各個(gè)組成成分在StarUML工具中的畫法描述StarUML在建立新項(xiàng)目(NewProject)后會(huì)默認(rèn)生成一個(gè)主用例圖Main。而在StarUML中創(chuàng)建新用例圖的方法如下:①在模型視圖區(qū)域的<<useCaseModel>>UseCaseModel標(biāo)題上單擊鼠標(biāo)右鍵,顯示出彈出菜單(其他Model亦允許添加);②選擇AddDiagram→UseCaseDiagram,一個(gè)新的用例圖出現(xiàn)在<<useCaseModel>>UseCaseModel之下;③直接將新用例圖更名為設(shè)計(jì)的名字。2023年6月6日第19頁2.1StarUML的用例圖、類圖和包圖在StarUML中創(chuàng)建參與者actors的方法如下:①在圖例模型區(qū)域中選中Actor模型;②在工作區(qū)域中單擊鼠標(biāo)左鍵,則生成一個(gè)新的actor;③可對(duì)actor的Name、Visibility、Attribute和Operation進(jìn)行編輯。在StarUML中創(chuàng)建用例UseCase的方法如下:①在圖例模型區(qū)域中選中UseCase模型;②在工作區(qū)域中單擊鼠標(biāo)左鍵,則生成一個(gè)新的UseCase;③可對(duì)UseCase的Name、Visibility、Attribute和Operation進(jìn)行編輯。2023年6月6日第20頁2.1StarUML的用例圖、類圖和包圖(2)StarUML工具中確定用例圖中各組成成分之間關(guān)系的畫法描述:①在用例圖的工具欄上單擊相應(yīng)的關(guān)系圖標(biāo)。StarUML中提供了Association、DirectedAssociation、Generalization、Dependency、Include、Extend6類用例圖中涉及的關(guān)系。②在相應(yīng)的起始組成單位上單擊并拖動(dòng)到結(jié)束組成單位上。③選中生成的關(guān)系,在屬性編輯區(qū)域編輯該關(guān)系的Name、Stereotype、Visibility等相關(guān)屬性。(3)StarUML工具中為用例圖、組成成分及關(guān)系添加摘要描述的方法①在模型視圖區(qū)域或工作區(qū)域選中相應(yīng)用例圖、成分及關(guān)系。②在屬性編輯區(qū)域底端單擊Documentation,屬性編輯區(qū)替換為摘要描述編輯區(qū)。③在編輯區(qū)中鍵入相關(guān)描述。在StarUML中為圖、成分及關(guān)系添加摘要描述的方法與以上介紹的方法完全相同,下文中不再贅述。2023年6月6日第21頁2.1StarUML的用例圖、類圖和包圖圖3展示了在StarUML中包含一個(gè)actor、一個(gè)usecase的用例圖的描述示例。2023年6月6日第22頁圖3用例圖示例2.1StarUML的用例圖、類圖和包圖2.類圖類圖在系統(tǒng)的整個(gè)生存周期中都是有效的,它是項(xiàng)目組的良好設(shè)計(jì)工具,有助于開發(fā)人員在用具體的編程語言實(shí)現(xiàn)系統(tǒng)之前顯示和計(jì)劃系統(tǒng)結(jié)構(gòu),保證系統(tǒng)設(shè)計(jì)和開發(fā)的一致性。在系統(tǒng)分析階段,類圖主要用于顯示角色和提供系統(tǒng)行為的實(shí)體的職責(zé);在系統(tǒng)設(shè)計(jì)階段,類圖主要用于捕捉組成系統(tǒng)體系結(jié)構(gòu)的類結(jié)構(gòu);在系統(tǒng)編碼階段,類圖提供系統(tǒng)功能實(shí)現(xiàn)的依據(jù)。類圖是用類和它們之間的關(guān)系描述系統(tǒng)的一種圖示,是從靜態(tài)角度表示系統(tǒng)的,屬于一種靜態(tài)模型。類圖是構(gòu)建其他圖的基礎(chǔ),沒有類圖,就沒有狀態(tài)圖、通信圖等其他圖,也就無法表示系統(tǒng)的其他各個(gè)方面。2023年6月6日第23頁2.1StarUML的用例圖、類圖和包圖一般地,對(duì)象類圖的建立步驟如下:①研究分析問題領(lǐng)域,確定系統(tǒng)的需求。②從需求描述中發(fā)現(xiàn)對(duì)象和對(duì)象類,明確它們的含義和責(zé)任,確定屬性和操作。③從需求描述中發(fā)現(xiàn)類之間的靜態(tài)聯(lián)系。著重分析找出對(duì)象類之間的一般和特殊關(guān)系,部分與整體關(guān)系,研究類的繼承性和多態(tài)性,把類之間的靜態(tài)聯(lián)系用關(guān)聯(lián)、泛化、聚集、組合、依賴等聯(lián)系表達(dá)出來。雖然對(duì)象類圖表達(dá)的是系統(tǒng)的靜態(tài)結(jié)構(gòu)特征,但是應(yīng)當(dāng)把對(duì)系統(tǒng)的靜態(tài)分析與動(dòng)態(tài)分析結(jié)合起來,更能準(zhǔn)確地了解系統(tǒng)的靜態(tài)結(jié)構(gòu)特征。④設(shè)計(jì)類與聯(lián)系。調(diào)整和精化已得到的對(duì)象類和類之間的聯(lián)系,解決諸如命名沖突、功能重復(fù)等問題。⑤繪制對(duì)象類圖并編制相應(yīng)的說明。2023年6月6日第24頁2.1StarUML的用例圖、類圖和包圖①研究分析問題領(lǐng)域,確定系統(tǒng)的需求。②從需求描述中發(fā)現(xiàn)對(duì)象和對(duì)象類,明確它們的含義和責(zé)任,確定屬性和操作。③從需求描述中發(fā)現(xiàn)類之間的靜態(tài)聯(lián)系。著重分析找出對(duì)象類之間的一般和特殊關(guān)系,部分與整體關(guān)系,研究類的繼承性和多態(tài)性,把類之間的靜態(tài)聯(lián)系用關(guān)聯(lián)、泛化、聚集、組合、依賴等聯(lián)系表達(dá)出來。雖然對(duì)象類圖表達(dá)的是系統(tǒng)的靜態(tài)結(jié)構(gòu)特征,但是應(yīng)當(dāng)把對(duì)系統(tǒng)的靜態(tài)分析與動(dòng)態(tài)分析結(jié)合起來,更能準(zhǔn)確地了解系統(tǒng)的靜態(tài)結(jié)構(gòu)特征。④設(shè)計(jì)類與聯(lián)系。調(diào)整和精化已得到的對(duì)象類和類之間的聯(lián)系,解決諸如命名沖突、功能重復(fù)等問題。⑤繪制對(duì)象類圖并編制相應(yīng)的說明。2023年6月6日第25頁2.1StarUML的用例圖、類圖和包圖(3)在StarUML中創(chuàng)建類間關(guān)系的方法如下:①在模型區(qū)域點(diǎn)擊相應(yīng)的關(guān)系圖標(biāo),StarUML中提供了Association、DirectedAssociation、Aggregation、Composition、Generalization、Dependency、Realization、Link8種類圖中涉及的關(guān)系;②在相應(yīng)的起始組成單位上單擊并拖動(dòng)到結(jié)束組成單位上;③選中生成的關(guān)系,在屬性編輯區(qū)域編輯該關(guān)系的Name、Stereotype、Visibility等相關(guān)屬性。2023年6月6日第26頁2.1StarUML的用例圖、類圖和包圖圖4展示了具有兩個(gè)Class和一個(gè)接口的類圖圖例。其中Class1與Class2的關(guān)系為DirectedAssociation,Class1與Interface是Realization關(guān)系,Class2與Interface是Dependency關(guān)系。2023年6月6日第27頁2.1StarUML的用例圖、類圖和包圖3.包圖包是一種組合機(jī)制,把各種各樣的模型元素通過內(nèi)在的語義連在一起,成為一個(gè)整體就叫做包,構(gòu)成包的模型元素稱為包的內(nèi)容。包通常用于對(duì)模型的組織管理,因此有時(shí)又將包稱為子系統(tǒng)(Subsystem)。包擁有自己的模型元素,包與包之間不能共用相同的模型元素。包的實(shí)例沒有任何語義,只有在模型執(zhí)行期間,包才有意義。包能夠引用來自其他包的模型元素。當(dāng)一個(gè)包從另一個(gè)包中引用模型元素時(shí),這兩個(gè)包之間就建立了關(guān)系。包與包之間允許建立的關(guān)系有依賴、精化和通用化,但需注意,只能在包中的類型之間建立關(guān)系,而不能在實(shí)例之間建立關(guān)系,因?yàn)榘膶?shí)例沒有語義。2023年6月6日第28頁2.1StarUML的用例圖、類圖和包圖包是用來說明元素組或者子系統(tǒng)的機(jī)制。一個(gè)包可以是任何種類的一組模型元素,如一組類、一組用例、一組協(xié)作圖(通信圖)或者其他的包(嵌套包)。整個(gè)系統(tǒng)都可以被認(rèn)為是包含在一個(gè)最頂層的包中——System(系統(tǒng))包。一個(gè)包定義了一個(gè)嵌套的名字空間,因此同名元素在不同的包內(nèi)可能需要被復(fù)制。一般地,需要按照下列原則將元素組織成包:將提供通用服務(wù)(或者一組相關(guān)服務(wù)集)的元素組織成一個(gè)包,這些元素之間具有高耦合度和密切的協(xié)作關(guān)系。包在某種程度上應(yīng)該被視為具有高聚合度——它所承擔(dān)的職責(zé)相互之間密切關(guān)聯(lián)。相比之下,不同包中的元素之間的耦合和合作關(guān)系應(yīng)該比較松散。2023年6月6日第29頁2.1StarUML的用例圖、類圖和包圖包圖的建立步驟如下。(1)分析系統(tǒng)模型元素(通常是對(duì)象類),把概念上或語義上相近的模型元素納入一個(gè)包。注意可以從類的功能的相關(guān)性來確定納入包中的對(duì)象類。以下幾點(diǎn)可作為分析對(duì)象類的功能相關(guān)性的參考。①如果一個(gè)類的行為和/或結(jié)構(gòu)的變更要求另一個(gè)相應(yīng)的變更,則這兩個(gè)類是功能相關(guān)的。②如果刪除一個(gè)類后,另一個(gè)類便變成是多余的,則這兩個(gè)類是功能相關(guān)的,這說明該剩余的類只為那個(gè)被刪除的類所使用,它們之間有依賴關(guān)系。2023年6月6日第30頁2.1StarUML的用例圖、類圖和包圖③如果兩個(gè)類之間有大量的頻繁交互或通信,則這兩個(gè)類是功能相關(guān)的。④如果兩個(gè)類之間有一般/特殊關(guān)系,則這兩個(gè)類是功能相關(guān)的。⑤如果一個(gè)類激發(fā)創(chuàng)建另一個(gè)類的對(duì)象,則這兩個(gè)類是功能相關(guān)的。⑥如果兩個(gè)類不涉及同一個(gè)外部活動(dòng),則這兩個(gè)類不應(yīng)放在同一個(gè)包中。⑦一個(gè)包應(yīng)當(dāng)具有高內(nèi)聚性,包中的對(duì)象類應(yīng)該是功能相關(guān)的。2023年6月6日第31頁2.1StarUML的用例圖、類圖和包圖(2)對(duì)于每一個(gè)包,標(biāo)出其模型元素的可視性:公共、保護(hù)或私有。(3)確定包與包之間的依賴關(guān)系,特別是輸入依賴。(4)確定包與包之間的泛化關(guān)系,確定包元素的多態(tài)性和重載。(5)繪制包圖。(6)包圖精化。2023年6月6日第32頁2.1StarUML的用例圖、類圖和包圖在StarUML中創(chuàng)建包圖的方法如下。(1)包圖可以直接在ClassDiagram中建立。點(diǎn)擊圖例區(qū)域中的Package圖例,然后在工作區(qū)域中單擊鼠標(biāo)左鍵,即生成一個(gè)包。(2)選中生成包,在屬性編輯區(qū)域中對(duì)包屬性進(jìn)行編輯。(3)將需要放在一個(gè)包中的對(duì)象拖到對(duì)應(yīng)包中。(4)當(dāng)創(chuàng)建兩個(gè)及以上的包后,可選擇Dependency項(xiàng)等關(guān)系,然后單擊起始包并拖動(dòng)至結(jié)束包,松開鼠標(biāo)后,則生成一條關(guān)系。(5)重復(fù)步驟(1)~(3),至包圖完成。2023年6月6日第33頁2.1StarUML的用例圖、類圖和包圖圖5展示了一個(gè)基本的包圖畫法示例。2023年6月6日第34頁圖5包圖示例2023年6月6日第35頁2.2StarUML的交互圖和狀態(tài)機(jī)圖交互圖包括順序圖和通信圖(UML1.0中稱為協(xié)作圖),通常由一組對(duì)象和它們之間的關(guān)系組成,包括它們之間可能傳遞的消息。多數(shù)情況下,交互圖包括對(duì)類、接口、構(gòu)件和結(jié)點(diǎn)的具體的或原型化的實(shí)例,以及它們之間傳遞的消息進(jìn)行建模。交互圖除了可以用于對(duì)一個(gè)用例的事件流程進(jìn)行建模外,也可以單獨(dú)使用,用于可視化、詳述、構(gòu)造和文檔化一個(gè)特定對(duì)象群體的動(dòng)態(tài)方面,主要由一組對(duì)象和它們之間的關(guān)系構(gòu)成包括需要什么對(duì)象、對(duì)象相互之間發(fā)送什么消息、什么角色啟動(dòng)消息及消息按照什么順序發(fā)送等。2023年6月6日第36頁2.2StarUML的交互圖和狀態(tài)機(jī)圖狀態(tài)機(jī)通過對(duì)類對(duì)象的生存周期建立模型來描述對(duì)象隨時(shí)間變化的動(dòng)態(tài)行為,也可以用來描述用例、協(xié)作和方法的動(dòng)態(tài)行為,包括狀態(tài)圖和活動(dòng)圖。狀態(tài)圖是狀態(tài)結(jié)點(diǎn)通過轉(zhuǎn)移連接的圖,描述一個(gè)特定對(duì)象的所有可能狀態(tài),以及由于各種事件的發(fā)生而引起的狀態(tài)之間的轉(zhuǎn)移?;顒?dòng)圖是一種表述過程機(jī)理、業(yè)務(wù)過程及工作流的技術(shù),是UML用于對(duì)系統(tǒng)的動(dòng)態(tài)行為建模的一種常用工具,描述活動(dòng)的順序,展現(xiàn)從一個(gè)活動(dòng)到另一個(gè)活動(dòng)的控制流,與常用的軟件流程圖類似,從本質(zhì)上說,活動(dòng)圖是一類流程圖。2023年6月6日第37頁2.2StarUML的交互圖和狀態(tài)機(jī)圖1.順序圖和通信圖順序圖強(qiáng)調(diào)消息發(fā)送的時(shí)間順序,而通信圖則強(qiáng)調(diào)接收和發(fā)送消息的對(duì)象的組織結(jié)構(gòu),顯示對(duì)象、對(duì)象之間的連接及對(duì)象之間的消息,還可以顯示當(dāng)前模型中的簡單類實(shí)例。在圖形上,順序圖是一張表,其中顯示的對(duì)象沿橫軸排列,從左到右分布在圖的頂部,消息則沿縱軸按時(shí)間順序排列;而通信圖則表現(xiàn)為頂點(diǎn)和弧的集合。2023年6月6日第38頁2.2StarUML的交互圖和狀態(tài)機(jī)圖(1)順序圖建立順序圖的步驟如下。①確定交互的上下文。②找出參與交互的對(duì)象類角色,把它們橫向排列在順序圖的頂部,最重要的對(duì)象安置在最左邊,交互密切的對(duì)象盡可能相鄰。在交互中創(chuàng)建的對(duì)象在垂直方向應(yīng)安置在其被創(chuàng)建的時(shí)間點(diǎn)處。③對(duì)每一個(gè)對(duì)象設(shè)置一條垂直向下的生命線。④從初始化交互的信息開始,自頂向下在對(duì)象的生命線之間安置信息。注意用箭頭的形式區(qū)別同步消息和異步消息。根據(jù)順序圖是屬于說明層還是屬于實(shí)例層,給出消息標(biāo)簽的內(nèi)容,以及必要的構(gòu)造型與約束。⑤在生命線上繪出對(duì)象的激活期,以及對(duì)象創(chuàng)建或銷毀的構(gòu)造型和標(biāo)記。⑥根據(jù)消息之間的關(guān)系,確定循環(huán)結(jié)構(gòu)及循環(huán)參數(shù)和出口條件。2023年6月6日第39頁2.2StarUML的交互圖和狀態(tài)機(jī)圖在StarUML中創(chuàng)建順序圖的方法如下。①在模型視圖區(qū)域Model處單擊鼠標(biāo)右鍵,彈出顯示菜單。②將鼠標(biāo)移至AddDiagram項(xiàng),然后在子菜單中選擇順序圖(SequenceDiagram),則在工作區(qū)域生成一個(gè)新的順序圖界面。③在圖例區(qū)域中選擇Object項(xiàng),然后在工作區(qū)域中點(diǎn)擊鼠標(biāo)左鍵,則生成一個(gè)對(duì)象類。④可在屬性編輯區(qū)域?qū)?duì)象類的屬性進(jìn)行編輯。⑤當(dāng)創(chuàng)建兩個(gè)及以上的對(duì)象類后,可選擇Stimulus項(xiàng),然后單擊起始類的生命線并拖動(dòng)至結(jié)束類的生命線,松開鼠標(biāo)后,則生成一條調(diào)用關(guān)系。⑥若有類內(nèi)自調(diào)用的情況,可使用SelfStimulus項(xiàng)進(jìn)行表示。⑦重復(fù)步驟③~⑥,至順序圖完成。2023年6月6日第40頁2.2StarUML的交互圖和狀態(tài)機(jī)圖圖6展示了由以上步驟畫出的簡單順序圖圖例。值得注意的是,StarUML中沒有提供表示返回值的圖示。圖6交互圖圖例2023年6月6日第41頁2.2StarUML的交互圖和狀態(tài)機(jī)圖(2)通信圖通信圖的建立步驟如下。①確定交互的上下文。②找出參與交互的對(duì)象類角色,把它們作為圖形的結(jié)點(diǎn)安置在通信圖中。最重要的對(duì)象安置在圖的中央,與它有直接交互的對(duì)象安置在鄰近。③設(shè)置對(duì)象的初始性質(zhì)。④說明對(duì)象之間的鏈接。首先給出對(duì)象之間的關(guān)聯(lián)連接,然后給出其他連接,并且給出必要的修飾,如構(gòu)造型《global》《local》等。⑤從初始化交互的消息開始,在鏈接上安置相應(yīng)的消息,給出消息的序號(hào)。注意用箭頭的形式區(qū)別同步消息和異步消息。根據(jù)通信圖是屬于說明層還是屬于實(shí)例層,給出消息標(biāo)簽的內(nèi)容,以及必要的構(gòu)造型和約束。⑥處理一些特殊情況,如循環(huán)、自調(diào)用、回調(diào)、多對(duì)象等。通信圖一般包括對(duì)象、鏈和消息。2023年6月6日第42頁2.2StarUML的交互圖和狀態(tài)機(jī)圖創(chuàng)建通信圖的步驟描述如下。①在模型視圖區(qū)域Model處單擊鼠標(biāo)右鍵,彈出顯示菜單。②將鼠標(biāo)移至AddDiagram項(xiàng),然后在子菜單中選擇通信圖(StarUML是基于UML1.4的,對(duì)應(yīng)CollaborationDiagram),則在工作區(qū)域生成一個(gè)新的通信圖界面;③在圖例區(qū)域中選擇Object項(xiàng),然后在工作區(qū)域中點(diǎn)擊鼠標(biāo)左鍵,則生成一個(gè)對(duì)象類。④在屬性編輯區(qū)域?qū)?duì)象類的屬性進(jìn)行編輯。2023年6月6日第43頁2.2StarUML的交互圖和狀態(tài)機(jī)圖⑤當(dāng)創(chuàng)建兩個(gè)及以上的對(duì)象類后,可選擇Link項(xiàng),然后單擊起始類的生命線并拖動(dòng)至結(jié)束類的生命線,松開鼠標(biāo)后,則生成一條鏈關(guān)系。⑥若有類自聯(lián)系的情況,可使用SelfLink項(xiàng)進(jìn)行表示。⑦在圖例區(qū)域中選擇ForwardStimulus或ReverseStimulus項(xiàng),然后點(diǎn)擊步驟⑤中生成的鏈,從而添加消息,其中ForwardStimulus是正向的,ReverseStimulus是反向的。⑧重復(fù)步驟③~⑦,至通信圖完成。2023年6月6日第44頁2.2StarUML的交互圖和狀態(tài)機(jī)圖圖7展示了一個(gè)簡單的通信圖,其中對(duì)象一和對(duì)象二、對(duì)象三之間有通信關(guān)系,對(duì)象三有自聯(lián)系情況。圖7通信圖圖例2023年6月6日第45頁2.2StarUML的交互圖和狀態(tài)機(jī)圖2.狀態(tài)圖和活動(dòng)圖狀態(tài)圖和活動(dòng)圖都是描述一個(gè)類的對(duì)象所有可能的生命歷程的模型,通過對(duì)類對(duì)象的生存周期建立模型來描述對(duì)象隨時(shí)間變化的動(dòng)態(tài)行為,也可以用于描述用例、通信和方法的動(dòng)態(tài)行為,是展示狀態(tài)與狀態(tài)轉(zhuǎn)換的圖。狀態(tài)圖用于對(duì)系統(tǒng)的動(dòng)態(tài)方面建模,主要用于表現(xiàn)一個(gè)對(duì)象從創(chuàng)建到銷毀的整個(gè)生命史,用于對(duì)一個(gè)對(duì)象生存周期的離散階段進(jìn)行建模;而活動(dòng)圖則是一種特殊形式的狀態(tài)機(jī),用于對(duì)計(jì)算流程和工作流程建模。2023年6月6日第46頁2.2StarUML的交互圖和狀態(tài)機(jī)圖(1)狀態(tài)圖一般地,狀態(tài)圖的建立步驟如下。①確定狀態(tài)機(jī)的上下文,它可以是一個(gè)類、子系統(tǒng)或整個(gè)系統(tǒng)。②選擇初始狀態(tài)和終結(jié)狀態(tài)。③發(fā)現(xiàn)對(duì)象的各種狀態(tài)。注意應(yīng)當(dāng)仔細(xì)找出對(duì)問題有意義的對(duì)象狀態(tài)屬性,這些屬性具有少量的值,且該屬性的值的轉(zhuǎn)換受限制。對(duì)于狀態(tài)屬性值的組合,結(jié)合行為有關(guān)的事件和動(dòng)作,就可以確定具有特定的行為特征的狀態(tài)。④確定狀態(tài)可能發(fā)生的轉(zhuǎn)移。注意從一個(gè)狀態(tài)可能轉(zhuǎn)移到哪些狀態(tài),對(duì)象的哪些行為可引起狀態(tài)的轉(zhuǎn)移并找出觸發(fā)狀態(tài)轉(zhuǎn)移的事件。2023年6月6日第47頁2.2StarUML的交互圖和狀態(tài)機(jī)圖⑤把必要的動(dòng)作加到狀態(tài)或轉(zhuǎn)移上。⑥用超狀態(tài)、子狀態(tài)、分支、歷史狀態(tài)等概念組織和簡化一個(gè)復(fù)雜的狀態(tài)機(jī)。⑦分析狀態(tài)的并發(fā)和同步情況。⑧繪制狀態(tài)圖。⑨確認(rèn)每一個(gè)狀態(tài)在某個(gè)時(shí)間組合之下都是可到達(dá)的。確認(rèn)沒有一個(gè)死端狀態(tài),即對(duì)象不能從該狀態(tài)轉(zhuǎn)移出來。2023年6月6日第48頁2.2StarUML的交互圖和狀態(tài)機(jī)圖狀態(tài)圖中主要包含對(duì)象在生存周期中所經(jīng)歷的狀態(tài)序列、誘發(fā)對(duì)象從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài)的事件及狀態(tài)改變所導(dǎo)致的動(dòng)作3個(gè)方面的內(nèi)容。在StarUML中創(chuàng)建一個(gè)狀態(tài)圖的步驟如下。①在模型視圖區(qū)域任一Model處單擊鼠標(biāo)右鍵,彈出顯示菜單。②將鼠標(biāo)移至AddDiagram項(xiàng),然后在彈出的子菜單中選擇狀態(tài)圖(StatechartDiagram),則在工作區(qū)域生成一個(gè)新的狀態(tài)圖界面。③單擊InitialState,在工作區(qū)域中合適的位置單擊鼠標(biāo)左鍵,則生成對(duì)象的初始狀態(tài)點(diǎn);以相同的方法放置FinalState可生成結(jié)束狀態(tài)。④選擇如State等表示對(duì)象狀態(tài)的圖標(biāo),在相應(yīng)地方單擊生成相關(guān)狀態(tài),并可以直接命名。⑤選擇如Transition、SelfTransition等狀態(tài)轉(zhuǎn)換關(guān)系,在轉(zhuǎn)換前狀態(tài)上單擊并拖動(dòng)至轉(zhuǎn)換后的狀態(tài),從而生成相應(yīng)關(guān)系,并可直接命名。⑥重復(fù)步驟④、⑤至狀態(tài)圖完成。2023年6月6日第49頁2.2StarUML的交互圖和狀態(tài)機(jī)圖圖8表示一個(gè)簡單的狀態(tài)圖例子。圖8狀態(tài)圖圖例2023年6月6日第50頁2.2StarUML的交互圖和狀態(tài)機(jī)圖(2)活動(dòng)圖活動(dòng)圖的建立步驟如下。①找出負(fù)責(zé)實(shí)現(xiàn)工作流的業(yè)務(wù)對(duì)象。這些對(duì)象可以是現(xiàn)實(shí)業(yè)務(wù)領(lǐng)域中的實(shí)體,也可以是一種抽象的概念或事物。為每一個(gè)重要的業(yè)務(wù)對(duì)象建立一條泳道(UML2.0中稱為分區(qū)Partition)。②確定工作流的初始狀態(tài)和終結(jié)狀態(tài),明確工作流的邊界。③從工作流的初始狀態(tài)開始,找出隨時(shí)間而發(fā)生的活動(dòng)和動(dòng)作,把它們表示成活動(dòng)狀態(tài)或動(dòng)作狀態(tài)。④對(duì)于復(fù)雜的動(dòng)作或多次重復(fù)出現(xiàn)的一組動(dòng)作,可以把它們組成一個(gè)活動(dòng)狀態(tài),并且用另外一個(gè)活動(dòng)圖來展開表示。⑤給出連接活動(dòng)和動(dòng)作的轉(zhuǎn)移(動(dòng)作流)。首先處理順序動(dòng)作流,然后處理?xiàng)l件分支。最后處理分叉和匯合。⑥在活動(dòng)圖中給出與工作流有關(guān)的重要對(duì)象,并用虛箭頭線把它們與活動(dòng)狀態(tài)或動(dòng)作狀態(tài)相連接。2023年6月6日第51頁2.2StarUML的交互圖和狀態(tài)機(jī)圖在StarUML中創(chuàng)建活動(dòng)圖的步驟如下。①在模型視圖區(qū)域任一Model處單擊鼠標(biāo)右鍵,彈出顯示菜單。②將鼠標(biāo)移至AddDiagram項(xiàng),然后在彈出的子菜單中選擇活動(dòng)圖(ActivityDiagram),則在工作區(qū)域生成一個(gè)新的活動(dòng)圖界面。③單擊InitialState,在工作區(qū)域中合適的位置單擊鼠標(biāo)左鍵,則生成對(duì)象的初始狀態(tài)點(diǎn);以相同的方法放置FinalState可生成結(jié)束狀態(tài)。④選擇如ActionState等表示活動(dòng)狀態(tài)的圖標(biāo)和Decision等活動(dòng)圖標(biāo),在相應(yīng)地方單擊生成相關(guān)狀態(tài),并可以直接命名。⑤選擇如Transition、SelfTransition等狀態(tài)轉(zhuǎn)換關(guān)系,在轉(zhuǎn)換前狀態(tài)上單擊并拖動(dòng)至轉(zhuǎn)換后的狀態(tài),從而生成相應(yīng)關(guān)系,并可直接命名。⑥重復(fù)步驟④、⑤至狀態(tài)圖完成。2023年6月6日第52頁2.2StarUML的交互圖和狀態(tài)機(jī)圖圖9展示了一個(gè)簡單的活動(dòng)圖。圖9活動(dòng)圖圖例2023年6月6日第53頁2.3StarUML的構(gòu)件圖與部署圖構(gòu)件與部署圖都用于對(duì)面向?qū)ο筌浖到y(tǒng)物理方面的建模。構(gòu)件圖提供當(dāng)前模型物理視圖,對(duì)系統(tǒng)的靜態(tài)實(shí)現(xiàn)視圖進(jìn)行建模,而部署圖描述的是系統(tǒng)運(yùn)行時(shí)結(jié)點(diǎn)、構(gòu)件實(shí)例及其對(duì)象的部署。而構(gòu)件包中包含的是一組邏輯相關(guān)的構(gòu)件或者系統(tǒng)的主要構(gòu)件,可以在建模時(shí)將系統(tǒng)的物理模型分成幾個(gè)便于組織管理的部分。2023年6月6日第54頁2.3StarUML的構(gòu)件圖與部署圖1.構(gòu)件圖構(gòu)件圖對(duì)系統(tǒng)的靜態(tài)實(shí)現(xiàn)視圖進(jìn)行建模,顯示一個(gè)系統(tǒng)的構(gòu)件在物理設(shè)計(jì)過程中所映射的類和對(duì)象的配置。一個(gè)構(gòu)件圖可以表示一個(gè)系統(tǒng)全部或部分的組建體系。從組織內(nèi)容看,構(gòu)件圖顯示軟件的組織及構(gòu)件之間的依賴關(guān)系。構(gòu)件圖中,構(gòu)件之間的調(diào)用表示為一個(gè)構(gòu)件與另一個(gè)構(gòu)件之間的依賴關(guān)系。一個(gè)軟件系統(tǒng)中,可以創(chuàng)建一個(gè)或多個(gè)構(gòu)件圖來描述構(gòu)件視圖頂層的構(gòu)件包和構(gòu)件,或者描述每個(gè)構(gòu)件包中的具體內(nèi)容。構(gòu)件圖屬于它們各自所描述的構(gòu)件包。構(gòu)件、構(gòu)件包的屬性及它們之間的關(guān)系都可以通過修改圖標(biāo)或者編輯規(guī)范來改動(dòng)。2023年6月6日第55頁2.3StarUML的構(gòu)件圖與部署圖一般地,構(gòu)件圖的建立步驟如下。①確定構(gòu)件。首先要分解系統(tǒng),考慮有關(guān)系統(tǒng)的組成管理、軟件的重用和物理結(jié)點(diǎn)的部署等因素,把關(guān)系密切的可執(zhí)行程序和對(duì)象庫分別歸入組構(gòu)件,找出相應(yīng)的對(duì)象類、接口等模型元素。②對(duì)構(gòu)件加上必要的構(gòu)造型??梢允褂肬ML的標(biāo)準(zhǔn)構(gòu)造型《executable》、《library》、《table》、《file》、《document》,或自定義新的構(gòu)造型,說明構(gòu)件的性質(zhì)。③確定組構(gòu)件之間的聯(lián)系。最常見的構(gòu)件之間的聯(lián)系是通過接口依賴。一個(gè)構(gòu)件使用某個(gè)接口,另一個(gè)構(gòu)件實(shí)現(xiàn)該接口。④必要時(shí)把構(gòu)件組織成包。構(gòu)件和對(duì)象類、協(xié)作圖(通信圖)等模型元素一樣可以組織成包。⑤繪制構(gòu)件圖。2023年6月6日第56頁2.3StarUML的構(gòu)件圖與部署圖在StarUML中創(chuàng)建構(gòu)件圖的操作步驟如下。①在模型視圖區(qū)域Model處單擊鼠標(biāo)右鍵,彈出顯示菜單。②將鼠標(biāo)移至AddDiagram項(xiàng),然后在子菜單中選擇構(gòu)件圖(ComponentDiagram),則在工作區(qū)域生成一個(gè)新的構(gòu)件圖界面。③在圖例區(qū)點(diǎn)擊構(gòu)件(Component)等組成成分,然后在工作區(qū)域單擊鼠標(biāo)左鍵,生成相應(yīng)組成成分。④在圖例區(qū)點(diǎn)擊依賴(Dependency)等關(guān)系,然后單擊起始成分并拖動(dòng)至結(jié)束成分,松開鼠標(biāo)后,則生成一條關(guān)系。⑤選定相應(yīng)成分或關(guān)系,在屬性編輯區(qū)域?qū)ζ鋵傩赃M(jìn)行編輯。⑥重復(fù)步驟③~⑥,至構(gòu)件圖完成。2023年6月6日第57頁2.3StarUML的構(gòu)件圖與部署圖圖10顯示了一個(gè)按上述步驟畫出的簡單構(gòu)件圖。圖10簡單構(gòu)件圖2023年6月6日第58頁2.3StarUML的構(gòu)件圖與部署圖2.部署圖部署圖表示系統(tǒng)的實(shí)際布局情況,與系統(tǒng)的邏輯結(jié)構(gòu)不同,它描述系統(tǒng)在網(wǎng)絡(luò)上的物理部署。部署圖可以顯示計(jì)算結(jié)點(diǎn)的拓?fù)浣Y(jié)構(gòu)和通信路徑、結(jié)點(diǎn)上運(yùn)行的軟件、軟件包含的邏輯單元(對(duì)象、類等)。特別是對(duì)于分布式系統(tǒng),部署圖可以清楚地描繪硬件設(shè)備的部署、通信及在各設(shè)備上軟件和對(duì)象的部署。2023年6月6日第59頁2.3StarUML的構(gòu)件圖與部署圖一般地,部署圖的建立步驟如下。①確定結(jié)點(diǎn)。注意:標(biāo)示系統(tǒng)中的硬件設(shè)備,包括大型主機(jī)、服務(wù)器、前端機(jī)、網(wǎng)絡(luò)設(shè)備、輸入/輸出設(shè)備等。一個(gè)處理機(jī)是一個(gè)結(jié)點(diǎn),它具有處理功能,能夠執(zhí)行一個(gè)構(gòu)件;一個(gè)設(shè)備也是一個(gè)結(jié)點(diǎn),它沒有處理功能,但它是系統(tǒng)和現(xiàn)實(shí)世界的接口。②對(duì)結(jié)點(diǎn)加上必要的構(gòu)造型??梢允褂肬ML的標(biāo)準(zhǔn)構(gòu)造型或自定義新的構(gòu)造型,說明結(jié)點(diǎn)的性質(zhì)。③確定聯(lián)系。這是關(guān)鍵步驟。部署圖中的聯(lián)系包括結(jié)點(diǎn)與結(jié)點(diǎn)之間的聯(lián)系,結(jié)點(diǎn)與構(gòu)件之間的聯(lián)系,構(gòu)件相互之間的聯(lián)系,可以使用標(biāo)準(zhǔn)構(gòu)造型或自定義新的構(gòu)造型說明聯(lián)系的性質(zhì)。把系統(tǒng)的構(gòu)件如可執(zhí)行程序、動(dòng)態(tài)連接庫等分配到結(jié)點(diǎn)上,并確定結(jié)點(diǎn)與結(jié)點(diǎn)之間,結(jié)點(diǎn)與組構(gòu)件之間,構(gòu)件相互之間的聯(lián)系,以及它們的性質(zhì)。④繪制部署圖。2023年6月6日第60頁2.3StarUML的構(gòu)件圖與部署圖在StarUML中創(chuàng)建部署圖的操作步驟如下。①在模型視圖區(qū)域Model處單擊鼠標(biāo)右鍵,彈出顯示菜單。②將鼠標(biāo)移至AddDiagram項(xiàng),然后在子菜單中選擇部署圖(DeploymentDiagram),則在工作區(qū)域生成一個(gè)新的部署圖界面。③在圖例區(qū)點(diǎn)擊結(jié)點(diǎn)(Node)等組成成分,然后在工作區(qū)域單擊鼠標(biāo)左鍵,生成相應(yīng)組成成分。④在圖例區(qū)點(diǎn)擊鏈接(Association)等關(guān)系,然后單擊起始成分并拖動(dòng)至結(jié)束成分,松開鼠標(biāo)后,則生成一條關(guān)系。⑤選定相應(yīng)成分或關(guān)系,在屬性編輯區(qū)域?qū)ζ鋵傩赃M(jìn)行編輯。⑥重復(fù)步驟③~⑤至部署圖完成。2023年6月6日第61頁2.3StarUML的構(gòu)件圖與部署圖圖11展示了一個(gè)基本的部署圖圖例。圖11部署圖圖例2023年6月6日第62頁2.4StarUML的正向工程和逆向工程圖2.3庫存管理系統(tǒng)的系統(tǒng)流程圖StarUML支持UML模型與編程語言之間的相互轉(zhuǎn)換,即既可以根據(jù)模型生成框架代碼(Java、C++等),該過程也稱為正向工程,然后由開發(fā)人員對(duì)生成的代碼進(jìn)行完善;也可以分析代碼的改動(dòng),對(duì)模型進(jìn)行相應(yīng)的修改,構(gòu)建出與代碼相對(duì)應(yīng)的更好的UML模型,這個(gè)過程也就是逆向工程。2023年6月6日第63頁2.4StarUML的正向工程和逆向工程1.代碼生成在使用StarUML進(jìn)行從模型到代碼的生成時(shí),需要明確兩個(gè)問題:代碼生成時(shí)需要進(jìn)行哪些操作及這些操作步驟的順序如何安排?StarUML能夠生成什么樣的代碼?在代碼生成過程中,各種語言對(duì)轉(zhuǎn)換的操作步驟要求不盡相同,通常StarUML按下列5個(gè)操作步驟進(jìn)行。①檢查模型:目的是查找模型中的問題和不一致性,以確保生成代碼的正確性。②創(chuàng)建構(gòu)件:目的是創(chuàng)建用來保存類的構(gòu)件。構(gòu)件的種類很多,包括源代碼文件、可執(zhí)行文件、運(yùn)行庫,ActiveX構(gòu)件等。2023年6月6日第64頁2.4StarUML的正向工程和逆向工程③將類映射到構(gòu)件:目的是在生成代碼之前,將類映射到相應(yīng)的源代碼構(gòu)件。④設(shè)置代碼生成屬性:目的是確定生成代碼的具體細(xì)節(jié),由于模型元素(包括類、屬性、構(gòu)件等)有多種代碼生成屬性可供選擇,而StarUML只提供常用的代碼生成屬性的默認(rèn)設(shè)置,因此在生成代碼之前,最好先檢查代碼生成屬性并做必要的修改,以免影響生成的語言代碼的框架。⑤選擇要進(jìn)行代碼轉(zhuǎn)換的類、構(gòu)件和包:目的是選擇要進(jìn)行代碼轉(zhuǎn)換的指定模型或模型元素,這一步是將模型轉(zhuǎn)換到具體的代碼過程中的最后一步準(zhǔn)備工作。2.4StarUML的正向工程和逆向工程經(jīng)過前述5個(gè)步驟的準(zhǔn)備工作后,便可以開始執(zhí)行代碼生成的工作了。但需要說明的是:任何工具都不能自動(dòng)創(chuàng)建完整的應(yīng)用程序,StarUML也不例外。StarUML強(qiáng)大的代碼生成能力在于它能收集各種模型和視圖中的相關(guān)信息,依據(jù)模型元素的規(guī)范及為模型元素指定的代碼生成語言的屬性,生成相關(guān)的大量框架代碼??蚣艽a生成后,用戶還需要在相應(yīng)的編程語言環(huán)境下,進(jìn)一步精化系統(tǒng)的程序?qū)崿F(xiàn)。在StarUML生成的代碼框架的基礎(chǔ)上,用戶需要進(jìn)行的后續(xù)工作主要是編寫每個(gè)類的操作(方法實(shí)現(xiàn))和設(shè)計(jì)圖形用戶界面(GUI)。2023年6月6日第65頁2023年6月6日第66頁2.4StarUML的正向工程和逆向工程使用StarUML的代碼生成功能實(shí)現(xiàn)的內(nèi)容主要包括:類:生成模型中的所有類、每個(gè)類的屬性(包括可見性、數(shù)據(jù)類型和默認(rèn)值)、操作聲明及其參數(shù)、參數(shù)數(shù)據(jù)類型和返回值;關(guān)系:模型中的部分關(guān)系可以在代碼生成時(shí)產(chǎn)生;構(gòu)件:生成實(shí)現(xiàn)每個(gè)構(gòu)件的相應(yīng)源代碼文件。2023年6月6日第67頁2.4StarUML的正向工程和逆向工程StarUML中代碼生成的具體操作步驟(以C++為例):①單擊StarUML中的Tools工具欄,在下拉菜單中選擇Add-InManager選項(xiàng),彈出選擇對(duì)話框;②勾選“C++Add-In”選項(xiàng),單擊“OK”按鈕退出;③選擇Model工具欄,再選擇Profiles選項(xiàng);④選擇“C++Profile”,單擊Include>,將C++添加進(jìn)到所包含的Profile中;⑤右鍵單擊想要生成代碼的圖或相關(guān)成分,選擇“C++”選項(xiàng),單擊“單擊GenerateCode”選項(xiàng);⑥按照提示步驟對(duì)相關(guān)內(nèi)容進(jìn)行設(shè)置,最后點(diǎn)擊“Finish”按鈕,則成功生成圖所對(duì)應(yīng)的C++代碼框架。StarUML中對(duì)Java的代碼生成步驟與C++的相似,值得注意的是目前常用的StarUMLV570僅支持JDK1.4及以下的環(huán)境。2.4StarUML的正向工程和逆向工程2.逆向工程進(jìn)行系統(tǒng)開發(fā)時(shí),開發(fā)小組有可能是在一個(gè)舊版本系統(tǒng)的完整源代碼的基礎(chǔ)上進(jìn)行升級(jí),這時(shí)就可以利用StarUML的逆向工程功能從源代碼創(chuàng)建或更新StarUML模型,然后再進(jìn)行迭代式的增量開發(fā)過程。StarUML逆向工程就是利用源代碼中的信息創(chuàng)建或更新StarUML模型,通過ANSIC++、VC++、VisualBASIC、Java等語言插件的支持,StarUML支持多種語言的逆向工程。在逆向工程轉(zhuǎn)出代碼的過程中,StarUML從源代碼中尋找類、屬性和操作、關(guān)系、包、構(gòu)件等逆向工程的源代碼信息,StarUML對(duì)它們進(jìn)行模型化處理后,創(chuàng)建出一個(gè)新的模型或?qū)υ心P瓦M(jìn)行更新。如果源代碼文件包含類,則逆向工程創(chuàng)建StarUML模型中相應(yīng)的類,類中的每個(gè)屬性和操作表現(xiàn)為新建的StarUML模型中對(duì)應(yīng)類的屬性和操作。此外,StarUML還會(huì)收集可見性、數(shù)據(jù)類型、默認(rèn)值等信息,并在模型中顯示出來。源代碼中兩個(gè)類之間的關(guān)系、包和構(gòu)件的信息在StarUML逆向工程中也會(huì)體現(xiàn)到StarUML模型中。2023年6月6日第68頁2.4StarUML的正向工程和逆向工程StarUML中逆向工程生成的操作步驟:①在空模型上建立一個(gè)包,用于存放逆向后的工程;②右鍵單擊包,選擇“C++”,然后在子菜單中單擊“ReverseEngineer”;③單擊Next>按鈕,然后在左端的Directory中選擇需要進(jìn)行逆向工程的相應(yīng)文件夾;④在右端的C++sourcefile中選擇需要的頭文件,然后單擊“Add”進(jìn)行添加;⑤單擊Next>按鈕,來到逆向工程條件設(shè)置界面,設(shè)置好之后,單擊Next>按鈕,則開始逆向工程過程;⑥逆向完成后,點(diǎn)擊確定,完成逆向工程工作。2023年6月6日第69頁2023年6月6日第70頁3一個(gè)簡易教學(xué)管理系統(tǒng)的分析和設(shè)計(jì)本節(jié)將以一個(gè)簡易教學(xué)管理系統(tǒng)問題為例子闡述利用StarUML工具按照UML的分析與設(shè)計(jì)方法進(jìn)行系統(tǒng)開發(fā)的過程。因?yàn)檐浖到y(tǒng)的開發(fā)涉及的問題較多,本節(jié)以簡化后的模型為例,建立主要的系統(tǒng)靜態(tài)結(jié)構(gòu)模型與動(dòng)態(tài)行為模型,闡述利用StarUML工具進(jìn)行UML系統(tǒng)建模及開發(fā)的方法。3.1系統(tǒng)需求描述及分析3.2系統(tǒng)問題領(lǐng)域分析3.3靜態(tài)結(jié)構(gòu)模型的建立3.4動(dòng)態(tài)行為模型的建立3.5系統(tǒng)物理模型的建立3.6代碼框架自動(dòng)生成的過程2023年6月6日第71頁3.1系統(tǒng)需求描述及分析一般地,在開始項(xiàng)目之前,必須對(duì)該項(xiàng)目有一個(gè)合理的認(rèn)識(shí)。對(duì)項(xiàng)目的認(rèn)識(shí)通常來自于開始時(shí)對(duì)系統(tǒng)的需求和結(jié)構(gòu)的理解,這個(gè)過程的最終目的是能夠清晰地闡述“我們要做的這個(gè)項(xiàng)目是什么”。需求的獲取可以從許多途徑得到,包括客戶、領(lǐng)域?qū)<?、其他開發(fā)者、行業(yè)專家、可能的研究和對(duì)以前的系統(tǒng)的分析等。需要注意的是,必須在這個(gè)階段給出系統(tǒng)盡可能完善的描述,否則的話會(huì)影響系統(tǒng)后續(xù)階段的進(jìn)行。2023年6月6日第72頁3.1系統(tǒng)需求描述及分析本節(jié)討論的教學(xué)管理系統(tǒng)的用戶是學(xué)校的學(xué)生、教師和教學(xué)管理員。學(xué)生使用該系統(tǒng)查詢新學(xué)期將開設(shè)的課程和授課教師的情況,選擇自己要學(xué)習(xí)的課程,并進(jìn)行登記注冊(cè);教師使用該系統(tǒng)查詢新學(xué)期將開設(shè)的課程及選擇每門課程的學(xué)生情況;教學(xué)管理員使用該系統(tǒng)進(jìn)行相關(guān)的教學(xué)管理,如新學(xué)期的課程選課注冊(cè)管理、學(xué)生選課的調(diào)整等。該教學(xué)管理系統(tǒng)主要包括給教師分配課程和學(xué)生注冊(cè)選課(學(xué)分制)兩部分的工作。2023年6月6日第73頁3.1系統(tǒng)需求描述及分析給教師分配課程的情況描述:當(dāng)每個(gè)教師決定要教授哪門課程后,課程登記辦公室便把相關(guān)信息輸入計(jì)算機(jī),并給相關(guān)教師一份他(她)將要教授的課程報(bào)告,同時(shí)學(xué)生會(huì)得到一個(gè)課程目錄以供選擇課程。學(xué)生填寫一份標(biāo)記有他們選擇的課程的完整表格給登記辦公室,登記辦公室的職員把學(xué)生的表格輸入到學(xué)校的主計(jì)算機(jī)中。當(dāng)學(xué)生一學(xué)期的課程注冊(cè)信息輸入完畢后,系統(tǒng)會(huì)成批處理學(xué)生的申請(qǐng)并分配課程。大多數(shù)情況下學(xué)生會(huì)獲得他們的第一選擇,然而由于可能會(huì)引起的沖突(如報(bào)同一個(gè)教師的學(xué)生太多),登記辦公室會(huì)告訴學(xué)生做其他的選擇。一旦所有學(xué)生的課程分配完畢,系統(tǒng)會(huì)給學(xué)生一份課程表以便他們檢查。學(xué)生選課工作結(jié)束后,每個(gè)教師會(huì)得到一份他要教授的課程清單及選擇該課程的學(xué)生詳細(xì)名單。2023年6月6日第74頁3.1系統(tǒng)需求描述及分析學(xué)生注冊(cè)選課的情況描述:在每個(gè)學(xué)期快結(jié)束的時(shí)候,學(xué)生們會(huì)得到一份包含下學(xué)期將要開設(shè)的課程的列表及每門課程的相關(guān)信息,如開課教師情況、系別和學(xué)生選擇課程的先決條件等,可以幫助學(xué)生有目的的選擇課程。新系統(tǒng)允許學(xué)生在將要來臨的新學(xué)期中選擇4~6門學(xué)科。另外,每個(gè)學(xué)生有在萬一某門課程名額滿員或被取消后有重選的機(jī)會(huì)。每門課程最多有120名、最少有20名學(xué)生選擇才能開課,少于20個(gè)人報(bào)名的課程將被取消。當(dāng)一個(gè)學(xué)生的注冊(cè)信息完成之后,系統(tǒng)給收費(fèi)系統(tǒng)發(fā)送一個(gè)消息,以便學(xué)生為其選中的課程付費(fèi)。每個(gè)學(xué)期有一段時(shí)間讓學(xué)生可以改變計(jì)劃。學(xué)生可以在這段時(shí)間內(nèi)訪問聯(lián)機(jī)系統(tǒng)以增加或刪除課程。大多數(shù)學(xué)生的選擇會(huì)在一周內(nèi)解決,但有的可能要兩周才能解決。2023年6月6日第75頁3.1系統(tǒng)需求描述及分析本節(jié)討論的教學(xué)管理系統(tǒng)的相關(guān)系統(tǒng)有收費(fèi)系統(tǒng),該系統(tǒng)需要把學(xué)生選課注冊(cè)信息傳送給收費(fèi)系統(tǒng),以供收費(fèi)系統(tǒng)計(jì)算學(xué)生應(yīng)交納的費(fèi)用,但是不要求收費(fèi)系統(tǒng)反饋學(xué)生應(yīng)交納的費(fèi)用信息。假定在學(xué)校的計(jì)算中心有功能強(qiáng)大的工作站,在各系、部門、圖書館、學(xué)生宿舍都有PC并且都已連網(wǎng)。該教學(xué)管理系統(tǒng)將采用客戶機(jī)/服務(wù)器結(jié)構(gòu)來建立,系統(tǒng)的應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器設(shè)在學(xué)校計(jì)算中心的工作站,學(xué)生、教師和教學(xué)管理員可以在各系、部門、圖書館、學(xué)生宿舍等連網(wǎng)的PC上使用該教學(xué)管理系統(tǒng)。2023年6月6日第76頁3.2系統(tǒng)問題領(lǐng)域分析系統(tǒng)問題領(lǐng)域分析是軟件系統(tǒng)開發(fā)的第一項(xiàng)基本工作,分析問題領(lǐng)域的結(jié)果是對(duì)問題領(lǐng)域的清晰、精確的定義,明確目標(biāo)系統(tǒng)將做些什么。分析問題領(lǐng)域的主要任務(wù)包括:對(duì)問題領(lǐng)域進(jìn)行抽象,提出描述問題的模型;對(duì)系統(tǒng)進(jìn)行需求分析過程,確定開發(fā)系統(tǒng)需要的各個(gè)要素,如系統(tǒng)的職責(zé)范圍、功能需求、性能需求等;用UML的用例圖描述要開發(fā)的系統(tǒng)的模型,初步確定該系統(tǒng)的體系結(jié)構(gòu)等。3.2系統(tǒng)問題領(lǐng)域分析1.確定系統(tǒng)范圍和系統(tǒng)邊界首先要確定業(yè)務(wù)需求和系統(tǒng)目標(biāo)。本節(jié)討論的教學(xué)管理系統(tǒng)的職責(zé)范圍包括新學(xué)期給教師分配課程和學(xué)生注冊(cè)選課兩部分的工作,除此以外的其他教學(xué)管理內(nèi)容,如安排教學(xué)計(jì)劃、排課、實(shí)習(xí)、考試等都不屬于該系統(tǒng)的職責(zé)范圍。至于學(xué)校的其他管理工作,如科研、人事、收費(fèi)、資產(chǎn)等的管理也不屬于該系統(tǒng)的職責(zé)范圍。教學(xué)管理系統(tǒng)與收費(fèi)系統(tǒng)存在系統(tǒng)邊界,收費(fèi)系統(tǒng)將從教學(xué)管理系統(tǒng)得到學(xué)生選課注冊(cè)信息,從而收取費(fèi)用。教學(xué)管理系統(tǒng)與其他管理系統(tǒng)沒有直接的聯(lián)系,但是可以與學(xué)校的全局?jǐn)?shù)據(jù)庫共享學(xué)生、教師、教學(xué)計(jì)劃等公共數(shù)據(jù)。2023年6月6日第77頁2023年6月6日第78頁3.2系統(tǒng)問題領(lǐng)域分析參與者(Actors)是與系統(tǒng)有交互作用的人或事物。一個(gè)actor可能僅僅是給系統(tǒng)輸入信息,或僅僅是從系統(tǒng)獲得信息或從系統(tǒng)獲得或輸出信息。典型地,參與者是從問題域的描述和與客戶、領(lǐng)域?qū)<业慕涣?、討論中獲得的。通過上面的需求描述可以確定教學(xué)管理系統(tǒng)中包含的4個(gè)參與者:學(xué)生、教師、注冊(cè)管理員和收費(fèi)系統(tǒng)。對(duì)于每一個(gè)參與者,應(yīng)當(dāng)明確其業(yè)務(wù)活動(dòng)的內(nèi)容及對(duì)系統(tǒng)的服務(wù)要求等?!皩W(xué)生”參與者使用該教學(xué)管理系統(tǒng)查詢新學(xué)期開設(shè)的課程信息和教師開課信息,選擇課程并登記注冊(cè)信息。“教師”參與者使用該教學(xué)管理系統(tǒng)查詢新學(xué)期開設(shè)的課程信息和學(xué)生選課信息?!白?cè)管理員”參與者使用該教學(xué)管理系統(tǒng)管理新學(xué)期開設(shè)的課程的選課注冊(cè)情況,管理工作包括新學(xué)期開設(shè)的課程情況的錄入、維護(hù)、統(tǒng)計(jì)等,并且負(fù)責(zé)把確定的學(xué)生選課注冊(cè)信息發(fā)送給收費(fèi)系統(tǒng),作為計(jì)算學(xué)生應(yīng)付費(fèi)用的依據(jù)。“收費(fèi)系統(tǒng)”參與者是外部系統(tǒng)參與者,需要從教學(xué)管理系統(tǒng)接受學(xué)生的課程注冊(cè)信息。3.2系統(tǒng)問題領(lǐng)域分析模型中創(chuàng)建的每個(gè)參與者應(yīng)該添加摘要描述文檔,用來表示每個(gè)參與者和系統(tǒng)交互的規(guī)則。上述教學(xué)管理系統(tǒng)中各參與者的簡要描述如下:學(xué)生——在學(xué)校注冊(cè)聽課的人;教師——被學(xué)校認(rèn)可講授某門課程的人;注冊(cè)管理員——該教學(xué)管理系統(tǒng)所應(yīng)用的學(xué)生注冊(cè)系統(tǒng)所認(rèn)同的維護(hù)人員;收費(fèi)系統(tǒng)——學(xué)生付費(fèi)的外部系統(tǒng)。創(chuàng)建完4個(gè)參與者,并對(duì)“學(xué)生”參與者填加描述文檔后的用例圖如圖12所示。2023年6月6日第79頁3.2系統(tǒng)問題領(lǐng)域分析2023年6月6日第80頁圖12選課注冊(cè)系統(tǒng)用例圖3.2系統(tǒng)問題領(lǐng)域分析3.定義用例每一個(gè)用例(UseCase)都是一個(gè)參與者與系統(tǒng)在交互中執(zhí)行的有關(guān)事務(wù)序列。一般地,應(yīng)當(dāng)根據(jù)系統(tǒng)需求,找出全部的用例,并從參與者的角度給出事件流。定義一個(gè)好的用例的首要原則是:用例必須給參與者提供某些信息。以下是教學(xué)管理系統(tǒng)必須要處理的問題:①學(xué)生actor需要使用系統(tǒng)來注冊(cè)課程;②當(dāng)選擇課程的過程完成后,收費(fèi)系統(tǒng)必須獲得收費(fèi)信息;③教師actor需要使用系統(tǒng)來選擇課程,且必須得到課程花名冊(cè);④登記員要生成課程目錄,而且必須維護(hù)課程、學(xué)生、教授等信息。2023年6月6日第81頁3.2系統(tǒng)問題領(lǐng)域分析基于這些需要,可以生成以下UseCases:①注冊(cè)課程;②選擇課程任教;③得到課程花名冊(cè);④維護(hù)課程信息;⑤維護(hù)教師信息;⑥維護(hù)學(xué)生信息;⑦創(chuàng)建課程目錄。教學(xué)管理系統(tǒng)的選課注冊(cè)系統(tǒng)中填加各個(gè)用例及“注冊(cè)課程”用例的摘要描述后的情況如圖13所示。2023年6月6日第82頁圖133.2系統(tǒng)問題領(lǐng)域分析4.繪制用例圖用例圖是系統(tǒng)的外部行為視圖,在確定了參與者和相關(guān)用例的基礎(chǔ)上,通過繪制用例圖可以更清晰地理解系統(tǒng)的行為。繪制用例圖的方法有些類似于過程化軟件工程中數(shù)據(jù)流圖的畫法,從頂層抽象開始,然后逐步分解、細(xì)化用例圖,直到能夠清晰地表達(dá)問題,滿足系統(tǒng)分析與建立模型的需要為止。參與者都存在與系統(tǒng)的交互。從教學(xué)管理系統(tǒng)的需求分析描述,可以確定所有操作都圍繞一個(gè)用例進(jìn)行,即選課管理,該用例與4個(gè)參與者都存在交互,選課注冊(cè)系統(tǒng)的頂層用例圖如圖14所示。2023年6月6日第83頁3.2系統(tǒng)問題領(lǐng)域分析2023年6月6日第84頁圖14選課注冊(cè)系統(tǒng)頂層圖例圖3.2系統(tǒng)問題領(lǐng)域分析根據(jù)系統(tǒng)分析,教學(xué)管理系統(tǒng)中選課注冊(cè)系統(tǒng)的主用例圖如圖15所示。在繪制用例圖時(shí),不但需要把用例與參與者之間的聯(lián)系表示出來,而且還應(yīng)當(dāng)把用例之間的聯(lián)系也表現(xiàn)出來。用例之間的聯(lián)系最常見的有《Uses》、《Include》和《Extend》等聯(lián)系。本例中,用例“查詢課程信息”和用例“注冊(cè)課程”都與用例“身份驗(yàn)證”有《Uses》聯(lián)系,即它們?cè)谶\(yùn)行中都使用用例“身份驗(yàn)證”進(jìn)行用戶的合法身份檢查。同樣的《Uses》聯(lián)系也存在于其他用例與“身份驗(yàn)證”用例之間。StarUML中的《Uses》聯(lián)系使用帶《Uses》標(biāo)記的虛線箭頭表示,本系統(tǒng)中附加的UseCase圖如圖16所示。2023年6月6日第85頁3.2系統(tǒng)問題領(lǐng)域分析2023年6月6日第86頁圖15選課注冊(cè)系統(tǒng)的主用例圖3.2系統(tǒng)問題領(lǐng)域分析2023年6月6日第87頁圖16附加的UseCase圖3.2系統(tǒng)問題領(lǐng)域分析根據(jù)系統(tǒng)分析,教學(xué)管理系統(tǒng)中選課注冊(cè)系統(tǒng)的主用例圖如圖15所示。在繪制用例圖時(shí),不但需要把用例與參與者之間的聯(lián)系表示出來,而且還應(yīng)當(dāng)把用例之間的聯(lián)系也表現(xiàn)出來。用例之間的聯(lián)系最常見的有《Uses》、《Include》和《Extend》等聯(lián)系。本例中,用例“查詢課程信息”和用例“注冊(cè)課程”都與用例“身份驗(yàn)證”有《Uses》聯(lián)系,即它們?cè)谶\(yùn)行中都使用用例“身份驗(yàn)證”進(jìn)行用戶的合法身份檢查。同樣的《Uses》聯(lián)系也存在于其他用例與“身份驗(yàn)證”用例之間。StarUML中的《Uses》聯(lián)系使用帶《Uses》標(biāo)記的虛線箭頭表示,本系統(tǒng)中附加的UseCase圖如圖16所示。2023年6月6日第88頁3.2系統(tǒng)問題領(lǐng)域分析5.繪制主要交互圖交互圖描述用例如何實(shí)現(xiàn)對(duì)象之間的交互,用于建立對(duì)象之間的動(dòng)態(tài)行為模型。分析問題領(lǐng)域時(shí),繪制交互圖的目的是驗(yàn)證領(lǐng)域分析的結(jié)果和用例視圖的正確性,在以后對(duì)系統(tǒng)動(dòng)態(tài)行為的建模過程中,還需要對(duì)交互圖做深入分析、細(xì)化和完善。交互圖有兩種:順序圖和協(xié)作圖(通信圖),開發(fā)人員可以根據(jù)需要有選擇地繪制。2023年6月6日第89頁3.2系統(tǒng)問題領(lǐng)域分析分析本系統(tǒng)中“學(xué)生”與“選課注冊(cè)表單”活動(dòng)的交互順序:當(dāng)“學(xué)生”發(fā)出“查詢”請(qǐng)求時(shí),系統(tǒng)的“選課注冊(cè)表單”對(duì)象響應(yīng)該消息,按照輸入的查詢條件從數(shù)據(jù)庫中進(jìn)行查找,并向“學(xué)生”反饋查詢成功或失敗的信息。當(dāng)查詢成功時(shí),系統(tǒng)的“選課注冊(cè)表單”對(duì)象分別發(fā)出“增加”或“刪除”學(xué)生選課數(shù)據(jù)的消息,由用戶來進(jìn)行選擇?!伴_設(shè)課程”對(duì)象響應(yīng)該消息,找出數(shù)據(jù)庫中的相關(guān)數(shù)據(jù),增加或刪除學(xué)生的姓名和所選的課程名,或做相應(yīng)修改,并把增加或刪除學(xué)生選課操作成功或失敗的信息反饋給“選課注冊(cè)表單”接口對(duì)象,“選課注冊(cè)表單”接口對(duì)象再反饋給學(xué)生。并且此選課操作還必須得到“學(xué)生”的確認(rèn),才能最終肯定選課成功,此時(shí)“學(xué)生”應(yīng)按下“確認(rèn)”鍵,即發(fā)出提交請(qǐng)求,“選課注冊(cè)表單”接口對(duì)象響應(yīng)該請(qǐng)求,并發(fā)出“存儲(chǔ)”消息,才由“開設(shè)課程”對(duì)象響應(yīng)“存儲(chǔ)”消息,進(jìn)行數(shù)據(jù)庫存儲(chǔ)操作,把學(xué)生的選課數(shù)據(jù)信息真正存入數(shù)據(jù)庫中。若“學(xué)生”結(jié)束選課,發(fā)出“退出”系統(tǒng)請(qǐng)求,系統(tǒng)的“注冊(cè)表單”接口對(duì)象響應(yīng)請(qǐng)求,關(guān)閉系統(tǒng)。2023年6月6日第90頁3.2系統(tǒng)問題領(lǐng)域分析按照上述交互活動(dòng)分析,可以繪制“學(xué)生”與用例“選課注冊(cè)”的順序圖如圖17所示。2023年6月6日第91頁圖17“學(xué)生”與“選課注冊(cè)”順序圖2023年6月6日第92頁3.3靜態(tài)結(jié)構(gòu)模型的建立系統(tǒng)的靜態(tài)結(jié)構(gòu)模型主要由對(duì)象類圖和對(duì)象圖來表達(dá)。發(fā)現(xiàn)對(duì)象類及其聯(lián)系,確定它們之間的靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)行為,是面向?qū)ο蠓治鲋械淖罨镜娜蝿?wù)。類代表的是領(lǐng)域知識(shí)中的詞匯和術(shù)語。在需求分析過程中,要注意客戶用來描述實(shí)體的名詞術(shù)語,這些名詞可以作為領(lǐng)域模型中的類;還要注意所聽到的動(dòng)詞,因?yàn)檫@些動(dòng)詞可能會(huì)構(gòu)成這些類中的操作屬性;當(dāng)?shù)玫揭唤M類的核心列表后,應(yīng)當(dāng)向客戶詢問在業(yè)務(wù)過程中每個(gè)類的作用,以便確定這些類的相關(guān)屬性內(nèi)容,以及上述名詞的一些附加信息。最后,根據(jù)常識(shí)也可以為這些類添加一些屬性和操作。2023年6月6日第93頁3.3靜態(tài)結(jié)構(gòu)模型的建立例如,針對(duì)上述教學(xué)管理系統(tǒng)的需求分析,準(zhǔn)備的問題有:①學(xué)生要選擇并注冊(cè)課程;②教師要選擇課程來教;③注冊(cè)管理人員要?jiǎng)?chuàng)建課程和生成學(xué)期(課程)目錄;④注冊(cè)管理人員要維護(hù)關(guān)于課程、教師和學(xué)生的所有信息;⑤收費(fèi)系統(tǒng)要從注冊(cè)系統(tǒng)獲取學(xué)生的費(fèi)用交納情況。2023年6月6日第94頁3.3靜態(tài)結(jié)構(gòu)模型的建立基于對(duì)以上問題的回答,可以確定其中出現(xiàn)的名詞有“學(xué)生”、“教師”、“課程”等;動(dòng)詞有“開設(shè)課程”、“學(xué)生登記”、“課程登記”、“選課統(tǒng)計(jì)”等?!皩W(xué)生”的屬性有姓名、年齡、性別、通信地址、聯(lián)系電話、專業(yè)、班級(jí)等,對(duì)這些信息的服務(wù)操作有查詢、添加、刪除、修改等;“教師”的屬性有姓名、年齡、性別、通信地址、聯(lián)系電話、職稱等,對(duì)這些信息的服務(wù)操作也有查詢、添加、刪除、修改等;對(duì)于“課程”,至少應(yīng)說明課程的名稱、性質(zhì)和學(xué)分?jǐn)?shù)等,對(duì)應(yīng)的操作有加入課程、刪除課程等;“開設(shè)課程”類負(fù)責(zé)新學(xué)期開設(shè)課程和選課信息的處理,并提供查詢功能,其屬性有授課日期、授課時(shí)間、地點(diǎn)、授課教師、注冊(cè)學(xué)生數(shù)等,相關(guān)操作有加入選課學(xué)生、加入授課教師、返回學(xué)生已滿信息等;“學(xué)生登記”類負(fù)責(zé)新學(xué)期學(xué)生的選課登記,該類的屬性有學(xué)期、課程名等,操作有加入課程、打印等;“課程登記”類負(fù)責(zé)新學(xué)期課程的選課登記,它根據(jù)參與者“教師”和“注冊(cè)管理員”的要求,匯總學(xué)生的選課信息,對(duì)每門課程給出選修該課程的學(xué)生清單,該類的屬性有學(xué)期、學(xué)生名等,操作有加入學(xué)生、打印等;“選課統(tǒng)計(jì)”類負(fù)責(zé)學(xué)生選課信息的統(tǒng)計(jì)處理,其屬性包括學(xué)期、課程名等,操作有按學(xué)生統(tǒng)計(jì)、按課程統(tǒng)計(jì)、打印等。2023年6月6日第95頁3.3靜態(tài)結(jié)構(gòu)模型的建立在定義了對(duì)象類之后,需要進(jìn)一步分析對(duì)象類之間的聯(lián)系。一般地,對(duì)象類之間的聯(lián)系有多種類型,如關(guān)聯(lián)、聚集、泛化、依賴等。在本節(jié)提供的教學(xué)管理系統(tǒng)中,各類之間存在的關(guān)系可以描述如下。①關(guān)聯(lián)。在“開設(shè)課程”類與“師生”類之間存在“授課”和“登記注冊(cè)”關(guān)聯(lián)。相互關(guān)聯(lián)的類之間不存在繼承關(guān)系,而是通過消息傳遞相互聯(lián)系,協(xié)同工作。②聚集聯(lián)系。新學(xué)期開設(shè)的課程只是學(xué)校教學(xué)計(jì)劃中需要設(shè)置的課程中的一部分,“開設(shè)課程”類與“課程”類之間存在聚合關(guān)系,“開設(shè)課程”類是代表部分的對(duì)象類,“課程”類是代表整體的對(duì)象類。同理,“開設(shè)課程”類與“學(xué)生登記”類、“課程登記”類之間都存在聚集聯(lián)系。2023年6月6日第96頁3.3靜態(tài)結(jié)構(gòu)模型的建立③泛化聯(lián)系。學(xué)生與教師之間有許多共同的信息內(nèi)容,如姓名、年齡、性別、管理號(hào)、通信地址、聯(lián)系電話等。因此,可以把學(xué)生與教師的共同信息和共同操作抽取出來,組成一個(gè)新類“師生”,原來的“學(xué)生”類中保留學(xué)生特有的屬性“專業(yè)”和“班級(jí)”,在“教師”類中保留教師特有的屬性“職稱”?!皩W(xué)生”類、“教師”類與“師生”類的聯(lián)系為泛化聯(lián)系,“師生”類為更一般的類,“學(xué)生”類和“教師”類是特殊類,它們繼承“師生”類中的公共屬性。④依賴聯(lián)系。選課系統(tǒng)是在新學(xué)期所開設(shè)的課程的數(shù)據(jù)上進(jìn)行的,在“選課統(tǒng)計(jì)”類和“開設(shè)課程”類之間存在依賴聯(lián)系,“選課統(tǒng)計(jì)”類依賴于“開設(shè)課程”類。在定義聯(lián)系時(shí),需要同時(shí)分析和確定聯(lián)系各端的對(duì)象類的多重性、角色、導(dǎo)航等性質(zhì),這些內(nèi)容都可以從需求分析、領(lǐng)域知識(shí)等來分析和確定。2023年6月6日第97頁3.3靜態(tài)結(jié)構(gòu)模型的建立根據(jù)已定義的對(duì)象類及其聯(lián)系,以及對(duì)象類的多重性、角色、導(dǎo)航等性質(zhì),可以畫出相應(yīng)的類圖。創(chuàng)建好類以后,需要寫文檔加以說明。文檔陳述類的作用而不是類的結(jié)構(gòu)。例如,學(xué)生信息類的文檔可以寫成:需要注冊(cè)和付費(fèi)的學(xué)生。學(xué)生是在大學(xué)里注冊(cè)課程的某個(gè)人。而寫成下面的文檔則僅僅告訴人們類的結(jié)構(gòu),這些都可以從類的結(jié)構(gòu)里通過屬性表現(xiàn)出來,它沒有告訴人們?yōu)槭裁葱枰@個(gè)類。學(xué)生的姓名、地址和電話號(hào)碼。創(chuàng)建好的“師生信息”類在瀏覽器中的視圖及其文檔描述參見圖182023年6月6日第98頁3.3靜態(tài)結(jié)構(gòu)模型的建立圖18在瀏覽器中創(chuàng)建類及類的文檔描述示例2023年6月6日第99頁3.3靜態(tài)結(jié)構(gòu)模型的建立按照上述分析產(chǎn)生的課程管理對(duì)象類圖參見圖19。如果一個(gè)系統(tǒng)僅僅包含少數(shù)的幾個(gè)類,人們便可以很容易地管理。但通常的系統(tǒng)都是相對(duì)復(fù)雜的大型系統(tǒng),需要把大量的模型元素進(jìn)行分組,以方便理解和處理。這樣,人們就需要包這種機(jī)制來進(jìn)行管理,這就是包有用的原因。在邏輯視圖里,包和與它有關(guān)的包或類聯(lián)系。把類組織到包中,人們可以從總體看到模型的結(jié)構(gòu),也可以看到每個(gè)包內(nèi)的詳細(xì)情況。如本系統(tǒng)中,可以將學(xué)生、教師和注冊(cè)管理員都組織到一個(gè)人員信息包中。本系統(tǒng)的瀏覽器中重新定位類后的包如圖20所示。2023年6月6日第100頁3.3靜態(tài)結(jié)構(gòu)模型的建立圖19課程管理對(duì)象類圖2023年6月6日第101頁3.3靜態(tài)結(jié)構(gòu)模型的建立圖20重新定位類后的包圖20重新定位類后的包2023年6月6日第102頁3.4動(dòng)態(tài)行為模型的建立用例視圖中的類圖、對(duì)象圖及用例圖表達(dá)的都是系統(tǒng)的靜態(tài)結(jié)構(gòu),系統(tǒng)的動(dòng)態(tài)行為模型由交互圖(順序圖和通信圖(協(xié)作圖))、狀態(tài)圖和活動(dòng)圖來表達(dá)。在系統(tǒng)的分析和設(shè)計(jì)中需要對(duì)主要的用例和對(duì)象類繪制這些圖形,以便分析系統(tǒng)的行為,驗(yàn)證和修改系統(tǒng)的靜態(tài)結(jié)構(gòu),從而滿足用戶的要求,達(dá)到系統(tǒng)的目標(biāo)。2023年6月6日第103頁3.4動(dòng)態(tài)行為模型的建立1.建立順序圖在UML中,順序圖中的對(duì)象是表示成一個(gè)帶有下劃線名字的矩形框。對(duì)象可以以3種方式命名:對(duì)象名字、對(duì)象名字和類或者僅僅是類名(任意對(duì)象)。3種命名方式如圖21所示。在每個(gè)對(duì)象下也有由點(diǎn)畫線表示的對(duì)象的時(shí)間線,對(duì)象間的消息用從客戶端(消息發(fā)送者)指向服務(wù)器端(消息接收者)的箭頭表示。2023年6月6日第104頁3.4動(dòng)態(tài)行為模型的建立一般地,為了繪制順序圖,首先要對(duì)用例編寫交互活動(dòng)的腳本,然后確定參與交互的參與者和對(duì)象,以及涉及的交互事件。例如,對(duì)于用例“維護(hù)課程信息”,它是參與者“注冊(cè)管理員”和接口對(duì)象“注冊(cè)表單”、“開設(shè)課程表單”及對(duì)象“開設(shè)課程”之間發(fā)生的交互,可以繪制開設(shè)課程的順序圖如下所示,其中的交互事件如下。①登錄?!白?cè)管理員”發(fā)出登錄信息,并輸入用戶標(biāo)識(shí)(ID)和口令登錄該教學(xué)管理系統(tǒng)進(jìn)行課程設(shè)置活動(dòng)。②驗(yàn)證?!白?cè)表單”接口對(duì)象響應(yīng)登錄信息,檢查用戶標(biāo)識(shí)(ID)和口令,如果正確無誤,則可以繼續(xù)下一步交互,否則提示用戶重新輸入用戶標(biāo)識(shí)(ID)和口令,進(jìn)行新一輪的身份驗(yàn)證。2023年6月6日第105頁3.4動(dòng)態(tài)行為模型的建立③查詢?!白?cè)管理員”發(fā)出要求查詢已有的開設(shè)課程的消息,“開設(shè)課程表單”接口響應(yīng)該消息,按照輸入的查詢條件從數(shù)據(jù)庫中找出有關(guān)的課程,并向“注冊(cè)管理員”反饋找到的課程相關(guān)信息及查詢成功信息或者未找到所要內(nèi)容的查詢失敗信息。④設(shè)置課程?!白?cè)管理員”發(fā)出設(shè)置課程的消息,進(jìn)行設(shè)置課程的活動(dòng)。“開設(shè)課程表單”接口響應(yīng)該消息,根據(jù)“注冊(cè)管理員”的要求決定進(jìn)行增加或刪除課程的活動(dòng)。⑤增加課程。“開設(shè)課程表單”接口對(duì)象發(fā)出增加課程消息,“開設(shè)課程”對(duì)象響應(yīng)該消息,并在開設(shè)課程表中增加指定的課程。⑥刪除課程。“開設(shè)課程表單”接口對(duì)象發(fā)出刪除課程消息,“開設(shè)課程”對(duì)象響應(yīng)該消息,并在開設(shè)課程表中刪除指定的課程。2023年6月6日第106頁3.4動(dòng)態(tài)行為模型的建立⑦提交。在完成了課程設(shè)置后,“注冊(cè)管理員”發(fā)出請(qǐng)求提交的消息,進(jìn)行存儲(chǔ)課程設(shè)置的操作?!伴_設(shè)課程表單”接口對(duì)象響應(yīng)該請(qǐng)求。⑧存儲(chǔ)?!伴_設(shè)課程表單”接口對(duì)象發(fā)出“存儲(chǔ)”消息,“開設(shè)課程”對(duì)象響應(yīng)該消息,進(jìn)行數(shù)據(jù)庫存儲(chǔ)操作,把課程設(shè)置的結(jié)果數(shù)據(jù)真正存入物理的數(shù)據(jù)庫中。⑨退出?!白?cè)管理員”發(fā)出退出系統(tǒng)的消息,“注冊(cè)表單”接口對(duì)象響應(yīng)該請(qǐng)求,關(guān)閉系統(tǒng)。教學(xué)管理系統(tǒng)的“設(shè)置開設(shè)課程”的順序圖如圖22所示。2023年6月6日第107頁3.4動(dòng)態(tài)行為模型的建立⑦提交。在完成了課程設(shè)置后,“注冊(cè)管理員”發(fā)出請(qǐng)求提交的消息,進(jìn)行存儲(chǔ)課程設(shè)置的操作?!伴_設(shè)課程表單”接口對(duì)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論