概念模型——分析模式學習筆記
原文連結:enter link description here 作者:chgaowei
分析和設計存在很多的不同之處,設計的目的是為了更高實現一個技術方案,而分析的目的是為了理解問題的本質。這不僅僅是用用例列出需求清單那麼簡單的事情。
假設我們想開發一個斯諾克檯球模擬遊戲,擊打白球后,白球按照一定的軌跡運動,並且撞擊紅球。用例可以列出成千上萬,但是這不足以讓我們開發出一個更好的軟體——你必須瞭解運動背後蘊含的規律。這個問題不難解決,因為這些規律已經眾所周知。
但是在很多的應用領域,相關的規律並不讓人易於理解。為此,我們建立了概念模型——一種執行我們瞭解並簡化問題的智力模型。其實可以理解為運動定律,運動定律在進行表述的時候,就是忽略了很多的其他因素——風力影響,摩擦力影響等。這個過程其實就是從複雜的世界中獲取簡單的模型,然後在用簡單的模型去指導複雜的世界。
模型可能有多個,就像上面的例子,可以使用牛頓模型或者愛因斯坦模型。你可能感覺愛因斯坦模型更加精確,但是複雜度也更高。因為球速運動很慢,所以基本可以忽略質量的變化。這說明一個問題:不存在正確或者錯誤的模型,只存在對當前任務更適用的模型。
建模原則:模型無對錯之分,只有好用和不好用之分。
模型的選擇最終會影響到系統的靈活性和可重用性。你可能會認為,使用愛因斯坦模型可能具有更大的靈活性,能夠處理原子碰撞的問題。但是,一個斯諾克模擬遊戲用到原子碰撞的可能性微乎其微。過多的考慮靈活性將是軟體系統過分複雜。要建造滿足某個目標的軟體系統,就必須開發滿足實際需要的模型。你需要的是所能獲得的最簡單的模型。
簡單的模型不一定就是馬上想到的模型。一個簡單的模型的誕生過程包含了從簡單到複雜,再從複雜到簡單這樣一個反覆的過程。剛開始我們看到的往往是需求的表明現象,隨著分析的深入,會發現系統的各個方面,包括隱含的功能和效能需求,限制約束等,這個是模型越來越複雜。等在深入進去,將系統的各個方面按照一定的原則排列,會最終找到一個簡單的模型。
概念模型的表示。可以使用程式語言來表示,優點是可以快速驗證,並且能夠減少從模型到思想的工作量。缺點是在建模的過程中可能會陷入語言的使用問題中而忽略實際的問題,也可能會使用語言特有的特性,增加從模型轉化為其他語言的難度。
避免這些問題的方法是使用分析和設計技術。它能夠幫助人們將注意力放在概念性問題上而不是軟體設計問題上。
使用分析與設計技術的一個好處是讓領域專家參與概念建模。什麼是領域專家?lhs和hxy,lxr應該有一定的這個角色。有效的模型只能由那些瞭解該領域的員工來建立,而不是有軟體開發人員來建立。(?我對一個問題一直有疑問:什麼是概念模型?它和架構有什麼區別?概念模型應該是問題的本質,就像運動定律。架構是在理解本質後的一種現實解決方案。)
專家知識是建立一個好的分析模型的關鍵。
作者努力是分析技術獨立於軟體技術,比較理想的情況是概念建模技術獨立於軟體技術,就像運動定律一樣。但是實際的情況可能不是這樣。我們目前的建模一般會依賴於物件導向技術。
概念模型應該更加貼近於軟體的介面,而不是軟體的實現。
建模原則:概念模型是與介面(型別)而不是實現(類)相關聯的。
這一節學習完了,分析模式,概念模型對我來說是一個全新的領域,所,一節的學習寫了這麼多的筆記來輔助學習。總結一下:
1、 分析的目的是為了獲得問題的本質,最終的結構是概念模型。
2、 設計的目的是解決問題,結果是架構設計或方案設計。
相關文章
- 《SQL 反模式》 學習筆記SQL模式筆記
- 設計模式學習筆記設計模式筆記
- 學習筆記-設計模式筆記設計模式
- 代理者模式——學習筆記模式筆記
- 學習筆記-設計模式:MVC模式筆記設計模式MVC
- 分析函式(學習筆記)函式筆記
- 設計模式學習筆記——單例模式設計模式筆記單例
- 設計模式學習筆記之策略模式設計模式筆記
- JavaScript設計模式學習筆記JavaScript設計模式筆記
- php設計模式學習筆記PHP設計模式筆記
- 設計模式學習筆記之工廠模式設計模式筆記
- 設計模式學習筆記之迭代器模式設計模式筆記
- 設計模式學習筆記之狀態模式設計模式筆記
- 設計模式學習筆記之單例模式設計模式筆記單例
- Redis學習筆記八:叢集模式Redis筆記模式
- Event Bus 設計模式學習筆記設計模式筆記
- DG學習筆記(7)_保護模式筆記模式
- 重學Java設計模式-學習筆記(1)Java設計模式筆記
- Java設計模式學習筆記(五) 單例模式Java設計模式筆記單例
- 設計模式學習筆記之裝飾者模式設計模式筆記
- 設計模式學習筆記之介面卡模式設計模式筆記
- 層模式——面向模式體系結構學習筆記模式筆記
- ThreeJs學習筆記——渲染(render)分析JS筆記
- oracle學習筆記8: 分析函式Oracle筆記函式
- hadoop 偽分散式模式學習筆記Hadoop分散式模式筆記
- numpy的學習筆記\pandas學習筆記筆記
- Java設計模式學習筆記(一) 設計模式概述Java設計模式筆記
- Java設計模式學習筆記(三) 工廠方法模式Java設計模式筆記
- Java設計模式學習筆記(四) 抽象工廠模式Java設計模式筆記抽象
- C#設計模式學習筆記:(9)組合模式C#設計模式筆記
- 【HeadFirst設計模式學習筆記】10 組合模式設計模式筆記
- 登入抓包逆向分析學習筆記筆記
- 設計模式學習筆記(3)裝飾器設計模式筆記
- Android學習筆記-Activity的啟動模式Android筆記模式
- scala學習筆記:變數宣告中的模式筆記變數模式
- IT學習筆記筆記
- 學習筆記筆記
- Java設計模式學習筆記(二) 簡單工廠模式Java設計模式筆記