




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1 軟件工程軟件工程 Software Engineering2第第7章章 面向對象的設計面向對象的設計o從面向對象分析到面向對象設計從面向對象分析到面向對象設計(通常縮寫為通??s寫為OOD),是一個逐漸擴充模型的過程?;蛘哒f,面,是一個逐漸擴充模型的過程。或者說,面向對象設計就是用面向對象觀點建立求解域模型的向對象設計就是用面向對象觀點建立求解域模型的過程。過程。o分析和設計活動是一個多次反復迭代的過程,二者分析和設計活動是一個多次反復迭代的過程,二者的界限是模糊的。的界限是模糊的。第第7章章 面向對象的設計面向對象的設計o面向對象設計過程與準則面向對象設計過程與準則o體系結構體系結構o系統(tǒng)
2、分解系統(tǒng)分解o問題域部分的設計問題域部分的設計o人機交互部分的設計人機交互部分的設計o任務管理部分的設計任務管理部分的設計o數(shù)據(jù)管理部分的設計數(shù)據(jù)管理部分的設計o對象設計對象設計面向對象設計過程與準則面向對象設計過程與準則o典型的面向對象設計模型典型的面向對象設計模型 面向對象設計過程與準則面向對象設計過程與準則oCoad&Yourdon的面向對象設計模型的面向對象設計模型Coad & YourdonCoad & Yourdon基于基于MVCMVC(Model-View-ControllerModel-View-Controller)模型,)模型,在邏輯上將系統(tǒng)劃分為在
3、邏輯上將系統(tǒng)劃分為4 4個部分,分別是個部分,分別是問題域部分問題域部分、人機人機交互部分交互部分、任務管理部分任務管理部分及及數(shù)據(jù)管理部分數(shù)據(jù)管理部分,每一部分又可,每一部分又可分為若干子系統(tǒng)。分為若干子系統(tǒng)。 Coad Coad 與與 Yourdon Yourdon 在設計階段中繼續(xù)采用了分析階段中提在設計階段中繼續(xù)采用了分析階段中提到的到的5 5個層次,用于建立系統(tǒng)的個層次,用于建立系統(tǒng)的4 4個組成成分。每一個子系個組成成分。每一個子系統(tǒng)都由統(tǒng)都由主題主題、類類-&-&-對象對象、結構結構、屬性屬性和和服務服務5 5個層次組成。個層次組成。這這5 5個層次可以被當作整個
4、模型的水平切片。個層次可以被當作整個模型的水平切片。 面向對象設計過程與準則面向對象設計過程與準則o人機交互部分人機交互部分n有效的人機交互所必須的實際顯示和輸入。有效的人機交互所必須的實際顯示和輸入。o問題域部分問題域部分n放置面向對象分析結果并管理面向對象分析的某些類和放置面向對象分析結果并管理面向對象分析的某些類和對象、結構、屬性和方法。對象、結構、屬性和方法。o任務管理部分任務管理部分n任務定義、通信和協(xié)調、硬件分配及外部系統(tǒng)。任務定義、通信和協(xié)調、硬件分配及外部系統(tǒng)。o數(shù)據(jù)管理部分數(shù)據(jù)管理部分n永久性數(shù)據(jù)的訪問和管理。永久性數(shù)據(jù)的訪問和管理。面向對象設計過程與準則面向對象設計過程與準
5、則o面向對象設計準則面向對象設計準則(1) 模塊化模塊化傳統(tǒng)的面向過程方法中的模塊通常是函數(shù)、過程及子程序傳統(tǒng)的面向過程方法中的模塊通常是函數(shù)、過程及子程序等,而面向對象方法中的模塊則是類、對象、接口、構件等,而面向對象方法中的模塊則是類、對象、接口、構件等。等。在面向過程的方法中,數(shù)據(jù)及在數(shù)據(jù)上的處理是分離的;在面向過程的方法中,數(shù)據(jù)及在數(shù)據(jù)上的處理是分離的;而在面向對象方法中,數(shù)據(jù)及其上的處理是封裝在一起的,而在面向對象方法中,數(shù)據(jù)及其上的處理是封裝在一起的,具有更好的獨立性,也能夠更好地支持復用。具有更好的獨立性,也能夠更好地支持復用。 面向對象設計過程與準則面向對象設計過程與準則(2)
6、 抽象抽象面向對象方法不僅支持過程抽象,而且支持數(shù)據(jù)抽象。類面向對象方法不僅支持過程抽象,而且支持數(shù)據(jù)抽象。類實際上就是一種抽象數(shù)據(jù)類型。可以將實際上就是一種抽象數(shù)據(jù)類型。可以將類的抽象類的抽象分為分為規(guī)格規(guī)格說明抽象說明抽象及及參數(shù)化抽象參數(shù)化抽象。類對外開放的公共接口構成了類對外開放的公共接口構成了類的規(guī)格說明,即協(xié)議類的規(guī)格說明,即協(xié)議。這。這種接口規(guī)定了外部可以使用的服務,使用者無需知道這些種接口規(guī)定了外部可以使用的服務,使用者無需知道這些服務的具體實現(xiàn)算法。通常將這類抽象稱為規(guī)格說明抽象。服務的具體實現(xiàn)算法。通常將這類抽象稱為規(guī)格說明抽象。參數(shù)化抽象參數(shù)化抽象是指當描述類的規(guī)格說明時
7、并不具體指定所要是指當描述類的規(guī)格說明時并不具體指定所要操作的數(shù)據(jù)類型,而是將數(shù)據(jù)類型作為參數(shù)。操作的數(shù)據(jù)類型,而是將數(shù)據(jù)類型作為參數(shù)。 面向對象設計過程與準則面向對象設計過程與準則(3) 信息隱藏信息隱藏在面向對象方法中,信息隱藏通過對象的封裝性實現(xiàn)。對在面向對象方法中,信息隱藏通過對象的封裝性實現(xiàn)。對于類的用戶來說,屬性的表示方法和操作的實現(xiàn)算法都應于類的用戶來說,屬性的表示方法和操作的實現(xiàn)算法都應該是隱藏的。該是隱藏的。(4) 弱耦合弱耦合耦合是指一個軟件結構內(nèi)不同模塊之間互連的緊密程度。耦合是指一個軟件結構內(nèi)不同模塊之間互連的緊密程度。在面向對象方法中,對象是最基本的模塊,因此,耦合主
8、在面向對象方法中,對象是最基本的模塊,因此,耦合主要指不同對象之間相互關聯(lián)的緊密程度。要指不同對象之間相互關聯(lián)的緊密程度。 面向對象設計過程與準則面向對象設計過程與準則(5) 強內(nèi)聚強內(nèi)聚o內(nèi)聚衡量一個模塊內(nèi)各個元素彼此結合的緊密程度。在面內(nèi)聚衡量一個模塊內(nèi)各個元素彼此結合的緊密程度。在面向對象設計中存在以下向對象設計中存在以下3種內(nèi)聚:種內(nèi)聚:(1) 服務內(nèi)聚服務內(nèi)聚:一個服務應該完成一個且僅完成一個功能。:一個服務應該完成一個且僅完成一個功能。(2) 類內(nèi)聚類內(nèi)聚:設計類的原則是,一個類應該只有一個用途,它:設計類的原則是,一個類應該只有一個用途,它的屬性和服務應該是高內(nèi)聚的。類的屬性和服
9、務應該全都的屬性和服務應該是高內(nèi)聚的。類的屬性和服務應該全都是完成該類對象的任務所必需的,其中不包含無用的屬性是完成該類對象的任務所必需的,其中不包含無用的屬性或服務。如果某個類有多個用途,通常應該把它分解成多或服務。如果某個類有多個用途,通常應該把它分解成多個專用的類。個專用的類。(3) 一般一般特殊內(nèi)聚特殊內(nèi)聚:設計出的一般:設計出的一般特殊結構,應該符合多特殊結構,應該符合多數(shù)人的概念,更準確地說,這種結構應該是對相應的領域數(shù)人的概念,更準確地說,這種結構應該是對相應的領域知識的正確抽取。知識的正確抽取。 面向對象設計過程與準則面向對象設計過程與準則(6) (6) 可重用可重用o軟件重用
10、是提高軟件開發(fā)生產(chǎn)率和目標系統(tǒng)質量的軟件重用是提高軟件開發(fā)生產(chǎn)率和目標系統(tǒng)質量的重要途徑。重要途徑。o重用基本上從設計階段開始。重用有兩方面的含義:重用基本上從設計階段開始。重用有兩方面的含義:一、盡量使用已有的類一、盡量使用已有的類( (包括開發(fā)環(huán)境提供的類庫,包括開發(fā)環(huán)境提供的類庫,及以往開發(fā)類似系統(tǒng)時創(chuàng)建的類及以往開發(fā)類似系統(tǒng)時創(chuàng)建的類) ), 二、如果確實需要創(chuàng)建新類,則在設計這些新類的二、如果確實需要創(chuàng)建新類,則在設計這些新類的協(xié)議時,應該考慮將來的可重復使用性。協(xié)議時,應該考慮將來的可重復使用性。分布式系統(tǒng)結構分布式系統(tǒng)結構傳統(tǒng)的傳統(tǒng)的C/S體系結構分為兩層。在這種體系結構中,一體
11、系結構分為兩層。在這種體系結構中,一個應用系統(tǒng)被劃分為客戶機和服務器兩部分。典型的兩層個應用系統(tǒng)被劃分為客戶機和服務器兩部分。典型的兩層C/S體系結構如下圖所示。體系結構如下圖所示。12分布式系統(tǒng)結構分布式系統(tǒng)結構o三層三層C/S體系結構中增加了應用服務器。可以將整體系結構中增加了應用服務器??梢詫⒄麄€應用邏輯駐留在應用服務器上,而只有表示層存?zhèn)€應用邏輯駐留在應用服務器上,而只有表示層存在于客戶機上。在于客戶機上。13分布式系統(tǒng)結構分布式系統(tǒng)結構(1)表示層表示層:表示層是應用系統(tǒng)的用戶界面部分,擔負著:表示層是應用系統(tǒng)的用戶界面部分,擔負著用戶與應用程序之間的對話功能。它用于檢查用戶從鍵盤等
12、用戶與應用程序之間的對話功能。它用于檢查用戶從鍵盤等輸入的數(shù)據(jù),顯示應用程序輸出的數(shù)據(jù),一般采用圖形用戶輸入的數(shù)據(jù),顯示應用程序輸出的數(shù)據(jù),一般采用圖形用戶界面(界面(graphic user interface, GUI)。)。(2)應用邏輯層應用邏輯層:應用邏輯層為應用系統(tǒng)的主體部分,包:應用邏輯層為應用系統(tǒng)的主體部分,包含具體的業(yè)務處理邏輯。通常在功能層中包含有確認用戶對含具體的業(yè)務處理邏輯。通常在功能層中包含有確認用戶對應用和數(shù)據(jù)庫存取權限的功能以及記錄系統(tǒng)處理日志的功應用和數(shù)據(jù)庫存取權限的功能以及記錄系統(tǒng)處理日志的功能。能。(3)數(shù)據(jù)層數(shù)據(jù)層:數(shù)據(jù)層主要包括數(shù)據(jù)的存儲及對數(shù)據(jù)的存?。?/p>
13、數(shù)據(jù)層主要包括數(shù)據(jù)的存儲及對數(shù)據(jù)的存取操作,一般選擇關系型數(shù)據(jù)庫管理系統(tǒng)(操作,一般選擇關系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)。)。 分布式系統(tǒng)結構分布式系統(tǒng)結構p瀏覽器瀏覽器/服務器服務器(browser/server,B/S)風格是)風格是三層體系結構的一種實現(xiàn)方式,其具體結構為瀏覽器三層體系結構的一種實現(xiàn)方式,其具體結構為瀏覽器/Web服務器服務器/數(shù)據(jù)庫服務器。數(shù)據(jù)庫服務器。B/S體系結構如下圖所體系結構如下圖所示。示。分布式系統(tǒng)結構分布式系統(tǒng)結構p在客戶機在客戶機/服務器模型中,客戶機和服務器的地位是不服務器模型中,客戶機和服務器的地位是不同的。為了消除客戶機與服務器之間的差別,提高系統(tǒng)
14、同的。為了消除客戶機與服務器之間的差別,提高系統(tǒng)的的伸縮性伸縮性以及有效地以及有效地均衡負載均衡負載,可采用分布式對象體系,可采用分布式對象體系結構來設計系統(tǒng)。結構來設計系統(tǒng)。p 分布式對象分布式對象的實質是在分布式異構環(huán)境下建立應用系的實質是在分布式異構環(huán)境下建立應用系統(tǒng)框架和對象構件,它將應用服務分割成具有完整邏輯統(tǒng)框架和對象構件,它將應用服務分割成具有完整邏輯含義的獨立子模塊(稱為含義的獨立子模塊(稱為構件構件),各個子模塊可放在同),各個子模塊可放在同一臺服務器或分布在多臺服務器上運行,模塊之間通過一臺服務器或分布在多臺服務器上運行,模塊之間通過中間件互相通信。中間件互相通信。 分布式
15、對象體系結構分布式對象體系結構 分布式系統(tǒng)結構分布式系統(tǒng)結構 通常將這個中間件稱為通常將這個中間件稱為軟件總線軟件總線或或對象請求代理對象請求代理,它的,它的作用是在對象之間提供一個無縫接口。作用是在對象之間提供一個無縫接口。 分布式對象技術的應用目的分布式對象技術的應用目的是為了降低主服務器的負荷、是為了降低主服務器的負荷、共享網(wǎng)絡資源、平衡網(wǎng)絡中計算機業(yè)務處理的分配,提高計共享網(wǎng)絡資源、平衡網(wǎng)絡中計算機業(yè)務處理的分配,提高計算機系統(tǒng)協(xié)同處理的能力,從而使應用的實現(xiàn)更為靈活。算機系統(tǒng)協(xié)同處理的能力,從而使應用的實現(xiàn)更為靈活。分布式系統(tǒng)結構分布式系統(tǒng)結構分布式對象技術的基礎是構件。分布式對象技
16、術的基礎是構件。構件構件是一些獨立的代碼是一些獨立的代碼封裝體,在分布計算的環(huán)境下可以是封裝體,在分布計算的環(huán)境下可以是一個簡單的對象一個簡單的對象,但大多數(shù)情況下是但大多數(shù)情況下是一組相關的對象組合體一組相關的對象組合體,提供一定的,提供一定的服務。服務。分布式環(huán)境下,構件是一些靈活的軟件模塊,它們可以分布式環(huán)境下,構件是一些靈活的軟件模塊,它們可以位置透明、語言獨立和平臺獨立地互相發(fā)送消息,實現(xiàn)位置透明、語言獨立和平臺獨立地互相發(fā)送消息,實現(xiàn)請求服務。請求服務。構件之間并不存在客戶機與服務器的界限,接受服務者構件之間并不存在客戶機與服務器的界限,接受服務者扮演客戶機的角色,提供服務者就是服
17、務器。扮演客戶機的角色,提供服務者就是服務器。 分布式系統(tǒng)結構分布式系統(tǒng)結構當前主流的分布式對象技術規(guī)范有當前主流的分布式對象技術規(guī)范有OMG的的CORBA、Microsoft公司的公司的.NET和和Sun公司的公司的J2EE。它們都支持服務端構件的開發(fā),都有其各自的特點。它們都支持服務端構件的開發(fā),都有其各自的特點。分布式系統(tǒng)結構分布式系統(tǒng)結構MVC框架即模型框架即模型視圖視圖控制器(控制器(model-view-controller)框架。一個交互式應用系統(tǒng)由框架。一個交互式應用系統(tǒng)由模型模型、視圖視圖和和控制器控制器3個部件個部件組成。組成。 MVC框架框架 體系結構框架體系結構框架22
18、體系結構框架體系結構框架MVC框架框架 J2EE的核心體系結構就是在的核心體系結構就是在MVC框架的基礎上進行擴框架的基礎上進行擴展得到的,如下圖所示。展得到的,如下圖所示。 J2EE體系結構框架體系結構框架 客戶層客戶層 應用程序 資源層資源層 表示層表示層 表示邏輯內(nèi)容管理 會話管理 業(yè)務層業(yè)務層 應用邏輯業(yè)務規(guī)則 業(yè)務對象 集成層集成層 數(shù)據(jù)訪問消息接發(fā) 服務集成 J2EE的核心體系結構框架的核心體系結構框架 體系結構框架體系結構框架問題域部分的設計問題域部分的設計o典型的面向對象系統(tǒng)一般由三層組成,即典型的面向對象系統(tǒng)一般由三層組成,即數(shù)據(jù)庫層數(shù)據(jù)庫層、業(yè)務業(yè)務邏輯層邏輯層及及用戶界面
19、層用戶界面層。那么,在這三層中,首先從哪一層。那么,在這三層中,首先從哪一層開始設計呢?開始設計呢?o實際上,面向對象的設計也是以面向對象分析的模型為基實際上,面向對象的設計也是以面向對象分析的模型為基礎的。礎的。o面向對象的分析模型包括有面向對象的分析模型包括有用例圖用例圖、類圖類圖、順序圖順序圖和和包圖包圖,主要是對主要是對問題領域問題領域進行描述,基本上不考慮技術實現(xiàn),當進行描述,基本上不考慮技術實現(xiàn),當然也不考慮數(shù)據(jù)庫層和用戶界面層。然也不考慮數(shù)據(jù)庫層和用戶界面層。o面向對象分析所得到的問題域模型可以直接應用于系統(tǒng)的面向對象分析所得到的問題域模型可以直接應用于系統(tǒng)的問題域部分的設計。問
20、題域部分的設計。 所以,面向對象設計應該從問題域部分的設計開始,也就是所以,面向對象設計應該從問題域部分的設計開始,也就是三層結構的中間層三層結構的中間層應用邏輯層。應用邏輯層。問題域部分的設計問題域部分的設計o在面向對象設計過程中,可能對面向對象分析所在面向對象設計過程中,可能對面向對象分析所得出的問題域模型做以下方面的補充或調整。得出的問題域模型做以下方面的補充或調整。(1)調整需求。有兩種情況會導致修改通過面向對象調整需求。有兩種情況會導致修改通過面向對象分析所確定的系統(tǒng)需求:分析所確定的系統(tǒng)需求:一是用戶需求或外部環(huán)境發(fā)生變化;一是用戶需求或外部環(huán)境發(fā)生變化;二是分析員對問題理解不透徹
21、,導致分析模型不能完整、二是分析員對問題理解不透徹,導致分析模型不能完整、準確地反映用戶的真實需求。準確地反映用戶的真實需求。問題域部分的設計問題域部分的設計(2) 復用已有的類復用已有的類從類庫選擇已有的類,從供應商那里購買商業(yè)外購構件,從類庫選擇已有的類,從供應商那里購買商業(yè)外購構件,從網(wǎng)絡、組織、小組或個人那里搜集適用的遺留軟構件,從網(wǎng)絡、組織、小組或個人那里搜集適用的遺留軟構件,把它們增加到問題域部分的設計中去。把它們增加到問題域部分的設計中去。在被復用的已有類和問題域類之間添加泛化(一般化在被復用的已有類和問題域類之間添加泛化(一般化特殊特殊化)關系,繼承被復用類或構件屬性和方法。化
22、)關系,繼承被復用類或構件屬性和方法。標出在問題域類中因繼承被復用的已有類或構件而成為多標出在問題域類中因繼承被復用的已有類或構件而成為多余的屬性和服務。余的屬性和服務。修改與問題域類相關的關聯(lián)。修改與問題域類相關的關聯(lián)。 問題域部分的設計問題域部分的設計(3) 把問題域類組合在一起把問題域類組合在一起在進行面向對象設計時,通常需要先引入一個類,以便將在進行面向對象設計時,通常需要先引入一個類,以便將問題域專用的類組合在一起,它起到問題域專用的類組合在一起,它起到“根根”類的作用,將類的作用,將全部下層的類組合在一起。全部下層的類組合在一起。當沒有一種更滿意的組合機制可用時,可以從類庫中引進當
23、沒有一種更滿意的組合機制可用時,可以從類庫中引進一個根類,作為包容類,把所有與問題領域有關的類關聯(lián)一個根類,作為包容類,把所有與問題領域有關的類關聯(lián)到一起,建立類的層次。到一起,建立類的層次。之后,將同一問題領域的一些類集合起來,存于類庫中。之后,將同一問題領域的一些類集合起來,存于類庫中。問題域部分的設計問題域部分的設計(4) 增添泛化類以建立類間的協(xié)議增添泛化類以建立類間的協(xié)議有時某些問題域的類要求一組類似的服務(以及相應的屬有時某些問題域的類要求一組類似的服務(以及相應的屬性)。此時,以這些問題域的類作為特化的類,定義一個性)。此時,以這些問題域的類作為特化的類,定義一個泛化類。泛化類。
24、該泛化類定義了為所有這些特化類共用的一組服務名,作該泛化類定義了為所有這些特化類共用的一組服務名,作為公共的協(xié)議,用來與數(shù)據(jù)管理或其他外部系統(tǒng)部件通信。為公共的協(xié)議,用來與數(shù)據(jù)管理或其他外部系統(tǒng)部件通信。這些服務都是虛函數(shù)。在各個特化類中定義其實現(xiàn)。這些服務都是虛函數(shù)。在各個特化類中定義其實現(xiàn)。問題域部分的設計問題域部分的設計(5) 調整繼承的支持級別調整繼承的支持級別如果在分析模型中一個泛化關系中的特化類繼承了多個類如果在分析模型中一個泛化關系中的特化類繼承了多個類的屬性或服務,就產(chǎn)生了多繼承關系,如圖所示。的屬性或服務,就產(chǎn)生了多繼承關系,如圖所示。 問題域部分的設計問題域部分的設計1)
25、1) 針對單繼承語言的調整。對于只支持單繼承關系的編程語針對單繼承語言的調整。對于只支持單繼承關系的編程語言,可以使用兩種方法將多繼承結構轉換為單繼承結構。言,可以使用兩種方法將多繼承結構轉換為單繼承結構。 把特化類看做是泛化類所扮演的角色,如圖把特化類看做是泛化類所扮演的角色,如圖(a)(a)和圖和圖(b)(b)所示。所示。 問題域部分的設計問題域部分的設計 把多繼承的層次結構平鋪為單繼承的層次結構,如圖所示。把多繼承的層次結構平鋪為單繼承的層次結構,如圖所示。這意味著該泛化關系在設計中就不再那么清晰了。同時某這意味著該泛化關系在設計中就不再那么清晰了。同時某些屬性和服務在特化類中重復出現(xiàn),
26、造成冗余。些屬性和服務在特化類中重復出現(xiàn),造成冗余。問題域部分的設計問題域部分的設計2) 2) 針對無繼承語言的調整。針對無繼承語言的調整。編程語言中的繼承屬性提供了表達問題域的一般化編程語言中的繼承屬性提供了表達問題域的一般化特殊化特殊化語義的語法,它明確地表示了公共屬性和服務,還為通過語義的語法,它明確地表示了公共屬性和服務,還為通過可擴展性而達到可復用性提供了基礎??蓴U展性而達到可復用性提供了基礎。然而,由于開發(fā)組織方面的原因,有些項目最終選擇了不然而,由于開發(fā)組織方面的原因,有些項目最終選擇了不支持繼承性的編程語言。對于一個不支持繼承的編程語言支持繼承性的編程語言。對于一個不支持繼承的
27、編程語言來說,只能將每一個泛化關系的層次展開,成為一組類及來說,只能將每一個泛化關系的層次展開,成為一組類及對象,之后再使用命名慣例將它們組合在一起。對象,之后再使用命名慣例將它們組合在一起。 問題域部分的設計問題域部分的設計(6) 改進性能改進性能 提高執(zhí)行效率是系統(tǒng)設計的目標之一。為以提高效率有時必提高執(zhí)行效率是系統(tǒng)設計的目標之一。為以提高效率有時必須改變問題域的結構。須改變問題域的結構。 1) 1) 如果類之間經(jīng)常需要傳送大量消息,可合并相關的類,如果類之間經(jīng)常需要傳送大量消息,可合并相關的類,使得通信成為對象內(nèi)的通信,而不是對象之間的通信,或使得通信成為對象內(nèi)的通信,而不是對象之間的通
28、信,或者使用全局數(shù)據(jù)作用域,打破封裝的原則,以減少消息傳者使用全局數(shù)據(jù)作用域,打破封裝的原則,以減少消息傳遞引起的速度損失。遞引起的速度損失。 2) 2) 增加某些屬性到原來的類中,或增加低層的類,以保存增加某些屬性到原來的類中,或增加低層的類,以保存暫時結果,避免每次都要重復計算造成速度損失。暫時結果,避免每次都要重復計算造成速度損失。問題域部分的設計問題域部分的設計(7) 存儲對象存儲對象 通常的作法是,每個對象將自己傳送給數(shù)據(jù)管理部通常的作法是,每個對象將自己傳送給數(shù)據(jù)管理部分,讓數(shù)據(jù)管理部分來存儲對象本身。分,讓數(shù)據(jù)管理部分來存儲對象本身。人機交互部分的設計人機交互部分的設計o用戶界面
29、設計步驟用戶界面設計步驟 (1) (1) 從系統(tǒng)的輸入、輸出及與用戶的交互中獲得信息,定義界從系統(tǒng)的輸入、輸出及與用戶的交互中獲得信息,定義界面對象和行為(操作)。面對象和行為(操作)。(2) (2) 定義那些導致用戶界面狀態(tài)發(fā)生變化的事件,對事件建模。定義那些導致用戶界面狀態(tài)發(fā)生變化的事件,對事件建模。(3) (3) 描述最終向用戶展示的每一個界面的狀態(tài)。描述最終向用戶展示的每一個界面的狀態(tài)。(4) (4) 簡要說明用戶如何從界面提供的界面信息來解釋系統(tǒng)狀態(tài)。簡要說明用戶如何從界面提供的界面信息來解釋系統(tǒng)狀態(tài)。WebWeb應用系統(tǒng)的界面設計應用系統(tǒng)的界面設計 界面設計目標界面設計目標 (1)
30、 (1) 簡單性簡單性:盡量做到適度和簡單,不要在頁面上提供太多:盡量做到適度和簡單,不要在頁面上提供太多的東西。的東西。(2)(2) 一致性一致性:這一設計目標幾乎適用于設計模型的每一個元:這一設計目標幾乎適用于設計模型的每一個元素。素。 (3) (3) 確定性確定性:WebWeb應用系統(tǒng)的美學、界面和導航設計必須與應用系統(tǒng)的美學、界面和導航設計必須與將要構造的應用系統(tǒng)所處的領域保持一致。將要構造的應用系統(tǒng)所處的領域保持一致。 (4) (4) 健壯性健壯性:在已經(jīng)建立的確定性的基礎上,:在已經(jīng)建立的確定性的基礎上,WebWeb應用系統(tǒng)應用系統(tǒng)通常會給用戶明確的通常會給用戶明確的“承諾承諾”。
31、 WebWeb應用系統(tǒng)的界面設計應用系統(tǒng)的界面設計o界面設計目標界面設計目標 (5) (5) 導航性導航性:我們已經(jīng)在前面提及了導航應該簡單和一致,也:我們已經(jīng)在前面提及了導航應該簡單和一致,也應該以直觀的和可預測的方式來設計。也就是說,用戶不應該以直觀的和可預測的方式來設計。也就是說,用戶不必搜索導航鏈接和幫助就知道如何使用必搜索導航鏈接和幫助就知道如何使用WebWeb應用系統(tǒng)。應用系統(tǒng)。(6) (6) 視覺吸引視覺吸引:在所有類型的軟件中,:在所有類型的軟件中,WebWeb應用系統(tǒng)毫無疑問應用系統(tǒng)毫無疑問是最具有視覺效果的、最生動的、也是最具有審美感的。是最具有視覺效果的、最生動的、也是最
32、具有審美感的。 (7) (7) 兼容性兼容性:WebWeb應用系統(tǒng)會應用于不同的環(huán)境應用系統(tǒng)會應用于不同的環(huán)境( (例如,不同的例如,不同的硬件、硬件、InternetInternet連接類型、操作系統(tǒng)、瀏覽器連接類型、操作系統(tǒng)、瀏覽器) ),并且必須,并且必須互相兼容?;ハ嗉嫒荨ebWeb應用系統(tǒng)的界面設計應用系統(tǒng)的界面設計o界面設計工作流界面設計工作流 (1) (1) 回顧那些在分析模型中的信息,并根據(jù)需要進行優(yōu)化?;仡櫮切┰诜治瞿P椭械男畔?,并根據(jù)需要進行優(yōu)化。(2) (2) 開發(fā)開發(fā)WebWeb應用系統(tǒng)界面布局的草圖。應用系統(tǒng)界面布局的草圖。 (3) (3) 將用戶目標映射到特定的界
33、面行為。將用戶目標映射到特定的界面行為。 (4) (4) 定義與每個行為相關的一組用戶任務。定義與每個行為相關的一組用戶任務。 (5) (5) 為每個界面行為設計情節(jié)串聯(lián)圖板屏像。為每個界面行為設計情節(jié)串聯(lián)圖板屏像。(6) (6) 利用從美學設計中的輸入來優(yōu)化界面布局和情節(jié)串聯(lián)圖板。利用從美學設計中的輸入來優(yōu)化界面布局和情節(jié)串聯(lián)圖板。 WebWeb應用系統(tǒng)的界面設計應用系統(tǒng)的界面設計o界面設計工作流界面設計工作流 (7) (7) 明確實現(xiàn)界面功能的界面對象。明確實現(xiàn)界面功能的界面對象。 (8) (8) 開發(fā)用戶與界面交互的過程表示。開發(fā)用戶與界面交互的過程表示。 (9) (9) 開發(fā)界面的行為
34、表示法。開發(fā)界面的行為表示法。 (10) (10) 描述每種狀態(tài)的界面布局。描述每種狀態(tài)的界面布局。 (11) (11) 優(yōu)化和評審界面設計模型。優(yōu)化和評審界面設計模型。 任務管理部分的設計任務管理部分的設計o任務管理主要包括任務管理主要包括任務的選擇和調整任務的選擇和調整。o常見的任務有:常見的任務有:n事件驅動型任務、事件驅動型任務、n時鐘驅動型任務、時鐘驅動型任務、n優(yōu)先任務、優(yōu)先任務、n關鍵任務和協(xié)調任務等。關鍵任務和協(xié)調任務等。o設計任務管理子系統(tǒng)時,需要確定各類任務,并將設計任務管理子系統(tǒng)時,需要確定各類任務,并將任務分配給適當?shù)挠布蜍浖?zhí)行。任務分配給適當?shù)挠布蜍浖?zhí)行。
35、任務管理部分的設計任務管理部分的設計1. 識別事件驅動任務識別事件驅動任務有些任務是事件驅動的,這些任務可能是負責與設備、其有些任務是事件驅動的,這些任務可能是負責與設備、其他處理機或其他系統(tǒng)通信的。他處理機或其他系統(tǒng)通信的。這類任務可以設計成由一個事件來觸發(fā),該事件常常針對這類任務可以設計成由一個事件來觸發(fā),該事件常常針對一些數(shù)據(jù)的到達發(fā)出信號。一些數(shù)據(jù)的到達發(fā)出信號。數(shù)據(jù)可能來自數(shù)據(jù)行或者來自另一個任務寫入的數(shù)據(jù)緩沖數(shù)據(jù)可能來自數(shù)據(jù)行或者來自另一個任務寫入的數(shù)據(jù)緩沖區(qū)。區(qū)。任務管理部分的設計任務管理部分的設計(1) 識別事件驅動任務識別事件驅動任務當系統(tǒng)運行時,這類任務的工作過程如下:當系
36、統(tǒng)運行時,這類任務的工作過程如下:任務處于睡眠狀態(tài),等待來自數(shù)據(jù)行或其他數(shù)據(jù)源的中斷;任務處于睡眠狀態(tài),等待來自數(shù)據(jù)行或其他數(shù)據(jù)源的中斷;一旦接收到中斷就喚醒該任務,接收數(shù)據(jù)并將數(shù)據(jù)放入內(nèi)一旦接收到中斷就喚醒該任務,接收數(shù)據(jù)并將數(shù)據(jù)放入內(nèi)存緩沖區(qū)或其他目的地,通知需要知道這件事的對象,然存緩沖區(qū)或其他目的地,通知需要知道這件事的對象,然后該任務又回到睡眠狀態(tài)。后該任務又回到睡眠狀態(tài)。 任務管理部分的設計任務管理部分的設計(2) 識別時鐘驅動任務識別時鐘驅動任務以固定的時間間隔激發(fā)這種事件,以執(zhí)行某些處理。某些以固定的時間間隔激發(fā)這種事件,以執(zhí)行某些處理。某些人機界面、子系統(tǒng)、任務、處理機或其他
37、系統(tǒng)可能需要周人機界面、子系統(tǒng)、任務、處理機或其他系統(tǒng)可能需要周期性的通信,因此時鐘驅動任務應運而生。期性的通信,因此時鐘驅動任務應運而生。當系統(tǒng)運行時,這類任務的工作過程如下:當系統(tǒng)運行時,這類任務的工作過程如下:任務設置了喚醒時間后進入睡眠狀態(tài);任務設置了喚醒時間后進入睡眠狀態(tài);等待來自系統(tǒng)的一個時鐘中斷,一旦接收到這種中斷,任等待來自系統(tǒng)的一個時鐘中斷,一旦接收到這種中斷,任務就被喚醒,并做它的工作,通知有關的對象,然后該任務就被喚醒,并做它的工作,通知有關的對象,然后該任務又回到睡眠狀態(tài)。務又回到睡眠狀態(tài)。任務管理部分的設計任務管理部分的設計(3) 識別優(yōu)先任務識別優(yōu)先任務根據(jù)處理的優(yōu)
38、先級別來安排各個任務。優(yōu)先任務可以滿足根據(jù)處理的優(yōu)先級別來安排各個任務。優(yōu)先任務可以滿足高優(yōu)先級或低優(yōu)先級的處理需求。高優(yōu)先級或低優(yōu)先級的處理需求。高優(yōu)先級高優(yōu)先級:某些服務具有很高的優(yōu)先級,為了在嚴格限定:某些服務具有很高的優(yōu)先級,為了在嚴格限定的時間內(nèi)完成這種服務,可能需要把這類服務分離成獨立的時間內(nèi)完成這種服務,可能需要把這類服務分離成獨立的任務。的任務。低優(yōu)先級低優(yōu)先級:與高優(yōu)先級相反,有些服務是低優(yōu)先級的,屬:與高優(yōu)先級相反,有些服務是低優(yōu)先級的,屬于低優(yōu)先級處理(通常稱為后臺處理)。設計時可能用額于低優(yōu)先級處理(通常稱為后臺處理)。設計時可能用額外的任務把這樣的處理分離出來。外的任
39、務把這樣的處理分離出來。任務管理部分的設計任務管理部分的設計(4) 識別關鍵任務識別關鍵任務關鍵任務是有關系統(tǒng)成功或失敗的關鍵處理,這類處理通關鍵任務是有關系統(tǒng)成功或失敗的關鍵處理,這類處理通常都有嚴格的可靠性要求。常都有嚴格的可靠性要求。在設計過程中可能用額外的任務把這樣的關鍵處理分離出在設計過程中可能用額外的任務把這樣的關鍵處理分離出來,以滿足高可靠性處理的要求。來,以滿足高可靠性處理的要求。對高可靠性處理應該精心設計和編碼,并且應該嚴格測試。對高可靠性處理應該精心設計和編碼,并且應該嚴格測試。任務管理部分的設計任務管理部分的設計(5) 識別協(xié)調任務識別協(xié)調任務當有三個或更多的任務時,可考
40、慮另外增加一個任務,這當有三個或更多的任務時,可考慮另外增加一個任務,這個任務起協(xié)調者的作用,將不同任務之間的協(xié)調控制封裝個任務起協(xié)調者的作用,將不同任務之間的協(xié)調控制封裝在協(xié)調任務中。在協(xié)調任務中??梢杂脿顟B(tài)轉換矩陣來描述協(xié)調任務的行為。可以用狀態(tài)轉換矩陣來描述協(xié)調任務的行為。任務管理部分的設計任務管理部分的設計(6) 審查每個任務審查每個任務要使任務數(shù)保持到最少。要使任務數(shù)保持到最少。對每個任務要進行審查,確保它能滿足一個或多個選擇任對每個任務要進行審查,確保它能滿足一個或多個選擇任務的工程標準務的工程標準事件驅動、時鐘驅動、優(yōu)先任務事件驅動、時鐘驅動、優(yōu)先任務關鍵任關鍵任務或協(xié)調者。務或
41、協(xié)調者。任務管理部分的設計任務管理部分的設計(7) 定義每個任務定義每個任務1) 1) 它是什么任務它是什么任務。首先要為任務命名,并對任務做簡要描述。首先要為任務命名,并對任務做簡要描述。為面向對象設計部分的每個服務增加一個新的約束為面向對象設計部分的每個服務增加一個新的約束任任務名。如果一個服務被分裂,交叉在多個任務中,則要修務名。如果一個服務被分裂,交叉在多個任務中,則要修改服務名及其描述,使每個服務能映射到一個任務。改服務名及其描述,使每個服務能映射到一個任務。2) 2) 如何協(xié)調任務如何協(xié)調任務。定義每個任務如何協(xié)調工作。指出它是事。定義每個任務如何協(xié)調工作。指出它是事件驅動的,還是
42、時鐘驅動的;對于事件驅動的任務,描述件驅動的,還是時鐘驅動的;對于事件驅動的任務,描述觸發(fā)該任務的事件;對時鐘驅動的任務,描述在觸發(fā)之前觸發(fā)該任務的事件;對時鐘驅動的任務,描述在觸發(fā)之前所經(jīng)過的時間間隔,同時指出它是一次性的,還是重復的所經(jīng)過的時間間隔,同時指出它是一次性的,還是重復的事件間隔。事件間隔。3) 3) 如何通信如何通信。定義每個任務如何通信,任務從哪里取數(shù)據(jù)及。定義每個任務如何通信,任務從哪里取數(shù)據(jù)及往哪里送數(shù)據(jù)。往哪里送數(shù)據(jù)。數(shù)據(jù)管理部分的設計數(shù)據(jù)管理部分的設計o在傳統(tǒng)的結構化設計方法中,很容易將實體在傳統(tǒng)的結構化設計方法中,很容易將實體- -關系圖映射到關系圖映射到關系數(shù)據(jù)庫
43、中。關系數(shù)據(jù)庫中。o而在面向對象設計中,我們可以將而在面向對象設計中,我們可以將UMLUML類圖看作是數(shù)據(jù)庫的類圖看作是數(shù)據(jù)庫的概念模型,但在概念模型,但在UMLUML類圖中除了類之間的關聯(lián)關系外,還有類圖中除了類之間的關聯(lián)關系外,還有繼承關系。繼承關系。o在映射時可以按下面的規(guī)則進行:在映射時可以按下面的規(guī)則進行:數(shù)據(jù)管理部分的設計數(shù)據(jù)管理部分的設計(1) (1) 一個普通的類可以映射為一個表或多個表,當分解為多個一個普通的類可以映射為一個表或多個表,當分解為多個表時,可以采用表時,可以采用橫切和豎切橫切和豎切的方法。的方法。豎切常用于實例較少而屬性很多的對象,一般是現(xiàn)實中的豎切常用于實例較
44、少而屬性很多的對象,一般是現(xiàn)實中的事物,將不同分類的屬性映射成不同的表。通常將經(jīng)常使事物,將不同分類的屬性映射成不同的表。通常將經(jīng)常使用的屬性放在主表中,而將其他一些次要的屬性放到其他用的屬性放在主表中,而將其他一些次要的屬性放到其他表中。表中。橫切常常用于記錄與時間相關的對象,如成績記錄、運行橫切常常用于記錄與時間相關的對象,如成績記錄、運行記錄等。由于一段時間后,這些對象很少被查看,所以往記錄等。由于一段時間后,這些對象很少被查看,所以往往在主表中只記錄最近的對象,而將以前的記錄轉到對應往在主表中只記錄最近的對象,而將以前的記錄轉到對應的歷史表中。的歷史表中。數(shù)據(jù)管理部分的設計數(shù)據(jù)管理部分
45、的設計(2) 關聯(lián)關系的映射關聯(lián)關系的映射 一對一關聯(lián)的映射一對一關聯(lián)的映射:對于一對一關聯(lián),可以在兩個表中都:對于一對一關聯(lián),可以在兩個表中都引入外鍵,這樣兩個表之間可以進行雙向導航。也可以引入外鍵,這樣兩個表之間可以進行雙向導航。也可以根據(jù)具體情況,將類組合成一張單獨的表。根據(jù)具體情況,將類組合成一張單獨的表。 一對多關聯(lián)的映射一對多關聯(lián)的映射:可以將關聯(lián)中的:可以將關聯(lián)中的“一一”端毫無變化地端毫無變化地映射到一張表,將關聯(lián)中表示映射到一張表,將關聯(lián)中表示“多多”的端上的類映射到的端上的類映射到帶有外鍵的另一張表,使外鍵滿足關系引用的完整性。帶有外鍵的另一張表,使外鍵滿足關系引用的完整性。 多對多關聯(lián)的映射多對多關聯(lián)的映射:由于記錄的一個外鍵最多只能引用另:由于記錄的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 外債借款合同展期合同范本
- 環(huán)保材料在商業(yè)地產(chǎn)開發(fā)中的應用與挑戰(zhàn)
- 科技引領下的安全工作模式創(chuàng)新研究
- 科技產(chǎn)品外觀設計的美學原則與實踐
- 合租室友溝通協(xié)議
- 2025至2030年中國水晶球膠塞數(shù)據(jù)監(jiān)測研究報告
- 社區(qū)環(huán)?;顒又械纳鷳B(tài)平衡觀念普及
- 出租商業(yè)營業(yè)場所協(xié)議
- 2024年河南濮陽工學院籌建處 引進筆試真題
- 2025至2030年中國檸檬香薰被數(shù)據(jù)監(jiān)測研究報告
- 新版FMEA控制程序-第五版FMEA
- 過敏性休克完整版本
- 剪叉式升降平臺結構設計
- 安慶大學科技園建設實施方案
- 中智集團招聘筆試題庫2024
- 三晉卓越聯(lián)盟·山西省2024-2025學年度高三9月質量檢測+語文試卷
- 《那一刻我長大了》習作課件
- 教科版小學科學六年級上冊期末考試試卷(含答案)
- 父母買房在子女名下協(xié)議書范本
- DBJ15 31-2016建筑地基基礎設計規(guī)范(廣東省標準)
- 高危新生兒管理專家共識解讀
評論
0/150
提交評論