歐利松,徐 毅
(大連民族大學(xué) 理學(xué)院,遼寧 大連 116600)
基于J2EE架構(gòu)敏捷開發(fā)的研究
歐利松,徐 毅
(大連民族大學(xué) 理學(xué)院,遼寧 大連 116600)
針對互聯(lián)網(wǎng)項目在開發(fā)過程中的一系列繁瑣問題,采用快速響應(yīng)的敏捷開發(fā)模式,搭建敏捷開發(fā)平臺,解決自動化與持續(xù)集成的問題。實踐表明,基于J2EE 架構(gòu)敏捷開發(fā)不僅提升軟件的質(zhì)量,而且降低項目開發(fā)的成本,具有較高的可行性和應(yīng)用價值。
敏捷開發(fā);持續(xù)集成;J2EE 架構(gòu)
瀑布型的傳統(tǒng)開發(fā)是以文檔驅(qū)動的開發(fā)方法,要求有詳細(xì)的項目計劃和文檔,部署、QA測試和交付過程嚴(yán)謹(jǐn),不僅集成周期時間長,而且開發(fā)成本較高、不易維護(hù)。而敏捷方法的優(yōu)點則體現(xiàn)在能夠快速和短周期的迭代開發(fā),強(qiáng)調(diào)的是人員在整各開發(fā)過程的作用。
本文研究了敏捷開發(fā)方法的工作流程以及其特點和優(yōu)勢,引入基于J2EE架構(gòu)敏捷開發(fā)平臺,詳細(xì)闡述了其原理和開發(fā)架構(gòu),并在此平臺上進(jìn)行實踐研究。
敏捷開發(fā)強(qiáng)調(diào)個人與交互重于開發(fā)過程與工具:以人為核心,團(tuán)隊的交流、反饋和協(xié)作重要性高于工具和方法,從而提高工作效率;它強(qiáng)調(diào)可用的軟件重于復(fù)雜的文檔:面面俱到的文檔既不滿足客戶的需求,也不能代表軟件可用性,而軟件開發(fā)的主要任務(wù)是創(chuàng)建可以工作的軟件,因此要減少對文檔的依賴;它強(qiáng)調(diào)客戶的合作重于合同談判:迅捷開發(fā)方法利用短期迭代,尋求客戶溝通交流并響應(yīng),避免出現(xiàn)后期合同談判時對雙方均不利的局面;它強(qiáng)調(diào)響應(yīng)變化重于遵循計劃:軟件開發(fā)應(yīng)有“適應(yīng)性”而不是“預(yù)設(shè)性”,對變化進(jìn)行響應(yīng)的價值勝于始終遵循固定的計 。敏捷開發(fā)工作流程如圖1所示。
圖1 敏捷開發(fā)流程
敏捷方法指快速響應(yīng)變化的開發(fā)模式,主要有:XP(極限編程)、Scrum、Lean Development(精益開發(fā))、ASD(自適應(yīng)軟件開發(fā))、DSDM(動態(tài)系統(tǒng)開發(fā)方法)等。如何選擇一種敏捷方法需要考慮團(tuán)隊的情況、方法的復(fù)雜度、工具實用性等因素。敏捷方法正如其本身一樣具有可變性,是不斷演進(jìn)的過程。因此,每個采用敏捷開發(fā)的團(tuán)隊需要考量諸多因素選擇最適合的開發(fā)方法。敏捷開發(fā)思想不斷更新并滲透于軟件項目中,而開發(fā)平臺基于其思想得到良好的運用與實現(xiàn)。
敏捷開發(fā)平臺基于敏捷開發(fā)思想與技術(shù)工具集成的快速開發(fā)應(yīng)用平臺,主要開發(fā)J2EE架構(gòu)模型(Model)、視圖(View)、控制器(Controller)模式的Web項目。架構(gòu)主要由開發(fā)環(huán)境、源代碼倉庫、Web服務(wù)器等組成,包括由Web瀏覽器以及應(yīng)用客戶端等組成的客戶層;表現(xiàn)層為JSP、Servlet、Javabean等Web容器;業(yè)務(wù)邏輯層包括實體EJB或消息驅(qū)動Bean。敏捷開發(fā)平臺流程如圖2所示。
圖2 敏捷開發(fā)平臺結(jié)構(gòu)
敏捷開發(fā)平臺充分運用了敏捷開發(fā)迭代、循序漸進(jìn)的思想,如圖3所示。首先配置平臺開發(fā)環(huán)境, 如Eclipse所需的JDK及其插件、Struts和Hibernate環(huán)境等,從源代碼倉庫(Subversion)獲取新的源代碼,這時需要對新代碼進(jìn)行管理以及單元測試,目的就是確保代碼能夠正常編譯運行,并且保證所有單元測試成功,然后將改正的新代碼提交到源代碼倉庫[2]。
圖3 敏捷開測試過程
持續(xù)集成服務(wù)器由Cruise Control、JUnit、Ant及代碼檢驗?zāi)KCheck Style構(gòu)成,Cruise Control為持續(xù)集成工具,實現(xiàn)對源代碼以及管理模塊進(jìn)行檢測;Ant 是一個將軟件編譯、測試、部署等步驟聯(lián)系在一起加以自動化的一個工具,如果代碼發(fā)生變化,就由Ant通過調(diào)用Target樹,即可執(zhí)行各種Task。每個Task實現(xiàn)了特定接口對象,初始化目標(biāo)目錄以及清空初始化環(huán)境再而建立新的目錄,然后Check Style工具幫助Java開發(fā)人員完成代碼規(guī)范檢查,由Check Style檢測規(guī)范的代碼編譯源程序生成Target Class,并調(diào)用JUnit測試框架進(jìn)行單元測試。如果上述測試檢驗全部通過,即可將整個應(yīng)用打包發(fā)布到Web服務(wù)器[5]。
3.1 敏捷開發(fā)環(huán)境的搭建
首先需要集中FTP服務(wù)器和SVN服務(wù)器。SubVersion服務(wù)器用于保存版本代碼庫以及歷史修改記錄和開發(fā)人員的協(xié)同,SVN服務(wù)器部署配置完成,客戶端在Checkout下就可以與SVN服務(wù)器同步。File Transfer Protocol Server適用文件傳輸以及文件存儲達(dá)到信息共享的目的,并且可以在預(yù)覽服務(wù)器進(jìn)行預(yù)覽。
后臺環(huán)境由Eclipse、Tomcat插件或者Jetty對 Class、JSP的調(diào)試;由Maven集中管理Jar包,Ant則負(fù)責(zé)本地打包以及對包的拷貝,Tomcat插件快速部署進(jìn)行開發(fā)。最后把分支版本在上述環(huán)境中進(jìn)行集成測試。
測試環(huán)境同樣依賴集成測試、集成環(huán)境的同一套Jar包,并且Nexus 、Maven、Tomcat服務(wù)器發(fā)揮了不可缺少的作用。整個過程中,需求階段需要驗收與確認(rèn)的驗收測試,規(guī)格說明需要系統(tǒng)測試,概要設(shè)計需要集成測試,詳細(xì)設(shè)計需要單元測試,一系列測試通過后即可發(fā)布到外網(wǎng)。
3.2 測試體系架構(gòu)
敏捷開發(fā)框架是基于SOA的軟件開發(fā)模式設(shè)計并基于J2EE技術(shù)實現(xiàn)的應(yīng)用程序開發(fā)框架。該系統(tǒng)綜合利用了ESB技術(shù)、EIP設(shè)計模式、IOC模式、構(gòu)件設(shè)計、管理、組裝技術(shù)以及數(shù)據(jù)集成和數(shù)據(jù)交換等關(guān)鍵技術(shù),具有良好的與其他軟件開發(fā)管理系統(tǒng)接口的能力[4]。
圖4 測試系統(tǒng)架構(gòu)
該系統(tǒng)支持集中與分布式部署,內(nèi)置高性能均衡服務(wù)器;工具類使用Mantis做Bug Tracker,Git做版本控制,Enkins做發(fā)布,Review Board做Code review;Selenium做網(wǎng)頁自動測試,Atrium做Wiki?;诿艚蓍_發(fā)平臺的繼承者,敏捷開發(fā)思想作用于開發(fā)人員,提供快速迭代的運行平臺,該工具方便便捷,開發(fā)者專注于研發(fā)過程,用戶也得到很好的體驗?;诿艚蓍_發(fā)平臺開發(fā)的應(yīng)用程序不僅持續(xù)集成,而且靈活性、松散耦合、可重構(gòu)的系統(tǒng)需求也得到較好的滿足。
3.3 持續(xù)集成
在敏捷開發(fā)中,持續(xù)集成是整個流程的關(guān)鍵。持續(xù)集成是前期開發(fā)周期中團(tuán)隊成員進(jìn)行持續(xù)不斷地進(jìn)行集成與反饋,目的是為了避免在后期開發(fā)時再發(fā)現(xiàn)Bug導(dǎo)致難以修改。該敏捷開發(fā)平臺在持續(xù)集成模塊中不斷的編譯測試,在開發(fā)過程不斷得到反饋最終形成一個可用版本。
持續(xù)集成周期的流程:首先持續(xù)集成服務(wù)器對源碼庫進(jìn)行監(jiān)視,并持續(xù)的從版本控制服務(wù)器檢測代碼更新狀態(tài);如若有代碼更新,集成服務(wù)器對進(jìn)行自動化編譯與單元測試;安裝部署可執(zhí)行文件驗證測試,最后進(jìn)行代碼分析,產(chǎn)生可執(zhí)行的軟件提供給測試人員進(jìn)行測試[6]。
持續(xù)集成的核心思想是切分任務(wù),縮短每次迭代的間隔(對應(yīng)的是細(xì)小任務(wù),同時也是對應(yīng)的細(xì)小時間),然后持續(xù)集成的必要條件是要用自動化的方式替代重復(fù)勞動,包括測試、部署、分析等。CruiseControl架了集成環(huán)境,其中包括自動發(fā)布、自動升級、日單元測試、每日日代碼檢查的機(jī)制,浪費在Build、FTP上傳和Run Unit Test的時間大幅縮小。
敏捷開發(fā)方法不僅應(yīng)用于很多互聯(lián)網(wǎng)公司的開發(fā),而且已滲透入其它行業(yè)運作模式。而一個互聯(lián)網(wǎng)項目的敏捷開發(fā),需要完善的敏捷開發(fā)基礎(chǔ),涉及軟件開發(fā)的分析、設(shè)計、實現(xiàn)和測試等一系列過程,還需要對應(yīng)的基礎(chǔ)平臺、項目管理以及開發(fā)輔助工具才能構(gòu)成一個完整的開發(fā)體系?;贘2EE 架構(gòu)敏捷開發(fā)架構(gòu),不僅能實現(xiàn)代碼規(guī)范、測試驅(qū)動并發(fā),而且測試自動化、持續(xù)集成,大幅提高了工作效率與軟件質(zhì)量。但在測試自動化方面仍需進(jìn)一步研究。
[1] Craig Larman.敏捷迭代開發(fā)管理者指南[M].北京:中國電力出版社,2004.
[2] Robert C Martin.敏捷軟件開發(fā):原則、模式與實踐[M].北京:清華大學(xué)出版社,2003.
[3] 戴建國,郭理,曹傳東.JUnit 框架剖析[J]. 計算機(jī)與數(shù)字工程,2008,36(8):43-45.
[4] 趙強(qiáng).基于開源軟件的J2EE企業(yè)級應(yīng)用開發(fā)[M].北京:電子工業(yè)出版社,2007.
[5] 肖卓程,荊金華.持續(xù)集成在 Evain中的實現(xiàn)[J].計算機(jī)工程與設(shè)計,2006,27(14):2362-2364.
[6] 秦保華,張永進(jìn),孫毅.基于 MVC 設(shè)計模式和 J2EE 架構(gòu)的 Web 信息系統(tǒng)框架研究[J].電子信息工程,2006(9):151-157.
[7] Willian C Wake.重構(gòu)手冊[M].北京:中國電力出版社,2004.
[8] Martin Fowler.重構(gòu):改善既有代碼的設(shè)計[M].北京:中國電力出版社,2004.
[9] Wisly R F.Anne mette jonassen hass, configuration management principles and[M].NY,USA:Practice Addison Wesley Professional, 2003.
[10] 王慶育.軟件工程[M].北京:清華大學(xué)出版社,2004.
[11] Paul M Duvall,Steeve Matyas,Andrew Glover.持續(xù)集成軟件質(zhì)量改進(jìn)和風(fēng)險降低之道[M].北京:機(jī)械工業(yè)出版社,2008.
[12] Kent Beck.測試驅(qū)動開發(fā)[M].北京:中國電力出版社,2004.
歡迎訂閱《電子科技》
郵發(fā)代號:52-246
Research on Agile Development Based on the J2EE Architecture
OU Lisong,XU Yi
(School of Science, Dalian Minzu University, Dalian 116600, China)
For the internet project in the development process of a series of tedious problems, the rapid response agile development model is adopted to build an agile development platform for automation and continuous integration. Practice shows that agile development based on J2EE architecture not only improves the quality of the software, but also reduces the cost of project development.
agile development; continuous integration; J2EE architecture
2016- 06- 05
歐利松(1992-),男,碩士研究生。研究方向:人臉識別。
10.16180/j.cnki.issn1007-7820.2017.05.044
TP311.52
A
1007-7820(2017)05-162-03