楊成,戴歆,陳惠敏
(武漢商學院,湖北武漢430056)
在線教學與傳統的實訓教學類項目相比較,前者的優勢是面向技術原理及應用的單向講授型課程,教師的主導性更突出,不足之處是教師推薦教學進度難度高,學生的參與度低[1],實訓教學開展的過程中缺少對于學生實訓過程的跟進和成果導向的考核。針對這樣的現狀,教研室進行過多次實訓改革嘗試,引入了部分合作企業參與到學期的實訓教學中,由于企業本身的業務背景和工作模式各不相同,導致學生實訓的結果無法達成統一的評價標準,實訓的質量和過程也無法得到保障。
本次軟件工程專業綜合實訓通過仿真教學,使學生充分認識軟件工程專業對行業人員的思想、素質及能力要求。促進學生充分了解軟件工程三要素方法、工具及過程,增強學生的專業認同感。按照成果導向的教育理念通過教學過程讓學生可以在未來進入行業后能夠具備以下幾種能力:1)理解并掌握軟件工程項目管理的整體框架;2)能夠在多學科背景下主動與其他成員溝通、合作、開展工作;3)能夠按照軟件工程領域相關的技術標準進行工程實踐;4)能夠使用恰當的工具和技術對軟件體系架構和設計模式進行選擇,完成軟件設計和實現,并理解選擇的局限性;以上的能力目標為未來學生進入行業,成為崗位技術骨干提供了支撐[2]。
軟件工程專業綜合實訓方案是以工程方法為綱,項目驅動為軸,采用線上線下混合教學模式,依據學生的實踐反思及工作成果,對照工作崗位的職能要求,進行個性化評價。通過逆向式的教學設計,讓學生以小組成員身份參與到項目實施過程中,學生可以在整個教學的過程中體會到一個系統從規劃設計到實現,最終交付驗收的全過程。此模式給學生提供了發掘實踐問題的空間,同時保留了教師在教學過程中的引領作用。考慮到項目本身的復雜程度,讓學生按照自身的興趣選擇不同的工作角色進行相關內容的學習。這樣保證了學生在實踐完成后有自己獨立的實踐獲得感[3]。項目在實施推薦過程中,引入工程化的實踐標準,讓學生有一定的項目進度和質量控制意識。具體教學思路設計如圖1所示。

圖1 教學思路設計
專業綜合實訓項目的設置充分考慮了項目本身需具有復雜性、挑戰性的特征,同時又兼顧不同類型學生個性化能力提升的需求,需要“以學生的發展為中心”來選擇實訓的項目。在完成實訓教學過程的基礎上,貫穿軟件工程專業的標準化的意識。基于這些教學目標,選擇銀行自動取款業務系統作為教學的貫穿項目,學生以小組作為學習單元來進行項目貫穿式學習,在小組中提供給學生ABCD(A:項目進度管理、B:系統研發、C:數據庫研發、D:項目質量測試)四種不同的工作讓學生進行選擇,每一個崗位都與行業中相關的崗位能力目標對應,見表1所示。

表1 實訓項目任務列表
本次綜合實訓教學改革是為了構建學生軟件工程專業的工程化標準工作模式,按照職責劃分明確自己選擇崗位所需技術及基本理論素養。能夠站在總體項目視角下來進行合作式學習。軟件工程綜合實訓安排48學時(理論:20學時,實踐:28學時)進行為期兩周的實訓教學,經過多次的凝練,按照四個基本知識范疇將教學內容拆分為四個不同的教學單元,分別安排三位不同技術背景和經驗的教師和一位企業級講師分別組織相關的教學內容,在教學開展前準備好與全部授課內容相關的電子資料。具體的教學單元劃分方法如表2所示:

表2 教學單元劃分方法
本次綜合實訓教學模式開始時,教學模式調整為“在線云博平臺+線上授課+騰訊課堂+學習小組群”等多種組織形式相結合的方法[4],面向2018 級軟件工程專業180 名學生開展教學工作。教學團隊在開課前將實踐環節的內容提前錄制好相關的教學視頻以及項目相關文檔上傳云播平臺,并向學生開發平臺訪問的外網權限。考慮到學生學習的便捷性,錄制視頻時將錄屏以20 分鐘為單位進行切割,方便學生隨時掌握自己的學習進度。學生可以提前下載相關資料,并按照各自崗位劃分進行相關內容的學習,遇到個性化問題可以在QQ群中進行提問。課程組教師會針對項目中比較復雜的實踐和理論問題單獨給學生通過騰訊課堂進行點播式教學和組織學生進行在線研討,并保留相關的課程錄屏供學生后期進行反復學習。
項目驗收階段,教學小組根據學生具體的硬件條件,選擇錄頻或在線視頻的方式進行項目研討和總結反思,在研討中以小組為單位分別進行個人工作匯報和問題總結,教學小組根據小組成員的具體工作匯報和提交材料進行成果評價,評價維度包括崗位角色工作評價、完成進度評價、項目完成度評價、實驗實訓報告評價分表對應前文中綜合實訓教學設計目標的4 項能力指標。具體的數據如表3實訓考核方案所示。

表3 實訓考核方案
此案例采用校園隨處可見的穿墻式多功能ATM取款機應用為場景,采用C/S(Client/Server) 架構的思想進行系統設計。客戶端通過Java Swing 構建取款機應用功能界面,服務端根據客戶端UI 界面所設計的功能組件提供后臺服務,整個服務端可劃分為采用Java開發提供存、取、轉賬服務的業務子系統,采用基于TCP/IP 協議、Socket 套接字技術來實現的C/S 通信子系統,采用數據庫SQL技術來實現存款存儲統計及利息計算的賬戶管理子系統及應用JasperReport實現的賬單子系統。整個案例系統通過MVC 設計模式實現,并包含業務、通信、存儲、計算、輔助功能5個子模塊,初步具備了復雜軟件系統的特征,部分模塊界面如圖2、圖3、圖4所示。

圖2 ATM系統主界面

圖3 轉賬功能模塊截圖

圖4 憑條打印模塊
貫穿案例采用的是C/S 的架構風格,學生也可以采用C/S架構的其他技術方案實現系統的前后端技術,教學設計案例給學生技術方案選擇方面提供了一定的自由空間。項目的服務端采用多線程和網絡套接字通信技術實現客戶端服務端數據傳輸,學生只需要完成技術的通信封裝即可;但為了讓學生對面向對象程序設計課程中的設計模式理論提供應用場景,前后端通信模塊采用策略模式對程序結構進行優化,這一設計給后續課程深入技術原理分析提供了實踐基礎。后端數據模型層使用JDBC 封裝數據庫連接的工具類,學生需要使用數據的高級編程技術,例如存儲過程、游標和觸發器等技術完成銀行系統中余額計算功能。這些實踐內容旨在通過此案例初步構建學生復雜軟件系統的分析能力;此次教學案例設計不僅只關注學生專業知識的能力,按照分層分類的教學思維,在完成功能設計和實現的基礎之上,實踐環節中引入了模塊測試的內容,要求學生針對具體的模塊,設計相應合理的測試用例并完成模塊的測試,此部分是為了提高學生的軟件質量意識。除了關注于案例本身的復雜性外,對軟件項目的工程實施規范方面也做了相應的設計,除了完成功能業務的研發和測試工作外,還需要按照軟件工程領域中的RUP開發方法來撰寫項目文檔,整個教學案例以復雜工程案例為主線,貫穿學生的工程基礎知識、專業知識、實踐知識、工程設計知識等多個環節的能力。
根據學習反饋成果分析,新型教學模式的實施過程中,學生參與度較高,對于圍繞關鍵問題構建復雜系統模型以及局部問題定位分析有了一定的掌握。成果評價上只要求學生完成單系統的總體設計和編碼,部分小組可以獨立完成客戶端工程項目封裝,同時小組的項目計劃和過程管理比較規范,小組的實訓工作均能夠按照工程規范來進行推進,這些反饋的教學成果都超出了教學團隊的預期。綜合實訓教學結束后,180位同學以小組為單位共45 個小組均提交了各自的項目實訓報告、實訓源碼、講解視頻,86.67%的學生基本完成教學預定目標。分層分類教學法獲得了大部分學生的認可,學生對于未來的職業規劃和能力定位有了更加清晰的認知。學生通過參與具有一定復雜度和規模的系統,建立了自主實踐的信心,學生的主動學習積極性有了較大的提升,本次教學的案例選擇、技術方案、教學模式、考核指標都更加注重學生的實踐獲得感,充分體現了“以學生為中心”的教學理念,學生完成了從實踐初期的消極對待,到后面主動參與態度的轉變。
分層分類教學方法讓學生對自己所參與的工作都有自己的收獲和認知上的提升。大多數的學生非常認可本次綜合實訓教學改革的方案,既提升了技術應用能力,又提升了軟件工程方法認識水平。總之,通過實訓,學生體驗了具體的行業工作模式,鍛煉了學生復雜軟件系統的分析、設計、開發能力,加強了學生的專業認同感,為實現分層分類專業教學實踐,提出了一種有一定成效的教學方案[5]。同時,本次教學設計方案也得到了教研室其他課程組教師的認可,后續其他課程實訓中相關課程組教師將嘗試采用這套教學模式來推進相關課程的實訓教學模式改革。
從本次實訓教學實施結果來看,基本達到教學預期效果,但仍然出現了部分小組在實踐后期參與度不高的問題;在后續的教學工作中將針對這一現象進行教學策略的調整,主要通過以下幾種方法:1)增加考核的頻次,實訓教學推進過程中會分別對于各個小組的狀態進行隨機抽查,對于小組出現的問題進行針對性地處理;2)考慮到師生之間的溝通效率問題,設置一定的鼓勵機制,允許不同小組之間進行實踐協助,對于參與協助的小組給予一定的獎勵;3)對學生隨機選擇組員的情形進行一定的調整,盡量保證小組之間的均衡。
本次軟件工程綜合實訓方案設計根據學生專業能力的畫像實施分層分類教學法,有效解決了以往實訓教學中教學團隊或者企業過于注重程序設計和實訓文檔的問題。在成果考核中,首次引入企業教師角色加入考核團隊中,解決以往考核維度過于單一的問題。在新型冠狀病毒肺炎疫情期間,由于教學設備受限,本次的教學改革方案為解決這一問題提供了參考。同時為后續應用型本科軟件工程專業進行OBE 理念教學模式持續改進提供了支撐,讓學生在未來可以具備系統思維、創新思維和獨立解決復雜工程問題的能力[6]。