




已閱讀5頁,還剩112頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1 軟件危機(jī)在計算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題 幾乎所有的軟件 都不同程度地存在著這些問題 軟件危機(jī)主要包括如下兩方面的問題 如何開發(fā)軟件 滿足增長需求 如何維護(hù)軟件 2 解決軟件軟件危機(jī)的途徑解決軟件危機(jī)的途徑是軟件工程 按工程化的原則和方法組織軟件開發(fā)工作是有效的 是擺脫軟件危機(jī)的一個主要出路 第一章軟件工程學(xué)概述 3 軟件軟件是程序 數(shù)據(jù)及文檔的完整集合 其中 程序是能夠完成預(yù)定功能和性能的可執(zhí)行的指令序列 數(shù)據(jù)是使程序能夠適當(dāng)?shù)靥幚硇畔⒌臄?shù)據(jù)結(jié)構(gòu) 文檔是開發(fā) 使用和維護(hù)程序的圖文資料 4 軟件工程軟件工程是采用工程的概念 原理 技術(shù)和方法來開發(fā)與維護(hù)軟件一門工程學(xué)科 從而經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效地維護(hù)它 5 軟件工程方法學(xué)在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為軟件工程方法學(xué) 軟件工程第一章 6 方法學(xué)三要素 工程方法學(xué)包含3個要素 方法 工具和過程 方法 是完成軟件開發(fā)的各項任務(wù)的技術(shù)方法 回答 怎樣做 的問題 工具 是為運用方法而提供的自動的或半自動的軟件工程支撐環(huán)境 過程 是為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架 它規(guī)定了完成各項任務(wù)的工作步驟 軟件工程第一章 7 傳統(tǒng)方法學(xué) 面向?qū)ο蠓椒▽W(xué) 1 傳統(tǒng)方法學(xué) 生命周期方法學(xué)或結(jié)構(gòu)化范型 強(qiáng)調(diào)自頂向下 2 面向?qū)ο蠓椒▽W(xué) 強(qiáng)調(diào)主動地多次反復(fù)迭代 3 面向?qū)ο蠓椒▽W(xué)4個要點 對象 類 繼承 消息 軟件工程第一章 8 軟件生命周期軟件孕育 誕生 成長 成熟 衰亡的生存過程 軟件工程第一章 軟件生命周期 各階段具體任務(wù) 1 問題定義 必須回答的關(guān)鍵問題是 要解決的問題是什么 2 可行性研究 階段回答的關(guān)鍵問題是 對于上一個階段所確定的問題有行得通的解決辦法嗎 3 需求分析 目標(biāo)系統(tǒng)必須做什么 確定目標(biāo)系統(tǒng)必須具備哪些功能 4 總體設(shè)計 必須回答的關(guān)鍵問題是 概括地說 應(yīng)該怎樣實現(xiàn)目標(biāo)系統(tǒng) 總體設(shè)計又稱為概要設(shè)計 5 詳細(xì)設(shè)計 關(guān)鍵問題是 應(yīng)該怎樣具體地實現(xiàn)這個系統(tǒng)呢 6 編碼和單元測試 關(guān)鍵任務(wù)是寫出正確的容易理解 容易維護(hù)的程序模塊 7 綜合測試 關(guān)鍵任務(wù)是通過各種類型的測試使軟件達(dá)到預(yù)定的要求 8 軟件維護(hù) 通過各種必要的維護(hù)活動使系統(tǒng)持久地滿足用戶的需要 8 軟件過程為獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架 它規(guī)定了完成各項任務(wù)的工作步驟 是軟件工程三要素之一的過程 9 軟件生命周期模型軟件過程通常用軟件生命周期模型來描述 它規(guī)定了把生命周期劃分成哪些階段以及各個階段執(zhí)行的順序 也稱為過程模型 10 典型的生命周期模型瀑布模型 快速原型模型增量模型 螺旋模型噴泉模型 軟件工程第一章 11 瀑布模型 軟件工程第一章 實際的瀑布模型 傳統(tǒng)的瀑布模型 12 快速原型模型 軟件工程第一章 實線箭頭表示開發(fā)過程虛線箭頭表示維護(hù)過程 13 增量模型 軟件工程第一章 增量模型 風(fēng)險更大的增量模型 14 螺旋模型 增加了風(fēng)險分析過程的快速原型 軟件工程第一章 簡單得螺旋模型 完整的螺旋模型 15 噴泉模型 面向?qū)ο筌浖_發(fā)迭代和無縫的特性 軟件工程第一章 噴泉模型 16 各模型特點瀑布模型的特點 1 階段間具有順序性和依賴性 2 推遲實現(xiàn)的觀點 3 質(zhì)量保證的觀點 快速原型 是快速建立起來的可以在計算機(jī)上運行的程序 它所能完成的功能往往是最終產(chǎn)品能完成功能的一個子集 增量模型 它分批地逐步向用戶提交產(chǎn)品 整個軟件產(chǎn)品被分解成許多個增量構(gòu)件 開發(fā)人員一個構(gòu)件一個構(gòu)件地向用戶提交產(chǎn)品 螺旋模型 基本思想是使用原型及其他方法來盡量降低風(fēng)險 理解這種模型的一個簡單方法 是把它看作在每個階段之前都增加了風(fēng)險分析過程的快速原型模型 使用于內(nèi)部開發(fā)的大規(guī)模軟件項目 噴泉模型 強(qiáng)調(diào)的是 迭代 和 無縫 的特性 是典型的面向?qū)ο蟮能浖^程模型之一 復(fù)習(xí)重點 軟件危機(jī)軟件工程軟件工程三要素軟件生命周期包含的過程 3個時期 8個階段 及各過程的任務(wù)瀑布模型快速還原模型 1 可行性研究的目的 就是用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決 必須記住 可行性研究的目的不是解決問題 而是確定問題是否值得去解決 從下述3個方面研究每種解法的可行性 1 技術(shù)可行性2 經(jīng)濟(jì)可行性3 操作可行性其他方面 運行可行性 法律可行性2 典型的可行性研究有下述一些步驟 1 復(fù)查系統(tǒng)規(guī)模和目標(biāo) 2 研究目前正在使用的系統(tǒng)3 導(dǎo)出新系統(tǒng)的高層邏輯模型4 進(jìn)一步定義問題5 導(dǎo)出和評價供選擇的解法6 推薦行動方針7 草擬開發(fā)計劃8 書寫文檔提交審查 第二章可行性研究 3 系統(tǒng)流程圖 是概括性地描繪物理系統(tǒng)的傳統(tǒng)工具 它的基本思想是用圖形符號以黑盒子形式描繪組成系統(tǒng)的每個部件 系統(tǒng)流程圖表達(dá)的是數(shù)據(jù)在系統(tǒng)各部件之間流動的情況 而不是對數(shù)據(jù)進(jìn)行加工處理的控制過程 因此盡管系統(tǒng)流程圖的某些符號和程序流程圖的符號形式相同 但是它卻是物理數(shù)據(jù)流圖而不是程序流程圖 基本符號如下 第二章可行性研究 庫存清單系統(tǒng)的系統(tǒng)流程圖 4 數(shù)據(jù)流圖 DFD 是一種圖形化技術(shù) 它描繪信息流和數(shù)據(jù)從輸入移動到輸出的過程中所經(jīng)受的變換 在數(shù)據(jù)流圖中沒有任何具體的物理部件 它只是描繪數(shù)據(jù)在軟件中流動和被處理的邏輯過程 基本符號如下 第二章可行性研究 附加符號 星號 表示 與 關(guān)系 加號 表示 或 關(guān)系異或 表示互斥關(guān)系 第二章可行性研究 5 畫數(shù)據(jù)流圖的步驟 1 從問題描述中提取數(shù)據(jù)流圖的4種成分 數(shù)據(jù)的源點 終點處理 處于靜止?fàn)顟B(tài)的數(shù)據(jù)數(shù)據(jù)流 處于運動中的數(shù)據(jù)數(shù)據(jù)存儲 2 畫基本系統(tǒng)模型 3 細(xì)化 描繪系統(tǒng)的主要功能 功能級數(shù)據(jù)流圖 4 對系統(tǒng)主要功能進(jìn)一步細(xì)化 6 畫數(shù)據(jù)流圖舉例 銀行計算機(jī)儲蓄系統(tǒng)的工作過程大致如下 儲戶填寫的存款單或取款單由業(yè)務(wù)員鍵入系統(tǒng) 如果是存款則系統(tǒng)記錄存款人姓名 住址 或電話號碼 身份證號碼 存款類型 存款日期 到期日期 利率及密碼 可選 等信息 并印出存單給儲戶 如果是取款而且存款時留有密碼 則系統(tǒng)首先核對儲戶密碼 若密碼正確或存款時未留密碼 則系統(tǒng)計算利息并印出利息清單給儲戶 第一步 提取數(shù)據(jù)流圖的四種成分 數(shù)據(jù)源點和終點 業(yè)務(wù)員 儲戶處理 1 事物處理 2 處理存款 3 處理取款數(shù)據(jù)存儲 1 存款信息 2 取款信息數(shù)據(jù)流 事物 存款單 存單密碼 取款單 利息清單 頂層數(shù)據(jù)流圖 第二步 畫基本數(shù)據(jù)流圖 功能級數(shù)據(jù)流圖 第三步 畫功能級數(shù)據(jù)流圖 細(xì)化的數(shù)據(jù)流圖 第四步 對系統(tǒng)主要功能進(jìn)一步細(xì)化 7 數(shù)據(jù)字典 數(shù)據(jù)的信息的集合 也就是對數(shù)據(jù)流圖中包含的所有元素的定義的集合 可行性研究階段 數(shù)據(jù)流圖與數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型 沒有數(shù)據(jù)字典 數(shù)據(jù)流圖就不嚴(yán)格 然而沒有數(shù)據(jù)流圖 數(shù)據(jù)字典也難于發(fā)揮作用 數(shù)據(jù)字典應(yīng)該由對下列4類元素的定義組成 數(shù)據(jù)流 數(shù)據(jù)流分量 數(shù)據(jù)元素 數(shù)據(jù)存儲和處理 由數(shù)據(jù)元素組成數(shù)據(jù)的方式只有下述3種基本類型 順序 選擇 重復(fù)和可選 數(shù)據(jù)定義符號 等價于 和即連接 選擇一個 重復(fù) 可選 8 定義數(shù)據(jù)的方法 數(shù)據(jù)組成方式 三種基本類型 順序選擇重復(fù)附加類型 可選數(shù)據(jù)定義符號 含義 意思是等價于 或定義為 意思是和 即 連接兩個分量 意思是或 即 從方括弧內(nèi)列出的若干個分量中選擇一個 通常用 號隔開供選擇的分量 意思是重復(fù) 即 重復(fù)花括弧內(nèi)的分量 常常使用上限和下限進(jìn)一步注釋表示重復(fù)的花括弧 意思是可選 即 圓括弧里的分量可有可無 電話定義 應(yīng)用舉例 北京某高校可用的電話號碼有以下幾類 校內(nèi)電話號碼由4位數(shù)字組成 第1位數(shù)字不是0 校外電話又分為本市電話和外地電話兩類 a 撥校外電話需先撥0 若是本市電話則再接著撥8位數(shù)字 第1位不是0 b 若是外地電話則撥3位區(qū)碼再撥8位電話號碼 第1位不是0 請用定義數(shù)據(jù)字典的方法 定義上述的電話號碼 電話號碼 校內(nèi)電話號碼 校外電話號碼 校內(nèi)電話號碼 非零數(shù)字 3位數(shù)字 后面繼續(xù)定義校外電話號碼 本市號碼 外地號碼 本市號碼 數(shù)字零 8位數(shù)字外地號碼 數(shù)字零 3位數(shù)字 8位數(shù)字非零數(shù)字 1 2 3 4 5 6 7 8 9 數(shù)字零 03位數(shù)字 3 數(shù)字 3 3至3個數(shù)字8位數(shù)字 非零數(shù)字 7位數(shù)字7位數(shù)字 7 數(shù)字 7數(shù)字 0 1 2 3 4 5 6 7 8 9 9 成本 效益分析的目標(biāo) 正式要從經(jīng)濟(jì)角度分析開發(fā)一個特定的新系統(tǒng)是否劃算 從而幫助客戶組織的負(fù)責(zé)人正確地做出是否投資于這項開發(fā)工程的決定 第二章可行性研究 復(fù)習(xí)重點 可行性研究的目的可行性研究的內(nèi)容數(shù)據(jù)流圖的畫法數(shù)據(jù)字典的實現(xiàn) 第二章可行性研究 1 需求分析的任務(wù) 準(zhǔn)確地回答 系統(tǒng)必須做什么 這個問題 而不必研究 如何做 需求分析的結(jié)果 是提供準(zhǔn)確完整的軟件需求規(guī)格說明書 2 軟件系統(tǒng)的綜合要求功能需求 性能需求 可靠性和可用性需求 出錯處理需求接口需求 約束 逆向需求 將來可能提出的要求3 分析系統(tǒng)的數(shù)據(jù)要求 1 建立數(shù)據(jù)模型 E R圖 2 描繪數(shù)據(jù)結(jié)構(gòu) 層次方框圖和Warnier圖 3 數(shù)據(jù)結(jié)構(gòu)規(guī)范化 第三章需求分析 4 需求分析過程建立三種模型數(shù)據(jù)模型 實體 聯(lián)系圖功能模型 數(shù)據(jù)流圖行為模型 狀態(tài)轉(zhuǎn)換圖數(shù)據(jù)字典是分析模型的核心 第三章需求分析 5 實體 聯(lián)系圖數(shù)據(jù)模型中包含3種相互關(guān)聯(lián)的信息 數(shù)據(jù)對象 數(shù)據(jù)對象的屬性 數(shù)據(jù)對象彼此間相互連接的關(guān)系 聯(lián)系可分為以下三種類型 一對一 一對多和多對 6 范式 第一范式 第二范式 第三范式 第三章需求分析 7 狀態(tài)轉(zhuǎn)換圖通過描繪系統(tǒng)的狀態(tài)及引起系統(tǒng)狀態(tài)轉(zhuǎn)換的事件 來表示系統(tǒng)的行為 8 層次方框圖用樹形結(jié)構(gòu)的一系列多層次的矩形框描繪數(shù)據(jù)的層次結(jié)構(gòu) 第三章需求分析 9 Warnier圖Warnier圖也用樹形結(jié)構(gòu)描繪信息 但是這種圖形工具比層次方框圖提供了更豐富的描繪手段 第三章需求分析 軟件產(chǎn)品的Warnier圖 10 IPO圖是輸入 處理 輸出圖的簡稱 能夠方便地描繪輸入數(shù)據(jù) 對數(shù)據(jù)的處理和輸出數(shù)據(jù)之間的關(guān)系 第三章需求分析 主文件更新處理的IPO圖 第三章需求分析 復(fù)習(xí)重點 需求分析的任務(wù)需求分析階段建立3種模型 數(shù)據(jù)模型功能模型行為模型實體 聯(lián)系圖 E R圖 的畫法 第四章形式化說明技術(shù) 第五章總體設(shè)計 1 總體設(shè)計的目的 概括地說 系統(tǒng)應(yīng)當(dāng)如何實現(xiàn) 因此總體設(shè)計又稱為概要設(shè)計或者初步設(shè)計 2 總體設(shè)計的過程 由兩個主要階段組成 系統(tǒng)設(shè)計階段 確定系統(tǒng)的具體實現(xiàn)方案 包括 設(shè)想供選擇的方案 選取合理的方案 推薦最佳方案 結(jié)構(gòu)設(shè)計階段 確定軟件結(jié)構(gòu) 包括 功能分解 設(shè)計軟件結(jié)構(gòu) 設(shè)計數(shù)據(jù)庫 制定測試文檔 書寫文檔 審查和復(fù)查 3 模塊 是由邊界元素限定的相鄰程序元素的序列 而且有一個總體標(biāo)識符代表它 第五章總體設(shè)計 4 模塊化 就是把程序劃分成獨立命名且可獨立訪問的模塊 每個模塊完成一個子功能 把這些模塊集成起來夠成一個整體 可以完成指定的功能滿足用戶的需求 每個程序都相應(yīng)地有一個最適當(dāng)?shù)哪K數(shù)目M 使得系統(tǒng)的開發(fā)成本最小 5 模塊化的作用 模塊化可以使軟件結(jié)構(gòu)清晰 不僅容易設(shè)計也容易閱讀和理解 模塊化使軟件容易測試和調(diào)試 因而有助于提高軟件的可靠性 模塊化能夠提高軟件的可修改性 模塊化也有助于軟件開發(fā)工程的組織管理 第五章總體設(shè)計 6 抽象 抽象就是抽出事物本質(zhì)特性而暫時不考慮細(xì)節(jié) 是人類處理復(fù)雜問題的基本方法之一 7 逐步求精 為了能集中精力解決主要問題而盡量推遲對問題細(xì)節(jié)的考慮 8 信息隱藏 設(shè)計和確定模塊 使得一個模塊內(nèi)包含的信息 過程和數(shù)據(jù) 對于不需要這些信息的模塊來說 是不能訪問的 9 局部化 指把一些關(guān)系密切的軟件元素物理地放得彼此靠近 顯然 局部化有助于實現(xiàn)信息隱藏 第五章總體設(shè)計 10 模塊獨立性 使得每個模塊完成一個相對獨立的特定子功能 并且和其他模塊之間的關(guān)系很簡單 即功能專一 模塊之間無過多的相互作用的模塊 11 模塊獨立程度的兩個定性標(biāo)準(zhǔn)度量 兩個標(biāo)準(zhǔn)分別稱為內(nèi)聚和耦合 12 耦合 是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量 耦合要低 即每個模塊和其他模塊之間的關(guān)系要簡單 13 內(nèi)聚 是衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度 內(nèi)聚要高 每個模塊完成一個相對獨立的特定子功能 理想內(nèi)聚的模塊只做一件事情 14 耦合的種類 6種 1 非直接耦合 完全獨立 兩個模塊中的每一個都能獨立地工作而不需要另一個模塊的存在 2 數(shù)據(jù)耦合 兩個模塊彼此間通過參數(shù)交換信息 而且交換的信息僅僅是數(shù)據(jù) 3 控制耦合 兩個模塊彼此間傳遞的信息中有控制信息 4 特征耦合 把整個數(shù)據(jù)結(jié)構(gòu)作為參數(shù)傳遞而被調(diào)用的模塊只需要使用其中一部分?jǐn)?shù)據(jù)元素時 就出現(xiàn)了特征耦合 5 公共環(huán)境耦合 兩個或多個模塊通過一個公共數(shù)據(jù)環(huán)境相互作用時 它們之間的耦合稱為公共環(huán)境耦合 6 內(nèi)容耦合 最高程度的耦合是內(nèi)容耦合 如果出現(xiàn)下列情況之一 兩個模塊間就發(fā)生了內(nèi)容耦合 一個模塊訪問另一個模塊的內(nèi)部數(shù)據(jù) 一個模塊不通過正常入口轉(zhuǎn)到另一個模塊的內(nèi)部 兩個模塊有一部分程序代碼重疊 一個模塊有多個入口 設(shè)計原則 盡量使用數(shù)據(jù)耦合 少用控制耦合和特征耦合 限制公共環(huán)境耦合的范圍 完全不用內(nèi)容耦合 15 內(nèi)聚的種類 7種 1 偶然內(nèi)聚 一個模塊完成一組任務(wù) 這些任務(wù)彼此間即使有關(guān)系 關(guān)系也是很松散的 就叫做偶然內(nèi)聚 2 邏輯內(nèi)聚 一個模塊完成的任務(wù)在邏輯上屬于相同或相似的一類 則稱為邏輯內(nèi)聚 3 時間內(nèi)聚 一個模塊包含的任務(wù)必須在同一段時間內(nèi)執(zhí)行 就叫時間內(nèi)聚 4 過程內(nèi)聚 一個模塊內(nèi)的處理元素是相關(guān)的 而且必須以特定次序執(zhí)行 則稱為過程內(nèi)聚 5 通信內(nèi)聚 模塊中所有元素都使用同一個輸入數(shù)據(jù)和 或 產(chǎn)生同一個輸出數(shù)據(jù) 則稱為通信內(nèi)聚 即在同一個數(shù)據(jù)結(jié)構(gòu)上操作 6 順序內(nèi)聚 一個模塊內(nèi)的處理元素和同一個功能密切相關(guān) 而且這些處理必須順序執(zhí)行 則稱為順序內(nèi)聚 7 功能內(nèi)聚 如果模塊內(nèi)所有處理元素屬于一個整體 完成一個單一的功能 則稱為功能內(nèi)聚 功能內(nèi)聚是最高程度的內(nèi)聚 高內(nèi)聚 功能內(nèi)聚 順序內(nèi)聚中內(nèi)聚 通信內(nèi)聚 過程內(nèi)聚低內(nèi)聚 時間內(nèi)聚 邏輯內(nèi)聚 偶然內(nèi)聚 15 啟發(fā)性規(guī)則 7條 1 改進(jìn)軟件結(jié)構(gòu)提高模塊獨立性 通過模塊分解或合并 降低耦合提高內(nèi)聚 2 模塊規(guī)模應(yīng)該適中 過大的模塊往往是由于分解不充分 過小的模塊將導(dǎo)致模塊數(shù)目過多將使系統(tǒng)接口復(fù)雜 3 深度 寬度 扇出和扇入都應(yīng)適當(dāng) 深度 軟件結(jié)構(gòu)中控制的層數(shù) 寬度 軟件結(jié)構(gòu)內(nèi)同一個層次上的模塊總數(shù)的最大值 扇出 一個模塊直接控制 調(diào)用 的模塊數(shù)目 扇入 有多少個上級模塊直接調(diào)用它 15 啟發(fā)性規(guī)則 7條 4 模塊的作用域應(yīng)該在控制域之內(nèi) 模塊的作用域 定義為受該模塊內(nèi)一個判定影響的所有模塊的集合 模塊的控制域 是這個模塊本身以及所有直接或間接從屬于它的模塊的集合 5 力爭降低模塊接口的復(fù)雜程度 6 設(shè)計單入口單出口的模塊 7 模塊功能應(yīng)該可以預(yù)測 功能可預(yù)測 如果一個模塊可以當(dāng)做一個黑盒子 只要輸入的數(shù)據(jù)相同就產(chǎn)生同樣的輸出 這個模塊的功能就是可以預(yù)測的 16 層次圖 H圖 層次圖用來描繪軟件的層次結(jié)構(gòu) 很適于在自頂向下設(shè)計軟件的過程中使用 與層次方框圖的區(qū)別是 層次方框圖描繪的是數(shù)據(jù)結(jié)構(gòu) 17 HIPO圖 HIPO圖是 層次圖 輸入 處理 輸出圖 的英文縮寫 為了能使HIPO圖具有可追蹤性 在H圖 層次圖 里除了最頂層的方框之外 每個方框都加了編號 和H圖中每個方框相對應(yīng) 應(yīng)該有一張IPO圖描繪這個方框代表的模塊的處理過程 18 面向數(shù)據(jù)流的設(shè)計方法 面向數(shù)據(jù)流的設(shè)計方法可以把數(shù)據(jù)流圖變換成軟件結(jié)構(gòu) 通常所說的結(jié)構(gòu)化設(shè)計方法 簡稱SD方法 也就是基于數(shù)據(jù)流的設(shè)計方法 19 信息流有兩種類型 變換流 事務(wù)流 20 變換分析 把具有變換流特點的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu) 21 變換分析設(shè)計步驟 1 復(fù)查基本系統(tǒng)模型 確保系統(tǒng)的輸入數(shù)據(jù)和輸出數(shù)據(jù)符合實際 2 復(fù)查并精化數(shù)據(jù)流圖 確保數(shù)據(jù)流圖給出了正確的邏輯模型 使數(shù)據(jù)流圖中每個處理都代表一個相對獨立的子功能 3 確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性 4 確定輸入流和輸出流的邊界 從而孤立出變換中心 21 變換分析設(shè)計步驟 5 完成 第一級分解 最頂層的控制模塊協(xié)調(diào)下述從屬的控制功能 輸入信息處理控制模塊Ca 協(xié)調(diào)對所有輸入數(shù)據(jù)的接收 變換中心控制模塊Ct 管理對內(nèi)部形式的數(shù)據(jù)的所有處理操作 輸出信息處理控制模塊Ce 協(xié)調(diào)輸出信息的產(chǎn)生過程 21 變換分析設(shè)計步驟 6 完成 第二級分解 輸入部分 轉(zhuǎn)換部分 輸出部分分別映射成接收模塊 處理模塊 輸出模塊 從變換中心的邊界開始沿輸入通路向外移動 把輸入通路中每個處理映射成軟件結(jié)構(gòu)中Ca控制下的一個低層模塊 然后沿輸出通路向外移動 把輸出通路中每個處理映射成直接或間接受模塊Ce控制的一個低層模塊 最后把變換中心內(nèi)的每個處理映射成受Ct控制的一個處理模塊 21 變換分析設(shè)計步驟 6 完成 第二級分解 7 使用設(shè)計度量和啟發(fā)式規(guī)則對第一次分割得到的軟件結(jié)構(gòu)進(jìn)一步精化 22 事物分析 23 舉例 根據(jù)儲蓄系統(tǒng)的數(shù)據(jù)流圖利用面向數(shù)據(jù)流的設(shè)計方法設(shè)計其軟件結(jié)構(gòu) 23 舉例 根據(jù)儲蓄系統(tǒng)的數(shù)據(jù)流圖利用面向數(shù)據(jù)流的設(shè)計方法設(shè)計其軟件結(jié)構(gòu) 第五章總體設(shè)計 復(fù)習(xí)重點 總體設(shè)計的目的模塊化模塊獨立及度量標(biāo)準(zhǔn)耦合 內(nèi)聚及其種類啟發(fā)性規(guī)則面向數(shù)據(jù)流的設(shè)計方法 第六章詳細(xì)設(shè)計設(shè)計 1 總體設(shè)計的目的 確定應(yīng)該怎樣具體地實現(xiàn)所要求的系統(tǒng) 2 結(jié)構(gòu)程序設(shè)計 經(jīng)典的結(jié)構(gòu)程序設(shè)計 只允許使用順序 IF THEN ELSE型分支和DO WHILE型循環(huán)這3種基本控制結(jié)構(gòu) 擴(kuò)展的結(jié)構(gòu)程序設(shè)計 如果除了上述3種基本控制結(jié)構(gòu)之外 還允許使用DO CASE型多分支結(jié)構(gòu)和DO UNTIL型循環(huán)結(jié)構(gòu) 修正的結(jié)構(gòu)程序設(shè)計 再加上允許使用LEAVE 或BREAK 結(jié)構(gòu) 描述程序處理過程的工具叫程序設(shè)計工具 分為圖形 表格 和語言3類 必須提供對設(shè)計的無歧義的描述 包括 程序流程圖 程序框圖 盒圖 N S圖 PAD圖 判定表 判定樹 過程設(shè)計語言 偽碼 3 過程設(shè)計工具 4 程序流程圖 程序流程圖又稱為程序框圖 它是歷史最悠久 使用最廣泛描述過程設(shè)計的方法 也是用的最混亂的一種方法 5 盒圖 N S圖 出于要有一種不允許違背結(jié)構(gòu)程序設(shè)計精神的圖形工具的考慮 Nassi和Shneiderman提出了盒圖 又稱為N S圖 6 PAD圖 是問題分析圖 problemanalysisdiagram 的英文縮寫 它用二維樹形結(jié)構(gòu)的圖來表示程序的控制流 將這種圖翻譯成程序代碼比較容易 7 判定表 判定表卻能夠清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對應(yīng)關(guān)系 8 判定樹 是判定表的變種 用樹形的方式清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對應(yīng)關(guān)系 畫判定樹時分枝的次序可能對最終畫出的判定樹的簡潔程度有較大影響 9 過程設(shè)計語言 過程設(shè)計語言 PDL 也稱為偽碼 它是用正文形式表示數(shù)據(jù)和處理過程的設(shè)計工具 偽代碼的基本控制結(jié)構(gòu) 簡單陳述句結(jié)構(gòu) 避免復(fù)合語句 判定結(jié)構(gòu) IF THEN ELSE或CASE OF結(jié)構(gòu) 選擇結(jié)構(gòu) WHILE DO或REPEAT UNTIL結(jié)構(gòu) 例題 某程序流程圖如下圖所示 請分別用N S圖和PAD圖表示 a j b i c e d x2 x3 x4 f g h xi PAD圖 x8 a j x1 b T F f x6 T F x7 i g h CASExi x2 x4 x3 x5 c d e N S圖 例題 某校制定了教師的講課課時津貼標(biāo)準(zhǔn) 對于各種性質(zhì)的講座 無論教師是什么職稱 每課時津貼費一律是50元 對于一般的授課 則根據(jù)教師的職稱來決定每課時津貼費 教授30元 副教授25元 講師20元 助教15元 請分別用判定表 判定樹表示津貼標(biāo)準(zhǔn) 10 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法的根據(jù)數(shù)據(jù)結(jié)構(gòu)最終得出對程序處理過程的描述 最適合在詳細(xì)階段使用 11 Jackson方法 面Jackson結(jié)構(gòu)程序設(shè)計方法由5個步驟組成 1 分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu) 用Jackson圖描繪數(shù)據(jù)結(jié)構(gòu) 2 找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元 3 用下述規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖 第一 為每對有對應(yīng)關(guān)系的數(shù)據(jù)單元 按照它們在數(shù)據(jù)結(jié)構(gòu)圖中的層次 在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個處理框 層次不同時與圖中層次低的那個對應(yīng) 第二 根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個數(shù)據(jù)單元所處的層次 在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框 第三 根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個數(shù)據(jù)單元所處的層次 在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框 改進(jìn)的Jackson圖規(guī)定在構(gòu)成順序結(jié)構(gòu)的元素中不能有重復(fù)出現(xiàn)或選擇出現(xiàn)的元素 因此可能需要增加中間層次的處理框 4 列出所有操作和條件 包括分支條件和循環(huán)結(jié)束條件 并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置 5 用偽碼表示程序 12 程序復(fù)雜程度的定量度量 定量度量程序復(fù)雜程度 McCabe方法 Halstead方法 13 McCabe方法 根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度 這樣度量出的結(jié)果稱為程序的環(huán)形復(fù)雜度 為了突出表示程序的控制流 通常使用流圖 14 計算環(huán)形復(fù)雜度的方法 有了描繪程序控制流的流圖之后 可以用下述3種方法中的任何 第六章詳細(xì)設(shè)計 復(fù)習(xí)重點 程序的3種基本控制結(jié)構(gòu) 程序流程圖 N S圖 盒圖 PAD圖的基本符號會畫程序流程圖 N S圖 PAD圖和判定表 判定樹計算環(huán)形復(fù)雜度的方法 第七章實現(xiàn) 1 軟件實現(xiàn) 通常把編碼和測試統(tǒng)稱為實現(xiàn) 所謂編碼 就是把軟件設(shè)計結(jié)果翻譯成用某種程序設(shè)計語言書寫的程序 源程序代碼的邏輯簡明清晰 易讀易懂是好程序的一個重要標(biāo)準(zhǔn) 測試的目的 就是在軟件投入生產(chǎn)性運行之前 盡可能多地發(fā)現(xiàn)軟件中的錯誤 2 軟件測試的目標(biāo) 測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程 好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案 成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試 注意 測試決不能證明程序是正確的 即使經(jīng)過了最嚴(yán)格的測試之后 仍然可能還有沒被發(fā)現(xiàn)的錯誤潛藏在程序中 測試用例應(yīng)由測試輸入數(shù)據(jù)和與之對應(yīng)的預(yù)期輸出結(jié)果這兩部分組成 窮舉測試是不可能的 3 軟件測試方法 1 黑盒測試 功能測試 把程序看作一個黑盒子 完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程 是在程序接口進(jìn)行的測試 2 白盒測試 結(jié)構(gòu)測試 把程序看成裝在一個透明的盒子里 測試者完全知道程序的結(jié)構(gòu)和處理算法 按照程序內(nèi)部的邏輯測試程序 檢測程序中的主要執(zhí)行通路是否都能按預(yù)定要求正確工作 白盒測試 黑盒測試都不可能實現(xiàn)窮盡測試 4 軟件測試步驟 模塊測試 子系統(tǒng)測試 系統(tǒng)測試 驗收測試 平行運行 1 模塊測試 單元測試 模塊測試又稱單元測試 它把每個模塊作為單獨的實體來測試 保證每個模塊作為一個單元能正確運行 發(fā)現(xiàn)的往往是編碼和詳細(xì)設(shè)計的錯誤 單元測試主要使用白盒測試技術(shù) 2 子系統(tǒng)測試把經(jīng)過單元測試的模塊放在一起形成一個子系統(tǒng)來測試 著重測試模塊的接口 3 系統(tǒng)測試把經(jīng)過測試的子系統(tǒng)裝配成一個完整的系統(tǒng)來測試 發(fā)現(xiàn)的往往是軟件設(shè)計編碼中的錯誤 也可能發(fā)現(xiàn)需求說明中的錯誤 不論是子系統(tǒng)測試還是系統(tǒng)測試 都兼有檢測和組裝兩重含義 稱為集成測試 4 驗收測試 確認(rèn)測試 把軟件系統(tǒng)作為單一的實體進(jìn)行測試 它是在用戶積極參與下進(jìn)行的 而且可能主要使用實際數(shù)據(jù) 系統(tǒng)將來要處理的信息 進(jìn)行測試 發(fā)現(xiàn)的往往是系統(tǒng)需求說明書中的錯誤 驗收測試也稱為確認(rèn)測試 5 平行運行 同時運行新開發(fā)出來的系統(tǒng)和將被它取代的舊系統(tǒng) 6 驅(qū)動程序 存根程序 單元測試可以應(yīng)用人工測試和計算機(jī)測試這樣兩種不同類型的測試方法 在計算機(jī)測試中 模塊不是一個獨立的程序 不能獨立運行 它可能調(diào)用其它模塊或被其它模塊調(diào)用 因此必須為每個單元測試開發(fā)驅(qū)動程序和 或 存根程序 驅(qū)動程序是一個 主程序 它接收測試數(shù)據(jù) 傳送給被測試的模塊 存根程序代替被測試的模塊所調(diào)用的模塊 相當(dāng)于 虛擬子程序 7 集成測試的集成策略 模塊組裝成程序時有兩種方法 1 非漸增式測試方法 先分別測試每個模塊 再把所有模塊按設(shè)計要求放在一起結(jié)合成所要的程序 2 漸增式測試 把下一個要測試的模塊同已經(jīng)測試好的那些模塊結(jié)合起來進(jìn)行測試 測試完以后再把下一個應(yīng)該測試的模塊結(jié)合進(jìn)來測試 當(dāng)使用漸增方式把模塊結(jié)合到程序中去時 有自頂向下和自底向上兩種集成策略 當(dāng)使用自頂向下集成時有深度優(yōu)先和寬度優(yōu)先的策略 7 回歸測試 回歸測試 是指重新執(zhí)行已經(jīng)做過的測試的某個子集 以保證測試過程中的變化沒有帶來非預(yù)期的副作用 回歸測試就是用于保證由于調(diào)試或其他原因引起的變化 不會導(dǎo)致非預(yù)期的軟件行為或額外錯誤的測試活動 8 Alpha和Beta測試 Alpha測試由用戶在開發(fā)者的場所進(jìn)行 并且在開發(fā)者對用戶的 指導(dǎo) 下進(jìn)行測試 是在受控的環(huán)境中進(jìn)行的 Beta測試由軟件的最終用戶們在一個或多個客戶場所進(jìn)行 開發(fā)者通常不在測試的現(xiàn)場 Beta測試是軟件在開發(fā)者不能控制的環(huán)境中的 真實 應(yīng)用 9 白盒測試技術(shù) 10 邏輯覆蓋 1 語句覆蓋 選擇足夠多的測試數(shù)據(jù) 使被測程序中每個語句至少執(zhí)行一次 2 判定覆蓋 不僅每個語句必須至少執(zhí)行一次 而且每個判定的每種可能的結(jié)果都應(yīng)該至少執(zhí)行一次 比語句覆蓋強(qiáng) 但對程序邏輯的覆蓋程度仍不高 3 條件覆蓋 不僅每個語句至少執(zhí)行一次 而且使判定表達(dá)式中的每個條件都取到各種可能的結(jié)果 判定覆蓋不一定包含條件覆蓋 條件覆蓋也不一定包含判定覆蓋 4 判定 條件覆蓋 使得判定表達(dá)式中的每個條件都取到各種可能的值 每個判定表達(dá)式也都取到各種可能的結(jié)果 有時判定 條件覆蓋也并不比條件覆蓋更強(qiáng) 5 條件組合覆蓋 要求選取足夠多的測試數(shù)據(jù) 使得每個判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次 條件組合覆蓋標(biāo)準(zhǔn)的測試數(shù)據(jù)并不一定能使程序中的每條路徑都執(zhí)行到 6 點覆蓋 程序執(zhí)行路徑至少經(jīng)過流圖的每個結(jié)點一次 語句覆蓋標(biāo)準(zhǔn)相同 7 邊覆蓋 使得程序執(zhí)行路徑至少經(jīng)過流圖中每條邊一次 判定覆蓋一致 8 路徑覆蓋 選取足夠多測試數(shù)據(jù) 使程序的每條可能路徑都至少執(zhí)行一次 如果程序圖中有環(huán) 則要求每個環(huán)至少經(jīng)過一次 語句覆蓋 判定覆蓋 條件覆蓋 判定 條件覆蓋 條件組合覆蓋 路徑覆蓋 點覆蓋 邊覆蓋 11 控制結(jié)構(gòu)測試 1 基本路徑測試 2 條件測試 3 循環(huán)測試 12 黑盒測試技術(shù) 1 等價劃分 2 邊界值分析 3 錯誤推測 13 等價劃分 等價劃分是一種黑盒測試技術(shù) 把程序的輸入域劃分成若干個數(shù)據(jù)類 每類中的一個典型值在測試中的作用與這一類中所有其他值的作用相同 使用等價劃分法設(shè)計測試方案首先需要劃分輸入數(shù)據(jù)的等價類 常常還需要分析輸出數(shù)據(jù)的等價類 以便根據(jù)輸出數(shù)據(jù)的等價類導(dǎo)出對應(yīng)的輸入數(shù)據(jù)等價類 14 等價劃分原則 如果規(guī)定了輸入數(shù)據(jù)的個數(shù) 則類似地也可以劃分出一個有效的等價類和兩個無效的等價類 如果規(guī)定了輸入數(shù)據(jù)的一組值 而且程序?qū)Σ煌斎胫底霾煌幚?則每個允許的輸入值是一個有效的等價類 此外還有一個無效的等價類 任一個不允許的輸入值 如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則 則可以劃分出一個有效的等價類 符合規(guī)則 和若干個無效的等價類 從各種不同角度違反規(guī)則 如果規(guī)定了輸入數(shù)據(jù)為整型 則可以劃分出正整數(shù) 零和負(fù)整數(shù)等3個有效類 如果程序的處理對象是表格 則應(yīng)該使用空表 以及含一項或多項的表 15 等價劃分設(shè)計測試方案時步驟 為每一個等價類規(guī)定一個唯一編號 設(shè)計一個新的測試方案以盡可能多地覆蓋尚未被覆蓋的有效等價類 重復(fù)這一步驟直到所有有效等價類都被覆蓋為止 設(shè)計一個新的測試方案 使它覆蓋一個而且只覆蓋一個尚未被覆蓋的無效等價類 重復(fù)這一步驟直到所有無效等價類都被覆蓋為止 注意 通常程序發(fā)現(xiàn)一類錯誤后就不再檢查是否還有其他錯誤 因此 應(yīng)該使每個測試方案只覆蓋一個無效的等價類 例子 某城市的電話號碼由3個部分組成 地區(qū)碼 空白或四位數(shù)字 前綴 非0或1開頭的四位數(shù)字 后綴 四位數(shù)字 使用等價類劃分方法進(jìn)行測試用例設(shè)計 16 邊界值分析 驗表明 處理邊界情況時程序最容易發(fā)生錯誤 使用邊界值分析方法設(shè)計測試方案首先應(yīng)該確定邊界情況 選取的測試數(shù)據(jù)應(yīng)該剛好等于 剛剛小于和剛剛大于邊界值 通常設(shè)計測試方案時總是聯(lián)合使用等價劃分和邊界值分析兩種技術(shù) 例 測試計算平方根的函數(shù) 輸入 實數(shù) 輸出 實數(shù)需求說明 當(dāng)輸入一個0或比0大的數(shù)的時候 返回其正平方根 輸入一個小于0的數(shù)時 顯示錯誤信息 輸入值小于0非法 并返回0 劃分 1 邊界為0和最大正實數(shù) 劃分 2 邊界為最小負(fù)實數(shù)和0 由此得到以下測試用例 a 輸入 最小負(fù)實數(shù) b 輸入 絕對值很小的負(fù)數(shù) c 輸入0d 輸入 絕對值很小的正數(shù) e 輸入 最大正實數(shù) 17 調(diào)試 調(diào)試是在測試發(fā)現(xiàn)錯誤之后排除錯誤的過程 有下列3種調(diào)試途徑可以采用 蠻干法回溯法原因排除法 對分查找法歸納法演繹法 17 軟件可靠性 程序在給定的時間間隔內(nèi) 按照規(guī)格說明書的規(guī)定成功地運行的概率 平均無故障時間MTTF是衡量軟件可靠性的重要指標(biāo) 18 軟件可用性 軟件可用性是程序在給定的時間點 按照規(guī)格說明書的規(guī)定 成功地運行的概率 第七章實現(xiàn) 復(fù)習(xí)重點 測試的目的 任務(wù) 步驟及方法 黑盒測試和白盒測試 Alpha和Beta測試掌握邏輯覆蓋法掌握等價劃分法和邊界值分析法調(diào)試的概念 第八章維護(hù) 1 維護(hù)定義 所謂軟件維護(hù)就是在軟件已經(jīng)交付使用之后 為了改正錯誤或滿足新的需要而修改軟件的過程 2 維護(hù)的種類 可分為4項活動 改正性維護(hù) 把診斷和改正錯誤的過程稱為改正性維護(hù) 適應(yīng)性維護(hù) 為了和變化了的環(huán)境適當(dāng)?shù)嘏浜隙M(jìn)行的修改軟件的活動 完善性維護(hù) 為了滿足在用戶提出的增加新功能或修改已有功能的要求和一般性的改進(jìn)要求 需要進(jìn)行完善性維護(hù) 預(yù)防性維護(hù) 把今天的方法學(xué)應(yīng)用于昨天的系統(tǒng)以滿足明天的需要 采用先進(jìn)的軟件工程方法對需要維護(hù)的軟件或軟件中的某一部分 主動地進(jìn)行重新設(shè)計 編碼和測試 注意 只有預(yù)防性維護(hù)是主動的 其他維護(hù)都是被動的 3 軟件的可維護(hù)性定性 維護(hù)人員理解 改正 改動或改進(jìn)這個軟件的難易程度 4 決定軟件的可維護(hù)性定性的因素 可理解性可測試性可修改性可移植性可重用性文檔是影響軟件可維護(hù)性的決定因素 5 軟件再工程過程 典型的軟件再工程過程模型定義了 庫存目錄分析文檔重構(gòu)逆向工程代碼重構(gòu)數(shù)據(jù)重構(gòu)正向工程6類活動 第八章維護(hù) 復(fù)習(xí)重點 維護(hù)的定義維護(hù)的類型決定軟件的可維護(hù)性定性的因素 第九章面向?qū)ο蠓椒▽W(xué)論 1 向?qū)ο蠓椒▽W(xué)要點 1 面向?qū)ο蟮能浖到y(tǒng)是由對象組成的 軟件中的任何元素都是對象 復(fù)雜的軟件對象由比較簡單的對象組合而成 2 把所有對象都劃分成各種對象類 簡稱為類 class 每個對象類都定義了一組數(shù)據(jù)和一組方法 數(shù)據(jù)用于表示對象的靜態(tài)屬性 是對象的狀態(tài)信息 3 按照子類 或稱為派生類 與父類 或稱為基類 的關(guān)系 把若干個對象類組成一個層次結(jié)構(gòu)的系統(tǒng) 也稱為類等級 4 對象彼此之間僅能通過傳遞消息互相聯(lián)系 面向?qū)ο?oo 對象 objects 類 classes 繼承 inheritance 通信 communicationwithmessages 2 面向?qū)ο蠓椒ǖ膬?yōu)點 與人們習(xí)慣的思維方法一致 穩(wěn)定性好 可重用性好 較易開發(fā)大型軟件產(chǎn)品 可維護(hù)性好 3 對象 是客觀事物或概念的抽象表述 即對客觀存在的事物的描述統(tǒng)稱為對象 對象可以是事 物 或抽象概念 是將一組數(shù)據(jù)和使用該數(shù)據(jù)的一組基本操作或過程封裝在一起的實體 對象的特點 1 以數(shù)據(jù)為中心 2 對象是主動的 3 實現(xiàn)了數(shù)據(jù)封裝 4 本質(zhì)上具有并行性 5 模塊獨立性好 4 類 類就是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義 類 好比是一個對象模板 用它可以產(chǎn)生多個對象 5 實例 實例就是由某個特定的類所描述的一個具體的對象 6 消息 對象之間通信的手段 是一個對象要求另一對象執(zhí)行類中定義的某個操作的規(guī)格說明 通常一個消息由三部分組成 接收消息的對象消息標(biāo)識符 即消息名 零個或多個變元MyCircle Show Green 7 其他概念 方法 方法就是對象所能執(zhí)行的操作 也就是類中所定義的服務(wù) 屬性 屬性就是類中所定義的數(shù)據(jù) 它是對客觀世界實體所具有的性質(zhì)的抽象 封裝 封裝就是指把對象的數(shù)據(jù)和實現(xiàn)操作的代碼集中起來放在對象內(nèi)部 繼承 繼承是子類自動地共享基類中定義的數(shù)據(jù)和方法的機(jī)制 單重繼承 子類僅從一個父類繼承屬性和方法 多重繼承 子類可從多個父類繼承屬性和方法 多態(tài)性 是指子類對象可以像父類對象那樣使用 同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象 即不同等級的類 可以公用一個方法的名字 不同層次中的每個類卻各自按自己的需要來實現(xiàn)這個行為 重載 有兩種重載 1 函數(shù)重載 指在同一作用域內(nèi)的若干個參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字 2 運算符重載 指同一運算符可以施加于不同類型的操作數(shù)上面 當(dāng)被操作數(shù)類型不同時 運算符的含義是不同的 8 面向?qū)ο蠼?面向?qū)ο箝_發(fā)軟件 需要建立3種形式的模型 對象模型 描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu) 動態(tài)模型 描述系統(tǒng)控制結(jié)構(gòu) 執(zhí)行操作 功能模型 描述系統(tǒng)功能 數(shù)值變化 對象模型始終都是最重要 最基本 最核心 功能模型指明了系統(tǒng)應(yīng)該 做什么 動態(tài)模型明確規(guī)定了 什么時候做 對象模型則定義了做事情的實體 即 對誰做 9 類圖的基本符號 1 定義類 類的圖形符號為長方形 用兩條橫線把長方形分成上 中 下3個區(qū)域 別放類的名字 屬性和服務(wù) 2 定義屬性 可見性屬性名 類型 缺省值 性質(zhì)串 3 定義方法 可見性操作名 參數(shù)表 返回類型 性質(zhì)串 10 表示關(guān)系的符號 1 普通關(guān)聯(lián) 2 限定關(guān)聯(lián) 3 關(guān)聯(lián)類 關(guān)聯(lián)中的每個連接與關(guān)聯(lián)類的一個對象相聯(lián)系 關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接 11 聚集 聚集是一種特殊的關(guān)聯(lián) 聚集表示類與類之間是整體與部分的關(guān)系 除了一般聚集之外 還有兩種特殊的聚集關(guān)系 分別是共享聚集和組合聚集 1 共享聚集如果在聚集關(guān)系中處于部分方的對象可同時參與多個處于整體方對象的構(gòu)成 則該聚集稱為共享聚集 一般聚集和共享聚集的關(guān)聯(lián)關(guān)系用空心菱形表示 2 組合聚集如果部分類完全隸屬于整體類 部分與整體共存 整體不存在了部分也會隨之消失 則該聚集稱為組合聚集 組合聚集的組成關(guān)系用實心菱形表示 12 泛化 泛化關(guān)系就是通常所說的繼承關(guān)系 它是通用元素和具體元素之間的一種分類關(guān)系 用一端為空心三角形的連線表示泛化關(guān)系 三角形的頂角緊挨著通用元素 注意 泛化針對類型而不針對實例 泛化可進(jìn)一步劃分成普通泛化和受限泛化 受限泛化 給泛化關(guān)系附加約束條件 分為 多重 不相交 完全 不完全 13 依賴和細(xì)化 1 依賴關(guān)系依賴關(guān)系表示 描述兩個模型元素 類 用例 之間的關(guān)系 其中一個模型元素是獨立的 另一個模型元素不是獨立的 它依賴于獨立的模型元素 如果獨立的模型元素改變了 將影響依賴于它的模型元素 2 細(xì)化關(guān)系當(dāng)對同一個事物在不同抽象層次上描述時 這些描述之間具有細(xì)化關(guān)系 假設(shè)兩個模型元素A和B描述同一個事物 它們的區(qū)別是抽象層次不同 如果B是在A的基礎(chǔ)上的更詳細(xì)的描述 則稱B細(xì)化了A 或稱A細(xì)化成了B 注意是虛線 實線就成了泛化 14 動態(tài)模型 動態(tài)模型描述系統(tǒng)控制結(jié)構(gòu) 通常用狀態(tài)圖表示 狀態(tài)圖 略 15 功能模型 用例圖 一幅用例圖包含的模型元素有系統(tǒng) 行為者 用例及用例之間的關(guān)系 使用用例模型代替?zhèn)鹘y(tǒng)的功能說明 往往能夠更好地獲取用戶需求 它所回答的問題是 系統(tǒng)應(yīng)該為每個 或每類 用戶做什么 復(fù)習(xí)重點 類與對象的基本概念3種形式的模型 對象模型動態(tài)模型功能模型 第九章面向?qū)ο蠓椒▽W(xué)論 1 面向?qū)ο蠓治?面向?qū)ο蠓治?就是抽取和整理用戶需求并建
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市總工會領(lǐng)導(dǎo)班子述職報告
- 斯瑪特維商場互動導(dǎo)視系統(tǒng)解決方案v10(16-9)
- 2025年會計、審計及稅務(wù)服務(wù)合作協(xié)議書
- 廣東省廣州市華僑、協(xié)和、增城中學(xué)等三校2024~2025學(xué)年高一下學(xué)期期中考試數(shù)學(xué)試卷(解析版)
- 安徽省鼎尖聯(lián)考2024-2025學(xué)年高二下學(xué)期4月月考數(shù)學(xué)試題(解析)
- 2025年駕校學(xué)車項目建議書
- 2025年視聽周邊設(shè)備:耳機(jī)合作協(xié)議書
- 晚期肝癌護(hù)理措施
- 護(hù)理措施診斷
- 風(fēng)疹患者護(hù)理規(guī)范
- 《2025年公路工程無機(jī)結(jié)合料穩(wěn)定材料試驗規(guī)程》知識培訓(xùn)
- 《一起長大的玩具》閱讀測試題(含答案)(江蘇鳳凰)
- 吉林長春歷年中考語文現(xiàn)代文閱讀真題26篇(截至2024年)
- 互聯(lián)網(wǎng)驅(qū)動的保險創(chuàng)新
- 2025年漢中漢源電力集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 卸妝潔面知識培訓(xùn)課件
- 質(zhì)量投訴與改進(jìn)管理制度
- 2025年甘肅農(nóng)墾集團(tuán)招聘筆試參考題庫含答案解析
- 光伏電站繼電保護(hù)基本原理和管理規(guī)范
- 山東省濟(jì)寧市2022-2023學(xué)年高一7月期末生物試題(解析版)
- 住宅小區(qū)拆除施工方案
評論
0/150
提交評論