摘要:“面向?qū)ο蠹夹g(shù)與UML”課程是一門(mén)抽象性和實(shí)踐性都很強(qiáng)的課程,從該課程的性質(zhì)和地位出發(fā),針對(duì)該課程現(xiàn)有教學(xué)中存在的問(wèn)題,結(jié)合實(shí)際教學(xué)情況,從多個(gè)方面進(jìn)行思考與探討,提出解決問(wèn)題的對(duì)策,提高UML課程的教學(xué)質(zhì)量。
關(guān)鍵詞:面向?qū)ο?;統(tǒng)一建模語(yǔ)言UML;案例教學(xué);教學(xué)改革;統(tǒng)一開(kāi)發(fā)過(guò)程1KUP
1 課程性質(zhì)和地位
面向?qū)ο蠹夹g(shù)是軟件工程學(xué)中的主流方法,是現(xiàn)代軟件企業(yè)廣為采用的一項(xiàng)有效技術(shù)。統(tǒng)一建模語(yǔ)言UML是一種定義良好、易于表達(dá)、功能強(qiáng)大的面向?qū)ο蟮慕UZ(yǔ)言。UML作為軟件行業(yè)建模的標(biāo)準(zhǔn)語(yǔ)言,通過(guò)可視化的圖形方式展示軟件系統(tǒng)的結(jié)構(gòu)、關(guān)系和行為模式,并且支持軟件開(kāi)發(fā)全過(guò)程。
“面向?qū)ο蠹夹g(shù)與UML”課程將面向?qū)ο蠹夹g(shù)與UML完美結(jié)合,以基于UML建模語(yǔ)言描述的面向?qū)ο蠓治雠c設(shè)計(jì)過(guò)程為內(nèi)容,已成為許多高校軟件工程專(zhuān)業(yè)課程體系中的專(zhuān)業(yè)必修課。作為軟件工程的續(xù)接課程,課程的教學(xué)質(zhì)量直接影響著軟件工程專(zhuān)業(yè)復(fù)合型人才的培養(yǎng)。
2 課程教學(xué)中存在的問(wèn)題
雖然UML技術(shù)在軟件行業(yè)中已被普遍認(rèn)同和使用,但在高校的計(jì)算機(jī)與軟件工程相關(guān)專(zhuān)業(yè)中,“面向?qū)ο蠹夹g(shù)與UML”仍屬于一門(mén)新興課程,所以沒(méi)有太多的教學(xué)經(jīng)驗(yàn)可循,在現(xiàn)行的教學(xué)過(guò)程中主要存在著以下問(wèn)題。
1)課程設(shè)置不合理。
該課程涵蓋的知識(shí)面廣,抽象性和實(shí)踐性比較強(qiáng),需要相關(guān)基礎(chǔ)課程的學(xué)習(xí)作為支撐。但現(xiàn)有的課程設(shè)置存在相關(guān)課程知識(shí)點(diǎn)重合或知識(shí)體系斷層等問(wèn)題,影響了UML課程的講解。
2)知識(shí)體系龐大,學(xué)時(shí)較少,教學(xué)內(nèi)容組織不合理。
該課程不僅包括面向?qū)ο蠓治龊驮O(shè)計(jì)方法,而且包括UML豐富的知識(shí)。現(xiàn)有教學(xué)內(nèi)容的組織很難達(dá)到在較少的課時(shí)內(nèi)將龐大的、復(fù)雜的課程內(nèi)容講授清楚,其主要原因是沒(méi)有處理好面向?qū)ο蠹夹g(shù)與UML的關(guān)系。
3)教學(xué)環(huán)節(jié)安排不合理,理論教學(xué)和實(shí)踐教學(xué)脫離。
現(xiàn)有的教學(xué)過(guò)程中常出現(xiàn)理論教學(xué)與實(shí)踐教學(xué)脫離的現(xiàn)象,主要表現(xiàn)如下:
①重實(shí)踐而輕理論。有些學(xué)生主觀認(rèn)為不學(xué)習(xí)理論知識(shí),在實(shí)踐課程上同樣可以利用相關(guān)軟件進(jìn)行UML建模,在實(shí)踐環(huán)節(jié)上僅憑個(gè)人主觀意愿設(shè)計(jì)和建模,嚴(yán)重缺乏理論基礎(chǔ)支撐。
②重理論而輕實(shí)踐。有些學(xué)生在很長(zhǎng)時(shí)間內(nèi)都難以理解和描繪UML的實(shí)際應(yīng)用價(jià)值,難以將理論知識(shí)應(yīng)用于使用UML對(duì)系統(tǒng)進(jìn)行分析與設(shè)計(jì)的實(shí)踐中。
4)缺少知識(shí)的綜合應(yīng)用能力。
UML語(yǔ)言本身主要Vbzs2+EhENGyi0v2BRA8ug==講解建模原理、語(yǔ)法知識(shí)以及建模工具的操作。學(xué)生雖然對(duì)建模工具的操作感興趣,也可以按照規(guī)范畫(huà)出案例的各種圖。但面對(duì)實(shí)際項(xiàng)目,需要結(jié)合軟件開(kāi)發(fā)過(guò)程時(shí),學(xué)生卻很難利用UML進(jìn)行綜合分析和設(shè)計(jì)。
5)教學(xué)案例的選取不當(dāng)。
在教學(xué)過(guò)程中,一般采用循序漸進(jìn)的教學(xué)方法,將知識(shí)和案例有機(jī)結(jié)合。在現(xiàn)有的教學(xué)過(guò)程中,每章節(jié)的教學(xué)案例常為了方便學(xué)生對(duì)本次課程知識(shí)的理解,選用的案例雖然能為知識(shí)點(diǎn)很好地服務(wù),但對(duì)綜合應(yīng)用不起作用,學(xué)生在宏觀上不能很好地把握各個(gè)知識(shí)點(diǎn)的作用和知識(shí)點(diǎn)之間的整合。
6)教師實(shí)踐能力的缺乏。
該課程實(shí)踐性強(qiáng),要求專(zhuān)業(yè)教師不僅要具備豐富的理論知識(shí),而且要具有扎實(shí)熟練的實(shí)際操作技能和軟件開(kāi)發(fā)經(jīng)驗(yàn)。而目前從事UML教學(xué)的教師大多偏重理論知識(shí),缺乏實(shí)踐經(jīng)驗(yàn)睇,影響了課程的教學(xué)質(zhì)量。
3 解決問(wèn)題的對(duì)策
針對(duì)“面向?qū)ο蠹夹g(shù)與UML”課程教學(xué)中存在的問(wèn)題以及學(xué)生在學(xué)習(xí)過(guò)程中的思維規(guī)律,筆者結(jié)合自己在教學(xué)過(guò)程中的總結(jié)和積累以及教學(xué)實(shí)踐中的一些方法,從課程設(shè)置、教學(xué)環(huán)節(jié)、教學(xué)內(nèi)容、實(shí)踐教學(xué)、教學(xué)方法、教師素養(yǎng)提升方面進(jìn)行教學(xué)探討,讓學(xué)生對(duì)該課程有非常清晰的認(rèn)識(shí),能熟練掌握“面向?qū)ο蠹夹g(shù)和UML”建模方法,達(dá)到將其應(yīng)用于系統(tǒng)分析與設(shè)計(jì)實(shí)踐的目的。
3.1重新調(diào)整課程設(shè)置
在課程設(shè)置上,合理安排“面向?qū)ο蠹夹g(shù)與UML”的先行課程,有利于學(xué)生對(duì)該課程知識(shí)的理解和吸收。例如學(xué)生需要掌握數(shù)據(jù)庫(kù)、面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言、軟件工程和計(jì)算機(jī)網(wǎng)絡(luò)等相關(guān)專(zhuān)業(yè)課程,要求學(xué)生能夠站在軟件開(kāi)發(fā)的總體框架上進(jìn)行把握。學(xué)習(xí)過(guò)程本身就是一個(gè)螺旋上升的過(guò)程,所以要求各相關(guān)課程的主講教師應(yīng)作好課程的前后銜接,前驅(qū)課程對(duì)后續(xù)課程的講解起到鋪墊和輔助理解的作用,后續(xù)課程的講解對(duì)前驅(qū)課程起到加深理解和綜合應(yīng)用的作用。
3.2教學(xué)環(huán)節(jié)的安排
該課程的教學(xué)主要包括課堂教學(xué)、上機(jī)實(shí)踐和課程設(shè)計(jì)3個(gè)環(huán)節(jié)。實(shí)踐教學(xué)貫穿于課堂教學(xué)、上機(jī)實(shí)踐、課程設(shè)計(jì)多個(gè)教學(xué)環(huán)節(jié),同時(shí)要避免理論教學(xué)與實(shí)踐教學(xué)相脫離。
3.3教學(xué)內(nèi)容的組織
該課程具有抽象、涵蓋知識(shí)面廣、實(shí)戰(zhàn)性強(qiáng)的特點(diǎn),決定了在UML課程教學(xué)內(nèi)容的組織上分為UML,的知識(shí)準(zhǔn)備、UML建模實(shí)踐、過(guò)程指導(dǎo)與實(shí)現(xiàn)3大模塊,如圖1所示。
知識(shí)準(zhǔn)備包括面向?qū)ο蠡A(chǔ)知識(shí)、UML簡(jiǎn)介和UML建模工具介紹;UML建模實(shí)踐分為需求建模、靜態(tài)建模、動(dòng)態(tài)建模、進(jìn)程建模、物理建模,分別對(duì)應(yīng)UML,的5種視圖來(lái)構(gòu)成反映軟件各個(gè)方面的完整UML,模型;過(guò)程指導(dǎo)與實(shí)現(xiàn)是將UML建模與統(tǒng)一開(kāi)發(fā)過(guò)程(RLTP)相結(jié)合,用面向?qū)ο蟮能浖_(kāi)發(fā)過(guò)程進(jìn)行UML建模指導(dǎo),以及使用雙向工程來(lái)實(shí)現(xiàn)系統(tǒng)模型和代碼之間的映射。
3.3.1正確處理好面向?qū)ο蠹夹g(shù)與UML的關(guān)系,作好知識(shí)準(zhǔn)備
面向?qū)ο蠹夹g(shù)與UML,是相輔相成的。UML是面向?qū)ο蟮慕UZ(yǔ)言,面向?qū)ο蠡A(chǔ)知識(shí)對(duì)于后期的UML,知識(shí)的學(xué)習(xí)是至關(guān)重要的,在學(xué)習(xí)過(guò)程中處處離不開(kāi)面向?qū)ο蟮乃枷耄煌瑫r(shí),面向?qū)ο蟮乃枷胪ㄟ^(guò)UML圖來(lái)進(jìn)行更好地可視化展示。因此,UML的學(xué)習(xí)與面向?qū)ο笏枷?、面向?qū)ο筌浖こ?、面向?qū)ο缶幊陶Z(yǔ)言是分不開(kāi)的,面向?qū)ο蠹夹g(shù)貫穿于UML講課的全過(guò)程。
3.3.2UML建模實(shí)踐的學(xué)習(xí)路線
UML建模實(shí)踐按照項(xiàng)目開(kāi)發(fā)流程進(jìn)行UML知識(shí)單元的組織。以統(tǒng)一建模的5個(gè)核心工作流(包括需求階段、分析階段、設(shè)計(jì)階段、實(shí)現(xiàn)階段和測(cè)試階段)為時(shí)間序列來(lái)安排學(xué)習(xí)線路。該路線貫穿于UML語(yǔ)言縱覽、用例模型(用例圖)、概念模型(類(lèi)圖)、行為模型(序列圖、協(xié)作圖、狀態(tài)圖、活動(dòng)圖)、分組機(jī)制(包圖)和實(shí)現(xiàn)模型(組件圖和部署圖),以及UML 2.0中新增的知識(shí)。
3.3.3引入RUP進(jìn)行過(guò)程指導(dǎo),利用雙向工程進(jìn)行模型和代碼的映射
過(guò)程指導(dǎo)與實(shí)現(xiàn)是以RUP過(guò)程為主線,在軟件過(guò)程中的各個(gè)階段講解具體的分析、設(shè)計(jì)原理和技術(shù),并不斷利用UML建模工具給出各個(gè)階段的成果。學(xué)生在看到這些成果時(shí),會(huì)有“成功感”,并且用一個(gè)完整的案例貫穿整個(gè)課程,對(duì)案例進(jìn)行增量式開(kāi)發(fā)的過(guò)程中講解UML中各種圖的應(yīng)用。課程后期,學(xué)習(xí)使用Rose工具進(jìn)行系統(tǒng)模型和實(shí)現(xiàn)代碼的自動(dòng)轉(zhuǎn)換來(lái)實(shí)現(xiàn)雙向工程,達(dá)到軟件分析設(shè)計(jì)與軟件編碼實(shí)現(xiàn)的對(duì)應(yīng)統(tǒng)一。
3.4實(shí)踐教學(xué)
實(shí)踐教學(xué)主要體現(xiàn)在以Rational Rose 2003為代表的UML建模工具的使用以及UML在軟件開(kāi)發(fā)中的應(yīng)用兩個(gè)方面。
在UML課堂教學(xué)中,使用Rose工具對(duì)所講知識(shí)進(jìn)行當(dāng)堂演示、操作,采用探索式教學(xué)方法,帶領(lǐng)學(xué)生現(xiàn)場(chǎng)探索軟件的各種重要功能,總結(jié)畫(huà)圖的重點(diǎn)和難點(diǎn),強(qiáng)化新知識(shí)和實(shí)踐技能。在實(shí)踐教學(xué)中,充分發(fā)揮上機(jī)實(shí)踐與課程設(shè)計(jì)的作用,尤其將RUP工作流引入到實(shí)踐教學(xué)環(huán)節(jié),實(shí)現(xiàn)從不斷分析和改進(jìn)系統(tǒng)的漸進(jìn)過(guò)程中,從獲得階段性成果到獲得最終的完整軟件系統(tǒng)(包括UML文檔和程序)的過(guò)程中,培養(yǎng)學(xué)生的工程能力和實(shí)踐應(yīng)用能力。
3.5教學(xué)方法的改進(jìn)
“面向?qū)ο蠹夹g(shù)與UML”課程的學(xué)習(xí),需要學(xué)生有持續(xù)的興趣驅(qū)動(dòng)。對(duì)抽象概念、理論及模型的學(xué)習(xí),同時(shí)也需要借助具體化的實(shí)例來(lái)配合抽象的理論加深學(xué)生對(duì)課程知識(shí)的理解,提升實(shí)際知識(shí)的運(yùn)用能力。在教學(xué)方法上主要采用以下兩種方式。
3,5,1采用合適的案例教學(xué)
通過(guò)合適的案例不僅能幫助學(xué)生深入理解和掌握案例本身所反映的基本原理,而且能讓學(xué)生將理論學(xué)習(xí)和實(shí)際問(wèn)題緊密結(jié)合起來(lái),進(jìn)而提高分析解決問(wèn)題的能力、實(shí)踐能力及創(chuàng)新能力,達(dá)到事半功倍的教學(xué)效果。
UML案例的設(shè)計(jì)既要結(jié)合所要講解的知識(shí)點(diǎn),又要符合學(xué)生的特點(diǎn)和水平,還要結(jié)合UML課程本身特點(diǎn),符合規(guī)范和標(biāo)準(zhǔn)。
“面向?qū)ο蠹夹g(shù)與UML”課程的案例選擇主要遵循以下幾個(gè)原則:
1)實(shí)用性:列舉現(xiàn)實(shí)生活中遇到或參與過(guò)的實(shí)際問(wèn)題,達(dá)到理論聯(lián)系實(shí)際,促進(jìn)教學(xué)的目的。
例如,ATM機(jī)案例或?qū)W生選課案例,不論是學(xué)習(xí)用例圖進(jìn)行需求分析,還是學(xué)習(xí)活動(dòng)圖進(jìn)行操作流程分析,都比較容易理解。
2)從簡(jiǎn)到難,循序漸進(jìn):在UML課程初期的教學(xué)中應(yīng)采用小的、簡(jiǎn)單的案例;在課程后期應(yīng)采用具有一定難度、深度和綜合性的案例,這樣可以吸引學(xué)生對(duì)案例進(jìn)行反復(fù)琢磨、推敲,激勵(lì)學(xué)生系統(tǒng)地研究、分析,加深對(duì)難點(diǎn)、重點(diǎn)問(wèn)題的認(rèn)識(shí)和掌握,從而取得較好的整體教學(xué)效果。
3)綜合性:好的案例應(yīng)該覆蓋多個(gè)知識(shí)點(diǎn),可以提高學(xué)生綜合應(yīng)用知識(shí)的能力,達(dá)到整合知識(shí)的目的。在課程初期講授學(xué)生身邊的案例進(jìn)行具體需求分析,并在后續(xù)的課程中始終基于該需求層層推進(jìn),從分析、設(shè)計(jì)到實(shí)現(xiàn),從類(lèi)模型、狀態(tài)模型到交互模型和實(shí)現(xiàn)模型,使學(xué)生在整個(gè)課程的進(jìn)程中始終以關(guān)注該案例為主,避免各個(gè)抽象概念、理論以及模型分別學(xué)習(xí)所導(dǎo)致的知識(shí)點(diǎn)上的“斷裂感”。例如,ATM機(jī)案例的講解可以貫穿到UML多種圖,如用例圖、類(lèi)圖、時(shí)序圖、活動(dòng)圖、組件圖、部署圖。
4)設(shè)計(jì)無(wú)唯一性:對(duì)于軟件分析來(lái)說(shuō),沒(méi)有絕對(duì)的正確和錯(cuò)誤,只有設(shè)計(jì)是否合理,所以同一案例題目可以反復(fù)使用,但關(guān)注的知識(shí)點(diǎn)不同,解決方法不一樣,畫(huà)出的UML圖也就不一樣。所以在-分析系統(tǒng)過(guò)程中,要鼓勵(lì)學(xué)生開(kāi)放思想,發(fā)揮能動(dòng)性,培養(yǎng)學(xué)生的創(chuàng)新能力。例如分析圖書(shū)管理系統(tǒng)的需求建立用例圖時(shí),分析的粒度不一樣,得到的用例大小不同;分析的角度不同,得到的用例之間的關(guān)系不同;用例之間的關(guān)系不同,最終的代碼實(shí)現(xiàn)也就不同。圖2所示是針對(duì)圖書(shū)管理系統(tǒng)實(shí)現(xiàn)的兩種不同設(shè)計(jì)的用例圖。
3.5.2將UML與面向?qū)ο缶幊陶Z(yǔ)言完美結(jié)合
將面向?qū)ο缶幊陶Z(yǔ)言和UML圖結(jié)合進(jìn)行講解,來(lái)完成軟件工程中的分析設(shè)計(jì)與具體編碼實(shí)現(xiàn)的統(tǒng)一。在UML課程中,將部分案例結(jié)合C++代碼或JAVA代碼進(jìn)行模型映射,實(shí)現(xiàn)雙向工程。如圖3所示的“公司一員工類(lèi)關(guān)聯(lián)圖”中的關(guān)聯(lián)及關(guān)聯(lián)上的屬性,可以對(duì)應(yīng)以下具體的JAVA類(lèi)代碼。
還可將多個(gè)UML圖聯(lián)合起來(lái)展示更為復(fù)雜的系統(tǒng)結(jié)構(gòu)。例如,圖4所示是1個(gè)類(lèi)圖和多個(gè)順序圖聯(lián)合表達(dá)面向?qū)ο蟮亩鄳B(tài)性,其對(duì)應(yīng)c++中的具體類(lèi)及成員函數(shù)代碼如下所示。
UML建模是通過(guò)將用戶的業(yè)務(wù)需求映射為代碼,保證代碼滿足這些需求,并能方便地回溯需求的過(guò)程。通過(guò)這種方式能將抽象的知識(shí)轉(zhuǎn)化為具體的體現(xiàn),更利于學(xué)生的理解,更好地體現(xiàn)UML的實(shí)際應(yīng)用。
3.6教師專(zhuān)業(yè)素養(yǎng)的提升
教師專(zhuān)業(yè)素養(yǎng)的提升對(duì)于提高“面向?qū)ο蠹夹g(shù)與UML”課程的教學(xué)質(zhì)量和教學(xué)效果是非常重要的,通過(guò)以下途徑可以提高教師的理論水平和實(shí)踐能力。
1)教師在教學(xué)過(guò)程中,要不斷地摸索和改革教學(xué)模式,同時(shí)參與課程研討,吸收其他好教師的教學(xué)經(jīng)驗(yàn)和方法。
2)教師在教學(xué)之余應(yīng)深入軟件企業(yè)參與項(xiàng)目實(shí)踐,提高個(gè)人的專(zhuān)業(yè)素養(yǎng),增加實(shí)踐經(jīng)驗(yàn),練就與時(shí)俱進(jìn)的教學(xué)水平。
3)教師應(yīng)積極參與與課程相關(guān)的科學(xué)研究,如UML形式化、UML模型檢測(cè)等,達(dá)到教學(xué)與科研相輔相成的目的,加深對(duì)所教授知識(shí)的理解,拓寬思路,加快教師自身知識(shí)更新的步伐。
4)邀請(qǐng)企業(yè)中經(jīng)驗(yàn)豐富的項(xiàng)目開(kāi)發(fā)人員進(jìn)入課堂講學(xué)或進(jìn)行指導(dǎo),吸納既懂理論又有實(shí)踐經(jīng)驗(yàn)的優(yōu)秀的復(fù)合型人才,充實(shí)UML教師隊(duì)伍。
4 結(jié)語(yǔ)
“面向?qū)ο蠹夹g(shù)與UML”課程是一門(mén)知識(shí)更新和發(fā)展很快的課程,業(yè)界的許多新方法新技術(shù)在不斷涌現(xiàn),因此該課程的教學(xué)方式也需要與時(shí)俱進(jìn)。以上對(duì)該課程的教學(xué)探討來(lái)源于實(shí)際教學(xué)工作中所得出的一些經(jīng)驗(yàn)性的總結(jié),這些方法已在課程內(nèi)進(jìn)行了具體的實(shí)踐,收到了較好的效果。