摘 要:針對軟件體系結構課程的特點及教學中存在的問題,提出了以項目設計為導向、以工程能力培養為目標的教學模式。實踐證明,該模式有利于調動學生的學習積極性,能幫助學生在有限的學時內較快地掌握該門課程,有利于培養學生的工程實踐能力和團隊協作能力。
關鍵詞:項目導向;軟件體系結構;合作學習;工程實踐能力
中圖分類號:G432
文獻標識碼:A
一、傳統教學方法存在的問題
軟件體系結構(也稱軟件架構)是從軟件設計抽象出來的一門學科,目前已經成為軟件工程的一個重要研究領域,在現代軟件行業中處于重要地位。作為一門在軟件工程知識體系中提綱挈領的核心課程,軟件體系結構課程教學質量對軟件工程專業學科學生的培養質量起著極其重要的作用。目前,我國各高校的計算機應用、軟件工程等專業的本科生,以及計算機軟件與理論的研究生教學中已普遍開設了軟件體系結構課程,為軟件架構師的培養提供了條件。然而,由于課程本身存在著覆蓋面廣泛、抽象程度高等特點,對剛剛接觸軟件工程的學生來說,傳統的教學方法不可避免地存在一些問題。
1.課程教材缺陷,不利于學生自主學習
作為一門新興學科,軟件體系結構本身依然處于不斷發展之中,同時由于學科本身的特點,其所牽涉的知識面比較廣泛,難以找到一本適合各個層面的教材,現有教材往往存在可用性差、更新緩慢、信息量不足等問題,不能成為學生自主學習、進行探索和發現的認知工具。
2.傳統教學方式簡單,學生學習主動性不高
課堂教學以教師的理論教學為主,主要講授軟件體系結構的基本概念和基本原理,以及軟件體系結構的動態性和適應性的理念,簡單分析軟件體系結構原理的具體應用,只起到軟件體系結構導論的作用,缺乏互動性。由于該課程的抽象程度高,理論性較強且涵蓋面廣泛,對剛剛接觸軟件工程的學生來說,在理解各種概念方面存在一定的難度,學生普遍覺得太抽象,難以跟實際的東西產生聯系,因此傳統的教學方法不能產生良好的教學效果。
二、基于項目驅動模式下的軟件體系結構課程教學改革
1.軟件體系結構的課程特點
(1)軟件體系結構是根據人們的軟件設計經驗總結出來的理論與實踐相結合的課程,其設計原則、技術、方法較為抽象,主題是針對復雜軟件系統的高層結構,組織元素之間的相互關系的描述,以及圍繞這種描述開展的各項活動(如設計、評估、實現、管理、測試等),其關注的是系統大粒度(宏觀)的總體結構(例如分層、子系統的劃分等)。軟件體系結構的設計原則、技術、方法通常是以前軟件系統設計過程中的經驗總結,其目的是為了在給定的時間、經費等約束條件下快速而高效地設計出高質量的軟件,它們位于所有具體項目之上,針對全體軟件項目,因而具有一定的抽象性。
(2)從軟件設計的角度而言,并不存在完美的體系結構,只有滿足某個特定項目需求的體系結構。在實際的軟件系統設計過程中,軟件體系結構的設計要考慮功能需求、質量需求及其他的商業因素,并且一些質量屬性之間經常是相互沖突的,必須對各種要素進行折中與權衡,而具體怎樣權衡和折中,則必須結合具體項目,根據項目的實際情況去把握,并沒有標準的模式。
2.基于項目驅動模式下的軟件體系結構課程教學改革思路
從以上所述軟件體系結構課程特點,我們可以看到,作為一門實踐與抽象并重的學科,在學生缺乏項目經驗、實踐安排不足的現實下,要想加深學生對軟件體系結構分析與設計的方法和過程的感性認識,糾正學生對軟件體系結構的錯誤和模糊認識,從而進一步深入理解軟件體系結構的理論和方法,傳統的教學模式已經很難達到目的。而項目驅動教學模式可以讓學生更牢固地掌握所學的知識點;從項目中分析各類軟件系統架構設計風格的優缺點,可以讓學生嘗試提出相應的改進方案;將軟件體系結構設計教學與實際軟件項目相結合,通過實踐練習加強學生對軟件體系結構概念和設計思想的理解,使他們有身臨其境的感覺,從而獲得滿意的教學效果。具體來說,可以歸納為以下幾點:
(1)理論與實踐相結合。以項目—原理—解析為主線,以項目為前導,引導學生參與與思考,通過參與實際項目的探討激發他們的好奇心和求知欲,充分調動學生學習的積極性、主動性,著力培養學生的個性和創造力。同時教師將相關原理和概念在項目分析時自然帶出,通過理論與實際項目的結合,提高學生對知識點的理解,彌補傳統教學中的不足,從而達到理論知識和實踐能力同步提高的教學目的。
(2)分組互學互助,培養團隊協作與溝通能力。現代軟件開發已經不是早期的個人開發模式,因此,培養學生的團隊合作與協調能力是非常必要的。在實際教學過程中,我們將所有學生分為若干組,每組由一名組長和若干名組員構成,無論是課堂的小組討論,還是項目實訓,均以小組為單位完成。在組長的統籌安排下,組員之間分工協作,互學互助。教師給定一些軟件體系結構的設計風格或模式,每個組選擇一個題目要求以不同的體系結構風格或模式去完成,并在項目開發的不同階段組織專門的研討會,以組為單位讓學生講述他搜集的資料和相關的實例,重點講述他對實例的理解和看法,以培養學生發現問題、分析問題、解決問題的能力。
(3)建立完善的資源庫、相應的習題庫和全真項目庫。必要的實戰演練是加深學生對軟件體系結構分析與設計方法和過程的感性認識,糾正學生對軟件體系結構的錯誤和模糊認識,從而進一步深入理解軟件體系結構的理論和方法的必要輔助手段,而這些必須以完善的資源項目庫為基礎。同時也要建立相應的教學課程網站,包括教案習題庫、試題庫和實際項目等,將最新的教學資源研究成果和進展展示給學生,以利于學生自主學習。通過這種“教師引導學生,學生自主合作學習”的方式,能充分調動學生學習的積極性、主動性,從而達到滿意的教學效果。
(4)改革舊有考核方式,提高工程能力所占比例。在課程的考核上,降低一般理論考試在總評中所占的比重,注重工程能力的考核。工程能力的考核主要通過貫穿課程始終的實訓項目進行,考核采取項目答辯的形式:在課程結束后,每個小組根據實訓項目的完成情況進行匯報演講,組長首先給出總結報告與系統演示,然后由每個組員對自己在項目中所完成的工作進行講解,教師根據匯報內容提問并由學生作答,最后評定學生成績。另外,每個小組還需提供相應的技術資料,包括軟件需求規格說明書、系統用例圖、軟件體系結構風格選擇與說明、軟件體系結構設計報告、軟件體系結構分析與評估報告、系統構建與實現過程說明、軟件使用說明書、系統源碼、答辯PPT等。通過平衡理論考試與實踐操作的比重來改善傳統教學考核重理論、輕實踐的弊端,從而起到促進學生理論實踐均衡發展的作用。
本文對項目驅動模式下的軟件體系結構課程教學進行了探究。實踐表明,該模式能較好地激發學生的學習熱情,調動學生的學習積極性,幫助學生在有限的學時內較好、較快地掌握該門課程,并對培養和提高學生實際的工程實踐能力和團隊協作能力起到了很好的促進作用。
參考文獻:
[1]張友生.軟件體系結構[M].清華大學出版社,2004.
[2]萬建成,盧雷.軟件體系結構的原理、組成與應用[M].北京:科學出版社,2002.
[3]陳長清.軟件體系結構課程教學探討[J].計算機教育,2008(22):134-135.
編輯 張珍珍