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