系統(tǒng)的總體設計課件_第1頁
系統(tǒng)的總體設計課件_第2頁
系統(tǒng)的總體設計課件_第3頁
系統(tǒng)的總體設計課件_第4頁
系統(tǒng)的總體設計課件_第5頁
已閱讀5頁,還剩187頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第六章系統(tǒng)的總體設計6.1系統(tǒng)設計概述6.2軟件體系架構6.3子系統(tǒng)設計和訪問控制設計6.4總體設計報告第六章系統(tǒng)的總體設計6.1系統(tǒng)設計概述6.1系統(tǒng)設計概述系統(tǒng)設計包括總體設計和詳細設計兩部分。系統(tǒng)設計是把分析模型轉變成系統(tǒng)設計模型的過程。1.系統(tǒng)設計的目標系統(tǒng)設計的任務是依據系統(tǒng)的邏輯模型,結合實際情況,設計出一個能在計算機系統(tǒng)上實現的具體設計方案,即新系統(tǒng)的物理模型。系統(tǒng)設計的目標應從以下幾個方面進行考慮。(1).系統(tǒng)的可靠性(2).系統(tǒng)的可維護性(3).系統(tǒng)的用戶友好性(4).系統(tǒng)的工作效率(5).系統(tǒng)的合法性下一頁返回6.1系統(tǒng)設計概述系統(tǒng)設計包括總體設計和詳細設計兩部分。系統(tǒng)6.1系統(tǒng)設計概述(6).系統(tǒng)的經濟性2.系統(tǒng)設計的內容系統(tǒng)設計的內容可分為總體設計和詳細設計兩部分。具體包括如下內容:(1).系統(tǒng)配置設計設計人員根據系統(tǒng)分析報告中所確定的系統(tǒng)目標、功能、性能、環(huán)境與制約條件,確定合適的計算機處理方式及體系結構,確定合適的計算機系統(tǒng)具體配置。(2).子系統(tǒng)和功能模塊設計根據系統(tǒng)分析階段得到的數據流程圖和數據詞典,設計出子系統(tǒng)和功能模塊結構圖,明確它們之間的相互關系。上一頁下一頁返回6.1系統(tǒng)設計概述(6).系統(tǒng)的經濟性上一頁下一頁返回6.1系統(tǒng)設計概述(3).對象設計根據系統(tǒng)分析報告設計出管理信息系統(tǒng)中用到的各種對象,確定對象類型、屬性、操作、服務及方法等,并形成對象設計文檔。如產品、往來客戶、職工及業(yè)務處理等各類對象的設計。(4).數據庫設計根據系統(tǒng)分析報告與系統(tǒng)的硬件、軟件配置,進行數據庫的概念設計、邏輯設計、物理設計,設計出系統(tǒng)有關的數據庫文件、數據庫結構、存取路徑、存取方式等。(5).輸入/輸出設計根據系統(tǒng)的目標、用戶的使用習慣及使用的方便,確定系統(tǒng)輸入的內容、輸入格式、輸入方式與輸入校驗;完成系統(tǒng)輸出的內容、輸出格式及輸出方式等內容的具體設計。上一頁下一頁返回6.1系統(tǒng)設計概述(3).對象設計根據系統(tǒng)分析報告設計出管理6.1系統(tǒng)設計概述(6).業(yè)務邏輯處理設計對系統(tǒng)中每一業(yè)務事項的詳細處理過程進行描述,編寫業(yè)務流程圖、處理方法和處理順序等,作為設計開發(fā)詳細設計和實現主要依據。(7).編寫系統(tǒng)設計報告根據系統(tǒng)設計階段所完成的總體設計及詳細設計內容,以書面的形式編寫符合要求的系統(tǒng)設計報告。系統(tǒng)設計報告既是系統(tǒng)設計階段的主要成果,經過審查批準后又是系統(tǒng)實施階段的主要技術依據。以上內容的設計在系統(tǒng)設計階段是按照一定的先后次序進行的,一般是先進行系統(tǒng)配置設計或系統(tǒng)架構設計,形成系統(tǒng)設計報告。再進行詳細設計包括細化對象設計、數據庫設計、輸入設計、輸出設計、模塊處理過程設計等具體內容,最后再編寫詳細設計文檔。上一頁返回6.1系統(tǒng)設計概述(6).業(yè)務邏輯處理設計對系統(tǒng)中每一業(yè)務事6.2軟件體系架構隨著系統(tǒng)復雜度的增加,系統(tǒng)分解的說明就變得相當關鍵。一旦開始進行開發(fā),就很難修改或者糾正一個不好的分解,因為這樣大多數子系統(tǒng)的接口就必須改動。為了認識到這個問題的重要性,出現了軟件體系結構的概念。軟件體系結構包括系統(tǒng)分解、全局控制流、錯誤處理策略和子系統(tǒng)間的通信協議。本節(jié)介紹一些典型的不同的體系結構,并簡要介紹不同軟件體系結構的設計思路。具有代表性的軟件體系結構包括倉庫體系結構、MVC體系結構、客戶/服務器體系結構、B/S結構、對等體系結構和管道過濾器結構等。下一頁返回6.2軟件體系架構隨著系統(tǒng)復雜度的增加,系統(tǒng)分解的說明就變得6.2軟件體系架構6.2.1倉庫體系結構(RepositoryArchitecture)在倉庫體系結構(如圖6-1所示)中,子系統(tǒng)通過一個稱為中心倉庫的單一數據結構訪問并修改數據。子系統(tǒng)相對獨立而且只通過中心數據結構相互作用?;蛘咄ㄟ^中心倉庫(例如數據中的觸發(fā)器調用外設)或者通過子系統(tǒng)(例如,通過倉庫的鎖來實現控制流的獨立和同步)來命令控制流。每個子系統(tǒng)只依賴于倉庫中心數據結構。而倉庫并不清楚其他子系統(tǒng)。對于像工資系統(tǒng)、學籍管理系統(tǒng)和銀行系統(tǒng)這樣的數據庫管理系統(tǒng)來說,倉庫體系結構是比較典型的。以數據為中心易于處理子系統(tǒng)間的并發(fā)和完整性問題。倉庫子系上一頁下一頁返回6.2軟件體系架構6.2.1倉庫體系結構(Repositor6.2軟件體系架構

統(tǒng)可以實現全局控制流。用戶可以調用其中的每個界面,倉庫體系結構也適用于處理任務不斷改變的復雜的應用系統(tǒng)。但是倉庫子系統(tǒng)的主要缺點是子系統(tǒng)與倉庫之間耦合度很高,對倉庫數據結構的修改必然會影響到子系統(tǒng)。6.6.2模型/視圖/控制器體系結構(ModelViewControl--MVCArchitecture)在模型/視圖/控制器(MVC)體系結構(見圖6-2)中,子系統(tǒng)分為三種不同的類型:模型子系統(tǒng)負責維護系統(tǒng)的數據結構和數據信息;視圖子系統(tǒng)負責把系統(tǒng)數據信息顯示給用上一頁下一頁返回6.2軟件體系架構 統(tǒng)可以實現全局控制流。用戶可以調用其中的6.2軟件體系架構

戶;控制器子系統(tǒng)負責管理與用戶交互的順序。模型子系統(tǒng)發(fā)展成完全不依賴于任何視圖或控制器子系統(tǒng)。它們狀態(tài)的變化通過訂閱/通知(subscription/notification)協議傳輸給視圖子系統(tǒng)。MVC體系結構是倉庫體系結構的特例,模型實現了中心數據結構,控制對象指揮著控制流。這種體系結構經常用于WEB服務器系統(tǒng)設計??刂破魇占瘉碜杂脩舻妮斎氩l(fā)消息給模型。模型保持中心數據結構。視圖顯示模型,每當模型發(fā)生變化時得到通知(通過簽署/通知協議)。MVC體系結構將交互式應用程序分為三個區(qū)域:輸入、處理和輸出。模型組件封裝了內核數據和功能。模型獨立于特定輸出表示法或輸入方式。上一頁下一頁返回6.2軟件體系架構 戶;控制器子系統(tǒng)負責管理與用戶交互的順序6.2軟件體系架構視圖組件子系統(tǒng)向用戶顯示信息。視圖從模型獲得數據??赡苡心P偷亩鄠€視圖。每個視圖都有一個相關的控制器組件??刂破鹘邮茌斎?,通常作為將鼠標移動、鼠標按鈕的活動或鍵盤輸入編碼的事件。事件被翻譯成模型或視圖的服務器請求。用戶僅僅通過控制器與系統(tǒng)交互。模型與視圖和控制器組件的分離將允許同一個模型的多個視圖。如果用戶通過一個視圖的控制器改變了模型,所有依賴于該數據的其他視圖應該反映出這種變化。因此一旦模型的數據發(fā)生了變化,模型要通報所有視圖。視圖反過來從模型恢復新數據并更新所顯示的信息。這種變更-傳播機制相當于訂閱—發(fā)行。上一頁下一頁返回6.2軟件體系架構視圖組件子系統(tǒng)向用戶顯示信息。視圖從模型獲6.2軟件體系架構模型、視圖和控制器之間分離的基本原理在于用戶接口(如視圖和控制器)要比數據處理(如模型)更加易于變化。因此人機交互從核心功能中分離出來。在分析應用程序結構時,將核心功能從設想的輸入和輸出行為中分離出來。設計你的應用程序的模型組件來封裝內核所需的數據和功能。提供訪問中需要顯示數據的功能。確定模型功能的哪一部分應該通過控制器向用戶展示,并給模型添加相應的接口,這將更便于子系統(tǒng)設計和軟件開發(fā)分工。MVC技術也適用于交互式系統(tǒng),尤其是需要同一個模型的多個視圖時。MVC可以用來保持分布式數據的一致性;然而,與其他倉庫體系結構類似,它也帶來了同樣的性能瓶頸問題。上一頁下一頁返回6.2軟件體系架構模型、視圖和控制器之間分離的基本原理在于用6.2軟件體系架構6.2.3客戶/服務器體系結構(Client/ServerArchitecture)在客戶/服務器體系結構(見圖6-3)中,一個子系統(tǒng)即服務器,為其他稱為客戶的子系統(tǒng)的實例提供服務,客戶端系統(tǒng)負責與用戶的交互。通常由某個遠程程序調用機制或公共對象代理(例如CORBA或JavaRMI)完成請求的服務。除了同步管理請求或者接收結果的時候,客戶和服務器中的控制流都是相互獨立的。上一頁下一頁返回6.2軟件體系架構6.2.3客戶/服務器體系結構(Clien6.2軟件體系架構客戶向一個或多個服務器請求獲得服務。服務器不知道客戶??蛻簦掌骷夹g是倉庫體系結構的一般化,帶有中心數據庫的信息系統(tǒng)是客戶/服務器體系結構的例子??蛻糌撠熃邮諄碜杂脩舻妮斎?、檢查范圍,一旦所有必需的數據齊全,便初始化數據庫事務。服務器負責執(zhí)行事務,保證數據的完整性。在這種情況下,客戶/服務器體系結構是倉庫體系結構的特例,它由程管理中心數據結構。但是,客戶/服務器系統(tǒng)并不限于單個服務器。在Internet網中,單個客戶可以訪問數千個不同服務器的數據??蛻簦掌黧w系結構非常適用于需要管理大量數據的分布式系統(tǒng)。上一頁下一頁返回6.2軟件體系架構客戶向一個或多個服務器請求獲得服務。服務器6.2軟件體系架構優(yōu)點:1.結構簡單,系統(tǒng)中不同類型的任務分別由客戶和服務器承擔,有利于發(fā)揮不同機器平臺的優(yōu)勢;2.支持分布式、并發(fā)環(huán)境,特別是當客戶和服務器之間的關系是多對多時,可以有效地提高資源的利用率和共享程度;3.服務器集中管理資源,有利于權限控制和系統(tǒng)安全。缺點:在大多數client/server風格的系統(tǒng)中,構件之間的連接通過(遠程)過程調用,接近于代碼一級,表達能力較弱。三層客戶/服務器軟件體系結構客戶/服務器軟件體系結構,是基于資源不對等,且為實現共享而提出來的,是20世紀90年代成熟起來的技術,客戶上一頁下一頁返回6.2軟件體系架構優(yōu)點:1.結構簡單,系統(tǒng)中不同類型的任務分6.2軟件體系架構

/服務器結構將應用一分為二,服務器(后臺)負責數據管理,客戶機(前臺)完成與用戶的交互任務??蛻簦掌黧w系結構具有強大的數據操作和事務處理能力,模型思想簡單,易于人們理解和接受。但隨著企業(yè)規(guī)模的日益擴大,軟件的復雜程度不斷提高,傳統(tǒng)的二層客戶/服務器結構存在以下幾個局限:1.二層客戶/服務器結構是單一服務器且以局域網為中心的,所以難以擴展至大型企業(yè)廣域網或Internet;2.軟、硬件的組合及集成能力有限;3.客戶機的負荷太重,難以管理大量的客戶機,系統(tǒng)的性能容易變壞;上一頁下一頁返回6.2軟件體系架構 /服務器結構將應用一分為二,服務器(后臺6.2軟件體系架構4.數據安全性不好。因為客戶端程序可以直接訪問數據庫服務器,那么,在客戶端計算機上的其他程序也可想辦法訪問數據庫服務器,從而使數據庫的安全性受到威脅。正是因為二層客戶/服務器有這么多缺點,所以三層客戶/服務器結構應運而生。三層客戶/服務器結構是將整個系統(tǒng)的應用功能分成表示層、功能層和數據層三個層次結構,如下圖6-4所示。表示層是應用的用戶接口部分,它擔負著用戶與應用間的對話功能。它用于檢查用戶從鍵盤等輸入的數據,顯示應用輸出的數據。為使用戶能直觀地進行操作,一般要使用圖形用戶接口,操作簡單、易學易用。在變更用戶接口時,只需上一頁下一頁返回6.2軟件體系架構4.數據安全性不好。因為客戶端程序可以直接6.2軟件體系架構

改寫顯示控制和數據檢查程序,而不影響其他兩層。檢查的內容也只限于數據的形式和取值的范圍,不包括有關業(yè)務本身的處理邏輯。功能層相當于應用的本體,它是將具體的業(yè)務處理邏輯編入程序中。例如,在制作訂購合同時要計算合同金額,按照定好的格式配置數據、打印訂購合同,而處理所需的數據則要從表示層或數據層取得。表示層和功能層之間的數據交往要盡可能簡潔。例如,用戶檢索數據時,要設法將有關檢索要求的信息一次性地傳送給功能層,而由功能層處理過的檢索結果數據也一次性地傳送給表示層。數據層就是數據庫管理系統(tǒng),負責管理對數據庫數據的讀寫。數據庫管理系統(tǒng)必須能迅速執(zhí)行大量數據的更新和檢索。上一頁下一頁返回6.2軟件體系架構 改寫顯示控制和數據檢查程序,而不影響其他6.2軟件體系架構

因此,一般從功能層傳送到數據層的要求大都使用SQL語言。三層客戶/服務器的解決方案是:對這三層進行明確分割,并在邏輯上使其獨立。原來的數據層作為數據庫管理系統(tǒng)已經獨立出來,所以,關鍵是要將表示層和功能層分離成各自獨立的程序,并且還要使這兩層間的接口簡潔明了。一般情況是只將表示層配置在客戶機中,如果連功能層也放在客戶機中,與二層客戶/服務器結構相比,其程序的可維護性要好得多,但是其他問題并未得到解決??蛻魴C的負荷太重,其業(yè)務處理所需的數據要從服務器傳給客戶機,所以系統(tǒng)的性能容易變壞。上一頁下一頁返回6.2軟件體系架構 因此,一般從功能層傳送到數據層的要求大都6.2軟件體系架構如果將功能層和數據層分別放在不同的服務器中,則服務器和服務器之間也要進行數據傳送。但是,由于在這種形態(tài)中三層是分別放在各自不同的硬件系統(tǒng)上的,所以靈活性很高,能夠適應客戶機數目的增加和處理負荷的變動。例如,在追加新業(yè)務處理時,可以相應增加裝載功能層的服務器。因此,系統(tǒng)規(guī)模越大這種形態(tài)的優(yōu)點就越顯著。與傳統(tǒng)的二層結構相比,三層客戶/服務器結構具有以下優(yōu)點:1.允許合理地劃分三層結構的功能,使之在邏輯上保持相對獨立性,從而使整個系統(tǒng)的邏輯結構更為清晰,能提高系統(tǒng)和軟件的可維護性和可擴展性。2.允許更靈活有效地選用相應的平臺和硬件系統(tǒng),使之在上一頁下一頁返回6.2軟件體系架構如果將功能層和數據層分別放在不同的服務器中6.2軟件體系架構邏輯上保持相對獨立性,從而使整個系統(tǒng)的邏輯結構更為清晰,能提高系統(tǒng)和軟件的可維護性和可擴展性。2.允許更靈活有效地選用相應的平臺和硬件系統(tǒng),使之在處理負荷能力上與處理特性上分別適應于結構清晰的三層;并且這些平臺和各個組成部分可以具有良好的可升級性和開放性。例如,最初用一臺Unix工作站作為服務器,將數據層和功能層都配置在這臺服務器上。隨著業(yè)務的發(fā)展,用戶數和數據量逐漸增加,這時,就可以將Unix工作站作為功能層的專用服務器,另外追加一臺專用于數據層的服務器。若業(yè)務進一步擴大,用戶數進一步增加,則可以繼續(xù)增加功能層的服務器數目,用以分割數據庫。清晰、合理地分割三層上一頁下一頁返回6.2軟件體系架構邏輯上保持相對獨立性,從而使整個系統(tǒng)的邏輯6.2軟件體系架構

結構并使其獨立,可以使系統(tǒng)構成的變更非常簡單。因此,被分成三層的應用基本上不需要修正。3.三層客戶/服務器結構中,應用的各層可以并行開發(fā),各層也可以選擇各自最適合的開發(fā)語言。使之能并行地而且是高效地進行開發(fā),達到較高的性能價格比;對每一層的處理邏輯的開發(fā)和維護也會更容易些。4.允許充分利用功能層有效地隔離開表示層與數據層,未授權的用戶難以繞過功能層而利用數據庫工具或黑客手段去非法地訪問數據層,這就為嚴格的安全管理奠定了堅實的基礎;整個系統(tǒng)的管理層次也更加合理和可控制。上一頁下一頁返回6.2軟件體系架構 結構并使其獨立,可以使系統(tǒng)構成的變更非常6.2軟件體系架構6.2.4B/S結構,即瀏覽器/服務器(Browser/Server)結構B/S結構,即Browser/Server(瀏覽器/服務器)結構,是隨著Internet技術的興起,對C/S結構的一種變化或者改進的結構(如圖6-5所示)。在這種結構下,用戶界面完全通過WWW瀏覽器實現,一部分事務邏輯在前端實現,但是主要事務邏輯在服務器端實現。B/S結構,主要是利用了不斷成熟的WWW瀏覽器技術,結合瀏覽器的多種Script語言(VBScript、JavaScript…)和ActiveX技術,用通用瀏覽器就實現了原來需要復雜專用軟件才能實現的強大功能,并節(jié)約了開發(fā)成本,是一種全新的軟件系統(tǒng)構造技術,這種結構更成為當今應用軟件的首選體系結構。顯然B/S結構應用程序相對于傳統(tǒng)的C/S結構應用程序將是巨大的進步。上一頁下一頁返回6.2軟件體系架構6.2.4B/S結構,即瀏覽器/服務器6.2軟件體系架構B/S結構采用星形拓撲結構建立企業(yè)內部通信網絡或利用Internet虛擬專網(VPN)。前者的特點是安全、快捷、準確。后者則具有節(jié)省投資、跨地域廣的優(yōu)點。須視企業(yè)規(guī)模和地理分布確定。企業(yè)內部通過防火墻接入Internet,整個網絡采用TCP/IP協議。B/S結構開發(fā)工作主要是針對于服務器的,并且軟件主要的組成全都布署在服務器一方,客戶通過瀏覽訪問服務器,并下載或利用一些組件實現客戶端的交互訪問功能。當前基于Java技術的J2EE和基于DCOM的.NET是開發(fā)B/S結構的主流。C/S與B/S區(qū)別:上一頁下一頁返回6.2軟件體系架構B/S結構采用星形拓撲結構建立企業(yè)內部通信6.2軟件體系架構Client/Server是建立在局域網的基礎上的,Browser/Server是建立在廣域網的基礎上的。1.硬件環(huán)境不同:C/S一般建立在專用的網絡上,小范圍里的網絡環(huán)境,局域網之間再通過專門服務器提供連接和數據交換服務.B/S建立在廣域網之上的,不必是專門的網絡硬件環(huán)境,例與電話上網,租用設備.信息自己管理.有比C/S更強的適應范圍,一般只要有操作系統(tǒng)和瀏覽器就行2.對安全要求不同:C/S一般面向相對固定的用戶群,對信息安全的控制能力很強.一般高度機密的信息系統(tǒng)采用C/S結構適宜.可以通過B/S發(fā)布部分可公開信息.B/S建立在廣域網之上,對安全的控制能力相對弱,面向是不可知的用戶群.上一頁下一頁返回6.2軟件體系架構Client/Server是建立在局域網的6.2軟件體系架構3.對程序架構不同:C/S程序可以更加注重流程,可以對權限多層次校驗,對系統(tǒng)運行速度可以較少考慮.B/S對安全以及訪問速度的多重的考慮,建立在需要更加優(yōu)化的基礎之上.比C/S有更高的要求B/S結構的程序架構是發(fā)展的趨勢,從MS的.Net系列的BizTalk2000Exchange2000等,全面支持網絡的構件搭建的系統(tǒng).SUN和IBM推的JavaBean構件技術等,使B/S更加成熟.4.軟件重用不同:C/S程序可以不可避免的整體性考慮,構件的重用性不如在B/S要求下的構件的重用性好.B/S對的多重結構,要求構件相對獨立的功能.能夠相對較好的重用.就入買來的餐桌可以再利用,而不是做在墻上的石頭桌子上一頁下一頁返回6.2軟件體系架構3.對程序架構不同:C/S程序可以更加注重6.2軟件體系架構5.系統(tǒng)維護不同:系統(tǒng)維護是軟件生存周期中,開銷最大,也是極為重要的。C/S程序由于具有整體性,必須整體考察,處理出現的問題以及系統(tǒng)升級應當謹慎,有時系統(tǒng)升級相當于是再做一個全新的系統(tǒng)。B/S構件組成,方面構件個別的更換,實現系統(tǒng)的無縫升級,系統(tǒng)維護開銷減到最小,用戶從網上自己下載安裝就可以實現升級。6.2.5對等體系結構(Peer-to-PeerArchitecture)對等體系結構是客戶/服務器體系結構的一般化,其中子系統(tǒng)既可以作為客戶也可以作為服務器,即每個子系統(tǒng)既可以請求服務也可以提供服務(如圖6-6所示)。每個子系統(tǒng)中的控制流除了在同步請求的時候,都是獨立于其他子系統(tǒng)的。上一頁下一頁返回6.2軟件體系架構5.系統(tǒng)維護不同:系統(tǒng)維護是軟件生存周期中6.2軟件體系架構圖6-6是對等體系結構(UML類圖)。對等體可以向其他對等體請求服務也可以向它們提供服務。對等體系結構的一個例子是雙向通信軟件,各系統(tǒng)之間的連接基于對等結構,它一方面接收來自一個系統(tǒng)的請求,另一方面,自己也可以向其他系統(tǒng)要求連通。另一個例子就基于P2P(點對點協議)的應用軟件如網絡音樂點播軟件。對等系統(tǒng)比客戶/服務器系統(tǒng)要難設計,它們有可能發(fā)生死鎖,并且使控制流更復雜了。6.2.6管道過濾器結構(PipeandFilterArchitecture)在管道和過濾器體系結構中,子系統(tǒng)處理輸入的一組數據,上一頁下一頁返回6.2軟件體系架構圖6-6是對等體系結構(UML類圖)。對等6.2軟件體系架構

并通過一組輸出將結果發(fā)送給其他子系統(tǒng)(如圖6-7所示)。子系統(tǒng)稱為過濾器,子系統(tǒng)之間的聯系稱為管道。每個過濾器只知道來自輸入管道的數據的內容和格式,并不知道生成這些數據的過濾器。每個過濾器并發(fā)執(zhí)行并且通過管道進行同步。管道和過濾器技術是可改動的:一個過濾器可以由其他過濾器替代,或者重新配置以達到不同的目的。一個過濾器可以有多個輸入和輸出。一個管道將某個過濾器的輸出和另外一個過濾器的輸入連接起來管道和過濾器體系結構最有名的例子是UNLX的shell。大多數過濾器寫成可以通過標準管道進行輸入輸出的讀寫。這就允許UNIX用戶以許多不同的方式連接過濾器。上一頁下一頁返回6.2軟件體系架構 并通過一組輸出將結果發(fā)送給其他子系統(tǒng)(如6.2軟件體系架構管道和過濾器體系結構適用于實現數據流的變換而不需要用戶干涉的系統(tǒng)。不適合組件間的交互作用比較復雜的系統(tǒng),比如信息管理系統(tǒng)或者交互式系統(tǒng)。管道/過濾器體系結構具有許多很好的特點:1.使得軟構件具有良好的隱蔽性和高內聚、低耦合的特點;2.允許設計者將整個系統(tǒng)的輸入/輸出行為看成是多個過濾器的行為的簡單合成;3.支持軟件重用。重要提供適合在兩個過濾器之間傳送的數據,任何兩個過濾器都可被連接起來;上一頁下一頁返回6.2軟件體系架構管道和過濾器體系結構適用于實現數據流的變換6.2軟件體系架構4.系統(tǒng)維護和增強系統(tǒng)性能簡單。新的過濾器可以添加到現有系統(tǒng)中來;舊的可以被改進的過濾器替換掉;5.允許對一些如吞吐量、死鎖等屬性的分析;6.支持并行執(zhí)行。每個過濾器是作為一個單獨的任務完成,因此可與其它任務并行執(zhí)行。但是,這樣的系統(tǒng)也存在著不足方面:1.通常導致進程成為批處理的結構。這是因為雖然過濾器可增量式地處理數據,但它們是獨立的,所以設計者必須將每個過濾器看成一個完整的從輸入到輸出的轉換。2.不適合處理交互的應用。當需要增量地顯示改變時,這個問題尤為嚴重。上一頁下一頁返回6.2軟件體系架構4.系統(tǒng)維護和增強系統(tǒng)性能簡單。新的過濾器6.2軟件體系架構3.因為在數據傳輸上沒有通用的標準,每個過濾器都增加了解析和合成數據的工作,這樣就導致了系統(tǒng)性能下降,并增加了編寫過濾器的復雜性。以上介紹6個的常見軟件體系結構,它們各有不同的特點。在一個復雜的系統(tǒng)開發(fā)中,可以借鑒各種多種軟件體系結構,如B/S結構也可以結合C/S結構來構建軟件系統(tǒng),靈活運用好體系結構,從而使用軟件開發(fā)過程更加快捷和高效上一頁返回6.2軟件體系架構3.因為在數據傳輸上沒有通用的標準,每個過6.3子系統(tǒng)設計和訪問控制設計系統(tǒng)設計是把分析模型轉變成系統(tǒng)設計模型。在系統(tǒng)設計的過程中,系統(tǒng)設計人員定義項目的設計目標,并且將系統(tǒng)分解成能由單個團隊實現的較小的子系統(tǒng)。系統(tǒng)設計人員也要選擇構造系統(tǒng)的策略,比如系統(tǒng)運行的硬件/軟件平臺、持續(xù)數據管理策略、全局控制流、訪問控制方法以及邊界條件的處理。系統(tǒng)設計的結果是得到一個模型,包括上述各個策略的清晰描述、子系統(tǒng)的分解以及表示系統(tǒng)硬件/軟件映射的UML配置圖。系統(tǒng)設計不是設計算法,然而研究人員已經開發(fā)出了一些固定的模式或方案來解決常見的問題,而且定義了符號來表達軟件結構,UML就是目前最流行的設計語言之一。在本節(jié)下一頁返回6.3子系統(tǒng)設計和訪問控制設計系統(tǒng)設計是把分析模型轉變成系統(tǒng)6.3子系統(tǒng)設計和訪問控制設計

中,我們首先提出這些構造模塊,然后討論對這些模塊產生影響的設計活動。具體地說,系統(tǒng)設計包括:1.定義設計目標;2.分解系統(tǒng)為子系統(tǒng)或功能模塊;3.分析或選擇已開發(fā)組件和標準組件4.子系統(tǒng)映射到軟/硬件平臺;5.數據庫設計;6.定義訪問策略;7.設計系統(tǒng)流程。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計 中,我們首先提出這些構造模塊6.3子系統(tǒng)設計和訪問控制設計分析模型從執(zhí)行者的角度完整地描述了系統(tǒng),并且充當用戶和系統(tǒng)分析設計人員之間的交流基礎,其分析過程如圖6-8所示。但是,分析模型不包括系統(tǒng)的內部結構信息,或者更一般地說,它的硬件配置不包括系統(tǒng)是如何實現的。系統(tǒng)設計是從內部架構整個系統(tǒng)的第一步。6.3.1定義系統(tǒng)設計目標系統(tǒng)設計應該得到如下結果:構建整個軟件系統(tǒng)的體系結構,建立一系列反映系統(tǒng)設計人員實現整個系統(tǒng)的設計目標。根據子系統(tǒng)的任務、子系統(tǒng)間相關性、子系統(tǒng)與軟/硬件平臺的映射和主要策略決定(如控制流、訪問控制和數據存儲)來描述子系統(tǒng)的分解,這也就是系統(tǒng)設計目標。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計分析模型從執(zhí)行者的角度完整地描6.3子系統(tǒng)設計和訪問控制設計系統(tǒng)設計目標還包括非功能性需求,尤其是需要權衡非功能性需求和系統(tǒng)功能需求的時候,設計目標可以幫助系統(tǒng)設計人員作出決定和取舍。系統(tǒng)設計的大部分內容是子系統(tǒng)分解,即搭建整個系統(tǒng)的框架。為了處理復雜性,系統(tǒng)設計人員把系統(tǒng)分解成易于管理的任務段,把每個子系統(tǒng)分配給一個小組來獨立實現。但是為了使這些成為可能,系統(tǒng)設計人員在分解系統(tǒng)時需要面對整個系統(tǒng)范圍的問題。設計人員在系統(tǒng)設計中應特別注意解決以下問題:1.應用系統(tǒng)開發(fā)的軟/硬件平臺環(huán)境。2.數據庫設計3.定義訪問策略4.設計系統(tǒng)流程上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計系統(tǒng)設計目標還包括非功能性需求6.3子系統(tǒng)設計和訪問控制設計圖6-8描述了系統(tǒng)設計活動。每個活動解決上面描述過的一個問題。解決任何一個上述問題都會引起子系統(tǒng)分解中的變化并產生新的問題。系統(tǒng)設計是多次反復的活動,常會導致新的子系統(tǒng)的定義、已有子系統(tǒng)的改變以及影響所有子系統(tǒng)系統(tǒng)范圍的修改。6.3.2定義子系統(tǒng)和功能模塊為了減少應用系統(tǒng)的復雜性,我們把更小的部分定義為類并且把它們封裝成包。類似地,為了減少求解域的復雜性,我們將系統(tǒng)分解成為子系統(tǒng),形成多個較小的組成部分,子系統(tǒng)就是由許多求解域的類組成的。對于復雜的子系統(tǒng),我們不斷地使用這個原理,將子系統(tǒng)分解成更為簡單的子系統(tǒng)。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計圖6-8描述了系統(tǒng)設計活動。每6.3子系統(tǒng)設計和訪問控制設計在RationalRose中子系統(tǒng)要以用包或類來表示。學籍管理系統(tǒng)從需求分析可知整個應用系統(tǒng)分為六個子系統(tǒng)。其中交費管理子系統(tǒng)(如圖6-9所示)又可以繼續(xù)進行細分,因為交費管理主要是用來管理學費的交納情況,學費可以根據年級、年制、專業(yè)、學期不同來設置收費類型和收費標準,所以在收費之前應先設置收費類型和收費標準,在VB中設置收費類型和收費標準可以做為一個單獨窗體類來設計,因此可命名為frmTuitionSet,同樣收取學費,學費類型明細及查詢,學生收費明細,學生個人收費情況,學生收費查詢分別設計為frmTuitionCollect、frmTuitionSetBrow、frmTuitionSetQry、frmTuitionDetail、上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計在RationalRose中6.3子系統(tǒng)設計和訪問控制設計 frmTuitionStu等,由于系統(tǒng)需求中涉及收費打印,因此還要增加學生收費類型設置、學生收費明細報表來滿足收費打印的需要。圖6-9學籍管理交費子系統(tǒng)(UML類圖)的子系統(tǒng)分解包括包的組成和與主界面的構成關系。子系統(tǒng)表示為UML包,虛線箭頭說明子系統(tǒng)與其他子系統(tǒng)或類之間的依賴關系。同時為了提高查詢效率,快速存取收費信息,也應對收費信息實體類進行設計劃分為收費類型和收費明細兩部分,相當于數據庫中的兩個表。如圖6-10所示,示學費實體類可以繼續(xù)分解為數據表,即學費類型表示某年制某專業(yè)某年級某學期的收費標準,交費信息表示某學生某學期的交費額和欠費客,以及交費日期和收費人。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計 frmTuitionStu等6.3子系統(tǒng)設計和訪問控制設計許多編程語言(比如Java和Modula-2)為子系統(tǒng)的建模(Java中的包,Modula-2中的模塊)提供了構造方法。在其他語言中,比如C或者C++,沒有明確的建模子系統(tǒng),在這種情況下,系統(tǒng)設計人員按照習慣,對類進行分組(比如,一個子系統(tǒng)可以表示成包含實現子系統(tǒng)的所有文件的目錄)。由于子系統(tǒng)通常是由不同的開發(fā)小組實現的,所以不管編程語言中是否明確表示了子系統(tǒng),系統(tǒng)設計人員都需要仔細地記錄子系統(tǒng)分解的文檔。1.服務和子系統(tǒng)接口根據一個子系統(tǒng)是通過為其他子系統(tǒng)提供的服務來確定其特點的。一個服務是一組有著共同目標的相關操作。比如,某子系統(tǒng)提供數據訪問服務,它可以定義訪問數據連接、直接上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計許多編程語言(比如Java和M6.3子系統(tǒng)設計和訪問控制設計

訪問數據表服務,檢查用戶權限等。學籍管理系統(tǒng)的公用模塊就是一個登錄管理子系統(tǒng)的一個類似的模塊,它為所有的子系統(tǒng)服務的一個子系統(tǒng),它主要是提供一個訪問數據層的接口,定義公用訪問數據庫的連接,定義全局性的變量和方法供各子系統(tǒng)使用(如圖6-11所示)。某子系統(tǒng)提供給其他子系統(tǒng)用的一組操作形成子系統(tǒng)接口。子系統(tǒng)接口也稱為應用程序接口(API,ApplicationProgrammingInterface),包括操作的名稱、參數、類型和返回值。系統(tǒng)設計集中定義每個子系統(tǒng)提供的服務,即列舉操作、參數和它們的高層行為。對象設計集中定義子系統(tǒng)的接口,即參數的類型和每個操作的返回值。這里也包括應用軟件調用操作系統(tǒng)的函數接口。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計 訪問數據表服務,檢查用戶權限6.3子系統(tǒng)設計和訪問控制設計以調用Windows系統(tǒng)API的SetWindowPos為例,函數功能:該函數改變一個子窗口,彈出式窗口式頂層窗口的尺寸,位置和Z序。子窗口,彈出式窗口,及頂層窗口根據它們在屏幕上出現的順序排序、頂層窗口設置的級別最高,并且被設置為Z序的第一個窗口。函數原型:PrivateDeclareFunctionSetWindowPosLib"user32"(ByValhwndAsLong,ByValhWndInsertAfterAsLong,ByValXAsLong,ByValYAsLong,ByValcxAsLong,ByValcyAsLong,ByValwFlagsAsLong)AsLong--上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計以調用Windows系統(tǒng)API6.3子系統(tǒng)設計和訪問控制設計這樣我們就可以方便的實現一個簡單的系統(tǒng)功能,因此根據子系統(tǒng)提供的服務來對它進行定義,有助于我們把注意力集中在接口上而不是實現上。一個好的子系統(tǒng)接口應提供盡可能少的實現信息,這就使得修改子系統(tǒng)的實現時產生的影響最小。更一般地來說,我們希望通過減少子系統(tǒng)之間的依賴性來降低變化時的影響。2.子系統(tǒng)耦合度與相關性耦合度是兩個子系統(tǒng)之間依賴關系的強度。如果兩個子系統(tǒng)是松散耦合的,它們相互獨立,那么當其中一個發(fā)生變化的時候對另外一個產生的影響就很小。如果兩個子系統(tǒng)是緊密耦合的,其中一個發(fā)生的變化就可能對另外一個產生較大影響。子系統(tǒng)分解想要達到的一個目標就是子系統(tǒng)間要盡可能地松散耦合,這就使得錯誤或潛在變化對系統(tǒng)的正確操作產生的影響達到最小。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計這樣我們就可以方便的實現一個簡6.3子系統(tǒng)設計和訪問控制設計例如交費管理子系統(tǒng)和學生檔案管理子系統(tǒng),如果學生入學時既錄入學生信息又收取學費則兩個子系統(tǒng)的耦合性將增加(如圖6-12所示)。相關性是子系統(tǒng)內部的依賴程序。如果某個子系統(tǒng)含有多個彼此相關的對象,并且它們執(zhí)行類似的任務,它的相關性就比較高。整個系統(tǒng)被化分為更小的系統(tǒng)如學籍管理系統(tǒng),劃分六個子系統(tǒng)為學生檔案管理,成績管理、學費管理、課程管理、班級管理和用戶管理等子系統(tǒng),同時根據系統(tǒng)需求,我們還可以將數據管理抽象到兩個子系統(tǒng)中即系統(tǒng)實體子系統(tǒng)和,這樣得到的子系統(tǒng)要比原有子系統(tǒng)?。航档土藦碗s度。子系統(tǒng)之間的耦合度相對較低,因為兩個子系統(tǒng)之間上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計例如交費管理子系統(tǒng)和學生檔案管6.3子系統(tǒng)設計和訪問控制設計

只有一個關系。共享大量數據的一種有效的方法就是允許兩個子系統(tǒng)通過屬性來互相訪問。通常在相關性和耦合度之間存在一個平衡。我們可以通過將系統(tǒng)不斷分解成子系統(tǒng)來增加系統(tǒng)的相關性。但是,隨著接口數量的增加,也會提高耦合度。一般情況下系統(tǒng)設計人員可以處理72個概念。如果給定任一抽象層具有超過9個概念或者有一個子系統(tǒng)提供超過9種服務,則你應該考慮改動子系統(tǒng)的分解。出于同樣的原因,層次的數量也不能超出72。事實上,許多好的系統(tǒng)設計只用三層就完成了。3.分層和分區(qū)上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計 只有一個關系。共享大量數據的6.3子系統(tǒng)設計和訪問控制設計系統(tǒng)設計的目標是通過將系統(tǒng)分解成可管理的較小的部分來處理復雜度。這可以通過分而治之的方法解決,即我們循環(huán)地將各部分分解得非常簡單,直到能讓一個人或者一個小組處理為止。系統(tǒng)地使用這個方法就可以得到結構化的分解,其中每個子系統(tǒng)或者每一層根據低層子系統(tǒng)提供的服務為高層服務,每一層還可以向下一層訪問。學籍管理系統(tǒng)可以分別為三個層次(如圖6-13所示):(1).上層的登錄管理和主控界面。(2).中間層為各業(yè)務處理子系統(tǒng)。(3).底層為實體類層和報表層。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計系統(tǒng)設計的目標是通過將系統(tǒng)分解6.3子系統(tǒng)設計和訪問控制設計

系統(tǒng)設計是把分析模型轉變成設計模型,該模型考慮在問題描述和需求分析文檔中描述的非功能性需求和約束。前面主要考慮了子系統(tǒng)的分解和它們的屬性。本節(jié)描述子系統(tǒng)分解時必要的活動,以確保子系統(tǒng)分解能針對所有的非功能性需求并著手考慮實現階段的所有限制條件。6.3.3確定系統(tǒng)設計目標前面講了許多關于系統(tǒng)設計的概念和一般方法,而定義設計目標是系統(tǒng)設計的第一步,那些概念和方法都是為定義設計目標服務。設計目標給出了系統(tǒng)應該重點考慮的質量要求。許多設計目標可以從非功能性需求或者應用域推斷出來,上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計 系統(tǒng)設計是把分析模型轉變成設6.3子系統(tǒng)設計和訪問控制設計

其他的設計目標必須從用戶那里得到。然而,必須明確說明設計目標,根據同一套標準使作出的每個重要的設計決定,并保持一致性。比如,根據需求描述中的的非功能性需求,我們應把可靠性和連接丟失,容錯能力也作為設計目標。然后再將安全性標識為設計目標,因為有很多操作人員利用軟件系統(tǒng)讀取和存儲學生的有關信息。一般而言,我們可以從一系列非常想要達到的質量要求中選擇設計目標。通常把系統(tǒng)設計目標分為五類:功能、性能、可靠性、費用和維護目標。一般從需求中推斷出系統(tǒng)的功能、性能、可靠性。費用和維護目標則由最終用戶(軟件系統(tǒng)購買者)和軟件供應商(擬采購組件或軟件平臺供應者)指定。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計 其他的設計目標必須從用戶那里6.3子系統(tǒng)設計和訪問控制設計性能標準包括對系統(tǒng)的速度和空間需求。系統(tǒng)應該是快速響應的還是實現最多數量的任務?存儲器空間是用于速度優(yōu)化還是應該節(jié)約使用?管理目標可以用技術目標平衡(比如,交付時間與功能性的平衡)。一旦我們對設計目標有了清晰的認識,就可以著手設計初始子系統(tǒng)的分解。下表(表6-1)就是針對學籍管理系統(tǒng)的設計目標的一個定義。6.3.4確定子系統(tǒng)在系統(tǒng)設計的時候得到子系統(tǒng)與在分析的時候得到對象有很多相似之處:它是一項不斷摸索變化的活動。需求分析上的用例和角色識別技術適用于確定子系統(tǒng)。而且,無論什么時候提出了新的問題,都會導致子系統(tǒng)分解的修改;若干簡單上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計性能標準包括對系統(tǒng)的速度和空間6.3子系統(tǒng)設計和訪問控制設計

的子系統(tǒng)合并到一個子系統(tǒng)中,復雜的子系統(tǒng)分解成多個部分,或為了實現新的功能而增加了子系統(tǒng)。確定子系統(tǒng)的分解要避免引起急劇的變化,并在設計之初就解決好這些問題。最初的子系統(tǒng)分解應該來自功能性需求。比如,在學籍管理系統(tǒng)中,我們定義了學生檔案管理、學生成績管理、收費管理等子系統(tǒng)都是來自需求分析的用例即功能性需求。另外確定子系統(tǒng)的方法就是將功能相關的對象放在一起,作為獨立的功能或共享的模塊,被多個子系統(tǒng)所共享。再有就是把復雜的子系統(tǒng)分解為較為簡單的子系統(tǒng)。確定子系統(tǒng)的方法可歸納為以下幾個方面將一個用例中確定的對象,分配到同一個子系統(tǒng)中。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計 的子系統(tǒng)合并到一個子系統(tǒng)中,6.3子系統(tǒng)設計和訪問控制設計為兩個以上子系統(tǒng)傳遞數據或提供服務的對象,要創(chuàng)建一個專用的子系統(tǒng)。將子系統(tǒng)與子系統(tǒng)之間的關聯關系降到最小。同一個子系統(tǒng)內的所有對象必須功能相關,業(yè)務處理配合緊密。6.3.5數據管理設計系統(tǒng)數據管理也是一個復雜的任務,數據管理設計就要處理系統(tǒng)中連續(xù)的,需要保存的各種數據。比如,某個作者使用字處理軟件將他的工作存入某個文件,以供重新打開文件使用。類似地,與學生相關的信息,他們的姓名、年齡、學費繳納情況、入學時間和在學期間課程成績等都存放在數據庫上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計為兩個以上子系統(tǒng)傳遞數據或提供6.3子系統(tǒng)設計和訪問控制設計

管理系統(tǒng)中。這就允許所有使用學生信息數據的程序可以一致地運行。而且,將數據存儲在數據庫中能讓系統(tǒng)在大量數據集合(比如幾千個學生的記錄)中執(zhí)行比較復雜的查詢。當前的數據存儲管理方式可以分為三種類型:1.普通文件2.關系型數據庫3.面向對象數據庫數據存放的地點以及如何存放會對系統(tǒng)的分解產生影響。比如在有些情況下,學籍管理系統(tǒng)中的某個子系統(tǒng)專門用來建立數據庫連接和訪問數據。特定的數據庫管理系統(tǒng)的選擇也蘊含了總的控制策略和并發(fā)管理。以學籍管理系統(tǒng)為例,實體類的存儲采用關系型數據庫如下圖6-14所示上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計 管理系統(tǒng)中。這就允許所有使用6.3子系統(tǒng)設計和訪問控制設計6.3.6定義訪問控制在多用戶系統(tǒng)中,不同的操作者需要訪問不同的功能和數據。比如,每個操作者只能訪問他創(chuàng)建的數據,但是系統(tǒng)管理員可以沒有限制地訪問系統(tǒng)數據和其他用戶的數據。分析時,通過將不同的用例與不同的操作者相聯系來為這些區(qū)別建模。在系統(tǒng)設計時,通過檢查對象模型,定義操作者共享哪些對象以及定義操作者如何控制訪問來為訪問建模。根據系統(tǒng)的安全性需求,還可以定義系統(tǒng)如何鑒別操作者(比如操作人員怎樣向系統(tǒng)證明他是誰)及如何為系統(tǒng)中選定的數據加密。比如在學籍管理系統(tǒng)中采用按用戶名和密碼驗證方式登錄軟件系統(tǒng),軟件系統(tǒng)根據用戶的已分配權限,控制其可以使用的上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計6.3.6定義訪問控制上一頁下6.3子系統(tǒng)設計和訪問控制設計

功能和操作,用戶對系統(tǒng)的功能使用有著各種類型的權限劃分,既形成了不同的角色如表6-2所示,系統(tǒng)管理員是整個系統(tǒng)中管理權限最全的角色,它可以使用系統(tǒng)提供的各種功能。而一般人員只能實現對系統(tǒng)中查詢功能的使用。6.3.7設計全局控制流控制流是系統(tǒng)中操作和系統(tǒng)行為的先后次序。在面向對象的系統(tǒng)中,活動的先后次序包括決定執(zhí)行哪些操作,以及按怎樣的次序執(zhí)行。這些決定基于由操作者或者隨著按時間順序所產生的外部事件??刂屏魇且粋€設計問題,在分析過程中,控制流程還不是主要問題,但在設計時應考慮整個系統(tǒng)的控制流程。一般控制流程有三種方式包括過程驅動控制、事件驅動控制和線程實現控制。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計 功能和操作,用戶對系統(tǒng)的功能6.3子系統(tǒng)設計和訪問控制設計過程驅動的控制流程。系統(tǒng)設計是基于過程化語言設計的,或者系統(tǒng)設計是基于程序控制的,用戶沒有選擇的余地,只能按程序控制的步驟來實現各種操作。如Ms-Dos下命令行執(zhí)行模式中的應用軟件程序,再如Windows中添加/刪除硬件向導,就是采用過程驅動的方式(如圖6-15所示)。事件驅動的控制流。系統(tǒng)設計基于等待與執(zhí)行的輪循的方式,最常用的Microsoft公司的Word和Excel應用軟件,在實際操作中先后次序不明顯,而是由用戶事件到達次序來選擇。即用戶選擇什么操作,軟件做什么回應和處理。以學籍管理系統(tǒng)為例,主控制界面類設計就是典型的事件驅動控制(如圖6-16所示)。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計過程驅動的控制流程。系統(tǒng)設計是6.3子系統(tǒng)設計和訪問控制設計線程驅動的控制流。系統(tǒng)設計是基于并發(fā)運行機制的軟件系統(tǒng),系統(tǒng)可以創(chuàng)建多個線程,每個線程可以處理不同的事件或共同完成一個任務,如Flashget,Netants等許多網絡下載軟件都采用線程驅動方式。過程驅動控制流方式設計速度快,實現相對簡單,測試比較容易,但對用戶來說操作不便利,開發(fā)與最終用戶相關的軟件系統(tǒng)應避免采用這種方式;事件驅動的控制流方式便于用戶使用,設計較復雜,但有成熟的開發(fā)工具,是當前主流的系統(tǒng)控制設計方式;線程實現控制流方式能更好地體現多用戶和多任務處理機制,但是在系統(tǒng)實現和系統(tǒng)測試方面則是相當復雜,同時在開發(fā)工具和硬件選用上需要仔細斟酌。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計線程驅動的控制流。系統(tǒng)設計是基6.3子系統(tǒng)設計和訪問控制設計6.3.8確定系統(tǒng)的功能范圍前面講述了子系統(tǒng)設計和對系統(tǒng)的分解,還需要檢查系統(tǒng)的系統(tǒng)功能范圍,也就是說,決定系統(tǒng)什么時候啟動、初始化和關閉,還要定義如何處理主要故障,比如由軟件錯誤或是由斷電引起的數據崩潰,因此還要增加系統(tǒng)管理用例,系統(tǒng)管理用例指定了系統(tǒng)在啟動和關閉階段的行為。通常的情況在分析階段不指定系統(tǒng)管理用例或者把它們單獨處理。一方面,許多系統(tǒng)管理功能可以從日常用戶需求(比如注冊和刪除用戶、管理訪問控制)中推斷出來;另一方面,許多功能是由設計決定的(比如高速緩存的大小、數據庫服務器上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計6.3.8確定系統(tǒng)的功能范圍上6.3子系統(tǒng)設計和訪問控制設計

的位置、備份服務器的位置)而不是由需求決定的。如學籍管理管理中應增加重新登錄,修改密碼及用戶名密碼長度限制等系統(tǒng)功能。檢查系統(tǒng)功能范圍時,我們也應該調查一下異常情況。異常就是在系統(tǒng)運行過程中發(fā)生的意料外事件或錯誤。產生異常的原因是下列三種情況之一:1.用戶錯誤。用戶錯誤地或者故意地輸入超出邊界的數據。比如,如果系統(tǒng)不檢查錯誤的話,學生的年齡、成績等出現無法預料的錯誤。2.硬件錯誤。硬件老化并且發(fā)生故障。比如,網絡連接故障隨時可能會斷開系統(tǒng)兩個節(jié)點之間的聯系。硬盤崩潰可能會導致數據的永久性丟失。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計 的位置、備份服務器的位置)而6.3子系統(tǒng)設計和訪問控制設計3.軟件故障。如果系統(tǒng)或者系統(tǒng)的任何一個組件存在設計錯誤,則運行中都可能出錯。盡管編寫無錯誤的軟件非常困難,但是單個子系統(tǒng)能夠預料來自其他子系統(tǒng)的錯誤并加以防護。異常處理就是系統(tǒng)如何處置異常情況的機制。用戶發(fā)生錯誤時,系統(tǒng)應該向用戶顯示意義明確的錯誤信息,軟件系統(tǒng)可以糾正錯誤的輸入。如果是網絡連接有問題,需要保存臨時狀態(tài)以便當網絡恢復正常時,系統(tǒng)能夠回復到原來的狀態(tài)。因此在系統(tǒng)設計階段要綜合考慮這些因素如在學籍管理系統(tǒng)中增加系統(tǒng)的自動備份功能,軟件訪問數據的錯誤處理(OnErrorGotoLineMark<行號或行標簽>或OnErrorResumeNext等)機制。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計3.軟件故障。如果系統(tǒng)或者系統(tǒng)6.3子系統(tǒng)設計和訪問控制設計6.3.9系統(tǒng)配置設計與映射到軟/硬件平臺1.選擇硬件配置和平臺許多系統(tǒng)運行在多臺計算機上,并且組成局域網Intranet或連接互聯網Internet。使用多臺計算機提出了對連接的高性能要求,以及如何組織連接多個分散的用戶。因此,需要仔細檢查計算機子系統(tǒng)的位置并且認真設計支持子系統(tǒng)間通信的基本設施。UML配置圖中把這些計算機建模成節(jié)點。節(jié)點可以表示一個特定的實例(比如計算機A、計算機B、服務器H),也可以表示一類計算機或設備(比如文件服務器、遠程客戶機、打印機等)。由于硬件映射活動會對系統(tǒng)的性能和復雜度產生巨大的影響,故我們一般在系統(tǒng)設計的早期進行這項活動。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計6.3.9系統(tǒng)配置設計與映射到6.3子系統(tǒng)設計和訪問控制設計選擇硬件配置還包括選擇將系統(tǒng)建造在怎樣的虛擬機上。虛擬機包括操作系統(tǒng)和所有必要的軟件組件,比如數據庫管理系統(tǒng)和通信包。虛擬設備的選擇縮小了系統(tǒng)和系統(tǒng)運行的硬件平臺之間的距離。組件提供的功能越多,則涉及的工作越少。但是虛擬設備的選擇要受限于項目啟動前擁有硬件的顧客。虛擬設備的選擇可能還要考慮費用:在有些情況下,很難估計構造一個組件的費用是否比購買一個組件的費用要高。在學籍管理系統(tǒng)中,我們從需求中推斷出必備的硬件設備(如圖6-17所示),包括教師專用計算機N臺、數據庫服務器、打印服務器及打印機等。其中學籍管理系統(tǒng)部署在教師專用計算機上,數據庫部署在專用的服務器上,打印服務器則不需要上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計選擇硬件配置還包括選擇將系統(tǒng)建6.3子系統(tǒng)設計和訪問控制設計

設計開發(fā)專用的應用軟件,操作系統(tǒng)為Windows系列操作系統(tǒng),其中服務器要求是WindowsNTServer4.0SP6或最近發(fā)布升級的服務器操作系統(tǒng)。2.將對象和子系統(tǒng)分配給節(jié)點一旦定義了硬件配置,選定了虛擬機,對象和子系統(tǒng)就被分配給節(jié)點。為了在節(jié)點間傳送數據,經常會定義新的對象和子系統(tǒng)。一般來說,將子系統(tǒng)分配給硬件節(jié)點使得我們能夠將功能和處理能力分布到最需要它們的地方。但同樣也引起了與子系統(tǒng)間存儲、傳送、復制和同步數據相關的問題。因此,系統(tǒng)設計人員也選擇適用的組件和合理的組合關系,用來開發(fā)軟件系統(tǒng)。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計 設計開發(fā)專用的應用軟件,操作系統(tǒng)的總體設計課件6.3子系統(tǒng)設計和訪問控制設計UML配置圖用來描述運行時組件和硬件節(jié)點間的關系。組件是為其他組件或執(zhí)行者提供服務的獨立實體。比如,學籍管理系統(tǒng)的組件圖根據需求分析,我們以VisualBasic為開發(fā)工具,其組件圖可設計如下(如圖6-18所示),這些為用戶提供服務的組件,組成了整個應用軟件系統(tǒng)。在UML配置圖中,ADO是一組獨立的數據訪問組件,是微軟公司開發(fā)可以自由進行發(fā)布的。微軟公司的ActiveXDataObjects(ADO)使您能夠編寫通過OLEDB提供者對在數據庫服務器中的數據進行訪問和操作的應用程序。其主要優(yōu)點是易于使用、高速度、低內存支出和占用磁盤空間較少。ADO支持用于建立基于客戶端/服務器和Web的應用程序的主要功能。另外ADO同時具有遠程數據服務上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計UML配置圖用來描述運行時組件6.3子系統(tǒng)設計和訪問控制設計 (RemoteDataService–RDS)功能,通過RDS可以在一次往返過程中實現將數據從服務器移動到客戶端應用程序或Web頁、在客戶端對數據進行處理然后將更新結果返回服務器的操作,以便簡化客戶端數據的遠程操作。VB運行支持庫組件是應用程序為在安裝后能正確運行而必備的文件。VisualBasic應用程序所用的VB運行支持庫包括:Msvbvm60.dll,Stdole2.tlb,Oleaut32.dll,Olepro32.dll,Comcat.dll,Asycfilt.dll,Ctl3d32.dll。打印機驅動程序則由硬件供應廠商來提供,無需另行開發(fā)或設計,直接在軟件發(fā)布期間進行安裝調試。上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計 (RemoteData6.3子系統(tǒng)設計和訪問控制設計圖6-19描述了教師專用機節(jié)點的組件的位置和組件間依賴關系。教師專用機節(jié)點包含了學籍管理系統(tǒng)中的主要組件如主程序、VB運行支持庫、ADO組件以及打印機驅動程序等。圖6-20描述數據庫服務器部署了Access數據庫文件,打印服務器部署了打印機驅動程序。硬件節(jié)點之間的關系參見圖6-17所示。隨著系統(tǒng)復雜度的增加和推上市場時間的縮短,開發(fā)人員非常愿意復用代碼并依靠供應商提供的組件。比如,交互式系統(tǒng)很少從零做起,而寧愿使用那些提供很多對話框、窗口、按鈕或其他標準接口對象的用戶接口工具包。其他項目只上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計圖6-19描述了教師專用機節(jié)點6.3子系統(tǒng)設計和訪問控制設計側重于重做現有系統(tǒng)的一部分。比如團體信息系統(tǒng),設計和構建的代價很高,需要升級新的用戶硬件。通常只將系統(tǒng)的客戶端用新技術升級而系統(tǒng)的后端不動,不管是處理現行組件還是處理遺留下來的代碼,開發(fā)人員都需要處理現已有的代碼,而這些代碼他們即無法修改,也無法集成進他們的系統(tǒng)。我們可以通過封裝現有組件(如代碼)來處理它們。這個方法的優(yōu)點將系統(tǒng)從封裝代碼中分離出來,以此減小現有軟件對設計的影響。當封裝代碼與新系統(tǒng)的代碼用同一種語言編寫時,可以用適配器模式來完成。進程間的通信協議(比如管道和套接字)常常是由操作系統(tǒng)提供的,因此與編程語言無關。對于使用分布式組件和進程上一頁下一頁返回6.3子系統(tǒng)設計和訪問控制設計側重于重做現有系統(tǒng)的一部分。比6.3子系統(tǒng)設計和訪問控制設計

通信的情況,調用服務的開銷要比在同一個進程中發(fā)送消息的開銷高得多。當選定響應時間和其他性能設計目標后,需要仔細評價采購和使用現有組件對整個系統(tǒng)性能所產生的影響。上一頁返回6.3子系統(tǒng)設計和訪問控制設計 通信的情況,調用服務的開銷要6.4總體設計報告系統(tǒng)設計的管理主要挑戰(zhàn)在于維護一致性,同時利用盡可能多的資源,系統(tǒng)設計報告(SoftwareDesignedDocument–SDD)就是完整、一致地詳細記錄系統(tǒng)設計的最新成果,在系統(tǒng)設計的最后階段,系統(tǒng)設計報告將軟件體系結構和系統(tǒng)接口描述成為開發(fā)人員能夠理解的一個完整而且一致的系統(tǒng)。形成完整的系統(tǒng)設計報告,首先要有記錄系統(tǒng)結果的文件模板,其次記錄系統(tǒng)設計中的任務分配和系統(tǒng)設計中的各方成果,最后按照一定的結構形成系統(tǒng)設計報告。系統(tǒng)設計報告在初始系統(tǒng)分解時就應該開始編寫,而不是在所有的系統(tǒng)設計確定之后才進行編寫,設計決策變更或發(fā)現問題都要修改系統(tǒng)設計報告,系統(tǒng)設計報告也應有相應的版本控制,記錄修改的簡要描述、修改的作者、修改的日期等。下一頁返回6.4總體設計報告系統(tǒng)設計的管理主要挑戰(zhàn)在于維護一致性,同時6.4總體設計報告6.4.1系統(tǒng)設計報告內容系統(tǒng)設計記錄在系統(tǒng)設計報告中,它通過項目、子系統(tǒng)分解、硬件/軟件映射、數據管理、訪問控制、全局控制流機制、功能范圍和設計標準等來描述系統(tǒng)設計目標。系統(tǒng)設計報告還用于定義開發(fā)小組間的接口,并作為需要重新評價體系結構層次的決策時的參考。系統(tǒng)設計報告的讀者包括項目經理、系統(tǒng)設計人員(比如參與系統(tǒng)設計的開發(fā)人員)和設計實現每個子系統(tǒng)的開發(fā)人員。系統(tǒng)設計報告的具體內容參看附錄。6.4.2系統(tǒng)設計報告的不斷優(yōu)化上一頁下一頁返回6.4總體設計報告6.4.1系統(tǒng)設計報告內容上一頁下一頁返回6.4總體設計報告與需求階段一樣,系統(tǒng)設計在不斷的反復和變化中進行。但是應該控制變化,以避免混亂,尤其是在有多個參與者的復雜項目中。系統(tǒng)設計報告要完整記錄系統(tǒng)設計的架構思路、保證體現系統(tǒng)設計的最新版本。由于每個系統(tǒng)設計活動可能同時被啟動,系統(tǒng)設計早期的主要決策且會影響子系統(tǒng)的分解,當評估原型用于評估特定問題時,子系統(tǒng)的接口將會發(fā)生變化,后期發(fā)現的錯誤和疏漏會引起子系統(tǒng)接口的變化,有時會改變系統(tǒng)分解自身,因此要保證設計報告的不斷優(yōu)化和更新。系統(tǒng)設計報告的優(yōu)化應注意以下幾個方面的問題。1.設計人員掌握整個系統(tǒng)是一個過程,各種定義和模型仍然不斷變化,必須以形式或過程為代價最大限度地進行交流。上一頁下一頁返回6.4總體設計報告與需求階段一樣,系統(tǒng)設計在不斷的反復和變化6.4總體設計報告在基于小組的項目中,最初的系統(tǒng)分解通常在完成分析是時就設計好了。分解系統(tǒng)就可以將不同子系統(tǒng)的任務分配給不同的小組,因此系統(tǒng)設計報告優(yōu)化是一個不斷整合的過程,系統(tǒng)報告應能夠適應設計的變化,避免將來在詳細設計和實現時出現理解上的不一致。2.系統(tǒng)設計報告對于需要解決的困難和關注的問題要進行細致描述和變化跟蹤,比如特定供應商的軟件產品或技術的選擇,子系統(tǒng)是否穩(wěn)定,特定的包或組件是否適于系統(tǒng)。在此期間,設計人員還應該對關鍵用例測試其分解的適當性。系統(tǒng)設計報告還可以幫助設計人員盡可能早地發(fā)現控制流中的問題并加以解決。上一頁下一頁返回6.4總體設計報告在基于小組的項目中,最初的系統(tǒng)分解通常在完6.4總體設計報告3.編寫系統(tǒng)設計報告也要追蹤需求變化,從而減少在開發(fā)實現中可能出現的反復糾正。記錄設計過程的詳細變化,要認真與需求分析人員、開發(fā)人員進行交流,修正系統(tǒng)設計中瑕疵,避免在開發(fā)過程中出現反復,特別是對子系統(tǒng)記錄要保持一定的獨立性,避免設計報告中出現混亂。上一頁返回6.4總體設計報告3.編寫系統(tǒng)設計報告也要追蹤需求變化,從而圖6-1倉庫體系結構的軟件系統(tǒng)(UML類圖)

返回圖6-1倉庫體系結構的軟件系統(tǒng)(UML類圖)返回圖6-2模型/視圖/控制器體系結構返回圖6-2模型/視圖/控制器體系結構返回圖6-3客戶/服務器體系結構返回圖6-3客戶/服務器體系結構返回圖6-4三層C/S結構示意圖返回圖6-4三層C/S結構示意圖返回圖6-5B/S結構示意圖返回圖6-5B/S結構示意圖返回圖6-6對等體系結構示意圖返回圖6-6對等體系結構示意圖返回圖6-7管道和過濾器體系結構(UML類圖)

返回子系統(tǒng)3子系統(tǒng)1子系統(tǒng)2過濾器過濾器過濾器管道管道輸入輸出輸入輸出圖6-7管道和過濾器體系結構(UML類圖)返回子系統(tǒng)3子系圖6-8系統(tǒng)總體設計活動圖返回圖6-8系統(tǒng)總體設計活動圖返回圖6-9學籍管理交費子系統(tǒng)分解返回圖6-9學籍管理交費子系統(tǒng)分解返回圖6-10學費信息分解示意圖返回圖6-10學費信息分解示意圖返回圖6-11服務與子系統(tǒng)接口示意圖返回圖6-11服務與子系統(tǒng)接口示意圖返回圖6-12學生交費子系統(tǒng)與學生檔案管理子系統(tǒng)示意圖返回圖6-12學生交費子系統(tǒng)與學生檔案管理子系統(tǒng)示意圖返回圖6-13學籍管理系統(tǒng)的分層設計返回圖6-13學籍管理系統(tǒng)的分層設計返回圖6-14利用ADO組件進行數據訪問存取示意圖返回圖6-14利用ADO組件進行數據訪問存取示意圖返回圖6-15過程驅動的設計返回圖6-15過程驅動的設計返回圖6-16學籍管理系統(tǒng)的事件驅動設計示例返回下一頁圖6-16學籍管理系統(tǒng)的事件驅動設計示例返回下一頁圖6-16學籍管理系統(tǒng)的事件驅動設計示例返回上一頁圖6-16學籍管理系統(tǒng)的事件驅動設計示例返回上一頁圖6-17學籍管理系統(tǒng)硬件配置圖返回圖6-17學籍管理系統(tǒng)硬件配置圖返回圖6-18學籍管理系統(tǒng)組件圖返回圖6-18學籍管理系統(tǒng)組件圖返回圖6-19含有組件的節(jié)點配置圖返回圖6-19含有組件的節(jié)點配置圖返回圖6-20含有組件的節(jié)點配置圖返回圖6-20含有組件的節(jié)點配置圖返回表6-1學籍管理系統(tǒng)設計目標明細表返回下一頁表6-1學籍管理系統(tǒng)設計目標明細表返回下一頁表6-1學籍管理系統(tǒng)設計目標明細表返回上一頁表6-1學籍管理系統(tǒng)設計目標明細表返回上一頁表6-2學籍管理系統(tǒng)用戶訪問控制權限明細表返回√:為指定欄目內的全部功能表6-2學籍管理系統(tǒng)用戶訪問控制權限明細表返回√:為指第六章系統(tǒng)的總體設計6.1系統(tǒng)設計概述6.2軟件體系架構6.3子系統(tǒng)設計和訪問控制設計6.4總體設計報告第六章系統(tǒng)的總體設計6.1系統(tǒng)設計概述6.1系統(tǒng)設計概述系統(tǒng)設計包括總體設計和詳細設計兩部分。系統(tǒng)設計是把分析模型轉變成系統(tǒng)設計模型的過程。1.系統(tǒng)設計的目標系統(tǒng)設計的任務是依據系統(tǒng)的邏輯模型,結合實際情況,設計出一個能在計算機系統(tǒng)上實現的具體設計方案,即新系統(tǒng)的物理模型。系統(tǒng)設計的目標應從以下幾個方面進行考慮。(1).系統(tǒng)的可靠性(2).系統(tǒng)的可維護性(3).系統(tǒng)的用戶友好性(4).系統(tǒng)的工作效率(5).系統(tǒng)的合法性下一頁返回6.1系統(tǒng)設計概述系統(tǒng)設計包括總體設計和詳細設計兩部分。系統(tǒng)6.1系統(tǒng)設計概述(6).系統(tǒng)的經濟性2.系統(tǒng)設計的內容系統(tǒng)設計的內容可分為總體設計和詳細設計兩部分。具體包括如下內容:(1).系統(tǒng)配置設計設計人員根據系統(tǒng)分析報告中所確定的系統(tǒng)目標、功能、性能、環(huán)境與制約條件,確定合適的計算機處理方式及體系結構,確定合適的計算機系統(tǒng)具體配置。(2).子系統(tǒng)和功能模塊設計根據系統(tǒng)分析階段得到的數據流程圖和數據詞典,設計出子系統(tǒng)和功能模塊結構圖,明確它們之間的相互關系。上一頁下一頁返回6.1系統(tǒng)設計概述(6).系統(tǒng)的經濟性上一頁下一頁返回6.1系統(tǒng)設計概述(3).對象設計根據系統(tǒng)分析報告設計出管理信息系統(tǒng)中用到的各種對象,確定對象類型、屬性、操作、服務及方法等,并形成對象設計文檔。如產品、往來客戶、職工及業(yè)務處理等各類對象的設計。(4).數據庫設計根據系統(tǒng)分析報告與系統(tǒng)的硬件、軟件配置,進行數據庫的概念設計、邏輯設計、物理設計,設計出系統(tǒng)有關的數據庫文件、數據庫結構、存取路徑、存取方式等。(5).輸入/輸出設計根據系統(tǒng)的目標、用戶的使用習慣及使用的方便,確定系統(tǒng)輸入的內容、輸入格式、輸入方式與輸入校驗;完成系統(tǒng)輸出的內容、輸出格式及輸出方式等內容的具體設計。上一頁下一頁返回6.1系統(tǒng)設計概述(3).對象設計根據系統(tǒng)分析報告設計出管理6.1系統(tǒng)設計概述(6).業(yè)務邏輯處理設計對系統(tǒng)中每一業(yè)務事項的詳細處理過程進行描述,編寫業(yè)務流程圖、處理方法和處理順序等,作為設計開發(fā)詳細設計和實現主要依據。(7).編寫系統(tǒng)設計報告根據系統(tǒng)設計階段所完成的總體設計及詳細設計內容,以書面的形式編寫符合要求的系統(tǒng)設計報告。系統(tǒng)設計報告既是系統(tǒng)設計階段的主要成果,經過審查批準后又是系統(tǒng)實施階段的主要技術依據。以上內容的設計在系統(tǒng)設計階段是按照一定的先后次序進行的,一般是先進行系統(tǒng)配置設計或系統(tǒng)架構設計,形成系統(tǒng)設計報告。再進行詳細設計包括細化對象設計、數據庫設計、輸入設計、輸出設計、模塊處理過程設計等具體內容,最后再編寫詳細設計文檔。上一頁返回6.1系統(tǒng)設計概述(6).業(yè)務邏輯處理設計對系統(tǒng)中每一業(yè)務事6.2軟件體系架構隨著系統(tǒng)復雜度的增加,系統(tǒng)分解的說明就變得相當關鍵。一旦開始進行開發(fā),就很難修改或者糾正一個不好的分解,因為這樣大多數子系統(tǒng)的接口就必須改動。為了認識到這個問題的重要性,出現了軟件體系結構的概念。軟件體系結構包括系統(tǒng)分解、全局控制流、錯誤處理策略和子系統(tǒng)間的通信協議。本節(jié)介紹一些典型的不同的體系結構,并簡要介紹不同軟件體系結構的設計思路。具有代表性的軟件體系結構包括倉庫體系結構、MVC體系結構、客戶/服務器體系結構、B/S結構、對等體系結構和管道過濾器結構等。下一頁返回6.2軟件體系架構隨著系統(tǒng)復雜度的增加,系統(tǒng)分解的說明就變得6.2軟件體系架構6.2.1倉庫體系結構(RepositoryArchitecture)在倉庫體系結構(如圖6-1所示)中,子系統(tǒng)通過一個稱為中心倉庫的單一數據結構訪問并修改數據。子系統(tǒng)相對獨立而且只通過中心數據結構相互作用?;蛘咄ㄟ^中心倉庫(例如數據中的觸發(fā)器調用外設)或者通過子系統(tǒng)(例如,通過倉庫的鎖來實現控制流的獨立和同步)來命令控制流。每個子系統(tǒng)只依賴于倉庫中心數據結構。而倉庫并不清楚其他子系統(tǒng)。對于像工資系統(tǒng)、學籍管理系統(tǒng)和銀行系統(tǒng)這樣的數據庫管理系統(tǒng)來說,倉庫體系結構是比較典型的。以數據為中心易于處理子系統(tǒng)間的并發(fā)和完整性問題。倉庫子系上一頁下一頁返回6.2軟件體系架構6.2.1倉庫體系結構(Repositor6.2軟件體系架構

統(tǒng)可以實現全局控制流。用戶可以調用其中的每個界面,倉庫體系結構也適用于處理任務不斷改變的復雜的應用系統(tǒng)。但是倉庫子系統(tǒng)的主要缺點是子系統(tǒng)與倉庫之間耦合度很高,對倉庫數據結構的修改必然會影響到子系統(tǒng)。6.6.2模型/視圖/控制器體系結構(ModelViewControl--MVCArchitecture)在模型/視圖/控制器(MVC)體系結構(見圖6-2)中,子系統(tǒng)分為三種不同的類型:模型子系統(tǒng)負責維護系統(tǒng)的數據結構和數據信息;視圖子系統(tǒng)負責把系統(tǒng)數據信息顯示給用上一頁下一頁返回6.2軟件體系架構 統(tǒng)可以實現全局控制流。用戶可以調用其中的6.2軟件體系架構

戶;控制器子系統(tǒng)負責管理與用戶交互的順序。模型子系統(tǒng)發(fā)展成完全不依賴于任何視圖或控制器子系統(tǒng)。它們狀態(tài)的變化通過訂閱/通知(subscription/notification)協議傳輸給視圖子系統(tǒng)。MVC體系結構是倉庫體系結構的特例,模型實現了中心數據結構,控制對象指揮著控制流。這種體系結構經常用于WEB服務器系統(tǒng)設計??刂破魇占瘉碜杂脩舻妮斎氩l(fā)消息給模型。模型保持中心數據結構。視圖顯示模型,每當模型發(fā)生變化時得到通知(通過簽署/通知協議)。MVC體系結構將交互式應用程序分為三個區(qū)域:輸入、處理和輸出。模型組件封裝了內核數據和功能。模型獨立于特定輸出表示法或輸入方式。上一頁下一頁返回6.2軟件體系架構 戶;控制器子系統(tǒng)負責管理與用戶交互的順序6.2軟件體系架構視圖組件子系統(tǒng)向用戶顯示信息。視圖從模型獲得數據??赡苡心P偷亩鄠€視圖。每個視圖都有一個相關的控制器組件??刂破鹘邮茌斎耄ǔW鳛閷⑹髽艘苿?、鼠標按鈕的活動或鍵盤輸入編碼的事件。事件被翻譯成模型或視圖的服務器請求。用戶僅僅通過控制器與系統(tǒng)交互。模型與視圖和控制器組件的分離將允許同一個模型的多個視圖。如果用戶通過一個視圖的控制器改變了模型,所有依賴于該數據的其他視圖應該反映出這種變化。因此一旦模型的數據發(fā)生了變化,模型要通報所有視圖。視圖反過來從模型恢復新數據并更新所顯示的信息。這種變更-傳播機制相當于訂閱—發(fā)行。上一頁下一頁返回6.2軟件體系架構視圖組件子系統(tǒng)向

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論