版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、軟件工程軟件工程教案教案 (本(本 科)科) 主講:主講:* 杭州杭州電電子工子工業(yè)業(yè)學院學院 計計算機算機軟軟件教研室件教研室 e-mail:* 20212021 年年 4 4 月月 目錄目錄 第一章第一章軟件工程概述軟件工程概述.4 1.1軟件的概念、特點及分類.4 1.2軟件危機.5 1.3軟件工程.7 1.4小結.12 第二章第二章系統(tǒng)分析系統(tǒng)分析.13 2.1系統(tǒng)分析(項目計劃).13 2.2問題定義.13 2.3可行性研究.14 2.4小結.19 2.5補充實例.19 第三章第三章需求分析需求分析.22 3.1需求分析概述.22 3.2結構化分析方法.24 3.3驗證軟件需求.28
2、 3.4小結.28 3.5補充知識.28 3.6補充實例.31 第四章第四章軟件設計概述軟件設計概述.35 4.1軟件設計概述.35 4.2軟件設計的策略.35 4.3概要設計.40 4.4結構化系統(tǒng)設計.42 4.5小結.52 4.6補充實例.52 第五章第五章詳細設計詳細設計.53 5.1詳細設計概述.53 5.2結構化程序設計.54 5.3詳細設計的描述工具.55 5.4其它的軟件設計方法(面向數(shù)據(jù)結構的設計方法).60 5.5程序復雜度的定量度量.61 5.6小結.63 5.7補充實例.63 第六章第六章編碼編碼.67 6.1編碼的目的.67 6.2編碼的風格.67 6.3程序設計語言
3、.69 6.4小結.70 6.5補充實例.70 第七章第七章測試測試.71 第八章第八章維護維護.75 第九章第九章面向?qū)ο蠓治雠c設計面向?qū)ο蠓治雠c設計.76 第十章第十章軟件質(zhì)量保證軟件質(zhì)量保證.77 第十一章第十一章軟件項目計劃與管理軟件項目計劃與管理.78 第十二章第十二章.79 第十三章第十三章.80 第十四章第十四章.81 第一章第一章軟件工程概述軟件工程概述 引論: 隨著計算機的普及與深化,軟件數(shù)量急劇膨脹,同時軟件成本也在逐年 上升,質(zhì)量得不到可靠的保證。軟件開發(fā)的生產(chǎn)率也遠遠跟不上普及計 算機應用的要求。由此產(chǎn)生了“軟件危機” 。軟件工程正是在此情況下產(chǎn) 生的一門新興學科。 學
4、習軟件工程,鍛煉思維能力及解決問題的能力。 學習軟件工程,努力成為軟件界的“白領” 。 1.1軟件的概念、特點及分類 一 軟件的定義: 軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它包括程序、 數(shù)據(jù)及相關文檔的完整集合。其中,程序是按事先設計的功能和性 能要求執(zhí)行的指令序列;數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結構; 文檔是與程序開發(fā)、維護和使用有關的圖文材料。 二 軟件的特點: 1. 軟件是一種邏輯實體,而不是具體的物理實體。 2. 軟件的生產(chǎn)與硬件不同。 (無明顯的制造過,存在軟件產(chǎn)品的保護 問題。 ) 3. 在軟件的運行和使用期間,沒有硬件那樣的機械磨損、老化等問題。 4. 軟件的開發(fā)和運行
5、常常受到計算機系統(tǒng)的限制,對計算機系統(tǒng)有著 不同程度的依賴性。 5. 軟件的開發(fā)至今尚未完全擺脫手工藝的開發(fā)方式。 6. 軟件是復雜的。 (軟件復雜性來源于它所反映的實際問題的復雜性。 ) 7. 軟件成本相當昂貴。 (定制產(chǎn)品、手工開發(fā).成本高) 8. 相當多的軟件工作涉及到社會問題。 三 軟件的分類: 1. 按軟件功能劃分: 1) 系統(tǒng)軟件:使計算機系統(tǒng)各個部件、相關軟件和數(shù)據(jù)協(xié)調(diào)、高 效的工作的軟件。 (如:操作系統(tǒng),數(shù)據(jù)庫管理系統(tǒng), 設備驅(qū)動程序等) 2) 支撐軟件:協(xié)助用戶開發(fā)軟件的工具性軟件。 (如:文本編輯程 序,集成開發(fā)工具,圖形軟件包等) 3) 應用軟件:在特定領域內(nèi)開發(fā)為特定
6、目的服務的一類軟件。 2. 按軟件規(guī)模劃分: 微型1 人14 周 0.5k 小型1 人16 月 12k 中型25 人12 年 550k 大型520 人23 年 50100k 甚大型1001000 人45 年 1m 極大型20005000 人510 年 1m10m 微型1 人14 周 0.5k 3. 按軟件的工作方式劃分: 1) 實時處理軟件:在事件或數(shù)據(jù)產(chǎn)生時,立即予以處理,并及時 反饋信號。 2) 分時軟件:允許每個聯(lián)機用戶同時使用計算機。 3) 交互時軟件:能實現(xiàn)人通信的軟件。 4) 批處理軟件:把一組輸入作業(yè)或一批數(shù)據(jù)以成批處理的方式一 次運行,按順序逐個處理完的軟件。 4. 按軟件服務
7、對象的范圍劃分: 1) 項目軟件 2) 產(chǎn)品軟件 1.2軟件危機 一 軟件危機: 指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。 1. 軟件危機包含的問題: 1) 如何開發(fā)軟件,以滿足對軟件日益增長的需求。 (提高生產(chǎn)率) 2) 如何維護數(shù)量不斷膨脹的已有軟件 2. 軟件危機的表現(xiàn)形式: 1) 對軟件開發(fā)的成本和進度的估計常常不準確。 導致:成本提高,工程延期,影響信譽。 權益之計:損害軟件質(zhì)量,又會引起用戶不滿。 2) 用戶對“以完成”的軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。 原因:對用戶需求不確切,缺少溝通,倉促上陣,閉門造車。 導致:不符合用戶要求。 3) 軟件產(chǎn)品質(zhì)量往往靠不住。 原
8、因:軟件可靠性和質(zhì)量保證未認真執(zhí)行。 導致:軟件質(zhì)量問題。 4) 軟件常常是不可維護的。 原因:程序結構固定、死板、變更困難、錯誤、難以改正,無 法增加新的功能和適應新的環(huán)境。 5) 軟件通常沒有適當?shù)奈臋n資料。 項目負責人:用以控制整體狀態(tài),把握工程進度; 開發(fā)者:用以相互交流; 維護人員:維護的依據(jù)。 6) 軟件成本在計算機系統(tǒng)中成本所占比例率上升。 微電子技術的進步和自動化程度的不斷提高,導致硬件成本 下降; 軟件需要手工勞動,且大規(guī)模和數(shù)量不斷的擴大,導致軟件 成本上升。 7) 軟件開發(fā)生產(chǎn)率提高的速度,遠遠跟不上計算機普及、深入的 趁勢。 “供不應求” ,無法充分利用硬件。 二 軟件
9、危機產(chǎn)生的原因: 1. 與軟件自身的特點有關: 邏輯實體、手工開發(fā)、復雜度高、成本昂貴。 2. 與開發(fā)、維護方法不正確有關: 忽視用戶需求,輕視軟件維護。 三 解決軟件危機的途徑: 1. 技術措施:方法和工具 2. 組織管理措施:從管理角度進行審查、控制。 軟件工程正是從技術和管理兩方面研究如何更好地開發(fā)和維護計算機軟 件的一門新興學科。 1.3軟件工程 一 軟件工程: 是采用工程的概念、原理、技術和方法來指導軟件開發(fā)和維護 的工程學科。 1. 軟件工程的基本原理:(七條) 是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的原理的最小的完備的集合。 1) 用分階段的生命周期計劃嚴格管理。 2) 堅持進行階段評審。
10、 進行相應的質(zhì)量保證、盡早發(fā)現(xiàn)錯誤。 3) 實行嚴格的產(chǎn)品控制。 實行基準配置(給過階段評審后的軟件配置成分,包括文檔、 程序等)管理,涉及對基準配置的參數(shù),必須按嚴格規(guī)程審批。 4) 采用現(xiàn)代的程序設計技術。 如:結構化分析與設計、面向?qū)ο蟮姆治雠c設計。 5) 結果應能清楚地審查。 規(guī)定開發(fā)組織的責任和產(chǎn)品標準,提高軟件開發(fā)過程的可見性。 6) 開發(fā)小組的人員應該少而精。 開發(fā)小組人員的素質(zhì)和數(shù)量是影響產(chǎn)品質(zhì)量和開發(fā)效率的重要 因素。 7) 承認不斷改進軟件工程實踐的必要性。 積極采納新技術,不斷總結經(jīng)驗。 2. 軟件工程的三要素:方法、工具和過程。 1) 方法:“如何做” ,常采用某種特殊
11、的語言或圖形的表達方法及 一套質(zhì)量保證標準。 2) 工具:為方法提供的軟件支撐環(huán)境。 (計算機輔助軟件工程 case) 3) 過程:將方法和工具綜合起來以達到合理、及時地進行計算機 軟件開發(fā)的目的。 3. 軟件工程項目的基本目標: 1) 付出較低的開發(fā)成本。 2) 達到要求的軟件功能。 3) 取得較好的軟件性能。 4) 開發(fā)的軟件易于移植。 5) 需要較低的維護費用。 6) 能按時完成開發(fā)工作,及時交付使用。 4. 軟件工程的原則: 1) 抽象 2) 信息隱藏 3) 模塊化 4) 局部化 5) 一致性 6) 完全性 7) 可驗證性 二 軟件工程的傳統(tǒng)途徑: 1. 軟件工程的傳統(tǒng)途徑:生命周期方
12、法學 從時間角度對軟件開發(fā)和維護的復雜問題進行分解,劃分為若 干個階段,每個階段有相對獨立的任務,是在階段結束時進行技術 審查和管理復審,最后產(chǎn)生相應的文檔資料。 2. 軟件生命周期的劃分: 1) 三個時期: 軟件定義:確定工程總目標:可行性、采用的策略,需求完 成的功能,需要的資源和成本,工程進度表。 包括:問題定義,可行性研究,需求分析。 軟件開發(fā):具體設計和實現(xiàn)。 包括:概要設計、詳細設計(系統(tǒng)設計) ,編碼 和單元測試、綜合測試(系統(tǒng)實現(xiàn)) 軟件維護:使軟件持久地滿足用戶需要。 改正錯誤,適應新環(huán)境,滿足新需求。 2) 八個階段: 問題定義:“要解決的問題是什么?” 提出關于問題性質(zhì)、
13、工程目標和規(guī)模的全面報告。 可行性研究:“對上一個階段所確定的問題有行的通解決辦 法嗎?” 研究問題的范圍,進行成本/效率分析,探索問題 是否值得解和如何解。 需求分析:“為了解決問題,目標系統(tǒng)必須做到什么?” 確定目標系統(tǒng)所應具備的功能,建立系統(tǒng)邏輯模 型(數(shù)據(jù)流圖、數(shù)據(jù)字典、簡要算法) 概要設計:概括地談,應該如何解決問題 提出幾種設計方案:低成本,中等成本,高成本 (“十全十美” ) ,確定解決系統(tǒng)的方案和目標系 統(tǒng)需要那些程序,設計軟件的結構,確定程序模 塊及模塊間關系(層次圖或結構圖) 。 詳細設計:應該怎樣具體地實現(xiàn)系統(tǒng) 把解決具體化,設計出程序的詳細規(guī)格說明 (hipo 圖或 p
14、dl 語言) 編碼和單元測試:編寫程序模塊的實現(xiàn)代碼,并對其進行測 試。 綜合測試:通過各種類型的測試使軟件達到預定要求。 集成測試:根據(jù)設計的軟件結構,將單元模塊按某種策 略裝配起來進行聯(lián)合測試。 驗收測試:由用戶根據(jù)需求規(guī)格說明書對目標系統(tǒng)進行 整體驗收。 軟件維護:通過各種必要的維護活動使系統(tǒng)持久滿足用戶需 要。 改正性維護(21%) 適應性維護(25%) 完善性維護(50%) 預防性維護(4%) 3) 目的和實質(zhì): 控制開發(fā)工作的復雜性,通過有限的確定步驟,把用戶需 求從抽象的邏輯概念轉(zhuǎn)化為具體的物理實現(xiàn)。 3. 軟件生存期模型:瀑布模型,演化模型,螺旋模型,噴泉模型,智 能模型。 1
15、) 瀑布模型:系統(tǒng)的生命周期方法學用瀑布模型來進行模擬。 各階段間具有順序性和依賴性 前階段結束后階段開始。 前階段輸出文檔后階段輸入文檔。 推遲實現(xiàn)的觀點:設置系統(tǒng)分析與設計、推遲物理實現(xiàn)。 質(zhì)量保證的觀點: 每個階段必須完成規(guī)定的文檔 每個階段結束前要對文檔評審,以便盡早發(fā)現(xiàn)問題,改 正錯誤。 2) 演化模型:(原型模型) 能夠克服瀑布模型的缺點、適當?shù)臏p少由于軟件需求不明確而 給開發(fā)工作帶來的風險。 3) 螺旋模型: 將瀑布模型與演化模型結合起來,并且加入兩種模型都忽略了 的風險分析,以彌補兩者的不足。 螺旋模型沿著螺旋線旋轉(zhuǎn),在笛卡兒坐標的四個象限上分別表 達四個方面的活動: 制定計劃
16、:確定軟件目標,選定實施方案,弄清項目開發(fā)的 限制條件。 風險分析:分析所選方案,考慮如何識別和取消風險。 實施工程:實施軟件開發(fā)。 客戶評估:評價開發(fā)工作,提出修正意見。 4) 噴泉模型: “噴泉”一詞體現(xiàn)了迭代和無間隙特性。系統(tǒng)某個部分常常 重復工作多次,相關功能在每次迭代中隨之加入演進的系統(tǒng), 無間隙是指在開發(fā)活動,即分析、設計和編碼之間不存在明 顯的邊界。 支持軟件復用,支持面向?qū)ο蟮拈_發(fā)方法。 5) 智能模型:基于知識的軟件開發(fā)模型 智能模型綜合了其他模型,并把專家系統(tǒng)結合在一起。該模型 應用于基于規(guī)則的系統(tǒng),采用規(guī)約和推理機制,幫助軟件人員 完成開發(fā)工作,并使維護在系統(tǒng)規(guī)格說明一級
17、完成。 三 技術審查和管理復審: 1. 技術審查: 保證軟件質(zhì)量,控制錯誤的積累和放大,以降低軟件成本。 技術審查的標準和方法:從前導和后續(xù),兩個階段進行考慮。 前導:提出解法。 后續(xù):實現(xiàn)解法。 步驟: 準備 簡要介紹情況 閱讀被審查文檔 開審查會 返工 復查 2. 管理復審: 對工程項目的成本、經(jīng)費、投資回收前景,項目進度等經(jīng)濟因 素,從管理角度進行審查。 1.4小結 第二章第二章系統(tǒng)分析系統(tǒng)分析 2.1系統(tǒng)分析(項目計劃) 一 兩個階段: 問題定義 可行性研究 二 目標: 1. 識別用戶要求 2. 評價系統(tǒng)的可行性 3. 進行經(jīng)濟分析和技術分析 4. 把功能分配給硬件、軟件、人、數(shù)據(jù)庫和
18、其它系統(tǒng)元素 5. 建立成本和進度限制 6. 生成系統(tǒng)規(guī)格說明,形成所有后續(xù)工程的基礎 2.2問題定義 一 目的: 弄清用戶需要計算機解決的問題根本所在,以及項目所需的經(jīng) 費和資源的文檔。 二 主要任務: 是在向用戶調(diào)查的基礎上,編寫一個叫做系統(tǒng)目標與范圍說 明書的文檔。這個說明經(jīng)用戶同意后,就作為下一步可行性分 析的依據(jù)。 三 文檔:系統(tǒng)目標與范圍說明書 1. 項目名稱 2. 問題說明:當前工作中存在的問題 3. 項目目標:用戶對新系統(tǒng)的目標 4. 項目范圍:指出解決這一項目所需的投資范圍 5. 初步想法:對系統(tǒng)功能提出一些初步設想 6. 可行性研究計劃:對可行性研究的時間、費用進行估算 2
19、.3可行性研究 一 可行性研究 1. 目的: 用最少的代價,在盡可能短的時間內(nèi)弄清所定義的項目是不是 可能實現(xiàn)和值得進行。 (不是解決問題,而是確定問題是否可能解 決和值得去解) 2. 實質(zhì): 是進行一次大大簡化了的系統(tǒng)分析和設計的過程,即在較高層 次上以較抽象的方式進行的系統(tǒng)分析和設計的過程。 3. 研究問題解法的可行性: 技術可行性:使用現(xiàn)有技術能實現(xiàn)這個系統(tǒng)嗎? 經(jīng)濟可行性:這個系統(tǒng)的經(jīng)濟效益能超過它的開發(fā)成本嗎? 操作可行性:系統(tǒng)的操作方式在這個用戶組織內(nèi)行得通嗎? 4. 根本任務:對以后的行動方針提出建議 5. 步驟: 1) 復查系統(tǒng)規(guī)模和目標 改正含糊或不正確的敘述,清晰的描述目標
20、系統(tǒng)的一切限制和 約束,確保正在解決的問題,確實是要求解決的問題。 2) 研究目前正在使用的系統(tǒng) 了解現(xiàn)有系統(tǒng)的功能,閱讀文檔資料和使用手冊,確定目標系 統(tǒng)必須完成的基本功能,并解決現(xiàn)有系統(tǒng)中存在的問題。 3) 導出新系統(tǒng)的高層邏輯模型 設計過程:現(xiàn)有物理系統(tǒng)現(xiàn)有系統(tǒng)邏輯模型目標系統(tǒng)邏 輯模型新物理系統(tǒng) 4) 重新定義問題 重新復查問題定義,工程規(guī)模和目標 5) 導出和評價供選擇的解法 技術可行性,經(jīng)濟可行性,操作可行性。 6) 推薦行動方針 是否值得開發(fā),選擇最好的解法,說明理由。 7) 草擬開發(fā)計劃 開發(fā)計劃:工程進度表,開發(fā)人員,各種資源,使用時間,系 統(tǒng)生命周期各階段成本。 8) 書寫
21、文檔并提交審查 二 成本/效益分析: 通過估計開發(fā)成本,運行費用和經(jīng)濟效益,從而達到從經(jīng)濟角 度分析開發(fā)一個特定的新系統(tǒng)是否劃算,幫助使用部門負責人正確 的做出是否投資這項工程開發(fā)的決定。 1. 成本估計: 軟件開發(fā)成本主要表現(xiàn)為人力消耗: 人力消耗平均工資開發(fā)費用 成本估計技術: 代碼行技術:源代碼行數(shù)每行代碼平均成本開發(fā)成本 任務分解技術:按開發(fā)階段劃分任務 (每個相對獨立的開發(fā)任務的)成本累加和=開發(fā)成本 自動估計成本技術:軟件工具。 2. 運行費用: 系統(tǒng)操作費用(操作員人數(shù),工作時間,消耗的物資等) 維護費用。 3. 經(jīng)濟效益: 因使用新系統(tǒng)增加的收入 可以節(jié)省的運行費用 4. 度量
22、效益的方法: 1) 貨幣的時間價值: 設年利率為 i i,現(xiàn)已存入 p p 元,則 n n 年后所得: f fp*(1p*(1i)ni)n,即為 p p 元錢在 n n 年后的價值。反之,若 n n 年后 能收入 f f 元,則其在現(xiàn)在的價值為:p pf f(1(1i)i)n n。 2) 投資回收期: 是使累計的經(jīng)濟效益等于最初的投資所需要的時間,是衡 量一個開發(fā)工程價值的經(jīng)濟指標。投資回收期越短,就能越快 獲得利潤,所以工程就越值得投資。 3) 純收入: 是在整個生存期之內(nèi)系統(tǒng)的累計經(jīng)濟效益(折合成現(xiàn)在植) 與投資之差。 4) 投資回收率: 設 p p 為現(xiàn)在的投資的投資額,fifi 為第
23、i i 年底的效益 (i i1 1,2 2,n n) ,n n 為系統(tǒng)的使用壽命,j j 為投資回收率。 則 (p(1(p(1j)j)f1)(1f1)(1j)j)f2)(1f2)(1j)j)fnfn0 0 即 p pf1f1(1(1j)j)f2f2(1(1j)j)2 2fnfn(1(1j)j)n n。 三 技術分析: 評價系統(tǒng)概念的技術價值,同時收集有關性能,可靠性,可維 護性及生產(chǎn)率方面的信息。 1. 目的: 對系統(tǒng)的技術可行性進行評估,指明為完成系統(tǒng)的功能和性能 需要什么技術?需要哪些新材料、方法、算法或者過程?有什么開 發(fā)風險?這些技術問題對成本的影響如何? 2. 方法: 模型化方法(數(shù)
24、學模型、物理模型) 優(yōu)化技術 概率和統(tǒng)計 排隊論 控制論等。 四 系統(tǒng)結構的模型化:系統(tǒng)流程圖 1. 系統(tǒng)流程圖: 是用來描述系統(tǒng)物理模型的一種傳統(tǒng)工具,基本思想是用圖形 符號、黑盒子形式描繪系統(tǒng)里面的每個部件(程序、文件、數(shù)據(jù)庫、 表格、人工過程等) ,它所表達的是信息在系統(tǒng)各部件之間的流動 情況,而不是對信息進行加工處理的控制過程。 2. 描述符號:(書:p25) 1) 基本符號:(如表 2.1) 符號名稱說明 處理能改變數(shù)據(jù)值或數(shù)據(jù)位置的加工或部件,例如: 程序、處理機、人工加工等 輸入/輸出表示輸入或輸出(或既輸入又輸出) ,是一個 廣義的不指明具體設備的符號 連接指出轉(zhuǎn)到圖的另一部分
25、或從圖的另一部分轉(zhuǎn)來, 通常在同一頁上 換頁連接指出轉(zhuǎn)到另一頁圖上或由另一頁圖轉(zhuǎn)來 數(shù)據(jù)流用來連接其他符號,指明數(shù)據(jù)流動方向 表表 2.12.1 2) 系統(tǒng)符號:(如表 2.2) 符號名稱說明 穿孔卡片表示穿孔卡片輸入或輸出,也可表示一個穿孔 卡片文件 文檔通常表示打印輸出,也可表示用打印終端輸入 數(shù)據(jù) 磁帶磁帶輸入/輸出,或表示一個磁帶文件 聯(lián)機存儲表示任何種類的聯(lián)機存儲,包括磁盤、磁鼓、 軟盤和海量存儲器件等 磁盤磁盤輸入/輸出,也可表示存儲在磁盤上的文 件或數(shù)據(jù)庫 磁鼓磁鼓輸入/輸出,也可表示存儲在磁鼓上的文 件或數(shù)據(jù)庫 顯示crt 終端或類似的顯示部件,可用于輸入或輸 出,也可既輸入又
26、輸出 人工輸入人工輸入數(shù)據(jù)的脫機處理,例如:填寫表格等 人工操作人工完成的處理,例如:會計在工資支票上簽 名 輔助操作使用設備進行的脫機操作 通信鏈路通過遠程通信線路或鏈路傳送數(shù)據(jù) 表表 2.22.2 3. 實例:(書:p25-26) 五 文檔: 1. 可行性分析報告: 1) 系統(tǒng)概述: 當前現(xiàn)有系統(tǒng)分析:系統(tǒng)描述及存在問題 目標系統(tǒng)分析:系統(tǒng)功能和性能描述。 (物理模型:系統(tǒng)流 程圖) 當前系統(tǒng)與目標系統(tǒng)比較:目標系統(tǒng)的優(yōu)越性。 2) 可行性分析: 技術可行性 經(jīng)濟可行性 操作可行性。 3) 結論意見: 可著手組織開發(fā) 須待若干條件(如資源、人力、設備等)具備后才能開發(fā) 需對開發(fā)目標進行修改
27、 不能進行或不必進行(如技術不成熟、經(jīng)濟上不合算等) 其它 2. 項目開發(fā)計劃: 1) 系統(tǒng)概述: 包括項目目標,主要功能,系統(tǒng)特點,以及關于開發(fā)工作的安 排。 2) 系統(tǒng)資源: 包括開發(fā)和運行該軟件系統(tǒng)所需要的各種資源。如:硬件、軟 件、人員、組織、機構等。 3) 費用預算:分階段的人員費用,機時費用及其它費用。 4) 進度安排:各階段起止時間,完成文檔及驗證方式。 5) 要交付的產(chǎn)品清單 2.4小結 2.5補充實例 一 庫存清單系統(tǒng): 1. 系統(tǒng)說明: 某裝配廠有一座存放零件的倉庫,倉庫中現(xiàn)有的各種零件的數(shù) 量以及每種零件的庫存量臨界值等記錄在庫存清單主文件中。當倉 庫中零件數(shù)量有變化時,
28、應該及時修改庫存清單主文件,如果那種 零件的庫存量少于它的庫存量臨界值,則應該報告給采購部門以便 訂貨,規(guī)定每天向采購部門送一次訂貨報告。 該裝配廠使用一臺小型計算機處理更新庫存清單主文件和產(chǎn)生 定貨報告的任務。零件庫存量的每一次變化稱為一個事務,由放在 倉庫中的 crt 終端輸入到計算機中;系統(tǒng)中的庫存清單程序?qū)κ聞?進行處理,更新存儲在磁盤上的庫存清單主文件,并且把必要的訂 貨信息寫在磁帶上。最后,每天由報告生成程序讀一次磁帶,并且 打印出定貨報告。 2. 系統(tǒng)流程圖:(如圖 2.5.1 所示) 庫存清單程序 事務 庫存清單 主文件 定貨 信息 報告生成程序 定貨報告 圖2.5.1 庫存清
29、單系統(tǒng)的系統(tǒng)流程圖 二 教材購銷系統(tǒng): 1. 系統(tǒng)說明: 在教材的銷售過程中,首先學生拿著購書申請到會計處審查并 開具購書發(fā)票,然后到出納處交款,并開具領書單,學生拿著領書 單到書庫領書;在開具購書發(fā)票的過程中,若教材存量不夠,則需 要進行缺書統(tǒng)計,然后書庫根據(jù)缺書情況去采購缺書,并通知學生 補購教材。 2. 系統(tǒng)流程圖:(如圖 2.5.2 所示) 審查并開發(fā)票 購書單 各班學生 用書表 發(fā) 票 圖2.5.2 教材購銷系統(tǒng)的系統(tǒng)流程圖 教材 存量表 學 生 缺書登記 補購通知 缺書單發(fā)票收訖 領書單 書 庫 缺書統(tǒng)計 開領書單 采購 缺書 發(fā) 書 收書費 第三章第三章需求分析需求分析 3.1需
30、求分析概述 一 需求分析的任務: 1. 基本任務:回答“系統(tǒng)必須做什么”?確定目標系統(tǒng)功能和性能。 2. 具體任務: 1) 確定對系統(tǒng)的綜合要求:功能要求;性能要求;運行要求;將 來可能提出的要求。 2) 分析系統(tǒng)的數(shù)據(jù)要求:e-r 圖(概念模型) 。 3) 導出系統(tǒng)的邏輯模型:數(shù)據(jù)流圖,數(shù)據(jù)字典,加工處理說明書 等。 4) 修正系統(tǒng)開發(fā)計劃。 5) 開發(fā)原型系統(tǒng):使用戶對目標系統(tǒng)有一個更直接、更具體的概 念,從而能更準確提出用戶需求。 (關鍵的困難在于成本) 二 需求分析的過程: 1. 問題識別:確定軟件的需求。 1) 功能 2) 性能 3) 環(huán)境 4) 可靠性 5) 安全保密 6) 界面
31、7) 資源 8) 成本進度 9) 目標 2. 分析與綜合: 從數(shù)據(jù)流和數(shù)據(jù)結構出發(fā),逐步細化軟件功能,找出各元素之 間的聯(lián)系,接口特性和設計上的限制,給出目標系統(tǒng)的詳細邏輯模 型。 3. 編制需求分析文檔:需求規(guī)格說明書 1) 任務概述:系統(tǒng)目標,運行環(huán)境,條件與限制 2) 數(shù)據(jù)描述: 概念模型:e-r 圖 邏輯模型:數(shù)據(jù)流圖 數(shù)據(jù)定義:數(shù)據(jù)字典,加工說明 數(shù)據(jù)庫描述:名稱和類型 3) 功能描述:軟件功能要求 4) 性能描述:軟件性能要求(處理速度、響應時間、安全限制等) 。 5) 運行描述:用戶界面、硬件接口、軟件接口、故障處理等。 6) 質(zhì)量保證:闡明軟件在交付使用前需要進行的功能測試和性
32、能 測試,并且規(guī)定源程序和文檔遵守的各種標準。 4. 技術審查和管理復審。 三 需求分析的原則: 1. 必須能夠表達和理解問題的數(shù)據(jù)域和功能域 1) 數(shù)據(jù)域:數(shù)據(jù)流,數(shù)據(jù)內(nèi)容和數(shù)據(jù)結構。 2) 功能域:加工變換。 2. 必須按自頂向下,逐層分解的方式對問題進行分解和不斷細化。 3. 要給出系統(tǒng)的邏輯視圖和物理視圖。 1) 邏輯視圖:給出軟件要達到的功能和要處理的數(shù)據(jù)之間的關系。 2) 物理視圖:給出處理功能和數(shù)據(jù)結構的實際表示形式。 四 需求分析的方法: 1. 需求分析方法: 是由對軟件的數(shù)據(jù)域和功能域的系統(tǒng)分析過程及其表示方法組成。 包括:面向數(shù)據(jù)流,面向數(shù)據(jù)結構。 2. 不同的需求分析方法
33、具有的共性: 1) 支持數(shù)據(jù)域分析的機制: 所有方法都直接或間接地涉及到數(shù)據(jù)流,數(shù)據(jù)內(nèi)容或數(shù)據(jù)結構 等數(shù)據(jù)域的屬性。 2) 功能表示的方法: 一般用數(shù)據(jù)變換或加工來表示。 3) 接口的定義: 是數(shù)據(jù)表示和功能表示的直接產(chǎn)物。 (功能間的接口數(shù)據(jù)流) 4) 問題分解的機制以及對抽象的支持: 在不同抽象層次上表示數(shù)據(jù)域和功能域,以逐層細化的手段建 立分層結構。 5) 邏輯視圖和物理視圖: 6) 系統(tǒng)抽象模型: 是對現(xiàn)實世界中存在的有關實體和活動的抽象和精化。 3.2結構化分析方法 一 結構化分析方法: 是面向數(shù)據(jù)流進行需求分析的方法,是用抽象模型的概念,按 軟件內(nèi)部數(shù)據(jù)傳遞、變換的關系,自頂向下逐
34、層分解,直到找到滿 足功能要求的所有可實現(xiàn)的軟件為止。 二 數(shù)據(jù)流圖: 1. 數(shù)據(jù)流圖(dfd): 是軟件系統(tǒng)邏輯模型的一種圖形表示,是從數(shù)據(jù)傳遞和加工的 角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程的工 具。 2. 組成符號:(書:p24) 1) 基本符號:(如表 3.1) 符號說明 數(shù)據(jù)的源點/終點 變換數(shù)據(jù)的處理 數(shù)據(jù)存儲 數(shù)據(jù)流 表表 3.13.1 2) 附加符號:(如表 3.2) 符號說明 t a a b b c c * 數(shù)據(jù) a 和數(shù)據(jù) b 同時輸入才能變換成數(shù)據(jù) c t b b c c a a * 數(shù)據(jù) a 變換成 b 和 c t a a b b c c + 數(shù)據(jù) a
35、或 b,或 a 和 b 同時輸入變換成 c t b b c c a a + 數(shù)據(jù) a 變換成 b 或 c,或 b 和 c t a a b b c c 只有數(shù)據(jù) a 或只有數(shù)據(jù) b(但不能 a、b 同時) 輸入時變換成 c t b b c c a a 數(shù)據(jù) a 變換成 b 或 c,但不能變換成 b 和 c 表表 3.23.2 3. 性質(zhì): 1) 數(shù)據(jù)流圖中的箭頭僅能表示在系統(tǒng)中流動的數(shù)據(jù),而不是物質(zhì) 流 2) 數(shù)據(jù)流圖與程序流程圖不同,它不能表示程序的控制結構。 (如: 選擇或循環(huán)) 3) 數(shù)據(jù)流圖表現(xiàn)的范圍具有很大的靈活性,可以畫分層 dfd 4. 分層 dfd:由頂向下,逐層分解,逐步細化。
36、 1) 優(yōu)點: 便于實現(xiàn):逐層細化,有利于控制問題的復雜度。 便于使用:使用戶中的不同業(yè)務人員只選擇與自身有關的圖 形,不必閱讀全圖。 2) 畫分層 dfd 的指導原則: 第一層 dfd 應當是基本系統(tǒng)模型 注意父圖和子圖的平衡,維護信息的連續(xù)性 區(qū)分局部文件和局部外部項 掌握分解的速度,上快下慢 遵守加工編號原則 5. 舉例:(書:p2527) 三 數(shù)據(jù)字典: 1. 數(shù)據(jù)字典: 是關于數(shù)據(jù)的信息的集合,是對 dfd 中的所有元素定義的集合。 2. 組成符號:(如表 3.3) 符號含義說明 被定義為 與例:x=a+b,表示 x 由 a 和 b 組成 ,或|或例:x=a,b,x=a|b,表示 x
37、 由 a 或由 b 組成 重復例:x=a,表示 x 由 0 個或多個 a 組成 mn 重復例:x=3a8,表示 x 中至少出現(xiàn) 3 次 a,至多出現(xiàn) 8 次 a () 可選例:x=(a),表示 a 可在 x 中出現(xiàn), 也可以不出現(xiàn) “” 基本數(shù)據(jù)元素例:x=“a” ,表示 x 為取值為 a 的 數(shù)據(jù)元素 連接符例:x=1.9,表示 x 可取 1 到 9 中 的任一值 表表 3.33.3 3. 內(nèi)容:名稱,別名,編號,分類,描述,定義,位置等 1) 數(shù)據(jù)流的描述: 說明:簡要介紹作用,即它產(chǎn)生的原因和結果 來源:來自何方 去向:去向何處 組成:數(shù)據(jù)結構 備注: 2) 數(shù)據(jù)元素(數(shù)據(jù)項)的描述:
38、數(shù)據(jù)元素名:數(shù)據(jù)元素名: 類型:數(shù)值,文字, 長度: 取值范圍: 相關的數(shù)據(jù)元素及數(shù)據(jù)結構: 備注: 3) 數(shù)據(jù)存儲(數(shù)據(jù)文件)的描述: 數(shù)據(jù)文件名:數(shù)據(jù)文件名: 簡述:存放的是什么數(shù)據(jù) 組成:數(shù)據(jù)結構 存儲方式:排列順序,關鍵碼等 備注: 4) 數(shù)據(jù)源(終)點描述: 名稱:外部實體名名稱:外部實體名 簡要描述:什么外部實體 有關數(shù)據(jù)流: 四 加工說明: 1. 加工說明: 是對 dfd 中的加工所做的描述,包括:輸入數(shù)據(jù)、加工邏輯、 輸出數(shù)據(jù)等。 2. 內(nèi)容: 加工名稱 加工編號 輸入數(shù)據(jù)流 輸出數(shù)據(jù)流 加工邏輯 執(zhí)行次數(shù) 3. 加工邏輯: 闡明把輸入數(shù)據(jù)轉(zhuǎn)換為輸出數(shù)據(jù)的策略,是加工說明的主體
39、, 在需求分析階段,僅需要指出要加工“做什么” 。而不是“怎樣去 做” ,描述方法:結構話語言,判定表,判定樹。 1) 結構化語言(pdl): 又稱過程設計語言,偽碼;它是一種介于自然語言與程序 設計語言之間的語言,即具有結構化程序的清晰易讀的優(yōu)點, 又具有自然語言的靈活性,不受程序設計語言那樣嚴格的語法 約束。 2) 判定表: 采用表格化的形式,適于表達含有復雜判斷的加工邏輯。 實例:(書:p86) 3) 判定樹: 是判定表的圖形表示,其適用場合與判定表相同。 實例:(書:p87) 3.3驗證軟件需求 一致性:所有需求必須一致,不能互相矛盾。 完整性:需求必須完整,包含用戶需要的所有功能和性
40、能。 現(xiàn)實性:指定需求用現(xiàn)有的軟、硬件技術基本上可以實現(xiàn)。 有效性:必須證明需求是正確有效的,確實能解決用戶面對的問題。 3.4小結 3.5補充知識 概念模型 1. 數(shù)據(jù)模型的表示 現(xiàn)實世界 用戶 認識 抽象 信息世界 概念模型 機器世界 支持的數(shù)據(jù)模型 圖3-5 數(shù)據(jù)模型的表示 2. 概念模型的表示方法: 實體聯(lián)系方法(entity-relationship):e-r 圖 3. e-r 圖: 1) 主要概念: 實體:客觀存在并相互區(qū)分的事物 屬性:實體所具有的某一特性 聯(lián)系:現(xiàn)實世界的事物之間的聯(lián)系在信息世界的反映 一對一聯(lián)系:(1:1) 一對多聯(lián)系:(1:n) 多對多聯(lián)系:(m:n) 2)
41、 符號表示: 用長方形表示實體型,在框內(nèi)寫上實體名。 用橢圓形表示實體的屬性,并用無向邊把實體與其屬性 連接起來。 用菱形表示實體間的聯(lián)系,菱形框內(nèi)寫上聯(lián)系名。用無 向邊把菱形分別與有關實體相連接,在無向邊旁標上聯(lián) 系的類型。若實體之間的聯(lián)系也具有屬性,則把屬性和 菱形也用無向邊連接上。 3) 實體聯(lián)系類型符號表示: 圖3-6 實體聯(lián)系的表示 實體型a 聯(lián)系名 實體型b 1 1 1 1 實體型a 聯(lián)系名 實體型b 1 1 n n 實體型a 聯(lián)系名 實體型b m m n n 課程 講授 教員 1 1 m m 參考書 n n 供應商 供應 項目 m m n n 零件 p p 4) 特點: 兩個實體
42、型間允許多種聯(lián)系 多個實體型間可以有一個聯(lián)系 一個實體型可以和自身聯(lián)系 e-r 圖與具體的 dbms 無關,是概念模型中最常用的一種 5) 舉例:用 e-r 圖表示某個工廠的物資管理的概念模型 涉及的實體: 倉庫:倉庫號,倉庫面積,電話號碼 零件:零件號,名稱,規(guī)格,單價,描述 供應商:供應商號,名稱,地址,電話號碼,帳號 項目:項目號,預算,開工日期 職工:職工號,姓名,年齡,職稱 實體間的聯(lián)系: 一個倉庫可以存放多種零件,一種零件可以存放在多 個倉庫中 一個倉庫有多個職工當倉庫保管員,一個職工只能在 一個倉庫工作 職工之間具有領導和被領導關系,即倉庫主任領導若 干保管員 e-r 圖表示:
43、供應商倉庫職工 項目零件 供應庫存 工作 領導 m m n n p p m m n n 1 1n n 1 1 n n 供應量庫存量 職稱 供應商號 姓名 地址帳號 電話號碼 倉庫號面積電話號碼職工號姓名年齡 項目號預算開工日期 零件號名稱規(guī)格單價 描述 圖3-7 某工廠物資管理e-r圖 3.6補充實例 一 庫存清單系統(tǒng): 1. 系統(tǒng)說明: 某裝配廠有一座存放零件的倉庫,倉庫中現(xiàn)有的各種零件的數(shù) 量以及每種零件的庫存量臨界值等記錄在庫存清單主文件中。當倉 庫中零件數(shù)量有變化時,應該及時修改庫存清單主文件,如果那種 零件的庫存量少于它的庫存量臨界值,則應該報告給采購部門以便 訂貨,規(guī)定每天向采購部
44、門送一次訂貨報告。 該裝配廠使用一臺小型計算機處理更新庫存清單主文件和產(chǎn)生 定貨報告的任務。零件庫存量的每一次變化稱為一個事務,由放在 倉庫中的 crt 終端輸入到計算機中;系統(tǒng)中的庫存清單程序?qū)κ聞?進行處理,更新存儲在磁盤上的庫存清單主文件,并且把必要的訂 貨信息寫在磁帶上。最后,每天由報告生成程序讀一次磁帶,并且 打印出定貨報告。 2. 數(shù)據(jù)流圖: 1) 頂層數(shù)據(jù)流圖 倉 庫 管 理 員 庫存清單 系統(tǒng) 采 購 員 頂層數(shù)據(jù)流圖-庫存清單系統(tǒng) 事務定貨報告 2) 第一層數(shù)據(jù)流圖 倉 庫 管 理 員 采 購 員 定定貨貨報報表表 第一層數(shù)據(jù)流圖-庫存清單系統(tǒng)子系統(tǒng)劃分 1 處理事務 2 產(chǎn)
45、生報表 f1庫存清單 事事務務 f2定貨信息 3) 第二層數(shù)據(jù)流圖 倉 庫 管 理 員 采 購 員 定定貨貨 報報表表 第二層數(shù)據(jù)流圖-分解后的庫存清單系統(tǒng) 1.3 處理定貨 2 產(chǎn)生報表 f1庫存清單 事事務務 f2定貨信息 1.1 接收事務 1.2 更新 庫存清單 事事務務庫庫存存 信信息息 二 教材購銷系統(tǒng): 1. 系統(tǒng)說明: 在教材的銷售過程中,首先學生拿著購書申請到會計處審查并 開具購書發(fā)票,然后到出納處交款,并開具領書單,學生拿著領書 單到書庫領書;在開具購書發(fā)票的過程中,若教材存量不夠,則需 要進行缺書統(tǒng)計,然后書庫根據(jù)缺書情況去采購缺書,并通知學生 補購教材。 2. 數(shù)據(jù)流圖:
46、 1) 頂層數(shù)據(jù)流圖: 學 生 教材 購銷系統(tǒng) 書 庫 管 理 員 頂層數(shù)據(jù)流圖-教材購銷系統(tǒng) 購書單 領領書書單單 缺書單 進進書書通通知知 2) 第一層數(shù)據(jù)流圖: 學 生 書 庫 管 理 員 進進書書通通知知 缺缺書書單單 第一層數(shù)據(jù)流圖-教材購銷系統(tǒng)子系統(tǒng)劃分 1 銷售 2 采購 f1教材存量表 購購書書單單 領領書書單單 進進書書通通知知 f2缺書登記表 3) 第二層數(shù)據(jù)流圖: 銷售子系統(tǒng)(1) 學 生 1.1 審查 有效性 1.2 開發(fā)票 1.3 登記并 開領書單 學 生 1.4 登記缺書 1.5 補售教材 補售書單 暫缺書單 有有效效 購購書書單單 f1教材存量表 f2缺書登記表
47、領領書書單單 購購書書單單 無無效效書書單單 發(fā)發(fā)票票 f4售書登記表f3各班學生用書表 第二層數(shù)據(jù)流圖-銷售子系統(tǒng) 采 購 進進書書通通知知 采購子系統(tǒng)(2) 銷 售 2.3 修改 教材庫存 和待購量 學 生 2.2 按出版社 統(tǒng)計缺書 2.1 按書號 匯總?cè)睍?進進書書通通知知 f1教材存量表 f2缺書登記表 進進書書通通知知 f5待購教材表 第二層數(shù)據(jù)流圖-采購子系統(tǒng) 缺書單f6教材一覽表 第四章第四章軟件設計概述軟件設計概述 4.1軟件設計概述 一 軟件設計的任務: 把需求階段所產(chǎn)生的軟件需求說明轉(zhuǎn)換為用適當手段表示的軟 件設計文檔。 “做什么”“怎么做” 。 二 軟件設計劃分兩個階段
48、: 概要設計:確定軟件的結構,即軟件組成,以及各組成成分 (子系統(tǒng)或模塊)之間的相互轉(zhuǎn)換。 詳細設計:確定模塊內(nèi)部算法和數(shù)據(jù)結構,產(chǎn)生描述各模塊程 序的詳細設計文檔。 三 軟件設計的方法:面向數(shù)據(jù)流,面向數(shù)據(jù)結構。 4.2軟件設計的策略 一 模塊化設計: 1. 模塊、模塊化: 模塊:是數(shù)據(jù)說明,可執(zhí)行語句等程序?qū)ο蟮募?。例:過程, 函數(shù),子程序,宏等。 模塊化:是把程序劃分成若干個模塊,每個模塊完成一個子功 能,把這些模塊集中起來組成一個整體,可以完成指定的功能, 滿足問題的要求。 2. 分解:將一個復雜的問題,劃分為幾個較小問題。 1) “將一個復雜的問題分解為許多小問題,可以減少解決問題
49、的 工作量。使原來的問題也就容易解決了。 ” 這是模塊化設計 的依據(jù)。 論證:假設 c(p)是度量對一個問題 p 理解復雜性的函數(shù)。z(p) 是度量為解決問題 p 所需工作量(用時間計算)的函數(shù), 則給定問題 p1,p2,如果 c(p1)c(p2),那么有 z(p1) z(p2),即一個問題越復雜,解決它所需要的工作量就越 大,需要花費更多的時間。 根據(jù)人們解決一般問題的實踐的經(jīng)驗,有下面一條客觀 規(guī)律存在: c(p1p2)c(p1)c(p2) 則可得到:z(p1p2)z(p1)z(p2) 2) “無限分解軟件,最后為了開發(fā)軟件而需要的工作量小的可以 忽略” 不成立。 論證:論證:隨著模塊數(shù)目
50、增加,每個模塊的規(guī)模減少,成本降低。 但相應的設計模塊間的接口成本將增加,使得軟件總成 本呈拋物線形狀,存在最小成本區(qū)。 (如圖所示) 成成 本本 模模塊塊數(shù)數(shù)目目 最小成本區(qū) 軟件總成本 接口成本 成本/模塊 模塊分解論證 3. 信息隱蔽:指每個模塊的實現(xiàn)細節(jié)對于其他模塊來說是隱蔽的,即 模塊中所包含的信息(數(shù)據(jù)與過程) 。應不允許其他不需要這些信 息的模塊使用(即隱蔽起來) 。只有為了完成軟件的總體功能而必 須在模塊間交換的信息。才允許在模塊間進行傳遞。 目的:是軟件的修改或錯誤局限在一個或幾個模塊內(nèi)部,不會涉及 軟件其他部分。 4. 模塊獨立性:模塊具有獨立功能,且和其他模塊之間沒有過多
51、的相 互作用。即每個模塊完成一個相對獨立的特定子功能,且和其他模 塊之間的關系很簡單。是軟件劃分模塊時要遵守的準則,也是判斷 模塊構造是否合理的標準。 1) 度量模塊獨立性的準則:內(nèi)聚、耦合。 內(nèi)聚:是模塊功能強度(即一個模塊內(nèi)部各個元素彼此結合 的緊密程度)的度量。模塊內(nèi)部各元素之間聯(lián)系越緊密,內(nèi) 聚性越強。 耦合:是模塊之間相對獨立性(即互相連接的緊密程度)的 度量。模塊間連接越緊密,聯(lián)系越多,耦合性越強。 模塊的獨立性越高,其塊內(nèi)聯(lián)系越緊密(內(nèi)聚性強) ,塊間 聯(lián)系越弱(耦合性越弱) 2) 內(nèi)聚: 弱 強 偶然內(nèi)聚邏輯內(nèi)聚時間內(nèi)聚過程內(nèi)聚通信內(nèi)聚順序內(nèi)聚功能內(nèi)聚 低 內(nèi) 聚中 內(nèi) 聚高
52、內(nèi) 聚 偶然內(nèi)聚:模塊內(nèi)部各組成成分在功能上是互不相關的。 例:幾個模塊都需要執(zhí)行“讀 a” , “寫 b”等相同的一組操 作,為避免重復書寫,可把這些操作記成一個模塊,供 有關模塊調(diào)用。 邏輯內(nèi)聚:通常由若干個邏輯功能相似的成分組成。 例:一個用于計算機全班學生平均分和最高分的模塊,無論 計算那種分數(shù),都要經(jīng)過讀入全班學生分數(shù)。進行計算、 輸出計算結果等步驟,除了中間計算外均相同。 (兩種邏 輯相似的功能放入同一模塊省去程序中的重復。但卻引 入用作判斷的開關量,增加了塊間耦合) 。 時間內(nèi)聚:模塊所包含的成分是由相同的執(zhí)行時間聯(lián)結在一 起的。 例:初始化模塊中可能包含“為變量賦初值” , “
53、打開某個文 件”等為正式處理做準備的功能。 過程內(nèi)聚:一個模塊內(nèi)部的處理是相關的,是必須按某一特 定次序執(zhí)行。 例:打開文件,讀寫文件,關閉文件。 通信內(nèi)聚:模塊內(nèi)部各個成分都使用同一個輸入數(shù)據(jù)?;蛘?產(chǎn)生同一個輸出數(shù)據(jù)。借共用數(shù)據(jù)聯(lián)系在一起。 例: 順序內(nèi)聚:模塊中各組成成分是順序執(zhí)行的,一個處理框的 輸出是下一處理框的輸入。 例:讀入分數(shù),計算平均分,輸出結果。 功能內(nèi)聚:模塊中的所有成分結合在一起,用于完成一個單 一的功能。 例:對一個數(shù)開平方;求一組數(shù)的最大值;從鍵盤讀入一行 字符等。 3) 耦合: 弱 強 非直接耦合數(shù)據(jù)耦合特征耦合控制耦合外部耦合公共耦合內(nèi)容耦合 弱 耦 合中耦合較
54、 強 耦 合強耦合 非直接耦合:模塊之間沒有直接關系,它們之間的聯(lián)系完全 是通過主模塊的調(diào)用和控制來實現(xiàn)的。 數(shù)據(jù)耦合:模塊間通過簡單變量所組成的參數(shù)表(不是控制 參數(shù),數(shù)據(jù)結構或外部變量)交換數(shù)據(jù)。 特征耦合:模塊間通過數(shù)據(jù)結構所組成的參數(shù)表交換數(shù)據(jù)。 例:房租水電房租用水量用電量(傳遞參數(shù)) 。 控制耦合:一個模塊通過傳遞開關,標志,名稱等控制信息, 明顯地控制選擇另一個模塊功能。 例:計算平均分,最高分。 外部耦合:一組模塊都訪問同一個全局簡單變量。 (不是數(shù) 據(jù)結構,而且不是通過參數(shù)表傳遞的該全局變量的信息) 。 公共耦合:一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境(全局數(shù)據(jù) 結構、共享的通信區(qū)
55、內(nèi)存的公共覆蓋區(qū)等) 。 內(nèi)容耦合:兩個模塊之間發(fā)生以下情形。 (匯編語言中較多, 高級語言中已基本度絕) 。 一個模塊直接訪問另一個模塊的內(nèi)部數(shù)據(jù)。 一個模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部。 兩個模塊有一部分代碼重疊。 一個模塊有多個入口。 4) 為什么說“模塊獨立性是模塊劃分時要遵守的準則” ,即在模塊 劃分時,為什么要強調(diào)模塊獨立性。 論證:假設把一個問題 p 分解為兩個部分 p1 和 p2,如果這兩部 分不互相獨立,用 i1 表示 p1 對 p2 的相互作用因子,i2 表示 p2 對 p1 的相互作用因子,則解決整個問題的實際 工作量為: z(p1i1p1)z(p2i2p2)。 當系統(tǒng)
56、的兩部分之間聯(lián)系很松散,即模塊獨立性很強時, i1,i2 都非常?。?0) , 則有: z(p1i1p1)z(p2i2p2)z(p1)z(p2) 根據(jù)模塊分解的論證,有: z(p)z(p1)z(p2) 則,可得到: z(p) z(p1i1p1)z(p2i2p2) 否則,如果系統(tǒng)的兩部分之間聯(lián)系緊密,即模塊獨立性 很弱時,i1,i2 都很大, 則:z(p) z(p1i1p1)z(p2i2p2)未必成立。 二 自頂向下、逐步細化: 1. 自定向下設計:首先要對所設計的系統(tǒng)有一個全面的理解,然后從 頂層開始連續(xù)地逐層向下分解,直到系統(tǒng)的所有模塊都小到便于掌 握為止。 2. 逐步細化設計:“細化”的實
57、質(zhì),就是分解;而“逐步”則強調(diào)每 一步分解較其前一步增加“少量”的細節(jié),使得相鄰兩步之間只有 微小的變化,從而容易理解和驗證有效性。 4.3概要設計 一 概要設計階段需要完成的工作: 1. 制定規(guī)范:軟件開發(fā)組在設計時應共同遵守的標準。 1) 規(guī)定設計文檔的編制標準(文檔體系、用紙、樣式、記述詳細 程序、圖形畫法等) 。 2) 規(guī)定編碼的信息形式(代碼體系) ,與硬件、操作系統(tǒng)的接口規(guī) 約,命名規(guī)則等。 2. 軟件結構的總體設計:決定軟件的總體結構。 1) 采用某種設計方法,將一個復雜的系統(tǒng)按功能劃分成模塊的層 次結構。 2) 確定每一個模塊的功能,建立與已確定的軟件需求的對應關系。 3) 確
58、定模塊間的調(diào)用關系。 4) 確定模塊間的接口,即模塊間傳遞的信息,設計接口的信息結 構。 5) 評估模塊劃分的質(zhì)量及導出模塊結構的規(guī)則。 3. 數(shù)據(jù)結構的設計:決定文件系統(tǒng)的結構或數(shù)據(jù)庫的模式,子模式以 及數(shù)據(jù)完整性,安全性設計。 1) 確定輸入、輸出文件的詳細的數(shù)據(jù)結構。 2) 模式設計:確定物理數(shù)據(jù)庫結構。 3) 子模式設計:確定用戶使用的數(shù)據(jù)視圖。 4) 數(shù)據(jù)的完整性,安全性設計。 5) 數(shù)據(jù)優(yōu)化:改進模式與子模式,以優(yōu)化數(shù)據(jù)的存取。 4. 編寫文檔:概要設計說明書 1) 引言:編寫目的,背景,參數(shù)資料等。 2) 系統(tǒng)概述:目標,運行環(huán)境,需求概述。 3) 結構設計: 軟件的總體結構。
59、模塊的外部設計:(包括關于各模塊功能,性能及接口的簡 要描述) 。 4) 數(shù)據(jù)結構設計:文件系統(tǒng)結構,數(shù)據(jù)庫模式,子模式,完整性, 安全性,訪問方法,存儲要求等。 5) 初步測試計劃:對測試的策略,方法和步驟提出要求。 5. 技術審查和管理復審。 二 系統(tǒng)結構描述:(hipo 圖) 1. hipo 圖:即 hipo。由一張 hc 圖加一組 ipo 圖組成。 2. hc 圖:(層次圖) 。用于表示軟件的層次結構。 3. ipo 圖:用來描述 hc 圖中的每一個模塊,由輸入、處理和輸出三個 框組成。需要時可增加一個數(shù)據(jù)文件(庫)框。 圖形表示:系統(tǒng)的 ipo 圖,改進的 ipo 圖(如圖所示) 。
60、 輸入處理 輸出 舊的主文件 事務文件 1. 校驗主記錄 2. 校驗事務記錄 3. 更新主記錄 有效的主記錄 有效的事務記錄 更新后的主文件 hipo圖(典型) hipo圖(改進) 系統(tǒng): 模塊: 編號: 作者: 日期: 注釋: 被調(diào)用:調(diào)用: 輸入:輸出: 處理: 局部數(shù)據(jù)元素: 4.4結構化系統(tǒng)設計 一 概述 1. 結構化系統(tǒng)設計(sd):是面向數(shù)據(jù)流的系統(tǒng)設計方法,其要解決 的任務是在需求分析的基礎上,將 dfd 圖“映射”為軟件系統(tǒng)的結 構。 2. 結構化系統(tǒng)設計的步驟:(實施要點:如圖所示) 1) 研究、分析、審查 dfd 圖,必要時可再次進行修改和細化。 2) 根據(jù) dfd 圖來決
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人心理咨詢與輔導服務合同3篇
- 2025年度林業(yè)權屬林權登記與林業(yè)碳匯項目實施合同4篇
- 2025年福建貨運從業(yè)資格證新政
- 七夕節(jié)趣味活動策劃方案
- 二零二五年度高速鐵路鋁合金門窗安全檢測與安裝合同4篇
- 二零二五年度0號柴油環(huán)保油品居間服務合同3篇
- 2025年度個人房產(chǎn)交易過戶手續(xù)辦理協(xié)議3篇
- 二零二五年度土地租賃及經(jīng)營權轉(zhuǎn)讓合同樣本-@-1
- 二零二五年度離婚房產(chǎn)分割與子女醫(yī)療費用承擔合同3篇
- 二零二五年度企業(yè)員工培訓課程版權購買協(xié)議4篇
- 2024年社區(qū)警務規(guī)范考試題庫
- 2024年食用牛脂項目可行性研究報告
- 2024-2030年中國戶外音箱行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 家務分工與責任保證書
- 消防安全隱患等級
- (新版)國民經(jīng)濟行業(yè)分類代碼表(八大行業(yè))
- 北京地鐵13號線
- 2023山東春季高考數(shù)學真題(含答案)
- 為加入燒火佬協(xié)會致辭(7篇)
- 職業(yè)衛(wèi)生法律法規(guī)和標準培訓課件
- 高二下學期英語閱讀提升練習(二)
評論
0/150
提交評論