熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

JAVA開放源碼項目與工具在企業應用開發中的運用

2013-11-23 20:08:37  來源: Java開源技術 

  近兩年開放源碼項目發展日益壯大出現了很多有著廣闊用戶群體的項目與產品它們在企業應用開發中正在發揮著越來越大的作用本文以基於JEE架構的企業應用開發為例探討了如何在項目中深入運用JAVA開發源碼項目與工具
  
  企業應用開發目前面臨的主要問題
  企業應用是指服務於商業目的處理企業業務信息數據的軟件系統雖然隨著dot COM熱潮逐漸冷卻企業開始謹慎考慮自己在應用系統開發方面的投入但是畢竟企業的業務流程需要專門的信息系統處理從而提高自動化程度減少中間環節加快信息處理速度因此目前國內的企業應用項目開發還是日益火爆尤其在電子政務CRMSCM等領域更是如此
  
  但是不論企業應用開發是采用自行開發或者委托系統集成商進行開發都存在著下面一些情況
  
  大部分項目超時或者超出預算
  項目在部署以後BUG很多而且修改的周期比較長
  對於系統集成商來說下面的情況更是比較普遍
  
  沒有統一的FRAMEWORK每個項目都會重新設計ARCHITECTURE
  項目開發過程的自動化程度和重復步驟不是很多人為引入的BUG很多
  
  開放源碼項目現狀
  開放源碼運動在年代開始日益發展目前已經成為軟件業內不可低估的一股勢力比較著名的有LinuxApacheTomcatMySQL等目前開放源碼的潮流已經超出了操作系統數據庫管理系統和WEB服務器等系統開發領域開發在企業應用開發中尋找新的領地尤其是對於企業應用開發的框架和CASE工具開放源碼項目都有很優秀的解決方案
  
  國外開放源碼項目的集中地有以及其中前者為大家奉獻了著名的ApacheTomcatStrutsAxis而後者是最著名的開源項目中心同時國內自年代末開始也有很多人投入到開源項目的開發比較集中的網址是 共創軟件聯盟() 等等他們除了提供各種CASE工具以外還有一些項目是專注於特定領域的解決方案開發如CRM等
  
  JAVA開發源碼項目與工具的應用
  對於目前企業應用開發競爭日益激烈需求變更頻繁各個系統集成商都面臨巨大的生存壓力其中有兩個方面表現尤其突出
  
  沒有統一的軟件開發過程或者照搬重量級的軟件開發過程例如RUP等但是往往由於時間等壓力的影響並不能切實執行
  大部分企業仍然沒有擺脫手工作坊期間的做法每個項目或者產品由於管理人員或者團隊的不同重新設計系統框架浪費大量的時間在結構驗證與調整上
  企業應用系統的開發中需求的變更是項目中唯一不變的東西而且為了保持開發的一致性和利益最大化系統集成商需要與客戶保持長期的合作因此采取演進式敏捷軟件開發可以更好的保證項目質量在所有的敏捷軟件開發方法中XP是目前應用最為廣泛的一種它是一種高度動態的過程它通過非常短的迭代周期來應對需求的變化溝通簡單反饋和勇氣是它的四大核心價值同時它集中了業界的很多最佳實踐目前已經有條之多XP強調通過嚴格執行全部的最佳實踐來獲得極限效果
  
  同時出於復用和效率的考慮尤其是對於系統集成商企業應用系統應該具有自己的框架和結構擁有具有良好性能經過項目驗證的系統框架結合有效的軟件開發過程系統集成商可以快速成功地開發企業應用系統
  
  為了更好的開發成功的系統系統集成商們可以試著從以下兩個方面著手解決問題
  
  結合開源工具的支持在組織內部實施敏捷軟件開發方法
  為核心業務領域建立靈活有效的Framework
  由於目前很多企業應用是采用基於JEE技術的網絡應用程序開發因此下面主要介紹基於JAVA的開源項目工具的應用
  
  開源工具與XP
  XP的條最佳實踐對於所有的企業應用開發商而言由於組織和文化的不同不可能全部應用但是下面幾個實踐是有條件逐步實施的
  
  代碼規范CODE STANDARD
  測試驅動開發TESTDRIVEN DEVELOPMENT
  日構建DAILY BUILDING
  持續集成CONTINUOUS INTEGRATION
  小步發布SMALL RELEASE
  每日晨會DAILY MEETING
  每周小時工作HOURS A WEEK
  其中CODE STANDARD和TDD是CONTINUOUS INTEGRATIONDAILY BUILDING和SMALL RELEASE的基礎而DAILY MEETING和HOURS A WORK是單獨的實踐過程可以與其他的實踐想結合增強項目小組的溝通激發士氣
  
  需要說明的是以上最佳實踐並非XP所獨有而是被最多的軟件開發方法所應用其中日構建就在微軟的軟件開發方法中正式出現過
  
  代碼規范
  雖然大部分的企業在一定程度上推行代碼標准與規范而且對於使用JAVA的應用程序開發也有SUN的推薦編碼規范但是實際的情況並不理想
  
  主要的原因在於一方面開發人員的習慣勢力很大另一方面代碼審查的力度不夠如果能夠借助工具從一定程度上幫助進行代碼標准的執行情況檢查那麼代碼審查就可以著重檢查程序的邏輯和性能等方面
  
  開源產品CheckStyle () 可以幫助開發組織解決代碼標准審查的問題
  
  目前的最新版本為它提供了兩種運行方式一種是命令行一種是與Ant結合(Ant自以後提供的OPTIONAL TASKS中有對於CheckStyle的支持)同時SourceForge中有對於JBuilder等流行IDE的插件支持可以定義GlobalProject級別上的屬性文件 但是目前只是支持版本
  
  在x版本之前CheckStyle的配置信息寫在Property File中而在x之後配置信息為XML文件配置更加靈活的發布版本中提供了針對Sun Code Conventions的特定Check File可以參考使用
  
  建議執行情況
  
  手動執行開發人員在IDE中手動觸發CheckStyle檢查或者代碼審查時由審查者手動執行
  自動執行將CheckStyle與源碼控制系統(CVS)結合在源碼Checkin的時候進行規則判斷如果不符合則不允許代碼進入系統
  測試驅動開發
  測試先行或者測試驅動是XP的基本實踐之一同時測試在軟件開發中的重要作用正越來越得到人們的重視審查和測試作為系統確認和驗證的有效方式是項目質量保證的重要措施
  
  下面按照一般的測試分類介紹各個領域內的開源測試工具
  
  單元測試JUnit ()
  JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(regression testing framework)用於Java開發人員編寫單元測試之用下面介紹的開源測試工具很多都是對於JUnit的擴展
  
  它目前的版本為為編寫單元測試提供了主要的接口目前主流的IDE都提供了對於JUnit的支持
  
  XP強調測試先行尤其重視單元測試系統集成商需要通過軟件開發過程的執行來強化JUnit的使用
  
  目前很多商業測試軟件都提供了與JUnit的聯合使用例如獲得年Jolt測試類工具亞軍和生產率大獎的Jtest (ParaSoft公司產品內置余條編碼規范提供Java代碼靜態和動態檢查同時還可以自動生成簡單的測試用例等等)就可以導入和導出JUnit的測試用例
  
  集成與功能測試HttpUnit () & Cactus ()
  HttpUnit是一套通過HTTP連接測試Web應用程序的Java類在結合JUnit的情況下HttpUnit可以作為一種創建測試程序的強大工具用來保證Web應用程序正常的端對端功能
  
  雖然JUnit自身就可以通過編寫單一類的測試程序對服務器端Java代碼進行測試不過有了HttpUnit的幫助JUnit就可以擴展為模擬Web浏覽器Web服務器的工作方式對整個Web程序結構進行測試
  
  Cactus為我們提供了一種測試SERVLET等WEB組件的有效手段它是JUnit的一個擴展但是它又和JUnit有一些不同Cactus的測試分為三種不同的測試類別JspTestCase ServletTestCase FilterTestCase 而不是像JUnit就一種TestCaseCactus的測試代碼有服務器端和客戶端兩個部分他們協同工作
  
  一般意義上可以采用Cactus作集成測試而使用HttpUnit做功能測試
  
  雖然在集成與功能測試方面有很多優秀的開源工具但是在實際應用過程中還是采用商業測試軟件的比較多對於復雜應用更是如此這是因為集成與功能測試大部分還是由專門的測試人員進行而他們對於已有的商業軟件例如Rational RobotETest SuiteWinRunner等都比較熟悉同時商業軟件也提供了更為強大的功能
  
  壓力與性能測試 JMeter ()
  由於企業應用越來越復雜用戶數量也是越來越多系統的性能參數以及眾多的非功能性需求在開發中獲得了越來越多的重視因此很多壓力與性能測試工具也開始出現這其中有一定影響的是Apache Software Foundation的JMeter
  
  JMeter是%的JAVA桌面應用用來測試系統的負載與性能它最開始設計是用來測試WEB應用後來加以擴展可以測試HttpFTP支持JDBC的關系型數據庫的性能與壓力同時JMeter提供一定的定制功能系統集成商可以自行開發針對EJBCORBA或者SOAP的插件
  
  壓力與性能測試方面由於測試比較復雜實際企業應用測試中也是采用商業測試軟件比較多例如LoadRunnerJProbe Suite以及與JBuilder 同步發布的OptimizerIT
  
  日構建
  在軟件開發
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28003.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.