🎋 竹子日誌

軟體架構這件事

如何設計一個軟體架構可以說是軟體開發的超級難題,有人說架構一開始就要開好開大,有人說有需要再開大就好。我只能說,都正確,但你會怎麼做?很好笑的地方,曾經有一個老闆希望我幫他開一個超屌的架構,可以扛上超大型專案什麼。我認真反問,你真的確定嗎?

首先定義一下這邊談的「架構」,包含在系統架構、職責分層、撰寫設計等等小細節。

當架構開的越大,確實可以降低「改動成本」和「承受更大的負擔」,但相對的會造成更多「架構維持成本」。

舉例來說,「多國語系」這件事情,如果一開始並沒有這項需求就把這件做好做滿,如果有一天要做,確實可以「大幅降低」重構消耗掉的成本。但說真的,要維持「多國語系」這樣的架構,需要消費掉的成本也非常高昂。包含資料庫、翻譯表等等各種東西的維持與管理。如果實際需要,或許不是問題,如果是「事先規劃」,在維持過程中的討論、撰寫、處置⋯⋯等等維持成本都是額外負擔。

但我的經驗經常是,一開始先開一個剛剛好需求的架構,想要等需要再擴增。結果,遇上的需求時上頭不會給你時間重構,而是不斷不斷增加需求,疊床架屋。最後就是小架構卻臃腫,一隻動則千行萬行的檔案,因為改不動而出現各種獵奇的設計⋯⋯

你認為架構要事前開好?還是需要再重構呢?

留言