孫 耀,陳圣國,王智鋼,張海濤,張 燕
(1.金陵科技學院軟件工程學院, 江蘇 南京 211169;2.金陵科技學院, 江蘇 南京 211169)
隨著信息技術(shù)應用領域的不斷拓展,軟件產(chǎn)品規(guī)模逐漸擴大,復雜程度也逐步提高,這使具有搭建系統(tǒng)核心構(gòu)架、澄清技術(shù)細節(jié)、掃清主要難點能力的系統(tǒng)架構(gòu)師成為緊缺高端人才。因此,培養(yǎng)學生在復雜軟件系統(tǒng)開發(fā)過程中具備選擇合理的設計模式和軟件體系結(jié)構(gòu)以簡化系統(tǒng)復雜度、提高軟件產(chǎn)品質(zhì)量的能力,成為各高校開設“軟件體系結(jié)構(gòu)”課程的重要教學目標。傳統(tǒng)的“軟件體系結(jié)構(gòu)”課程內(nèi)容側(cè)重對軟件體系結(jié)構(gòu)基本概念、理論以及軟件體系結(jié)構(gòu)適用性的講解,而學生需要記憶大量枯燥、易遺忘、易混淆的理論概念。同時,這種灌輸式教學方式不但影響教學目標的實現(xiàn),而且無法激發(fā)學生的好奇心和求知欲,不利于自主學習和終身學習意識的培養(yǎng)。因此,為更好地實現(xiàn)“軟件體系結(jié)構(gòu)”課程的教學目標,培養(yǎng)具備利用所學基本理論識別、表達、分析復雜軟件工程問題能力的專業(yè)人才,本文以南京市多個重點項目為依托,提出基于真實項目案例的“軟件體系結(jié)構(gòu)”課程建設方案,以期為應用型高端軟件人才的培養(yǎng)提供借鑒。
根據(jù)工程教育的OBE(Outcomes-based Education,基于學習產(chǎn)出的教育模式)理念,“軟件體系結(jié)構(gòu)”課程目標需對軟件工程專業(yè)的畢業(yè)要求提供直接支撐。
1.支持畢業(yè)要求1(工程知識):能夠?qū)?shù)學、自然科學、工程基礎和專業(yè)知識用于解決復雜軟件工程問題。具體指標點為:具備扎實的軟件工程專業(yè)知識,具備理解復雜軟件工程問題的能力,能夠判別軟件系統(tǒng)的復雜性,能夠運用所學知識和方法進行復雜工程問題求解(1-3)。
2.支持畢業(yè)要求2(問題分析):能夠應用數(shù)學、自然科學和工程科學的基本原理識別、表達,并通過文獻研究分析復雜軟件工程問題,以獲得有效結(jié)論。具體指標點為:能夠應用數(shù)學、自然科學和工程科學的基本原理,對軟件系統(tǒng)進行抽象分析與識別,并進行推理、求解和驗證(2-1);能夠有效分析和描述軟件系統(tǒng)需求,對于具體的復雜軟件工程問題,能夠評估各種解決方案的優(yōu)劣勢(2-2)。
3.支持畢業(yè)要求3(設計/開發(fā)解決方案):能夠設計針對復雜工程問題的解決方案,設計滿足特定需求的軟件系統(tǒng)、模塊(組件)或算法流程,并能夠在設計環(huán)節(jié)中體現(xiàn)創(chuàng)新意識,考慮社會、健康、安全、法律、文化以及環(huán)境等因素。具體指標點為:能夠設計針對復雜軟件工程問題的解決方案,設計滿足特定需求的軟件系統(tǒng)、模塊(組件)或算法流程、測試方案及用例(3-3)。
4.支持畢業(yè)要求5(使用現(xiàn)代工具):能夠針對復雜軟件工程問題,開發(fā)、選擇與使用恰當?shù)募夹g(shù)、資源、現(xiàn)代工程工具和信息技術(shù)工具,包括對復雜軟件工程問題的預測與模擬,并能夠理解其局限性。具體指標點為:能夠掌握軟件工程領域中所使用的主要方法、平臺、工具和技術(shù)資源,了解其差異和適用領域(5-1)。
5.支持畢業(yè)要求10(溝通):能夠就復雜軟件工程問題與業(yè)界同行及社會公眾進行有效溝通和交流,包括撰寫報告和設計文稿、陳述發(fā)言、清晰表達或回應指令,并具備一定的國際視野,能夠在跨文化背景下進行溝通和交流。具體指標點為:具有與業(yè)界同行及社會公眾進行有效溝通和交流的能力,并能在復雜軟件工程項目實施過程中運用以上能力(10-1)。
“軟件體系結(jié)構(gòu)”課程目標與畢業(yè)要求指標點之間的支撐關系如表1所示。課程目標1旨在以實際案例促進學生對軟件體系結(jié)構(gòu)中基本概念及經(jīng)典軟件體系結(jié)構(gòu)各軟件成分之間關系的理解,使學生具備扎實的軟件工程專業(yè)知識(1-3),具備理解復雜軟件工程問題的能力(2-1),進而能夠根據(jù)問題的特征選擇設計模式和軟件體系結(jié)構(gòu)并對所選軟件體系結(jié)構(gòu)進行評估(2-2);課程目標2通過仿真模擬,引導學生參照已有具體案例,逐步設計滿足特定復雜軟件工程問題的軟件系統(tǒng)、模塊(組件)或算法流程、測試方案及用例(3-3),體驗軟件開發(fā)體系結(jié)構(gòu)設計過程的各個環(huán)節(jié)所使用的主要方法、平臺、工具和技術(shù)資源(5-1)。課程目標3通過經(jīng)典案例,分析不同設計模式的設計思想,總結(jié)所解決問題的具體特征,了解經(jīng)典軟件體系結(jié)構(gòu)的優(yōu)缺點與使用場景,使學生能夠針對軟件開發(fā)中遇到的問題和根據(jù)軟件系統(tǒng)的特點進行軟件體系結(jié)構(gòu)設計。引導學生在分析、設計、開發(fā)、測試、驗證和文檔編撰過程中,選擇、使用恰當?shù)募夹g(shù)、資源、現(xiàn)代工程工具和信息技術(shù)工具(5-1),分析不同開發(fā)周期中各種軟件文檔的內(nèi)容、格式、規(guī)范,使學生具備撰寫軟件開發(fā)文檔的能力(10-1)。
表1 課程目標對畢業(yè)要求指標點支撐情況
為更好地實現(xiàn)課程目標,本文參考經(jīng)典軟件體系結(jié)構(gòu)[1-4]和設計模式教程[5-7],針對畢業(yè)要求指標點選擇教學內(nèi)容,實現(xiàn)教學內(nèi)容對畢業(yè)要求指標點的支撐作用(表2、表3)。區(qū)別于教學內(nèi)容僅按照章節(jié)和知識點安排的傳統(tǒng)模式,基于真實項目案例的軟件體系結(jié)構(gòu)課程將理論教學與實踐教學相結(jié)合,并將真實項目場景融入理論教學環(huán)節(jié),同時加大實踐教學比例。通過“支持畢業(yè)要求指標點的能力要求”和“學生任務”欄目,明確教學內(nèi)容對應的畢業(yè)要求指標點、學生學習任務及學生學習后應獲得的能力,將OBE理念落實到課堂和實驗教學單元。在項目案例選擇上力求做到以下幾點:一是優(yōu)先選擇最新的項目案例,因為軟件技術(shù)更新迭代迅速,新的項目有利于學生理解最新的軟件技術(shù);二是選擇質(zhì)量高的項目案例,所選項目案例應該遵循軟件工程規(guī)范,具備完備的軟件開發(fā)文檔與良好的代碼管理機制;三是類型與難度多樣性,針對不同的體系結(jié)構(gòu),選擇具有代表性的項目案例,讓學生更好地體會不同體系結(jié)構(gòu)的應用場景。
表2 理論教學內(nèi)容對畢業(yè)要求及指標點的支撐
表3 實踐教學內(nèi)容對畢業(yè)要求及指標點的支撐
相較傳統(tǒng)的灌輸式教學方式,基于案例研究的教學方法可以提高學生的學習主動性,幫助學生獲得更多的專業(yè)實踐能力。
一是案例真實,理論與實踐結(jié)合。根據(jù)工程項目經(jīng)驗,合理選擇最新的、能夠與教學內(nèi)容相結(jié)合的工程項目作為教學案例,將枯燥的理論概念與生動的實例項目結(jié)合,讓學生切身體會每個理論是如何應用到具體的工程項目中去的,從而提高學生工程實踐能力。
二是討論為主,引導為輔。在案例分析中,采用以學生討論為主、教師引導為輔的方式,讓學生最大程度地參與到討論過程中,激發(fā)他們運用所學知識的積極性,鼓勵學生大膽嘗試。教師通過逐步引導的方式,讓學生體會所選案例是如何選擇設計模式與軟件體系結(jié)構(gòu)的,并了解其優(yōu)缺點。
三是仿真模擬,深刻體驗。學生分組討論、仿真模擬設計已有的復雜軟件系統(tǒng),并擔任不同的角色,體會不同角色在項目管理開發(fā)過程中的作用,熟悉工作內(nèi)容。這能夠培養(yǎng)其團隊意識和獨立完成工作的能力(策劃、組織、管理能力),促使學生學會與團隊成員交流,提高表達能力,從而更好地協(xié)調(diào)不同角色之間的工作。
本課程考核方式采用試卷考核和實踐考核相結(jié)合、期末考試和平時考核相結(jié)合的多元化考核方式。對課程目標的評價由3部分構(gòu)成:期末考試(占比40%)側(cè)重考核課程目標1的教學效果,直接反映學生對軟件體系結(jié)構(gòu)中基本概念及經(jīng)典軟件體系結(jié)構(gòu)各軟件成分之間關系的理解程度;實踐考核(占比40%)側(cè)重考核課程目標2的教學效果,能夠反映學生是否具備采用程序設計語言、開發(fā)平臺常見設計模式和體系結(jié)構(gòu)解決一定復雜度軟件問題的能力;報告等其他形式(占比20%)側(cè)重考核課程目標3的教學效果,可以反映學生是否具備撰寫軟件開發(fā)文檔的能力。相較于一張試卷定成績的傳統(tǒng)考核方式,多元化的考核方式將學生學習過程評價作為重要依據(jù)納入課程目標評價更具合理性。
1.期末考試(占總成績40%)??荚囶}型為填空題(10分)、選擇題(20分)、判斷題(10分)、簡答題(10分)、體系結(jié)構(gòu)應用(25分)和設計模式應用(25分)。
2.實踐考核(占總成績40%)。本課程設置4個實驗:經(jīng)典軟件體系結(jié)構(gòu)風格(分值占12.5%)、C/S結(jié)構(gòu)應用開發(fā)(分值占37.5%)、B/S結(jié)構(gòu)應用開發(fā)(分值占25%)、設計模式應用(分值占25%)。每個實驗提前1周布置給學生,要求其在課外進行實驗預習,對實驗內(nèi)容進行分析和設計。教師在實驗課上對學生分析設計的成果進行檢查,評分由程序功能完成度(占比40%)、代碼對各特定設計模式/體系結(jié)構(gòu)各組成部分分解是否合理(占比30%)、實驗報告是否完整詳細和描述設計方案文檔是否完整(占比30%)3個方面構(gòu)成。
3.其他考核(占總成績20%)。本課程把作業(yè)納入課程考核范圍,作業(yè)形式由課后習題及報告兩種形式構(gòu)成,其中報告和課后習題(多次)分別為50分。
課程考核及成績評定結(jié)果出來后,教師可通過課程對畢業(yè)要求達成度進行分析(圖1)。區(qū)別于傳統(tǒng)的考試成績的正態(tài)分布圖,基于OBE的軟件體系結(jié)構(gòu)課程考核結(jié)果可視化分析可以幫助教師掌握全班在哪些畢業(yè)要求指標點上存在短板及每個學生的學習狀態(tài),以便持續(xù)改進課程教學并對學生實施個性化教學。
圖1 基于OBE的“軟件體系結(jié)構(gòu)”課程考核結(jié)果可視化分析