胡志慧
(湖北汽車工業(yè)學(xué)院 電氣與信息工程學(xué)院,湖北 十堰 442002)
軟件設(shè)計(jì)與體系結(jié)構(gòu)課程是以軟件設(shè)計(jì)思想為主線,讓學(xué)生通過課程學(xué)習(xí)能夠全面、深入理解在軟件開發(fā)階段設(shè)計(jì)軟件體系結(jié)構(gòu)的必要性,并能夠運(yùn)用其中的思想分析、解決軟件系統(tǒng)設(shè)計(jì)相關(guān)的問題。眾所周知,如果要建造一座摩天大廈,首先必須給出設(shè)計(jì)藍(lán)圖,然后在其指導(dǎo)下一步步地按照工程要求進(jìn)行建造,絕不能隨意施工。與之相似,龐大、復(fù)雜的軟體系統(tǒng)也需要進(jìn)行軟件體系結(jié)構(gòu)設(shè)計(jì),這樣產(chǎn)生了軟件體系結(jié)構(gòu)理論。好的體系結(jié)構(gòu)是決定軟件系統(tǒng)成敗的重要因素,軟件體系結(jié)構(gòu)已經(jīng)成為國內(nèi)外軟件研究的熱點(diǎn)。隨著當(dāng)前軟件系統(tǒng)規(guī)模變得越來越大,軟件體系結(jié)構(gòu)的設(shè)計(jì)顯得更加重要,因而Perry和Wolf認(rèn)為,“未來的時(shí)代將是研究軟件體系結(jié)構(gòu)的時(shí)代!”
CDIO是近年來國際高等工程教育的最新成果,在培養(yǎng)學(xué)生的創(chuàng)新能力、工程實(shí)踐能力、團(tuán)隊(duì)協(xié)作能力等方面效果顯著。CDIO 代表構(gòu)思(Conceive)、設(shè)計(jì)(Design)、實(shí)現(xiàn)(Implement)和運(yùn)作(Operate),它以工程項(xiàng)目從研發(fā)到運(yùn)行的整個(gè)生命周期為載體,通過項(xiàng)目設(shè)計(jì)將整個(gè)課程體系系統(tǒng)地、有機(jī)地結(jié)合起來,讓學(xué)生以主動(dòng)的、實(shí)踐的方式參與到課程的各個(gè)教學(xué)環(huán)節(jié),強(qiáng)調(diào)課程學(xué)習(xí)要與項(xiàng)目設(shè)計(jì)相聯(lián)系,以培養(yǎng)學(xué)生的工程實(shí)踐能力。CDIO的理念不僅繼承和發(fā)展了歐美多年來工程教育改革的理念,更重要的是系統(tǒng)地提出了具有可操作性的能力培養(yǎng)、全面實(shí)施以及檢驗(yàn)測評(píng)的標(biāo)準(zhǔn)。CDIO培養(yǎng)大綱將工程畢業(yè)生的能力分為工程基礎(chǔ)知識(shí)、個(gè)人能力、人際溝通能力和工程系統(tǒng)能力4個(gè)層面,要求以綜合的培養(yǎng)方式使學(xué)生在這4個(gè)層面達(dá)到預(yù)定目標(biāo)。我國高等工科教育的迫切任務(wù)是盡快培養(yǎng)與國際接軌的中國工程師,然而我國工科的教育實(shí)踐中還存在不少問題,如重理論輕實(shí)踐、強(qiáng)調(diào)個(gè)人學(xué)術(shù)能力而忽視團(tuán)隊(duì)協(xié)作精神、重視知識(shí)學(xué)習(xí)而輕視開拓創(chuàng)新的培養(yǎng)等問題。借鑒CDIO工程教育理念和標(biāo)準(zhǔn),對(duì)軟件設(shè)計(jì)與體系結(jié)構(gòu)課程教學(xué)改革進(jìn)行探索,革新傳統(tǒng)的教學(xué)思路和教學(xué)模式。
我國各高校的計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程等相關(guān)專業(yè)的教學(xué)中,已普遍開設(shè)了軟件設(shè)計(jì)與體系結(jié)構(gòu)課程,為軟件架構(gòu)設(shè)計(jì)師的培養(yǎng)提供條件?!败浖O(shè)計(jì)與體系結(jié)構(gòu)”課程與其他專業(yè)課之間緊密聯(lián)系,需要的先修課程包括軟件工程、UML建模技術(shù)以及程序設(shè)計(jì)等方面知識(shí)。
目前高等院校在軟件體系結(jié)構(gòu)課程教學(xué)中,大多主要講授軟件體系結(jié)構(gòu)的基本概念和基本原理,簡單分析軟件體系結(jié)構(gòu)風(fēng)格的具體應(yīng)用。軟件體系結(jié)構(gòu)中的抽象理論容易使學(xué)生感到枯燥乏味,另外作為在校學(xué)生項(xiàng)目開發(fā)經(jīng)驗(yàn)有限,學(xué)生很難在頭腦中將軟件體系結(jié)構(gòu)的抽象理論和實(shí)際聯(lián)系起來,因此較難對(duì)這門課內(nèi)容產(chǎn)生興趣。當(dāng)前,國內(nèi)已經(jīng)有許多學(xué)者編著出版了《軟件體系結(jié)構(gòu)》教材,如張友生(清華大學(xué)出版社)、齊治昌(高等教育出版社)等??傮w來說,這些教材主要介紹了軟件體系結(jié)構(gòu)的基本原理、方法和實(shí)踐,反映了軟件體系結(jié)構(gòu)研究和應(yīng)用的最新研究進(jìn)展。但大多數(shù)教材偏重于理論,實(shí)踐性有待于進(jìn)一步加強(qiáng),尤其是對(duì)于軟件工程本科專業(yè)的學(xué)生來說非常必要。
軟件體系結(jié)構(gòu)內(nèi)容較抽象,對(duì)于缺乏軟件開發(fā)經(jīng)驗(yàn)的學(xué)生來說難以理解,采用案例教學(xué)法可以較好地解決這個(gè)問題。本校在四年級(jí)上學(xué)期開設(shè)軟件體系結(jié)構(gòu)課程,教學(xué)大綱中共安排32學(xué)時(shí)。采用以教師布置相關(guān)案例的自主式學(xué)習(xí)作為引導(dǎo),學(xué)生在課外通過相互討論、查閱文獻(xiàn)資料等方式完成自主學(xué)習(xí)的過程,這樣可以適當(dāng)解決學(xué)時(shí)有限的問題。另外,由于開源軟件的源代碼是可以自由訪問的,可以引導(dǎo)學(xué)生分析某個(gè)比較成熟的開源軟件的結(jié)構(gòu),并鼓勵(lì)其閱讀源代碼,研究一些新技術(shù)背景下的軟件體系結(jié)構(gòu)。
教師選擇布置一些成熟的開源軟件系統(tǒng)案例進(jìn)行分析引導(dǎo),如在大規(guī)模集群上的分布式并行編程框架的云計(jì)算平臺(tái)Hadoop、基于JAVA的可擴(kuò)展開發(fā)平臺(tái)Eclipse等,這樣可以讓學(xué)習(xí)與新技術(shù)、新思想接軌,了解學(xué)習(xí)最新的軟件發(fā)展前沿知識(shí),開闊學(xué)生的視野,激發(fā)學(xué)習(xí)的興趣,也可能提供更廣一些的就業(yè)方向。下面以Hadoop為例介紹:
云計(jì)算是一種新型的計(jì)算范型,其核心思想是將大量用網(wǎng)絡(luò)連接的計(jì)算資源進(jìn)行統(tǒng)一管理和調(diào)度,構(gòu)成一個(gè)計(jì)算資源池。它是基于互聯(lián)網(wǎng)的相關(guān)服務(wù)的增加、使用和交付模式,通常涉及通過互聯(lián)網(wǎng)來提供動(dòng)態(tài)易擴(kuò)展且經(jīng)常是虛擬化的資源。云計(jì)算是一種方便、低成本的IT服務(wù)能力的實(shí)現(xiàn)方法,具有非常廣闊的應(yīng)用前景。
云計(jì)算的主要特點(diǎn)是數(shù)據(jù)密集型的計(jì)算方式,同時(shí)還具有移動(dòng)計(jì)算的特點(diǎn),即移動(dòng)計(jì)算到數(shù)據(jù),而不是移動(dòng)數(shù)據(jù)到計(jì)算,因?yàn)镃PU計(jì)算移動(dòng)到數(shù)據(jù)的代價(jià)更小。Hadoop就是一個(gè)實(shí)現(xiàn)了google云計(jì)算系統(tǒng)的開源系統(tǒng),包括并行計(jì)算模型Map-Reduce,分布式文件系統(tǒng)HDFS,以及分布式數(shù)據(jù)庫Hbase。同時(shí)Hadoop的 相 關(guān) 項(xiàng) 目 也 很 豐 富 , 包 括 ZooKeeper,Pig,Chukwa,Hbase,Mahout等,這些項(xiàng)目都使得Hadoop成為一個(gè)很大的家族系統(tǒng)。Hadoop是一個(gè)分布式計(jì)算基礎(chǔ)框架下的相關(guān)子項(xiàng)目的集合。其中,眾所周知的HDFS和Map-Reduce屬于中心成員,其他子項(xiàng)目為它們提供了配套的服務(wù)。
通過對(duì)Hadoop框架的講解,演示Hadoop自帶的簡單實(shí)例(如統(tǒng)計(jì)文本文件中單詞個(gè)數(shù)的程序Wordcount),剖析基于Hadoop框架的軟件設(shè)計(jì)過程,使學(xué)生能理解抽象的軟件設(shè)計(jì)理論知識(shí),讓學(xué)生對(duì)如何使用在該框架基礎(chǔ)上進(jìn)行應(yīng)用程序設(shè)計(jì)工作感興趣。
學(xué)生分組學(xué)習(xí)討論有利于集思廣益、取長補(bǔ)短。一般將學(xué)生分成人數(shù)為5人左右的小組,并確定一名組長,便于組織交流。首先組內(nèi)討論構(gòu)建Hadoop框架中使用的軟件體系結(jié)構(gòu)風(fēng)格、設(shè)計(jì)模式,以及遵循的設(shè)計(jì)原則等軟件設(shè)計(jì)理論知識(shí),引導(dǎo)學(xué)生通過查閱基于Hadoop應(yīng)用的相關(guān)文檔資料進(jìn)行學(xué)習(xí),開始完成Hadoop云平臺(tái)的搭建,經(jīng)過組內(nèi)討論,選定一個(gè)規(guī)模合適的相關(guān)實(shí)踐項(xiàng)目,給出其需求規(guī)格說明書,并討論確定該項(xiàng)目需求;然后根據(jù)項(xiàng)目需求,分割各個(gè)子系統(tǒng),每個(gè)成員分配確定任務(wù),任務(wù)分配完成后,小組成員間討論,修訂完成軟件設(shè)計(jì)計(jì)劃;最后就是項(xiàng)目的實(shí)施,按照項(xiàng)目設(shè)計(jì)計(jì)劃書開展完成相關(guān)設(shè)計(jì)工作。
對(duì)于考核評(píng)價(jià),按組進(jìn)行項(xiàng)目答辯的形式匯報(bào)自己的設(shè)計(jì)工作完成情況,采取學(xué)生小組之間、小組內(nèi)部互評(píng),教師在學(xué)生匯報(bào)結(jié)束后作細(xì)致點(diǎn)評(píng)。教師根據(jù)提交的工作計(jì)劃書、設(shè)計(jì)說明文檔、軟件程序和答辯情況以及互評(píng)情況等,綜合給出最終成績?cè)u(píng)定。
隨著信息技術(shù)與互聯(lián)網(wǎng)產(chǎn)業(yè)的快速發(fā)展,我國已成為信息產(chǎn)業(yè)大國,越來越需要大批的高級(jí)軟件設(shè)計(jì)人才。軟件設(shè)計(jì)與體系結(jié)構(gòu)課程,是當(dāng)前軟件工程專業(yè)學(xué)習(xí)軟件設(shè)計(jì)的重要專業(yè)課程,為適應(yīng)新時(shí)期的教學(xué)要求,本文提出了一種基于CDIO的自主式開源系統(tǒng)案例教學(xué)方法,讓學(xué)生了解軟件發(fā)展的前沿知識(shí),開闊學(xué)生視野,激發(fā)學(xué)習(xí)興趣,使學(xué)生掌握了軟件架構(gòu)設(shè)計(jì)的基本方法及案例分析能力,學(xué)會(huì)自主學(xué)習(xí)解決實(shí)踐問題的能力。
[1]郭威.基于CDIO的軟件工程綜合實(shí)訓(xùn)課程的改革[J].實(shí)驗(yàn)科學(xué)與技術(shù),2014(10):115-117.
[2]陳長清.軟件體系結(jié)構(gòu)課程教學(xué)探討[J].教育與教學(xué)研究,2008(22):134-135.
[3]李暾.軟件體系結(jié)構(gòu)課程教學(xué)改革規(guī)劃與實(shí)施[J].計(jì)算機(jī)教育,2015(3):19-21.
[4]朱澤民.《軟件體系結(jié)構(gòu)》課程教學(xué)改革探討[J].軟件導(dǎo)刊,2014(12):171-172.
[5]宗欣露.基于CDIO教育模式的軟件工程課程教學(xué)改革[J].教育教學(xué)論壇,2015(1):96-97.