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