摘要:本文在分析軟件體系結(jié)構(gòu)課程特點(diǎn)和面臨問(wèn)題的基礎(chǔ)上,從提高學(xué)生學(xué)習(xí)興趣、課程銜接、組建以設(shè)計(jì)師為主的開(kāi)發(fā)團(tuán)隊(duì)、構(gòu)建實(shí)踐教學(xué)平臺(tái)和師資隊(duì)伍建設(shè)等五個(gè)方面分析了課程教學(xué)中所運(yùn)用的方法和手段。
關(guān)鍵詞:軟件體系結(jié)構(gòu);案例教學(xué);實(shí)踐教學(xué)平臺(tái)
中圖分類(lèi)號(hào):G642文獻(xiàn)標(biāo)識(shí)碼:B
建大廈必須進(jìn)行設(shè)計(jì),而建平房則不需要設(shè)計(jì)。傳統(tǒng)觀(guān)點(diǎn)認(rèn)為需求分析是項(xiàng)目開(kāi)發(fā)成敗的一個(gè)關(guān)鍵,項(xiàng)目的失敗或夭折主要是由于需求分析不充分造成的,但對(duì)如何做好需求分析卻苦無(wú)良策。在軟件開(kāi)發(fā)的早期,軟件代碼量不大,對(duì)設(shè)計(jì)重要性的認(rèn)識(shí)也不充分,程序員可以設(shè)計(jì)、編碼一肩挑,但隨著軟件規(guī)模的擴(kuò)大,人們?cè)诖笮蛙浖拈_(kāi)發(fā)面前顯得力不從心,因而產(chǎn)生了軟件體系結(jié)構(gòu)理論?,F(xiàn)代觀(guān)念認(rèn)為通過(guò)需求與設(shè)計(jì)之間的迭代,并根據(jù)設(shè)計(jì)建立系統(tǒng)原型,能夠較為充分地理解需求并得到滿(mǎn)足需求的設(shè)計(jì)。
軟件體系結(jié)構(gòu)的設(shè)計(jì)在中大型軟件項(xiàng)目中更易于顯示它的意義,這也是軟件體系結(jié)構(gòu)課程產(chǎn)生的原因?!败浖w系結(jié)構(gòu)”作為高等學(xué)校軟件工程專(zhuān)業(yè)的一門(mén)核心課程,是根據(jù)人們的軟件設(shè)計(jì)經(jīng)驗(yàn)總結(jié)出來(lái)的理論與實(shí)踐相結(jié)合的課程?!吧狭翰徽铝和帷?,體系結(jié)構(gòu)的設(shè)計(jì)是現(xiàn)代軟件開(kāi)發(fā)中最為重要的一環(huán),它設(shè)計(jì)得是否合理直接關(guān)系到軟件的成敗。隨著軟件規(guī)模變得越大越復(fù)雜,軟件開(kāi)發(fā)對(duì)軟件架構(gòu)師提出了更高的要求。
1課程特點(diǎn)與面臨的問(wèn)題
1.1軟件體系結(jié)構(gòu)課程的特點(diǎn)
(1) 軟件體系結(jié)構(gòu)的設(shè)計(jì)原則、技術(shù)、方法較為抽象
軟件體系結(jié)構(gòu)的設(shè)計(jì)原則、技術(shù)、方法可以應(yīng)用在不同的軟件項(xiàng)目中,其目的是為了在給定的時(shí)間、經(jīng)費(fèi)等條件限制下設(shè)計(jì)出高質(zhì)量的軟件,它們位于所有具體項(xiàng)目之上,針對(duì)全體軟件項(xiàng)目,因而是抽象的。
(2) 軟件設(shè)計(jì)的效果體現(xiàn)在軟件開(kāi)發(fā)的后續(xù)階段中
軟件生命周期包括可行性分析、需求分析、設(shè)計(jì)、編碼、測(cè)試、運(yùn)行維護(hù)等多個(gè)階段,設(shè)計(jì)對(duì)軟件成敗的影響往往在這個(gè)階段反映不出來(lái)。設(shè)計(jì)階段做出的一個(gè)決定,可能要到編碼、測(cè)試甚至是后續(xù)的維護(hù)階段才能顯現(xiàn)它的效果。
(3) 軟件體系結(jié)構(gòu)的設(shè)計(jì)往往是折衷與權(quán)衡的產(chǎn)物
軟件中的一些質(zhì)量要素經(jīng)常是相互沖突的,即軟件的質(zhì)量要素之間既有正相關(guān),也有負(fù)相關(guān),因此在實(shí)際的軟
件系統(tǒng)設(shè)計(jì)過(guò)程中,必須根據(jù)具體情況對(duì)各種要素進(jìn)行折衷與權(quán)衡,從而得到總體上滿(mǎn)足用戶(hù)要求的軟件。怎么折衷和權(quán)衡,必須結(jié)合具體項(xiàng)目,根據(jù)項(xiàng)目的實(shí)際情況去把握。
1.2教學(xué)中面臨的問(wèn)題
(1) 軟件體系結(jié)構(gòu)的抽象理論容易使學(xué)生感到枯燥乏味
由于授課對(duì)象是大三學(xué)生,項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn)有限,學(xué)生很難在頭腦中將軟件體系結(jié)構(gòu)的抽象理論和實(shí)際聯(lián)系起來(lái),因此較難對(duì)這門(mén)課產(chǎn)生興趣。在接受抽象的理論時(shí),容易產(chǎn)生枯燥乏味的感覺(jué)。
(2) 學(xué)生缺乏完整項(xiàng)目的體驗(yàn)
學(xué)生參與的課程設(shè)計(jì)實(shí)踐一般僅限于小型項(xiàng)目,很少有機(jī)會(huì)參與軟件開(kāi)發(fā)和運(yùn)行的全過(guò)程,難以體會(huì)到軟件體系結(jié)構(gòu)設(shè)計(jì)中關(guān)于正反經(jīng)驗(yàn)的總結(jié)。例如,可維護(hù)性是軟件的一個(gè)重要質(zhì)量指標(biāo),但學(xué)生很少有機(jī)會(huì)去參與真正的軟件維護(hù),所開(kāi)發(fā)的系統(tǒng)大多只是給任課教師大概地檢查一下,一般不會(huì)交付使用,沒(méi)有經(jīng)受用戶(hù)的真正檢驗(yàn),設(shè)計(jì)里的很多錯(cuò)誤被隱藏起來(lái)了。但學(xué)生看不到錯(cuò)誤,就不能對(duì)這些錯(cuò)誤進(jìn)行維護(hù),也就不能體會(huì)到設(shè)計(jì)階段工作對(duì)可維護(hù)性造成的影響。而且對(duì)于經(jīng)驗(yàn)欠缺的多數(shù)學(xué)生來(lái)說(shuō),軟件設(shè)計(jì)中的折衷與權(quán)衡難以想象,不容易理解和把握,包括各種質(zhì)量屬性之間以及與很多非技術(shù)因素的折衷與權(quán)衡。
如何搞好這門(mén)課的教學(xué),是擺在教師面前的一道緊迫課題,對(duì)教學(xué)方法、手段和個(gè)人經(jīng)驗(yàn)都提出了很高的要求。我們提出通過(guò)本課程學(xué)習(xí)要達(dá)到以下三個(gè)目標(biāo):
(1) 幫助學(xué)生了解軟件架構(gòu)的基本概念,初步掌握中大型軟件系統(tǒng)構(gòu)架的分析與設(shè)計(jì)方法。
(2) 使學(xué)生了解軟件系統(tǒng)的成敗不僅取決于用戶(hù)的功能需求是否被滿(mǎn)足,還和各種外部約束條件有關(guān),如設(shè)計(jì)師的素質(zhì)與經(jīng)驗(yàn)、開(kāi)發(fā)組織的目標(biāo)以及政策法規(guī)限制等,從而提高軟件設(shè)計(jì)的基本素養(yǎng)。
(3) 引導(dǎo)學(xué)生認(rèn)識(shí)系統(tǒng)的性能、可用性、安全性等質(zhì)量屬性都是受軟件構(gòu)架制約的,或者說(shuō)這些屬性的實(shí)現(xiàn)影響著設(shè)計(jì)師的設(shè)計(jì)選擇。
2強(qiáng)化案例教學(xué),建設(shè)符合學(xué)生接受能力的案例
本課程較為抽象,要求學(xué)生有一定的軟件設(shè)計(jì)經(jīng)驗(yàn),為了彌補(bǔ)學(xué)生在設(shè)計(jì)經(jīng)驗(yàn)上的不足,我們?cè)诒菊n程中采用以案例教學(xué)為主的方法和手段,盡量將理論講授和實(shí)際案例結(jié)合起來(lái)。案例選取有三方面的要求:一是要選取學(xué)生能聽(tīng)得懂、能理解的案例,案例本身不能過(guò)于復(fù)雜,超出學(xué)生的可接受范圍;二是案例不能太簡(jiǎn)單,應(yīng)稍高于學(xué)生的現(xiàn)有經(jīng)驗(yàn),這樣才能提高學(xué)生的學(xué)習(xí)興趣并幫助學(xué)生提高;三是案例要和每階段的教學(xué)內(nèi)容相匹配。經(jīng)過(guò)幾年的教學(xué)積累,我們以實(shí)際系統(tǒng)為基礎(chǔ),建立了多個(gè)符合學(xué)生理解和接受能力的案例,如軟件學(xué)院的研究生選課系統(tǒng)、軟件學(xué)院的圖書(shū)管理系統(tǒng)、學(xué)生宿舍管理系統(tǒng)、訂票系統(tǒng)、軟件學(xué)院校友管理系統(tǒng)、超市進(jìn)銷(xiāo)存系統(tǒng)等。這些系統(tǒng)都是真實(shí)的,也是學(xué)生經(jīng)常接觸的,有很強(qiáng)的參照性,學(xué)生容易接受。我們還把這些系統(tǒng)作為課程實(shí)踐的選題,提供原有設(shè)計(jì)方案和源代碼,讓學(xué)生使用并提出意見(jiàn),找出原先設(shè)計(jì)的不足并改進(jìn),大大提高了學(xué)生實(shí)踐的感知能力。
在學(xué)時(shí)分配方面也做到向案例教學(xué)傾斜,本課程總共48學(xué)時(shí),除了8個(gè)學(xué)時(shí)的專(zhuān)門(mén)案例分析和8個(gè)學(xué)時(shí)的上機(jī)實(shí)踐,在課堂理論教學(xué)時(shí)還穿插大量案例,案例教學(xué)占課堂授課比例的40%左右。我們還采用啟發(fā)式教學(xué)手段,在課堂上留有一定時(shí)間專(zhuān)門(mén)就案例展開(kāi)討論,鼓勵(lì)學(xué)生通過(guò)爭(zhēng)論來(lái)比較和掌握軟件構(gòu)架設(shè)計(jì)方。例如,學(xué)生都實(shí)際使用過(guò)選課系統(tǒng),選取該系統(tǒng)作為案例,學(xué)生就很樂(lè)意參與討論并給出建議。這些手段的采用取得良好的教學(xué)效果,加深了學(xué)生對(duì)抽象的軟件架構(gòu)設(shè)計(jì)思想的理解。
3教學(xué)內(nèi)容與教學(xué)手段
(1) 激發(fā)學(xué)習(xí)興趣和熱情
我們從課堂氣氛、內(nèi)容選擇、語(yǔ)言表達(dá)三個(gè)方面入手。在營(yíng)造課堂氣氛方面,講解時(shí)盡量營(yíng)造探究氣氛,鼓勵(lì)學(xué)生參與討論,避免學(xué)生被動(dòng)地聽(tīng),增強(qiáng)教師與學(xué)生的交流互動(dòng)。在內(nèi)容選擇方面,選一些容易引起學(xué)生興趣的素材。例如,在講到架構(gòu)風(fēng)格時(shí),我拿了一個(gè)自己編寫(xiě)的對(duì)戰(zhàn)游戲程序給學(xué)生看,由于這種游戲?qū)W生普遍都感興趣,因此在講解架構(gòu)風(fēng)格時(shí),學(xué)生注意力都很集中,收到了較好的教學(xué)效果。語(yǔ)言表達(dá)方面,在講課時(shí)多用一些形象、有趣的事例或類(lèi)比來(lái)說(shuō)明或代替那些抽象、枯燥的理論陳述。例如,在談到滿(mǎn)足不同質(zhì)量屬性需要權(quán)衡時(shí),列舉了斑馬為什么有黑白條紋的例子。
(2) 注意與其他課程的銜接
軟件體系結(jié)構(gòu)的教學(xué)內(nèi)容與軟件工程、軟件項(xiàng)目管理以及軟件文檔寫(xiě)作等課程緊密相關(guān)、甚至有部分重疊,我們針對(duì)不同課程的特點(diǎn)進(jìn)行了妥善安排,在教學(xué)內(nèi)容上注意相關(guān)課程內(nèi)容的相互滲透。大三上學(xué)期首先講授軟件工程,使學(xué)生對(duì)軟件工程有一個(gè)初步認(rèn)識(shí),緊接著是軟件文檔寫(xiě)作的訓(xùn)練。大三下學(xué)期軟件體系結(jié)構(gòu)和軟件項(xiàng)目管理同步講授,要求學(xué)生運(yùn)用軟件體系結(jié)構(gòu)的理論、技術(shù)和方法進(jìn)行軟件設(shè)計(jì)和評(píng)審,同時(shí)運(yùn)用項(xiàng)目管理的知識(shí)組織項(xiàng)目開(kāi)發(fā),最終驗(yàn)證軟件設(shè)計(jì)的合理性。設(shè)計(jì)和實(shí)現(xiàn)的題目鼓勵(lì)沿用軟件工程課程上所用的項(xiàng)目、人員組成也鼓勵(lì)保持一致,使學(xué)生對(duì)某個(gè)項(xiàng)目能保持一個(gè)學(xué)年左右的長(zhǎng)期接觸。
(3) 建立以設(shè)計(jì)師為主的開(kāi)發(fā)團(tuán)隊(duì)
以小組(四人為一組)為單位開(kāi)展課程實(shí)驗(yàn),每個(gè)人扮演不同角色。首先他們是一個(gè)設(shè)計(jì)師團(tuán)隊(duì),但其中要有一人負(fù)責(zé),這也是軟件設(shè)計(jì)的一條重要原則;其次,還有項(xiàng)目經(jīng)理、需求分析師、程序員和測(cè)試員等角色需要擔(dān)當(dāng),也就是說(shuō)每個(gè)人要承擔(dān)多個(gè)角色。實(shí)驗(yàn)綜合運(yùn)用軟件工程、軟件體系結(jié)構(gòu)設(shè)計(jì)、軟件文檔寫(xiě)作、軟件項(xiàng)目管理以及其它課程的知識(shí),來(lái)體會(huì)如何圍繞軟件體系結(jié)構(gòu)進(jìn)行開(kāi)發(fā),體會(huì)軟件體系結(jié)構(gòu)設(shè)計(jì)的原則和方法。
(4) 建立實(shí)踐教學(xué)平臺(tái)
軟件體系結(jié)構(gòu)的教學(xué)應(yīng)使學(xué)生通過(guò)對(duì)這門(mén)課的學(xué)習(xí),加上對(duì)其他專(zhuān)業(yè)知識(shí)的綜合運(yùn)用,能夠在實(shí)際工作中應(yīng)付真正的項(xiàng)目設(shè)計(jì),因此有必要讓學(xué)生參與一個(gè)長(zhǎng)期(不少于一學(xué)年)的軟件項(xiàng)目。為此我們?cè)O(shè)計(jì)多個(gè)規(guī)模較大的、完整的軟件項(xiàng)目作為實(shí)踐教學(xué)平臺(tái),這種項(xiàng)目包括分析、設(shè)計(jì)、實(shí)現(xiàn)、軟件維護(hù)、軟件重用、對(duì)現(xiàn)有軟件的擴(kuò)展,以及團(tuán)隊(duì)合作、項(xiàng)目管理等等。讓學(xué)生長(zhǎng)期接觸某個(gè)項(xiàng)目,使他們可以在這個(gè)平臺(tái)上觀(guān)察和動(dòng)手實(shí)踐自己的軟件設(shè)計(jì)方案,或者對(duì)現(xiàn)有方案進(jìn)行改進(jìn),這樣既有機(jī)會(huì)獲得正面成功經(jīng)驗(yàn),也有機(jī)會(huì)得到反面失敗的教訓(xùn)。
實(shí)驗(yàn)與教學(xué)進(jìn)度保持匹配,使學(xué)生在實(shí)驗(yàn)中主動(dòng)運(yùn)用所學(xué)設(shè)計(jì)理論,并和傳統(tǒng)設(shè)計(jì)方法進(jìn)行對(duì)比,幫助學(xué)生迅速地把所學(xué)知識(shí)轉(zhuǎn)換成實(shí)際的軟件設(shè)計(jì)能力。設(shè)計(jì)過(guò)程要求采用Raional等工具進(jìn)行分析和設(shè)計(jì)。
課程結(jié)束時(shí),安排專(zhuān)門(mén)的時(shí)間,由每個(gè)團(tuán)隊(duì)向全班同學(xué)演示自己的實(shí)驗(yàn)成果,并由學(xué)生和教師共同對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行評(píng)價(jià)和給分,極大地調(diào)動(dòng)了學(xué)生的積極性,評(píng)分過(guò)程中的議論則幫助學(xué)生進(jìn)一步加深了對(duì)軟件架構(gòu)設(shè)計(jì)方法的理解。
團(tuán)隊(duì)提交的實(shí)踐結(jié)果:需求說(shuō)明書(shū)、體系結(jié)構(gòu)設(shè)計(jì)說(shuō)明書(shū)、體系結(jié)構(gòu)評(píng)審報(bào)告、個(gè)人總結(jié)報(bào)告、演示Demo,要求說(shuō)明每個(gè)人的角色和工作量。
評(píng)分標(biāo)準(zhǔn):項(xiàng)目文檔描述60%;個(gè)人總結(jié)報(bào)告20%;Demo20%。
上述評(píng)分標(biāo)準(zhǔn)以團(tuán)隊(duì)為基礎(chǔ),改變了傳統(tǒng)的針對(duì)個(gè)人實(shí)踐結(jié)果的考評(píng)模式,避免了相互抄襲。通過(guò)以團(tuán)隊(duì)評(píng)分為主,個(gè)人表現(xiàn)為輔的評(píng)價(jià)方式,達(dá)到培養(yǎng)學(xué)生學(xué)會(huì)與他人合作,培養(yǎng)團(tuán)隊(duì)精神的目的;通過(guò)以軟件文檔評(píng)分為主,以實(shí)踐結(jié)果為輔的評(píng)分體系,達(dá)到學(xué)生對(duì)軟件設(shè)計(jì)過(guò)程和方法的掌握。
其次,讓學(xué)生參與教師的研究課題,加強(qiáng)實(shí)踐基地建設(shè),構(gòu)建課程實(shí)訓(xùn)環(huán)境,鼓勵(lì)學(xué)生到社會(huì)上的軟件公司去實(shí)習(xí)、兼職。學(xué)院已與國(guó)內(nèi)外多家軟件領(lǐng)域的著名公司和研發(fā)基地建立了合作關(guān)系,建立了全方位、多層次的課程實(shí)踐教學(xué)環(huán)境。
(5) 構(gòu)建高素質(zhì)的師資隊(duì)伍
根據(jù)國(guó)家示范性軟件學(xué)院工程型人才的培養(yǎng)目標(biāo),考慮軟件體系結(jié)構(gòu)設(shè)計(jì)課程實(shí)踐性很強(qiáng)的突出特點(diǎn),構(gòu)建了三三制的師資隊(duì)伍結(jié)構(gòu),即專(zhuān)職教師、IT公司教師和境外教師。完善了校內(nèi)專(zhuān)任教師到軟件企業(yè)一線(xiàn)參與實(shí)際軟件項(xiàng)目研發(fā)和交流、軟件企業(yè)的工程技術(shù)和項(xiàng)目管理人員到學(xué)校兼職授課的制度和機(jī)制,形成了一支了解行業(yè)需求、教學(xué)經(jīng)驗(yàn)豐富、專(zhuān)兼結(jié)合、國(guó)內(nèi)國(guó)外、校企聯(lián)合的高素質(zhì)的教師隊(duì)伍。
4教學(xué)效果
我院針對(duì)軟件體系結(jié)構(gòu)課程教學(xué)中存在的不足,從教學(xué)方法、手段等方面提出了改進(jìn)方案,融理論、案例與實(shí)踐為一體,系統(tǒng)地闡述了軟件體系結(jié)構(gòu)的設(shè)計(jì)過(guò)程,體系結(jié)構(gòu)設(shè)計(jì)師的主要工作和職責(zé),輔助以實(shí)際案例向?qū)W生傳授軟件架構(gòu)的理論、方法和技巧,并以小組為單位完成課程實(shí)驗(yàn)。通過(guò)本課程學(xué)習(xí),學(xué)生可以在較短時(shí)間內(nèi)掌握軟件體系結(jié)構(gòu)的基本知識(shí)和實(shí)踐能力。
參考文獻(xiàn)
[1] 裴小兵. 基于軟件開(kāi)發(fā)團(tuán)隊(duì)的軟件工程教學(xué)實(shí)踐研究[J]. 計(jì)算機(jī)教育,2008,(2):55-56.
[2] 林.巴斯著,車(chē)立紅譯. 軟件構(gòu)架實(shí)踐(第2版)[M]. 北京:清華大學(xué)出版社,2004.