• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于J2EE某公司遺留管理系統(tǒng)改造升級分析與實現(xiàn)

      2020-11-28 07:39:24米揚
      中國管理信息化 2020年19期
      關(guān)鍵詞:源代碼

      米揚

      [摘 ? ?要] 針對某公司已建業(yè)務(wù)系統(tǒng)源碼不全,原開發(fā)公司和人員均不維護,但此公司又亟需使用此系統(tǒng)的局面,通過相關(guān)分析和技術(shù)獲得源碼,最終成功改造升級系統(tǒng)并解決相關(guān)業(yè)務(wù)問題,讓其公司的業(yè)務(wù)效率得到進一步提升。

      [關(guān)鍵詞] J2EE;源代碼;反編譯;web開發(fā);Eclipse;遺留系統(tǒng)

      doi : 10 . 3969 / j . issn . 1673 - 0194 . 2020. 19. 075

      [中圖分類號] TP315 ? ?[文獻標(biāo)識碼] ?A ? ? ?[文章編號] ?1673 - 0194(2020)19- 0184- 02

      0 ? ? ?引 ? ?言

      源碼是系統(tǒng)開發(fā)的重要基石,在較多的信息工程項目中,業(yè)務(wù)方往往僅重視其代碼入檔,但入檔代碼能否運行并沒有去驗證,一旦承擔(dān)此項目的開發(fā)公司由于經(jīng)營等原因不再進行保障,此時再拿出驗收時的源代碼才發(fā)現(xiàn)運行不起,給業(yè)務(wù)方造成較大損失。當(dāng)源碼無法運行的情況已經(jīng)發(fā)生時,多數(shù)接手的開發(fā)公司會選擇重新建設(shè)一套新的代碼來替換現(xiàn)有系統(tǒng),但處于系統(tǒng)部分功能還能使用,業(yè)務(wù)方不允許重建,加之系統(tǒng)本身又存在諸多bug,卻要求較短時間解決的多種困難境地情況時,一味地重新開發(fā)就顯得不現(xiàn)實,對于這種遺留系統(tǒng)[1],文章不涉及具體的代碼編寫,主要是通過分析和相關(guān)技術(shù)來闡述遇到此種情況的系統(tǒng)升級改造的一種解決思路和方式方法。

      1 ? ? ?系統(tǒng)現(xiàn)狀分析

      改造升級任何系統(tǒng)前,首先需對系統(tǒng)處于的現(xiàn)狀進行一次全面問診工作。主要從硬件環(huán)境、網(wǎng)絡(luò)環(huán)境、軟件環(huán)境、系統(tǒng)數(shù)據(jù)、軟件操作,最后到業(yè)務(wù)熟悉度六個層面進行摸底。

      (1)硬件環(huán)境

      系統(tǒng)是部署在物理服務(wù)器還是虛擬服務(wù)器上?配置情況怎樣?筆者主持的系統(tǒng)是部署在某公司的Vmware虛擬化平臺提供的系統(tǒng)計算、存儲服務(wù)。

      (2)網(wǎng)絡(luò)環(huán)境

      網(wǎng)絡(luò)環(huán)境主要查看是外網(wǎng)還是公司內(nèi)網(wǎng),獨立IP地址還是NAT轉(zhuǎn)換的內(nèi)網(wǎng)地址?網(wǎng)絡(luò)連通性、延遲性怎樣?特別是網(wǎng)速會在一定程度上影響用戶體驗,需重點診斷。此系統(tǒng)的網(wǎng)絡(luò)接入為虛擬網(wǎng)絡(luò)架構(gòu)下的IP,千兆內(nèi)網(wǎng)環(huán)境,與其下屬單位網(wǎng)絡(luò)連通狀況良好,延遲性不高,還要包括CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)配置和使用情況。

      (3)軟件環(huán)境

      軟件環(huán)境主要從運行架構(gòu)、技術(shù)體系、數(shù)據(jù)庫、應(yīng)用服務(wù)器、操作系統(tǒng)進行分析。筆者尋找出.class和.jar的后綴文件,可知采用的Java語言開發(fā),同時啟動命令和Main文件反編譯。接著從WEB-INF/conf文件夾下的配置文件和WEB-INF/lib下的jar文件進一步分析,在配置文件中找出數(shù)據(jù)庫配置文件和jar文件解壓后的文件結(jié)構(gòu)。

      綜合分析可知采用了B/S運行架構(gòu)、J2EE技術(shù)體系開發(fā)[2]、Postgresql數(shù)據(jù)庫、CentOS操作系統(tǒng)。

      (4)系統(tǒng)數(shù)據(jù)

      系統(tǒng)存儲的數(shù)據(jù)一般有2大類數(shù)據(jù)。一為結(jié)構(gòu)化,使用數(shù)據(jù)庫方式存儲業(yè)務(wù)信息數(shù)據(jù)。二為系統(tǒng)業(yè)務(wù)信息所附帶非結(jié)構(gòu)化的附件數(shù)據(jù),主要包括合同管理、制度管理、HSE管理等非結(jié)構(gòu)化文件數(shù)據(jù)。其中,可進入數(shù)據(jù)庫查看相關(guān)表并初步分析其關(guān)系,詳細(xì)關(guān)系還需從源代碼進行分析。

      (5)軟件操作和業(yè)務(wù)熟悉

      軟件操作主要是了解到系統(tǒng)目前主要功能,發(fā)現(xiàn)與業(yè)務(wù)的對應(yīng)關(guān)系。筆者的系統(tǒng)為一套整體開發(fā)的業(yè)務(wù)應(yīng)用系統(tǒng),合同、新聞、資金、HSE、投資計劃等作為子系統(tǒng)涵蓋在經(jīng)營管理系統(tǒng)中。

      最后,業(yè)務(wù)熟悉是在對軟件操作及前面提及的問題熟悉基礎(chǔ)上,再與用戶進行系統(tǒng)使用感受和業(yè)務(wù)需求的調(diào)研分析,主要包括系統(tǒng)使用中遇到的問題和需提升的地方,以及系統(tǒng)用戶量和各下屬單位是否有自己獨立的需求。

      2 ? ? ?邏輯實現(xiàn)關(guān)系和反編譯工具

      2.1 ? 邏輯實現(xiàn)關(guān)系

      J2EE是Java企業(yè)版,它的核心是一組技術(shù)規(guī)范與指南,提供基于組件的方式來設(shè)計、開發(fā)、組裝和部署企業(yè)應(yīng)用。此種架構(gòu)的系統(tǒng)代碼實現(xiàn)關(guān)系[3]如下:web頁面(JSP+HTML)到Action到Service到DAO接口到DAO IMPL實現(xiàn)到數(shù)據(jù)庫,其中model對應(yīng)數(shù)據(jù)庫表的實體類,暫時存儲數(shù)據(jù)方便持久化,在server中往往會獲取相應(yīng)數(shù)據(jù)。正如“Action服務(wù)生,點什么菜,菜上給幾號桌,都是它的任務(wù);Service廚師,action送來的菜單上的菜全是它做的;Dao小工和原材料(數(shù)據(jù)庫)打交道事情全是它管?!?/p>

      2.2 ? 反編譯工具[4]

      反編譯是一個對可執(zhí)行文件進行逆向分析,從而得到源代碼的過程。Java這樣運行在虛擬機上的編程語言,比較容易進行反編譯。目前Java比較成熟的反編譯工具:(1)JD;(2)procyon-decompiler;(3)luyten;(4)Jadx。這些都會遇到反編譯錯誤的現(xiàn)象,需結(jié)合使用。Java多數(shù)直接放class文件或者打包在jar里面,此系統(tǒng)是直接打包在jar中,筆者使用的JD工具,先使用JD-GUI進行大批class文件反編譯,JD-GUI能從jar中生成相應(yīng)的文件夾結(jié)構(gòu),之后使用JD-Eclipse進行輔助,最終在Eclipse中構(gòu)建出項目結(jié)構(gòu)。

      3 ? ? ?開發(fā)環(huán)境部署

      3.1 ? 安裝數(shù)據(jù)庫

      此系統(tǒng)使用的PostgreSQL數(shù)據(jù)庫[5],為開源的對象關(guān)系數(shù)據(jù)庫。筆者本機為Mac操作系統(tǒng),使用homebrew來安裝。(1)安裝:brew install postgresql ;(2)啟動:pg_ctl start;(3)創(chuàng)建postgres用戶: create user postgres with password 'XXXXXX';(4)安裝pgAdmin:直接從官網(wǎng)下載安裝,pgAdmin是PostgreSQL數(shù)據(jù)庫的界面管理工具 ,創(chuàng)建數(shù)據(jù)庫使用其進行;(5)服務(wù)器備份數(shù)據(jù)庫:pg_dump -U postgres -F t -f /數(shù)據(jù)庫.tar 數(shù)據(jù)庫;(6)本機恢復(fù)數(shù)據(jù)庫:pg_restore -U postgres -d 數(shù)據(jù)庫 /數(shù)據(jù)庫.tar。

      3.2 ? 構(gòu)建工程目錄

      通過Eclipse建立java project。在src目錄中存放反編譯的java源文件,主要包含各子系統(tǒng)action、model、server、dao各種類、接口等文件;Reference Libraries目錄存放工程里面引入的Jar包;JRE System Library目錄表示引入Java版本的運行環(huán)境;data目錄存放附件數(shù)據(jù);www目錄是視圖和項目配置的核心,存放各子系統(tǒng)的jsp、html等視圖文件,其中在WEB-INF目錄建立著conf、xml等配置文件,以及編譯后的classes文件。這樣工程目錄的設(shè)計清楚,各子系統(tǒng)的功能區(qū)明確,使用此框架進行開發(fā)時,可以根據(jù)自己負(fù)責(zé)的功能對其進行擴展和完善,即可高效開發(fā)。

      3.3 ? 啟動應(yīng)用

      在Eclipse中可配置Java Application 使用Main類運行系統(tǒng),成功啟動應(yīng)用信息在瀏覽器中輸入:0.0.0.0:8888進行訪問,訪問結(jié)果出現(xiàn)登錄頁面表示應(yīng)用成功通過瀏覽器被用戶訪問。

      4 ? ? ?實用案例

      在已搭建好的開發(fā)環(huán)境中,通過對資金管理子系統(tǒng)中對外支付功能的刪除功能改造為作廢功能做一個簡介,說明下主要升級改造思路:(1)啟動應(yīng)用;(2)打開對外支付功能網(wǎng)頁;(3)用sublime全文搜索定位:啟動應(yīng)用之后,打開對外支付頁面,分析作廢功能可以沿用的頁面,如對外支付申請錄入,復(fù)制“對外支付申請錄入”字樣,通過sublime選擇查找在文件查找進行全文搜索來快速定位源碼位置;(4)打開定位文件并編寫目錄文件:在定位的源碼位置處添加代碼;(5)編寫js和html視圖文件:通過視圖文件引用action代碼;(6)編寫action源碼文件;(7)編寫model源碼文件;(8)編寫server源碼文件;(9)編寫dao和dao impl源碼文件;(10)重新編譯運行;(11)發(fā)布至生產(chǎn)環(huán)境:在本機開發(fā)測試成功后,需要把編譯過的class文件使用jar uvf命令重新打包成jar文件替換到生產(chǎn)服務(wù)器中jar文件,同時替換修改的視圖文件并重新運行服務(wù)。

      5 ? ? ?結(jié) ? ?語

      文章闡述了已建系統(tǒng)但源碼不能運行,亟需改造升級相關(guān)功能并解決bug來保障系統(tǒng)業(yè)務(wù)的正常運行,通過相關(guān)分析技術(shù)思路、方法和工具的配套使用,成功復(fù)原了基于J2EE的某公司遺留系統(tǒng)源碼和開發(fā)環(huán)境并實現(xiàn)新功能開發(fā)的相關(guān)過程。實際的項目中時常會發(fā)生對待遺留系統(tǒng)的問題,那么筆者希望通過此實際項目的解決之道,不光能為Java方面的項目提供參考,也能為解決相類似問題提供一個可借鑒的新方法,對軟件公司和開發(fā)人員具有一定的實用價值。

      主要參考文獻

      [1]Chris Birchall.遺留系統(tǒng)重建實戰(zhàn)[M].張喻,張耀丹,禚嫻靜,譯.北京:人民郵電出版社,2017.

      [2]黑馬程序員.Java EE企業(yè)級應(yīng)用開發(fā)教程(Spring+Spring MVC+MyBatis)[M].北京:人民郵電出版社,2017.

      [3]李興華. Java Web開發(fā)實戰(zhàn)經(jīng)典基礎(chǔ)篇(JSP、Servlet、Struts、Ajax)[M].北京:清華大學(xué)出版社,2010.

      [4]趙榮彩.反編譯技術(shù)與軟件逆向分析[M].北京:國防工業(yè)出版社,2010.

      [5]Regina Obe, Leo Hsu.PostgreSQL即學(xué)即用[M].丁奇鵬,譯.北京:人民郵電出版社,2010.

      猜你喜歡
      源代碼
      人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
      計算機仿真(2023年8期)2023-09-20 11:23:42
      基于TXL的源代碼插樁技術(shù)研究
      軟件源代碼非公知性司法鑒定方法探析
      基于語法和語義結(jié)合的源代碼精確搜索方法
      揭秘龍湖產(chǎn)品“源代碼”
      對軟件源代碼的商業(yè)秘密保護
      德庆县| 永定县| 苗栗市| 九龙县| 岐山县| 科技| 公主岭市| 卓尼县| 黄石市| 利川市| 呼玛县| 河源市| 柯坪县| 十堰市| 崇左市| 监利县| 邵阳市| 娱乐| 南召县| 泰顺县| 虞城县| 东辽县| 法库县| 龙门县| 正阳县| 彭州市| 娄烦县| 建平县| 休宁县| 鲁甸县| 措美县| 延川县| 南华县| 正阳县| 疏附县| 安多县| 西峡县| 东海县| 札达县| 芦溪县| 台湾省|