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