如何整合的別人的軟體產品?

2021-07-09 16:52:16 字數 1705 閱讀 5616

以幾年前,甲方找到我們公司讓我們做乙個專案,要求與已有的兩個系統對接起來:其中乙個系統是定量裝載的系統,直接控制硬體裝載量的;還是有乙個是財務系統。而我們開發的系統,要能夠從定量裝載的系統中錄入資料和讀取實際裝載資料,資料經過乙個流程的管理,最終統計出的財務資料以憑證匯入財務系統。這兩個系統是cs的。此外,甲方交給我們一項任務,在他們已有乙個bs系統上增加乙個模組。

如何從別人的系統中獲取資料?如何將我們系統的資料匯入到別人產品中?如何在別人產品上新增我們需要的功能模組?... 如何整合別人的軟體產品?按照我們一般的想法,既然要與第三方軟體系統整合,這些軟體至少滿足以下條件之一方可:

可惜的是,甲方的這些軟體系統(三個軟體)來自不同的公司的產品,因為是別人產品,不可能有原始碼。產品也沒有二次開發介面,也沒留下什麼開發檔案(是「產品」不是專案的開發文件,當然不會留給客戶)。這些產品都是些小型軟體系統,這些公司壓根就沒留下二次開發介面,即使有他們也一定會給你。除了正在執行的系統,以及使用者手冊,再沒有任何可用的資訊。

如何整合別人的軟體產品?這是擺在我們面前的乙個最大的難題。既然正常整合途徑都沒有人,那我們只能採取非常手段,依靠自己的努力,根據具體系統特點「摸索」介面。 從技術的角度出發,可以下幾個方面著手:

分析資料庫結構,直接對資料庫操作實現資料的訪問

使用反編譯工具,將相關模組的dll反編譯出原始碼進行分析

系統架構特點:cs系統,從外部獲取控制代碼提取winform中的資訊;bs系統,根據aspx頁面特點,嵌入c#**直接提取所需資訊。

這三種思路只能用來嘗試性地摸索,在找到突破點之前,每一種思路決定的方向都是乙個無底洞。

對於資料庫的分析,有的系統資料庫設計有資料字典表,資料庫欄位名根本就是按順序生成編碼,而且光有資料庫,除了幾個簡單的表關聯關係外,很難推測某乙個操作的的完整資料邏輯。慶幸的是,使用資料庫效能分析工具,在使用者操作時,都是會sql記錄(我們使用的是mssql 2008 profile監視使用者操作產生的sql)。

反編譯工具,除非精確定位到dll,反編譯出**碼才有用。畢竟即使給你源**,即使你技術再牛,在有一定規模軟體的**中還是很不容易找到你要的東西的。至少反編譯在縮小到極小範圍時,才考慮使用的。

對於cs系統,想直接從軟體上找到擷取資料,很難找到切入點。當時有人提出這樣一種方案:在使用者操作winform軟體時,通過外接c#程式獲取使用者當前操作窗體、控制項的控制代碼來擷取使用者輸入的資訊。他還真寫demo演示一下效果,技術可行,效果並不是太完美。這也只能當作下下策了。

對於bs系統,我們只是需要增加中乙個功能模組,好在aspx頁面可以任意修改:新增乙個鏈結到我們的系統url,同時把使用者資訊以加密形式提交過來。如何獲取當前使用者資訊呢?除了使用者id、使用者密碼、使用者名稱等資訊。乙個aspx檔案包括.aspx頁面和.aspx.cs檔案,cs檔案會編譯到dll中,但是.aspx字尾的頁面中嵌入的c#**不會編譯到dll中,可見.aspx頁面中的c#**是動態執行的。我也就是通過反編譯部分dll**知曉資料庫訪問元件的用法,直接從session中獲取使用者id從資料庫元件獲取使用者資訊的。由此可見,如果bs伺服器如果被惡意攻擊者獲取了aspx頁面的修改許可權,那麼整個伺服器的檔案系統豈不完全暴露在他面板?(如果是jsp頁面,原理一樣,這就是jsp小馬、aspx小馬的基本原理)

根據上述的方法,結合我們自己理解分析搞定了系統介面的難題。

但是需要強調一點的是,我們重在解決甲方公司的問題,由甲方公司授權完成系統間的整合,走了一條非正常的系統整合路子。畢竟軟體所有權屬於第三公司,任意修改別人軟體是不合法的。

在此根據自己的經歷分享下非常規解決系統整合問題的思路。

如何把握軟體產品的質量

如何把握軟體產品的質量 蔡 蔡為東,熱愛測試工作,有超過10年的軟體測試和團隊管理經驗。鄭 鄭 阿爾卡特 朗訊測試架構師 蔡 如何把握軟體產品的質量?鄭 不管軟體產品規模是大還是小,結構是簡單還是複雜,對它們質量的評估都不是一件容易的事情。儘管很難,但是產品質量的評估仍然是必需的,因為它也涉及軟體版...

軟體產品的定義

1 軟體是什麼?網際網路是什麼?軟體就是為人提供資訊化服務的創新的虛擬產品。資訊從 來?資訊從客戶那裡來,從銷售人員 市場人員收集中來。它是由創新的人 叫做程式設計師 通過計算機程式語言設計和編碼做出來的。因此,程式設計師和非程式設計師之間的溝通和信任難免就會變得困難,因為非程式設計師他們不了解這個...

軟體產品經理的職責

做為一名新進產品經理,甚至一名資深pm,你可能都或多或少對這個職位產生某種迷惑。到底什麼是產品經理?這個職位的主要職責是什麼?在it產業的不同領域,甚至在同一領域的不同公司,這個職位的定義似乎都有不同。本文嘗試根據自己多年的產品經理經驗,給出產品經理的主要職責。雖然在不同的公司,產品經理的角色和職責...