版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、梁昌勇,信息系統(tǒng)分析、設(shè)計與開發(fā)方法,第6章 面向?qū)ο蟮南到y(tǒng)分析,6.1 從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計6.2 面向?qū)ο笤O(shè)計的準(zhǔn)則 6.3 啟發(fā)式規(guī)則 6.4 軟件重用 6.5 系統(tǒng)分解 6.6 典型的面向?qū)ο笤O(shè)計 6.7 類中服務(wù)的設(shè)計 6.8 關(guān)聯(lián)設(shè)計 6.9 設(shè)計優(yōu)化,目錄,6.1從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計,6.1.1 從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計,面向?qū)ο蟮南到y(tǒng)設(shè)計(OOD) 就是在系統(tǒng)分析模型的基礎(chǔ)上運用面向?qū)ο蟮姆椒?,來設(shè)計產(chǎn)生一個符合具體實現(xiàn)條件的面向?qū)ο笤O(shè)計(OOD)模型。 對于面向?qū)ο笤O(shè)計方法,盡管分析和設(shè)計的定義有明顯區(qū)別,但是在實際的軟件開發(fā)過程中二者的界限是模糊的。分析
2、過程的結(jié)果可以直接映射成設(shè)計的結(jié)果,初期的分析過程主要是提取與系統(tǒng)相關(guān)的主要類和業(yè)務(wù)流程,而在設(shè)計階段將所有的類和流程細(xì)化,加深和補充對系統(tǒng)需求的理解,從而進一步完善分析結(jié)果。,OOA與OOD關(guān)系 它們采用了相同的符號表示,因此相互之間沒有明顯的分界線,往往是反復(fù)重疊地進行。 系統(tǒng)分析主要考慮的是做什么,因此它識別和定義的類/對象,是一些直接反映問題域和系統(tǒng)任務(wù)的;而系統(tǒng)設(shè)計主要解決系統(tǒng)如何做,所以它識別和定義的類/對象是附加的,反映了需求的一種實現(xiàn)(對話層、任務(wù)管理層、數(shù)據(jù)管理層)。 系統(tǒng)分析是在較高的抽象層次上進行,而系統(tǒng)設(shè)計則在較低的抽象層次上進行。系統(tǒng)分析是獨立于程序設(shè)計語言的,初步的
3、系統(tǒng)設(shè)計在很大程度上與語言無關(guān),但詳細(xì)的系統(tǒng)設(shè)計則都會依賴于程序設(shè)計語言。,6.1從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計,6.1.1 從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計,面向?qū)ο笙到y(tǒng)設(shè)計的主要工作包括以下幾個方面的內(nèi)容: (1) 設(shè)計對象與類。包括分析對象模型,設(shè)計對象與類的屬性,設(shè)計對象與類的實現(xiàn)結(jié)構(gòu),以及設(shè)計消息與事件的內(nèi)容和格式。 (2) 設(shè)計系統(tǒng)結(jié)構(gòu)。設(shè)計系統(tǒng)結(jié)構(gòu)階段的主要任務(wù)是設(shè)計組件與子系統(tǒng)以及它們之間的靜態(tài)和動態(tài)關(guān)系。對于人機界面、數(shù)據(jù)管理、任務(wù)管理等問題,在面向?qū)ο蠓治鲭A段一般不提及,而是等到面向?qū)ο笤O(shè)計階段再進行分析。,6.1從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計,6.1.1 從面向?qū)ο蠓治龅矫嫦驅(qū)ο?/p>
4、設(shè)計,面向?qū)ο笙到y(tǒng)設(shè)計的主要工作包括以下幾個方面的內(nèi)容: (3) 設(shè)計人機交互子系統(tǒng)。此階段的主要任務(wù)是設(shè)計用戶界面,設(shè)計人機交互操作命令和操作順序,設(shè)計詳細(xì)交互過程,設(shè)計工作的內(nèi)容包括用戶分類,設(shè)計人機交互類等。 (4) 設(shè)計數(shù)據(jù)管理子系統(tǒng)。此階段主要是確定數(shù)據(jù)管理方法,設(shè)計數(shù)據(jù) 庫與數(shù)據(jù)文件的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。面向?qū)ο蟮姆治鲈O(shè)計方法注重的是問題涉及的對象以及對象的相互關(guān)系和相互作用,并在此基礎(chǔ)上構(gòu)造這些問題的模型,以期將要解決的實質(zhì)問題模型化。,6.1從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計,6.1.1 從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計,簡單與復(fù)雜 (1) 小規(guī)模和小團隊開發(fā)的系統(tǒng)在整體框架選擇和層次結(jié)
5、構(gòu)上應(yīng)盡量簡單,而大規(guī)模的系統(tǒng),要考慮到眾多模塊的合理配置,需要構(gòu)建更多的層次,選用成熟的框架體系。 (2) 在系統(tǒng)資源有限的硬件平臺上運行的系統(tǒng),例如嵌入式系統(tǒng),在設(shè)計時應(yīng)盡量簡單,以提高運行效率;而在PC機以及服務(wù)器上運行的系統(tǒng),可以采用復(fù)雜設(shè)計,已獲得更好的擴展性。 (3) 對于運行性能要求高的系統(tǒng),例如需要提供并發(fā)服務(wù)的服務(wù)器系統(tǒng),則在訪問頻繁的模塊設(shè)計上應(yīng)遵循簡單的原則。,6.2 面向?qū)ο笙到y(tǒng)設(shè)計的準(zhǔn)則,6.2.1面向?qū)ο笙到y(tǒng)設(shè)計準(zhǔn)則,簡單與復(fù)雜 (4) 對于開發(fā)水平參差不齊的團隊,在開發(fā)方案的選擇上注意選取簡單的方案,減少內(nèi)部培訓(xùn)和交流的代價。而成熟的開發(fā)團隊,則可以根據(jù)設(shè)計目標(biāo)靈
6、活地選擇設(shè)計方案。 (5) 在一個系統(tǒng)的設(shè)計中,簡單和復(fù)雜的原則可能是交替作用的,在整體結(jié)構(gòu)復(fù)雜的系統(tǒng)中,可能在關(guān)鍵性能模塊的設(shè)計上追求簡單。而在整體結(jié)構(gòu)簡單的系統(tǒng)中,對于某些通用性較強的模塊可能采用復(fù)雜設(shè)計。 (6) 即使確定了簡單和復(fù)雜的原則,也需要考慮到“度”,過度設(shè)計只會使得某些超前的設(shè)計方案被廢棄。,6.2 面向?qū)ο笙到y(tǒng)設(shè)計的準(zhǔn)則,6.2.1面向?qū)ο笙到y(tǒng)設(shè)計準(zhǔn)則,模塊化 模塊化是軟件設(shè)計方法不斷演變所追求的目標(biāo)之一,軟件的模塊化使得軟件的各個功能在設(shè)計時相對獨立,能夠降低軟件設(shè)計的復(fù)雜度。 面向?qū)ο筌浖_發(fā)方法,對象就是模塊。它是把數(shù)據(jù)結(jié)構(gòu)和操作這些數(shù)據(jù)的方法緊密地結(jié)合在一起所構(gòu)成的
7、模塊。 對象與單元的區(qū)別在于:對象是數(shù)據(jù)與操作緊密結(jié)合的,在軟件運行中有一定生命周期的實體。而單元只是一組函數(shù)功能的集合。,6.2 面向?qū)ο笙到y(tǒng)設(shè)計的準(zhǔn)則,6.2.1面向?qū)ο笙到y(tǒng)設(shè)計準(zhǔn)則,抽象化 面向?qū)ο蠓椒ú粌H支持過程抽象,而且支持?jǐn)?shù)據(jù)抽象。 在類的設(shè)計中要考慮各種類的關(guān)系,需要從具體類中抽象出具有共同特性的父類或者接口,子類繼承父類的方法,并可以重構(gòu)不同的實現(xiàn)。類實際上是一種抽象數(shù)據(jù)類型,它對外開放的公共接口(interface)構(gòu)成了類的規(guī)格說明,這種接口規(guī)定了外界可以使用的合法操作符,利用這些操作符可以對類實例中包含的數(shù)據(jù)進行操作。,6.2 面向?qū)ο笙到y(tǒng)設(shè)計的準(zhǔn)則,6.2.1面向?qū)ο笙?/p>
8、統(tǒng)設(shè)計準(zhǔn)則,弱耦合與信息隱藏 對象間的耦合可分為兩大類: (1)交互耦合。如果對象間的耦合是通過消息連接來實現(xiàn),則這種耦合屬于交互耦合。交互耦合應(yīng)該盡可能松散。 (2)繼承耦合。繼承是一般化類與特殊類間耦合的一種形式,從本質(zhì)來看,是一種通過繼承關(guān)系結(jié)合起來的基類和派生類,構(gòu)成了系統(tǒng)中粒度更大的模塊。它們之間是結(jié)合得越緊密越好。,6.2 面向?qū)ο笙到y(tǒng)設(shè)計的準(zhǔn)則,6.2.1面向?qū)ο笙到y(tǒng)設(shè)計準(zhǔn)則,信息隱藏 實現(xiàn)弱耦合的重要手段,在面向?qū)ο蠓椒ㄖ校畔㈦[藏通過對象的封裝性實現(xiàn). 對象的封裝有兩種形式: 源代碼級的封裝; 二進制代碼級的封裝。,6.2 面向?qū)ο笙到y(tǒng)設(shè)計的準(zhǔn)則,6.2.1面向?qū)ο笙到y(tǒng)設(shè)計準(zhǔn)
9、則,可重用 軟件重用是提供高軟件開發(fā)生產(chǎn)率和目標(biāo)系統(tǒng)質(zhì)量的重要途徑。派生和繼承是代碼重用的基礎(chǔ)。 重用有兩方面的含義:一是盡量使用已有的類(包括開發(fā)環(huán)境提供的類庫,及以往開發(fā)類似系統(tǒng)時創(chuàng)建的類),二是如果確實需要創(chuàng)建新類,則在設(shè)計這些新類的協(xié)議時,應(yīng)該考慮將來的可重復(fù)使用性。,6.2 面向?qū)ο笙到y(tǒng)設(shè)計的準(zhǔn)則,6.2.1面向?qū)ο笙到y(tǒng)設(shè)計準(zhǔn)則,設(shè)計結(jié)果應(yīng)該清晰易懂 (1) 用詞一致 (2) 使用已有的協(xié)議 (3) 減少消息模式的數(shù)目 (4) 避免模糊的定義 使類等級中包含的層次數(shù)適當(dāng) 應(yīng)該使類等級中包含的層次數(shù)適當(dāng) ,一般來說,在一個中等規(guī)模(大約包含100個類)的系統(tǒng)中,類等級層次數(shù)應(yīng)保持為72
10、。,6.3 啟發(fā)規(guī)則,設(shè)計簡單的類 (1)避免包含過多的屬性; (2)有明確的定義;為了使類的定義明確,分配給每個類的任 務(wù)應(yīng)該簡單,最好能用一兩個簡單語句描述它的任務(wù)。 (3)盡量簡化對象之間的合作關(guān)系;對象間的合作關(guān)系應(yīng)盡可 能的簡單。 (4)不要提供太多服務(wù); 一個類提供的公共服務(wù)不超過7個; 在開發(fā)大型軟件系統(tǒng)時,解決這個問題的辦法,是把系統(tǒng) 中的類按邏輯分組。 (5) 使用簡單的協(xié)議;一般消息中的參數(shù)不要超過3個。 (6) 使用簡單的服務(wù); (7) 把設(shè)計變動減至最小。,6.3 啟發(fā)規(guī)則,面向?qū)ο蠓椒ǖ囊粋€主要目標(biāo),就是提高軟件的可重用性。 軟件重用就是將已有的軟件成分用于構(gòu)造新的軟
11、件系統(tǒng)??梢员恢赜玫能浖煞忠话惴Q作可重用構(gòu)件,無論對可重用構(gòu)件原封不動地使用還是作適當(dāng)?shù)男薷暮笤偈褂?,只要是用來?gòu)造新軟件,則都可稱作重用。 重用級別: 代碼的重用 設(shè)計的重用 分析的重用 測試信息的重用,6.4 軟件重用,設(shè)計復(fù)雜應(yīng)用系統(tǒng)時,會首先根據(jù)功能對系統(tǒng)進行分解,然后再分別設(shè)計各子系統(tǒng)。各子系統(tǒng)間通過接口進行連接和信息傳遞,接口確定了子系統(tǒng)間的交互形式和需傳遞的信息。 劃分和設(shè)計子系統(tǒng)時,應(yīng)該盡量減少子系統(tǒng)間的耦合度。,6.5 系統(tǒng)分解,問題域子系統(tǒng)設(shè)計;可能對面向?qū)ο蠓治鏊贸龅膯栴}域模型做的補充或修改。 (1)調(diào)整需求 (2)重用已有類 (3)組合問題域類 (4)增添一般化類以
12、建立協(xié)議 (5)調(diào)整繼承層次,6.6 典型的面向?qū)ο笤O(shè)計,窄菱形模式,闊菱形模式,單繼承模式,人機交互子系統(tǒng)設(shè)計 在面向?qū)ο笤O(shè)計過程中,應(yīng)該對人機交互子系統(tǒng)進行詳細(xì)設(shè)計,以確定人機交互的細(xì)節(jié),其中包括指定窗口和報表的形式、設(shè)計命令層次等內(nèi)容。 設(shè)計人機交互子系統(tǒng)的策略 (1)分類用戶 (2)描述用戶 (3)設(shè)計命令層次 (4)設(shè)計人機交互類,6.6 典型的面向?qū)ο笤O(shè)計,任務(wù)管理子系統(tǒng)設(shè)計 分析并發(fā)性 設(shè)計任務(wù)管理子系統(tǒng) 確定事件驅(qū)動型任務(wù) 確定時鐘驅(qū)動型任務(wù) 睡眠狀態(tài)。 確定優(yōu)先任務(wù) 確定關(guān)鍵任務(wù) 確定協(xié)調(diào)任務(wù) 盡量減少任務(wù)數(shù) 確定資源需求,6.6 典型的面向?qū)ο笤O(shè)計,數(shù)據(jù)管理子系統(tǒng),是系統(tǒng)存
13、儲或檢索對象的基本設(shè)施,它建立在某種數(shù)據(jù)存儲管理系統(tǒng)之上,并且隔離了數(shù)據(jù)存儲管理模式的影響。 選擇數(shù)據(jù)存儲管理模式,6.6 典型的面向?qū)ο笤O(shè)計,設(shè)計數(shù)據(jù)管理子系統(tǒng) 設(shè)計數(shù)據(jù)格式,存儲管理模式的設(shè)計方法: 文件系統(tǒng):定義1NF表;為每個1NF表定義一個文件; 關(guān)系數(shù)據(jù)庫管理系統(tǒng):定義3NF表;為每個3NF表定義一個數(shù)據(jù)庫表; 面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng):擴展的關(guān)系數(shù)據(jù)庫途徑;擴展的面向?qū)ο蟪绦蛟O(shè)計語言途徑。 設(shè)計相應(yīng)的服務(wù) 如果某個類的對象需要存儲起來,則在這個類中增加一個“隱含”的屬性和服務(wù),用于完成存儲對象自身的工作。,6.6 典型的面向?qū)ο笤O(shè)計,下面介紹使用不同數(shù)據(jù)存儲管理模式時的設(shè)計要點。
14、文件系統(tǒng):被存儲的對象需要知道打開哪些文件,怎樣把文件定位到正確的記錄上,怎樣檢索出舊值,以及怎樣用現(xiàn)有值更新它們;應(yīng)該定義一個ObjectServer類,并創(chuàng)建它的實例,該類提供下列服務(wù):通知對象保存自身,檢索已存儲的對象。 關(guān)系數(shù)據(jù)庫管理系統(tǒng):被存儲的對象,應(yīng)該知道訪問哪些數(shù)據(jù)庫表,怎樣訪問所需要的行,怎樣檢索出舊值,以及怎樣用現(xiàn)有值更新它們;應(yīng)該定義一個ObjectServer類,并聲明它的對象,該類提供下列服務(wù):通知對象保存自身,檢索已存儲的對象。 面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng):擴展的關(guān)系數(shù)據(jù)庫途徑;擴展的面向?qū)ο蟪绦蛟O(shè)計語言途徑。,6.6 典型的面向?qū)ο笤O(shè)計,設(shè)計類中應(yīng)有的服務(wù) 對象的許多
15、服務(wù)都與對象接收到的消息密切相關(guān),接收消息的對象必然有由消息選擇符指定的服務(wù),該服務(wù)改變對象狀態(tài),并完成對象應(yīng)做的動作。對象的動作既與消息有關(guān),也與對象的狀態(tài)有關(guān)。,6.7 類中服務(wù)的設(shè)計,設(shè)計實現(xiàn)服務(wù)的方法 (1)設(shè)計實現(xiàn)服務(wù)的算法, 設(shè)計實現(xiàn)服務(wù)的算法時,應(yīng)該考慮下列幾個因素: 算法復(fù)雜度。 容易理解與實現(xiàn)。 易修改。 (2)選擇數(shù)據(jù)結(jié)構(gòu),在面向?qū)ο笤O(shè)計過程中,則需要選擇能夠方便、有效地實現(xiàn)算法的物理數(shù)據(jù)結(jié)構(gòu)。 (3)定義內(nèi)部類和內(nèi)部操作,6.7 類中服務(wù)的設(shè)計,關(guān)聯(lián)的方式 (1)關(guān)聯(lián)的遍歷;單向遍歷和雙向遍歷。 (2)實現(xiàn)單向關(guān)聯(lián) 如果關(guān)聯(lián)的重數(shù)是一元的,則實現(xiàn)關(guān)聯(lián)的指針是一個簡單指針;
16、如果重數(shù)是多元的,則需要用一個指針集合實現(xiàn)關(guān)聯(lián)。,6.8 關(guān)聯(lián)設(shè)計,用指針實現(xiàn)單向關(guān)聯(lián),(3)實現(xiàn)雙向關(guān)聯(lián),實現(xiàn)雙向關(guān)聯(lián)有下列3種方法: 只用屬性實現(xiàn)一個方向的關(guān)聯(lián),當(dāng)需要反向遍歷時就執(zhí)行 一次正向查找。 兩個方向的關(guān)聯(lián)都用屬性實現(xiàn)。 用獨立的關(guān)聯(lián)對象實現(xiàn)雙向關(guān)聯(lián)。,用指針實現(xiàn)雙向關(guān)聯(lián),用對象實現(xiàn)關(guān)聯(lián),(4)關(guān)聯(lián)對象的實現(xiàn) 可以引入一個關(guān)聯(lián)類來保存描述關(guān)聯(lián)性質(zhì)的信息,關(guān)聯(lián)中的每個連接對應(yīng)著關(guān)聯(lián)類的一個對象。實現(xiàn)關(guān)聯(lián)對象的方法取決于關(guān)聯(lián)的重數(shù)。對于一對一關(guān)聯(lián)來說,關(guān)聯(lián)對象可以與參與關(guān)聯(lián)的任一個對象合并。對于一對多關(guān)聯(lián)來說,關(guān)聯(lián)對象可以與“ 多 ”端對象合并。如果是多對多關(guān)聯(lián),則關(guān)聯(lián)鏈的性質(zhì)不可能
17、只與一個參與關(guān)聯(lián)的對象有關(guān),通常用一個獨立的關(guān)聯(lián)類來保存描述關(guān)聯(lián)性質(zhì)的信息,這個類的每個實例表示一條具體的關(guān)聯(lián)鏈及該鏈的屬性。,確定優(yōu)先級 提高效率的幾項技術(shù) 增加冗余關(guān)聯(lián)以提高訪問效率 調(diào)整查詢次序 保留派生屬性 調(diào)整繼承關(guān)系 抽象與具體 為提高繼承程度而修改類定義 利用委托實現(xiàn)行為共享,6.9 設(shè)計優(yōu)化,本章是對面向?qū)ο蠓治龅臄U充,是一個逐漸擴充模型的過程。通過對系統(tǒng)的分析模型進行分析,了解程序應(yīng)該實現(xiàn)的功能、程序的輸入和輸出數(shù)據(jù)、數(shù)據(jù)轉(zhuǎn)換算法、用戶界面等內(nèi)容。系統(tǒng)設(shè)計從增加屬性和服務(wù)開始,對模型進行擴充,建立起一個求解問題的實現(xiàn)方案。 首先,給出了面向?qū)ο笤O(shè)計有其特有的設(shè)計準(zhǔn)則和有助于提高質(zhì)量的啟發(fā)式規(guī)則。其次,在面向?qū)ο蠓椒ㄔO(shè)計時,是總體設(shè)計和詳細(xì)設(shè)計多次反復(fù)迭代的過程,一般劃分為問題域
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 類json數(shù)據(jù)標(biāo)準(zhǔn)協(xié)議書
- 未來五年病人陪護服務(wù)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略分析研究報告
- 未來五年國債企業(yè)縣域市場拓展與下沉戰(zhàn)略分析研究報告
- 家用電冰箱維修工安全強化水平考核試卷含答案
- 造口傷口護理進修匯報:前沿分享
- 起重裝卸機械操作工崗前安全素養(yǎng)考核試卷含答案
- 承接協(xié)議書合同范本
- 生命生態(tài)安全六年級課件
- 光刻工崗前任職考核試卷含答案
- 混凝土工改進知識考核試卷含答案
- 工程概算編制方案
- 可持續(xù)采購培訓(xùn)
- 2025至2030全球及中國供應(yīng)鏈的區(qū)塊鏈行業(yè)項目調(diào)研及市場前景預(yù)測評估報告
- 議論文寫作入門指導(dǎo)課件統(tǒng)編版高一語文必修上冊
- 北師大版初中英語七年級上冊期末復(fù)習(xí)試卷及答案
- 2025-2030中國特種陶瓷材料進口替代空間與投資機會評估研究報告
- 脛骨平臺骨折課件
- 2025-2030中國建筑行業(yè)人才需求與培養(yǎng)戰(zhàn)略研究報告
- 廣東省廣州市花都區(qū)2023-2024學(xué)年七年級下學(xué)期期末地理試卷(含答案)
- 2025開放式耳機品類趨勢洞察報告
- 服務(wù)質(zhì)量評估與獎懲機制管理制度
評論
0/150
提交評論