摘要:專業(yè)學位(professional degree),是相對于學術性學位(academic degree)而言的學位類型,其目的是培養(yǎng)具有扎實理論基礎,并適應特定行業(yè)或職業(yè)實際工作需要的應用型高層次專門人才。如何到達這個目標,我們在培養(yǎng)計算機工程碩士的這一年多時間里,通過與美國的IT業(yè)公司和大學的合作,讓工程碩士參與到軟件中介發(fā)標的項目中,從中接觸一些大型軟件項目的開發(fā),了解大型軟件項目的開發(fā)流程,從實戰(zhàn)中提高軟件開發(fā)能力。文章介紹了這一過程,并進行經(jīng)驗總結。
關鍵詞:專業(yè)學位;軟件開發(fā);客戶需求;軟件構架;代碼質量
專業(yè)學位與學術性學位在培養(yǎng)規(guī)格上各有側重,在培養(yǎng)目標上有明顯差異。專業(yè)學位以專業(yè)實踐為導向,重視實踐和應用,培養(yǎng)在專業(yè)和專門技術上受到正規(guī)的、高水平訓練的高層次人才,授予學位的標準要反映該專業(yè)領域的特點和對高層次人才在專門技術工作能力和學術能力上的要求。專業(yè)學位教育的突出特點是學術性與職業(yè)性緊密結合,獲得專業(yè)學位的人,主要不是從事學術研究,而是從事具有明顯的職業(yè)背景的工作。
我院從2009年開始招收計算機工程碩士,以培養(yǎng)能夠從事軟件開發(fā)的應用型人才。軟件工程相關知識是各個公司在開發(fā)大型商業(yè)軟件項目當中總結出來的,具有很強的實踐性。如果單獨通過課本的講授,工程碩士難以獲得深刻的印象,而且難以達到教學目的。因此,必須讓工程碩士接觸到真正的商業(yè)軟件項目,并且參與到軟件開發(fā)的各個過程,讓他們更加深刻地體會課程中講授的知識點,提高其軟件開發(fā)能力。
為了達到這個目標,我們在開始培養(yǎng)計算機工程碩士的這一年多時間里,通過與TRILOGY/GDEV合作,讓工程碩士參與到當前主流大型商業(yè)軟件的開發(fā)過程當中,從而更好地掌握軟件工程課程教授的知識,并且了解當今軟件開發(fā)中應用的主流技術和開發(fā)模式,從實戰(zhàn)中提高軟件開發(fā)能力。
1背景介紹
成立于1989年的Trilogy公司,總部位于德州奧斯丁,在印度和中國均設有分支機構。Trilogy公司在全球擁有600多名業(yè)內精英和超過500項的專利技術,有著 17年與世界500強企業(yè)成功合作并獲利的經(jīng)驗,曾被福布斯、財富、商業(yè)周刊、哈佛商業(yè)評論等著名商業(yè)雜志譽為高度創(chuàng)新和高瞻遠矚的公司。
Trilogy 公司當前專注于數(shù)據(jù)挖掘和用戶體驗相關的業(yè)務,倡導新型的商業(yè)服bJktx5aJb5T26Tbz9L1Wkg==務和技術支持,為客戶提供完全的商業(yè)價值保障。其主要客戶包括:Ford Motor,General Electric Healthcare,Daimler-Chrysler,Nissan,Goodyear Tire & Rubber,Prudential,Travelers Insurance,Gateway,IBM等公司。
至2006年止,Trilogy 公司已為汽車、保險、消費電子等行業(yè)提供多個商業(yè)服務項目,如:FordDirect.
com,Goodyear,TTG,Chrysler.com,Prelaunch,Gateway,TIS等。我們通過網(wǎng)上投標,參與這些項目的開發(fā)。
項目開發(fā)的過程主要包括:下載PIP(Product Info Page)和RFP(Request For Proposal)文檔、虛擬機(以及SVN代碼)和程序文檔。PIP是一個網(wǎng)頁,是項目的需求;RFP文檔是關于項目使用的技術概述;虛擬機是模仿對方開發(fā)環(huán)境的平臺;程序文檔放在網(wǎng)站上一個固定位置,如Bundle Location。發(fā)標的公司會提出:
?“Deliverables”:是最終需要提交的東西,一項都不能少,否則算失敗。
?“Acceptance Criteria”:對方接收的標準,符合標準的就算通過。
?“Deadline”:提交時間,超過這個時間即為失敗。
項目提交后,如果判為失敗,開發(fā)者還可以申訴(Rebut)。
2項目開發(fā)的收獲
通過參與這些項目的開發(fā),工程碩士主要在以下幾個方面有所提高。
2.1鍛煉工程碩士與客戶溝通的能力
客戶的需求是基于其公司的商業(yè)邏輯,如何準確無誤地獲得客戶的需求,并且從軟件開發(fā)的角度將需求進行規(guī)范化,這是軟件開發(fā)中必須解決的首要問題。
由于是跟美國IT業(yè)公司進行合作,所以該案例采用的交流方式是線上交流,而非傳統(tǒng)的面對面交流。線上交流的主要方式是使用美國公司提供的Issue tracking system(http://en.wikipedia.org/wiki/Issue_tracking_system),完全是通過英文交流。長期的網(wǎng)上交流,鍛煉工程碩士的英語交流能力和業(yè)務邏輯的理解能力。
2.2學習當前主流技術
在項目開發(fā)過程中,工程碩士能夠接觸到當前IT業(yè)主要使用的各種技術。同時,結合項目地學習可以讓工程碩士更好地了解這些技術應用的場景、目的以及作用。下面列舉項目中用到的一些技術。
1) 編程語言:主要采用Java,便于上手,以免工程碩士花太多時間在學習語言上。
2) 構建工具:Ant是一種基于Java的build工具,用于自動化調用程序完成項目的編譯、打包、測試等。腳本格式基于XML,便于維護,而且基于Java的,具有平臺無關的特點。
3) 虛擬機:要求配置模擬各種平臺的虛擬機環(huán)境。
4) 數(shù)據(jù)庫:采用Oracle、DB2、PostgreSQL和SQL Server,均是當前主流數(shù)據(jù)庫管理軟件。
5) 數(shù)據(jù)庫查詢語言:SQL以及OQL。其中項目中主要使用OQL (http://en.wikipedia.org/wiki/Object_
Query_Language) 即對象查詢語句,使用OQL有利于軟件開發(fā)過程中的效率和規(guī)范化。
6) 測試工具:JUnit,Selenium。JUnit是由Erich Gamma和Kent Beck編寫的一個回歸測試框架,廣泛應用于單元測試當中。Selenium是一個用于Web應用程序測試的工具,通過編寫模仿用戶操作的 Selenium 測試腳本,可以從終端用戶的角度來測試應用程序,能夠支持不同的瀏覽器,以及能夠使用各種編程語言編寫,廣泛應用于UI測試當中。
7) XML技術:XML是一種平臺無關的表示數(shù)據(jù)的方法。使用 XML 創(chuàng)建的數(shù)據(jù)可以被任何應用程序在任何平臺上讀取。甚至可以通過手動編碼來編輯和創(chuàng)建 XML 文檔。XML在網(wǎng)絡應用和信息共享上方便、高效,可擴展。所以,可以XML作為一種先進的數(shù)據(jù)處理方法,使網(wǎng)絡跨越到一個新的境界。在本項目中,XML主要用于書寫配置文件。
2.3熟悉軟件構架
眾所周知,軟件架構是一個軟件先進性集中體現(xiàn)的地方。通過外包軟件的開發(fā),能夠了解軟件項目的架構,分析軟件中應用的各種框架,理解應用的設計模式。下邊是Java EE項目中常用的一些開源的框架。
1) Hibernate是一種Java語言下的對象關系映射解決方案。它是使用GNU寬通用公共許可證發(fā)行的自由、開源的軟件。它為面向對象的領域模型到傳統(tǒng)的關系型數(shù)據(jù)庫的映射,提供了一個使用方便的框架。Hibernate也是目前Java開發(fā)中最為流行的數(shù)據(jù)庫持久層框架。它的設計目標是將軟件開發(fā)人員從大量相同的與數(shù)據(jù)持久層相關的編程工作中解放出來。無論是從設計草案還是從一個遺留數(shù)據(jù)庫開始,開發(fā)人員都可以采用Hibernate。
2) Spring是一個開源框架[1-2],它由Rod Johnson創(chuàng)建。它是為了解決企業(yè)應用開發(fā)的復雜性而創(chuàng)建的。Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。Spring提供了面向切面編程的豐富支持,允許通過分離應用的業(yè)務邏輯與系統(tǒng)級服務(例如審計和事務管理)進行內聚性的開發(fā)。應用對象只完成業(yè)務邏輯,并不負責其他的系統(tǒng)級關注點,例如,日志或事務支持[3-4]。
3) Struts有一組相互協(xié)作的類、Serlvet以及JSP TagLib組成[5]?;赟truts構架的Web應用程序基本上符合JSP Model2的設計標準,可以說是MVC設計模式的一種變化類型。我們參與的軟件外包項目很容易理解為什么Struts是一個Web軟件開發(fā)框架,而不僅僅是一些標記庫的組合,理解理解Struts的控制器(Controller),模型層(Model)和視圖層(View)。體會在模型層,Struts可以很容易地與數(shù)據(jù)訪問技術相結合,包括EJB、JDBC和Object Relation Bridge;在視圖層,Struts能夠與JSP、Velocity Templates、XSL等表示層組件相結合。
項目中還有一些獨有的框架,由于細節(jié)繁瑣,不便介紹。接觸這些框架,可以獲得寶貴的軟件開發(fā)經(jīng)驗。
2.4提高書寫代碼的質量
在真實項目的驅動下,工程碩士通過自己閱讀項目中的優(yōu)質源碼,以及在經(jīng)驗豐富的開發(fā)人員的幫助下,形成良好的編碼風格,提高代碼質量。
一個簡單的例子是,工程碩士在參與項目之前,代碼質量相當?shù)?,主要體現(xiàn)在:代碼效率低下,缺乏注釋信息,代碼不具有擴張性,代碼潛在bug多等。而對方真實的項目的代碼中包含大量注釋信息,以及一些必須的日志信息,具有良好的編碼風格。在查找這些代碼的bug或提升其功能過程中,一定會接受對方良好的開發(fā)風格熏陶。
3結語
總而言之,通過軟件外包項目的開發(fā),能夠極大地提高工程碩士的學習興趣以及效率。其具備的主要優(yōu)點如下:
1) 該案例是基于真實的大型商業(yè)項目,是當前主流技術的集中體現(xiàn);
2) 工程碩士可以接觸到軟件開發(fā)過程中的各個階段,有利于工程碩士把握軟件開發(fā)流程;
3) 工程碩士可以通過閱讀優(yōu)質源碼以及和有經(jīng)驗的開發(fā)人員交流來提高軟件開發(fā)能力,以及通過與客戶交流來提高提煉需求的能力;
4) 外包軟件開發(fā)實踐性很強,工程碩士能夠很好地補充課本的不足;
5) 從外包軟件開發(fā)中,工程碩士能夠獲得很好收益,激發(fā)學習熱情。
我們認為,讓工程碩士參與軟件開發(fā)實戰(zhàn),積極推進了碩士研究生培養(yǎng)模式的改革,加強了應用型高層次人才的培養(yǎng),促進了人才培養(yǎng)與社會需求的有效銜接。
參考文獻:
[1]