《管理信息系統(tǒng):第六章 系統(tǒng)設計》由會員分享,可在線閱讀,更多相關《管理信息系統(tǒng):第六章 系統(tǒng)設計(36頁珍藏版)》請在裝配圖網上搜索。
1、第六章 系統(tǒng)設計6.1面向對象系統(tǒng)設計概述面向對象系統(tǒng)設計概述6.2問題域設計問題域設計6.3數(shù)據(jù)庫設計數(shù)據(jù)庫設計6.4人機界面設計人機界面設計6.5 構件與部署設計構件與部署設計目錄 6.1.1面向對象系統(tǒng)設計的概念面向對象系統(tǒng)設計的概念 在面向對象分析階段,針對用戶需求已經建立起用面向對象概念描述的系統(tǒng)分析模型。在設計階段,要考慮為實現(xiàn)系統(tǒng)而采用的計算機設備、操作系統(tǒng)、網絡、數(shù)據(jù)管理系統(tǒng)以及所采用的編程語言等有關因素,基于面向對象分析模型,進一步運用面向對象方法對系統(tǒng)進行設計,構建面向對象設計模型。6.1面向對象系統(tǒng)設計概述面向對象系統(tǒng)設計概述 6.1.2面向對象系統(tǒng)分析與面向對象系統(tǒng)設計
2、的關系面向對象系統(tǒng)分析與面向對象系統(tǒng)設計的關系 面向對象分析的目標是建立一個映射自問題域、滿足用戶需求且獨立于實現(xiàn)的模型。 面向對象設計(Object-Oriented Design, OOD)要在面向對象分析模型的基礎上運用面向對象方法,主要解決與實現(xiàn)有關的問題,目標是產生符合具體實現(xiàn)條件的面向對象設計模型。 由于面向對象分析與面向對象設計的目標是不同的,這決定了它們有著不同的分工,并因此而具有不同的開發(fā)過程及具體策略。6.1面向對象系統(tǒng)設計概述面向對象系統(tǒng)設計概述 在面向對象分析階段,針對問題域和系統(tǒng)責任,把用戶需求轉化為用面向對象概念所建立的模型,以易于理解問題域和系統(tǒng)責任。這個面向對象
3、分析模型是問題域和系統(tǒng)責任的完整表達,而不考慮與實現(xiàn)有關的因素。面向對象設計才考慮與實現(xiàn)有關的問題(如選用的編程語言、數(shù)據(jù)庫系統(tǒng)和圖形用戶界面等),建立一個針對具體實現(xiàn)要求的面向對象設計模型。這樣做的主要目的是:l 使反映問題域本質的總體框架和組織結構長期穩(wěn)定,而細節(jié)可變。l 把穩(wěn)定的問題域部分與可變的與實現(xiàn)有關的部分分開,使得系統(tǒng)能從容地適應變化。l 有利于同一個分析模型用于不同的設計與實現(xiàn),可形成一個系統(tǒng)族。l 有利于相似系統(tǒng)的分析、設計或編程結果復用。6.1面向對象系統(tǒng)設計概述面向對象系統(tǒng)設計概述 面向對象分析和面向對象設計追求的目標不同,但它們采用一致的概念、原則和表示法,不像結構化方
4、法那樣從分析到設計存在著把數(shù)據(jù)流圖轉換為模塊結構圖的轉換,面向對象設計以面向對象分析模型為基礎,只需做必要的修改和調整,或補充某些細節(jié),并增加幾個與實現(xiàn)有關的相對獨立部分。因此面向對象分析與面向對象設計之間不存在像傳統(tǒng)方法中那樣的分析與設計之間的鴻溝,二者能夠緊密銜接,大大降低了從面向對象分析過渡到面向對象設計的難度和出錯率。這是面向對象的分析與設計方法優(yōu)于傳統(tǒng)的軟件工程方法的重要因素之一。6.1面向對象系統(tǒng)設計概述面向對象系統(tǒng)設計概述 這種觀點在模型驅動的體系結構(Model Driven Architecture, MDA)中獲得了新的生命力從MDA的觀點來看,不涉及具體實現(xiàn)條件的面向對象
5、分析模型是一個平臺無關模型,它獨立于任何實現(xiàn)平臺。在面向對象分析模型的基礎上,針對確定的實現(xiàn)條件而設計的面向對象設計模型則是一個平臺相關模型。6.1面向對象系統(tǒng)設計概述面向對象系統(tǒng)設計概述 6.1.3面向對象系統(tǒng)設計模型和過程面向對象系統(tǒng)設計模型和過程 根據(jù)面向對象分析和面向對象設計的關系,本書設立了圖1所示的面向對象設計模型。 面向對象設計模型包括一個核心部分,即問題域部分,還包括四個外圍部分:人機交互部分、控制驅動部分、數(shù)據(jù)管理部分和構件及部署部分。初始的問題域部分即為面向對象分析模型,要按照實現(xiàn)條件對其進行補充與調整;人機交互部分即人機界面設計部分;控制驅動部分用來定義和協(xié)調并發(fā)的各個控
6、制流;數(shù)據(jù)管理部分用來對持久對象的存取建模;構件及部署部分中的構件模型用于描述構件以及構件之間的關系,部署模型用于描述節(jié)點、節(jié)點之間的關系以及實現(xiàn)構件的制品在節(jié)點上的分布。6.1面向對象系統(tǒng)設計概述面向對象系統(tǒng)設計概述 6.1.3面向對象系統(tǒng)設計模型和過面向對象系統(tǒng)設計模型和過程程 至于面向對象設計模型正面中的五個部分,除了問題域部分外,其實的實現(xiàn)條件有很多選擇,即這些部分的模型受實現(xiàn)條件的影響很大,易隨實現(xiàn)條件的變化而變化。因而,它們單獨形成模型,再采取措施與問題域部分模型相銜接,使其變化盡量少地影響問題域部分模型,見圖2。6.1面向對象系統(tǒng)設計概述面向對象系統(tǒng)設計概述 6.1.3面向對象系
7、統(tǒng)設計模型和過程面向對象系統(tǒng)設計模型和過程 面向對象設計過程由與上述五個部分相對應的五項活動組成。面向對象設計過程不強調針對問題域部分、人機交互部分、控制驅動部分和數(shù)據(jù)管理部分的活動的執(zhí)行順序。 在面向對象分析階段可以運用原型技術,在面向對象設計階段仍然可以繼續(xù)使用原型技術,如把該技術用于驗證對數(shù)據(jù)庫系統(tǒng)、網絡結構和編程環(huán)境的選擇,以決定它們用于詳細設計的技術可行性。6.1面向對象系統(tǒng)設計概述面向對象系統(tǒng)設計概述6.1.4面向對象系統(tǒng)設計原則面向對象系統(tǒng)設計原則 為了使得設計是一個優(yōu)秀設計,在進行面向對象的設計時應該注意以下準則。 1、模塊化 2、抽象 3、信息隱藏 4、弱耦合 5、強內聚 6
8、、可重用6.1面向對象系統(tǒng)設計概述面向對象系統(tǒng)設計概述 面向對象設計的問題域部分設計以面向對象分析的結果作為輸入,按實現(xiàn)條件對其進行補充與調整。進行問題域部分設計,要繼續(xù)運用面向對象分析方法,包括概念、表示法及一部分策略。不但要根據(jù)實現(xiàn)條件進行面向對象設計設計,而且由于需求變化或新發(fā)現(xiàn)了錯誤,也要對面向對象分析的結果進行修改,以保持不同階段模型的一致性。本章的重點是對面向對象分析結果進行補充與調整,要強調的是部分工作主要不是細化,但面向對象分析未完成的細節(jié)定義要在面向對象設計完成。如下各節(jié)要講述用于問題域設計的主要技術。6.2問題域設計問題域設計 6.2.1 復用類 如果在面向對象分析階段識別
9、和定義的類是本次系統(tǒng)開發(fā)中新定義的,且沒有可復用的資源,則需要進一步設計和編程。 如果已存在一些可復用的類,而且這些類既有分析、設計時的定義,又有源程序,那么復用這些類顯然可以提高開發(fā)效率與質量。例如,如果存在通用的類“圖書”,在零售書店領域,可設立特殊的類“零售圖書”來繼承它;而在圖書館領域,可設立類“館藏圖書”來繼承它。如果有可能,要盡量尋找相同或相似的具有特定結構的一組類進行復用,以減少新開發(fā)的部分。 既然可復用的類可能與面向對象分析模型中的類完全相同,也可能只是相似,這就要區(qū)分如下幾種情況,分別進行處理。6.2問題域設計問題域設計 6.2.1 復用類 當前所需要的類(問題域原有的類)的
10、信息與可復用類的信息相比: 1)如果完全相同,就把可復用的類直接加到問題域,并用復用標記所復用的類,即把它寫在類名前。 2)如果多于,就把可復用的類直接加到問題域,刪除可復用類中的多余信息,并用復用標記所復用的類,所需要的類再繼承它。 3)如果少于,就把可復用的類直接加到問題域,刪除可復用類中的多余信息,并用復用標記所復用的類。 4)如果近似,按如下的方法處理: 把要復用的類加到問題域,并標以復用。 去掉(或標出)復用類中不需要的屬性與操作,建立從復用類到問題域原有的類之間的繼承關系。 由于問題域的類繼承了復用類的特征,所以前者中能繼承來的屬性和操作就不需要了,應該把它們去掉。 考慮修改問題域
11、原有類與其他類間的關系,必要時把相應的關系移到復用類上。6.2問題域設計問題域設計 6.2.1 復用類 例如,問題域中有一個類“車輛”,其中的屬性有:序號、顏色、樣式和出廠年月,還有一個操作為“序號認證”?,F(xiàn)在找到了一個可復用的類“車輛”,其中的屬性有:序號、廠商和樣式,也有一個操作為“序號認證”。首先把可復用的類“車輛”標記為復用,去掉其中不需要的屬性“廠商”,把類“車輛”復用作為類“車輛”的一般類,再把類“車輛”中的屬性“序號”和“樣式”以及操作“序號認證”去掉,因為一般類中已經有了這些特征,類“車輛”從中繼承即可。6.2問題域設計問題域設計 6.2.2 增加一般類以建立共同協(xié)議 在面向對
12、象分析中,將多個類都具有的共同特征提升到一般類中,考慮的是問題域中的事物的共同特征。在面向對象設計中再定義一般類,主要是考慮到一些類具有共同的實現(xiàn)策略,因而用一般類集中地給出多個類的實現(xiàn)都要使用的屬性和操作。如下為需要增加一般類的幾種情況: 1)增加一個類,將所有具有相同屬性和操作的類組織在一起,提供通用的協(xié)議。 2)增加一般類,提供局部通用的協(xié)議。 上述兩種情況都是通過建立繼承,把若干類中定義了的相同操作提升到一般類中,特殊類再從中繼承。然而,在不同類中的操作可能是相似的,而不是相同的,有時需要對這種情況進行處理。 3)對相似操作的處理。 若幾個類都具有一些語義相同、特征標記相似的操作,則可
13、對操作的特征標記做小的修改,以使得它們相同,然后再把它們提升到一般的類中。6.2問題域設計問題域設計 6.2.3 多繼承與多態(tài) 1、對繼承的調整 當編程語言不支持多繼承時,需要把模型中的多繼承化為單繼承或無繼承。有以下幾種轉化方法: 1)簡單轉換 一般-特殊結構和整體-部分結構在有些情況下可以互相變通。 其原理是:盡管繼承和聚合反映了現(xiàn)實世界中兩種不同的關系,但是從最終效果來看卻也存在著共性都是使一個類的對象能夠擁有另一個(或另一些)類的屬性和操作。6.2問題域設計問題域設計 6.2.3 多繼承與多態(tài) 機械的轉化方法是將多繼承的特殊類作為轉化后的整體對象類,將它的一個或多個一般類作為轉換后的部
14、分對象類;同時將相應的一般-特殊連接符改為整體-部分連接符,如圖3a所示。然而這樣簡單、機械地進行轉換卻存在以下兩個問題。 第一個問題是,在有些情況下,轉換之后的類之間的關系語義可能有悖于客觀世界的常理。6.2問題域設計問題域設計6.2問題域設計問題域設計 6.2.3 多繼承與多態(tài) 2)重新定義對象類 針對上一種方法所存在的問題,需要給出一種在多數(shù)情況下都可行的解決辦法,使調整之后的結果仍能自然地映射問題域,并且不產生重復信息。6.2問題域設計問題域設計 6.2.3 多繼承與多態(tài) 3)保持分類,剝離多繼承信息 這種方法是保持原先多繼承結構中的每個類,同時把形成多繼承的每一組特殊信息從有關的類中
15、剝離出來,定義為部分對象類,再通過聚合使各個特殊類能夠擁有這信息。6.2問題域設計問題域設計 6.2.3 多繼承與多態(tài) 3)保持分類,剝離多繼承信息 這種方法是保持原先多繼承結構中的每個類,同時把形成多繼承的每一組特殊信息從有關的類中剝離出來,定義為部分對象類,再通過聚合使各個特殊類能夠擁有這信息。6.2問題域設計問題域設計 6.2.3 多繼承與多態(tài) 2、對多態(tài)性的調整 當模型中采用多態(tài)性表示,而編程語言不支持多態(tài)性時,則需要進行調整。6.2問題域設計問題域設計 6.3.1數(shù)據(jù)庫設計概述 1 數(shù)據(jù)庫設計的定義 2 數(shù)據(jù)庫設計步驟 (1)系統(tǒng)需求的調查與分析。 (2)概念設計。 (3)邏輯設計。
16、 (4)物理設計。 (5)實施與測試。 (6)運行維護。6.3數(shù)據(jù)庫設計數(shù)據(jù)庫設計 6.3.2 數(shù)據(jù)庫管理系統(tǒng)及其選擇 實現(xiàn)數(shù)據(jù)在永久性存儲介質上的存儲、檢索、管理與維護等功能的軟件系統(tǒng)支持稱為數(shù)據(jù)庫管理系統(tǒng),包括文件系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)兩大類。本節(jié)從應用的角度介紹幾種常用的數(shù)據(jù)庫管理系統(tǒng)的特點,并討論在面向對象的設計中如何對它們進行選擇。 1文件系統(tǒng) 2 數(shù)據(jù)庫管理系統(tǒng) 3 關系數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng) 4 面向對象數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng) 5 數(shù)據(jù)庫管理系統(tǒng)的選擇6.3數(shù)據(jù)庫設計數(shù)據(jù)庫設計 6.3.3數(shù)據(jù)庫設計方法 首先要選擇存儲持久對象的系統(tǒng),目前典型的有文件系統(tǒng)、關系數(shù)據(jù)庫系統(tǒng)和面向對象數(shù)
17、據(jù)庫系統(tǒng)。以下先討論如何利用關系數(shù)據(jù)庫系統(tǒng)進行數(shù)據(jù)存取的設計,然后討論如何利用面向對象的數(shù)據(jù)庫系統(tǒng)和文件系統(tǒng)進行數(shù)據(jù)存取的設計。 1 針對關系數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)存取設計6.3數(shù)據(jù)庫設計數(shù)據(jù)庫設計6.3數(shù)據(jù)庫設計數(shù)據(jù)庫設計6.3數(shù)據(jù)庫設計數(shù)據(jù)庫設計 6.3.3數(shù)據(jù)庫設計方法 2 針對面向對象數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)存取設計 3 針對文件系統(tǒng)的數(shù)據(jù)存取設計6.3數(shù)據(jù)庫設計數(shù)據(jù)庫設計 6.4.1 人機界面設計概述 人機交互部分是面向對象設計模型的外圍組成部分之一。其中所包含的對象構成了系統(tǒng)的人機界面,稱為界面對象。 將面向對象設計模型的人機交互部分獨立出來進行設計,好處是隔離了界面支持系統(tǒng)對問題域部分的影響當
18、界面支持系統(tǒng)變化時,問題域部分可以基本保持不變。 人機界面的開發(fā)不純粹是設計和實現(xiàn)問題,在很大程度上也是分析問題。通過分析用戶對人機界面的需求,才能設計出使用戶感到滿意的界面。6.4人機界面設計人機界面設計 6.4.2人機界面設計準則 一個軟件系統(tǒng)是否成功,最終的檢驗標準是它能否使用戶感到滿意。由于人機界面是系統(tǒng)與用戶直接接觸的部分,它給予用戶的影響和感受最為明顯,所以人機界面質量的優(yōu)劣對于一個軟件系統(tǒng)是否能夠獲得成功具有至關重要的作用。 人們通過對人機界面的長期研究與實踐形成了一些公認的評價準則,以下列舉其中的若干準則。 使用簡便 一致性 啟發(fā)性 減少人腦記憶的負擔 減少重復的輸入 容錯性
19、及時反饋 其他6.4人機界面設計人機界面設計 6.4.3面向對象人機界面設計 1 選擇界面支持系統(tǒng) 2 選用實現(xiàn)交互的界面元素 3 用面向對象概念表示界面元素6.4人機界面設計人機界面設計 構件圖和部署圖是對面向對象系統(tǒng)的物理方面進行建模所用到的兩種圖,它們顯示了系統(tǒng)實現(xiàn)的一些特性,包括源代碼的靜態(tài)結構和運行時刻的實現(xiàn)結構。其中,構件圖顯示的是組成系統(tǒng)的構件之間的組織及其依賴關系;部署圖則用于描述系統(tǒng)運行時的硬件節(jié)點。本節(jié)主要介紹構件圖和部署圖的基本概念和在實際中的運用。6.5 構件與部署設計構件與部署設計 6.5.2構件設計-構件圖 1構件圖的概念6.5 構件與部署設計構件與部署設計2 繪制構件圖 6.5.3部署圖 1 部署圖的概念 2 部署圖的表示 (1)節(jié)點 (2)連接 (3)設備6.5 構件與部署設計構件與部署設計 6.5.4 設計部署圖 1 節(jié)點的創(chuàng)建 2 節(jié)點的設置 3 連接的創(chuàng)建6.5 構件與部署設計構件與部署設計