余 穎 劉 杰 李曉昀
摘要:一套完善的課程體系對于教學的實施十分重要?!败浖w系結(jié)構(gòu)與設計模式”是軟件工程的專業(yè)主干課程之一,本文在總結(jié)SEEK及專業(yè)規(guī)范對課程的具體要求的基礎上,結(jié)合實際教學情況,對該課程的教學模式進行了探討并提出了一些建議。
關鍵詞:SEEK;軟件體系結(jié)構(gòu);設計模式;教學模式
中圖分類號:G642 文獻標識碼:B
1引言
自20世紀40年代第一臺數(shù)字電子計算機問世,人們對于計算機的應用就以驚人的速度發(fā)展起來。以信息技術為核心的高新技術發(fā)展極大改變了我們的生產(chǎn)、生活以及經(jīng)濟、政治關系。計算機軟件在我們?nèi)粘I畹母鱾€方面正扮演著一個核心角色,它涉及政府、銀行和金融、教育、交通、娛樂、醫(yī)療、農(nóng)業(yè)和法律等各個領域。軟件產(chǎn)業(yè)已成為信息產(chǎn)業(yè)的核心和靈魂。國內(nèi)外高等學校、科研院所紛紛建立起軟件工程學科,采取系統(tǒng)、規(guī)范的方式培養(yǎng)市場所需的軟件工程人才。
軟件工程作為一個專業(yè)方向,必須通過一套完善的課程體系來實施教學,ACM和IEEE-CS聯(lián)合工作組織制定的軟件工程知識體系SWEBOK(Software Engineering Body of Knowledge)、計算教程軟件工程卷CCSE(Computing Curriculum Software Engineering)及其中的軟件工程知識體系SEEK(Software Engineering Education Knowledge)都明確給出了相應的課程體系構(gòu)成。我國于2006年推出了《計算機科學與技術本科專業(yè)規(guī)范(軟件工程方向)》,該專業(yè)規(guī)范結(jié)合我國高等教育的實際情況,詳細描述了軟件工程教育知識體系、核心課程等內(nèi)容?!败浖w系結(jié)構(gòu)與設計模式”是軟件工程方向?qū)I(yè)重要的專業(yè)核心課程之一,目前還處于專業(yè)課程體系建設的起步階段,要建設高水平、高質(zhì)量的“軟件體系結(jié)構(gòu)與設計模式”課程,還需要進一步深入的研究和探討。本文在總結(jié)SEEK及專業(yè)規(guī)范對課程的具體要求的基礎上,結(jié)合南華大學的實際教學情況,對該課程的教學模式提出了一些建議。
2該課程在SEEK和專業(yè)規(guī)范中的構(gòu)成
2.1該課程在SEEK中所涉及的知識領域和知識單元
軟件工程知識體系SEEK分為三層結(jié)構(gòu),最高層是教育知識領域(area),它代表了軟件工程的子學科,通常被認為是本科生應該掌握的軟件工程知識體的重要部分。知識領域是對軟件工程知識進行組織、分類和描述的高層結(jié)構(gòu)元素,每個領域使用一個縮寫進行標識。每個知識領域又分成許多知識單元(unit),表示一個領域中的獨立主題模塊。在知識領域標識的后面,添加兩到三個字母的后綴標識知識單元。每個知識單元被進一步分成知識點(topic)集合,知識點是層次結(jié)構(gòu)的最底層。表1是SEEK總結(jié)的知識領域,列出了知識單元的集合,并推薦了每個知識領域和知識單元所需的最少學時數(shù)。表2則列出了SEEK中軟件設計知識領域中包含的軟件體系結(jié)構(gòu)和設計模式的內(nèi)容(其他四個知識單元的內(nèi)容在此省略)。
由表1和表2的內(nèi)容可知“軟件體系結(jié)構(gòu)與設計模式”涉及到SEEK十個知識領域中的軟件設計(DES)這一知識域,其中軟件體系結(jié)構(gòu)對應于體系結(jié)構(gòu)設計(DES.ar)知識單元,而設計模式則屬于詳細設計(DES.dd)知識單元的知識點之一。
SEEK中知識域的劃分是以本科教學和課程體系建設為目標進行的,盡管SEEK不代表教程,但是SEEK為構(gòu)成軟件工程教程的教學單元提供了設計、實現(xiàn)和交付的基礎,在課程建設中需要研究各個知識域之間的關系,并進行合理的權衡和安排。
2.2專業(yè)規(guī)范中該課程的構(gòu)成和要求
在教育部制定的《高等學校計算機科學與技術本科專業(yè)規(guī)范(軟件工程方向)》中,軟件設計(DES)知識領域所包含的內(nèi)容有:
軟件設計策略(str):其主要內(nèi)容為面向功能的設計、面向?qū)ο蟮脑O計、以數(shù)據(jù)結(jié)構(gòu)為中心的設計、面向主題的設計。
體系結(jié)構(gòu)設計(ar):其主要內(nèi)容為體系結(jié)構(gòu)風格、多屬性間的體系結(jié)構(gòu)折衷、軟件體系結(jié)構(gòu)中的硬件問題、特定領域的體系結(jié)構(gòu)和產(chǎn)品線、體系結(jié)構(gòu)的表示。
詳細設計(dd):其主要內(nèi)容為設計方法、設計模式、構(gòu)件設計、構(gòu)件和系統(tǒng)接口設計、設計表示。
設計支持工具與評價(ste):其主要內(nèi)容為設計支持工具、設計屬性的度量、設計標準、形式化設計分析。
專業(yè)規(guī)范中軟件設計知識領域的知識構(gòu)成跟SEEK中大體一致。規(guī)范中還對軟件設計和體系結(jié)構(gòu)的課程內(nèi)容、教學目標等做了具體的描述。對軟件設計和體系結(jié)構(gòu)知識的學習,旨在使學生能夠在各種軟件設計中應用多種設計模式、框架和體系結(jié)構(gòu),使用不同的中間件技術設計并實現(xiàn)軟件,能使用合理的變更控制方法更改設計以及使用逆向工程技術重新獲得軟件設計。課程內(nèi)容涵蓋設計模式、框架和體系結(jié)構(gòu)、當前中間件體系結(jié)構(gòu)綜述、用中間件技術設計分布式系統(tǒng)、基于構(gòu)件的設計、度量理論和設計中的合理性準則、設計質(zhì)量、設計的評估和演化、軟件演化、再工程和逆向工程的基礎知識。專業(yè)規(guī)范結(jié)合了我國高等教育的實際情況,對課程的規(guī)劃和建設具有極大的指導意義。
3該課程目前的教學模式及分析
軟件工程專業(yè)是南華大學2005年新辦的專業(yè),并將迎來第一屆畢業(yè)生?!败浖w系結(jié)構(gòu)與設計模式”已完成了第一輪教學。目前的教學計劃將該課程列為專業(yè)必修課程,安排在學生第6個學期學習,學分為3分,以考試的形式進行考核,總學時為54課時,其中理論課時占30課時,實驗課時占24課時。通過本課程的學習,要求學生對軟件體系結(jié)構(gòu)和軟件設計模式有一定的認識和理解,掌握軟件體系結(jié)構(gòu)的基本概念和主要方法,熟悉在面向?qū)ο筌浖w系結(jié)構(gòu)中常用的23種設計模式,并能夠?qū)⑦@些設計模式應用到軟件系統(tǒng)設計中。要求先修課程為“面向?qū)ο蟪绦蛟O計”、“離散數(shù)學”、“軟件工程”。
從SEEK和專業(yè)規(guī)范中可以看到,軟件體系結(jié)構(gòu)和設計模式雖然同屬于軟件設計這一知識域,但是分屬不同的知識單元,軟件體系結(jié)構(gòu)描述的是軟件工程實施中概要設計的部分,是一個抽象層次上的設計,而設計模式則輸入詳細設計階段的內(nèi)容,具體指導了編碼。因此,將軟件體系結(jié)構(gòu)和設計模式放在一門課程中進行講授不太合理,事實上在目前的教材中也很少要將二者放在一起的,在第一輪的教學中我們選用的教材是設計模式經(jīng)典之作——機械工業(yè)出版社的《設計模式—可復用面向?qū)ο筌浖幕A》,并以機械工業(yè)出版社的《面向模式的軟件體系結(jié)構(gòu) 卷1:模式系統(tǒng)》作為輔助教材,因前者僅對設計模式部分進行了介紹,選擇后者補充體系結(jié)構(gòu)知識的內(nèi)容。
實踐環(huán)節(jié)主要針對案例進行分析設計,讓學生熟悉使用統(tǒng)一建模工具進行軟件設計,我們選用了IBM的Rational Software Development Platform 和 Rational Rose Enterprise Edition,就實驗教學的情況看,部分學生對統(tǒng)一建模工具的使用稍顯生疏,需要在此之前加強學生對建模工具的運用。
4幾點建議
(1) 課程安排:將目前本門課程的內(nèi)容劃分為兩門課程,我們已在新的教學計劃中對此作出了調(diào)整。
(2) 教學內(nèi)容:設計模式的教學僅僅局限于23種設計模式是不夠的,還應該將構(gòu)件設計、構(gòu)件和系統(tǒng)的接口設計等知識添加進來,以豐富詳細設計階段涉及的內(nèi)容。
(3) 教師隊伍:開設這門課的教師,最好由參與過面向?qū)ο蟮能浖_發(fā)過程的人員承擔,這樣更有利于結(jié)合實際案例和經(jīng)驗進行授課。
(4) 前導課:軟件工程、離散數(shù)學、面向?qū)ο蟮某绦蛟O計這幾門課程必須講授到位才會給本門課程的教學打下良好的基礎,比如設計模式中,對于模式應用的舉例主要源自.NET和JAVA,在面向?qū)ο蟮某绦蛟O計基礎上,還需要學生對這些語言有一定的了解。
(5) 考核方式:本課程主要介紹各種體系結(jié)構(gòu)風格與適用情況、23種常用設計模式及其應用、構(gòu)件設計等,目的是要求學生能夠在軟件開發(fā)的實際過程中進行合理的設計應用,對于各種體系結(jié)構(gòu)、設計模式?jīng)]有必要強行記憶,因此,如果單獨出卷進行閉卷考試意義不大,重在學生對知識點的理解,可要求學生根據(jù)對某些知識的學習體會、模式的使用情況等寫總結(jié)報告,最后以所寫報告、實驗情況以及平時的表現(xiàn)綜合給予評定。
5結(jié)束語
“軟件體系結(jié)構(gòu)和設計模式”是軟件工程專業(yè)的專業(yè)主干課程之一。作為高校的新辦專業(yè),該課程的總體安排、教材選定、理論與實驗課的內(nèi)容以及安排、甚至考核方式和成績評定都需要進一步的探索和研究。隨著課程體系的不斷發(fā)展和完善,必將使這門課程更加健全。