戴莉萍,王文樂
(江西師范大學 軟件學院,江西南昌 330027)
實驗教學一直以來都是計算機專業(yè)教育的重要組成部分,教學量所占比例逐年上升,考核方法不斷創(chuàng)新[1-2]。計算機學科專業(yè)實驗教學有一定的復雜性,以實驗工具為例,語言類開發(fā)工具如C、Java、Visual Studio 等,數(shù)據(jù)應用工具如SQL Server、SQLite、R 語言等,仿真虛擬工具VMware、Proteus 等,層出不窮。眾多工具一方面給實驗教學帶來了便利,另一方面也使師生面臨不斷的挑戰(zhàn)。
基于UML 的面向?qū)ο蠓治雠c設(shè)計課程可以幫助計算機學科專業(yè)學生認識軟件工程的核心要素,以體系化、工程化方法思考軟件開發(fā)過程,清晰各部分邏輯的重要作用。對于UML 建模課程的教學改革通常圍繞著案例展開,有針對性地篩選案例、良好地組織案例、條理分明地講述案例等都能有效提高課堂教學質(zhì)量。圍繞案例教學法不斷改進其實施過程,提高學生參與度,優(yōu)化評價體系等工作持續(xù)開展,取得了很好的教學成果[3-5]。UML 建模技術(shù)課程不僅要關(guān)注理論教學,還要精心設(shè)計相應的實驗課程。來源于實踐的真實案例有助于學生理解UML 的核心概念,建模過程包含各個模型的原樣構(gòu)建、模擬構(gòu)建和獨立構(gòu)建等步驟,要求熟練使用相應的UML 繪制軟件。實際教學過程往往關(guān)注建模工具的應用,忽視了類型分析環(huán)節(jié)。
UML 建模工具較多,如Rational Rose、StarUML、Proces?son、UMLet、Visio、PlantUML 等,課堂教學會對這些常用工具做一個大致介紹。雖然實驗室提供了統(tǒng)一的建模工具,但學生卻會按照自己的喜好選擇不同的建模工具完成實驗。UML 建模工具分為點放式繪圖如StarUML 以及編程式繪圖如PlantUML 兩類,兩種不同的建模方式在實驗教學中呈現(xiàn)不同的過程、難度和效果。
Rational Rose 是基于UML 的面向?qū)ο罂梢暬9ぞ撸捎脕磉M行軟件系統(tǒng)的面向?qū)ο髽I(yè)務分析、需求分析與設(shè)計,是當前最流行的可視化軟件開發(fā)工具之一[6-7]。下面以Rational Rose 為例說明點放式建模實施過程。
Rational Rose 界面分為若干個區(qū)域,有菜單區(qū)、瀏覽區(qū)、圖形工具區(qū)等等,最大的空白區(qū)域是模型構(gòu)建的編輯窗口,如圖1 所示。其中瀏覽區(qū)描述各個視圖模型,并且提供每種視圖組件間的訪問功能,在該區(qū)域可以看到所有建模結(jié)果。當繪制不同的UML 圖時,相應的圖形工具區(qū)中的圖形符號也會發(fā)生相應改變;可以將圖形工具區(qū)的各種圖形元素點放至編輯窗口,不斷設(shè)置相應屬性及調(diào)整空間布局,最終形成所需的UML 模型[8-10]。
Visio、UMLet、StarUML 等建模工具也大都具有這樣的建模界面,符合人們在現(xiàn)實生活中利用圖紙進行各種設(shè)計的行為和思考習慣。

Fig.1 Rational Rose operation interface圖1 Rational Rose 操作界面
利用Rational Rose 工具進行點放式建模過程比較簡單。首先對系統(tǒng)相關(guān)內(nèi)容進行各種分析,確定所需要的模型及其作用,然后進行建模。繪制圖形前先在瀏覽區(qū)選擇相應的圖形類型,圖形工具區(qū)自動出現(xiàn)該圖形的各個組成元素,點中某個圖形符號,再將該圖形符號放入編輯窗口,而后設(shè)置名稱、屬性等等;最后對圖形進行布局調(diào)整,盡量不要有線交叉。下面以一個簡單的用例圖來說明點放式建模過程[11-13]。
輸入:參與者圖形符號、用例圖形符號、關(guān)系圖形符號
輸出:圖書館系統(tǒng)用例圖
處理步驟:①點放兩個參與者至編輯窗口,分別命名為“訪客”和“讀者”,設(shè)置相應的屬性;②點放6 個用例至編輯窗口,分別命名為“瀏覽圖書”“搜索圖書”“借書”“還書”“身份驗證”和“超期罰款”,設(shè)置相應的屬性;③在兩個參與者之間點放上泛化關(guān)系箭頭直線;④在參與者與用例之間點放上關(guān)聯(lián)關(guān)系箭頭直線;⑤在用例與用例之間點放上依賴關(guān)系箭頭直線,設(shè)置相應屬性。
圖形變化詳細步驟如圖2 所示。

Fig.2 Implementation steps of point-and-click modeling圖2 點放式建模實施步驟
觀察該用例圖構(gòu)建步驟發(fā)現(xiàn),點放式建模過程與數(shù)據(jù)結(jié)構(gòu)中圖結(jié)構(gòu)的畫法一致,都是先完成各個點即參與者、用例的布置,然后完成各條線即泛化關(guān)系、關(guān)聯(lián)關(guān)系、依賴關(guān)系布置,按照從左到右分層完成,但在實際教學中畫法順序各有不同。
點放式建模設(shè)計是“所見即所得”,模型的最終效果與編輯窗口中的圖形效果是一樣的,建模的難度在于對問題的分析與理解上。點放式建模方式應用最為廣泛,支持工具眾多,使用人員不受限制,強大的建模工具使得圖形建模過程簡單又快捷。
PlantUML 是一個開源項目,支持快速繪制UML 模型,同時還支持架構(gòu)圖、SDL 圖、甘特圖、思維導圖等等非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 建模實施步驟很少,就是編碼與提交,但是其編碼過程卻較為復雜,模型及圖形元素眾多,需要經(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)。
對應的代碼如下:

程序運行效果如圖4 所示。

Fig.4 Use case diagram drawn by PlantUML圖4 PlantUML 繪制出的用例圖
PlantUML 繪制的用例圖,其圖形使用元素和表達意思與Rose 繪制的圖形一樣,但是整體布局、各個圖形元素之間的線條關(guān)系卻難以規(guī)劃,此時需要對代碼進行調(diào)整,如將圖4 對應的部分代碼修改如下:


Fig.5 Use case diagram after modification in PlantUML圖5 PlantUML 中修改后的用例圖
在UML 建模中,不是所有的圖形都像類圖這樣需要進行整體布局設(shè)計與調(diào)整,例如順序圖就是按照一定的順序進行閱讀和建模,在代碼編寫上更為簡單一些[14-15]。以圖書管理系統(tǒng)中的書籍添加為例,其代碼表示如下:


Fig.6 Sequence of PlantUML drawing圖6 PlantUML 繪制的順序
順序圖建模代碼定義了各個對象、消息編號、消息類型、消息內(nèi)容、控制焦點的激活與停止等內(nèi)容。雖然順序圖不需要考慮線條交叉、位置擺放等問題,但是消息可以通過alt、opt、loop、par、break 等關(guān)鍵詞進行組合,使得消息可以分組嵌套使用,這增加了模型的閱讀和建模難度。
通過類圖和順序圖建模例證說明可知,與點放式繪圖相比,編程式繪圖難度更大一些,如需要知曉每個模型的圖形元素名稱,這大大增加了記憶負擔;圖形元素多、關(guān)系復雜的情況下可能出現(xiàn)布局困難、線條交叉等情況,代碼的調(diào)試所花費的時間精力會更多一些。在理解UML 建模思想基礎(chǔ)上,還需要具備相應的編程知識,能閱讀、編寫、調(diào)試并解決問題,對于使用人員要求較高。
PlantUML 支持較多模型構(gòu)建,使用人數(shù)越來越多;學生在實驗中也漸漸喜歡這種編程式繪圖,覺得頗具趣味性和挑戰(zhàn)性。
點放式建模與編程式建模在實驗教學中各有獨特之處,表1 從多個角度對兩者進行了較為詳細的比較。

Table 1 Comparison of point-and-point modeling and programming modeling表1 點放式與編程式建模比較
UML 建模課程安排在大三上學期教授。此時的學生通過前兩年的課程學習,較全面地掌握了相應的專業(yè)理論知識,在實際操作中也有運用,具有良好的實踐能力,能動手解決問題,表2 的數(shù)據(jù)反映了一個班的學生對于兩類工具的使用情況。

Table 2 Comparison of students'use of two kinds of tools表2 學生對于兩類工具的使用比較
從表2 可以初步了解學生對這兩類UML 建模工具的接受和使用程度。選擇使用PlantUML 的原因很簡單,編程式建模與一般的點放式建模過程很不一樣,又和一般的程序執(zhí)行體驗不同,因此學生會對此好奇并嘗試一番。隨著課程的逐步深入,PlantUML 的參與度漸漸降低,主要原因在于時間規(guī)劃上,高年級學生專業(yè)課程學習和技能掌握需要較多時間,PlantUML 的應用相當于增加了一門程序設(shè)計課程,從入門到掌握都需要較長時間。
另一方面,新工具的引入增加了學生對該門課程的興趣,從課堂到課率、實驗完成效果、綜合考核等方面都可以體現(xiàn)出來。
基于UML 面向?qū)ο蟮姆治雠c設(shè)計課程通過實驗環(huán)節(jié)將其原理、方法、工具貫穿起來,在有限的實驗教學環(huán)節(jié)中從多個角度出發(fā),利用不同的方法對其進行各種改進,例如利用微視頻演示建模工具使用、利用案例了解各模型的語義與語境、規(guī)劃實驗階段組成以提高時間利用率、制定實驗評分機制以引起學生的足夠重視等等。本文從建模工具的類型入手,仔細觀察學生對不同工具的興趣程度與應用情況,收集各種反饋信息,將建模工具的使用與建模知識的掌握進行關(guān)聯(lián)分析,發(fā)現(xiàn)使用點放式建模工具的學生更重視工具所帶來的便利性,例如圖形的快捷菜單使用;使用編程式建模工具的學生更加重視建模的熟練度,例如圖形符號的代碼表示。建模工具的多樣化可以加強學生建模能力培養(yǎng)、注重程序設(shè)計能力應用、提高創(chuàng)新實踐能力,對實驗教學改革是一種新的探索。后續(xù)將基于不同建模工具完成圖形的測試,深化實驗教學探索。