高 勇 鋼
(安徽師范大學(xué) 數(shù)學(xué)計(jì)算機(jī)科學(xué)學(xué)院,安徽 蕪湖 241000)
?
基于銀行系統(tǒng)的UML教學(xué)要點(diǎn)研究
高 勇 鋼
(安徽師范大學(xué) 數(shù)學(xué)計(jì)算機(jī)科學(xué)學(xué)院,安徽 蕪湖 241000)
摘要:本文以銀行系統(tǒng)實(shí)例為線索,在面向?qū)ο蠓治雠c設(shè)計(jì)過(guò)程中,用UML描述不同階段的可視化模型,重點(diǎn)說(shuō)明建模的細(xì)節(jié)與要點(diǎn),從而能更好地把握UML內(nèi)涵,提升教學(xué)效果。
關(guān)鍵詞:銀行系統(tǒng);軟件工程;面向?qū)ο?;任?wù)驅(qū)動(dòng);案例
UML 統(tǒng)一建模語(yǔ)言是用來(lái)表達(dá)面向?qū)ο蠓治雠c設(shè)計(jì)的國(guó)際標(biāo)準(zhǔn)語(yǔ)言,適合于以體系結(jié)構(gòu)為中心、用例驅(qū)動(dòng)、迭代式和漸增式的軟件開發(fā)過(guò)程,可用于具有實(shí)時(shí)性要求的軟件系統(tǒng)建模和復(fù)雜數(shù)據(jù)處理的信息系統(tǒng)。近年來(lái),國(guó)內(nèi)外許多高校的計(jì)算機(jī)專業(yè)開設(shè)了UML課程[1-3],目的是培養(yǎng)優(yōu)秀的軟件系統(tǒng)開發(fā)工程技術(shù)人員。UML為軟件系統(tǒng)的不同階段產(chǎn)物建立可視化模型。具體表現(xiàn)為:用例圖、類圖、對(duì)象圖、包圖、交互圖、活動(dòng)圖、狀態(tài)機(jī)圖、構(gòu)件圖、部署圖等。UML只是提供了表達(dá)分析與設(shè)計(jì)的統(tǒng)一符號(hào),而如何利用這些符號(hào)去分析與設(shè)計(jì),UML是不能提供的,這需要借助軟件開發(fā)過(guò)程。為UML配套的過(guò)程主要是RUP,即Rational統(tǒng)一過(guò)程,該過(guò)程是以用例驅(qū)動(dòng)、以架構(gòu)為中心的迭代增量開發(fā),過(guò)程主要包括業(yè)務(wù)建模、用例建模、用例分析、架構(gòu)設(shè)計(jì)、構(gòu)件設(shè)計(jì)和代碼實(shí)現(xiàn)。
軟件工程的方法學(xué)分為傳統(tǒng)的結(jié)構(gòu)化方法和面向?qū)ο蟮姆椒?,UML是為面向?qū)ο蠓椒ǚ?wù)的,而傳統(tǒng)的UML教學(xué)方法主要是對(duì)不同的圖的逐一講解,卻沒(méi)有納入面向?qū)ο筌浖こ痰姆椒▽W(xué)中講解。許多教材沒(méi)有針對(duì)一個(gè)實(shí)例能夠完整從需求獲取、需求分析、面向?qū)ο蟮姆治?、面向?qū)ο笤O(shè)計(jì)的軟件生命周期去安排內(nèi)容,章節(jié)間銜接差,例子往往較簡(jiǎn)單,不同章節(jié)的實(shí)例互不相關(guān)。同時(shí)學(xué)生由于受入門的高級(jí)語(yǔ)言C語(yǔ)言影響較深,缺乏面向?qū)ο蟮母拍詈退枷?,因此?duì)面向?qū)ο蠓椒▽W(xué)本身理解不透,當(dāng)然對(duì)面向?qū)ο蠓椒ǖ谋硎痉?hào)UML也掌握不好。為了提高UML教學(xué)效果,文獻(xiàn)[4]提出結(jié)合案例分析的方法;文獻(xiàn)[5]提出了基于項(xiàng)目驅(qū)動(dòng)的教學(xué)理念以及課程案例設(shè)計(jì),同時(shí)建立學(xué)習(xí)網(wǎng)站輔助課程教學(xué);文獻(xiàn)[6]提出以項(xiàng)目驅(qū)動(dòng)型教學(xué)方法為核心設(shè)計(jì)了課程結(jié)構(gòu)與課程內(nèi)容組織;文獻(xiàn)[7]提出將 RUP 與 UML 完美地結(jié)合起來(lái),通過(guò) RUP 過(guò)程組織項(xiàng)目,同時(shí)將 UML應(yīng)用于項(xiàng)目表達(dá);文獻(xiàn)[8]與文獻(xiàn)[9]提出結(jié)合案例和任務(wù)驅(qū)動(dòng)的教學(xué)方法。以下以銀行系統(tǒng)為例,在面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計(jì)的不同階段,用UML符號(hào)表示不同階段模型,指出每個(gè)階段建模的要點(diǎn)。
1面向?qū)ο蠓治鲭A段
1.1分析階段原始需求獲取
在需求獲取中,信息的來(lái)源有涉眾、硬數(shù)據(jù)、相關(guān)產(chǎn)品、重要文檔、相關(guān)技術(shù)標(biāo)準(zhǔn)和法規(guī)。獲取信息的方法有傳統(tǒng)方法、集體獲取方法、原型、模型驅(qū)動(dòng)、認(rèn)知和基于上下文等方法。這個(gè)階段也可以用業(yè)務(wù)建模來(lái)描述,業(yè)務(wù)建模是使用軟件建模技術(shù)描述企業(yè)管理與業(yè)務(wù)所涉及的對(duì)象,以及這些對(duì)象所包含的屬性、行為和彼此之間的關(guān)系,從而建立業(yè)務(wù)模型與軟件的系統(tǒng)模型的對(duì)應(yīng)關(guān)系,保證系統(tǒng)模型能夠滿足業(yè)務(wù)需求。經(jīng)過(guò)需求獲取后,整理原始數(shù)據(jù),則得到銀行系統(tǒng)簡(jiǎn)要的功能性需求,包括以下內(nèi)容:(1)創(chuàng)建賬戶,(2)存款,(3)提款,(4)轉(zhuǎn)賬,(5)取消賬戶。
1.2用例建模
用例模型用于需求分析階段,描述了軟件系統(tǒng)外部參與者所理解的系統(tǒng)功能,確定系統(tǒng)應(yīng)具備哪些功能、提供清晰一致的系統(tǒng)功能描述。用例建模階段:(1)識(shí)別參與者:包括銀行職員、客戶和銀行。(2)識(shí)別用例:登陸、存款、取款、管理賬戶、轉(zhuǎn)賬,其中轉(zhuǎn)賬包含本行轉(zhuǎn)賬和跨行轉(zhuǎn)賬。(3)用例腳本描述。根據(jù)已識(shí)別出所有的參與者與所有的用例,則可用例圖對(duì)需求分析可視化建模,如圖1所示。對(duì)該用例圖要仔細(xì)檢查參與者與用例,調(diào)整用例圖。在檢查Actor時(shí),要識(shí)別所有的Actor、每個(gè)Actor至少參與了一個(gè)用例、每個(gè)Actor確實(shí)是一個(gè)角色(role)、防止兩個(gè)Actor在一個(gè)用例中扮演相同的角色等。在檢查用例時(shí),每個(gè)用例中至少有一個(gè)actor、每個(gè)用例獨(dú)立于其他用例、如果兩個(gè)用例總是以同樣的順序執(zhí)行等。在檢查用例腳本時(shí),要明確事件流的開始和結(jié)束,Actor與系統(tǒng)交互的信息要清晰等。
圖1銀行系統(tǒng)用例圖
1.3分析類圖建立
分析階段的重點(diǎn)在于找出體現(xiàn)系統(tǒng)核心業(yè)務(wù)所需數(shù)據(jù)的實(shí)體類,而界面和業(yè)務(wù)邏輯細(xì)節(jié)分別由邊界類和控制類隱藏,實(shí)體類組成系統(tǒng)分析類圖。尋找分析類的方法有:名詞識(shí)別法、根據(jù)用例確定類、CRC分析法、系統(tǒng)實(shí)體識(shí)別法等。分析類圖包括:定義分析類的職責(zé)、定義分析類的屬性和定義分析類之間關(guān)系。分析類的職責(zé)是要求某個(gè)對(duì)象所要執(zhí)行的事務(wù)契約,在設(shè)計(jì)中將演化為類的操作,分析類的職責(zé)可以從交互圖中的消息得到或從非功能需求中得到。獲取分析類的職責(zé)應(yīng)使用如下模式:信息專家模式、創(chuàng)建者模式、高內(nèi)聚模式、低耦合模式、控制器模式。分析類的屬性用來(lái)存儲(chǔ)對(duì)象的數(shù)據(jù)信息,在識(shí)別分析類的過(guò)程中,也可同時(shí)發(fā)現(xiàn)類的屬性,包括所有格后面的名詞或形容詞、字段列表中所描述的數(shù)據(jù)需求和不能成為類的名詞、業(yè)務(wù)常識(shí)、業(yè)務(wù)領(lǐng)域的專家意見和以前類似系統(tǒng)。對(duì)象不能孤立地存在,它們之間通過(guò)消息進(jìn)行交互,從而實(shí)現(xiàn)用例的目標(biāo),從交互模型中發(fā)現(xiàn)對(duì)象之間的鏈接,從而在相應(yīng)的類上建立關(guān)聯(lián)關(guān)系,從業(yè)務(wù)領(lǐng)域出發(fā),分析領(lǐng)域中所存在的實(shí)體類之間的語(yǔ)義聯(lián)系,為那些存在語(yǔ)義聯(lián)系的類之間建立關(guān)聯(lián)關(guān)系。圖2是銀行系統(tǒng)的實(shí)體類所構(gòu)成的分析類圖,圖3所示的順序圖將有助于發(fā)現(xiàn)分析類包含的操作以及類之間的關(guān)聯(lián)。
圖2分析類圖
圖3 分析階段順序圖
2面向?qū)ο蟮脑O(shè)計(jì)階段
2.1架構(gòu)設(shè)計(jì)
類或者對(duì)象其定義了一個(gè)系統(tǒng)的核心行為和概念。一個(gè)系統(tǒng)由多個(gè)子系統(tǒng)組成,每個(gè)子系統(tǒng)中的領(lǐng)域所包含的對(duì)象都不只一個(gè),因此系統(tǒng)需組織相關(guān)類,建立一個(gè)包含子系統(tǒng)的總體的體系結(jié)構(gòu),各子系統(tǒng)之間的通信和耦合。在面向?qū)ο筌浖_發(fā)中,類是構(gòu)建整個(gè)系統(tǒng)的基本構(gòu)造塊。但是對(duì)于龐大的應(yīng)用系統(tǒng)而言,其包含的類將是成百上千,包括類之間復(fù)雜的關(guān)聯(lián)關(guān)系、多重性等,因此需引入包圖來(lái)降低系統(tǒng)的復(fù)雜度。圖4是銀行系統(tǒng)的包圖。
為了提高軟件的開發(fā)效率,希望軟件能夠復(fù)用。軟件體系結(jié)構(gòu)能否復(fù)用,則涉及到軟件體系結(jié)構(gòu)風(fēng)格。常用的軟件體系結(jié)構(gòu)的風(fēng)格有管道與過(guò)濾器、面向?qū)ο笙到y(tǒng)、基于事件的系統(tǒng)、分層系統(tǒng)、倉(cāng)庫(kù)系統(tǒng)及知識(shí)庫(kù)、C2風(fēng)格、客戶/服務(wù)器、三層C/S結(jié)構(gòu)、瀏覽/服務(wù)器等。針對(duì)銀行系統(tǒng),可采用三層C/S結(jié)構(gòu)。
2.2構(gòu)件設(shè)計(jì)
類是系統(tǒng)的最基本構(gòu)件,也是構(gòu)成子系統(tǒng)構(gòu)件的基本元素。設(shè)計(jì)類來(lái)自分析類,引入可用的架構(gòu)機(jī)制、設(shè)計(jì)模式等設(shè)計(jì)概念來(lái)獲得設(shè)計(jì)類。邊界類設(shè)計(jì)要研究具體的用戶交互的場(chǎng)景、界面元素的布局等人機(jī)工程學(xué)方面。實(shí)體類設(shè)計(jì)一般具有持久性架構(gòu)機(jī)制,數(shù)據(jù)庫(kù)的一些設(shè)計(jì)原則將影響實(shí)體類的設(shè)計(jì)??刂祁惖脑O(shè)計(jì)是類設(shè)計(jì)的難點(diǎn),如果控制類只是將邊界類信息傳遞給實(shí)體類,則該控制類可以舍去,如控制類的控制流過(guò)于復(fù)雜,則應(yīng)分解該控制類,對(duì)存在相同或相似的控制流時(shí),則應(yīng)提供公共控制類。在分析中,只要盡量捕獲系統(tǒng)需要的行為,而完全不必考慮如何去實(shí)現(xiàn)這些行為。在設(shè)計(jì)中,則必須準(zhǔn)確地說(shuō)明類是如何履行它們的職責(zé),完整的屬性集合,包括詳細(xì)說(shuō)明的名稱、類型、可視性和一些默認(rèn)值,將分析類指定的職責(zé)轉(zhuǎn)化成一個(gè)或多個(gè)方法的完整集合。圖5是銀行系統(tǒng)的設(shè)計(jì)類圖,圖6是設(shè)計(jì)階段對(duì)用例取款的順序圖。
圖4銀行系統(tǒng)包圖 圖5設(shè)計(jì)類圖
圖6 設(shè)計(jì)階段順序圖
3結(jié)束語(yǔ)
本文以銀行系統(tǒng)實(shí)例為線索,用軟件工程的面向?qū)ο蟮姆椒?,從需求分析到面向?qū)ο蠓治觥⒚嫦驅(qū)ο笤O(shè)計(jì)各個(gè)階段,采用UML描述相應(yīng)階段的可視化模型,強(qiáng)調(diào)每個(gè)階段細(xì)節(jié)與要點(diǎn),從整體上把握UML統(tǒng)一建模語(yǔ)言課程的內(nèi)涵和效果。
參考文獻(xiàn):
[1] 胡荷芬, 吳紹興, 高斐. UML系統(tǒng)建?;A(chǔ)教程[M].2版.北京: 清華大學(xué)出版社, 2014.
[2] 劉鵬遠(yuǎn), 溫玨, 桂超. 李祥面向?qū)ο骍ML系統(tǒng)分析建模[M]. 北京: 清華大學(xué)出版社, 2013.
[3] 譚火彬. UML 2面向?qū)ο蠓治雠c設(shè)計(jì)[M]. 北京:清華大學(xué)出版社, 2013.
[4] 衣 楊, 容福麗, 馬飛騰,等. 結(jié)合案例分析基于UML的面向?qū)ο罂梢暬=虒W(xué)[J].中山大學(xué)學(xué)報(bào)(自然科學(xué)版), 2007, 46(2): 73-77.
[5] 吳含前, 吉逸. 面向?qū)ο蠹夹g(shù)UML教學(xué)改革與實(shí)踐[J]. 計(jì)算機(jī)工程與科學(xué), 2011, 32(A1): 23-26.
[6] 楊林, 方芳, 左澤均. 統(tǒng)一建模語(yǔ)言UML課程項(xiàng)目驅(qū)動(dòng)型教學(xué)方法的研究與實(shí)踐[J]. 長(zhǎng)春師范學(xué)院學(xué)報(bào)(自然科學(xué)版), 2013, 32(4): 164-165.
[7] 王艷萍, 李海燕, 許 波. UML實(shí)例化教學(xué)改革初探[J]. 實(shí)驗(yàn)室研究與探索,2011,30(9):220-223.
[8] 翟亞紅. UML建模技術(shù)課程教學(xué)模式改革與實(shí)踐[J].牡丹江師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2013, 85(4): 57-58.
[9] 張麗平, 李 松, 郝曉紅. 結(jié)合案例和任務(wù)驅(qū)動(dòng)的UML教學(xué)方法研究[J]. 黑龍江教育學(xué)院學(xué)報(bào), 2012, 31(3): 50-52.
Research on the Teaching Points of Bank System Based on UML
GAO Yong-gang
(School of Math. and Computer, Anhui Normal University, Wuhu 241000, China)
Abstract:In this paper, by an example of the banking system, in the process of object-oriented analysis and design, using UML to describe the various stages of visual model, especially on the details of the modeling and key points, which can better grasp the connotation of the UML, we improve the teaching effect.
Key words:software engineering, object-oriented, task-driven, case
文章編號(hào):1007-4260(2015)03-0120-05
中圖分類號(hào):TP311
文獻(xiàn)標(biāo)識(shí)碼:A
DOI:10.13757/j.cnki.cn34-1150/n.2015.03.032
作者簡(jiǎn)介:高勇鋼,男,安徽蕪湖人,碩士,安徽師范大學(xué)數(shù)學(xué)計(jì)算機(jī)學(xué)院講師,研究方向?yàn)閳D像處理、軟件工程。
基金項(xiàng)目:安徽省高校自然科學(xué)基金項(xiàng)目(KJ2012Z116)。
收稿日期:2014-09-11
網(wǎng)絡(luò)出版時(shí)間:2015-8-25 15:40網(wǎng)絡(luò)出版地址:http://www.cnki.net/kcms/detail/34.1150.N.20150825.1540.032.html
安慶師范大學(xué)學(xué)報(bào)(自然科學(xué)版)2015年3期