



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