鄭春紅,劉志敏,董海山,陳靜
(青島職業技術學院信息學院,青島 266555)
《軟件工程》是一門理論性和實踐性要求都較強的課程。目前,高職院校《軟件工程》實際教學過程中,普遍存在的教學現狀是:教學內容往往重理論、輕實踐,學生沒有實際項目開發經歷,教師缺乏項目化教學經驗,一味地照本宣科難免讓學生覺得枯燥、難懂、難以接受。如何在《軟件工程》教學中培養學生對這門課程的學習興趣,將理論應用于實踐,是提高教學質量的關鍵所在。本文將項目教學法[1]應用于《軟件工程》的教學過程中,以小型圖書館管理系統的開發為例,將軟件工程的基本理論滲透并貫穿到實際開發過程中,以期為提高《軟件工程》的教學效果提供新方法、新思路。
目前,高職院校的《軟件工程》教學內容并沒有結合高職院校學生的特點及未來的就業方向制定相應的教學目標。教師的任務就是按照課程標準完成教材中基礎內容的教學,教學內容偏理論,缺乏實踐指導,導致學生學習興趣不高,對于相關的理論和方法只能做到字面上的理解,缺乏實際應用的體驗,教學效果不理想。
目前,教師隊伍普遍都是由通過事業單位招聘選拔的應屆畢業生組成。大部分教師缺乏企業工作經驗,更缺乏大型項目開發的經驗。在《軟件工程》的教學過程中,缺乏實際的、雄厚的項目開發經驗去指導學生,只是一味地向學生灌輸書本上的知識,導致教學內容枯燥、無趣,難以讓學生真正理解和掌握軟件工程的思想。
目前,高職院校的《軟件工程》教學方法主要以講授法為主,教學內容按照教材中各章節的順序組織,教學過程中應用的案例較為零散,缺乏聯系。《軟件工程》的教學與該門課程的前導課程之間聯系較少,難以讓學生做到相關知識點的融會貫通。學生對《軟件工程》相關知識點的理解僅限于書本上的內容,缺乏實際項目經驗,難以適應企業的用人需求。
《軟件工程》是一門工程性的綜合學科,內容靈活、覆蓋面廣泛,是理論性與實踐性并重的學科。《軟件工程》的教學應該切合實際,與時俱進。為了能培養出具有工程實踐能力的學生,在傳統講授法的基礎上,采用項目教學法,指導學生運用軟件工程理論去踐行軟件項目的開發,引導學生體會軟件工程的思想,培養學生的工程實踐能力,激發學生學習軟件工程的興趣。
采用項目教學法,項目的選取是至關重要的。在選取項目時,需要考慮以下幾個方面:(1)緊密聯系《軟件工程》的前導課程,利用前導課程學到的程序設計相關知識點,設計軟件工程的實踐項目。這樣可以幫助學生建立課程知識結構的整體框架。(2)要結合高職院校學生特點,選取難度適中、絕大多數學生都能完成的項目。盡量使每個學生都能在實踐中體會軟件工程的思想。(3)選取的項目既能運用到當下主流技術,又能涉及到軟件工程中的主要內容。
目前,考慮到面向對象的軟件開發方法備受青睞,并且高職院校學生在學習軟件工程之前,通過前導課程Java程序設計,已經能夠運用Java面向對象的概念和設計方法、Java界面設計、異常處理和Java JDBC連接數據庫等Java核心技術編寫簡單的項目。因此,選取一個典型的難度適中的項目——小型圖書館管理系統作為軟件工程教學過程中的項目實例,指導學生將軟件工程中的過程、方法、工具應用于項目開發的整個過程中。
《軟件工程》是一門綜合性的學科,強調過程與工具的重要性,同時也強調了人與人的溝通在軟件開發過程中的重要作用。軟件開發的過程是離不開處于各種角色的人員,例如需求人員、設計人員、程序員、測試人員、客戶和項目經理等。只有各方面人員分工合作、有效溝通,才能保證開發出令用戶滿意的產品。
綜上,在項目教學法的基礎上,對學生劃分項目小組,每組由3-5人組成,不同的成員分擔不同的角色,在項目的開發過程中,既能運用到軟件工程相關的理論和方法,又能體驗每種角色所承擔的任務,這樣可以使學生更加深刻地體會軟件工程方法在具體項目中的實際運用,同時也可以增強學生的團隊意識,培養學生相互交流、有效溝通的能力。
教師能否將項目教學法運用的恰到好處,做好教學準備是必不可少的。準備過程主要包含以下兩個方面:
(1)備項目。將項目開發過程與軟件工程相關內容建立連接。
俗話說:“要給學生一杯水,教師要有一桶水”。要想達到良好的教學效果,課前充分的準備是至關重要的。運用項目教學法的前提是,教師要能踐行項目開發的各個環節,并且能將其與《軟件工程》相關內容有機地結合起來,做到在教學過程和指導學生實踐的過程中游刃有余。
(2)備學生。合理劃分小組,充分調動每位學生參與項目的積極性。
“教學的藝術不在于傳授本領,而在于激勵、呼喚”。教學要始終以學生為主體。根據學生的學習狀態、接受能力等特點將學生進行分組,在學生自愿的基礎上,為學生進行組內角色的劃分,發揮每位學生的主觀能動性,充分調動每位學生參與項目的積極性。
高職院校《軟件工程》教學內容主要包括需求分析、軟件設計、編碼實現、軟件測試這四個方面。以小型圖書館管理系統的開發為例,按照《軟件工程》教學內容,分解為需求分析、軟件設計、編碼實現、軟件測試四個階段,每一階段的任務及覆蓋的《軟件工程》相關內容如表1所示。

表1 項目開發過程按照軟件工程主要內容進行分解
《軟件工程》的教學過程中,教師根據學生的特點進行分組,每位學生在組內都要體驗所有角色。角色的劃分可以使每位學生都能積極地參與到項目實訓環節,角色劃分可以幫助學生積累實踐經驗、體會團隊作業的優勢。
在小型圖書館管理系統這一項目中,任務分解后要與具體角色建立連接。本文將對具體的角色劃分以及每種角色需要完成的任務和標準進行概述。
(1)需求分析員角色
需求分析員主要負責分析用戶的功能需求和非功能需求。在扮演這個角色的過程中,學生首先需要扮演需求獲取人員,與普通用戶進行溝通,獲取需求并用文字記錄。然后扮演需求分析人員,運用UML中的用例圖描述獲取到的需求,并記錄到軟件需求規格說明書中。對于小型圖書館管理系統,獲取到的基本功能需求如下:
①用戶管理
對系統中的用戶進行管理,包括新增、刪除、修改、查詢、權限管理,用戶有兩類,圖書管理員、讀者,圖書管理員享有最大的權限,可以全權操作系統,讀者可以登錄查尋個人基本信息、圖書基本信息、借閱記錄,也可以預約圖書。
②圖書管理
新采購圖書的入庫操作,丟失圖書的報廢,圖書修改和查詢操作。
③借閱管理
對讀者的借書和還書行為進行記錄,逾期不還的圖書收取滯納金。
(2)系統設計員角色
系統設計員主要根據需求分析階段的成果,完成系統數據庫、功能模塊、界面的設計工作。該階段完成的任務要記錄到軟件設計說明書中。
①在進行數據庫設計時,首先需要運用E-R模型描述實體與實體之間的聯系,然后根據E-R模型映射為存放到數據庫中具體的關系數據表。以讀者和圖書這兩類實體為例,E-R模型如圖1所示。可以將E-R模型映射成的三個關系模型:讀者表(借書證編號,密碼,姓名,性別,單位,節約權限)、圖書表(圖書編號,書名,作者,出版社,入庫日期,是否預約,是否借閱)、借閱表(圖書編號,借書證編號,借閱時間,應還時間)。

圖1
②功能模塊的設計主要是依據需求分析階段分析到的功能需求,設計出系統功能結構圖。本文用到的小型圖書館管理系統的功能結構圖如圖2所示。

圖2
③界面設計的質量,將直接影響用戶對軟件的評價。學生在設計界面時,要注意保持界面簡潔、美觀、風格一致、交互友好等問題[4]。
(3)程序員角色
程序員負責根據軟件設計說明書,運用Java程序設計語言,利用Eclipse集成開發環境、微軟SQL Server 2008數據庫服務器完成系統功能的實現。程序員的工作可以安排到課下完成。編程階段不僅可以讓學生掌握軟件工程中的編碼規范等內容,還可以幫助學生練習鞏固前導課程中所學到的知識,幫助學生建立整體的、系統的知識框架。
(4)測試員角色
測試人員負責對完成的代碼或功能進行測試,目的是為了盡可能多地發現系統中的錯誤。在每個功能模塊實現之后,按照白盒測試為主、黑盒測試為輔的原則,對該模塊進行測試。沒有問題,再按照一定的集成策略進行集成后的測試。
測試需要依據具體的方法設計測試用例,并記錄到測試報告中。
《軟件工程》的教學過程中,采用講授和項目教學相結合的方法,利用章節實驗使每個學生掌握基本知識點,然后隨著項目的推進完成項目階段性任務,并進行階段性展示、交流、評價。每次階段性展示需要小組每位成員對自己所完成的任務進行總結。階段性交流后選出優秀的小組進行成果共享,以便于其他各組及時總結、完善每個階段的成果。
本文提出的項目教學法應用于《軟件工程》的實際教學過程中并取得良好的教學效果。以下從三個方面對項目教學法取得的顯著效果進行總結:
《軟件工程》的課堂教學不再是枯燥無味的理論灌輸,而是有實際項目做驅動,理論聯系實踐,極大提高了學生學習的興趣,課堂氣氛活躍。
將項目的各個階段與軟件工程相關內容緊密聯系,讓學生在具體項目開發過程中體驗《軟件工程》這門課程的重要性。學生通過項目實訓,理解軟件開發不單單是編寫代碼,需求分析、軟件設計、軟件測試、軟件維護和管理等各個階段都是非常重要的。有效提高了學生的工程意識,培養學生分析問題、解決問題、與人溝通、團結協作的能力。
項目教學法讓教師從枯燥、空乏的理論講授中解脫出來,以實際項目開發為例,課堂教學有理有據,活躍了課堂氣氛,提高了學生的學習興趣,增強了教師的教學自信,提高了教師的業務水平。
在《軟件工程》的教學過程中運用項目教學法,在一定程度上提高了學生學習的主動性和積極性,取得了較好的教學效果。在今后的教學中,將進一步探索符合高職學生特點的《軟件工程》教學方法,努力培養出符合企業用人需求的具有工程思想的綜合型人才。