走出面向對象編程的沼澤—在SOA中使用WebSphere Adapter[3] SOA三層構架
關鍵字:面向對象 編程 SOA
逐漸陷入沼澤
需求變化
這天早晨,Peter一到公司便被項目經理叫到了辦公室。原來,項目的需求有點變化,Peter負責的那個子模塊的功能需要增加,不僅要實現對應用系統A的若干數據庫表的數據寫入,還要能夠完成相應的修改和刪除操作。在Peter看來,增加這些功能簡直是小菜一碟,自己以前的實現代碼很多地方很重用,只需稍微修改一下便可搞定。于是,他花了一個下午,在原來的代碼基礎上增加了幾個方法便搞定了。
在接下來的幾天里,Peter所負責的子模塊不斷地有新的功能需求加入進來,隨著功能不斷增多,其實現的代碼量自然也是不斷地膨脹,已經由最初的200行左右增加到了5000行左右。
隨著代碼的日益臃腫,一些代碼的bug開始逐漸出現了,并且有逐漸增長的趨勢。這讓Peter開始感到有些隱隱的不安。
漸入困境
第天一大早,項目的測試人員便跑過來找Peter。原來,客戶對系統的整體性能做了一個初步的測試,而測試結果非常不令人滿意。測試人員經過仔細分析后發現,Peter負責的那個子模塊是整個系統性能低下的罪魁禍首。這天Peter工作到半夜,終于找到了其中的原因。原來,他在每次數據庫操作之前都要創建數據庫連接,操作過后再關閉該連接,頻繁的數據庫連接新建和關閉操作造成了系統性能的大幅下降。Peter決定把數據庫連接的管理功能抽取出來,采用連接池機制,這樣可以實現數據庫連接的共享,避免頻繁的新建和關閉操作,從而解決系統的性能問題。在Peter對代碼做了一番修改之后,性能問題是解決了,可是測試人員很快發現原來的一些正常功能受到了破壞。
事情似乎進入了一個惡性循環,解決一個現有的問題時稍不小心就會引起更多新的問題。
致命打擊
就在Peter已經忙得焦頭爛額時,一個噩耗傳來:項目需求又有變化,應用系統A的數據表結構要進行調整,而且需要增加對另外幾個數據表的訪問。這意味著Peter原來的實現代碼大部分需要重寫。這讓Peter幾乎絕望,項目目前已經接近尾聲,他很清楚現在做這樣大規模的代碼改動不僅時間上不允許,而且風險很大。
Peter瀕臨崩潰,整個項目也將面臨失敗的危險。
文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/