遼寧工業大學電子與信息工程學院 陳鑫 伊華偉 佟玉軍
針對軟件工程專業畢業生基礎知識不扎實、技能掌握不牢的現象,提出一種以“系統開發案例分析”為匯點,相關課程融合建設的方法。通過對該門課程的介紹,分析了該課程在課程體系中的匯點作用;通過對其先行課程的知識點提取,構建知識網絡,并在課程案例中予以運用。實踐表明,該課程可以向上承接主要專業課程,向下開啟學生畢業前夕的主要任務,具有很好的開設價值。
隨著《中國制造2025》、《關于積極推進“互聯網+”行動的指導意見》、《促進大數據發展行動綱要》等政策的出臺,我國的軟件產業即將面臨又一次的騰飛,相應的,對軟件行業的人才需求量及其技術水平必將持續上升[1]。與之形成對比的是,各大高校軟件相關專業的畢業生在走出校門之際,普遍存在基礎知識不夠扎實、基本技能掌握不牢的現象,從而無法迅速達到用人單位的要求。
針對上述現象,高校的教學人員提出了多項舉措進行改革,從教學方法、教學手段、教學內容等方面進行思考,旨在提高教學質量[2-5]。然而,大部分的教學改革都是孤立地從一門課程入手,缺少其與先行課、后繼課之間的聯系,致使學生對知識的理解及后續應用不夠深刻、缺少延續,無法做到融會貫通。因此,考慮專業內部相關課程之間的聯合建設,并設立一門起到承上啟下作用的“匯點”課程,是十分必要的。
“系統開發案例分析”是可設置為大專院校軟件工程相關專業開設的一門專業方向課,建議于大四上學期(第7 學期)開設,共40 學時,其中理論授課24 學時,上機實驗16 學時。授課內容建議分為三個部分,具體如下:
(1)算法設計與實現。任何一個信息系統的本質都是對數據的加工過程,將初始的輸入數據經過一系列處理轉換為有意義的信息;而每一次處理,即可視為一個算法。本環節主要培養學生分析問題、設計數據結構、進而實現編程的能力,關注學生的編程基本功,所講授的案例可以選擇計算機科學領域的一些經典問題,如最短旅行商(TSP)問題[6]等。該部分預計使用理論授課8學時,上機實驗6 學時。
(2)C/S 結構信息系統的分析與設計。作為軟件行業的從業人員,相當大一部分的工作內容是管理信息系統的開發,將客戶的需求轉換成最終能在計算機上運行的系統。因此,本環節將以C/S 結構的產品庫存管理系統為案例,重點介紹需求分析、模塊劃分以及數據庫設計的過程。本環節理論授課10 學時,上機實驗6 學時。
(3)B/S 結構信息系統的分析與設計。本環節中的內容與上一部分類似,區別在于使用的案例為商品在線銷售系統。因為使用了與上一案例所不同的架構模式,所以本環節主要關注的是軟件的體系結構、設計模式等內容。所占用的學時數較前兩個環節略有減少,即理論授課6 學時,上機實驗4 學時。
課程的總體介紹如表1 所示。

表1 “系統開發案例分析”課程總體介紹Tab.1 "System Development Case Analysis" course introduction
通過“系統開發案例分析”的課程內容及其關注重點,可以大致地看出該門課程在軟件工程專業課程體系中所起到的承上啟下的作用,本節將結合遼寧工業大學軟件工程專業的培養計劃[7]加以明確分析。
遼寧工業大學軟件工程專業的學制為4 年制,根據其教學計劃,學生需要修滿171 學分,其中前三年需要完成138.5 學分。在前三學年中,與“系統開發案例分析”有關的主干課程包括:
(1)算法與程序設計:面向剛入學的學生,即第1學期的學生,培養其基本的計算機思維能力和基礎的編程能力;
(2)高級程序設計應用:在第2 學期開設,培養學生的面向對象思維和面向對象語言編程能力;
(3)數據結構:可以認為是計算機、軟件工程相關專業的最主要的課程之一,培養學生對鏈表、樹、圖等主流數據結構的理解、使用,同時強化學生的編程能力。該課程將在第3 學期開設;
(4)數據庫原理與應用:面向軟件工程專業第4 學期的學生,主要介紹數據庫系統原理,完成從現實世界的概念模型到程序世界的邏輯模型的轉化,保證學生能夠通過SQL 語言對關系型數據庫系統進行操作;
(5)軟件工程:有了上述課程的基礎,本專業在第5學期開設“軟件工程”課程。該課程可以說是軟件工程專業的另一門重要課程,主要介紹軟件開發的原理、過程及標準,讓學生對于軟件開發有一個全面而深刻的理解;
(6)軟件體系結構:針對軟件設計方案進行強化,介紹主流的設計模式、架構模式,通過對該門課程的學習,學生可以“輕化”軟件設計方案,提高設計的靈活性和軟件的可維護性。本課程將在第6 學期為學生開設。
本科生學習的最后一個學期,需要完成從學校到社會的過渡,在這個階段,學生(此處專指畢業后選擇就業的學生)主要面臨兩項任務:
(1)完成畢業設計論文。該過程往往要求學生針對某一具體的題目,進行全面的分析、設計,將之實現并進行測試,進而撰寫論文,可以說是對本科階段所學知識作以系統總結及靈活應用的過程。然而,這個過程中會發現學生存在知識點掌握不牢、運用不當、論文組織不合理、寫作不夠流暢等問題。比如,描述系統數據模型的ER 圖,應該作為開發者對于現實概念的理解,放入到系統分析的部分,然而很多學生在使用ER 圖時,將之錯誤地放入到系統設計的章節中;
(2)尋找合適的實習單位和就業單位。該過程需要進行多次的筆試、面試,在這些環節中,學生經常出現知識點遺忘、實踐經驗欠缺,甚至表達不清晰的情況。例如,數據結構中的知識點,是歷來軟件企業在筆試過程中所重點考察的內容,然而大部分高校相關專業的“數據結構”課程,基本都在第3 學期甚至更早的時間開設,待筆試考察時,學生的印象已經不夠深刻了。
“系統開發案例分析”這門課程的設置,恰恰能夠解決畢業生所面臨的問題。一方面,其通過若干個案例的理論教學,將之前所學內容匯總,從而使得學生對整個知識脈絡融會貫通,有了良好的掌握;另一方面,在實驗環節讓學生分組實踐,完成指定案例的實現,并通過答辯過程加以檢驗,可提升學生的開發經驗,并鍛煉其表達能力。
基于上述分析,可以構建軟件工程專業的“課程樹”(也可以稱之為該專業學生所面臨的“任務樹”),如圖1所示。從中可以明顯地看出“系統開發案例分析”這門課程的“匯點”作用——其向上承接了前三個學年的主要專業課程,向下開啟了學生畢業前夕所面臨的畢業設計、就業等任務,起到了很好地從理論向實踐的過渡作用。

圖1 軟件工程專業“課程樹”Fig.1 Software engineering "Course Tree"
為了保證學生對知識體系具備全面的理解,相關課程需要通過將某些線索聯系到一起,形成知識網絡。本節將介紹以知識點作為線索、以“系統開發案例分析”課程作為“匯點”的課程融合建設方法。
每一門課程中都有其主要的知識點,是該門課程的精髓所在。在融合建設過程中,不可能將所有課程的全部知識點都加以考慮,但是,可以提取最具代表性的部分,以這些主要知識點為代表,加深學生課程的印象,激發學生去主動回顧以往課程。
將提取出的知識點加以融合,在“系統開發案例分析”這門課程的相關案例中靈活運用,從而形成知識網絡的構建,如圖2 所示。

圖2 以“系統開發案例分析”為匯點的知識網構建Fig.2 Knowledge network construction with "System Development Case Analysis" as the convergence point
求解最短旅行商問題的最基礎算法,就是對圖2 中所有路徑進行窮舉嘗試,從而找到最優解,這可以看作是對樹進行搜索的過程。而樹中每一個節點,可以看作旅行商的一種狀態,記錄其當前已經走過的路徑、花費的代價等,是一個類定義的過程。將上述方案通過C++或Java 等高級語言實現,就完成了這一問題的最初級求解方案。當然,在此基礎上,還可以給學生介紹分支定界法[8]等經典算法,以加速求解過程。
進行管理信息系統的分析與設計,首先需要從技術、經濟等方面分析其可行性,在得到肯定答案的基礎上對系統進行需求分析,進而考慮其結構設計、數據庫設計等方案;其次是在進行分析、設計的同時,還需要考慮其測試時所注意的問題、使用的用例等[9]。這些知識點將在產品庫存管理系統、商品在線銷售系統這兩個案例的學習過程中予以總結。
以知識點連線,進而推廣成知識面——“系統開發案例分析”這門課程作為軟件工程專業系列課程的“收口”,把相關課程很好地融合在一起,起到了良好的總結作用。在大四上學期開設這門課程,既可以幫助學生全面地掌握本專業的課程體系,又可以為接下來的畢業設計、就業等環節奠定基礎,具有很強的現實意義。