大學(xué)選課系統(tǒng)的分析與設(shè)計—— UML應(yīng)用案例



大學(xué)選課系統(tǒng)的分析與設(shè)計,UML,應(yīng)用案例,本文主要以“學(xué)生注冊討論班為例,運用UML建模語言對大學(xué)的選課系統(tǒng)進行了分析從問題分析到最后的系統(tǒng)設(shè)計,主要從以下幾個方面進行了陳述:,問題描述,需求分析,靜態(tài)建模,動態(tài)建模,組件建模,部署建模,一、問題描述,大學(xué)選課系統(tǒng)是與學(xué)生有著緊密的聯(lián)系,具有注冊、交費、選課、成績查詢等功能,為了簡化本次系統(tǒng)分析只考慮學(xué)生注冊討論班的功能,該問題描述如下:,學(xué)生想要注冊某門討論班,于是向注冊員提交其姓名和學(xué)生編號;,注冊員驗證該學(xué)生是否有資格注冊這門討論班;,注冊員驗證后,提供討論班列表,并驗證是否適合學(xué)生的課程安排;,注冊員統(tǒng)計費用并通知學(xué)生;,在學(xué)生確認(rèn)后,注冊員將該學(xué)生注冊到討論班,并將費用參加學(xué)生帳單;,注冊員向?qū)W生提供注冊成功確實認(rèn)信息根據(jù)以上問題描述,該簡化系統(tǒng)應(yīng)具有如下功能:,學(xué)生搜索、注冊討論班,驗證注冊資格,顯示討論班及相關(guān)信息,提供成績單,結(jié)算并顯示帳單,注冊成功,關(guān)閉注冊,返回,二、需求分析 采用用例驅(qū)動的方法分析需求的主要任務(wù)是識別參與者和用例,并建立用例模型,主要分為以下三個局部識別參與者,識別用例,確定事件流,返回,一識別參與者角色,參與者表示與系統(tǒng)進行交互的任何人或物。
可以包括人不只是最終用戶、外部系統(tǒng)和其它機構(gòu)通過分析選課系統(tǒng)的功能需求,確定有以下三個參與者:,1學(xué)生:在系統(tǒng)中申請注冊討論班的人,2注冊員:完成驗證注冊信息的人或外部系統(tǒng),3教授:指導(dǎo)或協(xié)助討論班和管理學(xué)生成績,返回,二識別用例用況,用例是一系列活動,描述真實世界中參與者與系統(tǒng)相互交互的方式通過分析選課系統(tǒng)的功能需求,確定有如下用例:,1注冊討論班,2退出討論班,3參加討論班,4完成討論班,5通知學(xué)生方案改變,6分發(fā)成績單,7輸出收費方案表,8輸入成績,9指導(dǎo)討論班,10生成教學(xué)進度,系統(tǒng)的用例圖如下所示:,返回,三用例的事件流描述,用例還可以事件流來描述,用例的事件流是對完成用例行為所需的事件的描述事件流描述了系統(tǒng)應(yīng)該作什么,而不是描述系統(tǒng)應(yīng)該怎樣做學(xué),生,注冊員,1,學(xué)生想去注冊討論班3,注冊員確定該學(xué)生是否有資格在這所學(xué)校注冊討論班2,學(xué)生向注冊員提交其姓名和編號,4,學(xué)生從可供選擇的討論班列表中,選出他希望注冊的討論班4,學(xué)生從可供選擇的討論班列表中,選出他希望注冊的討論班5.,注冊員驗證學(xué)生是否有資格注冊這門課6.,注冊員檢驗討論班是否適合學(xué)生已有的課程安排,7.,注冊員根據(jù)討論班目錄中公布的費用、適用的學(xué)生費用和適用的稅,計算出這門課的收費。
8.,注冊員通知學(xué)生相關(guān)費用9.,注冊員確認(rèn)學(xué)生表示愿意注冊該討論班10.,學(xué)生表示愿意注冊該討論班14.,當(dāng)學(xué)生得到確認(rèn)信息時用況結(jié)束,11.,注冊員把學(xué)生注冊到該討論班12.,注冊員把相應(yīng)的費用加到學(xué)生賬單中13.,注冊員向?qū)W生提供已經(jīng)注冊成功的確認(rèn)名稱:注冊討論班,描述:把現(xiàn)有的有資格的某一學(xué)生注冊到某個討論班前提條件:學(xué)生已在大學(xué)注冊后置條件:如果學(xué)生具有注冊資格,并且該討論班仍有空位,那么學(xué)生注冊到該討論班活動的根本過程:,事件流續(xù)表:,候選過程A:學(xué)生沒有資格注冊討論班A3.注冊員確定學(xué)生沒有資格注冊討論班A4.注冊員通知學(xué)生,她沒有資格注冊A5.用況結(jié)束候選過程B:學(xué)生不具備注冊這一討論班所需要的必備條件B5.注冊員確定學(xué)生沒有資格注冊該討論班B6.注冊員通知學(xué)生,她不具備注冊這一討論班所需要的必備條件,B7.注冊員通知學(xué)生,她需要具備的條件B8.用況從活動根本過程中的步驟4繼續(xù)執(zhí)行候選過程C:學(xué)生決定不注冊討論班,雖然有討論班可供其選擇C4.學(xué)生查看討論班列表,但沒有找到他想要注冊的項C5.用況結(jié)束根據(jù)事件流描述,活動框圖如下所示:,返回,三、靜態(tài)建模,進一步分析系統(tǒng)需求,發(fā)現(xiàn)類以及類之間的關(guān)系,確定它們的靜態(tài)結(jié)構(gòu)和動態(tài)行為,是面向?qū)ο穹治龅母救蝿?wù)。
系統(tǒng)的靜態(tài)結(jié)構(gòu)模型主要用類圖和對象圖描述靜態(tài)建模主要分為兩步:,1定義類,2確定類的名字、屬性和操作,建立類圖返回,一定義類,該系統(tǒng)主要有三種類型的類:,參與者類actor class):代表出現(xiàn)在用況中的參與者,用戶界面類(user interface class):組成系統(tǒng)用戶界面的屏幕顯示、菜單和報表,即UI元素,業(yè)務(wù)類(business class):描述業(yè)務(wù)的地點、物品、概念和事件,在靜態(tài)建模中用類模型表示概念模型,而著手進行概念模型的最簡單的方法是把領(lǐng)域模型作為設(shè)計根底,于是要采用類-職責(zé)-協(xié)作CRC模型并把它直接轉(zhuǎn)換成類圖,CRC卡片的布局如以下圖所示:,該系統(tǒng),CRC,模型如下,該列為參與者類,該列為業(yè)務(wù)類,該列為用戶界面類,返回,二類圖,識別出系統(tǒng)中的類后,還要識別出類間的關(guān)系關(guān)聯(lián)、聚合、組合、類屬、依賴、實現(xiàn)關(guān)系,前面已講過,然后就可以建立類圖了在處理復(fù)雜問題時,通常使用分類的方法來有效地降低問題的復(fù)雜性在面向?qū)ο蠼<夹g(shù)中,也可以采用同樣的方法將客觀世界的實體映射為對象,并歸納成類類、對象及它們之間的關(guān)系是面向?qū)ο蠹夹g(shù)中最根本的元素類圖是面向?qū)ο笙到y(tǒng)最常用的圖,類圖描述了類集、接口集、協(xié)作及它們之間的關(guān)系。
類間的關(guān)系如以下圖所示:,用戶界面包中有如下三個類:,1.成績單,2.注冊討論班,3.平安登錄,返回,四、動態(tài)建模,動態(tài)模型描繪了參與每個用例的對象之間的交互開發(fā)動態(tài)模型的起點是用例以及在對象構(gòu)建期間決定的對象通常使用協(xié)作圖來描繪滿足用例需要的對象間消息通信,針對單個類實例的行為,用狀態(tài)圖描繪該類狀態(tài)的改變狀態(tài)圖,:為依賴狀態(tài)展示不同行為的類開發(fā)狀態(tài)圖,協(xié)作圖,:描繪對象間交互的鳥瞰視圖,返回,狀 態(tài) 圖,返回,協(xié) 作 圖,返回,五、組件建模,組件建模的目標(biāo),把系統(tǒng)中在類分布到更大的內(nèi)聚的組件當(dāng)中重構(gòu)refactor傳統(tǒng)的對象設(shè)計,以便將其作為組件進行部署為了能夠把對象設(shè)計組件化,需要執(zhí)行五個步驟,通常這五個步驟是迭代執(zhí)行的:,1處理非業(yè)務(wù)/領(lǐng)域類2定義類契約3簡化繼承與聚合的層次結(jié)構(gòu)4確定領(lǐng)域組件5定義領(lǐng)域組件契約組 件 圖,返回,六、部署建模,以下圖給出了學(xué)生選課系統(tǒng)的UML部署圖三維方框代表節(jié)點,比方計算機和交換機,結(jié)點之間的連接用簡單的直線表示,在該圖中構(gòu)造型指出了瀏覽器和應(yīng)用效勞器的連接使用 協(xié)議,而應(yīng)用效勞器與數(shù)據(jù)效勞器之間的連接使用Java的遠(yuǎn)程方法調(diào)用RMI協(xié)議。
