共找到2條詞條名為概念模型的結果 展開
- 計算機術語之一
- 現實世界中對象的可視化表示
概念模型
計算機術語之一
概念模型也稱信息模型,面嚮應用,按照用戶的觀點來對數據和信息建模,主要用於資料庫設計。這類數據模型描述用戶和設計者都能理解的信息結構,強調其表達能力和易理解性,如ER模型。
概念模型表徵了待解釋的系統的學科共享知識。為了把現實世界中的具體事物抽象、組織為某一資料庫管理系統支持的數據模型,人們常常首先將現實世界抽象為信息世界,然後將信息世界轉換為機器世界。也就是說,首先把現實世界中的客觀對象抽象為某一種信息結構,這種信息結構並不依賴於具體的計算機系統,不是某一個資料庫管理系統(DBMS)支持的數據模型,而是概念級的模型,稱為概念模型。
讓讀者更易理解,讀時有個參考的東西。
由於概念模型用於信息世界的建模型,是現實世界到信息世界的第一層抽象,是用戶與資料庫設計人員之間進行交流的語言,因此概念模型一方面應該具有較強的語義表達能力,能夠方便、直接地表達應用中的各種語義知識,另一方面它還應該簡單、清晰、易於用戶理解。由於概念模型在此次的迭代過程非常簡單,所以本來計劃PASS掉其中的具體分析,不過概念模型的確非常之重要,他是OOD的一個基石。除了用例,應該說概念模型是OO開發過程中另一個充滿主觀色彩的工件。
然而不同的人對同一個場景進行研究,可能提煉出來的概念模型都不一樣,所以說這是頗受主觀認識影響的一個過程。然而,概念模型的質量對整個系統的影響至關緊要,因為,所謂的面向對象,就是從這裡開始。
一般來說,構建概念模型的過程與程序員的關係並不大。最適合進行這項活動的人,應該是那些有較深資歷的領域專家,極端一點,甚至可以就是最為熟悉自身業務流程的客戶代表。只要稍稍學習簡單的建模知識,他們就可以勝任了。技術出身的人要做好這個工作,在開始之前他可能首先需要做的就是:忘掉VB,忘掉JAVA,忘掉.Net, 忘掉C++ 。。。
不過,作為開發人員,我比較認可一個思維跳出技術的條框,學習真正從“映射現實世界”的角度考慮問題的好辦法,就是——假想一下,自己正在通過某部電影的故事來製作一個RPG遊戲,電影里的橋段與遊戲中的場景相對應,然後思考,其中需要表達哪些不同概念。好吧,試著弄一個簡單的例子,這裡,我用《無間道》來試試(不要笑我eld啊)。
構建概念模型,需要從場景中提取各種“對系統目標有用”的概念。通常的方法是通過識別主要的領域辭彙,或者通過已有的概念目錄檢查表來查找。由於時間關係,我已經預先想好了一些。看過的朋友知道,像“卧底”、“警察”、“黑社會”、“情報”等等,都是《無間道》這部電影里的一些核心概念。很自然地,開始時我會傾向於發展這樣一個模型:(見右圖)
用例的概念模型
曾經也想過將“卧底”同時作為“警察”和“黑幫成員”的子概念,但覺得這樣比較複雜且僵硬,實現起來也不容易(對不起,我又想到實現了)。後來覺得可以試試將“身份”和“行為”概念提取出來,於是建立下面這樣的一個模型(見右圖):在這個模型中,每個人物可以機動地擁有1個以上的身份,多個行為。每個行為也可以與特定的身份掛鉤。這樣的話,對表達不同角色的複雜身份就可以比較靈活了。對陳、劉之間的本性問題,又引入“價值觀”這樣的概念描述。但可以看到,改變后的模型複雜度提高了,尤其當人物的“行為”很多的時候,就可能會在其下面出現比較大的概念群了。
系統的靈活性和複雜度的矛盾,是在提煉概念模型時必須慎重思考的問題。
可想而知,如果真的要做成RPG的話,更多的概念需要被提取出來。譬如“情感”、“人際關係”、“情報”、“武器”、“女朋友”。。。。。。由於時間關係,就不在這裡亂唱了。這次做的這個粗陋的模型,就權當拋磚引玉吧。
最好是能夠盡量充分地使用細粒度的概念來描述模型,而避免粗略描述。
這是書中推薦的一條指導原則,我沒有從正面理解也沒有找到論據去推翻他,這是讓我困惑的地方。其他一些指導性的原則包括:不能簡單地因為需求說明中沒有明顯的要求保留某個概念的信息或是概念中沒有屬性,就去掉概念,在問題領域中,那些只擔當純行為的概念也是存在的。其後便是一個用於搜索概念的‘黑名單’,這讓我更覺得不可思議,為什麼是這樣一個長長的黑名單而不是幾條簡潔的依據。最後我還是決心把他抄一遍:
概念類目 | 舉例 |
物理的或實在的對象 | 銷售點終端、飛機 |
規格說明、設計或者事物的描述 | 產品規格說明、航班描述 |
地點 | 商店、機場 |
事務 | 銷售、支付、預定 |
在線事務處理項 | 在線銷售項 |
人的角色 | 出納員、飛行員 |
包含其他事物的包容器 | 商店、銀行識別號、飛機 |
被包含在包容器內的事物 | 銷售商品項、乘客 |
系統外部的其他計算機系統或機械電子設備 | 信用卡授權系統、空中交通控制系統 |
抽象的名詞性概念 | 飢餓的人、恐高症 |
組織 | 銷售部、對象航線 |
事件 | 銷售、搶劫、會議、出航、墜機、著陸 |
過程(通常不用概念來表達,但有時也會用概念來表達過程) | 出售一個產品的過程、預定一個座位的過程 |
規則和策略 | 退貨政策、取消政策 |
目錄 | 產品目錄、零件目錄 |
財政收支、工作情況、合同等的記錄 | 收據、分類帳目、雇傭合同、維護日誌 |
金融工具和服務機構 | 信用卡、股票 |
手冊、書籍 | 僱員手冊、修理手冊 |
抄完了一遍,沒有找出一個通用性的指導原則,書中接下來給出的是根據名詞性短語找出概念,這讓我想起了某一期的程序員中有關於建模的文章,其中的概念模型的建立就是說根據名詞來找,想來這是一種極其幼稚的做法了,其中還有這樣一種情況,某些名詞只作為對象的屬性。
1,運用概念目錄列表或名詞性短語找出問題領域中的后選概念
2,繪製概念到概念模型圖中
3,為概念添加關聯關係
4,為概念添加屬性
概念模型設計
概念模型不依賴於具體的計算機系統,他是純粹反映信息需求的概念結構。
建模是在需求分析結果的基礎上展開,常常要對數據進行抽象處理。常用的數據抽象方法是‘聚集’和‘概括’。
E-R方法是設計概念模型時常用的方法。用設計好的ER圖再附以相應的說明書可作為階段成果
概念模型設計可分三步完成:
① 確定局部概念模型的範圍
② 定義實體
③ 定義聯繫
④ 確定屬性
⑤ 逐一畫出所有的局部ER圖,並附以相應的說明文件
建立全局E-R圖的步驟如下:
① 確定公共實體類型
② 合併局部E-R圖
③ 消除不一致因素
④ 優化全局E-R圖
⑤ 畫出全局E-R圖,並附以相應的說明文件。
概念模型的評審分兩部分進行:
第一部分是用戶評審。
第二部分是開發人員評審。