郭詠梅
(長治學院 計算機系,山西 長治 046011)
軟件工程課程是計算機類相關專業的必修課程,它具有較強的綜合性、實踐性和工程性特點,對培養學生基礎的軟件開發能力和工程實踐能力起著重要的作用[1]。課程的教學目標不僅使學生掌握軟件開發的基本步驟和方法,還要求學生具備必要的技術與工程實踐能力,從而能在走出校門后,盡快勝任工作,滿足企業的用人需求。但是,目前的教學模式普遍重理論輕實踐,對學生工程實踐能力和規范開發軟件能力缺乏訓練,學生的工程實踐能力薄弱[2]。針對這些問題,筆者分析課程特點和教學目標后,在教學過程中引入實踐性教學案例,通過對實際案例的分析、解剖、討論和驗證,讓學生真正體會開發軟件的分析、設計、編碼、測試過程,將課程的理論知識點與案例的開發過程緊密結合。重視訓練學生規范的操作能力,激發學生的學習興趣,提升學生解決現實問題的動手能力和工程實踐能力。
軟件工程是一門理論知識與工程實踐并重的課程,涉及內容廣泛,從理論知識方面講,包括軟件開發的理論、原理、方法和技術;從工程實踐方面講,包括軟件開發、維護和管理等活動。針對新建本科院校重點培養應用型人才的目標定位,軟件工程課程主要教學內容有:基于軟件生命周期的軟件工程的基本概念和基本原理,基于工程實踐的系統化、規范化的結構化開發方法和面向對象開發方法。對于應用型人才的培養,不僅要求學生理解軟件開發方法和過程,而且要求學生應用方法和技術對實際問題進行分析、設計、編碼和測試。課程教學目標是使學生掌握需求分析、系統設計及編碼測試與維護過程的方法和技術,并用規范的、系統的方法與技術實現中、小規模項目的開發與管理,在實踐中逐漸訓練學生分析問題、建立模型、設計與實現、團隊合作溝通、創新能力等,為將來從事軟件方面的工作打下扎實的基礎。
案例教學是提高學生動手能力和工程實踐能力的重要途徑[3]。在教學過程中,教師要精心選擇和設計適合學生理解的、規模適中的教學案例。在教師的啟發下,引導學生對案例進行解剖,讓學生明確案例的功能和結構。提出與需求分析、設計、編碼和測試相關的一系列問題,引導學生對這些問題進行討論,通過對問題的討論和講解,讓學生理解案例開發的方法、步驟和工程規范,并動手進行驗證。最后,結合案例對課程知識進行總結,將課程知識與案例緊密結合,強化知識的應用,讓學生在課程的實驗環節進行實踐,逐步提升學生的工程實踐能力。
案例的選擇直接影響教學過程的實施和教學效果的好壞[4],教師要精心備課,選擇適合學生理解的、能夠體現軟件工程開發方法的教學案例。作為新建本科院校,我校計算機系設有計算機科學與技術專業和網絡工程專業。軟件工程課程開在第六學期,先修課程有C語言程序設計、數據結構、數據庫原理、Java語言程序設計等主要課程。根據我校學生具體情況,筆者選擇學生信息管理系統作為教學案例,一是學生對學生信息管理系統的使用比較了解,二是學生信息管理系統具有一定的規模,能夠應用軟件工程方法進行模塊劃分,便于學生分工合作。
軟件工程是研究軟件開發和軟件管理的一門工程學科,它主要包括技術和管理兩方面的內容。軟件工程課程重點講授軟件技術方面的知識,主要包括結構化方法和面向對象方法兩大內容,對軟件項目管理的內容做概述性的講解。下面以結構化方法為主,以學生信息管理系統的開發為任務,探討如何通過案例教學提高學生的工程實踐能力。
結構化方法的主要知識點、案例教學的主要內容與工程能力訓練的關聯如表1所示。

表1 結構化方法主要知識點、案例教學與能力訓練
在整個教學過程中,筆者基于雙主模式,引導學生對案例進行分析、討論、驗證、總結[5]。教師首先要精心選擇設計教學案例,上課之前讓學生針對問題進行分析和討論,課堂上將課程的理論知識與案例的實際應用密切結合,通過對問題的討論和講解,明確各個階段的任務。通過對案例的解剖和驗證,領悟軟件開發方法、技術和規范。掌握知識點在實際問題中的應用,并能夠舉一反三。
例如在學生信息管理系統的需求分析階段,引導學生討論以下問題:用戶有哪幾類,各類用戶使用系統要完成哪些操作,系統要實現哪些功能,系統處理的數據有哪些等等。課堂上啟發學生對問題進行分析和討論,讓學生分別以所有者和開發者的身份對系統進行需求分析,確定用戶類別:學生、教師和管理員。學生能夠查詢課程信息和成績信息;教師能夠錄入成績、查詢課程和學生信息;管理員權限最大,能夠對各類信息進行操作。進一步確定系統要完成的功能:學生信息管理、課程信息管理、教師信息管理和成績信息管理。確定系統要處理的主要數據;學生信息、課程信息、教師信息和成績信息。最后引導學生建立需求分析的三個模型:功能模型、數據模型和行為模型,指導學生用圖形工具描述三個模型,用分層的數據流圖描述功能模型,用E-R圖描述數據模型,用狀態轉換圖描述行為模型。在教學過程中,教師指導學生解剖和分解案例,讓學生動手操作案例,驗證案例對應模塊是否實現了相應功能。在案例分析、討論、解剖和操作過程中,講解軟件開發中需求分析的任務、方法、工具和過程,將課程的知識點融入案例的開發過程中。最后結合案例對需求分析階段的知識點進行總結,讓學生掌握需求獲取的方法,需求分析的方法和過程。需求分析要建立的模型以及建模工具的使用。通過對案例的分析和討論,進一步提高學生分析問題能力和建立模型能力。
學生動手能力和工程實踐能力的培養不可能通過一個案例完成,需要通過一系列實踐環節有意識、有計劃、持續地訓練。在軟件工程的實驗環節和課程設計過程中,還要逐步增加新的案例,擴展案例的深度和廣度,增加軟件工程的新內容和新技術,在不斷動手實踐過程中,提高學生解決實際問題的能力和工程實踐能力。