我正在尋找重構一些非常複雜的代碼,這是我在工作中的一個項目的子系統。我對這段代碼的部分研究是它非常複雜,並且根據一些核心業務邏輯包含了大量的輸入,中間值和輸出。矩陣代數設計分解
我想重新設計這個代碼,以便更容易維護以及更快速地執行一個地獄,因此,我一直在試圖查看每個參數以及它們彼此之間的依賴關係。這導致了一個相當大和糾結的圖,我想要一個機制來簡化這個圖。
後來我在一本關於SOA設計的書中遇到了一種叫做「矩陣設計分解」的技術,它使用輸出矩陣和它們對輸入的依賴關係,應用某種形式的矩陣代數並可以生成業務流程這些依賴關係的圖表。
我知道有一個web工具可以在http://www.designdecomposition.com/但是它可以有輸入/輸出依賴關係的數量有限。我試圖尋找這個工具的算法源(所以我可以嘗試自己實現它沒有大小限制),但是我沒有運氣。
有沒有人知道我可以使用的類似技術?目前,我甚至考慮採取相關矩陣,並運用一些遺傳算法,看看是否能演變拿出一個簡單的工作流程...
乾杯,
Aidos
編輯:
我將解釋動機:
最初的代碼是爲系統編寫的,每次用戶執行操作(添加,刪除或修改某些屬性的值(約60)一個項目)。這個代碼是十年前編寫的,絕對顯示出年齡的跡象 - 其他人已經爲系統增加了更復雜的計算,現在我們得到完全不合理的性能(控制返回給用戶前2分鐘)。已決定從用戶操作中分離計算並提供一個按鈕來「重新計算」這些值。
我的問題出現了,因爲有太多的計算正在進行,它們基於所有必需數據都可用於計算的假設 - 現在,當我嘗試重新實現計算時,我一直遇到問題,因爲我沒有得到這個計算所依賴的不同計算結果。
這是我想使用矩陣分解方法的地方。 MD方法允許我指定所有的輸入和輸出,併爲我提供了可用於生成所有輸出的「最簡單」工作流程。
然後我可以使用這個「工作流」來了解我需要執行的計算的優先級,以獲得相同的結果而不會產生任何異常。它還向我展示了我可以並行化的計算系統的哪些部分以及分叉點和連接點的位置(我現在不擔心該部分)。目前,我所擁有的是一個瘋狂的大型矩陣,其中顯示出很多依賴關係,不知從哪裏開始。
我會闡述從我的評論多了幾分:
我不想使用來自EA過程中的解決方案在實際的項目。我想採用依賴矩陣並將其分解爲模塊,然後我將手動進行編碼 - 這純粹是一種設計輔助 - 我只是對這些模塊的輸入/輸出感興趣。基本上是這些計算之間複雜的相互依賴關係的表示,以及一些優先的概念。
說我有A要求B和C. D要求A和E. F要求B,A和E,我想要有效地將問題空間從一組複雜的依賴關係劃分爲一個「工作流程」,我可以檢查以獲得更好的理解。一旦我有了這個理解,我可以想出一個更好的設計/實現,仍然是人類可讀的,所以對於我所知道的例子,我需要計算A,然後C,然後D,然後F.計算出
-
我知道這似乎有點奇怪,如果你看看我鏈接到基於矩陣的分解之前的網站,應該給你一些理解我在想什麼...
我已經詳細闡述了一些內容,希望澄清一下我在做,爲什麼。 – Aidos 2009-04-30 07:03:56