軟體是現實世界的抽象,關鍵是怎麼抽?
軟體是對現實世界的抽象,越是自然簡單生命力就會越長,抽象的過程越符合人類思想結果越能明確。
現實世界是一個人與自然、人與人的世界。在這個世界中人與自然(物)是一次互動,因為自然(物)沒有
思想,沒辦法給與回饋,每一次的互動都是從人發起,到人結束。而人與人之間的互動則是一個非常複雜的過程,
當一個人發出一次互動申請後,其他人是否能夠回饋,如何回饋等將是一個未知因素,由此產生了流程和制度,
流程是保證人的互動順序,而制度則保證人互動的規則。
上面的簡單描述是我對這個世界的一些簡單理解,是對我對世界進行了一次抽象的結果。基於上述的,我想說一下
軟體的抽象。
我認為無論是程式導向也好,物件導向也好,最難處理的部分就是如何抽象現實世界中的流程。
程式導向是從一種自然的狀態下描述流程,第一步做什麼,第二步做什麼。而對物件導向而言,流程該如何處理呢?
順序圖描述的內容依然是程式導向的,第一步物件A發出申請,第二步物件B響應。
這樣和我們實際的世界是不相一致的,在實際中,首先要有一個特定的場景,在場景下,參與者均知道要做什麼事情,
在這樣的場景下,物件A發出一條訊息,當B得到訊息後根據自己的理解(規則)後同樣發出訊息,依次傳遞下去。
物件是有思想的,會根據自己的規則進行判斷,而不是流程化的。最近了解了一寫規則引擎方面的內容,覺得很有意思,
同上述的內容由一些類似。在一個特定的場景下,為每一個物件設定自己的規則,然後透過觸發訊息來引導事情的發展。
真正從思想上來說,只有程式導向和麵向物件,而領域模型則更像是一個成品,無論是基於過程還是物件,思考後
得到一個符合某個領域的模型。而框架更是一個成品,框架是對特定軟體開發領域的抽象後的產品,抽象的思想依然可以
是程式導向也可以是物件導向。
思想上程式導向、物件導向。
思想指導行動,行動可以是建立領域模型、建立開發框架。
行動的結果是形成了特定的領域模型、開發框架。
上面的描述自己都感覺有些亂,還請各位指教。
現實世界是一個人與自然、人與人的世界。在這個世界中人與自然(物)是一次互動,因為自然(物)沒有
思想,沒辦法給與回饋,每一次的互動都是從人發起,到人結束。而人與人之間的互動則是一個非常複雜的過程,
當一個人發出一次互動申請後,其他人是否能夠回饋,如何回饋等將是一個未知因素,由此產生了流程和制度,
流程是保證人的互動順序,而制度則保證人互動的規則。
上面的簡單描述是我對這個世界的一些簡單理解,是對我對世界進行了一次抽象的結果。基於上述的,我想說一下
軟體的抽象。
我認為無論是程式導向也好,物件導向也好,最難處理的部分就是如何抽象現實世界中的流程。
程式導向是從一種自然的狀態下描述流程,第一步做什麼,第二步做什麼。而對物件導向而言,流程該如何處理呢?
順序圖描述的內容依然是程式導向的,第一步物件A發出申請,第二步物件B響應。
這樣和我們實際的世界是不相一致的,在實際中,首先要有一個特定的場景,在場景下,參與者均知道要做什麼事情,
在這樣的場景下,物件A發出一條訊息,當B得到訊息後根據自己的理解(規則)後同樣發出訊息,依次傳遞下去。
物件是有思想的,會根據自己的規則進行判斷,而不是流程化的。最近了解了一寫規則引擎方面的內容,覺得很有意思,
同上述的內容由一些類似。在一個特定的場景下,為每一個物件設定自己的規則,然後透過觸發訊息來引導事情的發展。
真正從思想上來說,只有程式導向和麵向物件,而領域模型則更像是一個成品,無論是基於過程還是物件,思考後
得到一個符合某個領域的模型。而框架更是一個成品,框架是對特定軟體開發領域的抽象後的產品,抽象的思想依然可以
是程式導向也可以是物件導向。
思想上程式導向、物件導向。
思想指導行動,行動可以是建立領域模型、建立開發框架。
行動的結果是形成了特定的領域模型、開發框架。
上面的描述自己都感覺有些亂,還請各位指教。
相關文章
- 軟體專案管理實踐:專案成功的關鍵是什麼?專案管理
- Android 流氓軟體靜默安裝是怎麼實現的?Android
- 什麼是抽象類?怎麼定義?抽象
- 微信直播是怎麼實現的?
- 什麼是抽象抽象
- 有一鍵分發自媒體影片的軟體嗎?是怎麼操作使用的?
- todesk是什麼軟體 todesk怎麼用
- Java instanceof 關鍵字是如何實現的?Java
- 什麼是關鍵 CSSCSS
- v-model 是怎麼實現的?
- synchronized底層是怎麼實現的?synchronized
- JVM的ServerSocket是怎麼實現的(上)JVMServer
- JVM的ServerSocket是怎麼實現的(下)JVMServer
- 什麼是物件?什麼是抽象?怎麼理解物件導向的程式設計思想?物件抽象程式設計
- 到底什麼是抽象?抽象
- 滿足使用者需求的優秀軟體的關鍵是什麼 - macerubMac
- 和 koa 不同的 express 是怎麼實現Express
- 中介軟體是什麼?Linux中介軟體是什麼意思?Linux
- 什麼是好的軟體
- Fish Redux中的Dispatch是怎麼實現的?Redux
- Angular 的依賴注入是怎麼實現的?Angular依賴注入
- 這是抽象工廠麼?抽象
- BPM軟體是什麼?BPM軟體跟BPA有關聯嗎?
- Java是值傳遞還是引用傳遞,又是怎麼體現的Java
- tag標籤是怎麼用OT實現的?
- Win10工作列小程式訊息通知是什麼軟體的?怎麼關閉Win10
- 什麼是軟體工程?軟體工程
- pl是什麼軟體
- Prisma是什麼軟體?
- 什麼是中介軟體?
- 什麼是CRM軟體
- 面對物件是一種軟體設計思想,和具體的實現無關物件
- 什麼是 SRE?它和 DevOps 是怎麼關聯的?dev
- 軟體開發的是什麼
- 【Redis面試題】Redis的字串是怎麼實現的?Redis面試題字串
- Broker的主從架構是怎麼實現的?架構
- Redis 中的集合型別是怎麼實現的?Redis型別
- SimpleJdonFrameworkTest實現的原理是怎麼樣的啊?Framework