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