摘要:本文結合南京郵電大學軟件學院培養軟件工程人才的實踐經驗,分析了計算機科學研究人才和軟件工程人才的區別,探討了如何培養高素質的軟件工程人才,如何將理論教學體系與實踐教學體系相結合,最后說明在實際教學環節中總結出的教學方法。
關鍵詞:軟件工程人才;螺旋上升;項目實訓
中圖分類號:G642 文獻標識碼:A
1引言
到2010年,南京軟件產業的收入要達800億元,占據全省2/3的份額。政策機遇、產業機遇給南京軟件產業帶來了強大的推動力。眾所周知,南京發展軟件產業有著其他城市難以匹敵的科教資源優勢,但要配合如此高速的發展,還存在巨大的高素質軟件工程技術人才和管理人才的缺口。南京郵電大學軟件學院以市場需求為導向,在培養高層次的應用型、復合型和國際化的軟件工程技術與軟件工程管理人才方面作了大量的嘗試。本文就如何培養高素質軟件工程人才提出幾點想法。
2區分計算機科學人才和軟件工程人才
軟件工程專業與計算機科學專業是兩個不同的學科,兩者在人才培養目標、方式和所關心的知識領域等方面有較大的區別。簡單地說,計算機科學專業是包括軟、硬件理論的專業,側重點在研究;軟件工程專業是以學軟件理論為主的專業,側重點在技術。表1給出了兩者在學科領域上的區別。

這兩個學科領域在計算機技術方面有所交叉,但各有側重,同時又是相互協調、相輔相成的軟件工程專業對計算機科學、工程和技術的進展以及軟件應用領域的擴展起了重要作用。
3培養高素質軟件工程人才的教學特色
在著力培養軟件工程專業人才的過程中,我們嘗試著采用全新的教育理念和方法。基本思想是:大力改革人才培養方案,更新課程體系與教學內容,突出工程能力的訓練,形成產學研一體化的教學體系;采取與國際接軌的教學方案,使用外文教材,采用雙語教學;依托大學科技園,實行全方位對外開放辦學模式、項目實訓與企業實習相結合的培養過程。
具體到課堂上:先給學生擺出實際案例,讓學生明白問題之所在,也讓學生知道本堂課的教學目標。然后由老師用規范的分析、計劃、實施和驗證的步驟來解決這個問題,并在此過程中系統地教授相關的知識點。之后,老師提出相類似的另一個實際問題,學生再進行模仿,可以討論,可以提問,在練習和模仿中逐漸領會解題思路,對本堂課所學的知識點進一步加深理解和掌握,這就是在老師指導下的實踐。最后學生必須將本課所學到的這些知識綜合地用到解決一個新的實際問題上,而且要求學生獨立完成。以實際案例為原型但又不囿于實際案例,讓學生充分發揮自己的主觀能動性且加以引導,鼓勵創新思維但不脫離實際案例。整個過程如圖1所示。

這是一個螺旋上升的過程,也是人進行學習的最自然的方式,通過這樣一種“學習—實踐—提高”的循環往復過程,學生不僅可以更快、更深入的理解和掌握課程的內容,獨立解決實際問題的能力也得到很好的鍛煉。
除此之外,對于軟件人才培養,項目實訓是一種經實踐檢驗證明行之有效而且非常重要的手段。我們每學期都專門開設實際的軟件項目課程,培養學生軟件工程意識,體會軟件工程思想。在具體操作上,按照軟件工程實施的四個階段來進行(在不同的軟件工程體系中,對階段的區分會略有不同,出于教學過程的簡潔,采用以下方法)。
第一階段為可行性與需求分析階段,需求分析是學生的薄弱環節,但卻是實際工程中最重要的階段。主要是引導學生在對整個系統架構考慮的基礎上,細化軟件需求,將每個需求都做到明確、單一、可行。此外,積極引入各種成熟理論和工具,比如鼓勵學生使用UML,在可能的情況下結合面向對象的軟件開發方法OMT(Object Modeling Technique)來優化需求分析,并形成規范的文檔。在此過程中,學生是主導,是架構師,老師只起到跟蹤指導的作用。
第二階段為軟件設計階段,軟件設計分為系統設計(High Level)和功能設計(Low Level)。系統設計要求學生根據第一階段的分析選擇平臺、框架結構、語言、中間件等。比如同學們經常使用的B/S還是C/S,數據庫使用Oracle或者是Microsoft SQL Server等,讓同學們自己列出相應情況的優缺點和實現成本,再綜合決定方案。功能設計要求學生寫出偽代碼、消息機制、宏定義等,這是下一階段的基礎,也是軟件質量的保證。
第三階段是編碼階段,學生在此過程中是程序員。老師的任務就是提醒學生編碼的規范性,采用統一的編碼規范,同時注意提醒學生代碼的質量和優化。
第四階段是單元測試和集成測試階段,對于單元測試,要求學生對每個函數能夠給出測試案例,對同一個函數中不同的參數也要有相應考慮,比如最大最小值、溢出等情況。集成階段測試要求對照第一階段的需求分析寫出測試案例,要求案例覆蓋所有軟件需求,當然也要避免測試案例的冗余。
在所有階段引入QA角色,從學生中推選出QA負責監督所有階段的文檔是否符合要求,是否正確歸檔;選擇代碼控制工具,比如Rational Clearcase等;對出現的問題進行分析,能夠指出問題的產生是哪一階段產生。此外,QA對整個項目進行跟蹤并在項目結束后給出分析報告。
當今的軟件已經成為多人參與、分工明確、通力協作的大型工程。軟件開發的管理、系統體系結構的設計、模塊之間的銜接、核心算法的實現、靈活界面的制定、軟件再開發接口的實現都需要專門的人來做,而把這些有效地集成顯然就需要利用軟件工程的思想和方法。所以,真正的軟件人才絕不再是寫代碼的程序員,而是整個體系結構的分析、設計、標準制定、協調人員。因此我們在培養軟件工程人才時,就是利用一個個實際的小項目鍛煉學生們相互之間的協作能力以及作為一位項目負責人的總體設計、總體架構和分析協調能力和對人員的合理安排和配置能力。
4教學心得
在教學過程中,種種設想和方法都需要教師因材施教,進行很好的引導,以激發學生最大的潛能和動力。下面再談談我個人的一些教學心得。
4.1課堂討論法
我又稱其為“議議、講講、練練”的教學法。在課堂上,老師滿堂灌會抑制學生學習的興趣,我們是小班化教學,有這樣討論交流的環境和氛圍。而在教師的指導下,圍繞某一中心問題交換意見、互相啟發,可以活躍學生的思想,便于培養學生獨立思考、分析和解決問題的能力,有利于培養學生口頭表達能力,有利于對知識的理解等。
4.2遷移教學法
我又稱其為正面引導教學法。因為我們的教學環境是一人一機,條件很好,但不可避免的是有些學生沒有自我克制能力,用電腦玩游戲,對于這一點,我的方法是:
(1) 不堵反疏,只有有力的疏導才能將學生的注意力遷移到學習上來,將游戲的一些規則和課本內容結合起來,充分抓住了學生的學習興趣。
(2) 給學生布置一些小論文,讓他們了解當前IT前沿的技術,培養閱讀、參考、抽象、歸納的能力,提高在技術探索方面的技能。
4.3直觀教學法
教師在運用此法時要充分利用PowerPoint的強大功能,讓形象由靜變動,讓概念由死板變生動,使其符合形象思維占優勢的學習特點,有利于讓學生建立清晰明確的概念,調動學生的學習興趣,加深理解和記憶,增強直觀效果。
4.4實例講解法
目前大型的軟件公司都有自己一套成熟的軟件工程理論,他們之間有共性但又有不同,在課堂上挑選典型成功的案例讓同學們揣摩學習,找出失敗的案例給同學們以警示。實踐證明,這種方法能夠極大的提高同學們的興趣,讓他們對實際工作中的案例有了最初的印象。
4.5Team合作法
每個學期挑選一個較為大型的項目,模擬實際工作中的角色給同學們分工,比如項目經理、技術專家、市場調研、程序員、測試人員、QA等,每個項目最后演示他們的成果,其他小組作為裁判給出評價。該方法雖然操作復雜但效果極為顯著,實踐證明,這是最能讓同學們深入了解軟件工程的一個途徑。在實踐操作中還可以和軟件公司合作,讓同學們更好地和實際工作相結合。
當然以上方法需要在實踐中不斷磨合和優化,總的想法是夯實理論基礎、提高學生興趣、增強社會實踐,讓軟件工程人才被社會接納,進而引導軟件工程發展方向促進計算機工程領域的不斷發展。
5結束語
大學和企業的邊界變得越來越模糊了,彼此滲入到對方的傳統領地,承擔起對方的某些職能。大學不只是創造和傳播知識,而且把知識轉化為現實的生產力;企業不僅制造產品,還成為技術創新的主體,擔負起培訓人才的職能。我們培養出來的學生要想符合企業的需要,就要將校內的項目實訓和校外的企業實習相結合,目前,已有部分學生到有合作伙伴關系的企業實習,使學生真正得到實戰鍛煉。結果表明,學生在現代軟件技術的掌握、軟件工程管理思想的領會以及工程實踐訓練方面都是優秀的,滿足企業對高層次軟件人才的要求。
參考文獻:
[1] 金建設,呂海東. 獨立學院軟件實訓教學探索[J]. 高等工程教育研究,2007,(增刊).
How to cultivate software engineering specialists
FEI Ning, CHEN Chun-ling, ZONG Ping
(Nanjing university of Posts and Telecommunications)
Abstract: facing the practice of Nanjing university of Posts and Telecommunications about how to cultivate software engineering specialists and based on an analysis of the difference between computer science research specialists and software engineering specialists, the paper research on how to cultivate high-quality software engineering specialists, how to combine teaching in class and exercise in project. At last the paper summarizes the techniques from the everyday teaching.
Key Words: software engineering specialists, spire, exercise in project