




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第六章系統(tǒng)的總體設(shè)計6.1系統(tǒng)設(shè)計概述6.2軟件體系架構(gòu)6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計6.4總體設(shè)計報告第六章系統(tǒng)的總體設(shè)計6.1系統(tǒng)設(shè)計概述6.1系統(tǒng)設(shè)計概述系統(tǒng)設(shè)計包括總體設(shè)計和詳細(xì)設(shè)計兩部分。系統(tǒng)設(shè)計是把分析模型轉(zhuǎn)變成系統(tǒng)設(shè)計模型的過程。1.系統(tǒng)設(shè)計的目標(biāo)系統(tǒng)設(shè)計的任務(wù)是依據(jù)系統(tǒng)的邏輯模型,結(jié)合實際情況,設(shè)計出一個能在計算機(jī)系統(tǒng)上實現(xiàn)的具體設(shè)計方案,即新系統(tǒng)的物理模型。系統(tǒng)設(shè)計的目標(biāo)應(yīng)從以下幾個方面進(jìn)行考慮。(1).系統(tǒng)的可靠性(2).系統(tǒng)的可維護(hù)性(3).系統(tǒng)的用戶友好性(4).系統(tǒng)的工作效率(5).系統(tǒng)的合法性下一頁返回6.1系統(tǒng)設(shè)計概述系統(tǒng)設(shè)計包括總體設(shè)計和詳細(xì)設(shè)計兩部分。系統(tǒng)6.1系統(tǒng)設(shè)計概述(6).系統(tǒng)的經(jīng)濟(jì)性2.系統(tǒng)設(shè)計的內(nèi)容系統(tǒng)設(shè)計的內(nèi)容可分為總體設(shè)計和詳細(xì)設(shè)計兩部分。具體包括如下內(nèi)容:(1).系統(tǒng)配置設(shè)計設(shè)計人員根據(jù)系統(tǒng)分析報告中所確定的系統(tǒng)目標(biāo)、功能、性能、環(huán)境與制約條件,確定合適的計算機(jī)處理方式及體系結(jié)構(gòu),確定合適的計算機(jī)系統(tǒng)具體配置。(2).子系統(tǒng)和功能模塊設(shè)計根據(jù)系統(tǒng)分析階段得到的數(shù)據(jù)流程圖和數(shù)據(jù)詞典,設(shè)計出子系統(tǒng)和功能模塊結(jié)構(gòu)圖,明確它們之間的相互關(guān)系。上一頁下一頁返回6.1系統(tǒng)設(shè)計概述(6).系統(tǒng)的經(jīng)濟(jì)性上一頁下一頁返回6.1系統(tǒng)設(shè)計概述(3).對象設(shè)計根據(jù)系統(tǒng)分析報告設(shè)計出管理信息系統(tǒng)中用到的各種對象,確定對象類型、屬性、操作、服務(wù)及方法等,并形成對象設(shè)計文檔。如產(chǎn)品、往來客戶、職工及業(yè)務(wù)處理等各類對象的設(shè)計。(4).?dāng)?shù)據(jù)庫設(shè)計根據(jù)系統(tǒng)分析報告與系統(tǒng)的硬件、軟件配置,進(jìn)行數(shù)據(jù)庫的概念設(shè)計、邏輯設(shè)計、物理設(shè)計,設(shè)計出系統(tǒng)有關(guān)的數(shù)據(jù)庫文件、數(shù)據(jù)庫結(jié)構(gòu)、存取路徑、存取方式等。(5).輸入/輸出設(shè)計根據(jù)系統(tǒng)的目標(biāo)、用戶的使用習(xí)慣及使用的方便,確定系統(tǒng)輸入的內(nèi)容、輸入格式、輸入方式與輸入校驗;完成系統(tǒng)輸出的內(nèi)容、輸出格式及輸出方式等內(nèi)容的具體設(shè)計。上一頁下一頁返回6.1系統(tǒng)設(shè)計概述(3).對象設(shè)計根據(jù)系統(tǒng)分析報告設(shè)計出管理6.1系統(tǒng)設(shè)計概述(6).業(yè)務(wù)邏輯處理設(shè)計對系統(tǒng)中每一業(yè)務(wù)事項的詳細(xì)處理過程進(jìn)行描述,編寫業(yè)務(wù)流程圖、處理方法和處理順序等,作為設(shè)計開發(fā)詳細(xì)設(shè)計和實現(xiàn)主要依據(jù)。(7).編寫系統(tǒng)設(shè)計報告根據(jù)系統(tǒng)設(shè)計階段所完成的總體設(shè)計及詳細(xì)設(shè)計內(nèi)容,以書面的形式編寫符合要求的系統(tǒng)設(shè)計報告。系統(tǒng)設(shè)計報告既是系統(tǒng)設(shè)計階段的主要成果,經(jīng)過審查批準(zhǔn)后又是系統(tǒng)實施階段的主要技術(shù)依據(jù)。以上內(nèi)容的設(shè)計在系統(tǒng)設(shè)計階段是按照一定的先后次序進(jìn)行的,一般是先進(jìn)行系統(tǒng)配置設(shè)計或系統(tǒng)架構(gòu)設(shè)計,形成系統(tǒng)設(shè)計報告。再進(jìn)行詳細(xì)設(shè)計包括細(xì)化對象設(shè)計、數(shù)據(jù)庫設(shè)計、輸入設(shè)計、輸出設(shè)計、模塊處理過程設(shè)計等具體內(nèi)容,最后再編寫詳細(xì)設(shè)計文檔。上一頁返回6.1系統(tǒng)設(shè)計概述(6).業(yè)務(wù)邏輯處理設(shè)計對系統(tǒng)中每一業(yè)務(wù)事6.2軟件體系架構(gòu)隨著系統(tǒng)復(fù)雜度的增加,系統(tǒng)分解的說明就變得相當(dāng)關(guān)鍵。一旦開始進(jìn)行開發(fā),就很難修改或者糾正一個不好的分解,因為這樣大多數(shù)子系統(tǒng)的接口就必須改動。為了認(rèn)識到這個問題的重要性,出現(xiàn)了軟件體系結(jié)構(gòu)的概念。軟件體系結(jié)構(gòu)包括系統(tǒng)分解、全局控制流、錯誤處理策略和子系統(tǒng)間的通信協(xié)議。本節(jié)介紹一些典型的不同的體系結(jié)構(gòu),并簡要介紹不同軟件體系結(jié)構(gòu)的設(shè)計思路。具有代表性的軟件體系結(jié)構(gòu)包括倉庫體系結(jié)構(gòu)、MVC體系結(jié)構(gòu)、客戶/服務(wù)器體系結(jié)構(gòu)、B/S結(jié)構(gòu)、對等體系結(jié)構(gòu)和管道過濾器結(jié)構(gòu)等。下一頁返回6.2軟件體系架構(gòu)隨著系統(tǒng)復(fù)雜度的增加,系統(tǒng)分解的說明就變得6.2軟件體系架構(gòu)6.2.1倉庫體系結(jié)構(gòu)(RepositoryArchitecture)在倉庫體系結(jié)構(gòu)(如圖6-1所示)中,子系統(tǒng)通過一個稱為中心倉庫的單一數(shù)據(jù)結(jié)構(gòu)訪問并修改數(shù)據(jù)。子系統(tǒng)相對獨立而且只通過中心數(shù)據(jù)結(jié)構(gòu)相互作用?;蛘咄ㄟ^中心倉庫(例如數(shù)據(jù)中的觸發(fā)器調(diào)用外設(shè))或者通過子系統(tǒng)(例如,通過倉庫的鎖來實現(xiàn)控制流的獨立和同步)來命令控制流。每個子系統(tǒng)只依賴于倉庫中心數(shù)據(jù)結(jié)構(gòu)。而倉庫并不清楚其他子系統(tǒng)。對于像工資系統(tǒng)、學(xué)籍管理系統(tǒng)和銀行系統(tǒng)這樣的數(shù)據(jù)庫管理系統(tǒng)來說,倉庫體系結(jié)構(gòu)是比較典型的。以數(shù)據(jù)為中心易于處理子系統(tǒng)間的并發(fā)和完整性問題。倉庫子系上一頁下一頁返回6.2軟件體系架構(gòu)6.2.1倉庫體系結(jié)構(gòu)(Repositor6.2軟件體系架構(gòu)
統(tǒng)可以實現(xiàn)全局控制流。用戶可以調(diào)用其中的每個界面,倉庫體系結(jié)構(gòu)也適用于處理任務(wù)不斷改變的復(fù)雜的應(yīng)用系統(tǒng)。但是倉庫子系統(tǒng)的主要缺點是子系統(tǒng)與倉庫之間耦合度很高,對倉庫數(shù)據(jù)結(jié)構(gòu)的修改必然會影響到子系統(tǒng)。6.6.2模型/視圖/控制器體系結(jié)構(gòu)(ModelViewControl--MVCArchitecture)在模型/視圖/控制器(MVC)體系結(jié)構(gòu)(見圖6-2)中,子系統(tǒng)分為三種不同的類型:模型子系統(tǒng)負(fù)責(zé)維護(hù)系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)信息;視圖子系統(tǒng)負(fù)責(zé)把系統(tǒng)數(shù)據(jù)信息顯示給用上一頁下一頁返回6.2軟件體系架構(gòu) 統(tǒng)可以實現(xiàn)全局控制流。用戶可以調(diào)用其中的6.2軟件體系架構(gòu)
戶;控制器子系統(tǒng)負(fù)責(zé)管理與用戶交互的順序。模型子系統(tǒng)發(fā)展成完全不依賴于任何視圖或控制器子系統(tǒng)。它們狀態(tài)的變化通過訂閱/通知(subscription/notification)協(xié)議傳輸給視圖子系統(tǒng)。MVC體系結(jié)構(gòu)是倉庫體系結(jié)構(gòu)的特例,模型實現(xiàn)了中心數(shù)據(jù)結(jié)構(gòu),控制對象指揮著控制流。這種體系結(jié)構(gòu)經(jīng)常用于WEB服務(wù)器系統(tǒng)設(shè)計??刂破魇占瘉碜杂脩舻妮斎氩l(fā)消息給模型。模型保持中心數(shù)據(jù)結(jié)構(gòu)。視圖顯示模型,每當(dāng)模型發(fā)生變化時得到通知(通過簽署/通知協(xié)議)。MVC體系結(jié)構(gòu)將交互式應(yīng)用程序分為三個區(qū)域:輸入、處理和輸出。模型組件封裝了內(nèi)核數(shù)據(jù)和功能。模型獨立于特定輸出表示法或輸入方式。上一頁下一頁返回6.2軟件體系架構(gòu) 戶;控制器子系統(tǒng)負(fù)責(zé)管理與用戶交互的順序6.2軟件體系架構(gòu)視圖組件子系統(tǒng)向用戶顯示信息。視圖從模型獲得數(shù)據(jù)。可能有模型的多個視圖。每個視圖都有一個相關(guān)的控制器組件??刂破鹘邮茌斎耄ǔW鳛閷⑹髽?biāo)移動、鼠標(biāo)按鈕的活動或鍵盤輸入編碼的事件。事件被翻譯成模型或視圖的服務(wù)器請求。用戶僅僅通過控制器與系統(tǒng)交互。模型與視圖和控制器組件的分離將允許同一個模型的多個視圖。如果用戶通過一個視圖的控制器改變了模型,所有依賴于該數(shù)據(jù)的其他視圖應(yīng)該反映出這種變化。因此一旦模型的數(shù)據(jù)發(fā)生了變化,模型要通報所有視圖。視圖反過來從模型恢復(fù)新數(shù)據(jù)并更新所顯示的信息。這種變更-傳播機(jī)制相當(dāng)于訂閱—發(fā)行。上一頁下一頁返回6.2軟件體系架構(gòu)視圖組件子系統(tǒng)向用戶顯示信息。視圖從模型獲6.2軟件體系架構(gòu)模型、視圖和控制器之間分離的基本原理在于用戶接口(如視圖和控制器)要比數(shù)據(jù)處理(如模型)更加易于變化。因此人機(jī)交互從核心功能中分離出來。在分析應(yīng)用程序結(jié)構(gòu)時,將核心功能從設(shè)想的輸入和輸出行為中分離出來。設(shè)計你的應(yīng)用程序的模型組件來封裝內(nèi)核所需的數(shù)據(jù)和功能。提供訪問中需要顯示數(shù)據(jù)的功能。確定模型功能的哪一部分應(yīng)該通過控制器向用戶展示,并給模型添加相應(yīng)的接口,這將更便于子系統(tǒng)設(shè)計和軟件開發(fā)分工。MVC技術(shù)也適用于交互式系統(tǒng),尤其是需要同一個模型的多個視圖時。MVC可以用來保持分布式數(shù)據(jù)的一致性;然而,與其他倉庫體系結(jié)構(gòu)類似,它也帶來了同樣的性能瓶頸問題。上一頁下一頁返回6.2軟件體系架構(gòu)模型、視圖和控制器之間分離的基本原理在于用6.2軟件體系架構(gòu)6.2.3客戶/服務(wù)器體系結(jié)構(gòu)(Client/ServerArchitecture)在客戶/服務(wù)器體系結(jié)構(gòu)(見圖6-3)中,一個子系統(tǒng)即服務(wù)器,為其他稱為客戶的子系統(tǒng)的實例提供服務(wù),客戶端系統(tǒng)負(fù)責(zé)與用戶的交互。通常由某個遠(yuǎn)程程序調(diào)用機(jī)制或公共對象代理(例如CORBA或JavaRMI)完成請求的服務(wù)。除了同步管理請求或者接收結(jié)果的時候,客戶和服務(wù)器中的控制流都是相互獨立的。上一頁下一頁返回6.2軟件體系架構(gòu)6.2.3客戶/服務(wù)器體系結(jié)構(gòu)(Clien6.2軟件體系架構(gòu)客戶向一個或多個服務(wù)器請求獲得服務(wù)。服務(wù)器不知道客戶??蛻簦?wù)器技術(shù)是倉庫體系結(jié)構(gòu)的一般化,帶有中心數(shù)據(jù)庫的信息系統(tǒng)是客戶/服務(wù)器體系結(jié)構(gòu)的例子??蛻糌?fù)責(zé)接收來自用戶的輸入、檢查范圍,一旦所有必需的數(shù)據(jù)齊全,便初始化數(shù)據(jù)庫事務(wù)。服務(wù)器負(fù)責(zé)執(zhí)行事務(wù),保證數(shù)據(jù)的完整性。在這種情況下,客戶/服務(wù)器體系結(jié)構(gòu)是倉庫體系結(jié)構(gòu)的特例,它由程管理中心數(shù)據(jù)結(jié)構(gòu)。但是,客戶/服務(wù)器系統(tǒng)并不限于單個服務(wù)器。在Internet網(wǎng)中,單個客戶可以訪問數(shù)千個不同服務(wù)器的數(shù)據(jù)??蛻簦?wù)器體系結(jié)構(gòu)非常適用于需要管理大量數(shù)據(jù)的分布式系統(tǒng)。上一頁下一頁返回6.2軟件體系架構(gòu)客戶向一個或多個服務(wù)器請求獲得服務(wù)。服務(wù)器6.2軟件體系架構(gòu)優(yōu)點:1.結(jié)構(gòu)簡單,系統(tǒng)中不同類型的任務(wù)分別由客戶和服務(wù)器承擔(dān),有利于發(fā)揮不同機(jī)器平臺的優(yōu)勢;2.支持分布式、并發(fā)環(huán)境,特別是當(dāng)客戶和服務(wù)器之間的關(guān)系是多對多時,可以有效地提高資源的利用率和共享程度;3.服務(wù)器集中管理資源,有利于權(quán)限控制和系統(tǒng)安全。缺點:在大多數(shù)client/server風(fēng)格的系統(tǒng)中,構(gòu)件之間的連接通過(遠(yuǎn)程)過程調(diào)用,接近于代碼一級,表達(dá)能力較弱。三層客戶/服務(wù)器軟件體系結(jié)構(gòu)客戶/服務(wù)器軟件體系結(jié)構(gòu),是基于資源不對等,且為實現(xiàn)共享而提出來的,是20世紀(jì)90年代成熟起來的技術(shù),客戶上一頁下一頁返回6.2軟件體系架構(gòu)優(yōu)點:1.結(jié)構(gòu)簡單,系統(tǒng)中不同類型的任務(wù)分6.2軟件體系架構(gòu)
/服務(wù)器結(jié)構(gòu)將應(yīng)用一分為二,服務(wù)器(后臺)負(fù)責(zé)數(shù)據(jù)管理,客戶機(jī)(前臺)完成與用戶的交互任務(wù)??蛻簦?wù)器體系結(jié)構(gòu)具有強(qiáng)大的數(shù)據(jù)操作和事務(wù)處理能力,模型思想簡單,易于人們理解和接受。但隨著企業(yè)規(guī)模的日益擴(kuò)大,軟件的復(fù)雜程度不斷提高,傳統(tǒng)的二層客戶/服務(wù)器結(jié)構(gòu)存在以下幾個局限:1.二層客戶/服務(wù)器結(jié)構(gòu)是單一服務(wù)器且以局域網(wǎng)為中心的,所以難以擴(kuò)展至大型企業(yè)廣域網(wǎng)或Internet;2.軟、硬件的組合及集成能力有限;3.客戶機(jī)的負(fù)荷太重,難以管理大量的客戶機(jī),系統(tǒng)的性能容易變壞;上一頁下一頁返回6.2軟件體系架構(gòu) /服務(wù)器結(jié)構(gòu)將應(yīng)用一分為二,服務(wù)器(后臺6.2軟件體系架構(gòu)4.?dāng)?shù)據(jù)安全性不好。因為客戶端程序可以直接訪問數(shù)據(jù)庫服務(wù)器,那么,在客戶端計算機(jī)上的其他程序也可想辦法訪問數(shù)據(jù)庫服務(wù)器,從而使數(shù)據(jù)庫的安全性受到威脅。正是因為二層客戶/服務(wù)器有這么多缺點,所以三層客戶/服務(wù)器結(jié)構(gòu)應(yīng)運而生。三層客戶/服務(wù)器結(jié)構(gòu)是將整個系統(tǒng)的應(yīng)用功能分成表示層、功能層和數(shù)據(jù)層三個層次結(jié)構(gòu),如下圖6-4所示。表示層是應(yīng)用的用戶接口部分,它擔(dān)負(fù)著用戶與應(yīng)用間的對話功能。它用于檢查用戶從鍵盤等輸入的數(shù)據(jù),顯示應(yīng)用輸出的數(shù)據(jù)。為使用戶能直觀地進(jìn)行操作,一般要使用圖形用戶接口,操作簡單、易學(xué)易用。在變更用戶接口時,只需上一頁下一頁返回6.2軟件體系架構(gòu)4.?dāng)?shù)據(jù)安全性不好。因為客戶端程序可以直接6.2軟件體系架構(gòu)
改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他兩層。檢查的內(nèi)容也只限于數(shù)據(jù)的形式和取值的范圍,不包括有關(guān)業(yè)務(wù)本身的處理邏輯。功能層相當(dāng)于應(yīng)用的本體,它是將具體的業(yè)務(wù)處理邏輯編入程序中。例如,在制作訂購合同時要計算合同金額,按照定好的格式配置數(shù)據(jù)、打印訂購合同,而處理所需的數(shù)據(jù)則要從表示層或數(shù)據(jù)層取得。表示層和功能層之間的數(shù)據(jù)交往要盡可能簡潔。例如,用戶檢索數(shù)據(jù)時,要設(shè)法將有關(guān)檢索要求的信息一次性地傳送給功能層,而由功能層處理過的檢索結(jié)果數(shù)據(jù)也一次性地傳送給表示層。數(shù)據(jù)層就是數(shù)據(jù)庫管理系統(tǒng),負(fù)責(zé)管理對數(shù)據(jù)庫數(shù)據(jù)的讀寫。數(shù)據(jù)庫管理系統(tǒng)必須能迅速執(zhí)行大量數(shù)據(jù)的更新和檢索。上一頁下一頁返回6.2軟件體系架構(gòu) 改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他6.2軟件體系架構(gòu)
因此,一般從功能層傳送到數(shù)據(jù)層的要求大都使用SQL語言。三層客戶/服務(wù)器的解決方案是:對這三層進(jìn)行明確分割,并在邏輯上使其獨立。原來的數(shù)據(jù)層作為數(shù)據(jù)庫管理系統(tǒng)已經(jīng)獨立出來,所以,關(guān)鍵是要將表示層和功能層分離成各自獨立的程序,并且還要使這兩層間的接口簡潔明了。一般情況是只將表示層配置在客戶機(jī)中,如果連功能層也放在客戶機(jī)中,與二層客戶/服務(wù)器結(jié)構(gòu)相比,其程序的可維護(hù)性要好得多,但是其他問題并未得到解決??蛻魴C(jī)的負(fù)荷太重,其業(yè)務(wù)處理所需的數(shù)據(jù)要從服務(wù)器傳給客戶機(jī),所以系統(tǒng)的性能容易變壞。上一頁下一頁返回6.2軟件體系架構(gòu) 因此,一般從功能層傳送到數(shù)據(jù)層的要求大都6.2軟件體系架構(gòu)如果將功能層和數(shù)據(jù)層分別放在不同的服務(wù)器中,則服務(wù)器和服務(wù)器之間也要進(jìn)行數(shù)據(jù)傳送。但是,由于在這種形態(tài)中三層是分別放在各自不同的硬件系統(tǒng)上的,所以靈活性很高,能夠適應(yīng)客戶機(jī)數(shù)目的增加和處理負(fù)荷的變動。例如,在追加新業(yè)務(wù)處理時,可以相應(yīng)增加裝載功能層的服務(wù)器。因此,系統(tǒng)規(guī)模越大這種形態(tài)的優(yōu)點就越顯著。與傳統(tǒng)的二層結(jié)構(gòu)相比,三層客戶/服務(wù)器結(jié)構(gòu)具有以下優(yōu)點:1.允許合理地劃分三層結(jié)構(gòu)的功能,使之在邏輯上保持相對獨立性,從而使整個系統(tǒng)的邏輯結(jié)構(gòu)更為清晰,能提高系統(tǒng)和軟件的可維護(hù)性和可擴(kuò)展性。2.允許更靈活有效地選用相應(yīng)的平臺和硬件系統(tǒng),使之在上一頁下一頁返回6.2軟件體系架構(gòu)如果將功能層和數(shù)據(jù)層分別放在不同的服務(wù)器中6.2軟件體系架構(gòu)邏輯上保持相對獨立性,從而使整個系統(tǒng)的邏輯結(jié)構(gòu)更為清晰,能提高系統(tǒng)和軟件的可維護(hù)性和可擴(kuò)展性。2.允許更靈活有效地選用相應(yīng)的平臺和硬件系統(tǒng),使之在處理負(fù)荷能力上與處理特性上分別適應(yīng)于結(jié)構(gòu)清晰的三層;并且這些平臺和各個組成部分可以具有良好的可升級性和開放性。例如,最初用一臺Unix工作站作為服務(wù)器,將數(shù)據(jù)層和功能層都配置在這臺服務(wù)器上。隨著業(yè)務(wù)的發(fā)展,用戶數(shù)和數(shù)據(jù)量逐漸增加,這時,就可以將Unix工作站作為功能層的專用服務(wù)器,另外追加一臺專用于數(shù)據(jù)層的服務(wù)器。若業(yè)務(wù)進(jìn)一步擴(kuò)大,用戶數(shù)進(jìn)一步增加,則可以繼續(xù)增加功能層的服務(wù)器數(shù)目,用以分割數(shù)據(jù)庫。清晰、合理地分割三層上一頁下一頁返回6.2軟件體系架構(gòu)邏輯上保持相對獨立性,從而使整個系統(tǒng)的邏輯6.2軟件體系架構(gòu)
結(jié)構(gòu)并使其獨立,可以使系統(tǒng)構(gòu)成的變更非常簡單。因此,被分成三層的應(yīng)用基本上不需要修正。3.三層客戶/服務(wù)器結(jié)構(gòu)中,應(yīng)用的各層可以并行開發(fā),各層也可以選擇各自最適合的開發(fā)語言。使之能并行地而且是高效地進(jìn)行開發(fā),達(dá)到較高的性能價格比;對每一層的處理邏輯的開發(fā)和維護(hù)也會更容易些。4.允許充分利用功能層有效地隔離開表示層與數(shù)據(jù)層,未授權(quán)的用戶難以繞過功能層而利用數(shù)據(jù)庫工具或黑客手段去非法地訪問數(shù)據(jù)層,這就為嚴(yán)格的安全管理奠定了堅實的基礎(chǔ);整個系統(tǒng)的管理層次也更加合理和可控制。上一頁下一頁返回6.2軟件體系架構(gòu) 結(jié)構(gòu)并使其獨立,可以使系統(tǒng)構(gòu)成的變更非常6.2軟件體系架構(gòu)6.2.4B/S結(jié)構(gòu),即瀏覽器/服務(wù)器(Browser/Server)結(jié)構(gòu)B/S結(jié)構(gòu),即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu),是隨著Internet技術(shù)的興起,對C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)(如圖6-5所示)。在這種結(jié)構(gòu)下,用戶界面完全通過WWW瀏覽器實現(xiàn),一部分事務(wù)邏輯在前端實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實現(xiàn)。B/S結(jié)構(gòu),主要是利用了不斷成熟的WWW瀏覽器技術(shù),結(jié)合瀏覽器的多種Script語言(VBScript、JavaScript…)和ActiveX技術(shù),用通用瀏覽器就實現(xiàn)了原來需要復(fù)雜專用軟件才能實現(xiàn)的強(qiáng)大功能,并節(jié)約了開發(fā)成本,是一種全新的軟件系統(tǒng)構(gòu)造技術(shù),這種結(jié)構(gòu)更成為當(dāng)今應(yīng)用軟件的首選體系結(jié)構(gòu)。顯然B/S結(jié)構(gòu)應(yīng)用程序相對于傳統(tǒng)的C/S結(jié)構(gòu)應(yīng)用程序?qū)⑹蔷薮蟮倪M(jìn)步。上一頁下一頁返回6.2軟件體系架構(gòu)6.2.4B/S結(jié)構(gòu),即瀏覽器/服務(wù)器6.2軟件體系架構(gòu)B/S結(jié)構(gòu)采用星形拓?fù)浣Y(jié)構(gòu)建立企業(yè)內(nèi)部通信網(wǎng)絡(luò)或利用Internet虛擬專網(wǎng)(VPN)。前者的特點是安全、快捷、準(zhǔn)確。后者則具有節(jié)省投資、跨地域廣的優(yōu)點。須視企業(yè)規(guī)模和地理分布確定。企業(yè)內(nèi)部通過防火墻接入Internet,整個網(wǎng)絡(luò)采用TCP/IP協(xié)議。B/S結(jié)構(gòu)開發(fā)工作主要是針對于服務(wù)器的,并且軟件主要的組成全都布署在服務(wù)器一方,客戶通過瀏覽訪問服務(wù)器,并下載或利用一些組件實現(xiàn)客戶端的交互訪問功能。當(dāng)前基于Java技術(shù)的J2EE和基于DCOM的.NET是開發(fā)B/S結(jié)構(gòu)的主流。C/S與B/S區(qū)別:上一頁下一頁返回6.2軟件體系架構(gòu)B/S結(jié)構(gòu)采用星形拓?fù)浣Y(jié)構(gòu)建立企業(yè)內(nèi)部通信6.2軟件體系架構(gòu)Client/Server是建立在局域網(wǎng)的基礎(chǔ)上的,Browser/Server是建立在廣域網(wǎng)的基礎(chǔ)上的。1.硬件環(huán)境不同:C/S一般建立在專用的網(wǎng)絡(luò)上,小范圍里的網(wǎng)絡(luò)環(huán)境,局域網(wǎng)之間再通過專門服務(wù)器提供連接和數(shù)據(jù)交換服務(wù).B/S建立在廣域網(wǎng)之上的,不必是專門的網(wǎng)絡(luò)硬件環(huán)境,例與電話上網(wǎng),租用設(shè)備.信息自己管理.有比C/S更強(qiáng)的適應(yīng)范圍,一般只要有操作系統(tǒng)和瀏覽器就行2.對安全要求不同:C/S一般面向相對固定的用戶群,對信息安全的控制能力很強(qiáng).一般高度機(jī)密的信息系統(tǒng)采用C/S結(jié)構(gòu)適宜.可以通過B/S發(fā)布部分可公開信息.B/S建立在廣域網(wǎng)之上,對安全的控制能力相對弱,面向是不可知的用戶群.上一頁下一頁返回6.2軟件體系架構(gòu)Client/Server是建立在局域網(wǎng)的6.2軟件體系架構(gòu)3.對程序架構(gòu)不同:C/S程序可以更加注重流程,可以對權(quán)限多層次校驗,對系統(tǒng)運行速度可以較少考慮.B/S對安全以及訪問速度的多重的考慮,建立在需要更加優(yōu)化的基礎(chǔ)之上.比C/S有更高的要求B/S結(jié)構(gòu)的程序架構(gòu)是發(fā)展的趨勢,從MS的.Net系列的BizTalk2000Exchange2000等,全面支持網(wǎng)絡(luò)的構(gòu)件搭建的系統(tǒng).SUN和IBM推的JavaBean構(gòu)件技術(shù)等,使B/S更加成熟.4.軟件重用不同:C/S程序可以不可避免的整體性考慮,構(gòu)件的重用性不如在B/S要求下的構(gòu)件的重用性好.B/S對的多重結(jié)構(gòu),要求構(gòu)件相對獨立的功能.能夠相對較好的重用.就入買來的餐桌可以再利用,而不是做在墻上的石頭桌子上一頁下一頁返回6.2軟件體系架構(gòu)3.對程序架構(gòu)不同:C/S程序可以更加注重6.2軟件體系架構(gòu)5.系統(tǒng)維護(hù)不同:系統(tǒng)維護(hù)是軟件生存周期中,開銷最大,也是極為重要的。C/S程序由于具有整體性,必須整體考察,處理出現(xiàn)的問題以及系統(tǒng)升級應(yīng)當(dāng)謹(jǐn)慎,有時系統(tǒng)升級相當(dāng)于是再做一個全新的系統(tǒng)。B/S構(gòu)件組成,方面構(gòu)件個別的更換,實現(xiàn)系統(tǒng)的無縫升級,系統(tǒng)維護(hù)開銷減到最小,用戶從網(wǎng)上自己下載安裝就可以實現(xiàn)升級。6.2.5對等體系結(jié)構(gòu)(Peer-to-PeerArchitecture)對等體系結(jié)構(gòu)是客戶/服務(wù)器體系結(jié)構(gòu)的一般化,其中子系統(tǒng)既可以作為客戶也可以作為服務(wù)器,即每個子系統(tǒng)既可以請求服務(wù)也可以提供服務(wù)(如圖6-6所示)。每個子系統(tǒng)中的控制流除了在同步請求的時候,都是獨立于其他子系統(tǒng)的。上一頁下一頁返回6.2軟件體系架構(gòu)5.系統(tǒng)維護(hù)不同:系統(tǒng)維護(hù)是軟件生存周期中6.2軟件體系架構(gòu)圖6-6是對等體系結(jié)構(gòu)(UML類圖)。對等體可以向其他對等體請求服務(wù)也可以向它們提供服務(wù)。對等體系結(jié)構(gòu)的一個例子是雙向通信軟件,各系統(tǒng)之間的連接基于對等結(jié)構(gòu),它一方面接收來自一個系統(tǒng)的請求,另一方面,自己也可以向其他系統(tǒng)要求連通。另一個例子就基于P2P(點對點協(xié)議)的應(yīng)用軟件如網(wǎng)絡(luò)音樂點播軟件。對等系統(tǒng)比客戶/服務(wù)器系統(tǒng)要難設(shè)計,它們有可能發(fā)生死鎖,并且使控制流更復(fù)雜了。6.2.6管道過濾器結(jié)構(gòu)(PipeandFilterArchitecture)在管道和過濾器體系結(jié)構(gòu)中,子系統(tǒng)處理輸入的一組數(shù)據(jù),上一頁下一頁返回6.2軟件體系架構(gòu)圖6-6是對等體系結(jié)構(gòu)(UML類圖)。對等6.2軟件體系架構(gòu)
并通過一組輸出將結(jié)果發(fā)送給其他子系統(tǒng)(如圖6-7所示)。子系統(tǒng)稱為過濾器,子系統(tǒng)之間的聯(lián)系稱為管道。每個過濾器只知道來自輸入管道的數(shù)據(jù)的內(nèi)容和格式,并不知道生成這些數(shù)據(jù)的過濾器。每個過濾器并發(fā)執(zhí)行并且通過管道進(jìn)行同步。管道和過濾器技術(shù)是可改動的:一個過濾器可以由其他過濾器替代,或者重新配置以達(dá)到不同的目的。一個過濾器可以有多個輸入和輸出。一個管道將某個過濾器的輸出和另外一個過濾器的輸入連接起來管道和過濾器體系結(jié)構(gòu)最有名的例子是UNLX的shell。大多數(shù)過濾器寫成可以通過標(biāo)準(zhǔn)管道進(jìn)行輸入輸出的讀寫。這就允許UNIX用戶以許多不同的方式連接過濾器。上一頁下一頁返回6.2軟件體系架構(gòu) 并通過一組輸出將結(jié)果發(fā)送給其他子系統(tǒng)(如6.2軟件體系架構(gòu)管道和過濾器體系結(jié)構(gòu)適用于實現(xiàn)數(shù)據(jù)流的變換而不需要用戶干涉的系統(tǒng)。不適合組件間的交互作用比較復(fù)雜的系統(tǒng),比如信息管理系統(tǒng)或者交互式系統(tǒng)。管道/過濾器體系結(jié)構(gòu)具有許多很好的特點:1.使得軟構(gòu)件具有良好的隱蔽性和高內(nèi)聚、低耦合的特點;2.允許設(shè)計者將整個系統(tǒng)的輸入/輸出行為看成是多個過濾器的行為的簡單合成;3.支持軟件重用。重要提供適合在兩個過濾器之間傳送的數(shù)據(jù),任何兩個過濾器都可被連接起來;上一頁下一頁返回6.2軟件體系架構(gòu)管道和過濾器體系結(jié)構(gòu)適用于實現(xiàn)數(shù)據(jù)流的變換6.2軟件體系架構(gòu)4.系統(tǒng)維護(hù)和增強(qiáng)系統(tǒng)性能簡單。新的過濾器可以添加到現(xiàn)有系統(tǒng)中來;舊的可以被改進(jìn)的過濾器替換掉;5.允許對一些如吞吐量、死鎖等屬性的分析;6.支持并行執(zhí)行。每個過濾器是作為一個單獨的任務(wù)完成,因此可與其它任務(wù)并行執(zhí)行。但是,這樣的系統(tǒng)也存在著不足方面:1.通常導(dǎo)致進(jìn)程成為批處理的結(jié)構(gòu)。這是因為雖然過濾器可增量式地處理數(shù)據(jù),但它們是獨立的,所以設(shè)計者必須將每個過濾器看成一個完整的從輸入到輸出的轉(zhuǎn)換。2.不適合處理交互的應(yīng)用。當(dāng)需要增量地顯示改變時,這個問題尤為嚴(yán)重。上一頁下一頁返回6.2軟件體系架構(gòu)4.系統(tǒng)維護(hù)和增強(qiáng)系統(tǒng)性能簡單。新的過濾器6.2軟件體系架構(gòu)3.因為在數(shù)據(jù)傳輸上沒有通用的標(biāo)準(zhǔn),每個過濾器都增加了解析和合成數(shù)據(jù)的工作,這樣就導(dǎo)致了系統(tǒng)性能下降,并增加了編寫過濾器的復(fù)雜性。以上介紹6個的常見軟件體系結(jié)構(gòu),它們各有不同的特點。在一個復(fù)雜的系統(tǒng)開發(fā)中,可以借鑒各種多種軟件體系結(jié)構(gòu),如B/S結(jié)構(gòu)也可以結(jié)合C/S結(jié)構(gòu)來構(gòu)建軟件系統(tǒng),靈活運用好體系結(jié)構(gòu),從而使用軟件開發(fā)過程更加快捷和高效上一頁返回6.2軟件體系架構(gòu)3.因為在數(shù)據(jù)傳輸上沒有通用的標(biāo)準(zhǔn),每個過6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計系統(tǒng)設(shè)計是把分析模型轉(zhuǎn)變成系統(tǒng)設(shè)計模型。在系統(tǒng)設(shè)計的過程中,系統(tǒng)設(shè)計人員定義項目的設(shè)計目標(biāo),并且將系統(tǒng)分解成能由單個團(tuán)隊實現(xiàn)的較小的子系統(tǒng)。系統(tǒng)設(shè)計人員也要選擇構(gòu)造系統(tǒng)的策略,比如系統(tǒng)運行的硬件/軟件平臺、持續(xù)數(shù)據(jù)管理策略、全局控制流、訪問控制方法以及邊界條件的處理。系統(tǒng)設(shè)計的結(jié)果是得到一個模型,包括上述各個策略的清晰描述、子系統(tǒng)的分解以及表示系統(tǒng)硬件/軟件映射的UML配置圖。系統(tǒng)設(shè)計不是設(shè)計算法,然而研究人員已經(jīng)開發(fā)出了一些固定的模式或方案來解決常見的問題,而且定義了符號來表達(dá)軟件結(jié)構(gòu),UML就是目前最流行的設(shè)計語言之一。在本節(jié)下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計系統(tǒng)設(shè)計是把分析模型轉(zhuǎn)變成系統(tǒng)6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計
中,我們首先提出這些構(gòu)造模塊,然后討論對這些模塊產(chǎn)生影響的設(shè)計活動。具體地說,系統(tǒng)設(shè)計包括:1.定義設(shè)計目標(biāo);2.分解系統(tǒng)為子系統(tǒng)或功能模塊;3.分析或選擇已開發(fā)組件和標(biāo)準(zhǔn)組件4.子系統(tǒng)映射到軟/硬件平臺;5.?dāng)?shù)據(jù)庫設(shè)計;6.定義訪問策略;7.設(shè)計系統(tǒng)流程。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 中,我們首先提出這些構(gòu)造模塊6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計分析模型從執(zhí)行者的角度完整地描述了系統(tǒng),并且充當(dāng)用戶和系統(tǒng)分析設(shè)計人員之間的交流基礎(chǔ),其分析過程如圖6-8所示。但是,分析模型不包括系統(tǒng)的內(nèi)部結(jié)構(gòu)信息,或者更一般地說,它的硬件配置不包括系統(tǒng)是如何實現(xiàn)的。系統(tǒng)設(shè)計是從內(nèi)部架構(gòu)整個系統(tǒng)的第一步。6.3.1定義系統(tǒng)設(shè)計目標(biāo)系統(tǒng)設(shè)計應(yīng)該得到如下結(jié)果:構(gòu)建整個軟件系統(tǒng)的體系結(jié)構(gòu),建立一系列反映系統(tǒng)設(shè)計人員實現(xiàn)整個系統(tǒng)的設(shè)計目標(biāo)。根據(jù)子系統(tǒng)的任務(wù)、子系統(tǒng)間相關(guān)性、子系統(tǒng)與軟/硬件平臺的映射和主要策略決定(如控制流、訪問控制和數(shù)據(jù)存儲)來描述子系統(tǒng)的分解,這也就是系統(tǒng)設(shè)計目標(biāo)。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計分析模型從執(zhí)行者的角度完整地描6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計系統(tǒng)設(shè)計目標(biāo)還包括非功能性需求,尤其是需要權(quán)衡非功能性需求和系統(tǒng)功能需求的時候,設(shè)計目標(biāo)可以幫助系統(tǒng)設(shè)計人員作出決定和取舍。系統(tǒng)設(shè)計的大部分內(nèi)容是子系統(tǒng)分解,即搭建整個系統(tǒng)的框架。為了處理復(fù)雜性,系統(tǒng)設(shè)計人員把系統(tǒng)分解成易于管理的任務(wù)段,把每個子系統(tǒng)分配給一個小組來獨立實現(xiàn)。但是為了使這些成為可能,系統(tǒng)設(shè)計人員在分解系統(tǒng)時需要面對整個系統(tǒng)范圍的問題。設(shè)計人員在系統(tǒng)設(shè)計中應(yīng)特別注意解決以下問題:1.應(yīng)用系統(tǒng)開發(fā)的軟/硬件平臺環(huán)境。2.?dāng)?shù)據(jù)庫設(shè)計3.定義訪問策略4.設(shè)計系統(tǒng)流程上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計系統(tǒng)設(shè)計目標(biāo)還包括非功能性需求6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計圖6-8描述了系統(tǒng)設(shè)計活動。每個活動解決上面描述過的一個問題。解決任何一個上述問題都會引起子系統(tǒng)分解中的變化并產(chǎn)生新的問題。系統(tǒng)設(shè)計是多次反復(fù)的活動,常會導(dǎo)致新的子系統(tǒng)的定義、已有子系統(tǒng)的改變以及影響所有子系統(tǒng)系統(tǒng)范圍的修改。6.3.2定義子系統(tǒng)和功能模塊為了減少應(yīng)用系統(tǒng)的復(fù)雜性,我們把更小的部分定義為類并且把它們封裝成包。類似地,為了減少求解域的復(fù)雜性,我們將系統(tǒng)分解成為子系統(tǒng),形成多個較小的組成部分,子系統(tǒng)就是由許多求解域的類組成的。對于復(fù)雜的子系統(tǒng),我們不斷地使用這個原理,將子系統(tǒng)分解成更為簡單的子系統(tǒng)。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計圖6-8描述了系統(tǒng)設(shè)計活動。每6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計在RationalRose中子系統(tǒng)要以用包或類來表示。學(xué)籍管理系統(tǒng)從需求分析可知整個應(yīng)用系統(tǒng)分為六個子系統(tǒng)。其中交費管理子系統(tǒng)(如圖6-9所示)又可以繼續(xù)進(jìn)行細(xì)分,因為交費管理主要是用來管理學(xué)費的交納情況,學(xué)費可以根據(jù)年級、年制、專業(yè)、學(xué)期不同來設(shè)置收費類型和收費標(biāo)準(zhǔn),所以在收費之前應(yīng)先設(shè)置收費類型和收費標(biāo)準(zhǔn),在VB中設(shè)置收費類型和收費標(biāo)準(zhǔn)可以做為一個單獨窗體類來設(shè)計,因此可命名為frmTuitionSet,同樣收取學(xué)費,學(xué)費類型明細(xì)及查詢,學(xué)生收費明細(xì),學(xué)生個人收費情況,學(xué)生收費查詢分別設(shè)計為frmTuitionCollect、frmTuitionSetBrow、frmTuitionSetQry、frmTuitionDetail、上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計在RationalRose中6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 frmTuitionStu等,由于系統(tǒng)需求中涉及收費打印,因此還要增加學(xué)生收費類型設(shè)置、學(xué)生收費明細(xì)報表來滿足收費打印的需要。圖6-9學(xué)籍管理交費子系統(tǒng)(UML類圖)的子系統(tǒng)分解包括包的組成和與主界面的構(gòu)成關(guān)系。子系統(tǒng)表示為UML包,虛線箭頭說明子系統(tǒng)與其他子系統(tǒng)或類之間的依賴關(guān)系。同時為了提高查詢效率,快速存取收費信息,也應(yīng)對收費信息實體類進(jìn)行設(shè)計劃分為收費類型和收費明細(xì)兩部分,相當(dāng)于數(shù)據(jù)庫中的兩個表。如圖6-10所示,示學(xué)費實體類可以繼續(xù)分解為數(shù)據(jù)表,即學(xué)費類型表示某年制某專業(yè)某年級某學(xué)期的收費標(biāo)準(zhǔn),交費信息表示某學(xué)生某學(xué)期的交費額和欠費客,以及交費日期和收費人。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 frmTuitionStu等6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計許多編程語言(比如Java和Modula-2)為子系統(tǒng)的建模(Java中的包,Modula-2中的模塊)提供了構(gòu)造方法。在其他語言中,比如C或者C++,沒有明確的建模子系統(tǒng),在這種情況下,系統(tǒng)設(shè)計人員按照習(xí)慣,對類進(jìn)行分組(比如,一個子系統(tǒng)可以表示成包含實現(xiàn)子系統(tǒng)的所有文件的目錄)。由于子系統(tǒng)通常是由不同的開發(fā)小組實現(xiàn)的,所以不管編程語言中是否明確表示了子系統(tǒng),系統(tǒng)設(shè)計人員都需要仔細(xì)地記錄子系統(tǒng)分解的文檔。1.服務(wù)和子系統(tǒng)接口根據(jù)一個子系統(tǒng)是通過為其他子系統(tǒng)提供的服務(wù)來確定其特點的。一個服務(wù)是一組有著共同目標(biāo)的相關(guān)操作。比如,某子系統(tǒng)提供數(shù)據(jù)訪問服務(wù),它可以定義訪問數(shù)據(jù)連接、直接上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計許多編程語言(比如Java和M6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計
訪問數(shù)據(jù)表服務(wù),檢查用戶權(quán)限等。學(xué)籍管理系統(tǒng)的公用模塊就是一個登錄管理子系統(tǒng)的一個類似的模塊,它為所有的子系統(tǒng)服務(wù)的一個子系統(tǒng),它主要是提供一個訪問數(shù)據(jù)層的接口,定義公用訪問數(shù)據(jù)庫的連接,定義全局性的變量和方法供各子系統(tǒng)使用(如圖6-11所示)。某子系統(tǒng)提供給其他子系統(tǒng)用的一組操作形成子系統(tǒng)接口。子系統(tǒng)接口也稱為應(yīng)用程序接口(API,ApplicationProgrammingInterface),包括操作的名稱、參數(shù)、類型和返回值。系統(tǒng)設(shè)計集中定義每個子系統(tǒng)提供的服務(wù),即列舉操作、參數(shù)和它們的高層行為。對象設(shè)計集中定義子系統(tǒng)的接口,即參數(shù)的類型和每個操作的返回值。這里也包括應(yīng)用軟件調(diào)用操作系統(tǒng)的函數(shù)接口。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 訪問數(shù)據(jù)表服務(wù),檢查用戶權(quán)限6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計以調(diào)用Windows系統(tǒng)API的SetWindowPos為例,函數(shù)功能:該函數(shù)改變一個子窗口,彈出式窗口式頂層窗口的尺寸,位置和Z序。子窗口,彈出式窗口,及頂層窗口根據(jù)它們在屏幕上出現(xiàn)的順序排序、頂層窗口設(shè)置的級別最高,并且被設(shè)置為Z序的第一個窗口。函數(shù)原型:PrivateDeclareFunctionSetWindowPosLib"user32"(ByValhwndAsLong,ByValhWndInsertAfterAsLong,ByValXAsLong,ByValYAsLong,ByValcxAsLong,ByValcyAsLong,ByValwFlagsAsLong)AsLong--上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計以調(diào)用Windows系統(tǒng)API6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計這樣我們就可以方便的實現(xiàn)一個簡單的系統(tǒng)功能,因此根據(jù)子系統(tǒng)提供的服務(wù)來對它進(jìn)行定義,有助于我們把注意力集中在接口上而不是實現(xiàn)上。一個好的子系統(tǒng)接口應(yīng)提供盡可能少的實現(xiàn)信息,這就使得修改子系統(tǒng)的實現(xiàn)時產(chǎn)生的影響最小。更一般地來說,我們希望通過減少子系統(tǒng)之間的依賴性來降低變化時的影響。2.子系統(tǒng)耦合度與相關(guān)性耦合度是兩個子系統(tǒng)之間依賴關(guān)系的強(qiáng)度。如果兩個子系統(tǒng)是松散耦合的,它們相互獨立,那么當(dāng)其中一個發(fā)生變化的時候?qū)α硗庖粋€產(chǎn)生的影響就很小。如果兩個子系統(tǒng)是緊密耦合的,其中一個發(fā)生的變化就可能對另外一個產(chǎn)生較大影響。子系統(tǒng)分解想要達(dá)到的一個目標(biāo)就是子系統(tǒng)間要盡可能地松散耦合,這就使得錯誤或潛在變化對系統(tǒng)的正確操作產(chǎn)生的影響達(dá)到最小。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計這樣我們就可以方便的實現(xiàn)一個簡6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計例如交費管理子系統(tǒng)和學(xué)生檔案管理子系統(tǒng),如果學(xué)生入學(xué)時既錄入學(xué)生信息又收取學(xué)費則兩個子系統(tǒng)的耦合性將增加(如圖6-12所示)。相關(guān)性是子系統(tǒng)內(nèi)部的依賴程序。如果某個子系統(tǒng)含有多個彼此相關(guān)的對象,并且它們執(zhí)行類似的任務(wù),它的相關(guān)性就比較高。整個系統(tǒng)被化分為更小的系統(tǒng)如學(xué)籍管理系統(tǒng),劃分六個子系統(tǒng)為學(xué)生檔案管理,成績管理、學(xué)費管理、課程管理、班級管理和用戶管理等子系統(tǒng),同時根據(jù)系統(tǒng)需求,我們還可以將數(shù)據(jù)管理抽象到兩個子系統(tǒng)中即系統(tǒng)實體子系統(tǒng)和,這樣得到的子系統(tǒng)要比原有子系統(tǒng)小:降低了復(fù)雜度。子系統(tǒng)之間的耦合度相對較低,因為兩個子系統(tǒng)之間上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計例如交費管理子系統(tǒng)和學(xué)生檔案管6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計
只有一個關(guān)系。共享大量數(shù)據(jù)的一種有效的方法就是允許兩個子系統(tǒng)通過屬性來互相訪問。通常在相關(guān)性和耦合度之間存在一個平衡。我們可以通過將系統(tǒng)不斷分解成子系統(tǒng)來增加系統(tǒng)的相關(guān)性。但是,隨著接口數(shù)量的增加,也會提高耦合度。一般情況下系統(tǒng)設(shè)計人員可以處理72個概念。如果給定任一抽象層具有超過9個概念或者有一個子系統(tǒng)提供超過9種服務(wù),則你應(yīng)該考慮改動子系統(tǒng)的分解。出于同樣的原因,層次的數(shù)量也不能超出72。事實上,許多好的系統(tǒng)設(shè)計只用三層就完成了。3.分層和分區(qū)上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 只有一個關(guān)系。共享大量數(shù)據(jù)的6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計系統(tǒng)設(shè)計的目標(biāo)是通過將系統(tǒng)分解成可管理的較小的部分來處理復(fù)雜度。這可以通過分而治之的方法解決,即我們循環(huán)地將各部分分解得非常簡單,直到能讓一個人或者一個小組處理為止。系統(tǒng)地使用這個方法就可以得到結(jié)構(gòu)化的分解,其中每個子系統(tǒng)或者每一層根據(jù)低層子系統(tǒng)提供的服務(wù)為高層服務(wù),每一層還可以向下一層訪問。學(xué)籍管理系統(tǒng)可以分別為三個層次(如圖6-13所示):(1).上層的登錄管理和主控界面。(2).中間層為各業(yè)務(wù)處理子系統(tǒng)。(3).底層為實體類層和報表層。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計系統(tǒng)設(shè)計的目標(biāo)是通過將系統(tǒng)分解6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計
系統(tǒng)設(shè)計是把分析模型轉(zhuǎn)變成設(shè)計模型,該模型考慮在問題描述和需求分析文檔中描述的非功能性需求和約束。前面主要考慮了子系統(tǒng)的分解和它們的屬性。本節(jié)描述子系統(tǒng)分解時必要的活動,以確保子系統(tǒng)分解能針對所有的非功能性需求并著手考慮實現(xiàn)階段的所有限制條件。6.3.3確定系統(tǒng)設(shè)計目標(biāo)前面講了許多關(guān)于系統(tǒng)設(shè)計的概念和一般方法,而定義設(shè)計目標(biāo)是系統(tǒng)設(shè)計的第一步,那些概念和方法都是為定義設(shè)計目標(biāo)服務(wù)。設(shè)計目標(biāo)給出了系統(tǒng)應(yīng)該重點考慮的質(zhì)量要求。許多設(shè)計目標(biāo)可以從非功能性需求或者應(yīng)用域推斷出來,上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 系統(tǒng)設(shè)計是把分析模型轉(zhuǎn)變成設(shè)6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計
其他的設(shè)計目標(biāo)必須從用戶那里得到。然而,必須明確說明設(shè)計目標(biāo),根據(jù)同一套標(biāo)準(zhǔn)使作出的每個重要的設(shè)計決定,并保持一致性。比如,根據(jù)需求描述中的的非功能性需求,我們應(yīng)把可靠性和連接丟失,容錯能力也作為設(shè)計目標(biāo)。然后再將安全性標(biāo)識為設(shè)計目標(biāo),因為有很多操作人員利用軟件系統(tǒng)讀取和存儲學(xué)生的有關(guān)信息。一般而言,我們可以從一系列非常想要達(dá)到的質(zhì)量要求中選擇設(shè)計目標(biāo)。通常把系統(tǒng)設(shè)計目標(biāo)分為五類:功能、性能、可靠性、費用和維護(hù)目標(biāo)。一般從需求中推斷出系統(tǒng)的功能、性能、可靠性。費用和維護(hù)目標(biāo)則由最終用戶(軟件系統(tǒng)購買者)和軟件供應(yīng)商(擬采購組件或軟件平臺供應(yīng)者)指定。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 其他的設(shè)計目標(biāo)必須從用戶那里6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計性能標(biāo)準(zhǔn)包括對系統(tǒng)的速度和空間需求。系統(tǒng)應(yīng)該是快速響應(yīng)的還是實現(xiàn)最多數(shù)量的任務(wù)?存儲器空間是用于速度優(yōu)化還是應(yīng)該節(jié)約使用?管理目標(biāo)可以用技術(shù)目標(biāo)平衡(比如,交付時間與功能性的平衡)。一旦我們對設(shè)計目標(biāo)有了清晰的認(rèn)識,就可以著手設(shè)計初始子系統(tǒng)的分解。下表(表6-1)就是針對學(xué)籍管理系統(tǒng)的設(shè)計目標(biāo)的一個定義。6.3.4確定子系統(tǒng)在系統(tǒng)設(shè)計的時候得到子系統(tǒng)與在分析的時候得到對象有很多相似之處:它是一項不斷摸索變化的活動。需求分析上的用例和角色識別技術(shù)適用于確定子系統(tǒng)。而且,無論什么時候提出了新的問題,都會導(dǎo)致子系統(tǒng)分解的修改;若干簡單上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計性能標(biāo)準(zhǔn)包括對系統(tǒng)的速度和空間6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計
的子系統(tǒng)合并到一個子系統(tǒng)中,復(fù)雜的子系統(tǒng)分解成多個部分,或為了實現(xiàn)新的功能而增加了子系統(tǒng)。確定子系統(tǒng)的分解要避免引起急劇的變化,并在設(shè)計之初就解決好這些問題。最初的子系統(tǒng)分解應(yīng)該來自功能性需求。比如,在學(xué)籍管理系統(tǒng)中,我們定義了學(xué)生檔案管理、學(xué)生成績管理、收費管理等子系統(tǒng)都是來自需求分析的用例即功能性需求。另外確定子系統(tǒng)的方法就是將功能相關(guān)的對象放在一起,作為獨立的功能或共享的模塊,被多個子系統(tǒng)所共享。再有就是把復(fù)雜的子系統(tǒng)分解為較為簡單的子系統(tǒng)。確定子系統(tǒng)的方法可歸納為以下幾個方面將一個用例中確定的對象,分配到同一個子系統(tǒng)中。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 的子系統(tǒng)合并到一個子系統(tǒng)中,6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計為兩個以上子系統(tǒng)傳遞數(shù)據(jù)或提供服務(wù)的對象,要創(chuàng)建一個專用的子系統(tǒng)。將子系統(tǒng)與子系統(tǒng)之間的關(guān)聯(lián)關(guān)系降到最小。同一個子系統(tǒng)內(nèi)的所有對象必須功能相關(guān),業(yè)務(wù)處理配合緊密。6.3.5數(shù)據(jù)管理設(shè)計系統(tǒng)數(shù)據(jù)管理也是一個復(fù)雜的任務(wù),數(shù)據(jù)管理設(shè)計就要處理系統(tǒng)中連續(xù)的,需要保存的各種數(shù)據(jù)。比如,某個作者使用字處理軟件將他的工作存入某個文件,以供重新打開文件使用。類似地,與學(xué)生相關(guān)的信息,他們的姓名、年齡、學(xué)費繳納情況、入學(xué)時間和在學(xué)期間課程成績等都存放在數(shù)據(jù)庫上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計為兩個以上子系統(tǒng)傳遞數(shù)據(jù)或提供6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計
管理系統(tǒng)中。這就允許所有使用學(xué)生信息數(shù)據(jù)的程序可以一致地運行。而且,將數(shù)據(jù)存儲在數(shù)據(jù)庫中能讓系統(tǒng)在大量數(shù)據(jù)集合(比如幾千個學(xué)生的記錄)中執(zhí)行比較復(fù)雜的查詢。當(dāng)前的數(shù)據(jù)存儲管理方式可以分為三種類型:1.普通文件2.關(guān)系型數(shù)據(jù)庫3.面向?qū)ο髷?shù)據(jù)庫數(shù)據(jù)存放的地點以及如何存放會對系統(tǒng)的分解產(chǎn)生影響。比如在有些情況下,學(xué)籍管理系統(tǒng)中的某個子系統(tǒng)專門用來建立數(shù)據(jù)庫連接和訪問數(shù)據(jù)。特定的數(shù)據(jù)庫管理系統(tǒng)的選擇也蘊含了總的控制策略和并發(fā)管理。以學(xué)籍管理系統(tǒng)為例,實體類的存儲采用關(guān)系型數(shù)據(jù)庫如下圖6-14所示上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 管理系統(tǒng)中。這就允許所有使用6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計6.3.6定義訪問控制在多用戶系統(tǒng)中,不同的操作者需要訪問不同的功能和數(shù)據(jù)。比如,每個操作者只能訪問他創(chuàng)建的數(shù)據(jù),但是系統(tǒng)管理員可以沒有限制地訪問系統(tǒng)數(shù)據(jù)和其他用戶的數(shù)據(jù)。分析時,通過將不同的用例與不同的操作者相聯(lián)系來為這些區(qū)別建模。在系統(tǒng)設(shè)計時,通過檢查對象模型,定義操作者共享哪些對象以及定義操作者如何控制訪問來為訪問建模。根據(jù)系統(tǒng)的安全性需求,還可以定義系統(tǒng)如何鑒別操作者(比如操作人員怎樣向系統(tǒng)證明他是誰)及如何為系統(tǒng)中選定的數(shù)據(jù)加密。比如在學(xué)籍管理系統(tǒng)中采用按用戶名和密碼驗證方式登錄軟件系統(tǒng),軟件系統(tǒng)根據(jù)用戶的已分配權(quán)限,控制其可以使用的上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計6.3.6定義訪問控制上一頁下6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計
功能和操作,用戶對系統(tǒng)的功能使用有著各種類型的權(quán)限劃分,既形成了不同的角色如表6-2所示,系統(tǒng)管理員是整個系統(tǒng)中管理權(quán)限最全的角色,它可以使用系統(tǒng)提供的各種功能。而一般人員只能實現(xiàn)對系統(tǒng)中查詢功能的使用。6.3.7設(shè)計全局控制流控制流是系統(tǒng)中操作和系統(tǒng)行為的先后次序。在面向?qū)ο蟮南到y(tǒng)中,活動的先后次序包括決定執(zhí)行哪些操作,以及按怎樣的次序執(zhí)行。這些決定基于由操作者或者隨著按時間順序所產(chǎn)生的外部事件。控制流是一個設(shè)計問題,在分析過程中,控制流程還不是主要問題,但在設(shè)計時應(yīng)考慮整個系統(tǒng)的控制流程。一般控制流程有三種方式包括過程驅(qū)動控制、事件驅(qū)動控制和線程實現(xiàn)控制。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 功能和操作,用戶對系統(tǒng)的功能6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計過程驅(qū)動的控制流程。系統(tǒng)設(shè)計是基于過程化語言設(shè)計的,或者系統(tǒng)設(shè)計是基于程序控制的,用戶沒有選擇的余地,只能按程序控制的步驟來實現(xiàn)各種操作。如Ms-Dos下命令行執(zhí)行模式中的應(yīng)用軟件程序,再如Windows中添加/刪除硬件向?qū)?,就是采用過程驅(qū)動的方式(如圖6-15所示)。事件驅(qū)動的控制流。系統(tǒng)設(shè)計基于等待與執(zhí)行的輪循的方式,最常用的Microsoft公司的Word和Excel應(yīng)用軟件,在實際操作中先后次序不明顯,而是由用戶事件到達(dá)次序來選擇。即用戶選擇什么操作,軟件做什么回應(yīng)和處理。以學(xué)籍管理系統(tǒng)為例,主控制界面類設(shè)計就是典型的事件驅(qū)動控制(如圖6-16所示)。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計過程驅(qū)動的控制流程。系統(tǒng)設(shè)計是6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計線程驅(qū)動的控制流。系統(tǒng)設(shè)計是基于并發(fā)運行機(jī)制的軟件系統(tǒng),系統(tǒng)可以創(chuàng)建多個線程,每個線程可以處理不同的事件或共同完成一個任務(wù),如Flashget,Netants等許多網(wǎng)絡(luò)下載軟件都采用線程驅(qū)動方式。過程驅(qū)動控制流方式設(shè)計速度快,實現(xiàn)相對簡單,測試比較容易,但對用戶來說操作不便利,開發(fā)與最終用戶相關(guān)的軟件系統(tǒng)應(yīng)避免采用這種方式;事件驅(qū)動的控制流方式便于用戶使用,設(shè)計較復(fù)雜,但有成熟的開發(fā)工具,是當(dāng)前主流的系統(tǒng)控制設(shè)計方式;線程實現(xiàn)控制流方式能更好地體現(xiàn)多用戶和多任務(wù)處理機(jī)制,但是在系統(tǒng)實現(xiàn)和系統(tǒng)測試方面則是相當(dāng)復(fù)雜,同時在開發(fā)工具和硬件選用上需要仔細(xì)斟酌。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計線程驅(qū)動的控制流。系統(tǒng)設(shè)計是基6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計6.3.8確定系統(tǒng)的功能范圍前面講述了子系統(tǒng)設(shè)計和對系統(tǒng)的分解,還需要檢查系統(tǒng)的系統(tǒng)功能范圍,也就是說,決定系統(tǒng)什么時候啟動、初始化和關(guān)閉,還要定義如何處理主要故障,比如由軟件錯誤或是由斷電引起的數(shù)據(jù)崩潰,因此還要增加系統(tǒng)管理用例,系統(tǒng)管理用例指定了系統(tǒng)在啟動和關(guān)閉階段的行為。通常的情況在分析階段不指定系統(tǒng)管理用例或者把它們單獨處理。一方面,許多系統(tǒng)管理功能可以從日常用戶需求(比如注冊和刪除用戶、管理訪問控制)中推斷出來;另一方面,許多功能是由設(shè)計決定的(比如高速緩存的大小、數(shù)據(jù)庫服務(wù)器上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計6.3.8確定系統(tǒng)的功能范圍上6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計
的位置、備份服務(wù)器的位置)而不是由需求決定的。如學(xué)籍管理管理中應(yīng)增加重新登錄,修改密碼及用戶名密碼長度限制等系統(tǒng)功能。檢查系統(tǒng)功能范圍時,我們也應(yīng)該調(diào)查一下異常情況。異常就是在系統(tǒng)運行過程中發(fā)生的意料外事件或錯誤。產(chǎn)生異常的原因是下列三種情況之一:1.用戶錯誤。用戶錯誤地或者故意地輸入超出邊界的數(shù)據(jù)。比如,如果系統(tǒng)不檢查錯誤的話,學(xué)生的年齡、成績等出現(xiàn)無法預(yù)料的錯誤。2.硬件錯誤。硬件老化并且發(fā)生故障。比如,網(wǎng)絡(luò)連接故障隨時可能會斷開系統(tǒng)兩個節(jié)點之間的聯(lián)系。硬盤崩潰可能會導(dǎo)致數(shù)據(jù)的永久性丟失。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 的位置、備份服務(wù)器的位置)而6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計3.軟件故障。如果系統(tǒng)或者系統(tǒng)的任何一個組件存在設(shè)計錯誤,則運行中都可能出錯。盡管編寫無錯誤的軟件非常困難,但是單個子系統(tǒng)能夠預(yù)料來自其他子系統(tǒng)的錯誤并加以防護(hù)。異常處理就是系統(tǒng)如何處置異常情況的機(jī)制。用戶發(fā)生錯誤時,系統(tǒng)應(yīng)該向用戶顯示意義明確的錯誤信息,軟件系統(tǒng)可以糾正錯誤的輸入。如果是網(wǎng)絡(luò)連接有問題,需要保存臨時狀態(tài)以便當(dāng)網(wǎng)絡(luò)恢復(fù)正常時,系統(tǒng)能夠回復(fù)到原來的狀態(tài)。因此在系統(tǒng)設(shè)計階段要綜合考慮這些因素如在學(xué)籍管理系統(tǒng)中增加系統(tǒng)的自動備份功能,軟件訪問數(shù)據(jù)的錯誤處理(OnErrorGotoLineMark<行號或行標(biāo)簽>或OnErrorResumeNext等)機(jī)制。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計3.軟件故障。如果系統(tǒng)或者系統(tǒng)6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計6.3.9系統(tǒng)配置設(shè)計與映射到軟/硬件平臺1.選擇硬件配置和平臺許多系統(tǒng)運行在多臺計算機(jī)上,并且組成局域網(wǎng)Intranet或連接互聯(lián)網(wǎng)Internet。使用多臺計算機(jī)提出了對連接的高性能要求,以及如何組織連接多個分散的用戶。因此,需要仔細(xì)檢查計算機(jī)子系統(tǒng)的位置并且認(rèn)真設(shè)計支持子系統(tǒng)間通信的基本設(shè)施。UML配置圖中把這些計算機(jī)建模成節(jié)點。節(jié)點可以表示一個特定的實例(比如計算機(jī)A、計算機(jī)B、服務(wù)器H),也可以表示一類計算機(jī)或設(shè)備(比如文件服務(wù)器、遠(yuǎn)程客戶機(jī)、打印機(jī)等)。由于硬件映射活動會對系統(tǒng)的性能和復(fù)雜度產(chǎn)生巨大的影響,故我們一般在系統(tǒng)設(shè)計的早期進(jìn)行這項活動。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計6.3.9系統(tǒng)配置設(shè)計與映射到6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計選擇硬件配置還包括選擇將系統(tǒng)建造在怎樣的虛擬機(jī)上。虛擬機(jī)包括操作系統(tǒng)和所有必要的軟件組件,比如數(shù)據(jù)庫管理系統(tǒng)和通信包。虛擬設(shè)備的選擇縮小了系統(tǒng)和系統(tǒng)運行的硬件平臺之間的距離。組件提供的功能越多,則涉及的工作越少。但是虛擬設(shè)備的選擇要受限于項目啟動前擁有硬件的顧客。虛擬設(shè)備的選擇可能還要考慮費用:在有些情況下,很難估計構(gòu)造一個組件的費用是否比購買一個組件的費用要高。在學(xué)籍管理系統(tǒng)中,我們從需求中推斷出必備的硬件設(shè)備(如圖6-17所示),包括教師專用計算機(jī)N臺、數(shù)據(jù)庫服務(wù)器、打印服務(wù)器及打印機(jī)等。其中學(xué)籍管理系統(tǒng)部署在教師專用計算機(jī)上,數(shù)據(jù)庫部署在專用的服務(wù)器上,打印服務(wù)器則不需要上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計選擇硬件配置還包括選擇將系統(tǒng)建6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計
設(shè)計開發(fā)專用的應(yīng)用軟件,操作系統(tǒng)為Windows系列操作系統(tǒng),其中服務(wù)器要求是WindowsNTServer4.0SP6或最近發(fā)布升級的服務(wù)器操作系統(tǒng)。2.將對象和子系統(tǒng)分配給節(jié)點一旦定義了硬件配置,選定了虛擬機(jī),對象和子系統(tǒng)就被分配給節(jié)點。為了在節(jié)點間傳送數(shù)據(jù),經(jīng)常會定義新的對象和子系統(tǒng)。一般來說,將子系統(tǒng)分配給硬件節(jié)點使得我們能夠?qū)⒐δ芎吞幚砟芰Ψ植嫉阶钚枰鼈兊牡胤?。但同樣也引起了與子系統(tǒng)間存儲、傳送、復(fù)制和同步數(shù)據(jù)相關(guān)的問題。因此,系統(tǒng)設(shè)計人員也選擇適用的組件和合理的組合關(guān)系,用來開發(fā)軟件系統(tǒng)。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 設(shè)計開發(fā)專用的應(yīng)用軟件,操作系統(tǒng)的總體設(shè)計課件6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計UML配置圖用來描述運行時組件和硬件節(jié)點間的關(guān)系。組件是為其他組件或執(zhí)行者提供服務(wù)的獨立實體。比如,學(xué)籍管理系統(tǒng)的組件圖根據(jù)需求分析,我們以VisualBasic為開發(fā)工具,其組件圖可設(shè)計如下(如圖6-18所示),這些為用戶提供服務(wù)的組件,組成了整個應(yīng)用軟件系統(tǒng)。在UML配置圖中,ADO是一組獨立的數(shù)據(jù)訪問組件,是微軟公司開發(fā)可以自由進(jìn)行發(fā)布的。微軟公司的ActiveXDataObjects(ADO)使您能夠編寫通過OLEDB提供者對在數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)進(jìn)行訪問和操作的應(yīng)用程序。其主要優(yōu)點是易于使用、高速度、低內(nèi)存支出和占用磁盤空間較少。ADO支持用于建立基于客戶端/服務(wù)器和Web的應(yīng)用程序的主要功能。另外ADO同時具有遠(yuǎn)程數(shù)據(jù)服務(wù)上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計UML配置圖用來描述運行時組件6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 (RemoteDataService–RDS)功能,通過RDS可以在一次往返過程中實現(xiàn)將數(shù)據(jù)從服務(wù)器移動到客戶端應(yīng)用程序或Web頁、在客戶端對數(shù)據(jù)進(jìn)行處理然后將更新結(jié)果返回服務(wù)器的操作,以便簡化客戶端數(shù)據(jù)的遠(yuǎn)程操作。VB運行支持庫組件是應(yīng)用程序為在安裝后能正確運行而必備的文件。VisualBasic應(yīng)用程序所用的VB運行支持庫包括:Msvbvm60.dll,Stdole2.tlb,Oleaut32.dll,Olepro32.dll,Comcat.dll,Asycfilt.dll,Ctl3d32.dll。打印機(jī)驅(qū)動程序則由硬件供應(yīng)廠商來提供,無需另行開發(fā)或設(shè)計,直接在軟件發(fā)布期間進(jìn)行安裝調(diào)試。上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 (RemoteData6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計圖6-19描述了教師專用機(jī)節(jié)點的組件的位置和組件間依賴關(guān)系。教師專用機(jī)節(jié)點包含了學(xué)籍管理系統(tǒng)中的主要組件如主程序、VB運行支持庫、ADO組件以及打印機(jī)驅(qū)動程序等。圖6-20描述數(shù)據(jù)庫服務(wù)器部署了Access數(shù)據(jù)庫文件,打印服務(wù)器部署了打印機(jī)驅(qū)動程序。硬件節(jié)點之間的關(guān)系參見圖6-17所示。隨著系統(tǒng)復(fù)雜度的增加和推上市場時間的縮短,開發(fā)人員非常愿意復(fù)用代碼并依靠供應(yīng)商提供的組件。比如,交互式系統(tǒng)很少從零做起,而寧愿使用那些提供很多對話框、窗口、按鈕或其他標(biāo)準(zhǔn)接口對象的用戶接口工具包。其他項目只上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計圖6-19描述了教師專用機(jī)節(jié)點6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計側(cè)重于重做現(xiàn)有系統(tǒng)的一部分。比如團(tuán)體信息系統(tǒng),設(shè)計和構(gòu)建的代價很高,需要升級新的用戶硬件。通常只將系統(tǒng)的客戶端用新技術(shù)升級而系統(tǒng)的后端不動,不管是處理現(xiàn)行組件還是處理遺留下來的代碼,開發(fā)人員都需要處理現(xiàn)已有的代碼,而這些代碼他們即無法修改,也無法集成進(jìn)他們的系統(tǒng)。我們可以通過封裝現(xiàn)有組件(如代碼)來處理它們。這個方法的優(yōu)點將系統(tǒng)從封裝代碼中分離出來,以此減小現(xiàn)有軟件對設(shè)計的影響。當(dāng)封裝代碼與新系統(tǒng)的代碼用同一種語言編寫時,可以用適配器模式來完成。進(jìn)程間的通信協(xié)議(比如管道和套接字)常常是由操作系統(tǒng)提供的,因此與編程語言無關(guān)。對于使用分布式組件和進(jìn)程上一頁下一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計側(cè)重于重做現(xiàn)有系統(tǒng)的一部分。比6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計
通信的情況,調(diào)用服務(wù)的開銷要比在同一個進(jìn)程中發(fā)送消息的開銷高得多。當(dāng)選定響應(yīng)時間和其他性能設(shè)計目標(biāo)后,需要仔細(xì)評價采購和使用現(xiàn)有組件對整個系統(tǒng)性能所產(chǎn)生的影響。上一頁返回6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計 通信的情況,調(diào)用服務(wù)的開銷要6.4總體設(shè)計報告系統(tǒng)設(shè)計的管理主要挑戰(zhàn)在于維護(hù)一致性,同時利用盡可能多的資源,系統(tǒng)設(shè)計報告(SoftwareDesignedDocument–SDD)就是完整、一致地詳細(xì)記錄系統(tǒng)設(shè)計的最新成果,在系統(tǒng)設(shè)計的最后階段,系統(tǒng)設(shè)計報告將軟件體系結(jié)構(gòu)和系統(tǒng)接口描述成為開發(fā)人員能夠理解的一個完整而且一致的系統(tǒng)。形成完整的系統(tǒng)設(shè)計報告,首先要有記錄系統(tǒng)結(jié)果的文件模板,其次記錄系統(tǒng)設(shè)計中的任務(wù)分配和系統(tǒng)設(shè)計中的各方成果,最后按照一定的結(jié)構(gòu)形成系統(tǒng)設(shè)計報告。系統(tǒng)設(shè)計報告在初始系統(tǒng)分解時就應(yīng)該開始編寫,而不是在所有的系統(tǒng)設(shè)計確定之后才進(jìn)行編寫,設(shè)計決策變更或發(fā)現(xiàn)問題都要修改系統(tǒng)設(shè)計報告,系統(tǒng)設(shè)計報告也應(yīng)有相應(yīng)的版本控制,記錄修改的簡要描述、修改的作者、修改的日期等。下一頁返回6.4總體設(shè)計報告系統(tǒng)設(shè)計的管理主要挑戰(zhàn)在于維護(hù)一致性,同時6.4總體設(shè)計報告6.4.1系統(tǒng)設(shè)計報告內(nèi)容系統(tǒng)設(shè)計記錄在系統(tǒng)設(shè)計報告中,它通過項目、子系統(tǒng)分解、硬件/軟件映射、數(shù)據(jù)管理、訪問控制、全局控制流機(jī)制、功能范圍和設(shè)計標(biāo)準(zhǔn)等來描述系統(tǒng)設(shè)計目標(biāo)。系統(tǒng)設(shè)計報告還用于定義開發(fā)小組間的接口,并作為需要重新評價體系結(jié)構(gòu)層次的決策時的參考。系統(tǒng)設(shè)計報告的讀者包括項目經(jīng)理、系統(tǒng)設(shè)計人員(比如參與系統(tǒng)設(shè)計的開發(fā)人員)和設(shè)計實現(xiàn)每個子系統(tǒng)的開發(fā)人員。系統(tǒng)設(shè)計報告的具體內(nèi)容參看附錄。6.4.2系統(tǒng)設(shè)計報告的不斷優(yōu)化上一頁下一頁返回6.4總體設(shè)計報告6.4.1系統(tǒng)設(shè)計報告內(nèi)容上一頁下一頁返回6.4總體設(shè)計報告與需求階段一樣,系統(tǒng)設(shè)計在不斷的反復(fù)和變化中進(jìn)行。但是應(yīng)該控制變化,以避免混亂,尤其是在有多個參與者的復(fù)雜項目中。系統(tǒng)設(shè)計報告要完整記錄系統(tǒng)設(shè)計的架構(gòu)思路、保證體現(xiàn)系統(tǒng)設(shè)計的最新版本。由于每個系統(tǒng)設(shè)計活動可能同時被啟動,系統(tǒng)設(shè)計早期的主要決策且會影響子系統(tǒng)的分解,當(dāng)評估原型用于評估特定問題時,子系統(tǒng)的接口將會發(fā)生變化,后期發(fā)現(xiàn)的錯誤和疏漏會引起子系統(tǒng)接口的變化,有時會改變系統(tǒng)分解自身,因此要保證設(shè)計報告的不斷優(yōu)化和更新。系統(tǒng)設(shè)計報告的優(yōu)化應(yīng)注意以下幾個方面的問題。1.設(shè)計人員掌握整個系統(tǒng)是一個過程,各種定義和模型仍然不斷變化,必須以形式或過程為代價最大限度地進(jìn)行交流。上一頁下一頁返回6.4總體設(shè)計報告與需求階段一樣,系統(tǒng)設(shè)計在不斷的反復(fù)和變化6.4總體設(shè)計報告在基于小組的項目中,最初的系統(tǒng)分解通常在完成分析是時就設(shè)計好了。分解系統(tǒng)就可以將不同子系統(tǒng)的任務(wù)分配給不同的小組,因此系統(tǒng)設(shè)計報告優(yōu)化是一個不斷整合的過程,系統(tǒng)報告應(yīng)能夠適應(yīng)設(shè)計的變化,避免將來在詳細(xì)設(shè)計和實現(xiàn)時出現(xiàn)理解上的不一致。2.系統(tǒng)設(shè)計報告對于需要解決的困難和關(guān)注的問題要進(jìn)行細(xì)致描述和變化跟蹤,比如特定供應(yīng)商的軟件產(chǎn)品或技術(shù)的選擇,子系統(tǒng)是否穩(wěn)定,特定的包或組件是否適于系統(tǒng)。在此期間,設(shè)計人員還應(yīng)該對關(guān)鍵用例測試其分解的適當(dāng)性。系統(tǒng)設(shè)計報告還可以幫助設(shè)計人員盡可能早地發(fā)現(xiàn)控制流中的問題并加以解決。上一頁下一頁返回6.4總體設(shè)計報告在基于小組的項目中,最初的系統(tǒng)分解通常在完6.4總體設(shè)計報告3.編寫系統(tǒng)設(shè)計報告也要追蹤需求變化,從而減少在開發(fā)實現(xiàn)中可能出現(xiàn)的反復(fù)糾正。記錄設(shè)計過程的詳細(xì)變化,要認(rèn)真與需求分析人員、開發(fā)人員進(jìn)行交流,修正系統(tǒng)設(shè)計中瑕疵,避免在開發(fā)過程中出現(xiàn)反復(fù),特別是對子系統(tǒng)記錄要保持一定的獨立性,避免設(shè)計報告中出現(xiàn)混亂。上一頁返回6.4總體設(shè)計報告3.編寫系統(tǒng)設(shè)計報告也要追蹤需求變化,從而圖6-1倉庫體系結(jié)構(gòu)的軟件系統(tǒng)(UML類圖)
返回圖6-1倉庫體系結(jié)構(gòu)的軟件系統(tǒng)(UML類圖)返回圖6-2模型/視圖/控制器體系結(jié)構(gòu)返回圖6-2模型/視圖/控制器體系結(jié)構(gòu)返回圖6-3客戶/服務(wù)器體系結(jié)構(gòu)返回圖6-3客戶/服務(wù)器體系結(jié)構(gòu)返回圖6-4三層C/S結(jié)構(gòu)示意圖返回圖6-4三層C/S結(jié)構(gòu)示意圖返回圖6-5B/S結(jié)構(gòu)示意圖返回圖6-5B/S結(jié)構(gòu)示意圖返回圖6-6對等體系結(jié)構(gòu)示意圖返回圖6-6對等體系結(jié)構(gòu)示意圖返回圖6-7管道和過濾器體系結(jié)構(gòu)(UML類圖)
返回子系統(tǒng)3子系統(tǒng)1子系統(tǒng)2過濾器過濾器過濾器管道管道輸入輸出輸入輸出圖6-7管道和過濾器體系結(jié)構(gòu)(UML類圖)返回子系統(tǒng)3子系圖6-8系統(tǒng)總體設(shè)計活動圖返回圖6-8系統(tǒng)總體設(shè)計活動圖返回圖6-9學(xué)籍管理交費子系統(tǒng)分解返回圖6-9學(xué)籍管理交費子系統(tǒng)分解返回圖6-10學(xué)費信息分解示意圖返回圖6-10學(xué)費信息分解示意圖返回圖6-11服務(wù)與子系統(tǒng)接口示意圖返回圖6-11服務(wù)與子系統(tǒng)接口示意圖返回圖6-12學(xué)生交費子系統(tǒng)與學(xué)生檔案管理子系統(tǒng)示意圖返回圖6-12學(xué)生交費子系統(tǒng)與學(xué)生檔案管理子系統(tǒng)示意圖返回圖6-13學(xué)籍管理系統(tǒng)的分層設(shè)計返回圖6-13學(xué)籍管理系統(tǒng)的分層設(shè)計返回圖6-14利用ADO組件進(jìn)行數(shù)據(jù)訪問存取示意圖返回圖6-14利用ADO組件進(jìn)行數(shù)據(jù)訪問存取示意圖返回圖6-15過程驅(qū)動的設(shè)計返回圖6-15過程驅(qū)動的設(shè)計返回圖6-16學(xué)籍管理系統(tǒng)的事件驅(qū)動設(shè)計示例返回下一頁圖6-16學(xué)籍管理系統(tǒng)的事件驅(qū)動設(shè)計示例返回下一頁圖6-16學(xué)籍管理系統(tǒng)的事件驅(qū)動設(shè)計示例返回上一頁圖6-16學(xué)籍管理系統(tǒng)的事件驅(qū)動設(shè)計示例返回上一頁圖6-17學(xué)籍管理系統(tǒng)硬件配置圖返回圖6-17學(xué)籍管理系統(tǒng)硬件配置圖返回圖6-18學(xué)籍管理系統(tǒng)組件圖返回圖6-18學(xué)籍管理系統(tǒng)組件圖返回圖6-19含有組件的節(jié)點配置圖返回圖6-19含有組件的節(jié)點配置圖返回圖6-20含有組件的節(jié)點配置圖返回圖6-20含有組件的節(jié)點配置圖返回表6-1學(xué)籍管理系統(tǒng)設(shè)計目標(biāo)明細(xì)表返回下一頁表6-1學(xué)籍管理系統(tǒng)設(shè)計目標(biāo)明細(xì)表返回下一頁表6-1學(xué)籍管理系統(tǒng)設(shè)計目標(biāo)明細(xì)表返回上一頁表6-1學(xué)籍管理系統(tǒng)設(shè)計目標(biāo)明細(xì)表返回上一頁表6-2學(xué)籍管理系統(tǒng)用戶訪問控制權(quán)限明細(xì)表返回√:為指定欄目內(nèi)的全部功能表6-2學(xué)籍管理系統(tǒng)用戶訪問控制權(quán)限明細(xì)表返回√:為指第六章系統(tǒng)的總體設(shè)計6.1系統(tǒng)設(shè)計概述6.2軟件體系架構(gòu)6.3子系統(tǒng)設(shè)計和訪問控制設(shè)計6.4總體設(shè)計報告第六章系統(tǒng)的總體設(shè)計6.1系統(tǒng)設(shè)計概述6.1系統(tǒng)設(shè)計概述系統(tǒng)設(shè)計包括總體設(shè)計和詳細(xì)設(shè)計兩部分。系統(tǒng)設(shè)計是把分析模型轉(zhuǎn)變成系統(tǒng)設(shè)計模型的過程。1.系統(tǒng)設(shè)計的目標(biāo)系統(tǒng)設(shè)計的任務(wù)是依據(jù)系統(tǒng)的邏輯模型,結(jié)合實際情況,設(shè)計出一個能在計算機(jī)系統(tǒng)上實現(xiàn)的具體設(shè)計方案,即新系統(tǒng)的物理模型。系統(tǒng)設(shè)計的目標(biāo)應(yīng)從以下幾個方面進(jìn)行考慮。(1).系統(tǒng)的可靠性(2).系統(tǒng)的可維護(hù)性(3).系統(tǒng)的用戶友好性(4).系統(tǒng)的工作效率(5).系統(tǒng)的合法性下一頁返回6.1系統(tǒng)設(shè)計概述系統(tǒng)設(shè)計包括總體設(shè)計和詳細(xì)設(shè)計兩部分。系統(tǒng)6.1系統(tǒng)設(shè)計概述(6).系統(tǒng)的經(jīng)濟(jì)性2.系統(tǒng)設(shè)計的內(nèi)容系統(tǒng)設(shè)計的內(nèi)容可分為總體設(shè)計和詳細(xì)設(shè)計兩部分。具體包括如下內(nèi)容:(1).系統(tǒng)配置設(shè)計設(shè)計人員根據(jù)系統(tǒng)分析報告中所確定的系統(tǒng)目標(biāo)、功能、性能、環(huán)境與制約條件,確定合適的計算機(jī)處理方式及體系結(jié)構(gòu),確定合適的計算機(jī)系統(tǒng)具體配置。(2).子系統(tǒng)和功能模塊設(shè)計根據(jù)系統(tǒng)分析階段得到的數(shù)據(jù)流程圖和數(shù)據(jù)詞典,設(shè)計出子系統(tǒng)和功能模塊結(jié)構(gòu)圖,明確它們之間的相互關(guān)系。上一頁下一頁返回6.1系統(tǒng)設(shè)計概述(6).系統(tǒng)的經(jīng)濟(jì)性上一頁下一頁返回6.1系統(tǒng)設(shè)計概述(3).對象設(shè)計根據(jù)系統(tǒng)分析報告設(shè)計出管理信息系統(tǒng)中用到的各種對象,確定對象類型、屬性、操作、服務(wù)及方法等,并形成對象設(shè)計文檔。如產(chǎn)品、往來客戶、職工及業(yè)務(wù)處理等各類對象的設(shè)計。(4).?dāng)?shù)據(jù)庫設(shè)計根據(jù)系統(tǒng)分析報告與系統(tǒng)的硬件、軟件配置,進(jìn)行數(shù)據(jù)庫的概念設(shè)計、邏輯設(shè)計、物理設(shè)計,設(shè)計出系統(tǒng)有關(guān)的數(shù)據(jù)庫文件、數(shù)據(jù)庫結(jié)構(gòu)、存取路徑、存取方式等。(5).輸入/輸出設(shè)計根據(jù)系統(tǒng)的目標(biāo)、用戶的使用習(xí)慣及使用的方便,確定系統(tǒng)輸入的內(nèi)容、輸入格式、輸入方式與輸入校驗;完成系統(tǒng)輸出的內(nèi)容、輸出格式及輸出方式等內(nèi)容的具體設(shè)計。上一頁下一頁返回6.1系統(tǒng)設(shè)計概述(3).對象設(shè)計根據(jù)系統(tǒng)分析報告設(shè)計出管理6.1系統(tǒng)設(shè)計概述(6).業(yè)務(wù)邏輯處理設(shè)計對系統(tǒng)中每一業(yè)務(wù)事項的詳細(xì)處理過程進(jìn)行描述,編寫業(yè)務(wù)流程圖、處理方法和處理順序等,作為設(shè)計開發(fā)詳細(xì)設(shè)計和實現(xiàn)主要依據(jù)。(7).編寫系統(tǒng)設(shè)計報告根據(jù)系統(tǒng)設(shè)計階段所完成的總體設(shè)計及詳細(xì)設(shè)計內(nèi)容,以書面的形式編寫符合要求的系統(tǒng)設(shè)計報告。系統(tǒng)設(shè)計報告既是系統(tǒng)設(shè)計階段的主要成果,經(jīng)過審查批準(zhǔn)后又是系統(tǒng)實施階段的主要技術(shù)依據(jù)。以上內(nèi)容的設(shè)計在系統(tǒng)設(shè)計階段是按照一定的先后次序進(jìn)行的,一般是先進(jìn)行系統(tǒng)配置設(shè)計或系統(tǒng)架構(gòu)設(shè)計,形成系統(tǒng)設(shè)計報告。再進(jìn)行詳細(xì)設(shè)計包括細(xì)化對象設(shè)計、數(shù)據(jù)庫設(shè)計、輸入設(shè)計、輸出設(shè)計、模塊處理過程設(shè)計等具體內(nèi)容,最后再編寫詳細(xì)設(shè)計文檔。上一頁返回6.1系統(tǒng)設(shè)計概述(6).業(yè)務(wù)邏輯處理設(shè)計對系統(tǒng)中每一業(yè)務(wù)事6.2軟件體系架構(gòu)隨著系統(tǒng)復(fù)雜度的增加,系統(tǒng)分解的說明就變得相當(dāng)關(guān)鍵。一旦開始進(jìn)行開發(fā),就很難修改或者糾正一個不好的分解,因為這樣大多數(shù)子系統(tǒng)的接口就必須改動。為了認(rèn)識到這個問題的重要性,出現(xiàn)了軟件體系結(jié)構(gòu)的概念。軟件體系結(jié)構(gòu)包括系統(tǒng)分解、全局控制流、錯誤處理策略和子系統(tǒng)間的通信協(xié)議。本節(jié)介紹一些典型的不同的體系結(jié)構(gòu),并簡要介紹不同軟件體系結(jié)構(gòu)的設(shè)計思路。具有代表性的軟件體系結(jié)構(gòu)包括倉庫體系結(jié)構(gòu)、MVC體系結(jié)構(gòu)、客戶/服務(wù)器體系結(jié)構(gòu)、B/S結(jié)構(gòu)、對等體系結(jié)構(gòu)和管道過濾器結(jié)構(gòu)等。下一頁返回6.2軟件體系架構(gòu)隨著系統(tǒng)復(fù)雜度的增加,系統(tǒng)分解的說明就變得6.2軟件體系架構(gòu)6.2.1倉庫體系結(jié)構(gòu)(RepositoryArchitecture)在倉庫體系結(jié)構(gòu)(如圖6-1所示)中,子系統(tǒng)通過一個稱為中心倉庫的單一數(shù)據(jù)結(jié)構(gòu)訪問并修改數(shù)據(jù)。子系統(tǒng)相對獨立而且只通過中心數(shù)據(jù)結(jié)構(gòu)相互作用?;蛘咄ㄟ^中心倉庫(例如數(shù)據(jù)中的觸發(fā)器調(diào)用外設(shè))或者通過子系統(tǒng)(例如,通過倉庫的鎖來實現(xiàn)控制流的獨立和同步)來命令控制流。每個子系統(tǒng)只依賴于倉庫中心數(shù)據(jù)結(jié)構(gòu)。而倉庫并不清楚其他子系統(tǒng)。對于像工資系統(tǒng)、學(xué)籍管理系統(tǒng)和銀行系統(tǒng)這樣的數(shù)據(jù)庫管理系統(tǒng)來說,倉庫體系結(jié)構(gòu)是比較典型的。以數(shù)據(jù)為中心易于處理子系統(tǒng)間的并發(fā)和完整性問題。倉庫子系上一頁下一頁返回6.2軟件體系架構(gòu)6.2.1倉庫體系結(jié)構(gòu)(Repositor6.2軟件體系架構(gòu)
統(tǒng)可以實現(xiàn)全局控制流。用戶可以調(diào)用其中的每個界面,倉庫體系結(jié)構(gòu)也適用于處理任務(wù)不斷改變的復(fù)雜的應(yīng)用系統(tǒng)。但是倉庫子系統(tǒng)的主要缺點是子系統(tǒng)與倉庫之間耦合度很高,對倉庫數(shù)據(jù)結(jié)構(gòu)的修改必然會影響到子系統(tǒng)。6.6.2模型/視圖/控制器體系結(jié)構(gòu)(ModelViewControl--MVCArchitecture)在模型/視圖/控制器(MVC)體系結(jié)構(gòu)(見圖6-2)中,子系統(tǒng)分為三種不同的類型:模型子系統(tǒng)負(fù)責(zé)維護(hù)系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)信息;視圖子系統(tǒng)負(fù)責(zé)把系統(tǒng)數(shù)據(jù)信息顯示給用上一頁下一頁返回6.2軟件體系架構(gòu) 統(tǒng)可以實現(xiàn)全局控制流。用戶可以調(diào)用其中的6.2軟件體系架構(gòu)
戶;控制器子系統(tǒng)負(fù)責(zé)管理與用戶交互的順序。模型子系統(tǒng)發(fā)展成完全不依賴于任何視圖或控制器子系統(tǒng)。它們狀態(tài)的變化通過訂閱/通知(subscription/notification)協(xié)議傳輸給視圖子系統(tǒng)。MVC體系結(jié)構(gòu)是倉庫體系結(jié)構(gòu)的特例,模型實現(xiàn)了中心數(shù)據(jù)結(jié)構(gòu),控制對象指揮著控制流。這種體系結(jié)構(gòu)經(jīng)常用于WEB服務(wù)器系統(tǒng)設(shè)計??刂破魇占瘉碜杂脩舻妮斎氩l(fā)消息給模型。模型保持中心數(shù)據(jù)結(jié)構(gòu)。視圖顯示模型,每當(dāng)模型發(fā)生變化時得到通知(通過簽署/通知協(xié)議)。MVC體系結(jié)構(gòu)將交互式應(yīng)用程序分為三個區(qū)域:輸入、處理和輸出。模型組件封裝了內(nèi)核數(shù)據(jù)和功能。模型獨立于特定輸出表示法或輸入方式。上一頁下一頁返回6.2軟件體系架構(gòu) 戶;控制器子系統(tǒng)負(fù)責(zé)管理與用戶交互的順序6.2軟件體系架構(gòu)視圖組件子系統(tǒng)向用戶顯示信息。視圖從模型獲得數(shù)據(jù)??赡苡心P偷亩鄠€視圖。每個視圖都有一個相關(guān)的控制器組件。控制器接受輸入,通常作為將鼠標(biāo)移動、鼠標(biāo)按鈕的活動或鍵盤輸入編碼的事件。事件被翻譯成模型或視圖的服務(wù)器請求。用戶僅僅通過控制器與系統(tǒng)交互。模型與視圖和控制器組件的分離將允許同一個模型的多個視圖。如果用戶通過一個視圖的控制器改變了模型,所有依賴于該數(shù)據(jù)的其他視圖應(yīng)該反映出這種變化。因此一旦模型的數(shù)據(jù)發(fā)生了變化,模型要通報所有視圖。視圖反過來從模型恢復(fù)新數(shù)據(jù)并更新所顯示的信息。這種變更-傳播機(jī)制相當(dāng)于訂閱—發(fā)行。上一頁下一頁返回6.2軟件體系架構(gòu)視圖組件子系統(tǒng)向
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 截根拿涎療法活動方案
- 戶外健康野炊活動方案
- 戶外勞動體驗活動方案
- 戶外天幕拓展活動方案
- 戶外旅行茶室活動方案
- 戶外活動引流活動方案
- 戶外烘培活動方案
- 戶外藝術(shù)尋寶活動方案
- 戶外走秀大賽活動方案
- 戶外集中營業(yè)活動方案
- 信息安全培訓(xùn)《釣魚郵件防范技巧》
- 2025至2030中國燙印箔行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 部編版高一語文必修上冊教案計劃
- 臨時工請假管理制度
- 小學(xué)用電安全課件
- 2025年北京市高考英語試卷真題(含答案解析)
- 2025年中國浮萍項目投資可行性研究報告
- 商洛學(xué)院《大學(xué)學(xué)術(shù)綜合英語》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年高考英語全國二卷聽力試題答案詳解講解(課件)
- 高級采氣工理論練習(xí)卷附答案
- 國開電大【管理英語3單元自測1-8答案】+【管理英語4形考任務(wù)單元自測1-8答案】
評論
0/150
提交評論