戴莉萍,王文樂(lè)
(江西師范大學(xué) 軟件學(xué)院,江西南昌 330027)
實(shí)驗(yàn)教學(xué)一直以來(lái)都是計(jì)算機(jī)專(zhuān)業(yè)教育的重要組成部分,教學(xué)量所占比例逐年上升,考核方法不斷創(chuàng)新[1-2]。計(jì)算機(jī)學(xué)科專(zhuān)業(yè)實(shí)驗(yàn)教學(xué)有一定的復(fù)雜性,以實(shí)驗(yàn)工具為例,語(yǔ)言類(lèi)開(kāi)發(fā)工具如C、Java、Visual Studio 等,數(shù)據(jù)應(yīng)用工具如SQL Server、SQLite、R 語(yǔ)言等,仿真虛擬工具VMware、Proteus 等,層出不窮。眾多工具一方面給實(shí)驗(yàn)教學(xué)帶來(lái)了便利,另一方面也使師生面臨不斷的挑戰(zhàn)。
基于UML 的面向?qū)ο蠓治雠c設(shè)計(jì)課程可以幫助計(jì)算機(jī)學(xué)科專(zhuān)業(yè)學(xué)生認(rèn)識(shí)軟件工程的核心要素,以體系化、工程化方法思考軟件開(kāi)發(fā)過(guò)程,清晰各部分邏輯的重要作用。對(duì)于UML 建模課程的教學(xué)改革通常圍繞著案例展開(kāi),有針對(duì)性地篩選案例、良好地組織案例、條理分明地講述案例等都能有效提高課堂教學(xué)質(zhì)量。圍繞案例教學(xué)法不斷改進(jìn)其實(shí)施過(guò)程,提高學(xué)生參與度,優(yōu)化評(píng)價(jià)體系等工作持續(xù)開(kāi)展,取得了很好的教學(xué)成果[3-5]。UML 建模技術(shù)課程不僅要關(guān)注理論教學(xué),還要精心設(shè)計(jì)相應(yīng)的實(shí)驗(yàn)課程。來(lái)源于實(shí)踐的真實(shí)案例有助于學(xué)生理解UML 的核心概念,建模過(guò)程包含各個(gè)模型的原樣構(gòu)建、模擬構(gòu)建和獨(dú)立構(gòu)建等步驟,要求熟練使用相應(yīng)的UML 繪制軟件。實(shí)際教學(xué)過(guò)程往往關(guān)注建模工具的應(yīng)用,忽視了類(lèi)型分析環(huán)節(jié)。
UML 建模工具較多,如Rational Rose、StarUML、Proces?son、UMLet、Visio、PlantUML 等,課堂教學(xué)會(huì)對(duì)這些常用工具做一個(gè)大致介紹。雖然實(shí)驗(yàn)室提供了統(tǒng)一的建模工具,但學(xué)生卻會(huì)按照自己的喜好選擇不同的建模工具完成實(shí)驗(yàn)。UML 建模工具分為點(diǎn)放式繪圖如StarUML 以及編程式繪圖如PlantUML 兩類(lèi),兩種不同的建模方式在實(shí)驗(yàn)教學(xué)中呈現(xiàn)不同的過(guò)程、難度和效果。
Rational Rose 是基于UML 的面向?qū)ο罂梢暬9ぞ撸捎脕?lái)進(jìn)行軟件系統(tǒng)的面向?qū)ο髽I(yè)務(wù)分析、需求分析與設(shè)計(jì),是當(dāng)前最流行的可視化軟件開(kāi)發(fā)工具之一[6-7]。下面以Rational Rose 為例說(shuō)明點(diǎn)放式建模實(shí)施過(guò)程。
Rational Rose 界面分為若干個(gè)區(qū)域,有菜單區(qū)、瀏覽區(qū)、圖形工具區(qū)等等,最大的空白區(qū)域是模型構(gòu)建的編輯窗口,如圖1 所示。其中瀏覽區(qū)描述各個(gè)視圖模型,并且提供每種視圖組件間的訪問(wèn)功能,在該區(qū)域可以看到所有建模結(jié)果。當(dāng)繪制不同的UML 圖時(shí),相應(yīng)的圖形工具區(qū)中的圖形符號(hào)也會(huì)發(fā)生相應(yīng)改變;可以將圖形工具區(qū)的各種圖形元素點(diǎn)放至編輯窗口,不斷設(shè)置相應(yīng)屬性及調(diào)整空間布局,最終形成所需的UML 模型[8-10]。
Visio、UMLet、StarUML 等建模工具也大都具有這樣的建模界面,符合人們?cè)诂F(xiàn)實(shí)生活中利用圖紙進(jìn)行各種設(shè)計(jì)的行為和思考習(xí)慣。
Fig.1 Rational Rose operation interface圖1 Rational Rose 操作界面
利用Rational Rose 工具進(jìn)行點(diǎn)放式建模過(guò)程比較簡(jiǎn)單。首先對(duì)系統(tǒng)相關(guān)內(nèi)容進(jìn)行各種分析,確定所需要的模型及其作用,然后進(jìn)行建模。繪制圖形前先在瀏覽區(qū)選擇相應(yīng)的圖形類(lèi)型,圖形工具區(qū)自動(dòng)出現(xiàn)該圖形的各個(gè)組成元素,點(diǎn)中某個(gè)圖形符號(hào),再將該圖形符號(hào)放入編輯窗口,而后設(shè)置名稱(chēng)、屬性等等;最后對(duì)圖形進(jìn)行布局調(diào)整,盡量不要有線交叉。下面以一個(gè)簡(jiǎn)單的用例圖來(lái)說(shuō)明點(diǎn)放式建模過(guò)程[11-13]。
輸入:參與者圖形符號(hào)、用例圖形符號(hào)、關(guān)系圖形符號(hào)
輸出:圖書(shū)館系統(tǒng)用例圖
處理步驟:①點(diǎn)放兩個(gè)參與者至編輯窗口,分別命名為“訪客”和“讀者”,設(shè)置相應(yīng)的屬性;②點(diǎn)放6 個(gè)用例至編輯窗口,分別命名為“瀏覽圖書(shū)”“搜索圖書(shū)”“借書(shū)”“還書(shū)”“身份驗(yàn)證”和“超期罰款”,設(shè)置相應(yīng)的屬性;③在兩個(gè)參與者之間點(diǎn)放上泛化關(guān)系箭頭直線;④在參與者與用例之間點(diǎn)放上關(guān)聯(lián)關(guān)系箭頭直線;⑤在用例與用例之間點(diǎn)放上依賴關(guān)系箭頭直線,設(shè)置相應(yīng)屬性。
圖形變化詳細(xì)步驟如圖2 所示。
Fig.2 Implementation steps of point-and-click modeling圖2 點(diǎn)放式建模實(shí)施步驟
觀察該用例圖構(gòu)建步驟發(fā)現(xiàn),點(diǎn)放式建模過(guò)程與數(shù)據(jù)結(jié)構(gòu)中圖結(jié)構(gòu)的畫(huà)法一致,都是先完成各個(gè)點(diǎn)即參與者、用例的布置,然后完成各條線即泛化關(guān)系、關(guān)聯(lián)關(guān)系、依賴關(guān)系布置,按照從左到右分層完成,但在實(shí)際教學(xué)中畫(huà)法順序各有不同。
點(diǎn)放式建模設(shè)計(jì)是“所見(jiàn)即所得”,模型的最終效果與編輯窗口中的圖形效果是一樣的,建模的難度在于對(duì)問(wèn)題的分析與理解上。點(diǎn)放式建模方式應(yīng)用最為廣泛,支持工具眾多,使用人員不受限制,強(qiáng)大的建模工具使得圖形建模過(guò)程簡(jiǎn)單又快捷。
PlantUML 是一個(gè)開(kāi)源項(xiàng)目,支持快速繪制UML 模型,同時(shí)還支持架構(gòu)圖、SDL 圖、甘特圖、思維導(dǎo)圖等等非UML圖;通過(guò)簡(jiǎn)單直觀的語(yǔ)言來(lái)定義這些示意圖,可以生成PNG、SVG 或LaTex 格式的圖片。使用PlantUML 的其他工具也很多,下面以在線PlantUML 為例說(shuō)明編碼式建模實(shí)施過(guò)程。
在線PlantUML 提供語(yǔ)法介紹及各種示例,使讀者能夠快速入門(mén),各類(lèi)幫助信息獲取也較為方便。與一般的程序開(kāi)發(fā)界面相似,PantUML Web Server 界面主要有代碼編輯區(qū)和結(jié)果顯示區(qū),還有一個(gè)“Submit”提交按鈕,如圖3 所示。
Fig.3 The main part of PlauntUMLWeb Server web page圖3 PlauntUMLWeb Server 網(wǎng)頁(yè)主體部分
PlantUML 建模實(shí)施步驟很少,就是編碼與提交,但是其編碼過(guò)程卻較為復(fù)雜,模型及圖形元素眾多,需要經(jīng)過(guò)分析、設(shè)計(jì)、編碼、測(cè)試等基本階段。下面以圖書(shū)館系統(tǒng)用例圖為例來(lái)說(shuō)明PlantUML 的實(shí)施過(guò)程。
輸入:參與者變量、用例變量
輸出:圖書(shū)館系統(tǒng)用例圖
處理步驟:①定義參與者變量(訪客、讀者);②定義用例變量(瀏覽圖書(shū)、搜索圖書(shū)、借書(shū)、還書(shū)、身份驗(yàn)證、超期罰款);③繪制訪客與讀者的泛化關(guān)系;④繪制訪客與瀏覽圖書(shū)、搜索圖書(shū)的關(guān)聯(lián)關(guān)系;⑤繪制讀者與借書(shū)、還書(shū)的關(guān)聯(lián)關(guān)系;⑥繪制借書(shū)與身份驗(yàn)證之間的依賴關(guān)系(include);⑦繪制還書(shū)與超期罰款之間的依賴關(guān)系(extend)。
對(duì)應(yīng)的代碼如下:
程序運(yùn)行效果如圖4 所示。
Fig.4 Use case diagram drawn by PlantUML圖4 PlantUML 繪制出的用例圖
PlantUML 繪制的用例圖,其圖形使用元素和表達(dá)意思與Rose 繪制的圖形一樣,但是整體布局、各個(gè)圖形元素之間的線條關(guān)系卻難以規(guī)劃,此時(shí)需要對(duì)代碼進(jìn)行調(diào)整,如將圖4 對(duì)應(yīng)的部分代碼修改如下:
Fig.5 Use case diagram after modification in PlantUML圖5 PlantUML 中修改后的用例圖
在UML 建模中,不是所有的圖形都像類(lèi)圖這樣需要進(jìn)行整體布局設(shè)計(jì)與調(diào)整,例如順序圖就是按照一定的順序進(jìn)行閱讀和建模,在代碼編寫(xiě)上更為簡(jiǎn)單一些[14-15]。以圖書(shū)管理系統(tǒng)中的書(shū)籍添加為例,其代碼表示如下:
Fig.6 Sequence of PlantUML drawing圖6 PlantUML 繪制的順序
順序圖建模代碼定義了各個(gè)對(duì)象、消息編號(hào)、消息類(lèi)型、消息內(nèi)容、控制焦點(diǎn)的激活與停止等內(nèi)容。雖然順序圖不需要考慮線條交叉、位置擺放等問(wèn)題,但是消息可以通過(guò)alt、opt、loop、par、break 等關(guān)鍵詞進(jìn)行組合,使得消息可以分組嵌套使用,這增加了模型的閱讀和建模難度。
通過(guò)類(lèi)圖和順序圖建模例證說(shuō)明可知,與點(diǎn)放式繪圖相比,編程式繪圖難度更大一些,如需要知曉每個(gè)模型的圖形元素名稱(chēng),這大大增加了記憶負(fù)擔(dān);圖形元素多、關(guān)系復(fù)雜的情況下可能出現(xiàn)布局困難、線條交叉等情況,代碼的調(diào)試所花費(fèi)的時(shí)間精力會(huì)更多一些。在理解UML 建模思想基礎(chǔ)上,還需要具備相應(yīng)的編程知識(shí),能閱讀、編寫(xiě)、調(diào)試并解決問(wèn)題,對(duì)于使用人員要求較高。
PlantUML 支持較多模型構(gòu)建,使用人數(shù)越來(lái)越多;學(xué)生在實(shí)驗(yàn)中也漸漸喜歡這種編程式繪圖,覺(jué)得頗具趣味性和挑戰(zhàn)性。
點(diǎn)放式建模與編程式建模在實(shí)驗(yàn)教學(xué)中各有獨(dú)特之處,表1 從多個(gè)角度對(duì)兩者進(jìn)行了較為詳細(xì)的比較。
Table 1 Comparison of point-and-point modeling and programming modeling表1 點(diǎn)放式與編程式建模比較
UML 建模課程安排在大三上學(xué)期教授。此時(shí)的學(xué)生通過(guò)前兩年的課程學(xué)習(xí),較全面地掌握了相應(yīng)的專(zhuān)業(yè)理論知識(shí),在實(shí)際操作中也有運(yùn)用,具有良好的實(shí)踐能力,能動(dòng)手解決問(wèn)題,表2 的數(shù)據(jù)反映了一個(gè)班的學(xué)生對(duì)于兩類(lèi)工具的使用情況。
Table 2 Comparison of students'use of two kinds of tools表2 學(xué)生對(duì)于兩類(lèi)工具的使用比較
從表2 可以初步了解學(xué)生對(duì)這兩類(lèi)UML 建模工具的接受和使用程度。選擇使用PlantUML 的原因很簡(jiǎn)單,編程式建模與一般的點(diǎn)放式建模過(guò)程很不一樣,又和一般的程序執(zhí)行體驗(yàn)不同,因此學(xué)生會(huì)對(duì)此好奇并嘗試一番。隨著課程的逐步深入,PlantUML 的參與度漸漸降低,主要原因在于時(shí)間規(guī)劃上,高年級(jí)學(xué)生專(zhuān)業(yè)課程學(xué)習(xí)和技能掌握需要較多時(shí)間,PlantUML 的應(yīng)用相當(dāng)于增加了一門(mén)程序設(shè)計(jì)課程,從入門(mén)到掌握都需要較長(zhǎng)時(shí)間。
另一方面,新工具的引入增加了學(xué)生對(duì)該門(mén)課程的興趣,從課堂到課率、實(shí)驗(yàn)完成效果、綜合考核等方面都可以體現(xiàn)出來(lái)。
基于UML 面向?qū)ο蟮姆治雠c設(shè)計(jì)課程通過(guò)實(shí)驗(yàn)環(huán)節(jié)將其原理、方法、工具貫穿起來(lái),在有限的實(shí)驗(yàn)教學(xué)環(huán)節(jié)中從多個(gè)角度出發(fā),利用不同的方法對(duì)其進(jìn)行各種改進(jìn),例如利用微視頻演示建模工具使用、利用案例了解各模型的語(yǔ)義與語(yǔ)境、規(guī)劃實(shí)驗(yàn)階段組成以提高時(shí)間利用率、制定實(shí)驗(yàn)評(píng)分機(jī)制以引起學(xué)生的足夠重視等等。本文從建模工具的類(lèi)型入手,仔細(xì)觀察學(xué)生對(duì)不同工具的興趣程度與應(yīng)用情況,收集各種反饋信息,將建模工具的使用與建模知識(shí)的掌握進(jìn)行關(guān)聯(lián)分析,發(fā)現(xiàn)使用點(diǎn)放式建模工具的學(xué)生更重視工具所帶來(lái)的便利性,例如圖形的快捷菜單使用;使用編程式建模工具的學(xué)生更加重視建模的熟練度,例如圖形符號(hào)的代碼表示。建模工具的多樣化可以加強(qiáng)學(xué)生建模能力培養(yǎng)、注重程序設(shè)計(jì)能力應(yīng)用、提高創(chuàng)新實(shí)踐能力,對(duì)實(shí)驗(yàn)教學(xué)改革是一種新的探索。后續(xù)將基于不同建模工具完成圖形的測(cè)試,深化實(shí)驗(yàn)教學(xué)探索。