朱磊 徐傳運 張楊
摘要:針對系統分析與設計課程的特點和當前存在的主要問題,根據長期的教學實踐基礎,提出案例引導教學法和五步實踐教學法,以案例作為課程的核心,采用“把理論融入案例、從案例中抽取理論”的雙向思維方式,通過“從實踐中來、到實踐去”的雙向過程,解決系統分析與設計課程在教學過程中面臨的難題。
關鍵詞:系統分析與設計;雙向驅動;案例教學法;實踐能力
0.引言
系統分析與設計課程是軟件工程的專業骨干課程,該課程面向已掌握計算機科學基礎知識、軟件開發基本技術的高年級學生,因此該課程通常開設在大三下學期或大四上學期。該課程是在學生已經具備一定程序設計能力的基礎上,培養學生的軟件系統分析與設計能力,進一步培養學生的軟件開發綜合能力,同時培養比代碼編寫人員更高層次的系統分析與系統設計人員的專業核心課程。該課程在培養學生軟件工程應用能力方面有著不可取代的地位。
系統分析與設計是一門承上啟下的課程,在程序設計基礎類課程、計算機科學基礎類課程、程序設計技術類課程的基礎上,講授軟件系統分析與設計的基礎理論、方法、技術、工具,為軟件工程開發高級類課程奠定基礎。該課程的主要先修專業課程有程序設計基礎、面向對象程序設計(Java)、數據結構、計算機網絡、操作系統原理及應用、程序設計方法學、數據庫原理及應用、Web程序設計基礎、Windows程序設計基礎、Java EE架構與程序設計/.Net架構與程序設計、高級C#開發技術/移動開發技術等。后續或同步開設的課程有軟件質量保證與測試、設計模式、軟件體系結構、軟件項目管理與團隊協作、Web軟件應用案例分析等。
1.課程特點與問題
系統分析與設計是一門理論性與實踐性都比較強的課程,同時又是一門抽象性較高的課程,學生在理解理論、將理論運用到實踐、解決具體問題方面感到困難。課程的主要特點有以下幾個方面。
(1)實踐性較強。該課程主要培養軟件工程專業(或相關專業)學生的系統分析與設計能力,要求學生在學習完該課程后,具備對中小型系統進行需求收集、分析、規約、建模、系統架構設計、數據庫設計和詳細設計的能力。
(2)理論性較高。雖然系統分析與設計課程實踐性較強,但是實踐必須在理論的指導下進行,要求學生系統掌握軟件系統需求、設計的相關概念以及規律、原則、模式等知識。
(3)理論不成熟。軟件工程經過十多年的高速發展,雖然在理論知識方面有一定的積累,但總體來說,軟件工程的理論知識仍然不系統、不完備,其正確性、有效性仍然需要在實踐中驗證。在理論不成熟的領域,經驗積累就顯得尤其重要,經驗知識傳授的最佳方式應該是“師帶徒”,但當前大學教育主要采用課堂授課方式,這是培養學生系統分析與設計能力面臨的難題。
(4)抽象性較強。系統分析與設計完全是基于概念基礎上的邏輯模型的建立與優化,這些邏輯模型的建立過程是從無到有的抽象創造過程,是完全在邏輯空間中的演化。軟件系統邏輯模型的復雜度往往較高,這要求學生必須具有較強的抽象思維能力,而抽象思維能力培養又是一個長期且具有一定難度的過程。
(5)綜合能力培養。系統分析與設計要求學生具備較高的綜合能力,既包括理論知識、方法、技術、工具等工科方面的知識和技能,又包括交流、溝通、演講、辯論、寫作、創新等文科方面的能力。軟件工程專業的學生主要以理科生為主,文科方面的能力相對較差,而這些能力對需求的收集、確認、規約以及設計方案的講解、交流、說服顯得特別重要。這一特點常常被忽略,一些教師經常誤認為學生學會面向對象、面向過程的方法以及UML、數據流圖、ER圖,就學會了系統分析與設計。
在系統分析與設計課程的教學過程中經常出現以下問題:理論與實踐脫節,理論不能指導實踐,實踐不能驗證和提升理論;學生不能真正理解抽象的理論;學生不知道如何運用理論以及在何種場景中運用理論;學生掌握了工具的使用,但不知道怎么用工具解決系統分析與設計問題;學生學完課程后,仍然不能獨立地完成一個軟件系統的分析與設計。
2.案例引導教學法
系統分析與設計是一門理論性和實踐性都較強的課程,以致理論知識的理解與實際應用之間存在鴻溝,經常出現學生已經掌握理論原理,但不能在合適的場景中靈活運用相關知識解決分析與設計問題的狀況。為了解決這個問題,該課程采用案例引導教學法,即在理論教學過程中不是直接講授理論知識,而是先給出實際的系統分析與設計案例,在案例中植入理論知識能夠解決的問題,在講解案例時提出問題,針對問題引出相關知識,然后再對理論知識進行講解。案例引導教學法能夠讓學生一開始就知道理論知識適用于何種場景以及解決何種問題,從而提高理論知識的運用能力。
案例引導教學法由“案例引導-理論講解-案例剖析-項目實踐-項目評講”五步構成。案例引導教學法的第一步即在進行理論講解之前先講解案例,在案例中植入理論知識能夠解決的問題,講解案例時明確提出這些問題,然后針對這些問題引出相關的理論知識;第二步就是正式講解理論,系統講解理論中的概念、方法、原理、規則、約束,讓學生在理解理論知識的基礎上進行第三步——案例剖析;案例剖析需要學生結合理論深入地剖析案例,講解如何利用理論知識解決案例中的問題,并且把理論知識能解決的問題進行泛化,即講解理論知識能夠解決哪些問題、如何解決這些問題以及解決方法的優缺點等。在第三步的基礎上,學生需要參與項目實踐,真正運用理論知識解決系統分析與設計方面的實際問題,最后由教師對學生的實踐過程和結果進行評價(關于實踐教學的方法參考下一節的“五步實踐教學法”)。
案例引導教學法實際上堅持的是“理論指導實踐、實踐驗證理論”的教學原則以及“思維培養、知識傳授、技術訓練、工具指導、能力提升”相結合的教學理念。采用案例引導教學法給學生授課的教師必須是雙師型教師,有軟件項目開發背景,親自參與過軟件項目開發(該課程要求主講教師至少全程主持或參與過3個以上的軟件開發項目)。在教學過程中,要求教師在講授時將理論知識融入真實的案例,避免空洞的理論知識講解,不僅要講透理論知識的原理,還要講解理論知識的使用場景、使用方法以及實踐中可能存在的問題和解決思路。
3.五步實踐教學法
系統分析與設計實踐教學的特點是驗證性實驗較少,主要是分析性、設計性、綜合性的實驗;目標是訓練學生使用軟件工程理論、方法、技術、工具,分析和解決軟件系統開發過程中出現問題的能力,因此實驗過程相比實驗結果更重要。該課程的實踐教學分為兩部分:與課程同步的分階段項目實驗和獨立的課程設計。與課程同步的分階段項目實驗主要分為4類實驗:軟件系統業務背景與需求理解、系統業務建模、系統需求分析與需求表示、系統設計與設計規約。這4類實驗基于同一個領域背景,針對開發同一個軟件系統過程中的各個子問題進行能力訓練。該課程設計的目的是系統地訓練學生綜合運用課程各個知識點進行軟件系統需求分析和系統設計,進一步提高運用知識解決問題的能力。
學生在完成實驗內容過程中經常出現的問題是無從下手,不知道系統分析應該從何開始,過程如何展開,結果如何表示,設計方案如何形成、選擇和評價。我們針對此問題提出五步實踐教學法。在五步實踐教學法中,每一類實驗的教學過程包括教師講解實驗要求、教師示范、學生實驗、教師考核和評講。系統分析與設計課程特別強調教師在實驗過程中的示范和指導作用:在實驗開始之前,教師先以實驗的部分內容作為示例,向學生示范實驗的具體過程和主要方法;在實驗過程中,教師對有問題的學生進行單獨指導,如果存在共性問題,就進行集中講解。
實踐教學按照項目組的方式進行管理,將4~6名學生分為一組并設立小組長,學生以某種實際角色參與到項目中,小組長(作為項目經理)直接向教師匯報項目進展(包括組員的完成情況),教師通過隨機抽取組員詢問的方式,考查小組長匯報情況的真實性。教師在項目進行過程中,根據學生的完成情況,對一些共性問題進行講解。實踐成果的考核主要分為3個部分:文檔質量、答辯情況、過程參與積極性(成績主要由小組長分級評價給出)。
4.結語
采用案例引導教學法和五步實踐教學法后,教學質量明顯提高,課堂教學氣氛更加活躍,學生能非常積極地參與到案例分析過程中,完成作業的積極性以及作業質量有所提高。由于有了教師的具體指導和參考案例,學生更愿意完成并知道如何完成系統分析與設計作業,該專業畢業設計論文質量的總體提高可以反映出學生的系統分析與設計能力明顯提高。endprint