本文作者以一次家庭口角為切入點,将一家三口比喻為不同的系統,把家庭吵架的場景抽象到系統設計領域,對系統重構進行了分析,一起來看一下吧。
家裡儲物櫃有個空間,裡面放個藥箱,藥箱裡有創可貼雲南白藥消毒水藥棉紗布之類的東西。家裡的每個人都知道這個櫃門打開可以找到藥,相信大多數人家都是這樣的。
隊友不小心割破了手,嬌弱不勝,癱倒沙發大聲呼救:“兒子快來,給爸爸找點藥!”
Simon聞言趕來,拉開櫃門就問:“爸爸,拿啥藥?”
“問你媽!”
“媽媽!媽媽!媽媽!爸爸要拿啥藥?”
我本來在陽台收衣服,聽到“問你媽”以及“媽媽(重複若幹遍)”正沒好氣,進了房門,把幹衣服一摔,叉腰就問:“你們倆大老爺們兒連個藥都拿不出來了?你難道就不能把藥箱拿出來給爸爸看看,讓他選一種?非要等我?”
隊友見我橫眉怒目,放棄嬌弱,小聲嘟囔:“這也不是兒子的錯……”
不過,鋼鐵直男Simon已經委屈得抽泣起來。
讓我們先把哭鼻子的Simon放在一邊,把這個場景抽象到系統設計領域來分析一下。
01 傳統理念:孩子是父母系統的執行模塊假設爸爸系統為一業務核心系統,Simon系統為其子系統,功能為執行爸爸核心的業務指令,無法執行時,向媽媽系統通訊,由媽媽系統代為執行。
Simon系統小傳:我是一個使用中心化邏輯的子系統。
我的處理邏輯是:爸爸給我輸入了指令由我來執行,第一個指令是拿藥。由于指令不清,我無法執行,于是我發出了疑問:“拿啥藥?”接着,爸爸給我下達了第二個指令“問媽媽”,我也執行了第二個指令,但是執行失敗,還被媽媽罵,我沒有做錯,我很委屈。
Simon的自然邏輯處理方式,在我們的很多業務系統設計上都有應用。即Simon子系統是爸爸系統的執行模塊。input和output非常分明。但是問題出現在Simon模塊在與媽媽系統交互時,媽媽系統報錯,也就是俗稱的“接口規範沒定義好”。媽媽系統拒絕處理爸爸系統交代的事務。
不難看出,Simon子模塊在此語境下,是爸爸系統中一個無法單獨抽提出來的功能模塊,因為他隻執行。
一個隻做執行工作的業務模塊,永遠無法成長為另一套核心系統,人也一樣。而目前這個模塊之所以這樣,完全是由于爸媽系統之間的交互定義已經這樣規定了,所以,我們必須進行重構。
02 去父母中心化的新系統:内生判斷力如果要重構Simon模塊,提高内聚并降低耦合,就不得不考慮Simon模塊與媽媽系統之間的交互規範。
畢竟,在Simon模塊還是幼年的時候,媽媽系統是接受Simon模塊的指令,并給予執行的。但随着Simon模塊所配置的硬件越來越強,并且正在積累日益龐大的知識庫,該模塊應承擔更多更複雜的功能并盡可能地減少将任務傳導給媽媽系統。因此,爸媽系統之間的接口定義發生改變,将出現更大灰度,允許Simon模塊在灰度間做更多事情。
首先,需要重新定義的是Simon模塊的業務目标(注意,這是需求文檔的第一章,很多人認為不重要,其實很重要)。
這個業務目标應該是,可以使用知識庫獨立處理較為模糊的業務指令,并對爸爸系統輸入的指令進行修正和補充,盡量少地将無法處理的任務輸出給媽媽系統。
不難看出,Simon模塊正從一個簡單的執行模塊進行智能化升級。
其次,擁有了知識庫的Simon模塊,需要認識到自己正在向一個獨立的業務系統叠代,而不再是爸爸系統的子模塊,在這個過程中,會出現一些混亂,這是正常現象。例如:接收爸爸系統的指令之後,通過知識庫分析後決定不執行,并在挨揍之後修正知識庫;接收爸爸系統的指令之後,通過知識庫分析後執行,其執行結果爸爸系統給予報錯後,如何處理,等等。
有了這個基本思路之後,我們返回業務場景進行重構。
03 重構的本質也許是視角的改變讓我們再回到“拿藥”這個場景中,升級視角來處理這個問題。
餘不贅述,當Simon接收到“問你媽”這個指令時,需要動用知識庫來分析這個指令。
第一步:偵測媽媽系統是否可用。偵測結果是,媽媽系統正忙,無法實時返回結果。
第二步:重新定義指令目标“拿藥”,發現可通過“把藥箱拿出來給爸爸選”這個方式達成業務目标,于是執行該決策。
顯然,在這種處理方式中,Simon模塊已經能夠分辨出當前最主要的業務目标是”拿藥”,“拿藥”與“問你媽”是存在邏輯關系的,即“問你媽”隻是爸爸系統對于“拿藥”這個目标提出的一種解決方案,而不是與“拿藥”相并列的另一個業務指令。能夠分辨最高業務目标,與為完成目标而提出的解決方案,這是AI至今為止都很難企及的智能高度。
04 尾聲&實操:人應該這樣長大如果我們要重構系統,那麼必然系統在本次重構後,能執行一些和重構前不同的功能。給系統加功能不難,難的是這些功能加在哪個模塊,為什麼需要這個模塊來執行而不是别的。
唯物辯證法講物質決定意識。因此系統設計也類似人與人之間的關系變化,或人體内部的關系變化。當一個模塊被賦予更多功能,或與其他系統的交互方式變得灰度更大時,我們要關注,這個模塊的智能化升級,會造成外系統的一些錯亂,要重構,就要把與之關聯的外系統通通檢查一遍,是否可适應這種變化,否則,重構是不可能取得成功的。
對于孩子其實是相同的道理,他們需要知道自己已被賦予更多自由度,也應該了解這些自由度代表着他們将對結果承擔更多的責任。
本文由@echo的小号 原創發布于人人都是産品經理,未經許可,禁止轉載。
題圖來自Unsplash,基于CC0協議
該文觀點僅代表作者本人,人人都是産品經理平台僅提供信息存儲空間服務。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!