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