逆向解構專案的建議步驟 和 團隊溝通

逆向解構專案的建議步驟 和 團隊溝通

先寫就上路是基本台灣常見的專案現況

 

在台灣大部分的專案中,人力持續地被無限上綱的精簡

 

時間不斷地被壓縮,需求不斷地被變更。

 

在人力和時間有限、需求無限的情況下,先寫就上路是基本台灣常見的專案現況

 

「彈性?架構?二年後這個系統還是不是我維護的都還不知道咧!?」

 

所以,架構 和 文件 往往都是最後的最後,發生了問題後大家才能驚覺嚴重性

 

即然,大家都知道架構的重要性,那麼為什麼平常沒辦法重視?

 

就是因為上述的惡性循環下,再加上 系統解構向來都是吃力不討好的事

 

即然要花這麼多的時間 Review 還不如寫程式 ( 曾經我也認為可以用重構來搞定 )

 

但,架構要讓別人了解的話!還是畫圖是比較好溝通!

 

所以這麼多年以來,在台灣逆向解構系統一直都是受各專案 Leader 關注

 

 

逆向工程工具,是為了要反映程式的「現況」

 

首先先說明一個觀念

 

任何的逆向工程工具,都是為了要反映程式的「現況」

 

並且讓您更容易找出架構問題,才能逆向工程工具最重要的目的

 

而不是只有在「畫圖」的時候偶爾跑一下

 

也因為能在短時間內「解構」系統並畫成圖,我們才有時間和精力去做架構 Review

 

大家都知道 UML 圖畫好之後,要一一比對其程式碼是個「塞缺」

 

所以根本不會常常去看圖和程式是否一致

 

也因為這樣子,架構文件漸漸地就變成「例行公事」而失去了原本的美意

 

當然,逆向工程還有另外一個最大的賣點就是

 

工具可以直接產生好圖,這樣子同仁就不用寫文件了 ( 炸 )

 

 

過多的資訊 = 沒有用

 

約 2 年前剛好有一個機會去介紹,逆向解構的功能給 A 公司

 

客戶用了之後覺得很不好用,很沒有幫助

 

一問之後發現,客戶逆向解構自已的專案後就不知道要做什麼了

 

為什麼?因為專案有近 20 個專案,其 Class 有上百個

 

弄出來的圖就大概如下 ,一堆密密麻麻的項目 ( 這裡我用 Nop Web 的 OpenSource 來做範例 )

image

(局部放大)

image

用 Namespace 產生後會有

42102 個 Namespace

181734 個關聯

 

 

那麼改成「組件」的方式,情況會變得好一些

 

image

區部放大後

image

但還是多到很可怕,請問這樣子要怎麼下手解讀?

Namespace 還是超過 15000 個

 

所以過多的資訊對我們來說根本就沒有幫助

 

這不是工具的問題,而是自已要找什麼都不知道!

 

逆向工程只是一種工具,最重要的是我們怎麼去運用

 

 

選定主題!找出相依性!

 

通常我們會比較建議從 Top Down 開始切入會是比較適合的

 

因此就從 Web 的專案開始 ( 當然若是對即有的架構很熟悉的話,也可以自行找切入點 )

 

image

因為一開始就知道 Nop.Web 專案,所以直接 Ctrl + F 做搜尋

 

接下來選擇和 Nop.Web 所有相關聯的元件和程式都要一併找出來

 

image

這時候就可以看到 和 Nop Web 所有關聯的線全部都被點選了

 

由於其他的都不是我們在意的

image

所以再選一次做「反向」後,直接按下「Del」鍵

 

就可以看到 Nop Web 只有用到以下三個元件組

image

4 個 DLL

307 個 Class

33 個 Namespace

14317 個節點

54875 個連結 (關聯)

 

看到這裡就可以知道,如何運用工具幫你找出有用的資訊

 

最重要的是縮小了很多範圍,大家在討論上可以 Focus

 

Review 的時間更是大幅地提升效益

 

如此一來團隊 ( 同仁 ) 才有辦法定期花少少的時間來 Review

 

 

無論是一人專案還是多人專案,相信都是會很有幫助的

 

ps.. 尤其是 一人專案,如何能有效地增加 Coding 的時間才是最重要的