貴大軟件工程復(fù)習(xí)資料_第1頁
貴大軟件工程復(fù)習(xí)資料_第2頁
貴大軟件工程復(fù)習(xí)資料_第3頁
貴大軟件工程復(fù)習(xí)資料_第4頁
貴大軟件工程復(fù)習(xí)資料_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、軟件工程 復(fù)習(xí)第1章 軟件工程概述什么是計(jì)算機(jī)軟件?l 計(jì)算機(jī)軟件指計(jì)算機(jī)系統(tǒng)中的程序、數(shù)據(jù)及其相關(guān)文檔的集合。l 三要素:軟件=程序+文檔+數(shù)據(jù)l 程序是按照特定順序組織的計(jì)算機(jī)數(shù)據(jù)和指令的集合。l 數(shù)據(jù)是使程序能正常執(zhí)行的數(shù)據(jù)結(jié)構(gòu)。l 文檔是與程序的開發(fā)、維護(hù)和使用有關(guān)的資料。它是為了便于了解程序所需的闡明性資料,文檔一般是給人看的,不一定裝入計(jì)算機(jī)。軟件的主要特點(diǎn)l 軟件是一種邏輯實(shí)體,而不是有形的系統(tǒng)元件,其開發(fā)成本和進(jìn)度難以準(zhǔn)確地估算。l 軟件是被開發(fā)的或被設(shè)計(jì)的,它沒有明顯的制造過程,一旦開發(fā)成功,只需復(fù)制即可,但其維護(hù)的工作量大。l 軟件的使用沒有硬件那樣的機(jī)械磨損和老化問題。軟

2、件的分類l 系統(tǒng)軟件:屬于計(jì)算機(jī)系統(tǒng)中最靠近硬件的一層,其它軟件一般都通過系統(tǒng)軟件發(fā)揮作用,它與具體的應(yīng)用領(lǐng)域無關(guān)。如操作系統(tǒng)、編譯程序等。l 支持軟件:支持軟件的開發(fā)和維護(hù)的軟件。如數(shù)據(jù)庫管理系統(tǒng)、網(wǎng)絡(luò)軟件、軟件開發(fā)環(huán)境等。l 應(yīng)用軟件:特定應(yīng)用領(lǐng)域?qū)S玫能浖?。如?shí)時(shí)軟件、嵌入式軟件、科學(xué)和工程計(jì)算軟件、事務(wù)處理軟件、人工智能軟件等。l 按軟件工作方式劃分:l 實(shí)時(shí)處理軟件l 分時(shí)軟件l 交互式軟件l 批處理軟件l 按軟件服務(wù)對(duì)象的范圍劃分:l 項(xiàng)目軟件l 產(chǎn)品軟件 l 按使用的頻度進(jìn)行劃分:l 一次使用l 頻繁使用l 按軟件失效的影響進(jìn)行劃分:l 高可靠性軟件l 一般可靠性軟件軟件工程定義

3、l B.W.Boehm的定義:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序,以及為開發(fā)、運(yùn)行和維護(hù)這些程序所必須的相關(guān)文件資料。l Fritz Bauer的定義:軟件工程是為了經(jīng)濟(jì)地獲得能夠在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件,而建立和使用的一系列完善的工程化原則。l 1983年美國IEEE軟件工程標(biāo)準(zhǔn)術(shù)語的定義為:軟件工程是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方法,其中“軟件”的定義為:計(jì)算機(jī)程序、方法、規(guī)則、相關(guān)的文檔資料,以及在計(jì)事機(jī)上運(yùn)行時(shí)所必需的數(shù)據(jù)。軟件工程化思想l 把軟件看作是一個(gè)工程產(chǎn)品。l 兩個(gè)方面:l 軟件開發(fā)技術(shù)l 軟件工程管理l 原因:l 缺乏軟件過程控制能力l 能力成熟模型(Ca

4、pability Maturity Model)l 體現(xiàn):l 工程化管理軟件工程基本原理l 推遲實(shí)現(xiàn)原理:軟件方法學(xué)的一條基本思想。把邏輯設(shè)計(jì)與物理設(shè)計(jì)清楚地劃分開來,盡可能推遲軟件的物理實(shí)現(xiàn)。l 逐步求精原理,求解一個(gè)復(fù)雜問題,采用從抽象到具體,有條理地逐步分解與細(xì)化方法和過程進(jìn)行。l 分解與抽象原理,是把復(fù)雜問題趨于簡單化處理的有效策略。l 信息隱蔽原理,把一些關(guān)系密切的軟件元素物理地放得彼此靠近,使信息最大限度地局部化。l 質(zhì)量保證原理,是軟件與文檔中明確描述的功能和性能需求、開發(fā)標(biāo)準(zhǔn)以及任何專業(yè)開發(fā)的軟件產(chǎn)品具有的隱含特征相一致的程度。軟件工程基本原則l 1983年提出了軟件工程的7條

5、基本原則:l 分階段的軟件生存周期l 堅(jiān)持進(jìn)行階段評(píng)審l 實(shí)行嚴(yán)格的產(chǎn)品控制l 采用現(xiàn)代程序設(shè)計(jì)技術(shù)l 明確職責(zé)l 開發(fā)小組的人員應(yīng)少而精l 不斷改進(jìn)開發(fā)過程軟件工程兩大范型l 結(jié)構(gòu)化開發(fā)范型l 特征:結(jié)構(gòu)化技術(shù)要么面向行為,要么面向數(shù)據(jù)l 構(gòu)成結(jié)構(gòu)化開發(fā)范型的技術(shù)包括:l 結(jié)構(gòu)化分析l 結(jié)構(gòu)化設(shè)計(jì)l 結(jié)構(gòu)化編程l 結(jié)構(gòu)化測試l 結(jié)構(gòu)化維護(hù)軟件工程兩大范型l 面向?qū)ο蠓缎蚻 特征:將對(duì)象視作一個(gè)融合了數(shù)據(jù)及在其上操作的行為的、統(tǒng)一的軟件組件。l 技術(shù)包括:l 面向?qū)ο蠓治鰈 面向?qū)ο笤O(shè)計(jì)l 面向?qū)ο缶幊蘬 面向?qū)ο鬁y試l 面向?qū)ο缶S護(hù)l 優(yōu)勢(shì):l 對(duì)象的概念符合業(yè)務(wù)或領(lǐng)域的客觀實(shí)際l 維護(hù)容易

6、第2章 軟件過程軟件過程l 定義:l 軟件過程是為了開發(fā)出軟件產(chǎn)品,或者是為了完成軟件工程項(xiàng)目而需要完成的有關(guān)軟件工程的活動(dòng)。l 通常使用生命周期模型簡潔地描述軟件過程。l 層次:l 軟件工程是一門建立在以質(zhì)量焦點(diǎn)為基礎(chǔ)的層次化綜合技術(shù)。l 過程:定義階段和管理。l 方法:技術(shù)支持。l 工具:自動(dòng)化實(shí)施支持。軟件過程框架l 定義:l 框架是實(shí)現(xiàn)整個(gè)軟件開發(fā)活動(dòng)的基礎(chǔ),并且那些與過程有關(guān)的角色、職責(zé)的定義以及實(shí)現(xiàn)也都離不開框架的支持。軟件過程模型l 把軟件生命周期中各項(xiàng)開發(fā)活動(dòng)的流程用一個(gè)合理的框架開發(fā)模型來規(guī)范描述,這就是軟件過程模型,也稱為軟件生命周期模型。能力成熟度模型l CMM是對(duì)軟件組

7、織在定義、實(shí)施、度量、控制和改善其軟件過程的各個(gè)發(fā)展階段的描述,是國際公認(rèn)的對(duì)軟件公司進(jìn)行成熟度等級(jí)認(rèn)證的重要標(biāo)準(zhǔn)。l 能力成熟度模型集成(CMMI-Capability Maturity Model Integration)是CMM模型的最新版本。CMM的五個(gè)級(jí)別l CMM提供了一個(gè)成熟度等級(jí)框架:1級(jí)-初始級(jí)、 2級(jí)-可重復(fù)級(jí)、3級(jí)-已定義級(jí)、4級(jí)-已管理級(jí)和5級(jí)-優(yōu)化級(jí)。 l 1.初始(initial)級(jí):過程無序且不可見。l 軟件過程的特點(diǎn)是無秩序的,甚至是混亂的。幾乎沒有什么過程是經(jīng)過妥善定義的,成功往往依賴于個(gè)人或小組的努力和機(jī)遇。l Level 1:初始級(jí)l 2.可重復(fù)(repe

8、atable)級(jí):里程碑可見,按計(jì)劃開發(fā)。l 建立了基本的項(xiàng)目管理過程來跟蹤成本、進(jìn)度和功能特性。制定了必要的過程紀(jì)律,能重復(fù)早先類似應(yīng)用項(xiàng)目取得的成功。Level 2:可重復(fù)級(jí)l 3.已定義(defined)級(jí):每個(gè)階段的內(nèi)部活動(dòng)可見,標(biāo)準(zhǔn)過程和項(xiàng)目定義過程裁剪l 己將管理和工程活動(dòng)兩方面的軟件過程文檔化、標(biāo)準(zhǔn)化,并綜合成該機(jī)構(gòu)的標(biāo)準(zhǔn)軟件過程。所有項(xiàng)目均使用經(jīng)批準(zhǔn)、剪裁的標(biāo)準(zhǔn)軟件過程來開發(fā)和維護(hù)軟件。Level 3:定義級(jí)4. Level 4已管理(managed)級(jí):過程可度量,預(yù)測值與結(jié)果之間的偏差可控。 收集對(duì)軟件過程和產(chǎn)品質(zhì)量的詳細(xì)度量值,對(duì)軟件過程和產(chǎn)品都有定量的理解和控制。Lev

9、el 4 管理級(jí)5. Level 5優(yōu)化(optimizing)級(jí):過程動(dòng)態(tài)調(diào)整、新技術(shù)的采用。 整個(gè)組織關(guān)注軟件過程改進(jìn)的持續(xù)性、預(yù)見及增強(qiáng)自身,防止缺陷及問題的發(fā)生。過程的量化反饋和先進(jìn)的新思想、新技術(shù)促使過程不斷改進(jìn)。Level 5 優(yōu)化級(jí)極限編程l 極限編程(eXtreme Programming,XP)是一種軟件工程方法學(xué),是敏捷開發(fā)中最富有成效的方法學(xué)之一。l 具有強(qiáng)溝通、簡化設(shè)計(jì)、迅速反饋等特點(diǎn)。l 適合于規(guī)模小、進(jìn)度緊、需求不穩(wěn)定、開發(fā)小項(xiàng)目的小團(tuán)隊(duì)。極限編程l 核心有四個(gè)要點(diǎn):l 交流l 簡單l 反饋l 勇氣Pair Programming( 結(jié)對(duì)編程 )結(jié)對(duì)編程l 結(jié)對(duì)編程

10、(Pair-Programming) 是XP中非常重要的實(shí)踐之一。l 定義:兩個(gè)人坐在同一臺(tái)計(jì)算機(jī)前面,使用相同的鍵盤和鼠標(biāo)來開發(fā)同樣的一個(gè)模塊,一個(gè)稱為駕駛者(Driver),負(fù)責(zé)代碼的鍵入,另外一個(gè)稱為領(lǐng)航員(Navigator),負(fù)責(zé)監(jiān)看與決策,包括低級(jí)錯(cuò)誤和方向性的錯(cuò)誤。l 當(dāng)出現(xiàn)的一個(gè)問題對(duì)其中一個(gè)人來說,難以解決,而恰好是另外一個(gè)人的強(qiáng)項(xiàng)的時(shí)候,那么角色就會(huì)發(fā)生轉(zhuǎn)換。如何結(jié)對(duì)編程?l Driver 寫設(shè)計(jì)文檔(Class diagram等),進(jìn)行編碼(Unit Test and Business Object)等XP開發(fā)流程。l Navigator 審閱Driver的文檔、Driv

11、er對(duì)編碼等開發(fā)流程的執(zhí)行;考慮Unit Test的覆蓋程度;是否需要和如何Refactoring;幫助Driver解決具體的技術(shù)問題。l Driver和Navigator不斷輪換角色,不要連續(xù)工作超過一小時(shí),每一小時(shí)休息15分鐘。Navigator要控制開發(fā)時(shí)間。l 主動(dòng)參與 雖然每個(gè)Engineering Task都有owner,但不能以旁觀者的心態(tài)來做。任何一個(gè)Task都首先是兩個(gè)人的責(zé)任,也是所有人的責(zé)任。沒有“我的Code”、”你的Code”或“她的Code”,只有“我們的Code”。如何結(jié)對(duì)編程?l 只有水平上的差距,沒有級(jí)別上的差異。一個(gè)Pair,盡管可能大家的級(jí)別資歷不同,但不

12、管在分析,設(shè)計(jì)或編碼,雙方都擁有平等的決策權(quán)利。l Pairs之間互換Partner。每個(gè)Task都應(yīng)該和不同的Developer配對(duì)。l 每隔一天,甚至是半天,互換Partners。但Task的owner因該繼續(xù)留該Task的Pair中。l 如果Pair中的一人請(qǐng)假,另一人應(yīng)盡量不要寫l Production Code。l Pair一起加班。軟件工程實(shí)踐l 軟件工程實(shí)踐的精髓是理解問題、計(jì)劃解決方案、實(shí)施計(jì)劃和檢查結(jié)果的精確度等方面。l 通用的框架活動(dòng)包括:l 溝通l 計(jì)劃l 建模l 部署l 普適性活動(dòng)第3章 軟件過程模型l 典型的軟件過程模型有:l 瀑布模型(waterfall model

13、)l 演化模型(evolutionary model)l 增量模型(incremental model)l 原型模型(prototyping model)l 螺旋模型(spiral model)l 面向?qū)ο筮^程模型噴泉模型(water fountain model)l 基于構(gòu)件的開發(fā)模型(component-based development model)l 形式方法模型(formal methods model)l 統(tǒng)一過程模型(unified procdss model)軟件過程模型l 軟件過程模型是軟件開發(fā)全部過程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架。l 也稱軟件開發(fā)模型或軟件生存周期模型。軟件生存周

14、期l 軟件也有一個(gè)從生到死的過程,這個(gè)過程一般稱之為軟件的生存周期或生命周期(Software Development Life Cycle)。l 軟件生存周期包括可行性分析、項(xiàng)目計(jì)劃、需求分析、軟件設(shè)計(jì)、編碼與測試、維護(hù)等階段,每個(gè)階段包含一系列的活動(dòng)。一.瀑布模型l 瀑布模型將軟件生命周期劃分為軟件計(jì)劃、需求分析和定義、設(shè)計(jì)、實(shí)現(xiàn)、測試、運(yùn)行和維護(hù)這6個(gè)階段,規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水逐級(jí)下落。瀑布模型特點(diǎn)l 順序性和依賴性接受上一階段的結(jié)果作為本階段的輸入,上一階段的輸出正確,下一階段的工作才能獲得正確的結(jié)果。l 推遲實(shí)現(xiàn)清楚地區(qū)分邏輯設(shè)計(jì)與物理設(shè)計(jì),盡可能推遲

15、程序的編程實(shí)現(xiàn)。l 質(zhì)量保證的觀點(diǎn),重視各個(gè)階段的文檔齊備。缺點(diǎn)l 缺乏靈活性,難以適應(yīng)需求不明確或需求經(jīng)常變化的軟件開發(fā)。l 開發(fā)早期存在的問題往往要到交付使用時(shí)才發(fā)現(xiàn),維護(hù)代價(jià)大。二.演化模型l 許多軟件項(xiàng)目在開發(fā)早期對(duì)軟件需求的認(rèn)識(shí)是模糊的、不確定的,因此軟件很難一次開發(fā)成功。l 演化模型的開發(fā)過程就是從構(gòu)造初始的原型出發(fā),逐步將其演化成最終軟件產(chǎn)品的過程。l 演化模型適用于對(duì)軟件需求缺乏準(zhǔn)確認(rèn)識(shí)的情況。l 典型的演化模型有:增量模型、原型模型、螺旋模型。1.增量模型l 增量模型(Incremental Model)也稱為漸增模型,是在項(xiàng)目的開發(fā)過程中以一系列的增量方式開發(fā)系統(tǒng)。l 增量

16、方式包括:l 增量開發(fā):以一定的時(shí)間間隔開發(fā)部分工作軟件。l 增量提交:以一定的時(shí)間間隔增量方式向用戶提交工作軟件及相應(yīng)文檔。2.原型模型l 原型(prototype)是預(yù)期系統(tǒng)的一個(gè)可執(zhí)行版本,它反映了系統(tǒng)性質(zhì)(如功能、計(jì)算結(jié)果等)的一個(gè)選定的子集。一個(gè)原型不必滿足目標(biāo)軟件的所有約束,其目的是能快速、低成本地構(gòu)建原型。l 原型方法從軟件工程師與客戶的交流開始,其目的是定義軟件的總體目標(biāo),標(biāo)識(shí)需求。然后快速制訂原型開發(fā)的計(jì)劃,確定原型的目標(biāo)和范圍,采用快速設(shè)計(jì)的方式對(duì)其建模,并構(gòu)建原型。3.螺旋模型l 螺旋模型(Spiral Model)是結(jié)合了瀑布模型和快速原型模型的迭代開發(fā)模型,是瀑布模型

17、和演化模型的結(jié)合,并增加了風(fēng)險(xiǎn)分析。l 強(qiáng)調(diào)了其他模型均忽略了的風(fēng)險(xiǎn)分析:l 風(fēng)險(xiǎn)識(shí)別l 風(fēng)險(xiǎn)分析l 風(fēng)險(xiǎn)控制l 特別適合于大型復(fù)雜的系統(tǒng)。l 每一個(gè)周期都包括需求定義、風(fēng)險(xiǎn)分析、工程實(shí)現(xiàn)和評(píng)審。螺旋模型活動(dòng)l 四個(gè)象限分別代表了以下活動(dòng):l 制定計(jì)劃:確定軟件目標(biāo),選定實(shí)施方案,確定項(xiàng)目開發(fā)的限制條件; l 風(fēng)險(xiǎn)分析:分析評(píng)估所選方案,考慮如何識(shí)別和消除風(fēng)險(xiǎn);l 實(shí)施工程:實(shí)施軟件開發(fā)和驗(yàn)證;l 客戶評(píng)估:評(píng)價(jià)開發(fā)工作,提出修正建議,制定下一步計(jì)劃。l 螺旋模型是風(fēng)險(xiǎn)驅(qū)動(dòng)的模型。l三.面向?qū)ο筮^程模型l 面向?qū)ο笫且环N程序設(shè)計(jì)的方法,或者說它是一種程序設(shè)計(jì)范型。l 基本思想是使用對(duì)象,類,繼

18、承,封裝,消息等基本概念來進(jìn)行程序設(shè)計(jì)。l 面向?qū)ο蟮囊兀?l 抽象:強(qiáng)調(diào)實(shí)體的本質(zhì)、內(nèi)在的屬性,忽略一些無關(guān)緊要的屬性。類實(shí)現(xiàn)了對(duì)象的數(shù)據(jù)(即狀態(tài))和行為的抽象,是對(duì)象的共性的抽象。l 封裝性:指所有軟件部件內(nèi)部都有明確的范圍以及清楚的外部邊界。 l 共享性。l 面向?qū)ο蟮奶卣鳎簩?duì)象惟一性;分類性;繼承性;多態(tài)性(多形性)。1.噴泉模型l 噴泉模型是一種支持面向?qū)ο箝_發(fā)的模型。l 體現(xiàn)迭代和無間隙特征:l 迭代:各開發(fā)活動(dòng)常常重復(fù)工作多次,相關(guān)的功能在每次迭代中隨之加入演進(jìn)的系統(tǒng)。l 無間隙:開發(fā)活動(dòng)之間不存在明顯的邊界。四.基于構(gòu)件的開發(fā)模型l 支持軟件復(fù)用(reuse)。l 利用預(yù)先包

19、裝好的軟件構(gòu)件(包括組織內(nèi)部開發(fā)的構(gòu)件和現(xiàn)存商品化構(gòu)件COTS)來構(gòu)造應(yīng)用系統(tǒng)。構(gòu)件集成模型l 構(gòu)件集成模型是基于構(gòu)件的開發(fā)模型。l 構(gòu)件集成模型:l 整個(gè)系統(tǒng)模塊化。l 復(fù)用構(gòu)件庫中的軟件構(gòu)件。l 構(gòu)件集成模型是演化形的,開發(fā)過程是迭代的。l 5個(gè)階段:l 軟件的需求分析和定義l 體系結(jié)構(gòu)設(shè)計(jì)l 構(gòu)件庫建立l 應(yīng)用軟件構(gòu)建l 測試和發(fā)布五.形式方法模型l 形式化方法(formal methods)是建立在嚴(yán)格數(shù)學(xué)基礎(chǔ)上的一種軟件開發(fā)方法。軟件開發(fā)的全過程中,從需求分析、規(guī)約、設(shè)計(jì)、編程、系統(tǒng)集成、測試、文檔生成、直至維護(hù)各個(gè)階段,凡是采用嚴(yán)格的數(shù)學(xué)語言,具有精確的數(shù)學(xué)語義的方法,都稱為形式化

20、方法。六.統(tǒng)一過程模型l 統(tǒng)一過程是用況驅(qū)動(dòng)的。l 用況模型(use case model)要素:l 用戶(user)l 用況(use case)l 動(dòng)作(action)l 用況驅(qū)動(dòng)(use-case driven):用況可以驅(qū)動(dòng)開發(fā)過程,用況不只是確定系統(tǒng)需求的工具,還能驅(qū)動(dòng)系統(tǒng)設(shè)計(jì)、實(shí)現(xiàn)和測試的進(jìn)行。統(tǒng)一過程模型l 統(tǒng)一過程(Unified Process,UP) 是風(fēng)險(xiǎn)驅(qū)動(dòng)的、基于用例技術(shù)的、以架構(gòu)為中心的、迭代的、可配置的軟件開發(fā)流程。l 統(tǒng)一過程是一個(gè)軟件開發(fā)過程,是一個(gè)通用的過程框架:l 初始l 細(xì)化l 構(gòu)造l 移交統(tǒng)一過程五個(gè)核心工作流l 需求(Requirements Capt

21、ure):致力于開發(fā)正確的系統(tǒng)。l 分析(Analysis):更精確地理解需求。l 設(shè)計(jì)(Design):深入理解與非功能性需求和約束相聯(lián)系的問題。l 實(shí)現(xiàn)(Implementation):實(shí)現(xiàn)系統(tǒng)與集成。l 測試(Test):驗(yàn)證實(shí)現(xiàn)的結(jié)構(gòu)。第4章 軟件需求分析軟件需求l 在軟件的整個(gè)生命周期中,首先是軟件計(jì)劃期,接著是軟件開發(fā)期,軟件需求分析是軟件開發(fā)的第一個(gè)階段,也是關(guān)系到軟件開發(fā)成功與否的關(guān)鍵一步。需求分析的任務(wù)與步驟需求分析的任務(wù)就是借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)的邏輯模型。主要有兩個(gè)任務(wù):1、建立分析模型數(shù)據(jù)、功能和行為模型。2、編寫需求說明書。 需求分析的任務(wù)與步驟 2.編

22、寫軟件需求規(guī)格說明:主要包括描述目標(biāo)系統(tǒng)概貌、功能要求、性能要求、運(yùn)行要求和將來可能提出的要求。用數(shù)據(jù)流圖、IPO圖或其他工具簡要描述的系統(tǒng)主要算法,都是該份文檔的重要組成部分。此外,該份文檔還應(yīng)包括用戶需求與系統(tǒng)功能之間的關(guān)系、設(shè)計(jì)約束等等文字描述。 軟件需求規(guī)格說明是需求分析階段的最終成果。l 需求分析的步驟l 1.需求獲取l 目的:清楚地理解所要解決的問題;完整地獲取用戶需求。l 2.需求提煉l 任務(wù):分析建模。 l 3.需求描述l 結(jié)果:軟件需求說明書。l 4.需求驗(yàn)證l 改善需求說明的完整性,確保他可作為軟件設(shè)計(jì)和系統(tǒng)驗(yàn)收的依據(jù)。 需求獲取的常用方法l 聯(lián)合分析小組 l 用戶代表、領(lǐng)

23、域?qū)<液拖到y(tǒng)分析員。l 客戶訪談 l 充分準(zhǔn)備,尋找共同語言;l 循序漸進(jìn)、逐步逼近。 l 問題分析與確認(rèn) l 多個(gè)來回。軟件需求獲取的層次(內(nèi)容)l 1.業(yè)務(wù)需求與用戶需求:源于系統(tǒng)的特定領(lǐng)域的需求和用戶使用交互需求。l 2.功能需求:描述系統(tǒng)預(yù)期提供的功能或服務(wù)。定義了系統(tǒng)做什么(描述系統(tǒng)必須支持的功能和過程) l 對(duì)系統(tǒng)應(yīng)提供的服務(wù);l 如何對(duì)輸入做出反應(yīng);l 系統(tǒng)在特定條件下的行為。l 3.非功能需求:指那些不直接與系統(tǒng)具體功能相關(guān)的一類需求。定義了系統(tǒng)工作時(shí)的特性(描述操作環(huán)境和性能目標(biāo))l 產(chǎn)品需求;l 機(jī)構(gòu)需求;l 外部需求。需求分析過程l 需求分析主要是理解客戶需要什么、分析要

24、求、評(píng)價(jià)可行性、協(xié)商合理的方案、無歧義地詳細(xì)說明方案、確認(rèn)規(guī)格說明、管理需求,以至將這些需求轉(zhuǎn)化為可行系統(tǒng)。l 過程包括:l 溝通l 導(dǎo)出需求l 精化需求l 可行性研究l 與客戶協(xié)商l 編寫需求規(guī)格說明l 驗(yàn)證需求l 管理需求多視點(diǎn)的需求分析過程l 視點(diǎn)識(shí)別:包括發(fā)現(xiàn)接收系統(tǒng)服務(wù)的視點(diǎn)和發(fā)現(xiàn)提供給每個(gè)視點(diǎn)的特別服務(wù)。l 視點(diǎn)組織:包括組織相關(guān)的視點(diǎn)到層次結(jié)構(gòu)中,通用的服務(wù)放在較高的層次,并被較低層次的視點(diǎn)繼承。l 視點(diǎn)文檔編寫:包括對(duì)被識(shí)別的視點(diǎn)和服務(wù)描述的精煉。l 視點(diǎn)系統(tǒng)映射:包括在面向?qū)ο笤O(shè)計(jì)中,通過封裝在視點(diǎn)中的服務(wù)信息識(shí)別對(duì)象。l場景分析l 分析員與項(xiàng)目相關(guān)人員共同識(shí)別出情景,并捕獲

25、這些情景的細(xì)節(jié)。l 把細(xì)節(jié)加入到一個(gè)綱要的需求描述中時(shí),情景特別有用。l 情景是對(duì)交互實(shí)例片斷的描述,每個(gè)情景可能包含一個(gè)或多個(gè)交互,它們能在不同的細(xì)節(jié)層次上提供不同類型的情景信息。l 情景開始于一個(gè)框架,在導(dǎo)出過程中,細(xì)節(jié)被逐漸增加,直到產(chǎn)生交互的一個(gè)完整的描述。情景內(nèi)容l 在情景開始部分有一個(gè)系統(tǒng)狀態(tài)描述;l 關(guān)于標(biāo)準(zhǔn)事件流的描述;l 關(guān)于哪兒會(huì)出錯(cuò),以及如何處理錯(cuò)誤的描述;l 有關(guān)其他可能在同一時(shí)間進(jìn)行的活動(dòng)的信息;l 在情景完成后系統(tǒng)狀態(tài)的描述。場景分析舉例-ATM系統(tǒng)“取款”場景分析l 場景名:取款l 參與者:銀行客戶l 場景描述:l 1插入有效的銀行卡;l 2ATM機(jī)驗(yàn)證該銀行卡;

26、l 3系統(tǒng)要求輸入銀行卡密碼,用戶輸入密碼;l 4系統(tǒng)通過網(wǎng)絡(luò)向銀行內(nèi)部系統(tǒng)請(qǐng)求驗(yàn)證密碼;l 5若驗(yàn)證通過,系統(tǒng)請(qǐng)求選擇業(yè)務(wù),選擇取款;l 6系統(tǒng)要求輸入取款金額,比如1000元;l 7系統(tǒng)驗(yàn)證是有足夠的現(xiàn)金,并請(qǐng)求驗(yàn)證銀行內(nèi)部服務(wù)器處理取款;l 8若處理成功,系統(tǒng)計(jì)算鈔票數(shù)目,并送出現(xiàn)金;l 9用戶取走現(xiàn)金;l 10系統(tǒng)打印憑條,用戶取走憑條;l 11系統(tǒng)退出銀行卡,用戶取走銀行卡。第5章 結(jié)構(gòu)化分析與建模結(jié)構(gòu)化方法l 一種面向數(shù)據(jù)流的傳統(tǒng)軟件開發(fā)方法。l 以數(shù)據(jù)流為中心構(gòu)建軟件的分析模型和設(shè)計(jì)模型。l 分為:l 結(jié)構(gòu)化分析(Structured Analysis 簡稱SA)l 結(jié)構(gòu)化設(shè)計(jì)(

27、Structuresd Design 簡稱SD)l 結(jié)構(gòu)化程序設(shè)計(jì)(Structured Programmin 簡稱SP)結(jié)構(gòu)化分析l 結(jié)構(gòu)化分析方法是一種傳統(tǒng)的系統(tǒng)建模技術(shù),其過程是創(chuàng)建描述信息內(nèi)容和數(shù)據(jù)流的模型,依據(jù)功能和行為對(duì)系統(tǒng)進(jìn)行劃分,并描述必須建立的系統(tǒng)要素。結(jié)構(gòu)化分析過程l 理解當(dāng)前的現(xiàn)實(shí)環(huán)境,獲得當(dāng)前系統(tǒng)的具體模型(物理模型)。l 從當(dāng)前系統(tǒng)的具體模型抽象出當(dāng)前系統(tǒng)的邏輯模型。l 分析目標(biāo)系統(tǒng)與當(dāng)前系統(tǒng)邏輯上的差別,建立目標(biāo)系統(tǒng)的邏輯模型。l 為目標(biāo)系統(tǒng)的邏輯模型作補(bǔ)充。l結(jié)構(gòu)化分析模型結(jié)構(gòu)面向數(shù)據(jù)流的建模方法l 面向數(shù)據(jù)流的建模是結(jié)構(gòu)化需求分析方法之一。l 表示:l 數(shù)據(jù)字典

28、:模型中的數(shù)據(jù)信息集合。l 數(shù)據(jù)流圖-Data Flow Diagram(簡稱DFD):描述系統(tǒng)處理過程,即是描述輸入數(shù)據(jù)流到輸出數(shù)據(jù)流的變換(即加工)過程,用于對(duì)系統(tǒng)的功能建模。數(shù)據(jù)流圖符號(hào)源或宿l 存在于軟件系統(tǒng)之外的人員或組織,表示軟件系統(tǒng)輸入數(shù)據(jù)的來源和輸出數(shù)據(jù)的去向,因此也稱為源點(diǎn)和終點(diǎn)。l 例如,對(duì)一個(gè)考務(wù)處理系統(tǒng)而言:l 考生向系統(tǒng)提供報(bào)名單(輸入數(shù)據(jù)流),所以考生是考試系統(tǒng)(軟件)的一個(gè)源。l 考務(wù)處理系統(tǒng)要將考試成績的統(tǒng)計(jì)分析表(輸出數(shù)據(jù)流)傳遞給考試中心,所以考試中心是該系統(tǒng)的一個(gè)宿。l 源或宿用相同的圖形符號(hào)表示。l 當(dāng)數(shù)據(jù)流從該符號(hào)流出時(shí)表示是源。l 當(dāng)數(shù)據(jù)流流向該符號(hào)

29、時(shí)表示是宿。l 當(dāng)兩者皆有時(shí)表示既是源又是宿。加工和文件l 加工:描述輸入數(shù)據(jù)流到輸出數(shù)據(jù)流的變換。l 每個(gè)加工用一個(gè)定義明確的名字標(biāo)識(shí)。l 至少有一個(gè)輸入數(shù)據(jù)流和一個(gè)輸出流。l 可以有多個(gè)輸入數(shù)據(jù)流和多個(gè)輸出數(shù)據(jù)流。l 文件:保存數(shù)據(jù)信息的外部單元。l 每個(gè)文件用一個(gè)定義明確的名字標(biāo)識(shí)。l 由加工進(jìn)行讀寫。l DFD中稱為文件,但在具體實(shí)現(xiàn)時(shí)可以用文件系統(tǒng)實(shí)現(xiàn),也可以用數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)。數(shù)據(jù)流l 每個(gè)數(shù)據(jù)流用由一組固定成分的數(shù)據(jù)組成,并擁有一個(gè)定義明確的名字標(biāo)識(shí)。l 如:運(yùn)動(dòng)會(huì)管理系統(tǒng)中,報(bào)名單(數(shù)據(jù)流)由隊(duì)名、姓名、性別、參賽項(xiàng)目等數(shù)據(jù)組成。l 數(shù)據(jù)流的流向:l 從一個(gè)加工流向另一個(gè)加工。l

30、 從加工流向文件(寫文件)。l 從文件流向加工(讀文件)。l 從源流向加工。l 從加工流向宿。l 數(shù)據(jù)流圖舉例:飛機(jī)機(jī)票預(yù)訂系統(tǒng):旅行社把預(yù)訂機(jī)票的旅客信息輸入機(jī)票預(yù)訂系統(tǒng)。系統(tǒng)為旅客安排航班,打印出取票通知單(附應(yīng)交的帳款)。旅客在飛機(jī)起飛的前一天憑取票通知等交款取票,系統(tǒng)檢驗(yàn)無誤,輸出機(jī)票給旅客。出卷系統(tǒng)DFD舉例:總體數(shù)據(jù)流圖出卷系統(tǒng):自動(dòng)出卷數(shù)據(jù)流圖出卷系統(tǒng):自動(dòng)出卷數(shù)據(jù)流圖數(shù)據(jù)字典l 定義:l 數(shù)據(jù)字典是描述數(shù)據(jù)信息的集合,它對(duì)數(shù)據(jù)流圖中的各個(gè)元素按規(guī)定格式進(jìn)行詳細(xì)的描述和確切的解釋,是數(shù)據(jù)流圖的補(bǔ)充工具。l l 數(shù)據(jù)流圖與數(shù)據(jù)字典是密不可分的,兩者結(jié)合起來構(gòu)成軟件的邏輯模型(分析模

31、型)。數(shù)據(jù)字典l 數(shù)據(jù)字典有以下兩個(gè)作用:l 它是所有名字信息管理的有效機(jī)制。l 作為連接軟件分析、設(shè)計(jì)、實(shí)現(xiàn)和進(jìn)化階段的開發(fā)機(jī)構(gòu)的信息存儲(chǔ)。l 數(shù)據(jù)字典應(yīng)該由四類元素的定義組成:l 數(shù)據(jù)流l 數(shù)據(jù)流分量l 數(shù)據(jù)存儲(chǔ)l 處理l 對(duì)于處理,可用輸入處理輸出(IPO,Input-Process-Output)視圖描述更方便。數(shù)據(jù)字典條目l 數(shù)據(jù)字典條目中應(yīng)該包括關(guān)于數(shù)據(jù)的信息:l 一般信息(名字、別名、描述等)。l 定義(數(shù)據(jù)類型、長度、結(jié)構(gòu)等)。l 使用特點(diǎn)(值的范圍、使用頻率、使用條件、使用方式、條件值等)。l 控制信息(用戶、使用特點(diǎn)、改變數(shù)、使用權(quán)等)。l 分組信息(文檔結(jié)構(gòu)、從屬結(jié)構(gòu)、物

32、理位置等)。數(shù)據(jù)字典數(shù)據(jù)流應(yīng)包含的內(nèi)容一般的“數(shù)據(jù)流”字典條目應(yīng)包含以下內(nèi)容:數(shù)據(jù)字典數(shù)據(jù)文件應(yīng)包含的內(nèi)容一般的“數(shù)據(jù)文件”字典條目應(yīng)包含以下內(nèi)容:數(shù)據(jù)字典數(shù)據(jù)項(xiàng)應(yīng)包含的內(nèi)容一般的“數(shù)據(jù)項(xiàng)”字典條目應(yīng)包含以下內(nèi)容:對(duì)數(shù)據(jù)項(xiàng)的數(shù)據(jù)描述還可以采用以下的方式:數(shù)據(jù)字典數(shù)據(jù)字典卡片方式示例判定表l 判定表的組成元素l 條件樁(Condition Stub):列出各種條件的對(duì)象,如發(fā)貨單金額,賒欠天數(shù)等,每行寫一個(gè)條件對(duì)象。l 條件條目(Conditien entry):列出各條件對(duì)象的取值,條件條目的每一列表示了一個(gè)可能的條件組合。l 動(dòng)作樁(action stub):列出所有可能采取的動(dòng)作,如發(fā)出發(fā)

33、貨單等,每行寫一個(gè)動(dòng)作。l 動(dòng)作條目(action eutry):列出各種條件組合下應(yīng)采取的動(dòng)作。判定表的其它形式判定(決策)樹判定樹描述有多個(gè)行為需要選擇的過程。判定樹由一組表示條件的節(jié)點(diǎn)和無標(biāo)記邊組成。判定(決策)樹實(shí)例判定樹還有另一種形式:“T”表示“真”,條件成立;“F”表示“假”,條件不成立。決策樹形式簡單,易于掌握和使用,并適合于與用戶討論。判定(決策)樹實(shí)例l 本質(zhì)上與判定表是相同的,只是表示形式不同。l l 例如“審批發(fā)貨單”加工邏輯的判定樹描述入下: 第6章 結(jié)構(gòu)化設(shè)計(jì)基礎(chǔ)軟件設(shè)計(jì)的兩個(gè)階段l 設(shè)計(jì)者必須同時(shí)滿足用戶和系統(tǒng)開發(fā)人員的要求:l 概要設(shè)計(jì)階段概要設(shè)計(jì)書。l 詳細(xì)設(shè)

34、計(jì)階段詳細(xì)設(shè)計(jì)書。軟件設(shè)計(jì)過程l 結(jié)構(gòu)化設(shè)計(jì)(Structured Design,簡稱SD)是一種將結(jié)構(gòu)化分析得到的數(shù)據(jù)流圖映射成軟件體系結(jié)構(gòu)的設(shè)計(jì)方法。l 強(qiáng)調(diào)模塊化、自頂向下逐步求精、信息隱蔽、高內(nèi)聚低耦合等設(shè)計(jì)準(zhǔn)則。l 分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩大步驟:l 概要設(shè)計(jì)是對(duì)軟件系統(tǒng)的總體設(shè)計(jì),采用結(jié)構(gòu)化設(shè)計(jì)方法,其任務(wù)是:將系統(tǒng)分解成模塊,確定每個(gè)模塊的功能、接口(模塊間傳遞的數(shù)據(jù))及其調(diào)用關(guān)系,并用模塊及其對(duì)模塊的調(diào)用來構(gòu)建軟件的體系結(jié)構(gòu)。l 詳細(xì)設(shè)計(jì)是對(duì)模塊實(shí)現(xiàn)細(xì)節(jié)的設(shè)計(jì),采用結(jié)構(gòu)化程序設(shè)計(jì)(Structured Programming,簡稱SP)方法。l SA、SD和SP構(gòu)成完整的結(jié)構(gòu)化

35、方法體系。概要設(shè)計(jì)l 軟件設(shè)計(jì)的第一類活動(dòng)概要設(shè)計(jì),也稱為總體設(shè)計(jì)或結(jié)構(gòu)設(shè)計(jì)、高層設(shè)計(jì)。l 軟件概要設(shè)計(jì)主要是仔細(xì)分析需求規(guī)格說明,研究、開發(fā)產(chǎn)品的模塊劃分,形成具有預(yù)定功能的模塊組成結(jié)構(gòu),表示出模塊間的控制關(guān)系,并給出模塊之間的接口。軟件概要設(shè)計(jì)的步驟l 1.設(shè)計(jì)供選擇的方案。l 2.選取合理的方案。l 3.推薦最佳方案。l 4.功能分解與設(shè)計(jì)軟件結(jié)構(gòu)。l 5.數(shù)據(jù)庫設(shè)計(jì)。l 6.編制設(shè)計(jì)文檔。l 7.審查和復(fù)審。詳細(xì)設(shè)計(jì)l 軟件設(shè)計(jì)的第二類活動(dòng)是軟件詳細(xì)設(shè)計(jì),也稱模塊設(shè)計(jì),或者過程設(shè)計(jì)、低層設(shè)計(jì)。l 詳細(xì)設(shè)計(jì)是為結(jié)構(gòu)設(shè)計(jì)中的各個(gè)模塊設(shè)計(jì)過程細(xì)節(jié),確定模塊所需的算法和數(shù)據(jù)結(jié)構(gòu)等。把要解決的問

36、題具體化,但并不是真正的編碼,而是設(shè)計(jì)出程序的詳細(xì)規(guī)格說明。l 詳細(xì)設(shè)計(jì)是將概要設(shè)計(jì)的框架內(nèi)容具體化、明細(xì)化,將概要設(shè)計(jì)的模型轉(zhuǎn)換成可以操作的軟件模型,是設(shè)計(jì)程序的藍(lán)圖。詳細(xì)設(shè)計(jì)的內(nèi)容l 模塊或構(gòu)件的處理邏輯、算法、接口等。l 模塊或構(gòu)件的描述:功能、需要解決的問題,以及該模塊或構(gòu)件在什么時(shí)候被調(diào)用,為何需要該模塊或構(gòu)件。l 算法描述:處理算法和步驟,包括公式、邊界和特殊條件,甚至參考資料等。l 數(shù)據(jù)描述:其內(nèi)部的數(shù)據(jù)流。l 其處理邏輯可采用流程圖、PDL語言、N-S圖、判定表等描述算法的圖表來表示。模塊的獨(dú)立性l 模塊的獨(dú)立性(Module Independence)是模塊化、抽象、信息隱蔽

37、等概念的直接結(jié)果,也是判斷模塊化結(jié)構(gòu)是否合理的標(biāo)準(zhǔn)。l 模塊獨(dú)立性是指開發(fā)具有獨(dú)立功能,而和其他模塊沒有過多關(guān)聯(lián)的模塊。模塊獨(dú)立性度量l 模塊獨(dú)立性由兩個(gè)定性標(biāo)準(zhǔn)度量:l 模塊自身的內(nèi)聚(Cohesion),也稱為塊內(nèi)聯(lián)系或模塊強(qiáng)度。l 模塊之間的耦合(Coupling),也稱為塊間聯(lián)系。l 模塊獨(dú)立性愈高,則塊內(nèi)聯(lián)系越強(qiáng),塊間聯(lián)系越弱。模塊內(nèi)聚性l 內(nèi)聚性是從功能的角度對(duì)模塊內(nèi)部聚合能力的量度。l 高內(nèi)聚是模塊獨(dú)立性追求的目標(biāo)。l 分類:模塊耦合性l 耦合性是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。l 耦合性的強(qiáng)弱取決于模塊間接口的復(fù)雜程度,以及通過接口的數(shù)據(jù)類型和數(shù)目。l 分類: 如何

38、降低模塊間耦合度?l (1) 如模塊必須存在耦合,選擇適當(dāng)?shù)鸟詈项愋停瓌t:l 盡量使用數(shù)據(jù)耦合;l 少用控制耦合;l 限制公共耦合的范圍;l 堅(jiān)決避免使用內(nèi)容耦合。l (2) 降低模塊間接口的復(fù)雜性。軟件結(jié)構(gòu)圖l 軟件結(jié)構(gòu)(Structure Chart, 簡稱SC)是軟件系統(tǒng)的模塊層次結(jié)構(gòu),反映了整個(gè)系統(tǒng)的功能實(shí)現(xiàn)。l 軟件結(jié)構(gòu)以層次表示程序的系統(tǒng)結(jié)構(gòu),即一種控制的層次體系,并不表示軟件的具體過程。l 軟件結(jié)構(gòu)一般用樹狀或網(wǎng)狀結(jié)構(gòu)的圖形來表示。l 軟件結(jié)構(gòu)圖的主要元素有:l 模塊:模塊用帶有名字的方框表示,名稱應(yīng)體現(xiàn)模塊的功能。l 控制關(guān)系:控制關(guān)系用單向箭頭或直線表示模塊間的調(diào)用關(guān)系。l

39、 信息傳遞:用帶注釋的短箭頭表示模塊調(diào)用過程中傳遞的信息。l 循環(huán)調(diào)用和選擇調(diào)用:在上部模塊底部加一個(gè)菱形符號(hào)表示選擇調(diào)用,在上部模塊的下方加一個(gè)弧形箭頭,表示循環(huán)調(diào)用。軟件結(jié)構(gòu)圖l 軟件結(jié)構(gòu)圖的形態(tài)特征:l 深度:指結(jié)構(gòu)圖控制的層次,也是模塊的層數(shù)。圖6-4中的結(jié)構(gòu)圖的深度為5。能粗略表示一個(gè)系統(tǒng)的大小和復(fù)雜程度,深度和程序長度之間存在著某種對(duì)應(yīng)關(guān)系。l 寬度:指一層中最大的模塊個(gè)數(shù)。圖6-4中的結(jié)構(gòu)圖的寬度為8。一般來說,結(jié)構(gòu)的寬度越大,則系統(tǒng)就越復(fù)雜。l 扇出:指一個(gè)模塊直接下屬模塊的個(gè)數(shù)。圖6-4中的結(jié)構(gòu)圖的模塊I的扇出為4。扇出過大,表示模塊過分復(fù)雜,需要控制和協(xié)調(diào)的下級(jí)模塊太多。扇

40、出的上限一般為 59,平均一般為3或4。l 扇入:指一個(gè)模塊直接上屬模塊的個(gè)數(shù)。圖6-4中的結(jié)構(gòu)圖的模塊T的扇入為4。扇入過大,意味著共享該模塊的上級(jí)模塊數(shù)目多,這有一定的益處,但是決不能違背模塊的獨(dú)立性原則而片面追求高扇入。l 畫結(jié)構(gòu)圖應(yīng)注意的事項(xiàng):l 模塊不能重名。l 調(diào)用關(guān)系只能從上到下。軟件結(jié)構(gòu)圖幻燈片103軟件結(jié)構(gòu)圖第7章 結(jié)構(gòu)化概要設(shè)計(jì)方法7.1 數(shù)據(jù)流模型l 結(jié)構(gòu)化設(shè)計(jì)是將結(jié)構(gòu)化分析的結(jié)果(數(shù)據(jù)流圖)映射成軟件的體系結(jié)構(gòu)(結(jié)構(gòu)圖)。l 根據(jù)數(shù)據(jù)流的特點(diǎn),可將數(shù)據(jù)流圖分為變換型數(shù)據(jù)流圖和事務(wù)型數(shù)據(jù)流圖,其對(duì)應(yīng)的映射分別稱為變換分析和事務(wù)分析。7.1 數(shù)據(jù)流模型l 有三種數(shù)據(jù)流類型:

41、l 變換型數(shù)據(jù)流;l 事務(wù)型數(shù)據(jù)流;l 混合型數(shù)據(jù)流。變換型數(shù)據(jù)流l 信息沿著輸入路徑進(jìn)入系統(tǒng),并將輸入信息的外部形式經(jīng)過加工變成內(nèi)部形式,內(nèi)部形式的信息通過變換中心的處理,再沿著輸出路徑經(jīng)過加工后變成輸出信息,送到系統(tǒng)外。事務(wù)型數(shù)據(jù)流l 當(dāng)數(shù)據(jù)流經(jīng)過一個(gè)具有 “事務(wù)中心”特征的數(shù)據(jù)處理時(shí),它可以根據(jù)事務(wù)類型從多條路徑的數(shù)據(jù)流中選擇一條活動(dòng)通路。l 這種具有根據(jù)條件選擇處理不同事務(wù)的數(shù)據(jù)流,就是事務(wù)型數(shù)據(jù)流,簡稱事務(wù)流。混合型數(shù)據(jù)流l 在一個(gè)大型系統(tǒng)的DFD中,變換流和事務(wù)流往往會(huì)同時(shí)出現(xiàn)。l 例如,在一個(gè)事務(wù)型的DFD中,分支動(dòng)作路徑上的信息流也可能會(huì)體現(xiàn)出變換流的特征。l 這種具有將事務(wù)流

42、和變換流組合出現(xiàn),就是混合型數(shù)據(jù)流,簡稱混合流。第8章 結(jié)構(gòu)化詳細(xì)設(shè)計(jì)結(jié)構(gòu)化詳細(xì)設(shè)計(jì)的結(jié)構(gòu)l 三種基本結(jié)構(gòu)l 順序結(jié)構(gòu)l 選擇結(jié)構(gòu)l 循環(huán)結(jié)構(gòu)程序流程圖l 程序流程圖又稱為程序框圖,Goldstine于1946年首先采用。l 它的主要優(yōu)點(diǎn)是對(duì)控制流程的描繪很直觀,便于初學(xué)者掌握。l 程序流程圖的主要缺點(diǎn):l 程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu);l 程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制;l 程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。程序流程圖符號(hào)盒圖l 盒圖是由Nassi和Shnei

43、derman提出的,所以又稱為N-S圖。l 每個(gè)處理步驟都用一個(gè)盒子來表示,這些處理步驟可以是語句或語句序列,在需要時(shí),盒子中還可以嵌套另一個(gè)盒子,嵌套深度一般沒有限制。l 盒圖具有下述特點(diǎn):l 功能域(即,一個(gè)特定控制結(jié)構(gòu)的作用域)明確,可以從盒圖上一眼就看出來。l 由于只能從上邊進(jìn)入盒子然后從下面走出盒子,除此之外沒有其它的入口和出口,所以盒圖限制了任意的控制轉(zhuǎn)移,保證程序有良好的結(jié)構(gòu)。l 很容易確定局部和全程數(shù)據(jù)的作用域。l 很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。l 盒圖很容易表示程序結(jié)構(gòu)化的層次結(jié)構(gòu),確定局部和全局?jǐn)?shù)據(jù)的作用域。由于沒有箭頭,因此不允許隨意轉(zhuǎn)移控制。盒圖符號(hào)PA

44、D圖l PAD是問題分析圖(Problem Analysis Diagram)的英文縮寫,自1973年由日本日立公司發(fā)明。l 它是由程序流程圖演化而來,用二維樹形結(jié)構(gòu)的圖來表示程序的控制流,將這種圖翻譯成程序代碼比較容易。l PAD圖的基本原理:采用自頂向下、逐步細(xì)化和結(jié)構(gòu)化設(shè)計(jì)的原則,力求將模糊的問題解的概念逐步轉(zhuǎn)換為確定的和詳盡的過程,使之最終可采用計(jì)算機(jī)直接進(jìn)行處理。PAD圖符號(hào)PAD圖舉例過程描述語言PDLl 過程描述語言(PDL-Procedural Description Language)介于自然語言和形式語言之間的一種半形式化語言,是在自然語言基礎(chǔ)上加了一些限定,使用有限的詞匯

45、和有限的語句來描述加工邏輯。l 外層用來描述控制結(jié)構(gòu),采用順序、選擇、重復(fù)三種基本結(jié)構(gòu)。l 內(nèi)層一般采用祈使語句的自然語言短語,使用數(shù)據(jù)字典中的名詞和有限的自定義詞,其動(dòng)詞含義要具體,盡量不用形容詞和副詞來修飾。PDL三種結(jié)構(gòu)統(tǒng)計(jì)單詞數(shù)目l 統(tǒng)計(jì)空格 seql 打開文件l 讀入字符串l Totalsum = 0l 程序體 iter until文件結(jié)束l l 程序體endl 印總數(shù)seq l 印出空格總數(shù)l 印總數(shù)endl 關(guān)閉文件l 停止l 統(tǒng)計(jì)空格end第9章 面向?qū)ο蠡A(chǔ)面向?qū)ο蠡A(chǔ)l 面向?qū)ο笫且环N的程序設(shè)計(jì)方法,或者說它是一種程序設(shè)計(jì)范型,其基本思想是使用對(duì)象、類、繼承、封裝、消息等基

46、本概念來進(jìn)行程序設(shè)計(jì)。l 面向?qū)ο蠓椒▽W(xué)l 面向?qū)ο蠓治觯∣OA,Object-Oriented Analysis)是一種半形式化的規(guī)格說明技術(shù)。l 面向?qū)ο笤O(shè)計(jì)(OOD)l 面向?qū)ο髮?shí)現(xiàn)(OOP)l 面向?qū)ο鬁y試(OOT)面向?qū)ο蟮幕靖拍?l 1. 對(duì)象(object)l 對(duì)象是指一組屬性以及這組屬性上的專用操作的封裝體。l 屬性(attribute)通常是一些數(shù)據(jù),有時(shí)它也可以是另一個(gè)對(duì)象。每個(gè)對(duì)象都有它自己的屬性值,表示該對(duì)象的狀態(tài)。對(duì)象中的屬性只能通過該對(duì)象所提供的操作來存取或修改。l 操作(operation)(也稱方法或服務(wù))規(guī)定了對(duì)象的行為,表示對(duì)象所能提供的服務(wù)。l面向?qū)ο蟮?/p>

47、基本概念 l 封裝(encapsulation)是一種信息隱蔽技術(shù),用戶只能看見對(duì)象封裝界面上的信息,對(duì)象的內(nèi)部實(shí)現(xiàn)對(duì)用戶是隱蔽的。封裝的目的是使對(duì)象的使用者和生產(chǎn)者分離,使對(duì)象的定義和實(shí)現(xiàn)分開。 l 一個(gè)對(duì)象通常可由對(duì)象名、屬性和操作三部分組成。面向?qū)ο蟮幕靖拍?l 2. 類(class)l 類是一組具有相同屬性和相同操作的對(duì)象的集合。一個(gè)類中的每個(gè)對(duì)象都是這個(gè)類的一個(gè)實(shí)例(instance)。l 類是創(chuàng)建對(duì)象的模板,從同一個(gè)類實(shí)例化的每個(gè)對(duì)象都具有相同的結(jié)構(gòu)和行為。面向?qū)ο蟮幕靖拍?面向?qū)ο蟮幕靖拍?l 3. 繼承(inheritance)l 繼承是類間的基本關(guān)系,它是基于層次關(guān)系的

48、不同類共享數(shù)據(jù)和操作的一種機(jī)制。父類中定義了其所有子類的公共屬性和操作,在子類中除了定義自己特有的屬性和操作外,可以繼承其父類(或祖先類)的屬性和操作,還可以對(duì)父類(或祖先類)中的操作重新定義其實(shí)現(xiàn)方法。面向?qū)ο蟮幕靖拍?如果一個(gè)子類只有唯一一個(gè)父類,這種繼承稱為單一繼承。如果一個(gè)子類有一個(gè)以上的父類,這種繼承稱為多重繼承。面向?qū)ο蟮幕靖拍?l 4. 消息(message)l 消息傳遞是對(duì)象間通信的手段,一個(gè)對(duì)象通過向另一個(gè)對(duì)象發(fā)送消息來請(qǐng)求其服務(wù)。一個(gè)消息通常包括接收對(duì)象名、調(diào)用的操作名和適當(dāng)?shù)膮?shù)(如果有必要的話)。消息只告訴接收對(duì)象需要完成什么操作,但并不指示接收者怎樣完成操作。消息

49、完全由接收者解釋,接收者獨(dú)立決定采用什么方法完成所需的操作。面向?qū)ο蟮幕靖拍?5. 多態(tài)性(polymorphism) 多態(tài)性是指同一個(gè)操作作用于不同的對(duì)象上可以有不同的解釋,并產(chǎn)生不同的執(zhí)行結(jié)果。例如“畫”操作,作用在“矩形”對(duì)象上,則在屏幕上畫一個(gè)矩形,作用在“圓”對(duì)象上,則在屏幕上畫一個(gè)圓。也就是說,相同操作的消息發(fā)送給不同的對(duì)象時(shí),每個(gè)對(duì)象將根據(jù)自己所屬類中定義的這個(gè)操作去執(zhí)行,從而產(chǎn)生不同的結(jié)果。面向?qū)ο蟮幕靖拍?l 6. 動(dòng)態(tài)綁定(dynamic binding)l 動(dòng)態(tài)綁定是指在程序運(yùn)行時(shí)才將消息所請(qǐng)求的操作與實(shí)現(xiàn)該操作的方法連接起來。l 傳統(tǒng)的程序設(shè)計(jì)語言的過程調(diào)用與目標(biāo)代

50、碼的連接(即調(diào)用哪個(gè)過程)放在程序運(yùn)行前(即編譯時(shí))進(jìn)行(稱為靜態(tài)綁定),而動(dòng)態(tài)綁定則是把這種連接推遲到運(yùn)行時(shí)才進(jìn)行。l 動(dòng)態(tài)綁定是一種在運(yùn)行時(shí)確定被執(zhí)行代碼的技術(shù)。面向?qū)ο筇卣鱨 抽象性:強(qiáng)調(diào)實(shí)體的本質(zhì)、內(nèi)在的屬性,忽略一些無關(guān)緊要的屬性。類實(shí)現(xiàn)了對(duì)象的數(shù)據(jù)(即狀態(tài))和行為的抽象,是對(duì)象的共性的抽象。l 封裝性:指所有軟件部件內(nèi)部都有明確的范圍以及清楚的外部邊界。每個(gè)軟件部件都有友好的界面接口,軟件部件的內(nèi)部實(shí)現(xiàn)與外部可訪問性分離。 l 共享性:面向?qū)ο蠹夹g(shù)在不同級(jí)別上促進(jìn)了共享。統(tǒng)一建模語言UMLl 統(tǒng)一建模語言(UML,Unified Modeling Language)是一種基于面向?qū)?/p>

51、象的可視化建模語言。l UML用豐富的圖形符號(hào)隱含表示了模型元素的語法,而用這些圖形符號(hào)組成元模型表達(dá)語義,組成模型描述系統(tǒng)結(jié)構(gòu)(或稱為靜態(tài)特征)以及行為(或稱為動(dòng)態(tài)特征)。l UML的模型元素:l 一類模型元素用于表示模型中的某個(gè)概念,如類、對(duì)象、用例、結(jié)點(diǎn)、構(gòu)件、包、接口等;l 另一類模型元素用于表示模型元素之間相互連接的關(guān)系,主要有關(guān)聯(lián)、泛化(表示一般與特殊的關(guān)系)、依賴、聚集(表示整體與部分的關(guān)系)等。UML模型元素UML視圖l 五種視圖:l 用例視圖從用戶角度表達(dá)系統(tǒng)功能;l 結(jié)構(gòu)視圖主要使用類圖和對(duì)象圖描述系統(tǒng)靜態(tài)結(jié)構(gòu);l 行為視圖展示系統(tǒng)動(dòng)態(tài)行為及其并發(fā)性;l 實(shí)現(xiàn)視圖展示系統(tǒng)實(shí)

52、現(xiàn)的結(jié)構(gòu)和行為特征;l 部署視圖展示系統(tǒng)的實(shí)現(xiàn)環(huán)境和構(gòu)件是如何在物理結(jié)構(gòu)中部署的。1 類與對(duì)象 面向?qū)ο蟮拈_發(fā)方法的基本任務(wù)是建立對(duì)象模型,是軟件系統(tǒng)開發(fā)的基礎(chǔ)。UML中的類圖(Class Diagram)與對(duì)象圖(Object Diagram)表達(dá)了對(duì)象模型的靜態(tài)結(jié)構(gòu),能夠有效地建立專業(yè)領(lǐng)域的計(jì)算機(jī)系統(tǒng)對(duì)象模型。一、類圖與對(duì)象圖 對(duì)象類簡稱類,是面向?qū)ο竽P偷淖罨镜哪P驮?,用類圖來描述。類圖(Class diagram)由系統(tǒng)中使用的類以及它們之間的關(guān)系組成,是描述系統(tǒng)的一種圖式。類及類型名均用英文大寫字母開頭,屬性及操作名為小寫字母開頭。類圖是構(gòu)建其它圖的基礎(chǔ)。 對(duì)象是對(duì)象類的實(shí)例(i

53、nstance),用對(duì)象圖來描述。UML中類之間的關(guān)系 UML中類的關(guān)系有關(guān)聯(lián)(association) 、聚集(aggregation) 、泛化(generalization) 、 依賴(depending)和細(xì)化 (refinement)。7、其它關(guān)聯(lián) 遞歸關(guān)聯(lián)(Recursive association) 即一個(gè)類到自身的關(guān)聯(lián)。聚集(aggregation) 聚集是一種特殊的關(guān)聯(lián),它指出類間的“整體-部分”關(guān)系。又分為:1、共享聚集(shared aggregation) 其“部分”對(duì)象可以是任意“整體”對(duì)象的一部分。當(dāng)“整體”端的重?cái)?shù)不是1時(shí),稱聚集是共享的。、組合聚集(composition aggregation) 其“整體”(重?cái)?shù)為0、1)擁有它的“部分”。部分僅屬于同一對(duì)

溫馨提示

  • 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)論