軟體設計哲學—模型 65/365

About Design

為什麼要做軟體呢?軟體的存在是為了解決現實世界的問題。

人類當然知道怎麼解決現實世界的問題。但若要電腦代勞,就需要在電腦的世界建立模型,電腦才有辦法運算。所謂模型就是程式碼。為了確定自己建造出的模型有沒有發揮作用,人開始作「測試」。

可是現實的問題經常在變化。人懂得因應變化,但電腦不能。為了讓電腦也能因應現實的變化,人只好去修改和維護模型,而只有「可讀性高」的模型,才方便修改。但,經過測試且可讀性高的模型就會是好的模型嗎?

不一定,電腦世界中,「模型」是現實問題的縮影。好的模型需要具有對現實問題的深入了解。因為包含了核心邏輯,面對變動才不需要常常修改;反之,壞的模型通常看似符合情境,但只要發生變化,與現實的落差就會曝露出來,需要常常修改。
......

在我心中,這是一個開發大型軟體的完整故事。也正是為什麼市面上有這麼多的書,在教你怎麼測試程式碼;怎麼寫出可讀性高的程式碼;還有怎麼建造軟體模型。跟你使用什麼程式語言都無關,而是跟大型軟體的本質有關,跟上述這個故事有關。

因為工作的緣故,我開始接觸這些軟體開發的知識。其中最有趣的部分都不是跟技術有關,而比較接近哲學思想。領域驅動設計(Domain-driven design)就是一門關於大型軟體的設計哲學。在2004年,Eric Evans在他的書裡提出了這套哲學。後來許多頂尖工程師也遵循這套思想,把這套方法論應用在各種大型專案上。它的核心觀念就是:一個商務軟體最複雜的地方,不在技術,而是跟商業有關的邏輯。通常程式會遇到最棘手的問題,是來自對商業邏輯的誤解。

這也代表,每個領域會遇到不同的商業邏輯。要怎麼用程式去描述商業模型,往往是最困難的部份。一個能夠長久運作良好的軟體,都是對那個商業領域有深入地討論與了解才能開發出來。程式與商業,終究是脫不了鉤。



--
photo credit: Bert Kaufmann via photopin cc
Recommend


Keanux

登入或註冊帳號

Facebook 登入

我們絕對不會未經過你的允許發表到Facebook