概念模型——分析模式學習筆記

熊貓夜未眠發表於2011-09-21

原文連結:enter link description here 作者:chgaowei

分析和設計存在很多的不同之處,設計的目的是為了更高實現一個技術方案,而分析的目的是為了理解問題的本質。這不僅僅是用用例列出需求清單那麼簡單的事情。

假設我們想開發一個斯諾克檯球模擬遊戲,擊打白球后,白球按照一定的軌跡運動,並且撞擊紅球。用例可以列出成千上萬,但是這不足以讓我們開發出一個更好的軟體——你必須瞭解運動背後蘊含的規律。這個問題不難解決,因為這些規律已經眾所周知。

但是在很多的應用領域,相關的規律並不讓人易於理解。為此,我們建立了概念模型——一種執行我們瞭解並簡化問題的智力模型。其實可以理解為運動定律,運動定律在進行表述的時候,就是忽略了很多的其他因素——風力影響,摩擦力影響等。這個過程其實就是從複雜的世界中獲取簡單的模型,然後在用簡單的模型去指導複雜的世界

模型可能有多個,就像上面的例子,可以使用牛頓模型或者愛因斯坦模型。你可能感覺愛因斯坦模型更加精確,但是複雜度也更高。因為球速運動很慢,所以基本可以忽略質量的變化。這說明一個問題:不存在正確或者錯誤的模型,只存在對當前任務更適用的模型

建模原則:模型無對錯之分,只有好用和不好用之分。

模型的選擇最終會影響到系統的靈活性和可重用性。你可能會認為,使用愛因斯坦模型可能具有更大的靈活性,能夠處理原子碰撞的問題。但是,一個斯諾克模擬遊戲用到原子碰撞的可能性微乎其微。過多的考慮靈活性將是軟體系統過分複雜。要建造滿足某個目標的軟體系統,就必須開發滿足實際需要的模型。你需要的是所能獲得的最簡單的模型。

簡單的模型不一定就是馬上想到的模型。一個簡單的模型的誕生過程包含了從簡單到複雜,再從複雜到簡單這樣一個反覆的過程。剛開始我們看到的往往是需求的表明現象,隨著分析的深入,會發現系統的各個方面,包括隱含的功能和效能需求,限制約束等,這個是模型越來越複雜。等在深入進去,將系統的各個方面按照一定的原則排列,會最終找到一個簡單的模型。

概念模型的表示。可以使用程式語言來表示,優點是可以快速驗證,並且能夠減少從模型到思想的工作量。缺點是在建模的過程中可能會陷入語言的使用問題中而忽略實際的問題,也可能會使用語言特有的特性,增加從模型轉化為其他語言的難度。

避免這些問題的方法是使用分析和設計技術。它能夠幫助人們將注意力放在概念性問題上而不是軟體設計問題上。

使用分析與設計技術的一個好處是讓領域專家參與概念建模。什麼是領域專家?lhs和hxy,lxr應該有一定的這個角色。有效的模型只能由那些瞭解該領域的員工來建立,而不是有軟體開發人員來建立。(?我對一個問題一直有疑問:什麼是概念模型?它和架構有什麼區別?概念模型應該是問題的本質,就像運動定律。架構是在理解本質後的一種現實解決方案。)

專家知識是建立一個好的分析模型的關鍵。

作者努力是分析技術獨立於軟體技術,比較理想的情況是概念建模技術獨立於軟體技術,就像運動定律一樣。但是實際的情況可能不是這樣。我們目前的建模一般會依賴於物件導向技術。

概念模型應該更加貼近於軟體的介面,而不是軟體的實現。

建模原則:概念模型是與介面(型別)而不是實現(類)相關聯的。

這一節學習完了,分析模式,概念模型對我來說是一個全新的領域,所,一節的學習寫了這麼多的筆記來輔助學習。總結一下:

1、 分析的目的是為了獲得問題的本質,最終的結構是概念模型。

2、 設計的目的是解決問題,結果是架構設計或方案設計。

相關文章