軟體是現實世界的抽象,關鍵是怎麼抽?

gaofangjian發表於2011-06-15
軟體是對現實世界的抽象,越是自然簡單生命力就會越長,抽象的過程越符合人類思想結果越能明確。
現實世界是一個人與自然、人與人的世界。在這個世界中人與自然(物)是一次互動,因為自然(物)沒有
思想,沒辦法給與回饋,每一次的互動都是從人發起,到人結束。而人與人之間的互動則是一個非常複雜的過程,
當一個人發出一次互動申請後,其他人是否能夠回饋,如何回饋等將是一個未知因素,由此產生了流程和制度,
流程是保證人的互動順序,而制度則保證人互動的規則。
上面的簡單描述是我對這個世界的一些簡單理解,是對我對世界進行了一次抽象的結果。基於上述的,我想說一下
軟體的抽象。
我認為無論是程式導向也好,物件導向也好,最難處理的部分就是如何抽象現實世界中的流程。
程式導向是從一種自然的狀態下描述流程,第一步做什麼,第二步做什麼。而對物件導向而言,流程該如何處理呢?
順序圖描述的內容依然是程式導向的,第一步物件A發出申請,第二步物件B響應。

這樣和我們實際的世界是不相一致的,在實際中,首先要有一個特定的場景,在場景下,參與者均知道要做什麼事情,
在這樣的場景下,物件A發出一條訊息,當B得到訊息後根據自己的理解(規則)後同樣發出訊息,依次傳遞下去。
物件是有思想的,會根據自己的規則進行判斷,而不是流程化的。最近了解了一寫規則引擎方面的內容,覺得很有意思,
同上述的內容由一些類似。在一個特定的場景下,為每一個物件設定自己的規則,然後透過觸發訊息來引導事情的發展。

真正從思想上來說,只有程式導向和麵向物件,而領域模型則更像是一個成品,無論是基於過程還是物件,思考後
得到一個符合某個領域的模型。而框架更是一個成品,框架是對特定軟體開發領域的抽象後的產品,抽象的思想依然可以
是程式導向也可以是物件導向。

思想上程式導向、物件導向。
思想指導行動,行動可以是建立領域模型、建立開發框架。
行動的結果是形成了特定的領域模型、開發框架。

上面的描述自己都感覺有些亂,還請各位指教。

相關文章