《系統(tǒng)設(shè)計(jì)》PPT課件
《《系統(tǒng)設(shè)計(jì)》PPT課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《《系統(tǒng)設(shè)計(jì)》PPT課件(183頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第7章 系統(tǒng)設(shè)計(jì),7.1 概述 7.2 系統(tǒng)平臺(tái)設(shè)計(jì) 7.3 拓?fù)浣Y(jié)構(gòu)和計(jì)算模式設(shè)計(jì) 7.4 軟件結(jié)構(gòu)設(shè)計(jì) 7.5 詳細(xì)設(shè)計(jì) 7.6 數(shù)據(jù)庫(kù)設(shè)計(jì),7.1 概 述,7.1.1 系統(tǒng)設(shè)計(jì)的任務(wù)和特點(diǎn) 在信息系統(tǒng)開發(fā)中,突出信息系統(tǒng)特征的業(yè)務(wù)、管理、決策等因素已經(jīng)在前續(xù)階段中被消融和解決,到了系統(tǒng)設(shè)計(jì)階段,信息系統(tǒng)的設(shè)計(jì)與一般軟件系統(tǒng)的設(shè)計(jì)已經(jīng)沒有太大的區(qū)別,軟件工程對(duì)軟件設(shè)計(jì)的思想、方法、技術(shù)和過程完全適應(yīng)于信息系統(tǒng)的設(shè)計(jì)。因此,信息系統(tǒng)的設(shè)計(jì)也就基本等同于軟件系統(tǒng)的設(shè)計(jì)。,系統(tǒng)設(shè)計(jì)的任務(wù)是,為實(shí)現(xiàn)信息系統(tǒng)需求模型所規(guī)定的功能和性能要求,考慮信息系統(tǒng)實(shí)現(xiàn)環(huán)境,通過對(duì)信息系統(tǒng)分析模型的綜合分析和細(xì)化
2、,確定出信息系統(tǒng)的設(shè)計(jì)模型。,與系統(tǒng)分析相比,系統(tǒng)設(shè)計(jì)具有以下特點(diǎn): (1)設(shè)計(jì)性。設(shè)計(jì)不同于分析,設(shè)計(jì)是根據(jù)系統(tǒng)的要求,得出實(shí)現(xiàn)系統(tǒng)的方案。所以,系統(tǒng)設(shè)計(jì)是根據(jù)需求確定系統(tǒng)方案的過程。 (2) 具體化。相對(duì)于系統(tǒng)分析的概念性而言,系統(tǒng)設(shè)計(jì)不能停留在概念層次上,必須具體化、細(xì)致化。 (3)復(fù)雜性。系統(tǒng)設(shè)計(jì)涉及到具體細(xì)節(jié),工作量大、頭緒繁多,一般要比系統(tǒng)分析多出近乎5倍的工作量,因此,設(shè)計(jì)人員必須認(rèn)真對(duì)待。 (4)往復(fù)性。一個(gè)成熟的設(shè)計(jì)方案并不是一次完成的,而需要經(jīng)過多次的迭代反復(fù)才能夠完成。,7.1.2 系統(tǒng)設(shè)計(jì)的主要工作 1平臺(tái)設(shè)計(jì) 2結(jié)構(gòu)設(shè)計(jì) 3詳細(xì)設(shè)計(jì) 4界面設(shè)計(jì) 5數(shù)據(jù)庫(kù)設(shè)計(jì),主要工作
3、簡(jiǎn)介 1平臺(tái)設(shè)計(jì) 信息系統(tǒng)平臺(tái)是信息系統(tǒng)開發(fā)和運(yùn)行的環(huán)境,包括網(wǎng)絡(luò)、計(jì)算機(jī)、相關(guān)設(shè)備、支撐軟件和系統(tǒng)軟件等。平臺(tái)設(shè)計(jì)需要根據(jù)信息系統(tǒng)設(shè)計(jì)要求,通過對(duì)技術(shù)和市場(chǎng)的綜合分析,確定出網(wǎng)絡(luò)結(jié)構(gòu)、設(shè)備選型和軟件平臺(tái)方案。,2結(jié)構(gòu)設(shè)計(jì) 在設(shè)計(jì)工作中,需要確定信息系統(tǒng)的拓?fù)浣Y(jié)構(gòu)、計(jì)算模式和軟件結(jié)構(gòu)。 3詳細(xì)設(shè)計(jì) 詳細(xì)設(shè)計(jì)是對(duì)軟件結(jié)構(gòu)中確定出的各個(gè)子系統(tǒng)內(nèi)部的設(shè)計(jì),需要分析和確定每一個(gè)子系統(tǒng)中的用例設(shè)計(jì)、設(shè)計(jì)類和接口。 4界面設(shè)計(jì) 界面設(shè)計(jì)是對(duì)人和外部系統(tǒng)與信息系統(tǒng)之間交互界面的設(shè)計(jì)。它包括輸入界面、輸出界面和混合界面的設(shè)計(jì)。,5數(shù)據(jù)庫(kù)設(shè)計(jì) 數(shù)據(jù)庫(kù)是信息系統(tǒng)存儲(chǔ)和管理數(shù)據(jù)的主要技術(shù)手段,數(shù)據(jù)庫(kù)設(shè)計(jì)的任務(wù)是根據(jù)
4、給定的信息系統(tǒng)應(yīng)用需求和系統(tǒng)環(huán)境,設(shè)計(jì)出合理的數(shù)據(jù)庫(kù)結(jié)構(gòu)。數(shù)據(jù)庫(kù)設(shè)計(jì)需要經(jīng)過概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)等步驟。,7.1.3 信息系統(tǒng)設(shè)計(jì)模型和軟件模型 信息系統(tǒng)設(shè)計(jì)模型是對(duì)信息系統(tǒng)設(shè)計(jì)方案的抽象描述,它要完整描述信息系統(tǒng)設(shè)計(jì)的內(nèi)容,并具有簡(jiǎn)明、抽象、概括和規(guī)范等特點(diǎn)。 信息系統(tǒng)設(shè)計(jì)模型包括平臺(tái)模型、拓?fù)溆?jì)算模型(拓?fù)浣Y(jié)構(gòu)和計(jì)算模式)、軟件模型、界面模型和數(shù)據(jù)庫(kù)模型等內(nèi)容(見圖7.1)。,圖7.1 信息系統(tǒng)設(shè)計(jì)模型,軟件模型的構(gòu)成見圖7.2。軟件系統(tǒng)是軟件模型的頂層視圖,它由子系統(tǒng)、設(shè)計(jì)類、用例設(shè)計(jì)和接口構(gòu)成。系統(tǒng)中的絕大部分設(shè)計(jì)類和用例設(shè)計(jì)均處在子系統(tǒng)中,但對(duì)系統(tǒng)具有重要意義的少數(shù)用例設(shè)計(jì)和
5、設(shè)計(jì)類也可能不包括在子系統(tǒng)中,而直接屬于軟件系統(tǒng)。,圖7.2 軟件模型,圖7.3 用例設(shè)計(jì)到用例分析和用例的跟蹤,用例設(shè)計(jì)包括用例的設(shè)計(jì)類圖和交互圖。 設(shè)計(jì)類圖反映一個(gè)用例中的設(shè)計(jì)類所呈現(xiàn)的靜態(tài)結(jié)構(gòu)。與分析類圖相比較,設(shè)計(jì)類圖更詳細(xì)、更具體。設(shè)計(jì)類圖所反映的設(shè)計(jì)類之間的關(guān)系應(yīng)該能夠被所采用的程序設(shè)計(jì)語言所支持。 通過交互圖,可描述在實(shí)現(xiàn)一個(gè)用例過程中各個(gè)設(shè)計(jì)類之間的消息聯(lián)系過程,接口是設(shè)計(jì)類或子系統(tǒng)對(duì)外所能夠提供的操作。接口并不涉及到對(duì)設(shè)計(jì)類或子系統(tǒng)操作的實(shí)現(xiàn)。接口也是設(shè)計(jì)類或子系統(tǒng)對(duì)外所提供的操作視圖,其它設(shè)計(jì)類或子系統(tǒng)通過接口來與提供接口的設(shè)計(jì)類發(fā)生關(guān)系。接口的實(shí)現(xiàn)如圖7.4所示。 (你所
6、知道的軟件接口有哪些?),圖7.4 接口的實(shí)現(xiàn),7.2 系統(tǒng)平臺(tái)設(shè)計(jì),7.2.1 網(wǎng)絡(luò)設(shè)計(jì) 信息系統(tǒng)一般都是集成式、綜合性系統(tǒng),網(wǎng)絡(luò)把系統(tǒng)的各個(gè)部分連接到一起以形成一體化系統(tǒng),網(wǎng)絡(luò)在系統(tǒng)設(shè)計(jì)中占有很重要的地位。,網(wǎng)絡(luò)設(shè)計(jì)主要包括網(wǎng)絡(luò)需求分析、網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)和網(wǎng)絡(luò)詳細(xì)設(shè)計(jì)三部分內(nèi)容。 1. 網(wǎng)絡(luò)需求分析 網(wǎng)絡(luò)需求分析是通過對(duì)所開發(fā)的信息系統(tǒng)的規(guī)模、系統(tǒng)所覆蓋業(yè)務(wù)的地域分布、計(jì)算機(jī)設(shè)備、網(wǎng)絡(luò)服務(wù)等方面需求的分析,為確定網(wǎng)絡(luò)總體結(jié)構(gòu)、網(wǎng)絡(luò)詳細(xì)設(shè)計(jì)提供依據(jù)。網(wǎng)絡(luò)需求分析需要調(diào)查和分析以下6方面的內(nèi)容。,1)信息系統(tǒng)的特征對(duì)網(wǎng)絡(luò)的需求:辦公自動(dòng)化系統(tǒng)和CIMS系統(tǒng)對(duì)網(wǎng)絡(luò)的結(jié)構(gòu)和布局有不同的要求。 2)信息
7、系統(tǒng)拓?fù)浣Y(jié)構(gòu)和計(jì)算模式對(duì)網(wǎng)絡(luò)的需求 3)信息系統(tǒng)業(yè)務(wù)所覆蓋的地理分布 4)網(wǎng)絡(luò)服務(wù)需求:數(shù)據(jù)庫(kù)訪問方式和數(shù)據(jù)存儲(chǔ)分布模式;文件傳輸和存取需求;電子郵件和遠(yuǎn)程通信需求;企業(yè)網(wǎng)與社會(huì)網(wǎng)、因特網(wǎng)的互連需求等。 5)信息類型和信息量 6)性能需求:系統(tǒng)對(duì)網(wǎng)絡(luò)的效率、速度、可靠性、安全性等性能要求。,2. 網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì) 網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)的主要任務(wù)是根據(jù)網(wǎng)絡(luò)需求分析的結(jié)果,設(shè)計(jì)出能夠滿足信息系統(tǒng)需要、結(jié)構(gòu)合理、易于擴(kuò)充、性能價(jià)格比高的系統(tǒng)網(wǎng)絡(luò)總體結(jié)構(gòu)。系統(tǒng)網(wǎng)絡(luò)總體結(jié)構(gòu)可以采用單級(jí)、二級(jí)和多級(jí)結(jié)構(gòu)。,1) 單級(jí)結(jié)構(gòu) 對(duì)于規(guī)模較小、地域相對(duì)集中的小型系統(tǒng),可以采用單級(jí)網(wǎng)絡(luò)結(jié)構(gòu)。單級(jí)結(jié)構(gòu)一般采用一個(gè)小型局域網(wǎng),各部
8、分之間可以采用集線器、網(wǎng)橋連接,如果在局域網(wǎng)中還有異構(gòu)網(wǎng)絡(luò),可以采用網(wǎng)關(guān)。 2) 二級(jí)結(jié)構(gòu) 對(duì)于分布地域范圍較廣、管理復(fù)雜的中型系統(tǒng),可以采用二級(jí)網(wǎng)絡(luò)結(jié)構(gòu)。二級(jí)網(wǎng)絡(luò)結(jié)構(gòu)一般由高速主干網(wǎng)和多個(gè)局域網(wǎng)構(gòu)成。主干網(wǎng)可以選擇FDDI、交換網(wǎng)、ATM或快速以太網(wǎng)等技術(shù)。,3) 多級(jí)結(jié)構(gòu) 對(duì)于跨地區(qū)、跨省、跨國(guó)的大型或超大型系統(tǒng),則需要采用多級(jí)網(wǎng)絡(luò)結(jié)構(gòu)。在多級(jí)網(wǎng)絡(luò)結(jié)構(gòu)中,一般頂層采用社會(huì)公用網(wǎng)或?qū)S脧V域網(wǎng),二級(jí)和三級(jí)則為骨干網(wǎng)和主干網(wǎng),最下一級(jí)為局域網(wǎng)。,3. 網(wǎng)絡(luò)詳細(xì)設(shè)計(jì) 網(wǎng)絡(luò)詳細(xì)設(shè)計(jì)包括網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)、網(wǎng)絡(luò)設(shè)備選型、網(wǎng)絡(luò)布線設(shè)計(jì)、網(wǎng)絡(luò)操作系統(tǒng)選擇、網(wǎng)絡(luò)管理設(shè)計(jì)等內(nèi)容。 1) 網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì) 網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)指
9、通過網(wǎng)絡(luò)需求分析,詳細(xì)確定每一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的具體位置、設(shè)備類型和連網(wǎng)設(shè)備,并繪制出網(wǎng)絡(luò)節(jié)點(diǎn)分布圖,以便根據(jù)網(wǎng)絡(luò)節(jié)點(diǎn)分布圖進(jìn)行設(shè)備選型和網(wǎng)絡(luò)布線設(shè)計(jì)。,2) 網(wǎng)絡(luò)設(shè)備確定及選擇 需要詳細(xì)確定整個(gè)網(wǎng)絡(luò)系統(tǒng)所需要的服務(wù)器、路由器、集線器、網(wǎng)關(guān)、網(wǎng)橋、網(wǎng)卡、網(wǎng)線等網(wǎng)絡(luò)設(shè)備。還需要根據(jù)網(wǎng)絡(luò)的功能和性能需求,確定各個(gè)網(wǎng)絡(luò)設(shè)備的性能指標(biāo)。例如,服務(wù)器需要多大存儲(chǔ)容量、多高速度;根據(jù)系統(tǒng)的安全性、可靠性要求確定是選擇雙服務(wù)器系統(tǒng)、磁盤鏡像技術(shù),還是采用單服務(wù)器。,3) 網(wǎng)絡(luò)布線設(shè)計(jì) 根據(jù)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)的結(jié)果和具體地理分布,要進(jìn)行細(xì)致的網(wǎng)絡(luò)布線設(shè)計(jì)。目前網(wǎng)絡(luò)布線一般對(duì)網(wǎng)絡(luò)系統(tǒng)、電話系統(tǒng)、監(jiān)控系統(tǒng)采用統(tǒng)一布線方式,這
10、種布線方式叫做結(jié)構(gòu)化布線。結(jié)構(gòu)化布線設(shè)計(jì)需要由低層向高層逐層進(jìn)行布線設(shè)計(jì)。首先在辦公室確定網(wǎng)絡(luò)設(shè)備位置和插座位置;再確定每個(gè)樓層的水平布線;然后確定樓層的垂直布線;最后確定主干網(wǎng)線的布線。,4) 網(wǎng)絡(luò)操作系統(tǒng)選擇 網(wǎng)絡(luò)操作系統(tǒng)是網(wǎng)絡(luò)的核心軟件。一般在大型網(wǎng)絡(luò)系統(tǒng)中并不一定只選擇一個(gè)統(tǒng)一的網(wǎng)絡(luò)操作系統(tǒng)。有時(shí)可能會(huì)采用多個(gè)網(wǎng)絡(luò)操作系統(tǒng)。目前可供選擇的網(wǎng)絡(luò)操作系統(tǒng)有UNIX、Windows NT、NetWare、OS2等,可根據(jù)系統(tǒng)需要進(jìn)行選擇。 5) 網(wǎng)絡(luò)管理設(shè)計(jì) 對(duì)網(wǎng)絡(luò)系統(tǒng)需要進(jìn)行有效管理。一般大型網(wǎng)絡(luò)系統(tǒng)采用一個(gè)網(wǎng)絡(luò)管理中心、多個(gè)網(wǎng)管分中心的方式。網(wǎng)絡(luò)管理設(shè)計(jì)需要確定網(wǎng)絡(luò)管理結(jié)構(gòu)、網(wǎng)絡(luò)管理軟件
11、、網(wǎng)絡(luò)管理職責(zé)和人員等。,7.2.2 物理設(shè)備設(shè)計(jì) 除了網(wǎng)絡(luò)系統(tǒng)之外,信息系統(tǒng)還包括大量的計(jì)算機(jī)和相關(guān)信息設(shè)備等物理設(shè)備,根據(jù)需要正確地選擇物理設(shè)備也是平臺(tái)設(shè)計(jì)的一個(gè)主要內(nèi)容。 1. 物理設(shè)備的基本類型 信息系統(tǒng)的物理設(shè)備一般包括以下類型: 1) 計(jì)算機(jī)系統(tǒng) 計(jì)算機(jī)系統(tǒng)有多種形式。按規(guī)模和性能分有巨型機(jī)、大型機(jī)、中型機(jī)、小型機(jī)、工作站和微型機(jī);按用途分有通用機(jī)和專用機(jī)。,2) 相關(guān)I/O設(shè)備 每一個(gè)計(jì)算機(jī)系統(tǒng)都有各自的I/O(輸入/輸出)設(shè)備,除了計(jì)算機(jī)系統(tǒng)所配置的I/O設(shè)備之外,根據(jù)需要,不同類型的信息系統(tǒng)還需要配置一些特殊的I/O設(shè)備。相關(guān)的I/O設(shè)備有共享打印機(jī)、掃描儀、繪圖儀、條碼閱讀
12、器、IC卡讀寫器、磁卡讀寫機(jī)、數(shù)字照相機(jī)、投影儀、專用鍵盤、聲光傳感器等。 3) 多媒體設(shè)備 多媒體設(shè)備有觸摸屏、圖像攝取儀、聲/視卡、圖像處理卡、音箱、功率放大器、攝像機(jī)、錄像機(jī)、解壓卡等。,4) 辦公設(shè)備 辦公信息系統(tǒng)還要配置大量的辦公自動(dòng)化設(shè)備。一般辦公自動(dòng)化設(shè)備有會(huì)議系統(tǒng)、復(fù)印機(jī)、碎紙機(jī)等。 5) 電源系統(tǒng) 電源系統(tǒng)有不間斷電源、穩(wěn)壓器等。 6) 機(jī)房設(shè)備 機(jī)房設(shè)備有電力系統(tǒng)、布線系統(tǒng)、安全系統(tǒng)、消防系統(tǒng)、照明設(shè)備、制冷設(shè)備、清潔設(shè)備等。,2. 物理設(shè)備設(shè)計(jì) 物理設(shè)備設(shè)計(jì)是根據(jù)信息系統(tǒng)的設(shè)計(jì)要求,確定信息系統(tǒng)物理設(shè)備方案。所設(shè)計(jì)的物理設(shè)備方案在能夠充分滿足信息系統(tǒng)功能需要的前提下,還應(yīng)
13、該滿足系統(tǒng)的效率、可靠性、安全性和適應(yīng)性等性能要求,并具有較高的性價(jià)比。,7.2.3 軟件平臺(tái)設(shè)計(jì) 軟件平臺(tái)是信息系統(tǒng)開發(fā)和運(yùn)行所需的集成軟件系統(tǒng)。設(shè)計(jì)和選擇高效、實(shí)用、方便、功能齊全的軟件平臺(tái),對(duì)信息系統(tǒng)開發(fā)有著十分重要的意義。目前,可供選擇的軟件平臺(tái)很多,軟件平臺(tái)設(shè)計(jì)就需要系統(tǒng)分析員根據(jù)實(shí)際開發(fā)的需要,充分考慮各種軟件平臺(tái)的性能和適應(yīng)范圍,并結(jié)合開發(fā)隊(duì)伍對(duì)軟件平臺(tái)的使用經(jīng)驗(yàn),選擇出有效的軟件平臺(tái)。,1. 操作系統(tǒng) 操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)中最重要的系統(tǒng)軟件。目前主要的大型操作系統(tǒng)有UNIX、Windows NT、OS/2、Macintosh等;在微機(jī)上運(yùn)行的桌面操作系統(tǒng)有Windows 95、
14、Windows 98、Windows ME、Windows XP等。這些操作系統(tǒng)各有其適應(yīng)面和優(yōu)缺點(diǎn),應(yīng)根據(jù)需要進(jìn)行選擇。,2. 支撐軟件 支撐軟件是協(xié)助人們開發(fā)和維護(hù)軟件的工具和環(huán)境軟件。編輯程序、數(shù)據(jù)庫(kù)系統(tǒng)、集成開發(fā)環(huán)境等都屬于支撐型軟件,如Visual Basic、Delphi、PowerBuilder、Oracle、Java等。支撐軟件主要包括以下幾方面軟件: 1) 數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS 在數(shù)據(jù)庫(kù)服務(wù)器上的DBMS對(duì)數(shù)據(jù)庫(kù)實(shí)施集中管理,可以并發(fā)地處理多個(gè)客戶機(jī)發(fā)來的數(shù)據(jù)處理請(qǐng)求。常見的數(shù)據(jù)庫(kù)管理系統(tǒng)有SQL-Server、Oralce、Sybase、Informix、DB2等,系統(tǒng)分
15、析員可以根據(jù)自己的需要進(jìn)行選擇。,2) 客戶端開發(fā)軟件 客戶端開發(fā)軟件十分豐富,系統(tǒng)開發(fā)人員可以根據(jù)設(shè)計(jì)需要進(jìn)行選擇,選擇客戶端開發(fā)軟件要考慮繼承性。常見的客戶端開發(fā)軟件有PowerBuilder、Visual Basic、Visual C+、Delphi、Visual Foxpro、Java等。 3) 中間件協(xié)議和軟件 在網(wǎng)絡(luò)設(shè)計(jì)中已經(jīng)確定了網(wǎng)絡(luò)操作系統(tǒng)和網(wǎng)絡(luò)傳輸協(xié)議中間件。還要進(jìn)一步確定的中間件有: (1) 數(shù)據(jù)庫(kù)中間件。通過數(shù)據(jù)庫(kù)中間件,可允許客戶在異構(gòu)數(shù)據(jù)庫(kù)上調(diào)用基于SQL的服務(wù)。數(shù)據(jù)庫(kù)中間件有ODBC、DRDA、IDAPI、RDA、ORACLE-GLUE等。,(2) 事務(wù)處理中間件。
16、通過事務(wù)處理中間件,可允許客戶在多個(gè)事務(wù)服務(wù)器上調(diào)用服務(wù)。事務(wù)處理監(jiān)視器允許不同的服務(wù)器控制其本地資源,并在需要訪問本地資源時(shí)與其它事務(wù)處理監(jiān)視器進(jìn)行合作。事務(wù)處理監(jiān)視器保證服務(wù)器內(nèi)和服務(wù)器之間的所有活動(dòng)的完整性。這方面的標(biāo)準(zhǔn)包括TUXEDO的ATMI、ENCINA的RPC和X/Open的TXRPC等。 (3) 群件中間件。通過群件中間件,客戶可以在多個(gè)群件服務(wù)器上調(diào)用服務(wù)。目前群件中間件有電子郵件方面的PAPI及Lotus Notes API等。,3. CASE平臺(tái) 采用CASE開發(fā)環(huán)境可以保證信息系統(tǒng)開發(fā)質(zhì)量,提高開發(fā)效率,保證文檔的一致性,減輕開發(fā)人員的工作負(fù)擔(dān)。CASE平臺(tái)與所支持的系
17、統(tǒng)開發(fā)方法有直接聯(lián)系,有支持結(jié)構(gòu)化方法的CASE、支持原型化方法的CASE、支持OO方法的CASE和支持多種方法的綜合CASE環(huán)境。開發(fā)小組應(yīng)該根據(jù)所采用的開發(fā)方法來選擇合適的CASE環(huán)境。,7.3 拓?fù)浣Y(jié)構(gòu)和計(jì)算模式設(shè)計(jì),7.3.1 信息系統(tǒng)拓?fù)浣Y(jié)構(gòu)設(shè)計(jì) 拓?fù)浣Y(jié)構(gòu)設(shè)計(jì)需要確定信息系統(tǒng)的節(jié)點(diǎn)和節(jié)點(diǎn)的結(jié)構(gòu)。節(jié)點(diǎn)是信息系統(tǒng)中一個(gè)在邏輯分布上相對(duì)獨(dú)立的處理實(shí)體,一個(gè)節(jié)點(diǎn)一般要包括一臺(tái)獨(dú)立的計(jì)算機(jī)和外圍設(shè)備。節(jié)點(diǎn)可以是人機(jī)交互的客戶機(jī),也可以是業(yè)務(wù)管理、數(shù)據(jù)庫(kù)管理、Web管理的服務(wù)器。,在考慮所要設(shè)置的節(jié)點(diǎn)時(shí),同時(shí)就要一并考慮該節(jié)點(diǎn)的作用和類型。節(jié)點(diǎn)的類型一般需要根據(jù)采用的計(jì)算模式而定。 例如,采用客
18、戶機(jī)/服務(wù)器模式中的節(jié)點(diǎn)就有客戶機(jī)和服務(wù)器兩種類型,而采用應(yīng)用服務(wù)器模式的系統(tǒng)中,節(jié)點(diǎn)可以分為客戶機(jī)、應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器這幾種形式。,下面給出書店信息系統(tǒng)分布結(jié)構(gòu)設(shè)計(jì)實(shí)例。 書店信息系統(tǒng)是一個(gè)中小規(guī)模的信息系統(tǒng),業(yè)務(wù)比較簡(jiǎn)單,總店分布區(qū)域也不大。經(jīng)過分析,該系統(tǒng)的計(jì)算模式采用客戶機(jī)/服務(wù)器模式;整個(gè)系統(tǒng)設(shè)置七個(gè)節(jié)點(diǎn):計(jì)劃采購(gòu)節(jié)點(diǎn)、書庫(kù)節(jié)點(diǎn)、銷售節(jié)點(diǎn)、結(jié)算節(jié)點(diǎn)、事務(wù)處理節(jié)點(diǎn)、系統(tǒng)管理節(jié)點(diǎn)和數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)。數(shù)據(jù)庫(kù)服務(wù)器是中心節(jié)點(diǎn),所以書店信息系統(tǒng)的拓?fù)浣Y(jié)構(gòu)呈星型結(jié)構(gòu)(見圖7.5)。,圖7.5 書店信息系統(tǒng)拓?fù)浣Y(jié)構(gòu),7.3.2 信息系統(tǒng)計(jì)算模式設(shè)計(jì) 選擇哪一種計(jì)算模式應(yīng)該根據(jù)應(yīng)用需要而定,不
19、能盲目追求先進(jìn)和時(shí)新。例如,客戶機(jī)/服務(wù)器模式可以滿足要求,就不一定要采用應(yīng)用服務(wù)器模式。另外,對(duì)于復(fù)雜的大型系統(tǒng),采用某一種計(jì)算模式可能并不能滿足應(yīng)用要求,有時(shí)需要多種計(jì)算模式并存。書店信息系統(tǒng)的計(jì)算模式采用客戶機(jī)/服務(wù)器模式(見圖7.6)。,圖7.6 書店信息系統(tǒng)計(jì)算模式,7.4 軟件結(jié)構(gòu)設(shè)計(jì),7.4.1 概述 信息系統(tǒng)的軟件結(jié)構(gòu)是由信息系統(tǒng)軟件的各子系統(tǒng)按照確定的關(guān)系構(gòu)成的結(jié)構(gòu)框架。子系統(tǒng)是對(duì)軟件分解的一種中間形式,也是組織和描述軟件的一種方法。由多個(gè)子系統(tǒng)構(gòu)成信息系統(tǒng)軟件,每一個(gè)子系統(tǒng)又包括多個(gè)用例設(shè)計(jì)、設(shè)計(jì)類和接口。,軟件結(jié)構(gòu)設(shè)計(jì)是把軟件分解成為多個(gè)子系統(tǒng),并確定出由各子系統(tǒng)及其接口
20、構(gòu)成的軟件結(jié)構(gòu)。軟件結(jié)構(gòu)一般呈現(xiàn)出層次結(jié)構(gòu)模式,而且常見為四層結(jié)構(gòu)(見圖7.7)。,圖7.7 軟件系統(tǒng)的四層結(jié)構(gòu)模式,應(yīng)用層是信息系統(tǒng)軟件所在的層次,它的作用是直接服務(wù)于信息系統(tǒng)的應(yīng)用領(lǐng)域。應(yīng)用層又分為專用應(yīng)用層和通用應(yīng)用層。專用應(yīng)用層中的子系統(tǒng)直接面向具體應(yīng)用;通用應(yīng)用層中的子系統(tǒng)可以被專用應(yīng)用層的多個(gè)子系統(tǒng)所引用,具有通用性。在應(yīng)用層中的子系統(tǒng)被稱為應(yīng)用子系統(tǒng)。 中間件層放置支撐系統(tǒng)運(yùn)行的有關(guān)中間件,像通信工具、數(shù)據(jù)庫(kù)引擎、分布對(duì)象機(jī)制等。 系統(tǒng)軟件層則放置操作系統(tǒng)、低層協(xié)議等系統(tǒng)軟件。在中間件和系統(tǒng)軟件層中的子系統(tǒng)被稱為系統(tǒng)子系統(tǒng)。,7.4.2 應(yīng)用子系統(tǒng)設(shè)計(jì) 1識(shí)別應(yīng)用子系統(tǒng) 識(shí)別應(yīng)用
21、子系統(tǒng)的原型是信息系統(tǒng)邏輯結(jié)構(gòu)中的分析包??梢园堰壿嫿Y(jié)構(gòu)中每一個(gè)分析包作為一個(gè)初步的應(yīng)用子系統(tǒng),在此基礎(chǔ)上,再對(duì)各子系統(tǒng)進(jìn)行分析和優(yōu)化,以確定應(yīng)用子系統(tǒng)。 例如,圖6.13中的“入庫(kù)”和圖6.14中的“售書處理”兩個(gè)分析包可以作為被識(shí)別的兩個(gè)初步應(yīng)用子系統(tǒng),見圖7.8。,圖7.8 設(shè)計(jì)模型可以跟蹤到分析模型,2優(yōu)化應(yīng)用子系統(tǒng) 通過分析包識(shí)別出的初步應(yīng)用子系統(tǒng)并不能作為最終確定的應(yīng)用子系統(tǒng),還需要進(jìn)行優(yōu)化處理。從設(shè)計(jì)角度看,進(jìn)行優(yōu)化的理由有三: 首先,分析包沒有考慮系統(tǒng)的效率、安全性、可靠性、適應(yīng)性等非功能性需求,也沒有考慮系統(tǒng)的實(shí)現(xiàn)環(huán)境以及系統(tǒng)的拓?fù)浣Y(jié)構(gòu)和計(jì)算模式。 第二,應(yīng)用子系統(tǒng)應(yīng)該具有合
22、適的規(guī)模。如果初步應(yīng)用子系統(tǒng)規(guī)模過大,就需要進(jìn)行分解。相反,對(duì)規(guī)模過小的初步應(yīng)用子系統(tǒng)又要進(jìn)行合并,使最后所確定的應(yīng)用子系統(tǒng)都具有合適的規(guī)模。,第三,應(yīng)用子系統(tǒng)應(yīng)該具有高內(nèi)聚、低偶合的特性,即子系統(tǒng)內(nèi)部的要素之間的聯(lián)系應(yīng)該盡量地密切,而子系統(tǒng)之間的聯(lián)系盡可能小。 優(yōu)化的具體步驟: 第一,規(guī)模分析。 第二,應(yīng)用分析。 第三,節(jié)點(diǎn)分布分析。,下面我們以圖6.13的“入庫(kù)”分析包識(shí)別為初步的“入庫(kù)”應(yīng)用子系統(tǒng)和圖6.14的“售書處理”分析包識(shí)別為初步的“售書處理”應(yīng)用子系統(tǒng)為例,進(jìn)行分析優(yōu)化。,首先分析“入庫(kù)”應(yīng)用子系統(tǒng)。 第一,規(guī)模分析。從圖5.7(a)可以看出,“入庫(kù)”分析包可以跟蹤到“編輯入庫(kù)
23、信息”、“查詢?nèi)霂?kù)信息”和“輸出入庫(kù)信息”三個(gè)用例,它要完成對(duì)應(yīng)的三項(xiàng)功能。這樣“入庫(kù)”作為一個(gè)應(yīng)用子系統(tǒng)規(guī)模過大,應(yīng)該對(duì)其進(jìn)行分解。我們把它分解成為對(duì)應(yīng)上述三個(gè)功能的“編輯入庫(kù)信息”、“查詢?nèi)霂?kù)信息”和“輸出入庫(kù)信息”三個(gè)應(yīng)用子系統(tǒng)。 第二,應(yīng)用分析?!熬庉嬋霂?kù)信息”、“查詢?nèi)霂?kù)信息”和“輸出入庫(kù)信息”三個(gè)應(yīng)用子系統(tǒng)都屬于專用子系統(tǒng),,它們都要訪問數(shù)據(jù)庫(kù)服務(wù)器上的“入庫(kù)圖書”數(shù)據(jù)表,應(yīng)該設(shè)置“入庫(kù)管理”通用子系統(tǒng)來對(duì)數(shù)據(jù)庫(kù)進(jìn)行專門管理。 第三,節(jié)點(diǎn)分布分析。設(shè)計(jì)中確定的子系統(tǒng)應(yīng)該在一個(gè)節(jié)點(diǎn)上,如果一個(gè)子系統(tǒng)可能跨幾個(gè)節(jié)點(diǎn),就需要對(duì)該子系統(tǒng)進(jìn)行分解?!熬庉嬋霂?kù)信息”、“查詢?nèi)霂?kù)信息”和“輸出入
24、庫(kù)信息”三個(gè)專用子系統(tǒng)處在書庫(kù)節(jié)點(diǎn)上,而“入庫(kù)管理”通用子系統(tǒng)處在數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)上。對(duì)“入庫(kù)”子系統(tǒng)優(yōu)化的結(jié)果如圖7.9所示。,圖7.9 優(yōu)化的“入庫(kù)”子系統(tǒng),圖7.10 優(yōu)化的“售書處理”子系統(tǒng),7.4.3 系統(tǒng)子系統(tǒng)設(shè)計(jì) 軟件結(jié)構(gòu)設(shè)計(jì)的第二步工作是確定中間件。中間件設(shè)計(jì)與系統(tǒng)的應(yīng)用要求和系統(tǒng)環(huán)境有關(guān)。例如,如果系統(tǒng)采用瀏覽器模式,就需要選擇Web瀏覽器作為中間件;如果系統(tǒng)具有分布處理要求,就需要選擇DCOM、CORBA或Java.rmi等具有分布對(duì)象處理能力的中間件。另外,還需要根據(jù)數(shù)據(jù)處理的要求,選擇合適的數(shù)據(jù)庫(kù)系統(tǒng)。,軟件結(jié)構(gòu)設(shè)計(jì)的第三項(xiàng)工作是確定系統(tǒng)軟件層所采用的軟件系統(tǒng),一般包括
25、操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議等。例如操作系統(tǒng)采用Windows NT,網(wǎng)絡(luò)協(xié)議采用TCP/IP等。 現(xiàn)在我們討論書店圖書管理系統(tǒng)中售書處理部分的軟件結(jié)構(gòu)設(shè)計(jì)(見圖7.11)。 在專用層設(shè)置“售書處理”的頂層子系統(tǒng),接下來又分出“開書單”、“出售圖書”、“收書款”三個(gè)子系統(tǒng),這三個(gè)子系統(tǒng)都處在專用應(yīng)用層。,圖7.11 書店信息系統(tǒng)中“售書處理”的軟件結(jié)構(gòu),7.4.4 確定子系統(tǒng)間的接口 當(dāng)子系統(tǒng)之間存在依賴關(guān)系時(shí),子系統(tǒng)之間就存在確定接口。子系統(tǒng)接口定義了外部子系統(tǒng)對(duì)本子系統(tǒng)可進(jìn)行的訪問操作集。這些操作由子系統(tǒng)內(nèi)部的類來提供,或著由子系統(tǒng)中的其它子系統(tǒng)提供。 可以通過子系統(tǒng)之間存在的關(guān)系來發(fā)現(xiàn)子系統(tǒng)之間的
26、接口。如果子系統(tǒng)A依賴子系統(tǒng)B,則子系統(tǒng)B應(yīng)該向子系統(tǒng)A提供接口(見圖7.12)。圖7.11售書處理的軟件結(jié)構(gòu)中專用應(yīng)用層和通用應(yīng)用層幾個(gè)子系統(tǒng)之間的接口描述見圖7.13。,圖7.12 根據(jù)依賴關(guān)系確定接口,圖7.13 圖書銷售子系統(tǒng)之間的接口,7.5 詳細(xì)設(shè)計(jì),詳細(xì)設(shè)計(jì)是對(duì)軟件結(jié)構(gòu)中已經(jīng)確定的各個(gè)子系統(tǒng)內(nèi)部的設(shè)計(jì)。詳細(xì)設(shè)計(jì)需進(jìn)行三個(gè)主要設(shè)計(jì): 用例設(shè)計(jì)、設(shè)計(jì)類的設(shè)計(jì)和關(guān)系設(shè)計(jì)。,7.5.1 用例設(shè)計(jì) 1概述 子系統(tǒng)可以跟蹤到分析包,分析包可以跟蹤到用例。圖7.14反映了子系統(tǒng)、分析包和用例的跟蹤關(guān)系。因?yàn)橐粋€(gè)子系統(tǒng)能夠完成它所跟蹤的用例的功能,所以詳細(xì)設(shè)計(jì)的第一項(xiàng)工作便是對(duì)子系統(tǒng)所跟蹤的用例
27、進(jìn)行設(shè)計(jì)。 用例設(shè)計(jì)包括兩個(gè)含義:一是用例設(shè)計(jì)的工作,二是描述用例設(shè)計(jì)的結(jié)果。,圖7.14 子系統(tǒng)、分析包和用例的對(duì)應(yīng)關(guān)系,2用例設(shè)計(jì)的工作 1) 確定設(shè)計(jì)類 用例設(shè)計(jì)的第一項(xiàng)工作是確定該用例所涉及到的所有設(shè)計(jì)類。由用例設(shè)計(jì)可以追蹤到用例分析,在對(duì)用例分析時(shí),分析員已經(jīng)確定了用例所涉及到的所有概念類。因此,可以把用例分析確定的概念類作為初步設(shè)計(jì)類。然后根據(jù)設(shè)計(jì)的需要,再對(duì)初步設(shè)計(jì)類進(jìn)行分解和調(diào)整,成為最終的設(shè)計(jì)類。,2) 設(shè)計(jì)類圖 在確定了用例的設(shè)計(jì)類之后,接下來應(yīng)該通過類圖反映所提取的各個(gè)設(shè)計(jì)類之間的相互關(guān)系。因?yàn)檫€沒有對(duì)每一個(gè)設(shè)計(jì)類進(jìn)行詳細(xì)分析,所以現(xiàn)在所確定的設(shè)計(jì)類圖是簡(jiǎn)化的設(shè)計(jì)類圖。
28、3) 繪制順序圖 為了完成賦予用例的功能,用例的一次交互處理要通過用例中的各個(gè)類中的對(duì)象操作的相互配合來完成??梢酝ㄟ^順序圖來反映各個(gè)對(duì)象之間的消息交互過程。,3用例設(shè)計(jì)過程 1) 確定子系統(tǒng)和設(shè)計(jì)類 2) 分析用例設(shè)計(jì)類圖 3) 繪制順序圖,下面我們以“售書處理”為例,討論用例設(shè)計(jì)過程。 1) 確定子系統(tǒng)和設(shè)計(jì)類 “售書處理”是一個(gè)用例,但該用例被分解成為圖7.10所示的處在三個(gè)節(jié)點(diǎn)上的八個(gè)子系統(tǒng),即售書節(jié)點(diǎn)上的“售書處理”、“開書單”和“出售圖書”三個(gè)子系統(tǒng),結(jié)算節(jié)點(diǎn)上的“收書款”子系統(tǒng),在數(shù)據(jù)庫(kù)服務(wù)器上的“書目管理”、“架存圖書管理”、“售出圖書管理”和“職工管理”四個(gè)子系統(tǒng)。,在第6.
29、4節(jié)對(duì)“售書處理”用例所提取的八個(gè)概念類的基礎(chǔ)上,可以確定各個(gè)子系統(tǒng)的設(shè)計(jì)類?!笆蹠幚怼弊酉到y(tǒng)中有“售書界面”、“產(chǎn)生待售圖書”和“待售圖書”三個(gè)設(shè)計(jì)類?!伴_書單”子系統(tǒng)的設(shè)計(jì)是“開書單”和“打印進(jìn)程”?!笆諘睢弊酉到y(tǒng)的設(shè)計(jì)類是“收款界面”和“收書款”?!俺鍪蹐D書”子系統(tǒng)中有“出售圖書界面”、“出售圖書”和“一致性檢查”三個(gè)設(shè)計(jì)類。除此之外,在數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn)中,“書目”屬于“書目管理”子系統(tǒng),“架存圖書”屬于“架存圖書管理”子系統(tǒng),“售出圖書”屬于“售出圖書管理”子系統(tǒng),“職工”屬于“職工管理”子系統(tǒng)。,2) 分析用例設(shè)計(jì)類圖 通過以上分析,繪制出圖7.15所示的“售書處理”用例設(shè)計(jì)類圖
30、。在“售書處理”子系統(tǒng)中,“售書界面”類與“產(chǎn)生待售圖書”控制類之間存在關(guān)聯(lián)關(guān)系。當(dāng)“售書界面”類接收一個(gè)要出售圖書的書號(hào)和冊(cè)數(shù)時(shí),就給“產(chǎn)生待售圖書”類發(fā)送一個(gè)消息,啟動(dòng)“產(chǎn)生待售圖書”類的“產(chǎn)生待售圖書對(duì)象”操作,產(chǎn)生一個(gè)待售圖書對(duì)象,記入“待售圖書”類中。,圖7.15 “售書處理”用例設(shè)計(jì)類圖,書單打印出來后,售書員把書單交給讀者,讀者持書單到收款臺(tái)交款。收款員啟動(dòng)“收款界面”輸入書單上的書單號(hào),“收款界面”把書單號(hào)通過消息發(fā)給“收書款”類,該類從“待售圖書”類中取出該書單的圖書信息,并在界面上顯示書款金額,收款員接收讀者書款,并在“待售圖書”類的對(duì)應(yīng)對(duì)象中把“交款標(biāo)記”設(shè)為“T”。,付
31、款之后,讀者又把書單拿回到售書員面前,“售書界面”類又進(jìn)入“出售圖書”子系統(tǒng)中的“出售圖書界面”類,由該界面給售書員提供一個(gè)出售圖書信息界面。售書員輸入所出售圖書的書單號(hào),然后啟動(dòng)“出售圖書”類,由該類在“售出圖書”類中建立已售出圖書的對(duì)象,而從“待售圖書”類中把對(duì)應(yīng)的對(duì)象刪除掉。 “書目”類與“架存圖書”和“售出圖書”之間是泛化關(guān)系。,3) 繪制順序圖 由于“售書處理”涉及到四個(gè)子系統(tǒng),其彼此控制也具有相對(duì)獨(dú)立性,因此,下面我們分別繪制“產(chǎn)生待售圖書”、“開書單”、“收書款”和“出售圖書”四個(gè)子系統(tǒng)的順序圖。 (1) “產(chǎn)生待售圖書”的順序圖(見圖7.16)?!笆蹠缑妗苯邮帐蹠鴨T輸入的讀者
32、所要購(gòu)買圖書的書號(hào)和冊(cè)數(shù),同時(shí)給該讀者產(chǎn)生一個(gè)書單號(hào)。,圖7.16 產(chǎn)生待售圖書順序圖,(2) “開書單”的順序圖(見圖7.17)。售書員按售書界面上的“開書單”功能按鈕啟動(dòng)開書單功能?!笆蹠缑妗睂?duì)象給“開書單”子系統(tǒng)的“開書單”類的對(duì)象發(fā)送“打印書單”消息,同時(shí)把所要打印書單的“書單號(hào)”也一并發(fā)送過去?!伴_書單”對(duì)象接收到這個(gè)消息后,給“售書處理”子系統(tǒng)的“待售圖書”對(duì)象發(fā)送“取待售圖書信息”消息,取出對(duì)應(yīng)書單號(hào)的所有待售圖書信息?!伴_書單”對(duì)象根據(jù)取到的信息生成書單,并啟動(dòng)“打印進(jìn)程”打印出書單。售書員把打印出來的三聯(lián)書單交給讀者,讓讀者上收款臺(tái)交書款。,(3) “收書款”的順序圖(見圖
33、7.18)。收款員接收到讀者拿來的書單,按書單號(hào)交給“收款界面”對(duì)象,該對(duì)象接著給“收書款”對(duì)象發(fā)送“收書款”的消息?!笆諘睢睂?duì)象接收到這個(gè)消息后,給“售書處理”子系統(tǒng)中的“待售圖書”對(duì)象發(fā)送消息,取出這個(gè)書單號(hào)的待售圖書信息,并把“待售圖書”對(duì)象中的交款標(biāo)記設(shè)為“T”。付完款之后,收款員自己留存一聯(lián)書單,給另外兩聯(lián)書單上蓋章并交給讀者,收書款結(jié)束。,圖7.17 “開書單”順序圖,圖7.18 收書款順序圖,(4) “出售圖書”的順序圖(見圖7.19)?!俺鍪蹐D書界面”對(duì)象接收售書員掃描進(jìn)的書單號(hào),給 “出售圖書”對(duì)象發(fā)送“出售圖書”消息?!俺鍪蹐D書”對(duì)象接收到這個(gè)消息后,從“待售圖書”類中取
34、出該“書單號(hào)”的所有對(duì)象,并把這些對(duì)象從“待售圖書”類中刪除掉。然后給“架存圖書管理”子系統(tǒng)發(fā)送消息,修改架存圖書數(shù)量。最后通過“售出圖書管理”子系統(tǒng)在售出圖書數(shù)據(jù)表中記錄所售出的圖書數(shù)據(jù)。,圖7.19 “出售圖書”順序圖,(5) 一致性檢查?!耙恢滦詸z查”的作用是檢查“待售圖書”類中所有無用的對(duì)象,并將其刪除掉?!耙恢滦詸z查”的順序圖見圖7.20。,圖7.20 “一致性檢查”順序圖,7.5.2 設(shè)計(jì)類的設(shè)計(jì) 用例設(shè)計(jì)中識(shí)別出了大量的設(shè)計(jì)類,接下來要詳細(xì)地設(shè)計(jì)所識(shí)別出來的每一個(gè)設(shè)計(jì)類。系統(tǒng)分析得出的概念類是設(shè)計(jì)類的基礎(chǔ),但設(shè)計(jì)類不完全等同于概念類。原因有三:,其一,設(shè)計(jì)類是概念類的細(xì)化和分解。
35、在系統(tǒng)分析中確定的一個(gè)概念類到系統(tǒng)設(shè)計(jì)時(shí),可能對(duì)應(yīng)著一個(gè)設(shè)計(jì)類,也可能被分解成為了多個(gè)設(shè)計(jì)類。 其二,由于在設(shè)計(jì)中要考慮系統(tǒng)的非功能性需求,因此,在設(shè)計(jì)時(shí)可能會(huì)產(chǎn)生出許多為了滿足系統(tǒng)的非功能性需求的新的設(shè)計(jì)類,這些類根本沒有對(duì)應(yīng)的概念類。 其三,設(shè)計(jì)著眼于實(shí)現(xiàn)。,所以對(duì)設(shè)計(jì)類的設(shè)計(jì)必須考慮所有實(shí)現(xiàn)細(xì)節(jié)。設(shè)計(jì)類的設(shè)計(jì)工作包括屬性設(shè)計(jì)、操作設(shè)計(jì)、方法設(shè)計(jì)和狀態(tài)設(shè)計(jì)。,1不同類型設(shè)計(jì)類的設(shè)計(jì) 1) 邊界類的設(shè)計(jì) 邊界類承擔(dān)信息的輸入和輸出以及信息的界面組織等任務(wù)。邊界類是用戶界面設(shè)計(jì)在系統(tǒng)中的實(shí)體性體現(xiàn),用戶界面設(shè)計(jì)涉及到人機(jī)工程、審美和操作方便性等方面的知識(shí)和要求(第8章將介紹界面設(shè)計(jì))。邊界類設(shè)
36、計(jì)依賴于信息系統(tǒng)所采用的實(shí)現(xiàn)環(huán)境和設(shè)計(jì)語言。邊界類在可視化的設(shè)計(jì)語言中一般表現(xiàn)為框架Form、窗口Windows和控件Controls等形式。,2) 實(shí)體類的設(shè)計(jì) 實(shí)體類的信息一般要在系統(tǒng)中長(zhǎng)久存放,因此,實(shí)體類的設(shè)計(jì)要與數(shù)據(jù)庫(kù)技術(shù)或文件技術(shù)聯(lián)系起來。應(yīng)用型軟件幾乎全部采用數(shù)據(jù)庫(kù)技術(shù),僅有效率要求極高的系統(tǒng)軟件可能采用文件技術(shù)。信息系統(tǒng)屬于應(yīng)用型系統(tǒng),一般對(duì)實(shí)體類采用數(shù)據(jù)庫(kù)技術(shù)。數(shù)據(jù)庫(kù)有關(guān)系數(shù)據(jù)庫(kù)、對(duì)象數(shù)據(jù)庫(kù)和對(duì)象關(guān)系數(shù)據(jù)庫(kù)等形式。最直接的方式是采用面向?qū)ο髷?shù)據(jù)庫(kù),但面向?qū)ο髷?shù)據(jù)庫(kù)目前還不夠成熟。,3) 控制類的設(shè)計(jì) 控制類為系統(tǒng)的處理邏輯而設(shè)計(jì),具有動(dòng)態(tài)性。一般根據(jù)以下需要來設(shè)置控制類: 第
37、一,事務(wù)處理。信息系統(tǒng)存在大量的事務(wù)處理,一個(gè)用例就是對(duì)一個(gè)事務(wù)的處理。在處理具體事務(wù)過程中,涉及到邊界類和實(shí)體類,而在處理的關(guān)鍵環(huán)節(jié)和交匯點(diǎn)上就應(yīng)該設(shè)置控制類。例如,在“售書處理”中的“產(chǎn)生待售圖書”、“開書單”、“收書款”和“出售圖書”等控制類都是在事務(wù)處理的關(guān)鍵環(huán)節(jié)上設(shè)置的。,第二,性能要求。為了實(shí)現(xiàn)系統(tǒng)的效率、可靠性、安全性和適應(yīng)性的要求,需要設(shè)置控制類。例如,“一致性檢查”就是為了正確性要求而設(shè)置的控制類。 第三,分布處理。當(dāng)處理被分布到不同的網(wǎng)絡(luò)節(jié)點(diǎn)上時(shí),在各個(gè)節(jié)點(diǎn)上就需要設(shè)置單獨(dú)的控制類來實(shí)施處理。,2屬性設(shè)計(jì) 屬性設(shè)計(jì)是對(duì)屬性分析的深入和細(xì)化,與屬性分析相比較,屬性設(shè)計(jì)應(yīng)該著重
38、強(qiáng)調(diào)以下幾個(gè)方面: 第一,補(bǔ)充屬性分析時(shí)沒有考慮到的屬性。屬性分析主要反映類的重要屬性,一般不考慮涉及實(shí)現(xiàn)細(xì)節(jié)的有關(guān)屬性,到屬性設(shè)計(jì)時(shí)就要把這些屬性補(bǔ)充全面。 第二,確定屬性的全部?jī)?nèi)容,其中包括屬性名、可視性、范圍、類型、初始值等。 第三,盡量采用信息系統(tǒng)所采用的程序設(shè)計(jì)語言的語法規(guī)范來描述。,圖7.15的“產(chǎn)生待售圖書”、“開書單”等控制類沒有屬性,因此,我們僅設(shè)計(jì)“書目”、“架存圖書”、“待售圖書”和“售出圖書”這幾個(gè)類的屬性。在分析時(shí),已經(jīng)確定的屬性見圖7.21。其中,“書目”類的屬性有書號(hào)、書名、作者、出版社編號(hào)、單價(jià)、出版日期和圖書類別;“架存圖書”的屬性有架位和架存冊(cè)數(shù);“待售圖書
39、”的屬性有書單號(hào)、銷售冊(cè)數(shù)、折扣率、交款標(biāo)記和售書員;“售出圖書”的屬性有售出冊(cè)數(shù)、折扣率、售出日期和售書員。對(duì)這些類的屬性進(jìn)行設(shè)計(jì)的結(jié)果見圖7.22。,圖7.21 “書目”等類在分析時(shí)確定的屬性,圖7.22 “書目”等類的屬性設(shè)計(jì),3操作設(shè)計(jì) 操作設(shè)計(jì)的任務(wù)是確定各個(gè)類應(yīng)該提供的操作。確定類操作的根據(jù)有以下四個(gè)方面: (1) 概念類的職責(zé)。概念類職責(zé)定義了該類應(yīng)該具有的功能,類的這些功能就需要分解到各個(gè)操作中來實(shí)現(xiàn)。 (2) 概念類的非功能性需求。系統(tǒng)的效率、可靠性、安全性等非功能性需求,常常要落實(shí)到類的一些操作上來,通過設(shè)置某些操作來實(shí)現(xiàn)這些需求。,(3) 設(shè)計(jì)類的接口。設(shè)計(jì)類的接口是設(shè)計(jì)
40、類對(duì)外提供的操作功能,這些功能均需要通過設(shè)計(jì)類所提供的操作來實(shí)現(xiàn)。 (4) 類所參與的用例設(shè)計(jì)。一個(gè)類可能要參與多個(gè)用例設(shè)計(jì),在每一個(gè)用例設(shè)計(jì)中,該類都起著確定的作用,承擔(dān)著確定的角色,這些作用最終都要落實(shí)到類的操作上。這就需要逐一分析類在每一個(gè)用例設(shè)計(jì)中所承擔(dān)的角色。,對(duì)操作的描述應(yīng)該注意以下兩個(gè)方面: (1) 詳盡全面。應(yīng)該反映操作名、輸入?yún)?shù)、返回參數(shù)以及可視性。 (2) 盡可能采用所用的編程語言的語法格式來描述,這樣到實(shí)現(xiàn)時(shí)就無須再進(jìn)行格式轉(zhuǎn)換。 下面我們討論“售書處理”用例中類的操作設(shè)計(jì)。 1) 實(shí)體類的操作設(shè)計(jì) “書目”是一個(gè)實(shí)體類,應(yīng)該設(shè)置write(bookNo, bookIn
41、formation)操作給書目對(duì)象中寫內(nèi)容,read(bookNo) :bookInformation從給定書號(hào)的書目對(duì)象中讀書目信息。,圖7.23 “書目”等實(shí)體類的操作設(shè)計(jì),圖7.24 “書目”等實(shí)體類的操作設(shè)計(jì),2) 控制類的操作設(shè)計(jì) “售書處理”用例共涉及到“產(chǎn)生待售圖書”、“開書單”、“收書款”、“出售圖書”和“一致性檢查”等五個(gè)控制類,這些控制類全部沒有屬性,僅有操作,下面我們確定這幾個(gè)類的操作。,圖7.25 “售書處理” 用例的控制類操作設(shè)計(jì),4方法設(shè)計(jì) 由于操作設(shè)計(jì)只確定各個(gè)操作的名稱和參數(shù),因此,操作設(shè)計(jì)僅是操作的外部特征設(shè)計(jì)。每一個(gè)操作都需要采用一定的數(shù)據(jù)結(jié)構(gòu)、算法和流程,
42、并采用一段程序代碼來實(shí)現(xiàn)。確定操作的內(nèi)部數(shù)據(jù)結(jié)構(gòu)、算法和流程的設(shè)計(jì)被稱為方法設(shè)計(jì)。 方法設(shè)計(jì)包括數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、算法設(shè)計(jì)和流程設(shè)計(jì)。方法設(shè)計(jì)需要立足于采用的程序設(shè)計(jì)語言。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)應(yīng)該采用所選用的程序設(shè)計(jì)語言能夠提供的數(shù)據(jù)結(jié)構(gòu);算法設(shè)計(jì)要根據(jù)操作所實(shí)現(xiàn)的功能而定;流程設(shè)計(jì)的結(jié)果可以用程序流程圖或活動(dòng)圖來描述。,圖7.26 產(chǎn)生待售圖書流程圖,5狀態(tài)設(shè)計(jì) 對(duì)象在其生命周期中,會(huì)存在多種狀態(tài),認(rèn)識(shí)和識(shí)別對(duì)象在生命周期中所處的各種狀態(tài),以及狀態(tài)之間的切換條件,是全面把握對(duì)象的關(guān)鍵。一般用狀態(tài)圖來描述類中對(duì)象的狀態(tài)。圖7.27所示是書店圖書類所處的幾種狀態(tài)。,圖7.27 書店圖書類狀態(tài)圖,7.5.3
43、關(guān)系設(shè)計(jì) 不同的面向?qū)ο蟪绦蛟O(shè)計(jì)語言對(duì)關(guān)系的支持程度是不一樣的。 例如,C+支持多重繼承,而Java就不支持多重繼承。有些程序設(shè)計(jì)語言支持關(guān)聯(lián),有些不支持關(guān)聯(lián)。本節(jié)主要討論在不過多地考慮程序設(shè)計(jì)語言的情況下實(shí)現(xiàn)對(duì)象關(guān)系的一般方法。,1關(guān)聯(lián)關(guān)系設(shè)計(jì) 1) 二元關(guān)聯(lián)的實(shí)現(xiàn) 二元關(guān)聯(lián)存在一對(duì)一、一對(duì)多、多對(duì)多三種形式,其關(guān)聯(lián)的實(shí)現(xiàn)方法也有差異。,(1) 一對(duì)一二元關(guān)聯(lián)。一對(duì)一二元關(guān)聯(lián)可通過單向?qū)Ш胶碗p向?qū)Ш絹韺?shí)現(xiàn)。 單向?qū)Ш?。要?shí)現(xiàn)一對(duì)一關(guān)聯(lián)的單向?qū)Ш?,可以只在?dǎo)航源的類中增加另一個(gè)類的關(guān)鍵屬性。例如,圖7.28(a)描述“系”和“系主任”兩個(gè)類是一對(duì)一的關(guān)聯(lián)關(guān)系,單向從“系”導(dǎo)航到“系主任”類。在
44、“系”中增加“主任編號(hào)”就實(shí)現(xiàn)了兩個(gè)類之間的單向?qū)Ш?見圖7.28(b)。 雙向?qū)Ш?。一?duì)一關(guān)聯(lián)的雙向?qū)Ш叫枰P(guān)聯(lián)的兩個(gè)類中分別增加對(duì)方的關(guān)鍵屬性。例如,圖7.29(b)是對(duì)圖(a)中雙向?qū)Ш降膶?shí)現(xiàn)。,圖7.28 一對(duì)一關(guān)聯(lián)單向?qū)Ш降膶?shí)現(xiàn),圖7.29 一對(duì)一關(guān)聯(lián)雙向?qū)Ш降膶?shí)現(xiàn),(2) 一對(duì)多二元關(guān)聯(lián)。兩個(gè)存在一對(duì)多關(guān)聯(lián)關(guān)系的類,其導(dǎo)航方向肯定是由多重性為多的類導(dǎo)航到多重性為一的類,而不會(huì)相反。在多重性為多的一方類中增加另一個(gè)類的關(guān)鍵屬性就實(shí)現(xiàn)了關(guān)聯(lián)的導(dǎo)航關(guān)系。例如,圖7.30(b)是對(duì)圖(a)中一對(duì)多單向?qū)Ш降膶?shí)現(xiàn)。,圖7.30 一對(duì)多關(guān)聯(lián)單向?qū)Ш降膶?shí)現(xiàn),(3) 多對(duì)多二元關(guān)聯(lián)。多對(duì)多二元關(guān)聯(lián)
45、的實(shí)現(xiàn)需要在兩個(gè)類之間增加一個(gè)新類,用另外兩個(gè)類中的關(guān)鍵屬性作為這個(gè)類的屬性。例如,圖7.31(a)中,“課程”和“教師”兩個(gè)類之間存在多對(duì)多的關(guān)聯(lián)關(guān)系。為了實(shí)現(xiàn)這兩個(gè)類之間的雙向關(guān)聯(lián),需要在它們之間增加一個(gè)“授課”類,并把“課程”和“教師”兩個(gè)類的關(guān)鍵屬性“課程編號(hào)”和“教師編號(hào)”作為“授課”類的屬性。這樣把兩個(gè)多對(duì)多的二元關(guān)聯(lián)就轉(zhuǎn)化成為三個(gè)類中兩兩之間的一對(duì)多的關(guān)聯(lián),其導(dǎo)航關(guān)系分別是從“授課”類到另外兩個(gè)類(見圖7.31(b)。,圖7.31 多對(duì)多關(guān)聯(lián)的實(shí)現(xiàn),(4) 關(guān)聯(lián)類的二元關(guān)聯(lián)。存在關(guān)聯(lián)類的二元關(guān)聯(lián)可以分下面幾種情況分別處理。 多對(duì)多關(guān)聯(lián)。存在關(guān)聯(lián)類多對(duì)多的二元關(guān)聯(lián),需要轉(zhuǎn)化成為兩個(gè)
46、類分別與所關(guān)聯(lián)類的一對(duì)多的關(guān)聯(lián),在關(guān)聯(lián)類除了保留原有屬性之外,再增加另外兩個(gè)類的關(guān)鍵屬性。圖7.32(a)中,“書店”和“出版社”兩個(gè)類之間存在多對(duì)多關(guān)聯(lián),它們的關(guān)聯(lián)類是“訂書”。把這個(gè)關(guān)聯(lián)分成為圖(b)的兩個(gè)一對(duì)多的二元關(guān)聯(lián),在“訂書”類中增加“書店編號(hào)”和“出版社編號(hào)”兩個(gè)屬性。,圖7.32 關(guān)聯(lián)類二元多對(duì)多關(guān)聯(lián)的實(shí)現(xiàn), 一對(duì)多關(guān)聯(lián)。帶有關(guān)聯(lián)類的一對(duì)多二元關(guān)聯(lián)實(shí)現(xiàn)有如下兩種方法。第一種方法是按照一對(duì)多無關(guān)聯(lián)類的方法,先實(shí)現(xiàn)兩個(gè)類的關(guān)聯(lián)。然后,再建立關(guān)聯(lián)類與多方類的關(guān)聯(lián)。圖7.33(a)中,“系”和“教師”之間存在一對(duì)多關(guān)聯(lián),“考核”是關(guān)聯(lián)類。先在“教師”類中增加“系名”屬性,實(shí)現(xiàn)“系”和“
47、教師”兩個(gè)類的單向關(guān)聯(lián)關(guān)系。再在關(guān)聯(lián)類“考核”中增加“教師編號(hào)”屬性,與“教師”類建立起一對(duì)一的單向關(guān)聯(lián)(見圖7.33(b)。第二種方法是取消關(guān)聯(lián)類,把關(guān)聯(lián)類中的屬性增加到多重性為多的類中。通過這種方法從圖7.33(a)可以得出圖7.33(c)。把“考核”類中的“考核時(shí)間”和“考核結(jié)果”兩個(gè)屬性增加到“教師”類中。,圖7.33 關(guān)聯(lián)類二元一對(duì)多關(guān)聯(lián)的實(shí)現(xiàn), 一對(duì)一關(guān)聯(lián)。實(shí)現(xiàn)一對(duì)一的有關(guān)聯(lián)類的關(guān)聯(lián)有如下三種方法。 第一種方法是仍然保持這三個(gè)類。如果是單向關(guān)聯(lián),則在導(dǎo)航源類中增加導(dǎo)航目標(biāo)類的關(guān)鍵屬性,在關(guān)聯(lián)類中增加導(dǎo)航源的關(guān)鍵屬性。例如,圖7.34(a)中,“系主任”與“系”兩個(gè)類之間是一對(duì)一的單
48、向?qū)Ш疥P(guān)聯(lián)。實(shí)現(xiàn)時(shí),在“系主任”類中增加“系”類的關(guān)鍵屬性“系名”,在關(guān)聯(lián)類“管理”類中增加“系主任”類的關(guān)鍵屬性“主任編號(hào)”(見圖7.34(b)。如果是雙向?qū)Ш?,在兩方都增加?duì)方的關(guān)鍵屬性,在關(guān)聯(lián)類中增加其它兩個(gè)類任意一個(gè)的關(guān)鍵屬性。,第二種辦法是把關(guān)聯(lián)類合并到其中任意一個(gè)類中,成為二元無關(guān)聯(lián)類的關(guān)聯(lián),見圖7.34(c)。 第三種辦法是把三個(gè)類合成為一個(gè)類,見圖7.34(d)。,圖7.34 關(guān)聯(lián)類二元一對(duì)一關(guān)聯(lián)的實(shí)現(xiàn),2) 三元關(guān)聯(lián)的實(shí)現(xiàn) 我們假定存在關(guān)聯(lián)類,然后討論三元關(guān)聯(lián)的實(shí)現(xiàn),這有以下三種方法。 (1) 維持法。該方法是維持三元關(guān)聯(lián)關(guān)系不變,三個(gè)存在關(guān)聯(lián)關(guān)系的類保持不變,給關(guān)聯(lián)類中增加
49、其它三個(gè)類的關(guān)鍵屬性。例如,圖7.35(a)中,“教師”、“班級(jí)”和“課程”存在“授課”的三元關(guān)聯(lián),圖(b)是對(duì)圖(a)中這種關(guān)系的實(shí)現(xiàn)。,圖7.35 維持法實(shí)現(xiàn)三元關(guān)聯(lián),(2) 降元法。降元法是把三元關(guān)聯(lián)首先轉(zhuǎn)化為三個(gè)有關(guān)聯(lián)關(guān)系的類并分別與關(guān)聯(lián)類的二元關(guān)聯(lián),再按二元關(guān)聯(lián)的方法實(shí)現(xiàn)其關(guān)聯(lián)關(guān)系。例如,可以把圖7.35(a)的三元關(guān)聯(lián)轉(zhuǎn)化為圖7.36的三個(gè)二元關(guān)聯(lián),然后按二元關(guān)聯(lián)的方法實(shí)現(xiàn)關(guān)聯(lián)。 (3) 簡(jiǎn)并法。在三元關(guān)聯(lián)中,如果其中一個(gè)類的多重性為1,其它兩個(gè)為多,則可以用簡(jiǎn)并法讓這個(gè)類與關(guān)聯(lián)類形成二元關(guān)聯(lián),關(guān)聯(lián)性不變。例如,圖7.37(b)是用簡(jiǎn)并法對(duì)圖7.37(a)的三元關(guān)聯(lián)的實(shí)現(xiàn)。,圖7.
50、36 降元法實(shí)現(xiàn)三元關(guān)聯(lián),圖7.37 簡(jiǎn)并法實(shí)現(xiàn)三元關(guān)聯(lián),2組成關(guān)系設(shè)計(jì) 一般面向?qū)ο蟪绦蛟O(shè)計(jì)語言都直接提供對(duì)組成關(guān)系的支持。在定義整體類時(shí),把其部分對(duì)象作為整體類的成員,這樣就構(gòu)成了整體與部分的組成關(guān)系。因此組成關(guān)系的設(shè)計(jì)十分簡(jiǎn)單。 3泛化關(guān)系設(shè)計(jì) 所有面向?qū)ο蟪绦蛟O(shè)計(jì)語言都提供繼承支持,因此泛化關(guān)系本身就被面向?qū)ο蟪绦蛟O(shè)計(jì)語言所支持。但有些語言僅支持單繼承,不支持多繼承,因此,對(duì)設(shè)計(jì)模型中的多繼承要進(jìn)行必要處理。一種方法是把多繼承轉(zhuǎn)化成為單繼承,另一種方法是用接口來實(shí)現(xiàn)多繼承。下面我們介紹用接口來實(shí)現(xiàn)多繼承的方法。,圖7.38是一個(gè)多繼承的例子?!捌嚒崩^承了“陸上交通工具”和“機(jī)動(dòng)交通工
51、具”兩個(gè)類(見圖7.38(a)。為了讓“汽車”能夠具有“陸上交通工具”和“機(jī)動(dòng)交通工具”的特性,首先定義“陸上交通工具”和“機(jī)動(dòng)交通工具”的接口,然后在“汽車”類中實(shí)現(xiàn)這兩個(gè)接口,這樣就讓“汽車”類擁有了“陸上交通工具”和“機(jī)動(dòng)交通工具”的操作(見圖7.38(b)。,圖7.38 接口實(shí)現(xiàn)多繼承,7.5.4 類的優(yōu)化 通過分析和設(shè)計(jì)所確定的類還需要進(jìn)一步地進(jìn)行優(yōu)化。對(duì)類進(jìn)行優(yōu)化的原則是使類能夠明確地表示事物實(shí)體,并具有相對(duì)獨(dú)立性、一致性和適中的規(guī)模。在數(shù)據(jù)庫(kù)設(shè)計(jì)中,一般根據(jù)規(guī)范原則檢查關(guān)系的優(yōu)劣,如果一個(gè)關(guān)系符合范式規(guī)約,就可以說該關(guān)系是規(guī)范的。否則就需要對(duì)該關(guān)系進(jìn)行優(yōu)化處理,通過對(duì)關(guān)系的分解使
52、其滿足范式要求。,規(guī)范的類將滿足三級(jí)規(guī)范要求。 一級(jí)規(guī)范要求在類中不存在重復(fù)的屬性項(xiàng); 二級(jí)規(guī)范是在滿足一級(jí)規(guī)范的基礎(chǔ)上,類中不存在對(duì)主鍵屬性部分依賴的屬性; 三級(jí)規(guī)范則要求在滿足二級(jí)規(guī)范的基礎(chǔ)上,在類中不存在傳遞依賴關(guān)系。 下面我們分三步對(duì)由圖7.39“圖書訂單”所產(chǎn)生的“圖書訂單”類(見圖7.40)進(jìn)行優(yōu)化。,圖7.39 書店信息系統(tǒng)的圖書訂單,1一級(jí)規(guī)范 一級(jí)規(guī)范要求在類中不存在重復(fù)的屬性。在類中如果存在重復(fù)的屬性,則需要把所有重復(fù)的屬性從類中抽取出來,構(gòu)成一個(gè)新類。在圖7.40“圖書訂單”類中,從“計(jì)劃單序號(hào)”到“實(shí)際到貨日期”8個(gè)屬性都是重復(fù)的。為了符合一級(jí)規(guī)范的要求,需要把這些屬性
53、從“圖書訂單”類中提取出來,形成新的“訂單圖書”類(見圖7.41)。訂單圖書是本訂單所訂購(gòu)的圖書,它是圖書訂單的有機(jī)構(gòu)成部分,因此,“訂單圖書”類與“圖書訂單”類是組成關(guān)系。在一個(gè)訂單中最多可以有20種圖書,多重性標(biāo)為1.20。,圖7.40 初步的“圖書訂單”類,圖7.41 一級(jí)規(guī)范后的“圖書訂單”類,2二級(jí)規(guī)范 二級(jí)規(guī)范要求在類中不存在部分依賴關(guān)系的屬性,要把不完全依賴關(guān)鍵屬性的非關(guān)鍵屬性從類中提取出來。在圖7.41中,“訂單圖書”類的關(guān)鍵屬性是“訂單號(hào)”和“書號(hào)”,但是“書名”、“作者”、“單價(jià)”三個(gè)屬性則僅依賴“書號(hào)”關(guān)鍵屬性,存在部分依賴關(guān)系,所以需要進(jìn)行優(yōu)化。二級(jí)規(guī)范后的“圖書訂單”
54、類見圖7.42。,圖7.42 二級(jí)規(guī)范后的“圖書訂單”類,3三級(jí)規(guī)范 三級(jí)規(guī)范要求消除在類的屬性中存在的傳遞依賴關(guān)系。在“圖書訂單”類中,“出版社編號(hào)”依賴“訂單號(hào)”,但是從“出版社名稱”到“賬號(hào)”6個(gè)屬性僅依賴“出版社編號(hào)”,并不直接依賴“訂單號(hào)”,這是典型的傳遞依賴關(guān)系,需要消除。三級(jí)規(guī)范之后的“圖書訂單”類見圖7.43。,圖7.43 三級(jí)規(guī)范后的“圖書訂單”類,4進(jìn)一步優(yōu)化 圖7.43中“圖書訂單”的屬性仍然偏多,并且“合計(jì)”和“總計(jì)”兩個(gè)屬性屬于派生屬性,可以去掉??梢园褞讉€(gè)費(fèi)用屬性獨(dú)立出來形成一個(gè)新的“訂單費(fèi)用”類,作為“圖書訂單”類的部分類。這樣優(yōu)化之后的類圖見圖7.44。,圖7.
55、44 “圖書訂單”優(yōu)化類圖,7.6 數(shù)據(jù)庫(kù)設(shè)計(jì),7.6.1 概述 數(shù)據(jù)庫(kù)設(shè)計(jì)是指根據(jù)業(yè)務(wù)需求、信息需求和處理需求,確定信息系統(tǒng)中的數(shù)據(jù)庫(kù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)一致性約束的過程。 數(shù)據(jù)庫(kù)結(jié)構(gòu)分外模式、模式和內(nèi)模式三級(jí)結(jié)構(gòu)。外模式也稱用戶模式或子模式,是用戶所看到的數(shù)據(jù)視圖。模式是綜合所有外模式得出的一致的公共數(shù)據(jù)視圖。內(nèi)模式描述數(shù)據(jù)的物理結(jié)構(gòu)和存儲(chǔ)方式,是數(shù)據(jù)在數(shù)據(jù)庫(kù)系統(tǒng)中的內(nèi)部表示。,數(shù)據(jù)庫(kù)設(shè)計(jì)的基本過程可分為需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)四個(gè)步驟,見圖7.45。 需求分析的主要工作是調(diào)查和分析用戶的業(yè)務(wù)活動(dòng)、信息和處理的需求,以及各種約束條件,形成數(shù)據(jù)庫(kù)設(shè)計(jì)的需求說明。在信息系統(tǒng)開發(fā)中
56、,一般并不就數(shù)據(jù)庫(kù)設(shè)計(jì)專門進(jìn)行需求分析,而是在業(yè)務(wù)分析(見第4章)和需求分析(見第5章)中進(jìn)行考慮。,圖7.45 數(shù)據(jù)庫(kù)設(shè)計(jì)的基本過程,數(shù)據(jù)庫(kù)設(shè)計(jì)的方法與信息系統(tǒng)所采用的開發(fā)方法存在著密切的關(guān)系,同時(shí)還與所采用的數(shù)據(jù)庫(kù)模型(包括層次模型、網(wǎng)狀模型、關(guān)系模型、對(duì)象模型等)有關(guān)。由于本教材主要介紹采用面向?qū)ο蠓椒ㄩ_發(fā)信息系統(tǒng),同時(shí)考慮到關(guān)系模型是迄今最為成熟的數(shù)據(jù)庫(kù)模型,因此,我們主要討論采用面向?qū)ο蠓椒ê完P(guān)系模型的數(shù)據(jù)庫(kù)設(shè)計(jì)工作。,7.6.2 概念設(shè)計(jì) 數(shù)據(jù)庫(kù)的概念設(shè)計(jì)是針對(duì)現(xiàn)實(shí)世界,通過對(duì)其中信息實(shí)體的收集、分類、聚集和概括,建立數(shù)據(jù)庫(kù)概念結(jié)構(gòu)的過程。 概念結(jié)構(gòu)也叫概念數(shù)據(jù)模型(Concept
57、ual Data Model),它應(yīng)該反映現(xiàn)實(shí)世界中組織的業(yè)務(wù)模式、信息結(jié)構(gòu)、信息間的相互制約關(guān)系,以及對(duì)信息存儲(chǔ)、查詢和加工的處理要求等。概念數(shù)據(jù)模型是對(duì)數(shù)據(jù)的抽象描述,它應(yīng)該獨(dú)立于具體的數(shù)據(jù)處理的細(xì)節(jié)和數(shù)據(jù)庫(kù)管理系統(tǒng)。,概念設(shè)計(jì)一般分為局部視圖設(shè)計(jì)和全局視圖集成兩個(gè)步驟。首先從各部門或用戶的角度設(shè)計(jì)出反映局部實(shí)體聯(lián)系的局部視圖(外模式),然后把各局部視圖集成為能夠反映組織全貌的全局視圖(模式)。 傳統(tǒng)方法通常采用實(shí)體聯(lián)系圖(ER圖)作為概念設(shè)計(jì)的工具,同時(shí)用ER圖描述概念數(shù)據(jù)模型。如果采用UML建模,則可以直接用系統(tǒng)分析和系統(tǒng)設(shè)計(jì)得到的類圖作為概念數(shù)據(jù)模型。,下面我們分別介紹采用這兩種方法
58、所進(jìn)行的概念設(shè)計(jì)。 1ER概念設(shè)計(jì) 1) 局部視圖設(shè)計(jì) 局部視圖設(shè)計(jì)也被稱為外模式設(shè)計(jì),其任務(wù)是從用戶角度設(shè)計(jì)出能反映局部現(xiàn)實(shí)空間數(shù)據(jù)關(guān)系的局部概念結(jié)構(gòu)。 局部視圖設(shè)計(jì)的第一步工作是劃分局部視圖的范圍。局部視圖范圍通常是根據(jù)部門、用戶或用戶所處的角度來進(jìn)行自然劃分。,局部視圖設(shè)計(jì)的第二步工作是識(shí)別實(shí)體. 局部視圖設(shè)計(jì)的第三步工作是實(shí)體分析。實(shí)體分析包括實(shí)體屬性分析和實(shí)體關(guān)系分析,并用ER圖描述實(shí)體-關(guān)系分析的結(jié)果。 在圖7.46中,我們給出書店圖書銷售管理中讀者選書的局部視圖。由讀者從書架的架存圖書中上把自己所需要的圖書選出來,作為待售圖書。架存圖書和待售圖書與書目存在多對(duì)一的關(guān)聯(lián)關(guān)系。,圖7
59、.46 讀者選書的ER圖,2) 全局視圖設(shè)計(jì) 全局視圖也被稱為全局概念結(jié)構(gòu),它是完整表示一個(gè)信息系統(tǒng)的合理、一致的數(shù)據(jù)庫(kù)概念結(jié)構(gòu)。全局視圖設(shè)計(jì)需要逐一地把各個(gè)局部視圖綜合成為最終的全局視圖。在綜合過程中,需要進(jìn)一步對(duì)實(shí)體和關(guān)系是否作為最終數(shù)據(jù)存儲(chǔ)進(jìn)行確認(rèn),并消除各局部視圖之間存在的沖突,得出合理、一致的全局視圖。,消除沖突之后的全局視圖是概念上不存在矛盾的概念數(shù)據(jù)庫(kù)結(jié)構(gòu), 但它并不一定是合理的概念數(shù)據(jù)庫(kù)結(jié)構(gòu)。一個(gè)好的全局視圖,除了能夠準(zhǔn)確、全面反映用戶的功能需求外,還應(yīng)該滿足實(shí)體個(gè)數(shù)盡可能少、實(shí)體的屬性盡可能少、實(shí)體間的聯(lián)系無冗余等條件。為了保證其合理性,還需要對(duì)全局視圖進(jìn)行優(yōu)化。圖7.47給
60、出了書店圖書銷售的全局概念結(jié)構(gòu)。,圖7.47 書店圖書銷售全局概念數(shù)據(jù)庫(kù)結(jié)構(gòu)(ER),2UML概念設(shè)計(jì) UML與ER有本質(zhì)區(qū)別。UML比ER使用范圍要寬廣得多,它是一種標(biāo)準(zhǔn)的建模語言,可被用來進(jìn)行軟件和信息系統(tǒng)開發(fā)的全過程建模,而ER模型僅用在數(shù)據(jù)庫(kù)的概念設(shè)計(jì)階段。UML與ER都可以用來建立數(shù)據(jù)庫(kù)概念模型,但兩者的機(jī)理完全不同。,由于UML基于面向?qū)ο蠓椒?,要保持方法的一致性,最好選擇面向?qū)ο髷?shù)據(jù)庫(kù)。但是,面向?qū)ο髷?shù)據(jù)庫(kù)目前并沒有成熟的產(chǎn)品,即便是采用面向?qū)ο蠓椒ê铜h(huán)境開發(fā)信息系統(tǒng),仍然需要采用關(guān)系型數(shù)據(jù)庫(kù)來存儲(chǔ)和管理數(shù)據(jù)。在此,我們主要討論采用UML建模,用關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)概念設(shè)計(jì),我們
61、簡(jiǎn)稱為UML概念設(shè)計(jì)。,UML概念設(shè)計(jì)的基本工作是從系統(tǒng)分析和系統(tǒng)設(shè)計(jì)建立的各種類圖中抽取持久型類,確定持久型類之間的關(guān)系,并用類圖描述這種關(guān)系,把類圖作為數(shù)據(jù)庫(kù)概念設(shè)計(jì)的結(jié)果。,1) 抽取持久型類 持久型類是指類的完整信息要在數(shù)據(jù)庫(kù)中存儲(chǔ)的類。類可以分為界面類、實(shí)體類和控制類三種類型。界面類和控制類的信息一般不需要長(zhǎng)久存儲(chǔ),持久型類只可能是實(shí)體類。但并不是所有實(shí)體類信息都要長(zhǎng)久存儲(chǔ),持久型類只需要從那些信息需要長(zhǎng)久存儲(chǔ)的實(shí)體類中抽取。,2) 確定類關(guān)系 在系統(tǒng)分析和設(shè)計(jì)中,并沒有建立立足于整個(gè)信息系統(tǒng)的整體類圖,而只是建立了一個(gè)個(gè)針對(duì)具體用例的類圖。也就是說所提取的持久型類被分散在各個(gè)用例類
62、圖之中了。接下來需要對(duì)提出的持久型類進(jìn)行分析,以確定它們相互之間的關(guān)系,建立起反映這些類關(guān)系的類圖。根據(jù)分析,最終確定出書店銷售部分的持久型類關(guān)系,如圖7.48所示。,圖7.48 書店圖書銷售全局概念數(shù)據(jù)庫(kù)結(jié)構(gòu)(UML),7.6.3 邏輯設(shè)計(jì) 邏輯設(shè)計(jì)是將現(xiàn)實(shí)世界的概念數(shù)據(jù)模型設(shè)計(jì)成為適應(yīng)于特定數(shù)據(jù)庫(kù)管理系統(tǒng)的邏輯數(shù)據(jù)模式。 邏輯數(shù)據(jù)模式也被簡(jiǎn)稱為邏輯模型或數(shù)據(jù)模式,關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)模式是關(guān)系模式。如果數(shù)據(jù)庫(kù)采用關(guān)系數(shù)據(jù)庫(kù),則需要把ER圖或類圖描述的概念數(shù)據(jù)模型轉(zhuǎn)換為等價(jià)的關(guān)系模式及其約束。 數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的結(jié)果是一組關(guān)聯(lián)的規(guī)范關(guān)系,一系列經(jīng)過結(jié)構(gòu)化的業(yè)務(wù)規(guī)則,以及數(shù)據(jù)庫(kù)存取的安全性設(shè)計(jì)。,邏
63、輯設(shè)計(jì)的基本工作包括: 由概念數(shù)據(jù)模型導(dǎo)出關(guān)系模式; 規(guī)范化關(guān)系模式; 結(jié)構(gòu)化業(yè)務(wù)規(guī)則; 數(shù)據(jù)庫(kù)存取安全性設(shè)計(jì)。 1由概念數(shù)據(jù)模型導(dǎo)出關(guān)系模式 關(guān)系模式的基本內(nèi)容是一組關(guān)聯(lián)的關(guān)系。概念數(shù)據(jù)模型具有ER圖和類圖兩種形式,下面我們分別介紹這兩種形式向關(guān)系模式的轉(zhuǎn)換。,1) ER圖轉(zhuǎn)換為關(guān)系模式 對(duì)于用ER圖描述的概念數(shù)據(jù)模型,再轉(zhuǎn)換為關(guān)系模式時(shí),需要把ER圖中每一個(gè)實(shí)體或關(guān)系轉(zhuǎn)換為關(guān)系模式中的一個(gè)關(guān)系。 例如,可把圖7.47書店圖書銷售的ER圖轉(zhuǎn)換為圖7.49所示的關(guān)系模式。,圖7.49 書店圖書銷售的關(guān)系模式(由ER圖轉(zhuǎn)換而來),圖書銷售的ER圖中有“書目”、“上架圖書”、“架存圖書”、“待售圖
64、書”、“售出圖書”和“職工”六個(gè)實(shí)體,把它們轉(zhuǎn)換成為關(guān)系模式中的六個(gè)同名的關(guān)系,這六個(gè)實(shí)體的屬性也轉(zhuǎn)換成為關(guān)系模式中的同名關(guān)系的屬性。其中,“上架圖書”、“架存圖書”、“待售圖書”和“售出圖書”中的“書號(hào)”屬性是這幾個(gè)關(guān)系的關(guān)鍵屬性,同時(shí)又可通過這個(gè)屬性與“書目”建立起關(guān)聯(lián)關(guān)系?!吧霞軋D書”、“待售圖書”和“售出圖書”中的“職工編號(hào)”屬性與“職工”建立了關(guān)聯(lián)的單向?qū)Ш疥P(guān)系。,2) 類圖轉(zhuǎn)換為關(guān)系模式 如果用類圖描述概念數(shù)據(jù)模型,則需要把類圖中的每一個(gè)類轉(zhuǎn)換為一個(gè)關(guān)系,類的屬性作為關(guān)系的屬性,在轉(zhuǎn)換時(shí)還需要在關(guān)系模式中反映類與類之間的關(guān)系。 (1) 關(guān)聯(lián)關(guān)系的轉(zhuǎn)換。 (2) 組成關(guān)系的轉(zhuǎn)換。 (3) 泛化關(guān)系的轉(zhuǎn)換。,例如,可把圖7.50(a)所示的類圖轉(zhuǎn)換成為圖(b)所示的關(guān)系模式。下面我們分幾種情況討論類之間存在不同關(guān)系時(shí),向關(guān)系模式轉(zhuǎn)換的方法。,圖7.50 一對(duì)一關(guān)聯(lián)單向?qū)Ш睫D(zhuǎn)換的關(guān)系模式,(1) 關(guān)聯(lián)關(guān)系的轉(zhuǎn)換。在7.5.3節(jié)的“關(guān)聯(lián)關(guān)系設(shè)計(jì)”中,詳細(xì)討論了對(duì)類之間關(guān)聯(lián)關(guān)系的設(shè)計(jì)方法。通過關(guān)聯(lián)關(guān)系設(shè)計(jì)之后的類圖,所轉(zhuǎn)換而成的關(guān)系模式完全能夠反映類之間所存在的關(guān)聯(lián)關(guān)系。例如,圖7.50(b)的兩個(gè)關(guān)系
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 八年級(jí)政治人類的需要1
- 2012年秋外研版七年級(jí)上冊(cè)M7-Unit2
- 121全等三角形
- (人教新課標(biāo))二年級(jí)語文上冊(cè)課件_語文園地七1
- 二次根式的乘法(教育精品)
- Performances畢業(yè)生電影ppt
- 北師大版數(shù)學(xué)四年級(jí)上冊(cè)《衛(wèi)星運(yùn)行時(shí)間》PPT課件(教育精品)
- 初中物理《力》課件
- 北師大版小學(xué)五年級(jí)下冊(cè)語文《普羅米修斯的故事》課件PPT2(教育精品)
- 初中思品、歷史復(fù)習(xí)課如何上
- 北京建筑大學(xué)XXXX研究生畢業(yè)答辯
- 北師大版五年級(jí)語文上冊(cè)《我喜歡》ppt優(yōu)秀課件(教育精品)
- 生物①必修11《從生物圈到細(xì)胞》PPT課件
- 好家風(fēng)伴我成長(zhǎng)(完美版)課件
- 2017漁人碼頭大閘蟹執(zhí)行方案-強(qiáng)襲文化