摘要:本文結合南京郵電大學軟件學院培養(yǎng)軟件工程人才的實踐經(jīng)驗,分析了計算機科學研究人才和軟件工程人才的區(qū)別,探討了如何培養(yǎng)高素質的軟件工程人才,如何將理論教學體系與實踐教學體系相結合,最后說明在實際教學環(huán)節(jié)中總結出的教學方法。
關鍵詞:軟件工程人才;螺旋上升;項目實訓
中圖分類號:G642 文獻標識碼:A
1引言
到2010年,南京軟件產(chǎn)業(yè)的收入要達800億元,占據(jù)全省2/3的份額。政策機遇、產(chǎn)業(yè)機遇給南京軟件產(chǎn)業(yè)帶來了強大的推動力。眾所周知,南京發(fā)展軟件產(chǎn)業(yè)有著其他城市難以匹敵的科教資源優(yōu)勢,但要配合如此高速的發(fā)展,還存在巨大的高素質軟件工程技術人才和管理人才的缺口。南京郵電大學軟件學院以市場需求為導向,在培養(yǎng)高層次的應用型、復合型和國際化的軟件工程技術與軟件工程管理人才方面作了大量的嘗試。本文就如何培養(yǎng)高素質軟件工程人才提出幾點想法。
2區(qū)分計算機科學人才和軟件工程人才
軟件工程專業(yè)與計算機科學專業(yè)是兩個不同的學科,兩者在人才培養(yǎng)目標、方式和所關心的知識領域等方面有較大的區(qū)別。簡單地說,計算機科學專業(yè)是包括軟、硬件理論的專業(yè),側重點在研究;軟件工程專業(yè)是以學軟件理論為主的專業(yè),側重點在技術。表1給出了兩者在學科領域上的區(qū)別。
這兩個學科領域在計算機技術方面有所交叉,但各有側重,同時又是相互協(xié)調、相輔相成的軟件工程專業(yè)對計算機科學、工程和技術的進展以及軟件應用領域的擴展起了重要作用。
3培養(yǎng)高素質軟件工程人才的教學特色
在著力培養(yǎng)軟件工程專業(yè)人才的過程中,我們嘗試著采用全新的教育理念和方法。基本思想是:大力改革人才培養(yǎng)方案,更新課程體系與教學內容,突出工程能力的訓練,形成產(chǎn)學研一體化的教學體系;采取與國際接軌的教學方案,使用外文教材,采用雙語教學;依托大學科技園,實行全方位對外開放辦學模式、項目實訓與企業(yè)實習相結合的培養(yǎng)過程。
具體到課堂上:先給學生擺出實際案例,讓學生明白問題之所在,也讓學生知道本堂課的教學目標。然后由老師用規(guī)范的分析、計劃、實施和驗證的步驟來解決這個問題,并在此過程中系統(tǒng)地教授相關的知識點。之后,老師提出相類似的另一個實際問題,學生再進行模仿,可以討論,可以提問,在練習和模仿中逐漸領會解題思路,對本堂課所學的知識點進一步加深理解和掌握,這就是在老師指導下的實踐。最后學生必須將本課所學到的這些知識綜合地用到解決一個新的實際問題上,而且要求學生獨立完成。以實際案例為原型但又不囿于實際案例,讓學生充分發(fā)揮自己的主觀能動性且加以引導,鼓勵創(chuàng)新思維但不脫離實際案例。整個過程如圖1所示。
這是一個螺旋上升的過程,也是人進行學習的最自然的方式,通過這樣一種“學習—實踐—提高”的循環(huán)往復過程,學生不僅可以更快、更深入的理解和掌握課程的內容,獨立解決實際問題的能力也得到很好的鍛煉。
除此之外,對于軟件人才培養(yǎng),項目實訓是一種經(jīng)實踐檢驗證明行之有效而且非常重要的手段。我們每學期都專門開設實際的軟件項目課程,培養(yǎng)學生軟件工程意識,體會軟件工程思想。在具體操作上,按照軟件工程實施的四個階段來進行(在不同的軟件工程體系中,對階段的區(qū)分會略有不同,出于教學過程的簡潔,采用以下方法)。
第一階段為可行性與需求分析階段,需求分析是學生的薄弱環(huán)節(jié),但卻是實際工程中最重要的階段。主要是引導學生在對整個系統(tǒng)架構考慮的基礎上,細化軟件需求,將每個需求都做到明確、單一、可行。此外,積極引入各種成熟理論和工具,比如鼓勵學生使用UML,在可能的情況下結合面向對象的軟件開發(fā)方法OMT(Object Modeling Technique)來優(yōu)化需求分析,并形成規(guī)范的文檔。在此過程中,學生是主導,是架構師,老師只起到跟蹤指導的作用。
第二階段為軟件設計階段,軟件設計分為系統(tǒng)設計(High Level)和功能設計(Low Level)。系統(tǒng)設計要求學生根據(jù)第一階段的分析選擇平臺、框架結構、語言、中間件等。比如同學們經(jīng)常使用的B/S還是C/S,數(shù)據(jù)庫使用Oracle或者是Microsoft SQL Server等,讓同學們自己列出相應情況的優(yōu)缺點和實現(xiàn)成本,再綜合決定方案。功能設計要求學生寫出偽代碼、消息機制、宏定義等,這是下一階段的基礎,也是軟件質量的保證。
第三階段是編碼階段,學生在此過程中是程序員。老師的任務就是提醒學生編碼的規(guī)范性,采用統(tǒng)一的編碼規(guī)范,同時注意提醒學生代碼的質量和優(yōu)化。
第四階段是單元測試和集成測試階段,對于單元測試,要求學生對每個函數(shù)能夠給出測試案例,對同一個函數(shù)中不同的參數(shù)也要有相應考慮,比如最大最小值、溢出等情況。集成階段測試要求對照第一階段的需求分析寫出測試案例,要求案例覆蓋所有軟件需求,當然也要避免測試案例的冗余。
在所有階段引入QA角色,從學生中推選出QA負責監(jiān)督所有階段的文檔是否符合要求,是否正確歸檔;選擇代碼控制工具,比如Rational Clearcase等;對出現(xiàn)的問題進行分析,能夠指出問題的產(chǎn)生是哪一階段產(chǎn)生。此外,QA對整個項目進行跟蹤并在項目結束后給出分析報告。
當今的軟件已經(jīng)成為多人參與、分工明確、通力協(xié)作的大型工程。軟件開發(fā)的管理、系統(tǒng)體系結構的設計、模塊之間的銜接、核心算法的實現(xiàn)、靈活界面的制定、軟件再開發(fā)接口的實現(xiàn)都需要專門的人來做,而把這些有效地集成顯然就需要利用軟件工程的思想和方法。所以,真正的軟件人才絕不再是寫代碼的程序員,而是整個體系結構的分析、設計、標準制定、協(xié)調人員。因此我們在培養(yǎng)軟件工程人才時,就是利用一個個實際的小項目鍛煉學生們相互之間的協(xié)作能力以及作為一位項目負責人的總體設計、總體架構和分析協(xié)調能力和對人員的合理安排和配置能力。
4教學心得
在教學過程中,種種設想和方法都需要教師因材施教,進行很好的引導,以激發(fā)學生最大的潛能和動力。下面再談談我個人的一些教學心得。
4.1課堂討論法
我又稱其為“議議、講講、練練”的教學法。在課堂上,老師滿堂灌會抑制學生學習的興趣,我們是小班化教學,有這樣討論交流的環(huán)境和氛圍。而在教師的指導下,圍繞某一中心問題交換意見、互相啟發(fā),可以活躍學生的思想,便于培養(yǎng)學生獨立思考、分析和解決問題的能力,有利于培養(yǎng)學生口頭表達能力,有利于對知識的理解等。
4.2遷移教學法
我又稱其為正面引導教學法。因為我們的教學環(huán)境是一人一機,條件很好,但不可避免的是有些學生沒有自我克制能力,用電腦玩游戲,對于這一點,我的方法是:
(1) 不堵反疏,只有有力的疏導才能將學生的注意力遷移到學習上來,將游戲的一些規(guī)則和課本內容結合起來,充分抓住了學生的學習興趣。
(2) 給學生布置一些小論文,讓他們了解當前IT前沿的技術,培養(yǎng)閱讀、參考、抽象、歸納的能力,提高在技術探索方面的技能。
4.3直觀教學法
教師在運用此法時要充分利用PowerPoint的強大功能,讓形象由靜變動,讓概念由死板變生動,使其符合形象思維占優(yōu)勢的學習特點,有利于讓學生建立清晰明確的概念,調動學生的學習興趣,加深理解和記憶,增強直觀效果。
4.4實例講解法
目前大型的軟件公司都有自己一套成熟的軟件工程理論,他們之間有共性但又有不同,在課堂上挑選典型成功的案例讓同學們揣摩學習,找出失敗的案例給同學們以警示。實踐證明,這種方法能夠極大的提高同學們的興趣,讓他們對實際工作中的案例有了最初的印象。
4.5Team合作法
每個學期挑選一個較為大型的項目,模擬實際工作中的角色給同學們分工,比如項目經(jīng)理、技術專家、市場調研、程序員、測試人員、QA等,每個項目最后演示他們的成果,其他小組作為裁判給出評價。該方法雖然操作復雜但效果極為顯著,實踐證明,這是最能讓同學們深入了解軟件工程的一個途徑。在實踐操作中還可以和軟件公司合作,讓同學們更好地和實際工作相結合。
當然以上方法需要在實踐中不斷磨合和優(yōu)化,總的想法是夯實理論基礎、提高學生興趣、增強社會實踐,讓軟件工程人才被社會接納,進而引導軟件工程發(fā)展方向促進計算機工程領域的不斷發(fā)展。
5結束語
大學和企業(yè)的邊界變得越來越模糊了,彼此滲入到對方的傳統(tǒng)領地,承擔起對方的某些職能。大學不只是創(chuàng)造和傳播知識,而且把知識轉化為現(xiàn)實的生產(chǎn)力;企業(yè)不僅制造產(chǎn)品,還成為技術創(chuàng)新的主體,擔負起培訓人才的職能。我們培養(yǎng)出來的學生要想符合企業(yè)的需要,就要將校內的項目實訓和校外的企業(yè)實習相結合,目前,已有部分學生到有合作伙伴關系的企業(yè)實習,使學生真正得到實戰(zhàn)鍛煉。結果表明,學生在現(xiàn)代軟件技術的掌握、軟件工程管理思想的領會以及工程實踐訓練方面都是優(yōu)秀的,滿足企業(yè)對高層次軟件人才的要求。
參考文獻:
[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