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

下載本文檔

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

文檔簡介

1、第二章 軟件分析與設(shè)計基礎(chǔ) 本章包含的內(nèi)容: 1)面向過程分析與設(shè)計 2)面向?qū)ο蠓治雠c設(shè)計 3)數(shù)據(jù)庫建模與設(shè)計本章重點: 1)掌握面向過程分析與設(shè)計的思想與方法; 2)熟練掌握面向?qū)ο蠓治雠c設(shè)計的思想與方法; 3)熟練掌握數(shù)據(jù)庫設(shè)計的思想與方法。第1頁/共143頁經(jīng)驗和教訓表明:1)軟件開發(fā)需要遵循軟件工程方法論的指導,軟件分析與設(shè)計質(zhì)量決定軟件產(chǎn)品的質(zhì)量2)合理的軟件分析與設(shè)計建立在對軟件需求正確理解的基礎(chǔ)上,對軟件需求的深入理解是軟件開發(fā)工作獲得成功的前提和關(guān)鍵3)要開發(fā)出好的軟件產(chǎn)品,首先必須知道用戶的需求,并在充分了解用戶需求的基礎(chǔ)上,對用戶的業(yè)務(wù)需求建模,并進行相應(yīng)的分析與設(shè)計,

2、才能生產(chǎn)出真正符合用戶要求且生命周期長的軟件產(chǎn)品。 第2頁/共143頁面向過程分析與設(shè)計 傳統(tǒng)的軟件工程方法: 結(jié)構(gòu)化分析(Structrued AnalysisStructrued Analysis, SASA) 結(jié)構(gòu)化設(shè)計(Structrued DesignStructrued Design, SDSD)。 第3頁/共143頁面向過程分析與設(shè)計 結(jié)構(gòu)化分析 結(jié)構(gòu)化分析是20世紀70年代后期提出的,是一種基于功能分解的需求分析方法,適用于分析大型數(shù)據(jù)處理系統(tǒng)。與結(jié)構(gòu)化設(shè)計(SD)一起聯(lián)合使用,能較好地實現(xiàn)一個軟件系統(tǒng)的研制。 它是一種面向數(shù)據(jù)流,自頂向下、逐步求精進行需求分析的方法。 它通常

3、用數(shù)據(jù)流圖表達需求,以數(shù)據(jù)字典表示數(shù)據(jù)的邏輯定義。 第4頁/共143頁面向過程分析與設(shè)計 SASA方法的特點:方法的特點: 核心思想是自頂向下、逐步求精 基本手段是分解和抽象 所謂分解就是把大問題分割成若干小問題,把復雜所謂分解就是把大問題分割成若干小問題,把復雜度降低到人們可以掌握的程度,然后分別解決。度降低到人們可以掌握的程度,然后分別解決。 所謂抽象就是把細節(jié)略去,先考慮最本質(zhì)的東西。所謂抽象就是把細節(jié)略去,先考慮最本質(zhì)的東西。 使用數(shù)據(jù)流圖、數(shù)據(jù)字典等規(guī)范化工具描述需求。第5頁/共143頁面向過程分析與設(shè)計使用使用SASA方法進行軟件需求分析的步驟:方法進行軟件需求分析的步驟:(1)(

4、1)建立當前系統(tǒng)的具體模型 分析當前系統(tǒng)和現(xiàn)實環(huán)境,描述當前系統(tǒng)的工作方式,客觀地反映現(xiàn)實世界的實際情況。(2)(2)抽象出當前系統(tǒng)的邏輯模型 就是在理解當前系統(tǒng)“怎么做”的基礎(chǔ)上,抽取出“做什么”的本質(zhì),從當前系統(tǒng)的具體模型抽象出當前系統(tǒng)的邏輯模型。第6頁/共143頁面向過程分析與設(shè)計(3)(3)建立目標系統(tǒng)的邏輯模型 所謂目標系統(tǒng)是指將要開發(fā)的由計算機處理的系統(tǒng)。方法如下: 在數(shù)據(jù)流圖上把目標系統(tǒng)與當前系統(tǒng)在邏輯上不同的部分找出來,這部分就是要改變的部分。將要改變部分抽象為一個加工,再進行逐步分解,最后就可獲得目標系統(tǒng)的邏輯模型。第7頁/共143頁面向過程分析與設(shè)計1. 1. 數(shù)據(jù)流圖 數(shù)

5、據(jù)流是數(shù)據(jù)在系統(tǒng)內(nèi)的傳輸途徑,數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的變換過程。 數(shù)據(jù)流圖是結(jié)構(gòu)化系統(tǒng)分析的主要工具,它去掉了具體的組織機構(gòu)、工作場所、物質(zhì)流等,僅反映信息和數(shù)據(jù)存儲、流動、使用以及加工的情況。 第8頁/共143頁面向過程分析與設(shè)計 數(shù)據(jù)流圖的基本元素 包括數(shù)據(jù)流、加工、數(shù)據(jù)存取文件、輸入數(shù)據(jù)的源點和輸出數(shù)據(jù)的匯點4類。常采用如圖2-1所示的圖形符號:圖2-1 數(shù)據(jù)流圖基本圖形符號第9頁/共143頁面向過程分析與設(shè)計 繪制數(shù)據(jù)流圖時,應(yīng)先找出系統(tǒng)的數(shù)據(jù)源點與匯點及對應(yīng)的輸入數(shù)據(jù)流與輸出數(shù)據(jù)流,然后從輸入數(shù)據(jù)流(即系統(tǒng)的源點)出發(fā),按照系統(tǒng)的邏輯需要,

6、逐步畫出系列邏輯加工,直到所需的輸出數(shù)據(jù)流(即系統(tǒng)的匯點)。 第10頁/共143頁面向過程分析與設(shè)計 數(shù)據(jù)流在傳遞過程中,需要一些加工處理。常見的加工關(guān)系及對應(yīng)的圖形符號如圖2-2所示。 圖2-2 數(shù)據(jù)流圖加工關(guān)系第11頁/共143頁面向過程分析與設(shè)計數(shù)據(jù)流圖應(yīng)用舉例:數(shù)據(jù)流圖應(yīng)用舉例:取款單信息付款儲戶核查登錄賬卡存折存折信息取款信息 銀行取款過程的數(shù)據(jù)流圖反饋信息付款信息可取款信息第12頁/共143頁面向過程分析與設(shè)計 分層數(shù)據(jù)流圖 較復雜的實際問題中,僅用一個數(shù)據(jù)流圖很難表達數(shù)據(jù)處理過程和數(shù)據(jù)加工情況,需要采用“先全局后局部,先整體后細節(jié),先抽象后具體”的逐步求精原則,按照問題的層次結(jié)構(gòu)

7、逐步分解。 首先確定頂層數(shù)據(jù)流圖,把整個數(shù)據(jù)處理過程抽象為一個加工,它的輸人數(shù)據(jù)和輸出數(shù)據(jù)實際上反映了系統(tǒng)與外界環(huán)境的接口,這就是頂層數(shù)據(jù)流圖。 然后在上一層數(shù)據(jù)流圖的基礎(chǔ)上進一步細化,直到數(shù)據(jù)流圖的加工不能再分解為止。 第13頁/共143頁面向過程分析與設(shè)計 第14頁/共143頁面向過程分析與設(shè)計 畫數(shù)據(jù)流圖的步驟和原則 畫數(shù)據(jù)流圖的基本步驟是自外向內(nèi),自頂向下,逐層細化,完善求精,并且需要遵循以下基本原則: 頂層數(shù)據(jù)流圖上的數(shù)據(jù)流必須封閉在外部實體之間。 每個加工至少有一個輸入數(shù)據(jù)流和一個輸出數(shù)據(jù)流。 在數(shù)據(jù)流圖中,需按層給加工進行編號。編號應(yīng)表明該加工處在哪一層,以及與上下層的父圖與子圖

8、的對應(yīng)關(guān)系。 任何一個數(shù)據(jù)流子圖必須與它上一層的一個加工對應(yīng),兩者的輸入數(shù)據(jù)流和輸出數(shù)據(jù)流必須一致,即父圖與子圖的平衡。 圖上每個元素都必須有名字,加工的名字應(yīng)當表明做什么事情。第15頁/共143頁面向過程分析與設(shè)計 數(shù)據(jù)流圖畫法舉例:數(shù)據(jù)流圖畫法舉例:(培訓中心管理系統(tǒng)數(shù)據(jù)流圖)培訓中心管理系統(tǒng)數(shù)據(jù)流圖)第16頁/共143頁面向過程分析與設(shè)計 第17頁/共143頁面向過程分析與設(shè)計 第18頁/共143頁面向過程分析與設(shè)計 第19頁/共143頁面向過程分析與設(shè)計2. 2. 數(shù)據(jù)字典 數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合。 它通過對數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)的定義來描述數(shù)據(jù)流、數(shù)據(jù)存儲的邏輯內(nèi)容。 通常包括數(shù)據(jù)項

9、、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲、處理過程和外部實體等6個部分。第20頁/共143頁面向過程分析與設(shè)計 數(shù)據(jù)項 數(shù)據(jù)項是數(shù)據(jù)的最小組成單位,若干個數(shù)據(jù)項可以組成一個數(shù)據(jù)結(jié)構(gòu)。對數(shù)據(jù)項的描述通常包括以下內(nèi)容。 數(shù)據(jù)項描述數(shù)據(jù)項名,數(shù)據(jù)項含義說明,別名,數(shù)據(jù)類型,長度,取值范圍,取值含義,與其他數(shù)據(jù)項的邏輯關(guān)系第21頁/共143頁面向過程分析與設(shè)計 數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu)反映了數(shù)據(jù)之間的組合關(guān)系。一個數(shù)據(jù)結(jié)構(gòu)可以由若干個數(shù)據(jù)項組成,也可以由若干個數(shù)據(jù)結(jié)構(gòu)組成(嵌套數(shù)據(jù)結(jié)構(gòu)),或由若干個數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)混合組成。對數(shù)據(jù)結(jié)構(gòu)的描述通常包括以下內(nèi)容。 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)名,含義說明,組成:數(shù)據(jù)項或數(shù)據(jù)結(jié)構(gòu)第22頁

10、/共143頁面向過程分析與設(shè)計 數(shù)據(jù)流 數(shù)據(jù)流是數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)內(nèi)的傳輸路徑。對數(shù)據(jù)流的描述通常包括以下內(nèi)容。 數(shù)據(jù)流描述數(shù)據(jù)流名,說明,數(shù)據(jù)流來源,數(shù)據(jù)流去向,組成:數(shù)據(jù)結(jié)構(gòu),平均流量,高峰期流量 數(shù)據(jù)存儲 數(shù)據(jù)存儲是數(shù)據(jù)結(jié)構(gòu)停留或保存的地方。數(shù)據(jù)存儲的描述通常包括以下內(nèi)容。 數(shù)據(jù)存儲數(shù)據(jù)存儲名,說明,編號,流入的數(shù)據(jù)流,流出的數(shù)據(jù)流,組成:數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)量,存取方式 第23頁/共143頁面向過程分析與設(shè)計 處理過程 處理過程應(yīng)描述處理邏輯的功能,詳細地描述其輸入輸出的數(shù)據(jù)流以及這些數(shù)據(jù)的基本轉(zhuǎn)換路徑和策略說明性信息,對處理過程的描述通常包括以下內(nèi)容。 處理過程處理過程名,編號,說明,輸入:數(shù)

11、據(jù)流,輸出:數(shù)據(jù)流,處理:簡要說明 第24頁/共143頁面向過程分析與設(shè)計 外部實體 外部實體是系統(tǒng)的“人-機”界面,系統(tǒng)的數(shù)據(jù)流由外部實體流入,經(jīng)過加工處理之后,向外部實體流出。外部實體的描述如下。 外部實體=外部實體的名稱,編號,輸入:數(shù)據(jù)流,輸出:數(shù)據(jù)流第25頁/共143頁面向過程分析與設(shè)計3. 3. 實例-學籍管理分析 學籍管理涉及的內(nèi)容比較多,業(yè)務(wù)邏輯也較復雜。在不失一般性的基礎(chǔ)上,本實例簡化了學籍管理的業(yè)務(wù)邏輯. (1)需求描述 工作內(nèi)容: 建立學生的學籍 匯總每學期學生的學分 學生每門課程的的考試成績 學生的平均成績 匯總各分數(shù)段的人數(shù) 各種查詢第26頁/共143頁面向過程分析與

12、設(shè)計涉及人員:管理人員班主任任課教師學生 系統(tǒng)初步: 系統(tǒng)性質(zhì):MIS軟件。 系統(tǒng)使用者:管理人員、班主任、教師、學生等。 系統(tǒng)運行環(huán)境:網(wǎng)絡(luò)運行。第27頁/共143頁面向過程分析與設(shè)計 表2-1 學籍管理主要功能表功能名稱功能名稱 功能說明功能說明 學生管理學生管理 登記學生的基本信息(姓名、性別、班級等),并提供查詢功能。登記學生的基本信息(姓名、性別、班級等),并提供查詢功能。 課程管理課程管理 登記課程基本情況(課程名稱、開課學期、課程類型、學分等),登記課程基本情況(課程名稱、開課學期、課程類型、學分等),提供查詢提供查詢 教師管理教師管理 登記教師基本情況(姓名、年齡、性別、學歷等

13、),提供查詢統(tǒng)登記教師基本情況(姓名、年齡、性別、學歷等),提供查詢統(tǒng)計計 成績管理成績管理 登記學生各門課程的考試成績、提供查詢、統(tǒng)計功能登記學生各門課程的考試成績、提供查詢、統(tǒng)計功能 授課管理授課管理 登記教師講授課程、授課地點、授課學期,提供查詢功能登記教師講授課程、授課地點、授課學期,提供查詢功能 編碼維護編碼維護 維護系統(tǒng)中使用的編碼(如職稱編碼、學院編碼、班級編碼等)維護系統(tǒng)中使用的編碼(如職稱編碼、學院編碼、班級編碼等) 第28頁/共143頁面向過程分析與設(shè)計(2)分析設(shè)計頂層數(shù)據(jù)流圖 管理人員、教師、班主任、學生等是數(shù)據(jù)輸入的源點和數(shù)據(jù)輸出的匯點。 學生基本信息、教師信息、課程

14、信息、教學計劃、考試成績等是數(shù)據(jù)存儲文件。 圖2-4 學籍管理頂層數(shù)據(jù)流圖第29頁/共143頁面向過程分析與設(shè)計(3)逐步細化數(shù)據(jù)流圖 根據(jù)表2-1中列出的學籍管理的主要功能,將學籍管理加工細化分解為學生管理、課程管理、教師管理、成績管理、授課管理和編碼維護等子加工。圖2-5 學籍管理1層數(shù)據(jù)流圖第30頁/共143頁面向過程分析與設(shè)計 根據(jù)實際業(yè)務(wù),分析各處理流程,直到數(shù)據(jù)流圖中出現(xiàn)的每個加工處理都不能再分解為止。 成績管理管理可以繼續(xù)細化為如圖2-6所示的成績管理數(shù)據(jù)流圖。圖2-6 成績管理數(shù)據(jù)流圖第31頁/共143頁面向過程分析與設(shè)計 圖2-62-6所示的成績錄入和成績查詢都可以繼續(xù)分解。

15、例如:成績錄入加工可以繼續(xù)細化為增加成績、修改成績、刪除成績等子加工,為了方便成績錄入,還需要班級學生名單查詢子過程,因此圖2-62-6所示的成績管理的2 2層數(shù)據(jù)流圖的成績錄入加工可以繼續(xù)細化分解為圖2-72-7所示成績錄入的3 3層數(shù)據(jù)流圖。 圖2-7 細化后的成績錄入數(shù)據(jù)流圖第32頁/共143頁面向過程分析與設(shè)計(4)制定整理數(shù)據(jù)字典 數(shù)據(jù)字典是系統(tǒng)中各類數(shù)據(jù)描述的集合。通常包括數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲、處理過程和外部實體等6個部分。 數(shù)據(jù)項的描述 以圖2-7中的“學號”數(shù)據(jù)項為例說明: 數(shù)據(jù)項名稱:學號 含義:唯一標識每個學生 別名: 類型: 字符型 長度: 5 取值范圍:0

16、0000至99999 取值含義:前2位標別該學生所在年級,后3位為順序編號。第33頁/共143頁面向過程分析與設(shè)計 數(shù)據(jù)流的描述 以 “學生名單”數(shù)據(jù)流為例。 數(shù)據(jù)流名稱:學生名單 說明:某班全部學生的名單 數(shù)據(jù)流來源:班級學生名單查詢 數(shù)據(jù)流去向:班級學生名單顯示 組成(包含的數(shù)據(jù)項):班級、學號、姓名 平均流量: 高峰期流量:第34頁/共143頁面向過程分析與設(shè)計 數(shù)據(jù)存儲的描述 以數(shù)據(jù)存儲“考試成績”為例。 數(shù)據(jù)存儲:考試成績 說明:保存學生各門課的考試成績 流入數(shù)據(jù)流:新增的成績、修改后的成績 流出數(shù)據(jù)流:原成績 組成:學號、姓名、成績 數(shù)據(jù)量:3000(學生)*15(課程) 存取方式

17、:隨機存取第35頁/共143頁面向過程分析與設(shè)計 處理過程的描述以處理過程“增加成績”為例。處理過程:增加成績說明:錄入一個或一批學生某門課程的考試成績輸入:添加成績要求輸出:新增的成績處理:在考試成績數(shù)據(jù)存儲中增加一個或一批學生的考試成績。第36頁/共143頁面向過程分析與設(shè)計結(jié)構(gòu)化設(shè)計結(jié)構(gòu)化設(shè)計 通常把設(shè)計工作劃分為概要設(shè)計和詳細設(shè)計兩個階段。 概要設(shè)計階段的主要任務(wù)是,通過仔細分析需求規(guī)格說明,對軟件進行功能分解,從而把軟件劃分為模塊,并且設(shè)計出完成預定功能的模塊結(jié)構(gòu)。 詳細設(shè)計階段的主要任務(wù)是,詳細地設(shè)計每個模塊,確定完成每個模塊功能所需要的算法和數(shù)據(jù)結(jié)構(gòu)。第37頁/共143頁面向過程

18、分析與設(shè)計結(jié)構(gòu)化設(shè)計的主要原則如下: 抽象 就是把事物本質(zhì)的共同特性提取出來而不考慮其他細節(jié)。軟件設(shè)計中考慮模塊化解決方案時,可以定出多個抽象級別。抽象的層次從概要設(shè)計到詳細設(shè)計逐步降低。 模塊化 模塊是指把一個待開發(fā)的軟件分解成若干小的簡單的部分。每個模塊可以完成一個特定的子功能,各個模塊可以按一定的方法組裝起來成為一個整體,從而實現(xiàn)整個系統(tǒng)的功能。 第38頁/共143頁面向過程分析與設(shè)計 信息隱蔽 指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。 模塊獨立性 模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。衡量軟

19、件的模塊獨立性使用耦合性和內(nèi)聚性兩個定性的度量標準。 第39頁/共143頁2.1 結(jié)構(gòu)化開發(fā)方法 內(nèi)聚性是一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度量。按照內(nèi)聚性由弱到強的順序可分為:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚、功能內(nèi)聚。 耦合性是模塊間互相連接緊密程度的度量。按照耦合性由弱到強的順序可分為:非直接耦合、數(shù)據(jù)耦合、標記耦合、控制耦合、外部耦合、公共耦合、內(nèi)容耦合。一般來說,設(shè)計軟件時應(yīng)盡量使用數(shù)據(jù)耦合,減少控制耦合,限制外部環(huán)境耦合和公共耦合,杜絕內(nèi)容耦合。 耦合性與內(nèi)聚性是模塊獨立性的兩個定性標準,耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強,則

20、耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚,低耦合。第40頁/共143頁面向過程分析與設(shè)計 1)1)非直接耦合非直接耦合。 如果兩個模塊之間沒有直接關(guān)系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實現(xiàn)的,這就是非直接耦合。 2)2)數(shù)據(jù)耦合。數(shù)據(jù)耦合。 如果一個模塊訪問另一個模塊時,彼此之間是通過簡單數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來交換 輸入、輸出信息的,則稱這種耦合為數(shù)據(jù)耦合。第41頁/共143頁面向過程分析與設(shè)計 3)3)標記耦合。標記耦合。 如果一組模塊通過參數(shù)表傳遞記錄信息,就是標記耦合。這個記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡單變量。 4)控制耦合。 如果

21、一個模塊通過傳送開關(guān)、標志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合。 5)外部耦合。 一組模塊都訪問同一全局簡單變量而不是同一全局數(shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。第42頁/共143頁面向過程分析與設(shè)計 6)公共耦合。 若一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。 7) 7)內(nèi)容耦合。內(nèi)容耦合。 當一個模塊直接修改或操作另一個模塊的數(shù)據(jù),或者直接轉(zhuǎn)入另一個模塊時,就發(fā)生了內(nèi)容耦合。 第43頁/共143頁面向過程分析與設(shè)計 1) 1)偶然性內(nèi)聚。偶然性內(nèi)聚。 偶然性內(nèi)聚又稱為巧合性內(nèi)聚。當模塊內(nèi)各部分之間沒有聯(lián)系,或者

22、即使有聯(lián)系,這種聯(lián)系也很松散,則稱這種模塊為巧合內(nèi)聚模塊。 2)2)邏輯性內(nèi)聚。邏輯性內(nèi)聚。 這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時,由傳送給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。第44頁/共143頁面向過程分析與設(shè)計 3)3)時間性內(nèi)聚。時間性內(nèi)聚。 如果一個模塊內(nèi)的幾個功能必須在同一時間內(nèi)執(zhí)行,但這些功能只是因為時間因素關(guān)聯(lián)在一起,則稱為時間性內(nèi)聚。 4) 4)過程性內(nèi)聚。過程性內(nèi)聚。 如果一個模塊內(nèi)部的處理成分是相關(guān)的,而且這些處理必須以特定的次序執(zhí)行,則稱為過程性內(nèi)聚。 5)5)通信性內(nèi)聚。通信性內(nèi)聚。 如果一個模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出

23、數(shù)據(jù),則稱之為通信內(nèi)聚模塊。第45頁/共143頁 6)信息性內(nèi)聚。 如果一個模塊內(nèi)完成許多功能,每個功能都有各自的入口點,并且代碼相對獨立,但所有功能都在相同的數(shù)據(jù)結(jié)構(gòu)上完成,則該模塊具有信息性內(nèi)聚。 7) 7)功能性內(nèi)聚。功能性內(nèi)聚。 一個模塊中各個部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割,則稱該模塊為功能內(nèi)聚模塊。第46頁/共143頁面向過程分析與設(shè)計1. 概要設(shè)計 概要設(shè)計的基本任務(wù)是: (1)設(shè)計軟件系統(tǒng)結(jié)構(gòu) 在需求分析階段,已經(jīng)把系統(tǒng)分解成層次結(jié)構(gòu),而在概要設(shè)計階段,需要進一步分解,劃分為模塊以及模塊的層

24、次結(jié)構(gòu)。劃分的具體過程是: 將一個復雜的系統(tǒng)按功能劃分成模塊; 確定每個模塊的功能; 確定模塊之間的調(diào)用關(guān)系; 確定模塊之間的接口,即模塊之間傳遞的信息; 評價模塊結(jié)構(gòu)的質(zhì)量。第47頁/共143頁面向過程分析與設(shè)計(2) 數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)設(shè)計 數(shù)據(jù)設(shè)計是實現(xiàn)需求定義和規(guī)格說明過程中提出的數(shù)據(jù)對象的邏輯表示。 數(shù)據(jù)設(shè)計的具體任務(wù)是: 確定輸入、輸出文件的詳細數(shù)據(jù)結(jié)構(gòu); 結(jié)合算法設(shè)計,確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作; 確定對邏輯數(shù)據(jù)結(jié)構(gòu)所必須的那些操作的程序模塊,限制和確定各個數(shù)據(jù)設(shè)計決策的影響范圍; 需要與操作系統(tǒng)或調(diào)度程序接口所必需的控制表進行數(shù)據(jù)交換時,確定其詳細的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則;

25、數(shù)據(jù)的保護性設(shè)計; 防衛(wèi)性、一致性、冗余性設(shè)計。第48頁/共143頁面向過程分析與設(shè)計(3)編寫概要設(shè)計文檔。 概要設(shè)計說明書 數(shù)據(jù)庫設(shè)計說明書 集成測試計劃等。(4)概要設(shè)計文檔評審。 對設(shè)計部分是否完整地實現(xiàn)了需求中規(guī)定的功能、性能等要求,設(shè)計方案的可行性,關(guān)鍵的處理及內(nèi)外部接口定義正確性、有效性,各部分之間的一致性等都要進行評審。第49頁/共143頁面向過程分析與設(shè)計 概要設(shè)計的設(shè)計過程為: (1)(1)分析數(shù)據(jù)流圖,弄清楚數(shù)據(jù)流加工的過程; (2)(2)根據(jù)數(shù)據(jù)流圖確定數(shù)據(jù)流圖的類型; (3)(3)從數(shù)據(jù)流圖導出系統(tǒng)的初始軟件結(jié)構(gòu)圖; (4)(4)改進軟件結(jié)構(gòu)圖,直到符合要求為止; (

26、5)(5)復查。第50頁/共143頁面向過程分析與設(shè)計 數(shù)據(jù)流圖的類型 轉(zhuǎn)換處理型 是對輸入數(shù)據(jù)流進行轉(zhuǎn)換而得到輸出數(shù)據(jù)流的處理。 處理過程由輸入數(shù)據(jù)流、變換數(shù)據(jù)流和輸出數(shù)據(jù)流3 3步組成。輸入加工輸入信息輸入信息轉(zhuǎn)換加工內(nèi)部輸入內(nèi)部輸入輸入加工內(nèi)部結(jié)果內(nèi)部結(jié)果輸出信息輸出信息第51頁/共143頁面向過程分析與設(shè)計 事務(wù)處理型 是對輸入數(shù)據(jù)流進行某種加工后,按加工的結(jié)果選擇一個輸出數(shù)據(jù)流繼續(xù)執(zhí)行的處理。 事務(wù)處理中,輸入數(shù)據(jù)流稱為事務(wù)流,加工稱為事務(wù)中心,若干平行數(shù)據(jù)流稱為事務(wù)路徑。事務(wù)中心事務(wù)流事務(wù)流P2事務(wù)路徑事務(wù)路徑2P1事務(wù)路徑事務(wù)路徑1P3事務(wù)路徑事務(wù)路徑3第52頁/共143頁面向過

27、程分析與設(shè)計 常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC,StructureChart),也稱程序結(jié)構(gòu)圖。使用結(jié)構(gòu)圖描述軟件系統(tǒng)的層次和分塊結(jié)構(gòu)關(guān)系,它反映了整個系統(tǒng)的功能實現(xiàn)以及模塊與模塊之間的聯(lián)系與通訊。 表示模塊,框內(nèi)用文字標記模塊名。表示模塊,框內(nèi)用文字標記模塊名。箭頭表示模塊間的調(diào)用關(guān)系;邊上的小箭頭表示調(diào)用時模塊箭頭表示模塊間的調(diào)用關(guān)系;邊上的小箭頭表示調(diào)用時模塊間傳送的數(shù)據(jù),小箭頭的方向表示傳送信息的方向。間傳送的數(shù)據(jù),小箭頭的方向表示傳送信息的方向。表示上屬模塊有條件地調(diào)用下屬模塊。表示上屬模塊有條件地調(diào)用下屬模塊。表示上屬模塊重復調(diào)用下屬模塊。表示上屬模塊重復調(diào)用下屬模塊。第53頁

28、/共143頁面向過程分析與設(shè)計 第54頁/共143頁面向過程分析與設(shè)計 轉(zhuǎn)換分析 使用轉(zhuǎn)換分析技術(shù)可以把轉(zhuǎn)換型處理數(shù)據(jù)流圖轉(zhuǎn)換為標準結(jié)構(gòu)。(有了標準結(jié)構(gòu)就可根據(jù)軟件結(jié)構(gòu)的度量準則、模塊化準則、模塊獨立性準則完善軟件結(jié)構(gòu),從而得到結(jié)構(gòu)良好的最終結(jié)構(gòu)圖)。 轉(zhuǎn)換分析步驟為:確定數(shù)據(jù)流圖的類型;確定輸入流、轉(zhuǎn)換流、輸出流的流界;進行一級分解,設(shè)計上層模塊;進行二級分解,設(shè)計中下層模塊;進一步細化。 第55頁/共143頁面向過程分析與設(shè)計 (1 1)確定數(shù)據(jù)流圖的類型 (2 2)確立流界 主要確定輸入流和輸出流的邊界,獨立出中心流。 找出輸入流的終點 找出輸出流的起點 找出中心加工 4號加工1號加工A

29、2號加工B中心加工C3號加工DEF輸入輸入輸出輸出轉(zhuǎn)換流轉(zhuǎn)換流第56頁/共143頁面向過程分析與設(shè)計 (3)(3)進行一級分解,設(shè)計上層模塊。 在中心加工位置設(shè)計一個主模塊,命名為M M,其功能是控制整個軟件結(jié)構(gòu),完成系統(tǒng)所要做的各項工作, 為輸人流設(shè)計一個輸入控制模塊,功能是為主模塊提供輸入信息。 為輸出流設(shè)計一個輸出控制模塊COCO,功能是為主模塊提供數(shù)據(jù)輸出。 為中心設(shè)計一個轉(zhuǎn)換控制模塊CTCT,功能是控制所有內(nèi)部數(shù)據(jù)的操作。MCTCICOCCDD第57頁/共143頁面向過程分析與設(shè)計 (4)(4)進行二級分解,設(shè)計中下層模塊。 自頂向下,逐步細化,為第一層的每一個輸入模塊、輸出模塊、轉(zhuǎn)

30、換模塊設(shè)計從屬模塊. . 為輸入流加工設(shè)計一個輸入模塊,向上屬模塊提供輸入信息,而這個模塊又需要兩個下屬模塊,一個為此模塊輸入信息,另一個將接收的信息轉(zhuǎn)換為上屬模塊所需的信息。如果輸入模塊還有輸入模塊時,又要重復上屬過程,若輸入模塊是物理輸入端時,則細化工作停止。 CIC取BB轉(zhuǎn)換BBCA取A轉(zhuǎn)化AAB第58頁/共143頁面向過程分析與設(shè)計 為輸出流加工設(shè)計一個輸出模塊,接收中心加工的輸出信息,而這個模塊又需要兩個下屬模塊,一個將接收的信息轉(zhuǎn)換為輸出的形式,另一個將它們輸出。如果輸出模塊還有輸出模塊時,又要重復上屬過程,若輸出模塊是物理輸出端時,則細化工作停止。COD轉(zhuǎn)換DD送EEE轉(zhuǎn)換E送F

31、FF第59頁/共143頁面向過程分析與設(shè)計 為中心加工設(shè)計轉(zhuǎn)換模塊。 (5)(5)進一步細化 對上述采用轉(zhuǎn)換分解技術(shù)方法得到的結(jié)構(gòu)圖按照設(shè)計標準進一步細化。CT處理CCDCD第60頁/共143頁面向過程分析與設(shè)計 事務(wù)分析 (1 1)確定數(shù)據(jù)流圖的類型 (2 2)確立流界 從數(shù)據(jù)流圖中找出事務(wù)中心 確定事務(wù)流 確定事務(wù)路徑 1事務(wù)流事務(wù)流P2P1P3事務(wù)中心事務(wù)中心事務(wù)路經(jīng)事務(wù)路經(jīng)第61頁/共143頁面向過程分析與設(shè)計 (3)進行一級分析,設(shè)計上層模塊。 事務(wù)分析的任務(wù)是從數(shù)據(jù)流圖中導出具有接受分支和發(fā)送分支的軟件結(jié)構(gòu)。對事務(wù)中心設(shè)計“事務(wù)控制”模塊;對事務(wù)流設(shè)計“接受事務(wù)模塊;對事務(wù)路徑,設(shè)

32、計“發(fā)送事務(wù)模塊。事務(wù)控制事務(wù)控制接受事務(wù)接受事務(wù)發(fā)送事務(wù)發(fā)送事務(wù)第62頁/共143頁面向過程分析與設(shè)計 (4)(4)進行二級分解,設(shè)計中下層模塊。 對于接受分支,可用類似于轉(zhuǎn)換處理型數(shù)據(jù)流圖中對輸人數(shù)據(jù)流的分析方法設(shè)計中下層模塊。 對于發(fā)送分支,在發(fā)送事務(wù)模塊下為每個事務(wù)路徑設(shè)計一個事務(wù)處理模塊。這一層稱為事務(wù)層。在事務(wù)層模塊下,沿各事務(wù)路徑進行分析,進一步細化,設(shè)計動作層模塊及細節(jié)層模塊等。第63頁/共143頁面向過程分析與設(shè)計 好的設(shè)計準則:模塊獨立性高。 模塊規(guī)模適中。 深度、寬度適度 作用域在控制域內(nèi)。 接口和界面簡單。模塊的出口、入口為單入口、單出口。 功能可預測。 第64頁/共1

33、43頁面向過程分析與設(shè)計2. 詳細設(shè)計 詳細設(shè)計的任務(wù)是為軟件結(jié)構(gòu)圖中的每個模塊確定實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細節(jié)。 常見設(shè)計工具有: 圖形工具:程序流程圖,N-S(方框圖),PAD(問題分析圖); 表格工具:判定表; 語言工具:PDL(偽碼)。 第65頁/共143頁2.1 結(jié)構(gòu)化開發(fā)方法第66頁/共143頁第67頁/共143頁第68頁/共143頁n方框圖(方框圖(N-S圖)。圖)。面向過程分析與設(shè)計第69頁/共143頁面向過程分析與設(shè)計第70頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 面向?qū)ο蠓椒ê图夹g(shù)是自20世紀80年代以來逐漸形成的一種分析問題和解決問

34、題的新方法,它的基本出發(fā)點是盡可能按照人類認識世界的方法和思維方式來分析和解決問題。 面向?qū)ο蠓椒ú话殉绦蚩醋魇枪ぷ髟跀?shù)據(jù)上的一系列過程或函數(shù)的集合,而是把程序看作是相互協(xié)作而又彼此獨立的對象的集合。第71頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 面向?qū)ο筌浖_發(fā)方法又稱為OOSD(Object-Oriented Software Development)。 OOSD包括面向?qū)ο蠓治觯∣OA)、面向?qū)ο笤O(shè)計(OOD)和面向?qū)ο蟪绦蛟O(shè)計(OOP)3個方面。 OOP是基礎(chǔ),OOA和OOD是應(yīng)用OOP的機制。所以應(yīng)用OOSD時,必須使用面向?qū)ο蟪绦蛟O(shè)計語言。第72頁/共143頁2.2 面向?qū)ο蠓治雠c

35、設(shè)計傳統(tǒng)軟件分析設(shè)計的問題 (1) 傳統(tǒng)的軟件分析技術(shù)難以應(yīng)對需求的不斷變化 (2) 傳統(tǒng)軟件開發(fā)方法無法實現(xiàn)高效的軟件復用 (3) 傳統(tǒng)軟件設(shè)計方法難以實現(xiàn)從分析到設(shè)計的直接過渡 第73頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計面向?qū)ο蠓治雠c設(shè)計的主要特點 (1) 按照人類習慣的思維方法,對軟件開發(fā)過程所有階段進行綜合考慮 傳統(tǒng)的面向過程的設(shè)計方法以算法為核心,將數(shù)據(jù)和過程作為相互獨立的部分,程序代碼用于處理這些數(shù)據(jù) 面向?qū)ο蟮姆椒ㄒ詫ο鬄楹诵?,強調(diào)模擬現(xiàn)實世界中的概念而不是算法,盡量用符合人類認識世界的思維方式來漸進地分析、解決問題 第74頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計(2)軟件生

36、存期各階段所使用的方法、技術(shù)具有高度的連續(xù)性 傳統(tǒng)的軟件開發(fā)過程把一個充滿回溯的軟件開發(fā)過程硬性地分割為幾個階段,而且各個階段所使用的模型、描述方法不相同。 面向?qū)ο蟮姆椒ㄊ褂脟娙P妥鳛槠涔ぷ髂P?,軟件生存期各階段沒有明顯的界限,開發(fā)過程回溯重疊,使用相同的描述方法和模型,使得軟件生存期各階段所使用的方法、技術(shù)具有高度的連續(xù)性。第75頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計(3) 軟件開發(fā)各階段有機集成,有利于系統(tǒng)的穩(wěn)定性 OOA、OOD與OOP有機地集成在一起,使開發(fā)過程始終圍繞著建立問題領(lǐng)域的對象(類)模型進行,且各階段解決的問題又各有側(cè)重。(4) 具有良好的重用性 由于對象具有的封裝性

37、和信息隱蔽,使得對象的內(nèi)部實現(xiàn)與外界隔離,具有較強的獨立性,因此,對象類提供了較理想的可重用的軟件成分。 第76頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計2.2.3 2.2.3 面向?qū)ο蠼?面向?qū)ο蠓治雠c設(shè)計從3種角度建立模型: 1)使用對象模型描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu) 定義了做事情的實體 2)使用動態(tài)模型描述系統(tǒng)動態(tài)的協(xié)作及控制結(jié)構(gòu) 規(guī)定了什么時候做 3)使用功能模型描述系統(tǒng)功能 系統(tǒng)應(yīng)該“做什么” 第77頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計準備知識: (1)對象。 對象是人們要進行研究的任何事物,從最簡單的整數(shù)到復雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規(guī)則、計劃或事件。

38、(2)對象的狀態(tài)和行為。 對象具有狀態(tài),一個對象用數(shù)據(jù)值來描述它的狀態(tài)。 對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為。 對象實現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作封裝于對象的統(tǒng)一體中。第78頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (3)類 具有相同或相似性質(zhì)的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。 類具有屬性,它是對象的狀態(tài)的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性。 類具有操作,它是對象的行為的抽象,用操作名和實現(xiàn)該操作的方法來描述。 第79頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計(4)消息和方法 對象之間進行通信的結(jié)構(gòu)叫做消息。 在對象

39、的操作中,當一個消息發(fā)送給某個對象時,消息包含接收對象去執(zhí)行某種操作的信息。 發(fā)送一條消息至少要包括說明接受消息的對象名、發(fā)送給該對象的消息名(即對象名、方法名)。一般還要對參數(shù)加以說明,參數(shù)可以是認識該消息的對象所知道的變量名,或者是所有對象都知道的全局變量名。 類中操作的實現(xiàn)過程叫做方法,一個方法有方法名、參數(shù)、方法體。第80頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計(5)面向?qū)ο蟮奶卣?封裝性:將對象的特性(屬性)和行為(方法)包裝在一起。它實現(xiàn)了信息的隱蔽作用,使我們通過類的方法來操作該類的對象,而不必關(guān)心其內(nèi)部實現(xiàn)。 抽象性:將具有一致的數(shù)據(jù)結(jié)構(gòu)(屬性)和行為(操作)的對象抽象成類。

40、繼承性:是子類自動共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機制,這是類之間的一種關(guān)系。第81頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 多態(tài)性:描述的是面向?qū)ο罄锿环椒亩喾N實現(xiàn)。 多態(tài)有兩類情況:一類是方法的重寫(Overriding),另一類是方法的重載(Overloading)。 重寫發(fā)生在父類與子類的方法之間,重載發(fā)生在同一個類的方法之間。 重寫指子類可以重寫實現(xiàn)父類中有相同的名稱和參數(shù)的方法,以屏蔽父類的調(diào)用。 重載指一個類中多個同名的方法,通過具有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,來完成不同的實現(xiàn),甚至返回不同的類型。第82頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計2.2.3 UML 2.2.3

41、UML (統(tǒng)一建模語言)簡介 UML(Unified Modeling Language)不僅統(tǒng)一了Booch方法、OMT方法、OOSE方法、OOA/OOD的表示方法,而且對其作了進一步的發(fā)展,最終統(tǒng)一為大眾接受的標準建模語言。 UML是一種定義良好、易于表達、功能強大的建模語言。它不但支持面向?qū)ο蟮姆治雠c設(shè)計,還支持從需求分析開始的軟件開發(fā)全過程。第83頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 統(tǒng)一建模語言(Unified Modeling Language,UML)是目前最流行的可視化建模語言,可以貫穿軟件開發(fā)周期中的每一個階段。 第84頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計1 1用例圖

42、(Use Case Diagram)(Use Case Diagram) 用例圖用于需求分析階段,第一,它描述了待開發(fā)系統(tǒng)的功能需求,強調(diào)這個系統(tǒng)是什么;第二,它將系統(tǒng)看作黑盒,從外部參與者的角度來理解系統(tǒng);第三,它驅(qū)動了需求分析之后各階段的開發(fā)工作,不僅在開發(fā)過程中保證了系統(tǒng)所有功能的實現(xiàn),而且被用于驗證和檢測所開發(fā)系統(tǒng)是否滿足需求。 用例圖的主要元素是角色(Actor)、用例(Use Case)、角色與用例間的通信 角色代表觸發(fā)系統(tǒng)功能的用戶或其他系統(tǒng) 用例代表具體的功能描述 第85頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計(1) 角色(參與者) 角色是系統(tǒng)外部的一個實體,它以某種方式參與用

43、例的執(zhí)行過程。 角色通過向系統(tǒng)輸入或請求輸入某些事件來觸發(fā)系統(tǒng)的執(zhí)行。 角色包括人角色(Human Actor)和外部系統(tǒng)角色(System Actor)。 系統(tǒng)的用戶是人角色,用戶通過與系統(tǒng)的交互,操縱系統(tǒng),完成所需要的工作。 與本系統(tǒng)交互的外部系統(tǒng)是另一種角色,它與本系統(tǒng)相互作用,交換信息。它可以是軟件系統(tǒng),也可以是硬件設(shè)備,例如在實時監(jiān)控系統(tǒng)中的數(shù)據(jù)采集器等。 第86頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 第87頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (2)用例 規(guī)定了系統(tǒng)或部分系統(tǒng)的行為。 描述了系統(tǒng)具有的行為,但沒有規(guī)定怎樣實現(xiàn)這些行為,它是從用戶(角色)的角度來看系統(tǒng)的特定方式

44、。第88頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (3) 用例間的關(guān)系 泛化關(guān)系(Generalization)(類屬關(guān)系) 即用例之間的一般和特殊關(guān)系 包含關(guān)系(Include)。 即源用例包含了其他用例的行為 擴展關(guān)系(Extend) 即目標用例擴充了源用例的行為第89頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計(4) UML(4) UML用例圖第90頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (2)類圖(Class Diagram) 類圖描述系統(tǒng)的靜態(tài)結(jié)構(gòu),是面向?qū)ο笙到y(tǒng)建模最常用的圖,它描述了類、接口及它們之間的關(guān)系。主要元素是類以及類之間的關(guān)系。 第91頁/共143頁2.2 面向?qū)ο蠓治雠c

45、設(shè)計 類描述了一類對象的屬性和行為。 student-idname: int: string+add ()update (): int: int 類與類之間通常有泛化(繼承)、關(guān)聯(lián)、聚合與組合、依賴等多種關(guān)系。 第92頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (1) 泛化(繼承) 繼承是類與類之間較常見的關(guān)系,一個類(稱為子類)繼承另一個類(稱為基類)的功能,并增加它自己的新功能。 student-idname: int: string+add ()update (): int: intperson-idname: int: string+add ()update (): int: int第9

46、3頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (2) 關(guān)聯(lián) 關(guān)聯(lián)表示兩個類的對象之間存在某種語義上的聯(lián)系,是類之間的一種很弱的聯(lián)系。0.10.*student-idname: int: string+add ()update (): int: intclass-idname: int: string+add ()update (): int: int第94頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (3) 聚合與組合 聚合與組合都是特殊的關(guān)聯(lián)關(guān)系,都體現(xiàn)了整體與部分的關(guān)系。 聚合體現(xiàn)的是整體與部分擁有的關(guān)系即has-a的關(guān)系,此時整體與部分之間是可分離的,它們可以具有各自的生命周期,部分可以屬于多

47、個整體對象,也可以為多個整體對象共享 比如計算機與CPU、公司與員工的關(guān)系等第95頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 組合體現(xiàn)的是一種contains-a的關(guān)系,這種關(guān)系比聚合更強,也稱為強聚合,但此時整體與部分是不可分的,整體的生命周期結(jié)束也就意味著部分的生命周期結(jié)束,例如人和人的大腦。 UML中定義聚合和組合都使用一個帶菱形的連線表示,菱形指向具有整體性質(zhì)的類,其中未填充的菱形表示聚合,填充的菱形表示組合。 第96頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (4) 依賴 當一個類A使用到另一個類B,并且B類的變化會影響到A類,則稱A類依賴于B類。第97頁/共143頁2.2 面向?qū)ο蠓治?/p>

48、與設(shè)計 (3)對象圖(Object Diagram) 對象圖描述了某一瞬間系統(tǒng)的對象、對象的狀態(tài)及對象間的關(guān)系。 對象圖可以看作是類圖的實例。對象是類的實例,對象間的連線是類之間的關(guān)聯(lián)關(guān)系的實例。 Object1Object2第98頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (4)交互作用圖 包括時序圖和協(xié)作圖,描述了對象間的交互作用,由對象、對象間的關(guān)系組成,并包含在對象間傳遞的消息。 時序圖描述了消息的時間順序,適合于描述實時系統(tǒng)和復雜的腳本。它是一張表,對象沿X軸排列,消息按照時間順序遞增沿Y軸排序。第99頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 協(xié)作圖強調(diào)發(fā)送和接收消息的對象的組織結(jié)構(gòu)。

49、 協(xié)作圖和時序圖在語義上是相當?shù)?,可以彼此轉(zhuǎn)換而協(xié)作圖和時序圖在語義上是相當?shù)?,可以彼此轉(zhuǎn)換而不損失信息。不損失信息。第100頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (5)狀態(tài)圖 狀態(tài)圖描述類的特定對象所有可能的狀態(tài),以及事件發(fā)生時狀態(tài)的轉(zhuǎn)移條件。 第101頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (6)活動圖 主要是一個流圖,描述了從活動到活動的流。它由一系列動作組成。 第102頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 交互作用圖強調(diào)從對象到對象的控制流,活動圖則強調(diào)從活動到活動的控制流。第103頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (7)組件圖 組件圖描述了組件及組件間的關(guān)系。 它的

50、用途是顯示系統(tǒng)中的軟件對其他軟件組件的依賴關(guān)系。 第104頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (8)配置圖 配置圖描述軟件系統(tǒng)如何部署到硬件環(huán)境中,反映了系統(tǒng)中軟件和硬件的物理架構(gòu),表示系統(tǒng)運行時的處理節(jié)點以及節(jié)點中組件的配置。 它的用途是顯示該系統(tǒng)不同的組件將在何處物理地運行,以及將如何彼此通信。第105頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 有很多CASE工具都支持UML設(shè)計,如Visio、PowerDesinger、Rational Rose等。 這些工具不僅提供了標準的符號來繪制UML的各類模型圖,同時也提供了很多輔助工具來輔助分析人員進行模型檢查和各類正向與逆向工程。 第10

51、6頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計面向?qū)ο蠓治?1面向?qū)ο蠓治龅幕具^程(1)學習、了解原始需求目的:1)初步了解業(yè)務(wù)需求 2)找出原始需求中存在二義性、不完整、不準確的需求 為需求分析打基礎(chǔ)(2)進一步的需求調(diào)研 發(fā)現(xiàn)和改正原始陳述中的二義性和不一致性,補充遺漏的內(nèi)容,從而使需求陳述更完整、更準確。 第107頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計(3)需求分析 深入理解用戶需求,抽象出目標系統(tǒng)的本質(zhì)屬性,并用模型準確地表示出來。 (4)建立對象模型 面向?qū)ο蠼5玫降哪P桶?類,即對象模型、動態(tài)模型、功能模型。 這3類模型在不同的系統(tǒng)中的重要程度不同,但是對象模型是任何一個軟件系

52、統(tǒng)都需要的,當涉及交互作用和時序時(如用戶界面及過程控制等),需要使用動態(tài)模型。第108頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 2建立對象模型 對象模型的建立主要是確定類、建立類之間的關(guān)聯(lián)關(guān)系、確定類的屬性等過程。 (1) 確定類與對象 以自然語言書寫的需求陳述為依據(jù),把陳述中的名詞作為類與對象的候選者,用形容詞作為確定屬性的線索,把動詞作為服務(wù)(操作)的候選者。 第109頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 用這種簡單方法確定的候選者是不準確的,往往包含大量不正確的或不必要的事物,必須經(jīng)過進一步的嚴格篩選,從中去掉不正確的或不必要的,僅保留確實應(yīng)該記錄其信息或需要其提供服務(wù)的那些對象,

53、篩選時主要依據(jù)下列標準: 冗余。如果兩個類表達了同樣的信息,則應(yīng)該保留在此問題域中最富于描述力的名稱。 無關(guān)。僅需要把與本問題密切相關(guān)的類放進目標系統(tǒng)中,與當前要解決的問題無關(guān)的類應(yīng)該刪掉。 第110頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 籠統(tǒng)。在需求陳述中常常使用一些籠統(tǒng)的名詞,如果系統(tǒng)無需處理有關(guān)它們的信息或者有更明確更具體的名詞對應(yīng)它們所暗示的事務(wù),那么就應(yīng)該去掉這些籠統(tǒng)的或模糊的類。 屬性。在需求陳述中有些名詞實際上描述的是其他對象的屬性,應(yīng)該把這些名詞從候選類與對象中去掉。 操作。在需求陳述中有時可能使用一些既可作為名詞,又可作為動詞的詞,應(yīng)該慎重考慮它們在本問題中的含義,以便正確

54、地決定把它們作為類還是作為類中定義的操作。 實現(xiàn)。在分析階段不應(yīng)該過早地考慮怎樣實現(xiàn)目標系統(tǒng),在分析階段過早地考慮它們反而會分散注意力,因此應(yīng)該去掉僅和實現(xiàn)有關(guān)的候選類與對象。 第111頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 需要不斷地和用戶、領(lǐng)域?qū)<医涣?,反復?gòu)造模型,逐漸澄清二義性,改正錯誤,才能最終把模型建立起來 第112頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (3) 劃分主題 為了降低復雜程度,在開發(fā)大型、復雜系統(tǒng)的過程中,可以把系統(tǒng)再進一步劃分成幾個不同的主題,也就是在概念上把系統(tǒng)包含的內(nèi)容分解成若干范疇。 應(yīng)該按問題領(lǐng)域而不是用功能分解方法來確定主題。 (4) 確定屬性 通常,

55、在需求陳述中用名詞詞組表示屬性,但是不可能僅依靠需求陳述找到所有屬性,還必須借助于領(lǐng)域知識和常識才能分析得出需要的屬性。應(yīng)該僅考慮與具體應(yīng)用直接相關(guān)的屬性,不要考慮那些超出所要解決的問題范圍的屬性。 第113頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (5) 識別繼承關(guān)系 一般說來,可以使用兩種方式建立繼承(即泛化)關(guān)系: 自底向上:抽象出現(xiàn)有類的共同性質(zhì)泛化出父類,這個過程實質(zhì)上模擬了人類歸納思維過程。 自頂向下:把現(xiàn)有類細化成更具體的子類,這模擬了人類的演繹思維過程。從應(yīng)用域中常常能明顯看出應(yīng)該做的自頂向下的具體化工作。第114頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 3建立動態(tài)模型 建立動

56、態(tài)模型基本包括: 1)編寫典型交互行為的腳本; 2)從腳本中提取出事件,確定觸發(fā)每個事件的動作對象以及接收事件的目標對象; 3)排列事件發(fā)生的次序,確定每個對象可能有的狀態(tài)及狀態(tài)間的轉(zhuǎn)換關(guān)系,并用狀態(tài)圖描繪它們; 4)比較各個對象的狀態(tài)圖,檢查它們之間的一致性,確保事件之間的匹配。第115頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 4建立功能模型 功能模型表明了系統(tǒng)中數(shù)據(jù)之間的依賴關(guān)系,以及有關(guān)的數(shù)據(jù)處理功能,它由一組數(shù)據(jù)流圖組成。數(shù)據(jù)流圖的畫法與結(jié)構(gòu)化分析一樣,其中的處理功能可以用IPO圖(或表)、偽碼等多種方式進一步描述。 在面向?qū)ο蠓椒▽W中,數(shù)據(jù)流圖遠不如在結(jié)構(gòu)分析、設(shè)計方法中那樣重要。

57、與對象模型和動態(tài)模型比較起來,數(shù)據(jù)流圖并沒有增加新的信息,有助于軟件開發(fā)人員更深入地理解問題域,改進和完善自己的設(shè)計。第116頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 IPO指結(jié)構(gòu)化設(shè)計中變換型結(jié)構(gòu)的輸入(Input)、加工(Processing)、輸出(Output)。 IPO圖是對每個模塊進行詳細設(shè)計的工具,它是輸入加工輸出(INPUT PROCESS OUTPUT)圖的簡稱. 第117頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計面向?qū)ο笤O(shè)計 按照面向?qū)ο蠓椒ǖ摹皣娙P汀?,軟件生命周期的各個階段交替回溯,整個生命周期的概念、屬性、描述方法具有一致性,因此從分析到設(shè)計無須表示方法的轉(zhuǎn)換,只是分

58、析和設(shè)計的任務(wù)分工與側(cè)重不同。第118頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 面向?qū)ο蠓治鼋⒌氖菓?yīng)用領(lǐng)域面向?qū)ο蟮哪P?,而面向?qū)ο笤O(shè)計建立的是軟件系統(tǒng)的模型。 與OOA的模型比較,OOD模型的抽象層次較低,但是建模的原則和方法是相同的??傮w看,分析與設(shè)計本質(zhì)上是一個多次反復迭代的過程,而面向?qū)ο蠓治雠c面向?qū)ο笤O(shè)計的界限尤其模糊。 用面向?qū)ο蠓椒ㄔO(shè)計軟件,原則上也是先進行總體設(shè)計(即系統(tǒng)設(shè)計),然后再進行詳細設(shè)計(對象),當然,它們之間的界限非常模糊,事實上是一個多次反復迭代的過程。 第119頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計1面向?qū)ο笤O(shè)計的基本任務(wù) 將分析階段所創(chuàng)建的分析模型轉(zhuǎn)換為設(shè)

59、計模型,解決如何做的問題。 面向?qū)ο蠓治鲋饕紤]系統(tǒng)做什么,而不關(guān)心系統(tǒng)如何實現(xiàn)的問題。在面向?qū)ο笤O(shè)計需要以O(shè)OA模型為基礎(chǔ),重新定義或補充一些新的類,或在原有類中補充或修改一些屬性及操作。因此,OOD的目標是產(chǎn)生一個滿足用戶需求的、可實現(xiàn)的OOD模型。第120頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 面向?qū)ο蟮脑O(shè)計包括系統(tǒng)設(shè)計和對象設(shè)計。 (1) 系統(tǒng)設(shè)計 將分析模型中緊密相關(guān)的類劃分為若干子系統(tǒng)(也稱為主題),子系統(tǒng)應(yīng)該具有良好的接口,子系統(tǒng)中的類相互協(xié)作。 進行系統(tǒng)設(shè)計的關(guān)鍵是子系統(tǒng)的劃分,子系統(tǒng)由它們的責任及所提供的服務(wù)來標識,在OOD中,這種服務(wù)是完成特定功能的一組操作。 第121頁

60、/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (2) 對象設(shè)計 為每個類的屬性和操作進行詳細設(shè)計,包括屬性和操作的數(shù)據(jù)結(jié)構(gòu)及實現(xiàn)算法,以及類之間的關(guān)聯(lián)。 另外,在OOA階段,將一些與具體實現(xiàn)條件密切相關(guān)的對象,例如,與圖形用戶界面(GUI)、數(shù)據(jù)管理、硬件及操作系統(tǒng)有關(guān)的對象推遲到OOD階段考慮。 第122頁/共143頁2.2 面向?qū)ο蠓治雠c設(shè)計 (3) 設(shè)計優(yōu)化 主要涉及提高效率的技術(shù)和建立良好的繼承關(guān)系的方法。 提高效率的技術(shù)包括增加冗余關(guān)聯(lián)以提高訪問效率、調(diào)整查詢次序、優(yōu)化算法等技術(shù)。 建立良好的繼承關(guān)系是優(yōu)化設(shè)計的重要內(nèi)容,通過對繼承關(guān)系的調(diào)整實現(xiàn)。第123頁/共143頁2.2 面向?qū)ο蠓治?/p>

溫馨提示

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

評論

0/150

提交評論