



文章編號:1672-5913(2011)17-0039-04 中圖分類號:G642 文獻標識碼:A
摘 要:針對“軟件體系結(jié)構(gòu)”教學存在的實踐教學形式過于單一的問題,在分析能力本位課程開發(fā)方法的基礎上,提出基于能力本位的“軟件體系結(jié)構(gòu)”實踐教學環(huán)節(jié)開發(fā)方法。該方法結(jié)合本三院校實際,在“軟件體系結(jié)構(gòu)”實踐教學中取得較好效果。
關鍵詞:軟件體系結(jié)構(gòu);能力本位;本三;實踐教學
作者簡介:朱鵬程,男,講師,研究方向為軟件架構(gòu);管致錦,男,教授,研究方向為可逆計算。
軟件體系結(jié)構(gòu)(又稱軟件架構(gòu))是植根于軟件工程發(fā)展起來的一門新興學科[1-2]。專門和廣泛研究軟件體系結(jié)構(gòu)始于20世紀90代,目前,軟件體系結(jié)構(gòu)已經(jīng)成為軟件工程研究和實踐的主要領域,成為眾多軟件企業(yè)關注的核心技術之一?,F(xiàn)代社會對大規(guī)模復雜軟件有極高的需求,但目前國內(nèi)的軟件開發(fā)綜合能力并不能很好地滿足這個需求。一方面是由于軟件架構(gòu)方面的高端人才嚴重缺失;另一方面是絕大多數(shù)程序員缺少架構(gòu)、設計模式及開發(fā)規(guī)范等相關知識,編寫的代碼隨意性很強。
作為人才培養(yǎng)的基地,高校應該責無旁貸地承擔培養(yǎng)具備架構(gòu)相關知識軟件人才的任務,“軟件體系結(jié)構(gòu)”便是以此為目的被各個高校所引入的。清華大學是國內(nèi)是最先開設該課程的學校,在該課程上積累的成功教學經(jīng)驗以及編寫的諸多經(jīng)典教材為其他高校開設該課程提供了基礎和借鑒。目前,越來越多本三層次院校的軟件專業(yè)也開始開設該課程,因此,本三層次學生如何學好本課程是我們要思考的問題。
1 “軟件體系結(jié)構(gòu)”教學面臨的問題
通過對某本三學院計算機及軟件專業(yè)學生的問卷調(diào)查,我們發(fā)現(xiàn)該課程教學效果不佳,主要原因如下。
原因一,課程內(nèi)容抽象,軟件體系結(jié)構(gòu)是從較高層次把握和理解復雜軟件的整體結(jié)構(gòu),考慮元素和元素之間的關系,整門課程中充斥著各種原理、概念和理念,理論性和抽象性很強,而本三層次學生由于數(shù)學基礎略顯薄弱,抽象思維相對較差,所以,學習該課程有困難。
原因二,由于大多數(shù)學生在學習該課程之前無軟件開發(fā)經(jīng)驗,所以不能充分認識該課程的重要性,認為該課程遠遠沒有程序設計類和工具類的課程有價值。
原因三,實踐教學形式單一,實踐教學環(huán)節(jié)不夠完整。實踐是本三層次學生較喜歡的一種學習方式,但該課程往往只單設幾節(jié)課內(nèi)實驗課,而對于復雜軟件開發(fā)經(jīng)驗為零的學生而言,幾節(jié)實驗課肯定不能加深其對軟件體系結(jié)構(gòu)的理解。
清華大學覃征教授對前兩個原因作了精辟的分析,并提出“動機-專題-案例”的教學主導思想[3],以此為借鑒并結(jié)合院校專業(yè)實際情況,我們應該能很好地解決這兩個問題。但是,該課程實踐環(huán)節(jié)應該如何設置,尤其是針對本三層次學生如何設置,目前還沒有太多可供借鑒的成功案例。
2 以能力為本位,設計課程實踐教學環(huán)節(jié)
能力本位教育[4-7]產(chǎn)生于二次大戰(zhàn)后,以美國、加拿大為代表,其核心是從職業(yè)崗位的需要出發(fā),確定能力目標。學校聘請行業(yè)中一批具有代表性的專家組成專業(yè)委員會,按照崗位群的需要,層層分解,確定從事行業(yè)所應具備的能力,明確培養(yǎng)目標。然后,再由學校組織相關教學人員,以這些能力為目標,設置課程、組織教學內(nèi)容,最后考核是否達到這些能力要求。能力本位課程開發(fā)流程如圖1所示。
圖1 能力本位課程開發(fā)流程
2.1 課程面向崗位
能力本位課程設計的起點是職業(yè)崗位,所以,我們首先必須弄清楚本課程面向哪些崗位。部分人認為“軟件體系結(jié)構(gòu)”,顧名思義,面向的肯定就是軟件架構(gòu)師崗位了,這種認識較為片面,因為就本三層次而言,極少有學生一畢業(yè)就能走上架構(gòu)師這樣的崗位,絕大多數(shù)學生直到其職業(yè)生涯晚期依然不能走上這樣的崗位,按這樣的觀點,這門課程在本三就沒有開設的必要性了。本三層次的“軟件體系結(jié)構(gòu)”課程目的應該是培養(yǎng)具備軟件架構(gòu)知識的軟件從業(yè)人員,其中包含架構(gòu)師,但以程序員為主?;谶@個起點,我們才有可能設計出本三層次學生能勝任且較喜歡的實踐環(huán)節(jié)。
2.2 崗位能力剖析
人們經(jīng)常會在雜志或論壇上看到架構(gòu)師抱怨:設計出的好架構(gòu),卻得不到徹底的貫徹。除了成本、領導決策等因素以外,軟件實現(xiàn)人員的技術水準較低,缺少熟悉架構(gòu)知識的程序員也是導致這種情況出現(xiàn)的根源之一。通過對本地軟件公司的走訪并結(jié)合網(wǎng)絡調(diào)研[8],我們認為,熟悉架構(gòu)師知識的軟件從業(yè)人員應該具備以下能力。
1) 良好的溝通能力,能清晰地表達自己心中所想,并能正確理解別人的意圖。軟件是一個高度復雜的邏輯產(chǎn)品,是在需求基礎上由設計人員、開發(fā)人員、
測試人員等相關人員分工合作而獲得的腦力勞動成果。因此,溝通顯得尤為重要,無論是和客戶溝通,還是團隊內(nèi)部的溝通,必須能正確理解別人并讓別人正確理解自己,否則任何一環(huán)的溝通不暢甚至是誤解,都會給整個項目帶來巨大的風險。
2) 較好的抽象思維能力和建模能力。即能從模糊的用戶需求中分離出確定因素和不確定因素,然后選擇合適的工具和風格構(gòu)建總體架構(gòu)模型以容納確定因素并擁抱未來可能的變化因素,并能通過圖形化的工具清晰描述該結(jié)構(gòu)。
3) 較好的軟件實現(xiàn)能力。即精通常用程序設計語言、數(shù)據(jù)庫系統(tǒng)及開發(fā)工具,熟悉常用的設計原則和設計模式,能將架構(gòu)描述的規(guī)范很好地付諸實踐。
4) 較好的創(chuàng)新能力。軟件開發(fā)中雖然有很多場景不斷重復,但每次出現(xiàn)的細節(jié)都有所不同,在設計和開發(fā)時,不僅要借鑒已有的成功經(jīng)驗,還要懂得靈活變通,因地制宜。
2.3 教學目標和實踐內(nèi)容的確定
為了培養(yǎng)上述能力,我們結(jié)合課程理論教學大綱和學生特點,甄選實踐內(nèi)容如下:軟件體系結(jié)構(gòu)風格實踐、UML建模實踐、軟件體系結(jié)構(gòu)描述語言實踐、設計原則及設計模式實踐、完整軟件項目的綜合性實踐。教學目標和實踐內(nèi)容的安排如表1所示。
表1 教學目標和實踐內(nèi)容安排
2.4 教學實施和管理
教學實施是教學設計付諸實踐的過程,合理選擇實踐形式和實踐場地,并對實踐過程作實時監(jiān)控和管理有助于教學效果的提升。實踐形式及場地選擇等情況如表2所示。
本課程的實踐體系由課內(nèi)實驗、校內(nèi)獨立實踐周和校外獨立實踐周組成。其中課內(nèi)實驗主要和課程理論教學相輔相成,讓學生對課程涉及的概念、原理、工具等有較清晰地認識,并逐步培養(yǎng)相關能力;校內(nèi)獨立實踐周是對整門課程所學知識的一個總結(jié)和回顧,通過這個環(huán)節(jié)培養(yǎng)學生的綜合能力,并為校外實習打下基礎;校外獨立實踐周,是在企業(yè)氛圍下進行的課程實踐,能讓學生真正做到學以致用。本課程的每個實踐環(huán)節(jié)都由專人進行監(jiān)督和管理,尤其是在校外實踐時,除了校內(nèi)指導教師以外,還會給學生安排相關的企業(yè)導師,企業(yè)導師就企業(yè)環(huán)境、開發(fā)團隊組織、相關技術對學生進行指導,并對學生完成相關任務的過程作監(jiān)督和評價。
表2 實踐形式及場地選擇等情況
另外,在教學實施過程中,我們還應該靈活選擇實驗案例,使案例具備典型性、時效性,貼近學生,并有一定的趣味性。比如在做設計模式實驗時,如果只是讓學生按照相關模式的概念去設計類圖,并編寫典型代碼,學生往往不感興趣,對此,我們可以通過一些有趣味性的引子,逐步將學生引入到模式的世界中去。比如在講工廠方法模式時,可以將中國古代神話“女媧造人”的故事作為引子,女媧通過八卦爐構(gòu)建出黃種人、白種人、黑種人,其中各個人種是具體產(chǎn)品,而八卦爐是生產(chǎn)產(chǎn)品的工廠,然后讓學生為“女媧造人”這樣的場景構(gòu)建類圖并給出實現(xiàn)代碼,在這樣的情境下學生的參與積極性會比較高,對設計模式的理解也會更深入,甚至有的學生用“終身難忘”這樣的詞匯來形容這種案例。
2.5 教學評價
對教學效果的評價分為兩類:對學生學習效果的考核和教師教學活動的評價。
首先,我們談一談對學生的考核,課程考核是教學過程中一個十分重要的環(huán)節(jié),是檢驗教學效果、保證教學質(zhì)量的重要手段,其目的在于幫助和督促學生系統(tǒng)地復習和鞏固所學知識和技能,檢驗其理解程度和靈活運用的能力,調(diào)動學生學習的主動性和積極性,培養(yǎng)學生的創(chuàng)新思維。但以往的考核方式過于單一,只是以實驗報告為依據(jù)給學生打分,這種方式過于注重最后的結(jié)果,而忽略學生在實踐過程中的參與程度,因此,部分學生在整個實踐過程中碌碌無為,只是在最后草草完成一份實驗報告。為了改善這種狀況,我們除了將實驗報告作為考核依據(jù)外,還引入成員互評、教師評價、企業(yè)導師意見等方式(如表2所示)。成員互評,是由學生根據(jù)組內(nèi)其他成員在共同完成實踐任務時所表現(xiàn)出的作用而給出的評價;教師評價是教師根據(jù)學生在實踐過程中的出勤率、解決問題的能力等方面給出的評價;企業(yè)導師意見是企業(yè)導師根據(jù)學生融入企業(yè)開發(fā)的速度、給企業(yè)創(chuàng)造的價值等方面給出的評價。通過這幾種考核方式有機結(jié)合,得到學生實踐的總評價。比如企業(yè)實踐的最終評價構(gòu)成如下:成員互評20%,實驗報告及作品40%,教師評價10%,企業(yè)導師意見30%。
其次,對教師教學活動評價的主體為學生。經(jīng)過兩年的“軟件體系結(jié)構(gòu)”實踐教學改革,對07級和08級學生的問卷調(diào)查顯示學生在學習興趣、對課程的理解程度等方面都有了較大進步,課程的平均成績也有較大提升。調(diào)查結(jié)果如表3所示。
表3 學生調(diào)查結(jié)果統(tǒng)計表
3 結(jié)語
能力本位課程以職業(yè)能力