銀行數據交換平台簡單來說就是基金公司與銀行進行數據交換的過程,主要有划款指令、余額查詢和流水查詢等等,基金公司不能直接與銀行進行連接,而是通過深圳證券通信有限公司的數據交換中樞進行聯通,銀行提供相應的報文格式(XML格式),(深圳證券通信有限公司以下簡稱深證通)提供C++的API函數供基金公司和銀行調用,基金公司和銀行通過調用API函數再經過前置機實現互通的過程。這樣出去的數據不需經過加密和解密進行操作。
開發時間:2013年6月1日-2013年9月15日。
首先項目經理提供給我的資料非常少,只提供了銀行的報文格式(EXCEL文檔格式)和深證通的API函數文檔及DLL文件,程序設計一切未進行交代。當初在接到這個項目時首先做的事是把C++的API函數轉成C#能識別的函數,由於API函數是非托管的所以不能直接進行引用,必須進行轉換,在函數轉換的過程中遇到一些麻煩,這些函數有結構體和回調函數的定義(稍后會貼出轉換的函數),查找了非常多的資料再請教了一些同事,經過一個周末未休息,再三的努力終於把函數轉換成功了,這為整個程序的開發起到了關鍵作用。函數轉換成功后撰寫了相應的DEMO程序,寫完DEMO程序后跟項目經理申請兩台電腦進行測試,由於基金公司管理比較嚴格,申請電腦花費了四五天的時間,等申請電腦下來后部署測試環境,由於現在只是測試轉換的函數,所以只能模擬基金公司與銀行的數據交換,經過幾天時間的測試,發現當前的DEMO程序一切OK。
經過這段時間的精心准備,並把相應的結果匯報給了項目經理。獲得同意后開始正式程序的設計,根據項目經理的口頭對需求進行了描述,就正式開始了程序的設計,經過大慨十多天的時間的編碼,這時大慨到了七月份了,並跟經理匯報了相應的項目進度並提出跟銀行進行聯調測試,這時項目經理如一夢驚人開始與銀行進行聯系,經過一段時間的等待后開始了與銀行的聯調測試,測試了一段時間都未通,后經銀行的技術人員確認他們使用的測試環境是專線而我們使用的環境是互聯網,再經過幾天的時間公司技術人員的努力建立專線,再申請跟銀行進行了測試,再經過一段時間的測試銀行終於有數據返回到前置機了。
這時由於基金公司的改革,提出了項目經理-開發經理-開發人員的模式,逐漸另外一個開發經理介入到我這個項目中,他三番五次詢問我的項目進度,后來干脆要求我編寫項目的概要設計和詳細設計文檔(注:項目經理從未看過前段時間項目的開發進度,只關心最終的結果),由於這時測試進度非常慢,所以利用這點閑余時間編寫了項目概要設計和詳細設計文檔,開發經理對我提出了五六次修改意見,修改完發送給了項目經理和開發經理,這時項目經理都未曾閱讀我編寫的文檔,開發經理把我編寫的相應的文檔提交了公司領導進行了閱讀,他們給出的建議是當前的設計模式不好。(當前是通過跟銀行報文建立一樣的字段的數據庫,業務系統相應的數據插入到我建立的表中,並有相應的狀態,而程序是通過多線程輪詢的模式,一旦有一條新數據就會自動組成相應的報文,通過程序發送到深證通,再由深證通把數據推送到銀行,銀行處理完數據后再返回相應的處理數據XML報文格式的數據)這樣的一種模式開發經理看后跟項目經理和公司領導討論后覺得這種方式不妥,可能需要再設計。
再經過一段時間的討論,同時我也利用這段時間把項目的幫助文檔進行了編寫,想再為這個項目再爭取一下,最后開發經理的意見是還是改一種模式,改一種模式雖然問題不是很大,但是在項目的進度上肯定有了很大程度的拖延,在開發項目之前項目經理就說了項目要在九月份初上線,可現在已經到八月份中旬了,被他們這樣一整項目按時上線遙不可及了。最終沒辦法根據開發經理的要求重新編寫了項目的概要設計文檔,開發經理也提出了幾次意見,修改后再提交給了公司項目評審(項目評審主要是公司的項目經理和公司領導),根據他們提出的意見再對概要設計文檔進行了修改,文檔通過后才進行編碼的工作。這次使用的WCF開發架構,后台是通過桌面應用程序進行管理(CS結構),通過WCF服務發布WebServices接口供業務系統調用,再經過一段時間的開發,項目基本已經全部完成了,這時開發經理又提出了要把后台改成WEB版的后台去管理,本人不是沒有能力去開發WEB版的后台程序,由於基金公司分工比較明確,CS和BS是分開進行開發的,所以這塊程序交給BS項目組去開發。當初以為這樣也沒有多大的問題最起碼WCF服務這端是我開發的,WCF服務端程序寫好后,編寫了一個調用WenServices的測試程序,接着跟銀行進行聯調測試,由於銀行的服務器每天都會重啟,基本要測試的話每天都要跟銀行進行聯系才可以,這個項目的聯系一直是項目經理在跟銀行聯系,沒放開給我去聯系,前段時間也是通過郵件進行聯系,通過郵件跟銀行聯系,效率非常低下,這時跟開發經理進行了溝通,這樣與銀行進行溝通非常不妥,公司的意思是不能總是打電話給銀行,否則銀行會很煩也不願意跟我們溝通,作為開發人員的我很無語,多次在這個問題上跟開發經理反映,最終他調了另外一個人來推進項目的測試工作,經過他的推進,測試工作工作有了很好的提高,再經過一段時間把程序的調整,整個程序全部通了,所有發過去的報文都有返回數據了,這時時間已經到了九月中旬了,公司准備啟動一個全新的項目,所有的C#開發人員全部投入帶這個項目中了,這個開發經理要求我把這個項目交給其他人員進行后期的維護和再調試,沒辦法,依依不舍地把自己辛辛苦苦搞了三個多月的項目交給了別人,心里有很多的不爽,到時候功勞全部歸於別人了,但是沒有辦法公司這樣安排,最后編寫了詳細的工作交接文檔,交接人員相當不重視,最終還是印證了我的預言,交接過去很長一段時間還來問我當初為什么是這樣設計的,相當幼稚的問題,心里相當的不爽,唉,一個失敗項目的經歷。
最后,請各位幫忙分析失敗的原因,也希望各位引以為戒。
