軟件分析與設(shè)計(jì)基礎(chǔ)_第1頁
軟件分析與設(shè)計(jì)基礎(chǔ)_第2頁
軟件分析與設(shè)計(jì)基礎(chǔ)_第3頁
軟件分析與設(shè)計(jì)基礎(chǔ)_第4頁
軟件分析與設(shè)計(jì)基礎(chǔ)_第5頁
已閱讀5頁,還剩116頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件分析與設(shè)計(jì)基礎(chǔ)第一頁,共一百四十三頁,2022年,8月28日經(jīng)驗(yàn)和教訓(xùn)表明:1)軟件開發(fā)需要遵循軟件工程方法論的指導(dǎo),軟件分析與設(shè)計(jì)質(zhì)量決定軟件產(chǎn)品的質(zhì)量2)合理的軟件分析與設(shè)計(jì)建立在對(duì)軟件需求正確理解的基礎(chǔ)上,對(duì)軟件需求的深入理解是軟件開發(fā)工作獲得成功的前提和關(guān)鍵3)要開發(fā)出好的軟件產(chǎn)品,首先必須知道用戶的需求,并在充分了解用戶需求的基礎(chǔ)上,對(duì)用戶的業(yè)務(wù)需求建模,并進(jìn)行相應(yīng)的分析與設(shè)計(jì),才能生產(chǎn)出真正符合用戶要求且生命周期長(zhǎng)的軟件產(chǎn)品。

第二頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

傳統(tǒng)的軟件工程方法:結(jié)構(gòu)化分析(StructruedAnalysis,SA)結(jié)構(gòu)化設(shè)計(jì)(StructruedDesign,SD)。

第三頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

結(jié)構(gòu)化分析

結(jié)構(gòu)化分析是20世紀(jì)70年代后期提出的,是一種基于功能分解的需求分析方法,適用于分析大型數(shù)據(jù)處理系統(tǒng)。與結(jié)構(gòu)化設(shè)計(jì)(SD)一起聯(lián)合使用,能較好地實(shí)現(xiàn)一個(gè)軟件系統(tǒng)的研制。它是一種面向數(shù)據(jù)流,自頂向下、逐步求精進(jìn)行需求分析的方法。

它通常用數(shù)據(jù)流圖表達(dá)需求,以數(shù)據(jù)字典表示數(shù)據(jù)的邏輯定義。

第四頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

SA方法的特點(diǎn):核心思想是自頂向下、逐步求精基本手段是分解和抽象

所謂分解就是把大問題分割成若干小問題,把復(fù)雜度降低到人們可以掌握的程度,然后分別解決。所謂抽象就是把細(xì)節(jié)略去,先考慮最本質(zhì)的東西?!鍪褂脭?shù)據(jù)流圖、數(shù)據(jù)字典等規(guī)范化工具描述需求。第五頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)使用SA方法進(jìn)行軟件需求分析的步驟:(1)建立當(dāng)前系統(tǒng)的具體模型分析當(dāng)前系統(tǒng)和現(xiàn)實(shí)環(huán)境,描述當(dāng)前系統(tǒng)的工作方式,客觀地反映現(xiàn)實(shí)世界的實(shí)際情況。(2)抽象出當(dāng)前系統(tǒng)的邏輯模型就是在理解當(dāng)前系統(tǒng)“怎么做”的基礎(chǔ)上,抽取出“做什么”的本質(zhì),從當(dāng)前系統(tǒng)的具體模型抽象出當(dāng)前系統(tǒng)的邏輯模型。第六頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)(3)建立目標(biāo)系統(tǒng)的邏輯模型所謂目標(biāo)系統(tǒng)是指將要開發(fā)的由計(jì)算機(jī)處理的系統(tǒng)。方法如下:在數(shù)據(jù)流圖上把目標(biāo)系統(tǒng)與當(dāng)前系統(tǒng)在邏輯上不同的部分找出來,這部分就是要改變的部分。將要改變部分抽象為一個(gè)加工,再進(jìn)行逐步分解,最后就可獲得目標(biāo)系統(tǒng)的邏輯模型。第七頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)1.數(shù)據(jù)流圖

數(shù)據(jù)流是數(shù)據(jù)在系統(tǒng)內(nèi)的傳輸途徑,數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的變換過程。數(shù)據(jù)流圖是結(jié)構(gòu)化系統(tǒng)分析的主要工具,它去掉了具體的組織機(jī)構(gòu)、工作場(chǎng)所、物質(zhì)流等,僅反映信息和數(shù)據(jù)存儲(chǔ)、流動(dòng)、使用以及加工的情況。

第八頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)①數(shù)據(jù)流圖的基本元素包括數(shù)據(jù)流、加工、數(shù)據(jù)存取文件、輸入數(shù)據(jù)的源點(diǎn)和輸出數(shù)據(jù)的匯點(diǎn)4類。常采用如圖2-1所示的圖形符號(hào):圖2-1數(shù)據(jù)流圖基本圖形符號(hào)第九頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

繪制數(shù)據(jù)流圖時(shí),應(yīng)先找出系統(tǒng)的數(shù)據(jù)源點(diǎn)與匯點(diǎn)及對(duì)應(yīng)的輸入數(shù)據(jù)流與輸出數(shù)據(jù)流,然后從輸入數(shù)據(jù)流(即系統(tǒng)的源點(diǎn))出發(fā),按照系統(tǒng)的邏輯需要,逐步畫出系列邏輯加工,直到所需的輸出數(shù)據(jù)流(即系統(tǒng)的匯點(diǎn))。

第十頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)數(shù)據(jù)流在傳遞過程中,需要一些加工處理。常見的加工關(guān)系及對(duì)應(yīng)的圖形符號(hào)如圖2-2所示。圖2-2數(shù)據(jù)流圖加工關(guān)系第十一頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)數(shù)據(jù)流圖應(yīng)用舉例:取款單信息付款儲(chǔ)戶核查登錄賬卡存折存折信息取款信息銀行取款過程的數(shù)據(jù)流圖反饋信息付款信息可取款信息第十二頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)②分層數(shù)據(jù)流圖較復(fù)雜的實(shí)際問題中,僅用一個(gè)數(shù)據(jù)流圖很難表達(dá)數(shù)據(jù)處理過程和數(shù)據(jù)加工情況,需要采用“先全局后局部,先整體后細(xì)節(jié),先抽象后具體”的逐步求精原則,按照問題的層次結(jié)構(gòu)逐步分解。首先確定頂層數(shù)據(jù)流圖,把整個(gè)數(shù)據(jù)處理過程抽象為一個(gè)加工,它的輸人數(shù)據(jù)和輸出數(shù)據(jù)實(shí)際上反映了系統(tǒng)與外界環(huán)境的接口,這就是頂層數(shù)據(jù)流圖。然后在上一層數(shù)據(jù)流圖的基礎(chǔ)上進(jìn)一步細(xì)化,直到數(shù)據(jù)流圖的加工不能再分解為止。

第十三頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

第十四頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

③畫數(shù)據(jù)流圖的步驟和原則畫數(shù)據(jù)流圖的基本步驟是自外向內(nèi),自頂向下,逐層細(xì)化,完善求精,并且需要遵循以下基本原則:頂層數(shù)據(jù)流圖上的數(shù)據(jù)流必須封閉在外部實(shí)體之間。每個(gè)加工至少有一個(gè)輸入數(shù)據(jù)流和一個(gè)輸出數(shù)據(jù)流。在數(shù)據(jù)流圖中,需按層給加工進(jìn)行編號(hào)。編號(hào)應(yīng)表明該加工處在哪一層,以及與上下層的父圖與子圖的對(duì)應(yīng)關(guān)系。任何一個(gè)數(shù)據(jù)流子圖必須與它上一層的一個(gè)加工對(duì)應(yīng),兩者的輸入數(shù)據(jù)流和輸出數(shù)據(jù)流必須一致,即父圖與子圖的平衡。圖上每個(gè)元素都必須有名字,加工的名字應(yīng)當(dāng)表明做什么事情。第十五頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

數(shù)據(jù)流圖畫法舉例:(培訓(xùn)中心管理系統(tǒng)數(shù)據(jù)流圖)第十六頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

第十七頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

第十八頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

第十九頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)2.數(shù)據(jù)字典

數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合。它通過對(duì)數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)的定義來描述數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)的邏輯內(nèi)容。通常包括數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、處理過程和外部實(shí)體等6個(gè)部分。第二十頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)①數(shù)據(jù)項(xiàng)

數(shù)據(jù)項(xiàng)是數(shù)據(jù)的最小組成單位,若干個(gè)數(shù)據(jù)項(xiàng)可以組成一個(gè)數(shù)據(jù)結(jié)構(gòu)。對(duì)數(shù)據(jù)項(xiàng)的描述通常包括以下內(nèi)容。數(shù)據(jù)項(xiàng)描述={數(shù)據(jù)項(xiàng)名,數(shù)據(jù)項(xiàng)含義說明,別名,數(shù)據(jù)類型,長(zhǎng)度,取值范圍,取值含義,與其他數(shù)據(jù)項(xiàng)的邏輯關(guān)系}第二十一頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)②數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)反映了數(shù)據(jù)之間的組合關(guān)系。一個(gè)數(shù)據(jù)結(jié)構(gòu)可以由若干個(gè)數(shù)據(jù)項(xiàng)組成,也可以由若干個(gè)數(shù)據(jù)結(jié)構(gòu)組成(嵌套數(shù)據(jù)結(jié)構(gòu)),或由若干個(gè)數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)混合組成。對(duì)數(shù)據(jù)結(jié)構(gòu)的描述通常包括以下內(nèi)容。數(shù)據(jù)結(jié)構(gòu)={數(shù)據(jù)結(jié)構(gòu)名,含義說明,組成:{數(shù)據(jù)項(xiàng)或數(shù)據(jù)結(jié)構(gòu)}}第二十二頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)③數(shù)據(jù)流數(shù)據(jù)流是數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)內(nèi)的傳輸路徑。對(duì)數(shù)據(jù)流的描述通常包括以下內(nèi)容。數(shù)據(jù)流描述={數(shù)據(jù)流名,說明,數(shù)據(jù)流來源,數(shù)據(jù)流去向,組成:{數(shù)據(jù)結(jié)構(gòu)},平均流量,高峰期流量}

④數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)是數(shù)據(jù)結(jié)構(gòu)停留或保存的地方。數(shù)據(jù)存儲(chǔ)的描述通常包括以下內(nèi)容。數(shù)據(jù)存儲(chǔ)={數(shù)據(jù)存儲(chǔ)名,說明,編號(hào),流入的數(shù)據(jù)流,流出的數(shù)據(jù)流,組成:{數(shù)據(jù)結(jié)構(gòu)},數(shù)據(jù)量,存取方式}第二十三頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)⑤處理過程處理過程應(yīng)描述處理邏輯的功能,詳細(xì)地描述其輸入輸出的數(shù)據(jù)流以及這些數(shù)據(jù)的基本轉(zhuǎn)換路徑和策略說明性信息,對(duì)處理過程的描述通常包括以下內(nèi)容。處理過程={處理過程名,編號(hào),說明,輸入:{數(shù)據(jù)流},輸出:{數(shù)據(jù)流},處理:{簡(jiǎn)要說明}}

第二十四頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)⑥外部實(shí)體外部實(shí)體是系統(tǒng)的“人-機(jī)”界面,系統(tǒng)的數(shù)據(jù)流由外部實(shí)體流入,經(jīng)過加工處理之后,向外部實(shí)體流出。外部實(shí)體的描述如下。外部實(shí)體={外部實(shí)體的名稱,編號(hào),輸入:{數(shù)據(jù)流},輸出:{數(shù)據(jù)流}}第二十五頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)3.實(shí)例--學(xué)籍管理分析

學(xué)籍管理涉及的內(nèi)容比較多,業(yè)務(wù)邏輯也較復(fù)雜。在不失一般性的基礎(chǔ)上,本實(shí)例簡(jiǎn)化了學(xué)籍管理的業(yè)務(wù)邏輯.(1)需求描述工作內(nèi)容:

■建立學(xué)生的學(xué)籍

■匯總每學(xué)期學(xué)生的學(xué)分■學(xué)生每門課程的的考試成績(jī)

■學(xué)生的平均成績(jī)

■匯總各分?jǐn)?shù)段的人數(shù)

■各種查詢第二十六頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)涉及人員:■管理人員■班主任■任課教師■學(xué)生

系統(tǒng)初步:系統(tǒng)性質(zhì):MIS軟件。系統(tǒng)使用者:管理人員、班主任、教師、學(xué)生等。系統(tǒng)運(yùn)行環(huán)境:網(wǎng)絡(luò)運(yùn)行。第二十七頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)表2-1學(xué)籍管理主要功能表功能名稱功能說明學(xué)生管理登記學(xué)生的基本信息(姓名、性別、班級(jí)等),并提供查詢功能。課程管理登記課程基本情況(課程名稱、開課學(xué)期、課程類型、學(xué)分等),提供查詢教師管理登記教師基本情況(姓名、年齡、性別、學(xué)歷等),提供查詢統(tǒng)計(jì)成績(jī)管理登記學(xué)生各門課程的考試成績(jī)、提供查詢、統(tǒng)計(jì)功能授課管理登記教師講授課程、授課地點(diǎn)、授課學(xué)期,提供查詢功能編碼維護(hù)維護(hù)系統(tǒng)中使用的編碼(如職稱編碼、學(xué)院編碼、班級(jí)編碼等)第二十八頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)(2)分析設(shè)計(jì)頂層數(shù)據(jù)流圖

管理人員、教師、班主任、學(xué)生等是數(shù)據(jù)輸入的源點(diǎn)和數(shù)據(jù)輸出的匯點(diǎn)。學(xué)生基本信息、教師信息、課程信息、教學(xué)計(jì)劃、考試成績(jī)等是數(shù)據(jù)存儲(chǔ)文件。

圖2-4學(xué)籍管理頂層數(shù)據(jù)流圖第二十九頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)(3)逐步細(xì)化數(shù)據(jù)流圖根據(jù)表2-1中列出的學(xué)籍管理的主要功能,將學(xué)籍管理加工細(xì)化分解為學(xué)生管理、課程管理、教師管理、成績(jī)管理、授課管理和編碼維護(hù)等子加工。圖2-5學(xué)籍管理1層數(shù)據(jù)流圖第三十頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

根據(jù)實(shí)際業(yè)務(wù),分析各處理流程,直到數(shù)據(jù)流圖中出現(xiàn)的每個(gè)加工處理都不能再分解為止。成績(jī)管理可以繼續(xù)細(xì)化為如圖2-6所示的成績(jī)管理數(shù)據(jù)流圖。圖2-6成績(jī)管理數(shù)據(jù)流圖第三十一頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

圖2-6所示的成績(jī)錄入和成績(jī)查詢都可以繼續(xù)分解。例如:成績(jī)錄入加工可以繼續(xù)細(xì)化為增加成績(jī)、修改成績(jī)、刪除成績(jī)等子加工,為了方便成績(jī)錄入,還需要班級(jí)學(xué)生名單查詢子過程,因此圖2-6所示的成績(jī)管理的2層數(shù)據(jù)流圖的成績(jī)錄入加工可以繼續(xù)細(xì)化分解為圖2-7所示成績(jī)錄入的3層數(shù)據(jù)流圖。圖2-7細(xì)化后的成績(jī)錄入數(shù)據(jù)流圖第三十二頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)(4)制定整理數(shù)據(jù)字典數(shù)據(jù)字典是系統(tǒng)中各類數(shù)據(jù)描述的集合。通常包括數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、處理過程和外部實(shí)體等6個(gè)部分。

①數(shù)據(jù)項(xiàng)的描述以圖2-7中的“學(xué)號(hào)”數(shù)據(jù)項(xiàng)為例說明:數(shù)據(jù)項(xiàng)名稱:學(xué)號(hào)含義:唯一標(biāo)識(shí)每個(gè)學(xué)生別名:類型:字符型長(zhǎng)度:5

取值范圍:00000至99999

取值含義:前2位標(biāo)別該學(xué)生所在年級(jí),后3位為順序編號(hào)。第三十三頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

②數(shù)據(jù)流的描述以“學(xué)生名單”數(shù)據(jù)流為例。數(shù)據(jù)流名稱:學(xué)生名單說明:某班全部學(xué)生的名單數(shù)據(jù)流來源:班級(jí)學(xué)生名單查詢數(shù)據(jù)流去向:班級(jí)學(xué)生名單顯示組成(包含的數(shù)據(jù)項(xiàng)):班級(jí)、學(xué)號(hào)、姓名平均流量:高峰期流量:第三十四頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

③數(shù)據(jù)存儲(chǔ)的描述以數(shù)據(jù)存儲(chǔ)“考試成績(jī)”為例。數(shù)據(jù)存儲(chǔ):考試成績(jī)說明:保存學(xué)生各門課的考試成績(jī)流入數(shù)據(jù)流:新增的成績(jī)、修改后的成績(jī)流出數(shù)據(jù)流:原成績(jī)組成:學(xué)號(hào)、姓名、成績(jī)數(shù)據(jù)量:3000(學(xué)生)*15(課程)存取方式:隨機(jī)存取第三十五頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)④處理過程的描述以處理過程“增加成績(jī)”為例。處理過程:增加成績(jī)說明:錄入一個(gè)或一批學(xué)生某門課程的考試成績(jī)輸入:添加成績(jī)要求輸出:新增的成績(jī)處理:在考試成績(jī)數(shù)據(jù)存儲(chǔ)中增加一個(gè)或一批學(xué)生的考試成績(jī)。第三十六頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì)

通常把設(shè)計(jì)工作劃分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段。概要設(shè)計(jì)階段的主要任務(wù)是,通過仔細(xì)分析需求規(guī)格說明,對(duì)軟件進(jìn)行功能分解,從而把軟件劃分為模塊,并且設(shè)計(jì)出完成預(yù)定功能的模塊結(jié)構(gòu)。詳細(xì)設(shè)計(jì)階段的主要任務(wù)是,詳細(xì)地設(shè)計(jì)每個(gè)模塊,確定完成每個(gè)模塊功能所需要的算法和數(shù)據(jù)結(jié)構(gòu)。第三十七頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì)的主要原則如下:抽象就是把事物本質(zhì)的共同特性提取出來而不考慮其他細(xì)節(jié)。軟件設(shè)計(jì)中考慮模塊化解決方案時(shí),可以定出多個(gè)抽象級(jí)別。抽象的層次從概要設(shè)計(jì)到詳細(xì)設(shè)計(jì)逐步降低。模塊化模塊是指把一個(gè)待開發(fā)的軟件分解成若干小的簡(jiǎn)單的部分。每個(gè)模塊可以完成一個(gè)特定的子功能,各個(gè)模塊可以按一定的方法組裝起來成為一個(gè)整體,從而實(shí)現(xiàn)整個(gè)系統(tǒng)的功能。

第三十八頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)信息隱蔽指在一個(gè)模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對(duì)于不需要這些信息的其他模塊來說是不能訪問的。模塊獨(dú)立性模塊獨(dú)立性是指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡(jiǎn)單。衡量軟件的模塊獨(dú)立性使用耦合性和內(nèi)聚性兩個(gè)定性的度量標(biāo)準(zhǔn)。

第三十九頁,共一百四十三頁,2022年,8月28日2.1結(jié)構(gòu)化開發(fā)方法①內(nèi)聚性是一個(gè)模塊內(nèi)部各個(gè)元素間彼此結(jié)合的緊密程度的度量。按照內(nèi)聚性由弱到強(qiáng)的順序可分為:偶然內(nèi)聚、邏輯內(nèi)聚、時(shí)間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚、功能內(nèi)聚。②耦合性是模塊間互相連接緊密程度的度量。按照耦合性由弱到強(qiáng)的順序可分為:非直接耦合、數(shù)據(jù)耦合、標(biāo)記耦合、控制耦合、外部耦合、公共耦合、內(nèi)容耦合。一般來說,設(shè)計(jì)軟件時(shí)應(yīng)盡量使用數(shù)據(jù)耦合,減少控制耦合,限制外部環(huán)境耦合和公共耦合,杜絕內(nèi)容耦合。耦合性與內(nèi)聚性是模塊獨(dú)立性的兩個(gè)定性標(biāo)準(zhǔn),耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚,低耦合。第四十頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

1)非直接耦合。如果兩個(gè)模塊之間沒有直接關(guān)系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實(shí)現(xiàn)的,這就是非直接耦合。

2)數(shù)據(jù)耦合。如果一個(gè)模塊訪問另一個(gè)模塊時(shí),彼此之間是通過簡(jiǎn)單數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來交換輸入、輸出信息的,則稱這種耦合為數(shù)據(jù)耦合。第四十一頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

3)標(biāo)記耦合。如果一組模塊通過參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。這個(gè)記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡(jiǎn)單變量。

4)控制耦合。如果一個(gè)模塊通過傳送開關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合。

5)外部耦合。一組模塊都訪問同一全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。第四十二頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

6)公共耦合。若一組模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。

7)內(nèi)容耦合。當(dāng)一個(gè)模塊直接修改或操作另一個(gè)模塊的數(shù)據(jù),或者直接轉(zhuǎn)入另一個(gè)模塊時(shí),就發(fā)生了內(nèi)容耦合。

第四十三頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

1)偶然性內(nèi)聚。

偶然性內(nèi)聚又稱為巧合性內(nèi)聚。當(dāng)模塊內(nèi)各部分之間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散,則稱這種模塊為巧合內(nèi)聚模塊。

2)邏輯性內(nèi)聚。

這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時(shí),由傳送給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。第四十四頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

3)時(shí)間性內(nèi)聚。如果一個(gè)模塊內(nèi)的幾個(gè)功能必須在同一時(shí)間內(nèi)執(zhí)行,但這些功能只是因?yàn)闀r(shí)間因素關(guān)聯(lián)在一起,則稱為時(shí)間性內(nèi)聚。

4)過程性內(nèi)聚。如果一個(gè)模塊內(nèi)部的處理成分是相關(guān)的,而且這些處理必須以特定的次序執(zhí)行,則稱為過程性內(nèi)聚。

5)通信性內(nèi)聚。如果一個(gè)模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。第四十五頁,共一百四十三頁,2022年,8月28日

6)信息性內(nèi)聚。如果一個(gè)模塊內(nèi)完成許多功能,每個(gè)功能都有各自的入口點(diǎn),并且代碼相對(duì)獨(dú)立,但所有功能都在相同的數(shù)據(jù)結(jié)構(gòu)上完成,則該模塊具有信息性內(nèi)聚。

7)功能性內(nèi)聚。一個(gè)模塊中各個(gè)部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割,則稱該模塊為功能內(nèi)聚模塊。第四十六頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)1.概要設(shè)計(jì)概要設(shè)計(jì)的基本任務(wù)是:(1)設(shè)計(jì)軟件系統(tǒng)結(jié)構(gòu)在需求分析階段,已經(jīng)把系統(tǒng)分解成層次結(jié)構(gòu),而在概要設(shè)計(jì)階段,需要進(jìn)一步分解,劃分為模塊以及模塊的層次結(jié)構(gòu)。劃分的具體過程是:①將一個(gè)復(fù)雜的系統(tǒng)按功能劃分成模塊;②確定每個(gè)模塊的功能;③確定模塊之間的調(diào)用關(guān)系;④確定模塊之間的接口,即模塊之間傳遞的信息;⑤評(píng)價(jià)模塊結(jié)構(gòu)的質(zhì)量。第四十七頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)(2)數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)是實(shí)現(xiàn)需求定義和規(guī)格說明過程中提出的數(shù)據(jù)對(duì)象的邏輯表示。數(shù)據(jù)設(shè)計(jì)的具體任務(wù)是:

■確定輸入、輸出文件的詳細(xì)數(shù)據(jù)結(jié)構(gòu);■結(jié)合算法設(shè)計(jì),確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作;■確定對(duì)邏輯數(shù)據(jù)結(jié)構(gòu)所必須的那些操作的程序模塊,限制和確定各個(gè)數(shù)據(jù)設(shè)計(jì)決策的影響范圍;■需要與操作系統(tǒng)或調(diào)度程序接口所必需的控制表進(jìn)行數(shù)據(jù)交換時(shí),確定其詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則;■數(shù)據(jù)的保護(hù)性設(shè)計(jì);■防衛(wèi)性、一致性、冗余性設(shè)計(jì)。第四十八頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)(3)編寫概要設(shè)計(jì)文檔。

■概要設(shè)計(jì)說明書

■數(shù)據(jù)庫設(shè)計(jì)說明書

■集成測(cè)試計(jì)劃等。(4)概要設(shè)計(jì)文檔評(píng)審。對(duì)設(shè)計(jì)部分是否完整地實(shí)現(xiàn)了需求中規(guī)定的功能、性能等要求,設(shè)計(jì)方案的可行性,關(guān)鍵的處理及內(nèi)外部接口定義正確性、有效性,各部分之間的一致性等都要進(jìn)行評(píng)審。第四十九頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

概要設(shè)計(jì)的設(shè)計(jì)過程為:

(1)分析數(shù)據(jù)流圖,弄清楚數(shù)據(jù)流加工的過程;

(2)根據(jù)數(shù)據(jù)流圖確定數(shù)據(jù)流圖的類型;

(3)從數(shù)據(jù)流圖導(dǎo)出系統(tǒng)的初始軟件結(jié)構(gòu)圖;

(4)改進(jìn)軟件結(jié)構(gòu)圖,直到符合要求為止;

(5)復(fù)查。第五十頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)數(shù)據(jù)流圖的類型

◆轉(zhuǎn)換處理型是對(duì)輸入數(shù)據(jù)流進(jìn)行轉(zhuǎn)換而得到輸出數(shù)據(jù)流的處理。處理過程由輸入數(shù)據(jù)流、變換數(shù)據(jù)流和輸出數(shù)據(jù)流3步組成。輸入加工輸入信息轉(zhuǎn)換加工內(nèi)部輸入輸入加工內(nèi)部結(jié)果輸出信息第五十一頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

◆事務(wù)處理型是對(duì)輸入數(shù)據(jù)流進(jìn)行某種加工后,按加工的結(jié)果選擇一個(gè)輸出數(shù)據(jù)流繼續(xù)執(zhí)行的處理。事務(wù)處理中,輸入數(shù)據(jù)流稱為事務(wù)流,加工稱為事務(wù)中心,若干平行數(shù)據(jù)流稱為事務(wù)路徑。事務(wù)中心事務(wù)流P2事務(wù)路徑2P1事務(wù)路徑1P3事務(wù)路徑3第五十二頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

常用的軟件結(jié)構(gòu)設(shè)計(jì)工具是結(jié)構(gòu)圖(SC,StructureChart),也稱程序結(jié)構(gòu)圖。使用結(jié)構(gòu)圖描述軟件系統(tǒng)的層次和分塊結(jié)構(gòu)關(guān)系,它反映了整個(gè)系統(tǒng)的功能實(shí)現(xiàn)以及模塊與模塊之間的聯(lián)系與通訊。

表示模塊,框內(nèi)用文字標(biāo)記模塊名。箭頭表示模塊間的調(diào)用關(guān)系;邊上的小箭頭表示調(diào)用時(shí)模塊間傳送的數(shù)據(jù),小箭頭的方向表示傳送信息的方向。表示上屬模塊有條件地調(diào)用下屬模塊。表示上屬模塊重復(fù)調(diào)用下屬模塊。第五十三頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

第五十四頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)轉(zhuǎn)換分析使用轉(zhuǎn)換分析技術(shù)可以把轉(zhuǎn)換型處理數(shù)據(jù)流圖轉(zhuǎn)換為標(biāo)準(zhǔn)結(jié)構(gòu)。(有了標(biāo)準(zhǔn)結(jié)構(gòu)就可根據(jù)軟件結(jié)構(gòu)的度量準(zhǔn)則、模塊化準(zhǔn)則、模塊獨(dú)立性準(zhǔn)則完善軟件結(jié)構(gòu),從而得到結(jié)構(gòu)良好的最終結(jié)構(gòu)圖)。

轉(zhuǎn)換分析步驟為:確定數(shù)據(jù)流圖的類型;確定輸入流、轉(zhuǎn)換流、輸出流的流界;進(jìn)行一級(jí)分解,設(shè)計(jì)上層模塊;進(jìn)行二級(jí)分解,設(shè)計(jì)中下層模塊;進(jìn)一步細(xì)化。

第五十五頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

(1)確定數(shù)據(jù)流圖的類型(2)確立流界主要確定輸入流和輸出流的邊界,獨(dú)立出中心流。

找出輸入流的終點(diǎn)

找出輸出流的起點(diǎn)

找出中心加工

4號(hào)加工1號(hào)加工A2號(hào)加工B中心加工C3號(hào)加工DEF輸入輸出轉(zhuǎn)換流第五十六頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

(3)進(jìn)行一級(jí)分解,設(shè)計(jì)上層模塊。

在中心加工位置設(shè)計(jì)一個(gè)主模塊,命名為M,其功能是控制整個(gè)軟件結(jié)構(gòu),完成系統(tǒng)所要做的各項(xiàng)工作,為輸人流設(shè)計(jì)一個(gè)輸入控制模塊,功能是為主模塊提供輸入信息。為輸出流設(shè)計(jì)一個(gè)輸出控制模塊CO,功能是為主模塊提供數(shù)據(jù)輸出。為中心設(shè)計(jì)一個(gè)轉(zhuǎn)換控制模塊CT,功能是控制所有內(nèi)部數(shù)據(jù)的操作。MCTCICOCCDD第五十七頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

(4)進(jìn)行二級(jí)分解,設(shè)計(jì)中下層模塊。自頂向下,逐步細(xì)化,為第一層的每一個(gè)輸入模塊、輸出模塊、轉(zhuǎn)換模塊設(shè)計(jì)從屬模塊.

為輸入流加工設(shè)計(jì)一個(gè)輸入模塊,向上屬模塊提供輸入信息,而這個(gè)模塊又需要兩個(gè)下屬模塊,一個(gè)為此模塊輸入信息,另一個(gè)將接收的信息轉(zhuǎn)換為上屬模塊所需的信息。如果輸入模塊還有輸入模塊時(shí),又要重復(fù)上屬過程,若輸入模塊是物理輸入端時(shí),則細(xì)化工作停止。

CIC取BB轉(zhuǎn)換BBCA取A轉(zhuǎn)化AAB第五十八頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

為輸出流加工設(shè)計(jì)一個(gè)輸出模塊,接收中心加工的輸出信息,而這個(gè)模塊又需要兩個(gè)下屬模塊,一個(gè)將接收的信息轉(zhuǎn)換為輸出的形式,另一個(gè)將它們輸出。如果輸出模塊還有輸出模塊時(shí),又要重復(fù)上屬過程,若輸出模塊是物理輸出端時(shí),則細(xì)化工作停止。COD轉(zhuǎn)換DD送EEE轉(zhuǎn)換E送FFF第五十九頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

為中心加工設(shè)計(jì)轉(zhuǎn)換模塊。

(5)進(jìn)一步細(xì)化對(duì)上述采用轉(zhuǎn)換分解技術(shù)方法得到的結(jié)構(gòu)圖按照設(shè)計(jì)標(biāo)準(zhǔn)進(jìn)一步細(xì)化。CT處理CCDCD第六十頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)事務(wù)分析

(1)確定數(shù)據(jù)流圖的類型(2)確立流界

從數(shù)據(jù)流圖中找出事務(wù)中心

確定事務(wù)流

確定事務(wù)路徑

1事務(wù)流P2P1P3事務(wù)中心事務(wù)路經(jīng)第六十一頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

(3)進(jìn)行一級(jí)分析,設(shè)計(jì)上層模塊。

事務(wù)分析的任務(wù)是從數(shù)據(jù)流圖中導(dǎo)出具有接受分支和發(fā)送分支的軟件結(jié)構(gòu)。對(duì)事務(wù)中心設(shè)計(jì)“事務(wù)控制”模塊;對(duì)事務(wù)流設(shè)計(jì)“接受事務(wù)’’模塊;對(duì)事務(wù)路徑,設(shè)計(jì)“發(fā)送事務(wù)’’模塊。事務(wù)控制接受事務(wù)發(fā)送事務(wù)第六十二頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

(4)進(jìn)行二級(jí)分解,設(shè)計(jì)中下層模塊。對(duì)于接受分支,可用類似于轉(zhuǎn)換處理型數(shù)據(jù)流圖中對(duì)輸人數(shù)據(jù)流的分析方法設(shè)計(jì)中下層模塊。對(duì)于發(fā)送分支,在發(fā)送事務(wù)模塊下為每個(gè)事務(wù)路徑設(shè)計(jì)一個(gè)事務(wù)處理模塊。這一層稱為事務(wù)層。在事務(wù)層模塊下,沿各事務(wù)路徑進(jìn)行分析,進(jìn)一步細(xì)化,設(shè)計(jì)動(dòng)作層模塊及細(xì)節(jié)層模塊等。第六十三頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)

好的設(shè)計(jì)準(zhǔn)則:①模塊獨(dú)立性高。②模塊規(guī)模適中。③深度、寬度適度④作用域在控制域內(nèi)。⑤接口和界面簡(jiǎn)單。⑥模塊的出口、入口為單入口、單出口。⑦功能可預(yù)測(cè)。

第六十四頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)2.詳細(xì)設(shè)計(jì)

詳細(xì)設(shè)計(jì)的任務(wù)是為軟件結(jié)構(gòu)圖中的每個(gè)模塊確定實(shí)現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。

常見設(shè)計(jì)工具有:圖形工具:程序流程圖,N-S(方框圖),PAD(問題分析圖);表格工具:判定表;語言工具:PDL(偽碼)。

第六十五頁,共一百四十三頁,2022年,8月28日2.1結(jié)構(gòu)化開發(fā)方法第六十六頁,共一百四十三頁,2022年,8月28日第六十七頁,共一百四十三頁,2022年,8月28日第六十八頁,共一百四十三頁,2022年,8月28日方框圖(N-S圖)。2.1面向過程分析與設(shè)計(jì)第六十九頁,共一百四十三頁,2022年,8月28日2.1面向過程分析與設(shè)計(jì)第七十頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

面向?qū)ο蠓椒ê图夹g(shù)是自20世紀(jì)80年代以來逐漸形成的一種分析問題和解決問題的新方法,它的基本出發(fā)點(diǎn)是盡可能按照人類認(rèn)識(shí)世界的方法和思維方式來分析和解決問題。面向?qū)ο蠓椒ú话殉绦蚩醋魇枪ぷ髟跀?shù)據(jù)上的一系列過程或函數(shù)的集合,而是把程序看作是相互協(xié)作而又彼此獨(dú)立的對(duì)象的集合。第七十一頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

面向?qū)ο筌浖_發(fā)方法又稱為OOSD(Object-OrientedSoftwareDevelopment)。

OOSD包括面向?qū)ο蠓治觯∣OA)、面向?qū)ο笤O(shè)計(jì)(OOD)和面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)3個(gè)方面。

OOP是基礎(chǔ),OOA和OOD是應(yīng)用OOP的機(jī)制。所以應(yīng)用OOSD時(shí),必須使用面向?qū)ο蟪绦蛟O(shè)計(jì)語言。第七十二頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)傳統(tǒng)軟件分析設(shè)計(jì)的問題

(1)傳統(tǒng)的軟件分析技術(shù)難以應(yīng)對(duì)需求的不斷變化

(2)傳統(tǒng)軟件開發(fā)方法無法實(shí)現(xiàn)高效的軟件復(fù)用

(3)傳統(tǒng)軟件設(shè)計(jì)方法難以實(shí)現(xiàn)從分析到設(shè)計(jì)的直接過渡

第七十三頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)的主要特點(diǎn)

(1)按照人類習(xí)慣的思維方法,對(duì)軟件開發(fā)過程所有階段進(jìn)行綜合考慮傳統(tǒng)的面向過程的設(shè)計(jì)方法以算法為核心,將數(shù)據(jù)和過程作為相互獨(dú)立的部分,程序代碼用于處理這些數(shù)據(jù)

面向?qū)ο蟮姆椒ㄒ詫?duì)象為核心,強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的概念而不是算法,盡量用符合人類認(rèn)識(shí)世界的思維方式來漸進(jìn)地分析、解決問題

第七十四頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)(2)軟件生存期各階段所使用的方法、技術(shù)具有高度的連續(xù)性傳統(tǒng)的軟件開發(fā)過程把一個(gè)充滿回溯的軟件開發(fā)過程硬性地分割為幾個(gè)階段,而且各個(gè)階段所使用的模型、描述方法不相同。面向?qū)ο蟮姆椒ㄊ褂脟娙P妥鳛槠涔ぷ髂P?,軟件生存期各階段沒有明顯的界限,開發(fā)過程回溯重疊,使用相同的描述方法和模型,使得軟件生存期各階段所使用的方法、技術(shù)具有高度的連續(xù)性。第七十五頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)(3)軟件開發(fā)各階段有機(jī)集成,有利于系統(tǒng)的穩(wěn)定性

OOA、OOD與OOP有機(jī)地集成在一起,使開發(fā)過程始終圍繞著建立問題領(lǐng)域的對(duì)象(類)模型進(jìn)行,且各階段解決的問題又各有側(cè)重。(4)具有良好的重用性由于對(duì)象具有的封裝性和信息隱蔽,使得對(duì)象的內(nèi)部實(shí)現(xiàn)與外界隔離,具有較強(qiáng)的獨(dú)立性,因此,對(duì)象類提供了較理想的可重用的軟件成分。第七十六頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)2.2.3面向?qū)ο蠼?/p>

面向?qū)ο蠓治雠c設(shè)計(jì)從3種角度建立模型:

1)使用對(duì)象模型描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)

定義了做事情的實(shí)體

2)使用動(dòng)態(tài)模型描述系統(tǒng)動(dòng)態(tài)的協(xié)作及控制結(jié)構(gòu)規(guī)定了什么時(shí)候做

3)使用功能模型描述系統(tǒng)功能系統(tǒng)應(yīng)該“做什么”

第七十七頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)準(zhǔn)備知識(shí):

(1)對(duì)象。對(duì)象是人們要進(jìn)行研究的任何事物,從最簡(jiǎn)單的整數(shù)到復(fù)雜的飛機(jī)等均可看作對(duì)象,它不僅能表示具體的事物,還能表示抽象的規(guī)則、計(jì)劃或事件。

(2)對(duì)象的狀態(tài)和行為。對(duì)象具有狀態(tài),一個(gè)對(duì)象用數(shù)據(jù)值來描述它的狀態(tài)。對(duì)象還有操作,用于改變對(duì)象的狀態(tài),對(duì)象及其操作就是對(duì)象的行為。對(duì)象實(shí)現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作封裝于對(duì)象的統(tǒng)一體中。第七十八頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)(3)類具有相同或相似性質(zhì)的對(duì)象的抽象就是類。因此,對(duì)象的抽象是類,類的具體化就是對(duì)象,也可以說類的實(shí)例是對(duì)象。類具有屬性,它是對(duì)象的狀態(tài)的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性。類具有操作,它是對(duì)象的行為的抽象,用操作名和實(shí)現(xiàn)該操作的方法來描述。

第七十九頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)(4)消息和方法對(duì)象之間進(jìn)行通信的結(jié)構(gòu)叫做消息。在對(duì)象的操作中,當(dāng)一個(gè)消息發(fā)送給某個(gè)對(duì)象時(shí),消息包含接收對(duì)象去執(zhí)行某種操作的信息。發(fā)送一條消息至少要包括說明接受消息的對(duì)象名、發(fā)送給該對(duì)象的消息名(即對(duì)象名、方法名)。一般還要對(duì)參數(shù)加以說明,參數(shù)可以是認(rèn)識(shí)該消息的對(duì)象所知道的變量名,或者是所有對(duì)象都知道的全局變量名。類中操作的實(shí)現(xiàn)過程叫做方法,一個(gè)方法有方法名、參數(shù)、方法體。第八十頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)(5)面向?qū)ο蟮奶卣鞣庋b性:將對(duì)象的特性(屬性)和行為(方法)包裝在一起。它實(shí)現(xiàn)了信息的隱蔽作用,使我們通過類的方法來操作該類的對(duì)象,而不必關(guān)心其內(nèi)部實(shí)現(xiàn)。抽象性:將具有一致的數(shù)據(jù)結(jié)構(gòu)(屬性)和行為(操作)的對(duì)象抽象成類。繼承性:是子類自動(dòng)共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機(jī)制,這是類之間的一種關(guān)系。第八十一頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

多態(tài)性:描述的是面向?qū)ο罄锿环椒亩喾N實(shí)現(xiàn)。多態(tài)有兩類情況:一類是方法的重寫(Overriding),另一類是方法的重載(Overloading)。重寫發(fā)生在父類與子類的方法之間,重載發(fā)生在同一個(gè)類的方法之間。重寫指子類可以重寫實(shí)現(xiàn)父類中有相同的名稱和參數(shù)的方法,以屏蔽父類的調(diào)用。重載指一個(gè)類中多個(gè)同名的方法,通過具有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類型,來完成不同的實(shí)現(xiàn),甚至返回不同的類型。第八十二頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)2.2.3UML(統(tǒng)一建模語言)簡(jiǎn)介

UML(UnifiedModelingLanguage)不僅統(tǒng)一了Booch方法、OMT方法、OOSE方法、OOA/OOD的表示方法,而且對(duì)其作了進(jìn)一步的發(fā)展,最終統(tǒng)一為大眾接受的標(biāo)準(zhǔn)建模語言。

UML是一種定義良好、易于表達(dá)、功能強(qiáng)大的建模語言。它不但支持面向?qū)ο蟮姆治雠c設(shè)計(jì),還支持從需求分析開始的軟件開發(fā)全過程。第八十三頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)統(tǒng)一建模語言(UnifiedModelingLanguage,UML)是目前最流行的可視化建模語言,可以貫穿軟件開發(fā)周期中的每一個(gè)階段。

第八十四頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)1.用例圖(UseCaseDiagram)

用例圖用于需求分析階段,第一,它描述了待開發(fā)系統(tǒng)的功能需求,強(qiáng)調(diào)這個(gè)系統(tǒng)是什么;第二,它將系統(tǒng)看作黑盒,從外部參與者的角度來理解系統(tǒng);第三,它驅(qū)動(dòng)了需求分析之后各階段的開發(fā)工作,不僅在開發(fā)過程中保證了系統(tǒng)所有功能的實(shí)現(xiàn),而且被用于驗(yàn)證和檢測(cè)所開發(fā)系統(tǒng)是否滿足需求。用例圖的主要元素是角色(Actor)、用例(UseCase)、角色與用例間的通信角色代表觸發(fā)系統(tǒng)功能的用戶或其他系統(tǒng)用例代表具體的功能描述

第八十五頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)(1)角色(參與者)角色是系統(tǒng)外部的一個(gè)實(shí)體,它以某種方式參與用例的執(zhí)行過程。角色通過向系統(tǒng)輸入或請(qǐng)求輸入某些事件來觸發(fā)系統(tǒng)的執(zhí)行。角色包括人角色(HumanActor)和外部系統(tǒng)角色(SystemActor)。系統(tǒng)的用戶是人角色,用戶通過與系統(tǒng)的交互,操縱系統(tǒng),完成所需要的工作。與本系統(tǒng)交互的外部系統(tǒng)是另一種角色,它與本系統(tǒng)相互作用,交換信息。它可以是軟件系統(tǒng),也可以是硬件設(shè)備,例如在實(shí)時(shí)監(jiān)控系統(tǒng)中的數(shù)據(jù)采集器等。

第八十六頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

第八十七頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(2)用例規(guī)定了系統(tǒng)或部分系統(tǒng)的行為。描述了系統(tǒng)具有的行為,但沒有規(guī)定怎樣實(shí)現(xiàn)這些行為,它是從用戶(角色)的角度來看系統(tǒng)的特定方式。第八十八頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(3)用例間的關(guān)系①泛化關(guān)系(Generalization)(類屬關(guān)系)即用例之間的一般和特殊關(guān)系②包含關(guān)系(Include)。即源用例包含了其他用例的行為③擴(kuò)展關(guān)系(Extend)

即目標(biāo)用例擴(kuò)充了源用例的行為第八十九頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)(4)UML用例圖第九十頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(2)類圖(ClassDiagram)

類圖描述系統(tǒng)的靜態(tài)結(jié)構(gòu),是面向?qū)ο笙到y(tǒng)建模最常用的圖,它描述了類、接口及它們之間的關(guān)系。主要元素是類以及類之間的關(guān)系。

第九十一頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)類描述了一類對(duì)象的屬性和行為。

類與類之間通常有泛化(繼承)、關(guān)聯(lián)、聚合與組合、依賴等多種關(guān)系。第九十二頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(1)泛化(繼承)

繼承是類與類之間較常見的關(guān)系,一個(gè)類(稱為子類)繼承另一個(gè)類(稱為基類)的功能,并增加它自己的新功能。

第九十三頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(2)關(guān)聯(lián)關(guān)聯(lián)表示兩個(gè)類的對(duì)象之間存在某種語義上的聯(lián)系,是類之間的一種很弱的聯(lián)系。第九十四頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(3)聚合與組合聚合與組合都是特殊的關(guān)聯(lián)關(guān)系,都體現(xiàn)了整體與部分的關(guān)系。聚合體現(xiàn)的是整體與部分擁有的關(guān)系即has-a的關(guān)系,此時(shí)整體與部分之間是可分離的,它們可以具有各自的生命周期,部分可以屬于多個(gè)整體對(duì)象,也可以為多個(gè)整體對(duì)象共享比如計(jì)算機(jī)與CPU、公司與員工的關(guān)系等第九十五頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)組合體現(xiàn)的是一種contains-a的關(guān)系,這種關(guān)系比聚合更強(qiáng),也稱為強(qiáng)聚合,但此時(shí)整體與部分是不可分的,整體的生命周期結(jié)束也就意味著部分的生命周期結(jié)束,例如人和人的大腦。

UML中定義聚合和組合都使用一個(gè)帶菱形的連線表示,菱形指向具有整體性質(zhì)的類,其中未填充的菱形表示聚合,填充的菱形表示組合。

第九十六頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(4)依賴當(dāng)一個(gè)類A使用到另一個(gè)類B,并且B類的變化會(huì)影響到A類,則稱A類依賴于B類。第九十七頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(3)對(duì)象圖(ObjectDiagram)對(duì)象圖描述了某一瞬間系統(tǒng)的對(duì)象、對(duì)象的狀態(tài)及對(duì)象間的關(guān)系。對(duì)象圖可以看作是類圖的實(shí)例。對(duì)象是類的實(shí)例,對(duì)象間的連線是類之間的關(guān)聯(lián)關(guān)系的實(shí)例。

Object1Object2第九十八頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(4)交互作用圖包括時(shí)序圖和協(xié)作圖,描述了對(duì)象間的交互作用,由對(duì)象、對(duì)象間的關(guān)系組成,并包含在對(duì)象間傳遞的消息。時(shí)序圖描述了消息的時(shí)間順序,適合于描述實(shí)時(shí)系統(tǒng)和復(fù)雜的腳本。它是一張表,對(duì)象沿X軸排列,消息按照時(shí)間順序遞增沿Y軸排序。第九十九頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

協(xié)作圖強(qiáng)調(diào)發(fā)送和接收消息的對(duì)象的組織結(jié)構(gòu)。

協(xié)作圖和時(shí)序圖在語義上是相當(dāng)?shù)?,可以彼此轉(zhuǎn)換而不損失信息。第一百頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(5)狀態(tài)圖

狀態(tài)圖描述類的特定對(duì)象所有可能的狀態(tài),以及事件發(fā)生時(shí)狀態(tài)的轉(zhuǎn)移條件。

第一百零一頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(6)活動(dòng)圖

主要是一個(gè)流圖,描述了從活動(dòng)到活動(dòng)的流。它由一系列動(dòng)作組成。

第一百零二頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

交互作用圖強(qiáng)調(diào)從對(duì)象到對(duì)象的控制流,活動(dòng)圖則強(qiáng)調(diào)從活動(dòng)到活動(dòng)的控制流。第一百零三頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(7)組件圖組件圖描述了組件及組件間的關(guān)系。

它的用途是顯示系統(tǒng)中的軟件對(duì)其他軟件組件的依賴關(guān)系。

第一百零四頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(8)配置圖

配置圖描述軟件系統(tǒng)如何部署到硬件環(huán)境中,反映了系統(tǒng)中軟件和硬件的物理架構(gòu),表示系統(tǒng)運(yùn)行時(shí)的處理節(jié)點(diǎn)以及節(jié)點(diǎn)中組件的配置。它的用途是顯示該系統(tǒng)不同的組件將在何處物理地運(yùn)行,以及將如何彼此通信。第一百零五頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

有很多CASE工具都支持UML設(shè)計(jì),如Visio、PowerDesinger、RationalRose等。這些工具不僅提供了標(biāo)準(zhǔn)的符號(hào)來繪制UML的各類模型圖,同時(shí)也提供了很多輔助工具來輔助分析人員進(jìn)行模型檢查和各類正向與逆向工程。

第一百零六頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治?/p>

1.面向?qū)ο蠓治龅幕具^程(1)學(xué)習(xí)、了解原始需求目的:1)初步了解業(yè)務(wù)需求

2)找出原始需求中存在二義性、不完整、不準(zhǔn)確的需求為需求分析打基礎(chǔ)(2)進(jìn)一步的需求調(diào)研發(fā)現(xiàn)和改正原始陳述中的二義性和不一致性,補(bǔ)充遺漏的內(nèi)容,從而使需求陳述更完整、更準(zhǔn)確。

第一百零七頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)(3)需求分析

深入理解用戶需求,抽象出目標(biāo)系統(tǒng)的本質(zhì)屬性,并用模型準(zhǔn)確地表示出來。

(4)建立對(duì)象模型面向?qū)ο蠼5玫降哪P桶?類,即對(duì)象模型、動(dòng)態(tài)模型、功能模型。這3類模型在不同的系統(tǒng)中的重要程度不同,但是對(duì)象模型是任何一個(gè)軟件系統(tǒng)都需要的,當(dāng)涉及交互作用和時(shí)序時(shí)(如用戶界面及過程控制等),需要使用動(dòng)態(tài)模型。第一百零八頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

2.建立對(duì)象模型對(duì)象模型的建立主要是確定類、建立類之間的關(guān)聯(lián)關(guān)系、確定類的屬性等過程。

(1)確定類與對(duì)象

以自然語言書寫的需求陳述為依據(jù),把陳述中的名詞作為類與對(duì)象的候選者,用形容詞作為確定屬性的線索,把動(dòng)詞作為服務(wù)(操作)的候選者。

第一百零九頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

用這種簡(jiǎn)單方法確定的候選者是不準(zhǔn)確的,往往包含大量不正確的或不必要的事物,必須經(jīng)過進(jìn)一步的嚴(yán)格篩選,從中去掉不正確的或不必要的,僅保留確實(shí)應(yīng)該記錄其信息或需要其提供服務(wù)的那些對(duì)象,篩選時(shí)主要依據(jù)下列標(biāo)準(zhǔn):①冗余。如果兩個(gè)類表達(dá)了同樣的信息,則應(yīng)該保留在此問題域中最富于描述力的名稱。②無關(guān)。僅需要把與本問題密切相關(guān)的類放進(jìn)目標(biāo)系統(tǒng)中,與當(dāng)前要解決的問題無關(guān)的類應(yīng)該刪掉。

第一百一十頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)③籠統(tǒng)。在需求陳述中常常使用一些籠統(tǒng)的名詞,如果系統(tǒng)無需處理有關(guān)它們的信息或者有更明確更具體的名詞對(duì)應(yīng)它們所暗示的事務(wù),那么就應(yīng)該去掉這些籠統(tǒng)的或模糊的類。④屬性。在需求陳述中有些名詞實(shí)際上描述的是其他對(duì)象的屬性,應(yīng)該把這些名詞從候選類與對(duì)象中去掉。⑤操作。在需求陳述中有時(shí)可能使用一些既可作為名詞,又可作為動(dòng)詞的詞,應(yīng)該慎重考慮它們?cè)诒締栴}中的含義,以便正確地決定把它們作為類還是作為類中定義的操作。⑥實(shí)現(xiàn)。在分析階段不應(yīng)該過早地考慮怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng),在分析階段過早地考慮它們反而會(huì)分散注意力,因此應(yīng)該去掉僅和實(shí)現(xiàn)有關(guān)的候選類與對(duì)象。第一百一十一頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)需要不斷地和用戶、領(lǐng)域?qū)<医涣?,反?fù)構(gòu)造模型,逐漸澄清二義性,改正錯(cuò)誤,才能最終把模型建立起來

第一百一十二頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(3)劃分主題為了降低復(fù)雜程度,在開發(fā)大型、復(fù)雜系統(tǒng)的過程中,可以把系統(tǒng)再進(jìn)一步劃分成幾個(gè)不同的主題,也就是在概念上把系統(tǒng)包含的內(nèi)容分解成若干范疇。應(yīng)該按問題領(lǐng)域而不是用功能分解方法來確定主題。

(4)確定屬性通常,在需求陳述中用名詞詞組表示屬性,但是不可能僅依靠需求陳述找到所有屬性,還必須借助于領(lǐng)域知識(shí)和常識(shí)才能分析得出需要的屬性。應(yīng)該僅考慮與具體應(yīng)用直接相關(guān)的屬性,不要考慮那些超出所要解決的問題范圍的屬性。

第一百一十三頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(5)識(shí)別繼承關(guān)系一般說來,可以使用兩種方式建立繼承(即泛化)關(guān)系:①自底向上:抽象出現(xiàn)有類的共同性質(zhì)泛化出父類,這個(gè)過程實(shí)質(zhì)上模擬了人類歸納思維過程。②自頂向下:把現(xiàn)有類細(xì)化成更具體的子類,這模擬了人類的演繹思維過程。從應(yīng)用域中常常能明顯看出應(yīng)該做的自頂向下的具體化工作。第一百一十四頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

3.建立動(dòng)態(tài)模型建立動(dòng)態(tài)模型基本包括:

1)編寫典型交互行為的腳本;

2)從腳本中提取出事件,確定觸發(fā)每個(gè)事件的動(dòng)作對(duì)象以及接收事件的目標(biāo)對(duì)象;

3)排列事件發(fā)生的次序,確定每個(gè)對(duì)象可能有的狀態(tài)及狀態(tài)間的轉(zhuǎn)換關(guān)系,并用狀態(tài)圖描繪它們;

4)比較各個(gè)對(duì)象的狀態(tài)圖,檢查它們之間的一致性,確保事件之間的匹配。第一百一十五頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

4.建立功能模型功能模型表明了系統(tǒng)中數(shù)據(jù)之間的依賴關(guān)系,以及有關(guān)的數(shù)據(jù)處理功能,它由一組數(shù)據(jù)流圖組成。數(shù)據(jù)流圖的畫法與結(jié)構(gòu)化分析一樣,其中的處理功能可以用IPO圖(或表)、偽碼等多種方式進(jìn)一步描述。在面向?qū)ο蠓椒▽W(xué)中,數(shù)據(jù)流圖遠(yuǎn)不如在結(jié)構(gòu)分析、設(shè)計(jì)方法中那樣重要。與對(duì)象模型和動(dòng)態(tài)模型比較起來,數(shù)據(jù)流圖并沒有增加新的信息,有助于軟件開發(fā)人員更深入地理解問題域,改進(jìn)和完善自己的設(shè)計(jì)。第一百一十六頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

IPO指結(jié)構(gòu)化設(shè)計(jì)中變換型結(jié)構(gòu)的輸入(Input)、加工(Processing)、輸出(Output)。

IPO圖是對(duì)每個(gè)模塊進(jìn)行詳細(xì)設(shè)計(jì)的工具,它是輸入加工輸出(INPUTPROCESSOUTPUT)圖的簡(jiǎn)稱.

第一百一十七頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο笤O(shè)計(jì)

按照面向?qū)ο蠓椒ǖ摹皣娙P汀?,軟件生命周期的各個(gè)階段交替回溯,整個(gè)生命周期的概念、屬性、描述方法具有一致性,因此從分析到設(shè)計(jì)無須表示方法的轉(zhuǎn)換,只是分析和設(shè)計(jì)的任務(wù)分工與側(cè)重不同。第一百一十八頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治鼋⒌氖菓?yīng)用領(lǐng)域面向?qū)ο蟮哪P?,而面向?qū)ο笤O(shè)計(jì)建立的是軟件系統(tǒng)的模型。與OOA的模型比較,OOD模型的抽象層次較低,但是建模的原則和方法是相同的??傮w看,分析與設(shè)計(jì)本質(zhì)上是一個(gè)多次反復(fù)迭代的過程,而面向?qū)ο蠓治雠c面向?qū)ο笤O(shè)計(jì)的界限尤其模糊。用面向?qū)ο蠓椒ㄔO(shè)計(jì)軟件,原則上也是先進(jìn)行總體設(shè)計(jì)(即系統(tǒng)設(shè)計(jì)),然后再進(jìn)行詳細(xì)設(shè)計(jì)(對(duì)象),當(dāng)然,它們之間的界限非常模糊,事實(shí)上是一個(gè)多次反復(fù)迭代的過程。

第一百一十九頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)1.面向?qū)ο笤O(shè)計(jì)的基本任務(wù)將分析階段所創(chuàng)建的分析模型轉(zhuǎn)換為設(shè)計(jì)模型,解決如何做的問題。面向?qū)ο蠓治鲋饕紤]系統(tǒng)做什么,而不關(guān)心系統(tǒng)如何實(shí)現(xiàn)的問題。在面向?qū)ο笤O(shè)計(jì)需要以O(shè)OA模型為基礎(chǔ),重新定義或補(bǔ)充一些新的類,或在原有類中補(bǔ)充或修改一些屬性及操作。因此,OOD的目標(biāo)是產(chǎn)生一個(gè)滿足用戶需求的、可實(shí)現(xiàn)的OOD模型。第一百二十頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蟮脑O(shè)計(jì)包括系統(tǒng)設(shè)計(jì)和對(duì)象設(shè)計(jì)。

(1)系統(tǒng)設(shè)計(jì)將分析模型中緊密相關(guān)的類劃分為若干子系統(tǒng)(也稱為主題),子系統(tǒng)應(yīng)該具有良好的接口,子系統(tǒng)中的類相互協(xié)作。進(jìn)行系統(tǒng)設(shè)計(jì)的關(guān)鍵是子系統(tǒng)的劃分,子系統(tǒng)由它們的責(zé)任及所提供的服務(wù)來標(biāo)識(shí),在OOD中,這種服務(wù)是完成特定功能的一組操作。

第一百二十一頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(2)對(duì)象設(shè)計(jì)為每個(gè)類的屬性和操作進(jìn)行詳細(xì)設(shè)計(jì),包括屬性和操作的數(shù)據(jù)結(jié)構(gòu)及實(shí)現(xiàn)算法,以及類之間的關(guān)聯(lián)。另外,在OOA階段,將一些與具體實(shí)現(xiàn)條件密切相關(guān)的對(duì)象,例如,與圖形用戶界面(GUI)、數(shù)據(jù)管理、硬件及操作系統(tǒng)有關(guān)的對(duì)象推遲到OOD階段考慮。

第一百二十二頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

(3)設(shè)計(jì)優(yōu)化主要涉及提高效率的技術(shù)和建立良好的繼承關(guān)系的方法。提高效率的技術(shù)包括增加冗余關(guān)聯(lián)以提高訪問效率、調(diào)整查詢次序、優(yōu)化算法等技術(shù)。建立良好的繼承關(guān)系是優(yōu)化設(shè)計(jì)的重要內(nèi)容,通過對(duì)繼承關(guān)系的調(diào)整實(shí)現(xiàn)。第一百二十三頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)

2.面向?qū)ο笤O(shè)計(jì)準(zhǔn)則

(1)模塊化面向?qū)ο筌浖_發(fā)模式很自然地支持了把系統(tǒng)分解成模塊的設(shè)計(jì)原理:對(duì)象就是模塊,是把數(shù)據(jù)結(jié)構(gòu)和操作這些數(shù)據(jù)的方法緊密地結(jié)合在一起所構(gòu)成的模塊。

(2)抽象面向?qū)ο蠓椒ú粌H支持過程抽象,而且支持?jǐn)?shù)據(jù)抽象,類實(shí)際上是一種抽象數(shù)據(jù)類型。

第一百二十四頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)(3)信息隱藏在面向?qū)ο蠓椒ㄖ?,信息隱藏通過對(duì)象的封裝性實(shí)現(xiàn):類結(jié)構(gòu)分離了接口與實(shí)現(xiàn),從而支持了信息隱藏。對(duì)于類的用戶來說,屬性的表示方法和操作的實(shí)現(xiàn)算法都應(yīng)該是隱藏的。(4)弱耦合在面向?qū)ο蠓椒ㄖ?,耦合主要指不同?duì)象之間相互關(guān)聯(lián)的緊密程度。如果一類對(duì)象過多地依賴其他類對(duì)象來完成自己的工作,則不僅給理解、測(cè)試或修改這個(gè)類帶來很大困難,而且還將大大降低該類的可重用性和可移植性。第一百二十五頁,共一百四十三頁,2022年,8月28日2.2面向?qū)ο蠓治雠c設(shè)計(jì)(5)強(qiáng)內(nèi)聚內(nèi)聚衡量一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度。也可以把內(nèi)聚定義為:設(shè)計(jì)中使用的一個(gè)構(gòu)件內(nèi)的各個(gè)元素,對(duì)完成一個(gè)定義明確的目的所做出的貢獻(xiàn)程度。在設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚。(6)可重用重用有兩方面的含義:盡量使用已有的類(包括開發(fā)環(huán)境提供的類庫,及以往開發(fā)類似系統(tǒng)時(shí)創(chuàng)建的類);如果確實(shí)需要?jiǎng)?chuàng)建新類,則在設(shè)計(jì)這些新類的協(xié)議時(shí),應(yīng)該考慮將來的可重復(fù)使用性。第一百二十六頁,共一百四十三頁,2022年,8月28日2.3數(shù)據(jù)庫建模與設(shè)計(jì)

大多數(shù)軟件系統(tǒng)中都包含數(shù)據(jù)庫處理,軟件設(shè)計(jì)的成敗與數(shù)據(jù)庫設(shè)計(jì)息息相關(guān)。設(shè)計(jì)一個(gè)好的數(shù)據(jù)庫需要遵循軟件工程的理論和方法,采用規(guī)范的設(shè)計(jì)方法,根據(jù)用戶的需求,進(jìn)行分析、歸納、抽象,最終設(shè)計(jì)出符合實(shí)際情況的數(shù)據(jù)模型,選擇一種符合要求的數(shù)據(jù)庫管理系統(tǒng),最終實(shí)現(xiàn)對(duì)數(shù)據(jù)模型及數(shù)據(jù)的管理。第一百二十七頁,共一百四十三頁,2022年,8月28日2.3數(shù)據(jù)庫建模與設(shè)計(jì)

規(guī)范的設(shè)計(jì)方法之一——新奧爾良(NewOrleans)方法把數(shù)據(jù)庫設(shè)計(jì)分成:6個(gè)階段。第一百二十八頁,共一百四十三頁,2022年,8月28日2.3數(shù)據(jù)庫建模與設(shè)計(jì)

需求分析

需求分析就是分析用戶的需要與要求,確定系統(tǒng)必須完成哪些工作,對(duì)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。確定用戶的最終需求非常困難。一方面用戶缺少計(jì)算機(jī)知識(shí),開始時(shí)無法確定計(jì)算機(jī)究竟能為自己做什么,不能做什么,無法一下子準(zhǔn)確地表達(dá)自己的需求,用戶所提出的需求往往不斷地變化。另一方面設(shè)計(jì)人員缺少用戶的專業(yè)知識(shí),不易理解用戶的真正需求,甚至誤解用戶的需求。第一百二十九頁,共一百四十三頁,2022年,8月28日2.3數(shù)據(jù)庫建模與設(shè)計(jì)

需求分析階段應(yīng)該了解以下內(nèi)容:①組織機(jī)構(gòu)情況。包括部門組成情況、各部門的職責(zé)、應(yīng)用程序的使用權(quán)限等,在此基礎(chǔ)上形成系統(tǒng)功能權(quán)限的劃分。②各部門的業(yè)務(wù)活動(dòng)情況。包括各部門輸入和使用哪些數(shù)據(jù),如何加工處理這些數(shù)據(jù),處理數(shù)據(jù)需要什么具體的算法,產(chǎn)生什么信息,這些輸出信息提供到什么部門,輸出結(jié)果的格式是什么。在此基礎(chǔ)上形成數(shù)據(jù)流圖和數(shù)據(jù)字典。③用戶對(duì)系統(tǒng)的功能要求。在熟悉了業(yè)務(wù)活動(dòng)的基礎(chǔ)上,協(xié)助用戶明確對(duì)系統(tǒng)的各種要求,包括信息要求、處理要求、完全性與完整性要求。第一百三十頁,共一百四十三頁,2022年,8月28日2.3數(shù)據(jù)庫建模與設(shè)計(jì)

常用的調(diào)查方法有以下幾種。①親自參與業(yè)務(wù)活動(dòng),了解業(yè)務(wù)處理的基本情況②請(qǐng)專人介紹③與用戶交流、詢問等方式來解決存在的疑問④設(shè)計(jì)調(diào)查表請(qǐng)用戶填寫⑤查閱記錄。即查問與原系統(tǒng)有關(guān)的數(shù)據(jù)記錄。⑥學(xué)習(xí)文件。及時(shí)了解掌握與用戶業(yè)務(wù)相關(guān)的政策和業(yè)務(wù)規(guī)范等文件。⑦使用舊系統(tǒng)。如果用戶已經(jīng)使用計(jì)算機(jī)系統(tǒng)協(xié)助業(yè)務(wù)處理,可以通過使用舊系統(tǒng),掌握已有的需求、了解用戶變化的和新增的需求。

第一百三十一頁,共一百四十三頁,2022年,8月28日2.3數(shù)據(jù)庫建模與設(shè)計(jì)

2.3.2概念結(jié)構(gòu)設(shè)計(jì)概念結(jié)構(gòu)獨(dú)立于數(shù)據(jù)庫邏輯結(jié)構(gòu),也獨(dú)立于支持?jǐn)?shù)據(jù)庫的DB

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論