交通軟件系統(tǒng)分析與設(shè)計(jì)201603_第1頁
交通軟件系統(tǒng)分析與設(shè)計(jì)201603_第2頁
交通軟件系統(tǒng)分析與設(shè)計(jì)201603_第3頁
交通軟件系統(tǒng)分析與設(shè)計(jì)201603_第4頁
交通軟件系統(tǒng)分析與設(shè)計(jì)201603_第5頁
已閱讀5頁,還剩163頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

交通軟件系統(tǒng)分析與設(shè)計(jì)李志慧E_mail:lizhih@電話考教材張海藩編著,《軟件工程導(dǎo)論》,清華大學(xué)出版社鄭人杰編,《實(shí)用軟件工程》,清華大學(xué)出版社,1997年《數(shù)據(jù)結(jié)構(gòu)》,嚴(yán)蔚敏等編著,清華大學(xué)出版社數(shù)據(jù)結(jié)構(gòu),殷人坤,清華大學(xué)出版社第一章緒論交通軟件系統(tǒng)分析與設(shè)計(jì)關(guān)注的問題:1、

軟件系統(tǒng)開發(fā)過程

2、

數(shù)據(jù)結(jié)構(gòu)+算法

數(shù)據(jù)結(jié)構(gòu):相互之間存在一種或多種特點(diǎn)關(guān)系的數(shù)據(jù)元素的結(jié)合。由某一數(shù)據(jù)對(duì)象及該對(duì)象中所有數(shù)據(jù)成員之間的關(guān)系組成,表示為

data_structure={D,R}數(shù)據(jù)結(jié)構(gòu)線性表

棧和隊(duì)列

數(shù)組和廣義表

二叉樹

樹和森林

算法查找排序算法評(píng)價(jià):空間復(fù)雜度

時(shí)間復(fù)雜度

生命周期各階段的任務(wù)(1)問題定義

問題定義階段必須回答的關(guān)鍵問題是:”要解決的問題是什么?”通過問題定義階段的工作,系統(tǒng)分析員應(yīng)該提出關(guān)于問題性質(zhì)、工程目標(biāo)和規(guī)模的書面報(bào)告。(2)可行性研究該階段要回答的關(guān)鍵問題是:“對(duì)于上一個(gè)階段所確定的問題有行得通的解決辦法嗎?”

可行性研究的結(jié)果是使用部門負(fù)責(zé)人做出是否繼續(xù)進(jìn)行這項(xiàng)工程的決定的重要依據(jù)。

(3)需求分析該階段的任務(wù)不是具體地解決問題,而是準(zhǔn)確地確定“為下解決這個(gè)問題,目標(biāo)系統(tǒng)必須做什么”,主要是確定目標(biāo)系統(tǒng)必須具備哪些功能。

(4)總體設(shè)計(jì)該階段必須回答的關(guān)鍵問題是:“概括地說,應(yīng)該如何解決這個(gè)問題?生命周期各階段的任務(wù)(5)詳細(xì)設(shè)計(jì)

總體設(shè)計(jì)階段以比較抽象概括的方式提出了解決問題的辦法。詳細(xì)設(shè)計(jì)階段的任務(wù)就是把解法具體化,也就是回答下面這個(gè)關(guān)鍵問題:“應(yīng)該怎樣具體地實(shí)現(xiàn)這個(gè)系統(tǒng)呢?”(6)編碼和單元測(cè)試

該階段的關(guān)鍵任務(wù)是寫出正確的容易理解、容易維護(hù)的程序模塊。(7)綜合測(cè)試該階段的關(guān)鍵任務(wù)是通過各種類型的測(cè)試(及相應(yīng)的調(diào)試)使軟件達(dá)到預(yù)定的要求。(8)軟件維護(hù)

維護(hù)階段的關(guān)鍵任務(wù)是,通過各種必要的維護(hù)活動(dòng)使系統(tǒng)持久地滿足用戶的需要。

結(jié)構(gòu)分析過程小節(jié)階段關(guān)鍵問題結(jié)束標(biāo)準(zhǔn)問題定義問題是什么關(guān)于規(guī)模和目標(biāo)的報(bào)告書可行性研究有可行的解嗎?系統(tǒng)的高層邏輯模型:數(shù)據(jù)流圖、成本/效益分析需求分析系統(tǒng)必須做什么?系統(tǒng)的邏輯模型:數(shù)據(jù)流因、數(shù)據(jù)字典、算法描述總體設(shè)計(jì)概括地說,應(yīng)該如何解決這個(gè)問題?可能的解法:系統(tǒng)硫程圖、成本/效益分析推薦的系統(tǒng)結(jié)構(gòu):層次圖或結(jié)構(gòu)圖詳細(xì)設(shè)計(jì)怎樣具體地實(shí)現(xiàn)這個(gè)系統(tǒng)?編碼規(guī)格說明:

HIPO圖或PDL編碼和單元測(cè)試正確的程序模塊源程序清單‘單元測(cè)試方案和結(jié)果綜合測(cè)試符合要求的軟件綜合測(cè)試方案和結(jié)果;完整一致的軟件配置維護(hù)持久地滿足用戶需要的軟件完整準(zhǔn)確的維護(hù)記錄軟件生存期模型軟件生存期模型是跨越整個(gè)生存期的系統(tǒng)開發(fā)、運(yùn)作和維護(hù)所實(shí)施的全部過程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架瀑布模型螺旋模型噴泉模型智能模型瀑布模型瀑布模型特點(diǎn):(1)為一個(gè)整體開發(fā)模型(2)開發(fā)前可完整、準(zhǔn)確地定義系統(tǒng)各個(gè)階段

適用條件:

適用開發(fā),如:編譯系統(tǒng),數(shù)據(jù)庫系統(tǒng)于功能和性能明確、完整、無重大變化地軟件等螺旋模型螺旋模型(原型開發(fā)模型)特點(diǎn):(1)降低軟件開發(fā)風(fēng)險(xiǎn)(2)按照軟件的演化規(guī)律進(jìn)行開發(fā)

(3)開發(fā)初期不要求開發(fā)人員準(zhǔn)確、無二義了解系統(tǒng)適用:適用與復(fù)雜系統(tǒng)的開發(fā)或系統(tǒng)目標(biāo)不明確的情況噴泉模型噴泉模型

噴泉模型是一種以用戶需求為動(dòng)力,以對(duì)象作為驅(qū)動(dòng)的模型它以面向?qū)ο蟮能浖_發(fā)方法為基礎(chǔ),以用戶需求作為噴泉模型的源泉。特點(diǎn)(1)噴泉模型規(guī)定軟件開發(fā)過程有4個(gè)階段,即分析、系統(tǒng)設(shè)計(jì)、軟件設(shè)計(jì)和實(shí)現(xiàn)(2)噴泉模型的各階段相互重疊,它反映了軟件過程并行性的特點(diǎn)。(3)噴泉模型以分析為基礎(chǔ),資源消耗呈塔型,在分析階段消耗的資源最多‘(4)噴泉模型反映了軟件過程迭代的自然特性,從高層返回低層無資源消耗軟件開發(fā)方法結(jié)構(gòu)化方法結(jié)構(gòu)化方法由結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化程序設(shè)計(jì)構(gòu)成,它是一種面向數(shù)據(jù)流的開發(fā)方法Jackson方法一種面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法維也納開發(fā)方法一種形式化的開發(fā)方法,軟件的需求用嚴(yán)格的形式語言描述,把描述模型逐步變換成目標(biāo)系統(tǒng)面向?qū)ο蟮拈_發(fā)方法面向?qū)ο箝_發(fā)方法包括面向?qū)ο蠓治觯∣OA)、面向?qū)ο笤O(shè)計(jì)(OOD)和面向?qū)ο髮?shí)現(xiàn)。

其包括Booch、Coad、OMT方法統(tǒng)一建模語言UML第二章可行性分析可行性分析的任務(wù)

1)“問題是否可行?”2)目的:可行性研究的目的就是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決。3)首先需要進(jìn)一步分析和澄清問題定義。在澄清了問題定義之后,分析員應(yīng)該導(dǎo)出系統(tǒng)的邏輯模型。然后從系統(tǒng)邏輯模型出發(fā),探索若干種可供選擇的主要解法(即系統(tǒng)實(shí)現(xiàn)方案)。對(duì)每種解法都應(yīng)該仔細(xì)研究它的可行性,一般說來,至少應(yīng)該從下述三方面研究每種解法的可行性:(1)技術(shù)可行性

使用現(xiàn)有的技術(shù)能實(shí)現(xiàn)這個(gè)系統(tǒng)嗎?(2)經(jīng)濟(jì)可行性

這個(gè)系統(tǒng)的經(jīng)濟(jì)效益能超過它的開發(fā)成本嗎?(3)操作可行性

系統(tǒng)的操作方式在這個(gè)用戶組織內(nèi)行得通嗎?可行性研究的步驟

(1)復(fù)查系統(tǒng)規(guī)模和目標(biāo)(2)研究目前正在使用的系統(tǒng)(3)導(dǎo)出新系統(tǒng)的高層邏輯模型(4)重新定義問題(5)導(dǎo)出和評(píng)價(jià)供選擇的解法(6)推薦行動(dòng)方針(7)草擬開發(fā)計(jì)劃(8)書寫文檔提交審查

系統(tǒng)流程圖

系統(tǒng)流程圖的作用:系統(tǒng)流程圖是描述物理系統(tǒng)的工具。所謂物理系統(tǒng),就是一個(gè)具體實(shí)現(xiàn)的系統(tǒng),也就是描述一個(gè)單位、組織的信息處理的具體實(shí)現(xiàn)的系統(tǒng)。在進(jìn)行可行性研究過程中,要以概括的形式描述現(xiàn)有系統(tǒng)的高層邏輯模型,并通過概要的設(shè)計(jì)變成所建議系統(tǒng)的物理模型,可以用系統(tǒng)流程圖來描述所建議系統(tǒng)的物理模型。系統(tǒng)流程圖可用圖形符號(hào)來表示系統(tǒng)中的各個(gè)元素,表達(dá)了系統(tǒng)中各個(gè)元素之間的信息流動(dòng)的情況畫系統(tǒng)流程圖時(shí),首先要搞清業(yè)務(wù)處理過程以及處理中的各個(gè)元素,同時(shí)要理解系統(tǒng)的流程圖的各個(gè)符號(hào)的含義,選擇相應(yīng)的符號(hào)來代表系統(tǒng)中的各個(gè)元素。所畫的系統(tǒng)流程圖要反映出系統(tǒng)的處理流程。系統(tǒng)流程圖的符號(hào)系統(tǒng)流程圖的符號(hào)例子某裝配廠有一座存放零件的倉庫,倉庫中現(xiàn)有的各種零件的數(shù)量以及每種零件的庫存量臨界值等數(shù)據(jù)記錄在庫存清單主文件中。當(dāng)倉庫中零件數(shù)量有變化時(shí),應(yīng)該及時(shí)修改庫存清單主文件,如果那種零件的庫存量少于它的庫存量臨界值,則應(yīng)該報(bào)告給采購部門以便定貨,規(guī)定每天向采購部門送一次定貨報(bào)告。該裝配廠使用一臺(tái)小型計(jì)算機(jī)處理更新庫存清單主文件和產(chǎn)生定貨報(bào)告的任務(wù)。零件庫存量的每一次變化稱為一個(gè)事務(wù),由放在倉庫中的CRT終端輸入到計(jì)算機(jī)中;系統(tǒng)中的庫存清單程序?qū)κ聞?wù)進(jìn)行處理,更新存儲(chǔ)在磁盤上的庫存清單主文件,并且把必要的定貨信息寫在磁帶上。最后,每天由報(bào)告生成程序讀一次磁帶,并且打印出定貨報(bào)告分層面對(duì)復(fù)雜的系統(tǒng)時(shí),一個(gè)比較好的方法是分層次地描繪這個(gè)系統(tǒng)。首先用一張高層次的系統(tǒng)流程圖描繪系統(tǒng)總體格朗,表明系統(tǒng)的關(guān)鍵功能。然后分別把每個(gè)關(guān)鍵功能擴(kuò)展到適當(dāng)?shù)脑敿?xì)程度,面在單獨(dú)的一頁紙上。這種分層次的描繪方法便于閱讀者按從抽象到具體的過程逐步深入地了解一個(gè)復(fù)雜的系統(tǒng)。系統(tǒng)流程圖與程序流程圖系統(tǒng)流程圖表達(dá)的是信息在系統(tǒng)各部件之間流動(dòng)的情況,而不是對(duì)信息進(jìn)行加工處理的控制過程,因此盡管系統(tǒng)流程圖使用的某些符號(hào)和程序流程圖中用的符號(hào)相同,但是它卻是物理數(shù)據(jù)流因而不是程序流程圖。

數(shù)據(jù)流圖

數(shù)據(jù)流圖描繪系統(tǒng)的邏輯模型,圖中沒有任何具體的物理元素,只是描繪信息在系統(tǒng)中流動(dòng)和處理的情況。設(shè)計(jì)數(shù)據(jù)流圖只需考慮系統(tǒng)必須完成的基本邏輯功能,完全不需要考慮如何具體地實(shí)現(xiàn)這些功能,所以它也是軟件設(shè)計(jì)的很好的出發(fā)點(diǎn)。符號(hào)例子假設(shè)一家工廠的采購部每天需要一張定貨報(bào)表,報(bào)表按零件編號(hào)排序,表中列出所有需要再次定貨的零件。對(duì)于每個(gè)需要再次定貨的零件應(yīng)該列出下述數(shù)據(jù):零件編號(hào),零件名稱,定貨數(shù)量,目前價(jià)格,主要供應(yīng)者,次要供應(yīng)者。零件入庫或出庫稱為事務(wù)、通過放在倉庫中的CRT終端把事務(wù)報(bào)告給定貨系統(tǒng)。當(dāng)某種零件的庫存數(shù)量少于庫存量臨界值時(shí)就應(yīng)該再次定貨。數(shù)據(jù)流圖有四種成分:源點(diǎn)或終點(diǎn),處理,數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)流。分析方法:數(shù)據(jù)字典

數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合,也就是對(duì)數(shù)據(jù)流圖中包含的所有元柬的定義的集合。數(shù)據(jù)流圖和數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型—般說來,數(shù)據(jù)字典由四類元素組成:

1)數(shù)據(jù)流

2)數(shù)據(jù)流分量(即,數(shù)據(jù)元素)3)數(shù)據(jù)存儲(chǔ)

4)處理。數(shù)據(jù)處理工具(如IPO圖或PDL)描述成本/效益分析

第三章需要分析需求分析是軟件定義時(shí)期的最后一個(gè)階段,它的基本任務(wù)是準(zhǔn)確地回答“系統(tǒng)必須做什么?”這個(gè)問題。需求分析的任務(wù)是對(duì)目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求??尚行匝芯侩A段產(chǎn)生的文檔,持別是數(shù)據(jù)流圖,是需求分折的出發(fā)點(diǎn)。需求分析的結(jié)果是系統(tǒng)開發(fā)的基礎(chǔ),關(guān)系到工程的成敗和軟件產(chǎn)品的質(zhì)量。因此,必須用行之有效的方法對(duì)軟件需求進(jìn)行嚴(yán)格的審查驗(yàn)證。需求分析的任務(wù)

1、確定對(duì)系統(tǒng)的綜合要求

1)系統(tǒng)功能要求

2)系統(tǒng)性能要求

3)運(yùn)行要求

4)將來可能提出的要求

2、分析系統(tǒng)的數(shù)據(jù)要求

數(shù)據(jù)結(jié)構(gòu)表示數(shù)據(jù)元素之間的邏輯關(guān)系

3、導(dǎo)出系統(tǒng)的邏輯模型

導(dǎo)出系統(tǒng)的詳細(xì)的邏輯模型,通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和主要的處理算法描述這個(gè)邏輯模型。

4、修正系統(tǒng)開發(fā)計(jì)劃

5、開發(fā)原型系統(tǒng)需求分析的特點(diǎn)

1、問題的復(fù)雜性。

2、交流障礙

3、不完備性和不一致性

4、需求易變性需求分析的原則

1、必須能夠表達(dá)相理解問題的數(shù)據(jù)域和功能域。

2、可以把一個(gè)復(fù)雜問題按功能進(jìn)行分解并可逐層細(xì)化3、建模需求分析的方法1、功能分解方法2、結(jié)構(gòu)化分析方法3、信息建模方法4、面向?qū)ο蠓治龇椒ㄐ枨笳f明書的主要內(nèi)容

(1)前言:說明項(xiàng)目的目的、范圍,所用的術(shù)語的定義;用到的縮略語和縮寫詞;資料。

(2)項(xiàng)目概述:產(chǎn)品的描述;產(chǎn)品的功能;用戶的特點(diǎn),一般的約束等。

(3)具體需求:說明每個(gè)功能的輸入、處理和輸出;外部接口需求,包括用戶接口、軟件接口、硬件接口相通信接口;性能需求;設(shè)計(jì)約束;共他需求,包括數(shù)據(jù)庫、操作等第二節(jié)需求分析過程

分析步驟:1、建立用例關(guān)系圖2、細(xì)化數(shù)據(jù)流圖3、用戶復(fù)查4、細(xì)化數(shù)據(jù)流圖5、修正開發(fā)計(jì)劃6、書寫文檔7、審查和復(fù)審3.3.2用例模型(Usecasemodel)用例圖(Usecasediagram)從用戶角度描述系統(tǒng)功能,并指出各功能的操作者用例模型描述的是外部執(zhí)行者(Actor)所理解的系統(tǒng)功能。它描述了待開發(fā)系統(tǒng)的功能需求。用例模型由若干個(gè)用例圖構(gòu)成,用例圖中主要描述執(zhí)行者和用例之間的關(guān)系。在UML中,構(gòu)成用例圖的主要元素是用例和執(zhí)行者及其它們之間的聯(lián)系。創(chuàng)建用例模型的工作包括:

定義系統(tǒng)、確定執(zhí)行者和用例、描述用例、定義用例間的關(guān)系、確認(rèn)模型。一、執(zhí)行者(Actor)執(zhí)行者是指用戶在系統(tǒng)中所扮演的角色。執(zhí)行者在用例圖中是用類似人的圖形來表示,但執(zhí)行者可以是人,也可以是一個(gè)外界系統(tǒng)。注意:用例總是由執(zhí)行者啟動(dòng)的。如何確定執(zhí)行者:1、誰使用系統(tǒng)的主要功能(主執(zhí)行者)?2、誰需要從系統(tǒng)獲得對(duì)日常工作的支持和服務(wù)?3、需要誰維護(hù)管理系統(tǒng)的日常運(yùn)行(副執(zhí)行者)?4、系統(tǒng)需要控制哪些硬件設(shè)備?5、系統(tǒng)需要與其它哪些系統(tǒng)交互?6、誰需要使用系統(tǒng)產(chǎn)生的結(jié)果(值)?一、執(zhí)行者5.3.2用例模型供貨買飲料取貨款客戶供貨人收銀員圖5.15自動(dòng)售貨系統(tǒng)回例1二、用例二、用例(usecase)

從本質(zhì)上講,一個(gè)用例是用戶與計(jì)算機(jī)之間的一次典型交互作用。在UML中,用例被定義成系統(tǒng)執(zhí)行的一系列動(dòng)作(功能)。用例有以下特點(diǎn):用例捕獲某些用戶可見的需求,實(shí)現(xiàn)一個(gè)具體的用戶目標(biāo)。用例由執(zhí)行者激活,并將結(jié)果值反饋給執(zhí)行者。用例必須具有功能上的完整描述。如何確定用例:1、與系統(tǒng)實(shí)現(xiàn)有關(guān)的主要問題是什么?2、系統(tǒng)需要哪些輸入/輸出?這些輸入/輸出從何而來?到哪里去?3、執(zhí)行者需要系統(tǒng)提供哪些功能?4、執(zhí)行者是否需要對(duì)系統(tǒng)中的信息進(jìn)行讀、創(chuàng)建、修改、刪除或存儲(chǔ)?二、用例5.3.2用例模型回例15.3.3用例圖

圖5.16用例圖的元素5.3.3用例圖用例圖描述了系統(tǒng)的功能需求,它是從執(zhí)行者的角度來理解系統(tǒng),由“執(zhí)行者”、“用例”和“用例之間的關(guān)系”3類模型元素構(gòu)成。圖中還有另外兩種類型的連接,即《使用》和《擴(kuò)展》關(guān)系,是兩種不同形式的泛化關(guān)系。 用例2用例A用例執(zhí)行者用例1用例3用例B《使用》《使用》《擴(kuò)展》(a)(b)(c)《Use》表示一個(gè)用例使用另一個(gè)用例?!禘xtend》通過向被擴(kuò)展的用例添加動(dòng)作來擴(kuò)展用例。用例圖實(shí)例用例圖實(shí)例圖5.18應(yīng)用生命周期用例圖圖5.17金融貿(mào)易系統(tǒng)貿(mào)易經(jīng)理風(fēng)險(xiǎn)分析設(shè)置邊界進(jìn)行交易交易估價(jià)更新帳目《使用》《使用》《擴(kuò)展》營銷人員超越邊界評(píng)價(jià)記帳系統(tǒng)銷售人員5.3.4用例圖實(shí)例應(yīng)用設(shè)計(jì)者應(yīng)用提供者

改變應(yīng)用運(yùn)行應(yīng)用

實(shí)現(xiàn)應(yīng)用<<使用>><<擴(kuò)展>><<展開>>應(yīng)用操作者<<實(shí)現(xiàn)>>設(shè)計(jì)應(yīng)用5.3.4用例圖實(shí)例例1建立項(xiàng)目與資源管理系統(tǒng)的Usecase圖

系統(tǒng)的主要功能是:項(xiàng)目管理,資源管理和系統(tǒng)管理。項(xiàng)目管理包括項(xiàng)目的增加、刪除、更新。資源管理包括對(duì)資源和技能的添加、刪除和更新。系統(tǒng)管理包括系統(tǒng)的啟動(dòng)和關(guān)閉,數(shù)據(jù)的存儲(chǔ)和備份等功能。1、分析確定系統(tǒng)的執(zhí)行者(角色)到確定到確定

項(xiàng)目管理員、資源管理員、系統(tǒng)管理員、備份數(shù)據(jù)系統(tǒng)。項(xiàng)目管理,資源管理和系統(tǒng)管理。2、確定用例3、對(duì)用例進(jìn)行分解,畫出下層的Usecase圖

對(duì)上層的用例進(jìn)行分解,并將執(zhí)行者分配到各層次的Usecase圖中。角色:角色職責(zé):角色職責(zé)識(shí)別:圖5.19角色描述模板

還應(yīng)畫出相應(yīng)的執(zhí)行者描述模板及用例描述模板。例1項(xiàng)目與資源管理系統(tǒng)(PRMS)添加技能刪除技能更新技能資源管理員添加資源刪除資源更新資源查找技能《Use》查找資源《Use》《Use》《Use》把技能指定給資源從資源中清除技能《Extend》《Extend》5.21資源管理UseCase圖UseCase圖可以自頂而下不斷精化,抽象出不同層次的UseCase圖。5.3.4用例圖實(shí)例系統(tǒng)管理員項(xiàng)目管理員資源管理員資源管理項(xiàng)目管理系統(tǒng)管理備份系統(tǒng)圖5.20PRMS高層UseCase圖例1項(xiàng)目與資源管理系統(tǒng)(PRMS)項(xiàng)目管理員添加項(xiàng)目刪除項(xiàng)目更新項(xiàng)目添加活動(dòng)刪除活動(dòng)更新活動(dòng)查找項(xiàng)目《Use》添加任務(wù)《Use》把技能指定給資源從資源中清除技能《Extend》《Extend》刪除任務(wù)更新任務(wù)《Extend》《Extend》《Extend》《Extend》《Extend》《Extend》圖5.22項(xiàng)目管理UseCase圖5.3.4用例圖實(shí)例系統(tǒng)管理員圖5.23系統(tǒng)管理UseCase圖添加技能存儲(chǔ)數(shù)據(jù)啟動(dòng)系統(tǒng)關(guān)閉系統(tǒng)查找技能《Use》《Use》《Use》備份資源數(shù)據(jù)備份項(xiàng)目數(shù)據(jù)《Extend》《Extend》《Use》備份數(shù)據(jù)備份系統(tǒng)

現(xiàn)有一醫(yī)院病房監(jiān)護(hù)系統(tǒng),病癥監(jiān)視器安置在每個(gè)病房,將病人的病癥信號(hào)實(shí)時(shí)傳送到中央監(jiān)視系統(tǒng)進(jìn)行分析處理。在中心值班室里,值班護(hù)士使用中央監(jiān)視系統(tǒng)對(duì)病員的情況進(jìn)行監(jiān)控,根據(jù)醫(yī)生的要求隨時(shí)打印病人的病情報(bào)告,定期更新病歷,當(dāng)病癥出現(xiàn)異常時(shí),系統(tǒng)會(huì)立即自動(dòng)報(bào)警,并實(shí)時(shí)打印病人的病情報(bào)告,立及更新病歷。要求根據(jù)現(xiàn)場(chǎng)情景,對(duì)醫(yī)院病房監(jiān)護(hù)系統(tǒng)進(jìn)行需求分析,建立系統(tǒng)的Usecasemodel。

請(qǐng)對(duì)系統(tǒng)需求進(jìn)行分析!經(jīng)過初步的需求分析,得到系統(tǒng)功能要求:1、監(jiān)視病員的病癥(血壓、體溫、脈搏等)2、定時(shí)更新病歷3、病員出現(xiàn)異常情況時(shí)報(bào)警。4、隨機(jī)地產(chǎn)生某一病員的病情報(bào)告。

例2醫(yī)院病房監(jiān)護(hù)系統(tǒng)產(chǎn)生病情報(bào)告監(jiān)視病情更新病歷情景教學(xué)二、簡(jiǎn)單的需求分析說明

系統(tǒng)名稱:醫(yī)院病房監(jiān)護(hù)系統(tǒng)根據(jù)分析系統(tǒng)主要實(shí)現(xiàn)以下功能:

1、病癥監(jiān)視器可以將采集到的病癥信號(hào)(組合),格式化后實(shí)時(shí)的傳送到中央監(jiān)護(hù)系統(tǒng)。

2、中央監(jiān)護(hù)系統(tǒng)將病人的病癥信號(hào)開解后與標(biāo)準(zhǔn)的病癥信號(hào)庫里的病癥信號(hào)的正常值進(jìn)行比較,當(dāng)病癥出現(xiàn)異常時(shí)系統(tǒng)自動(dòng)報(bào)警。

3、當(dāng)病癥信號(hào)異常時(shí),系統(tǒng)自動(dòng)更新病歷并打印病情報(bào)告。

4、值班護(hù)士可以查看病情報(bào)告并進(jìn)行打印。

5、醫(yī)生可以查看病情報(bào)告,要求打印病情報(bào)告,也可以查看或要求打印病歷。

6、系統(tǒng)定期自動(dòng)更新病歷。退出上頁首頁下頁末頁需求分析三、用UML的靜態(tài)建模機(jī)制定義并描述系統(tǒng)的靜態(tài)結(jié)構(gòu)

(一)建立系統(tǒng)的用例圖

1、通過以下六個(gè)問題識(shí)別角色

(1)誰使用系統(tǒng)的主要功能?

(2)誰需要系統(tǒng)的支持以完成日常工作任務(wù)?

(3)誰負(fù)責(zé)維護(hù),管理并保持系統(tǒng)正常運(yùn)行?

(4)系統(tǒng)需要應(yīng)付(或處理)哪些硬設(shè)備?

(5)系統(tǒng)需要和哪些外部系統(tǒng)交互?

(6)誰(或什么)對(duì)系統(tǒng)運(yùn)行產(chǎn)生的結(jié)果(值)感興趣?需求分析

通過回答這六個(gè)問題以后,再進(jìn)一步分析可以識(shí)別出本系統(tǒng)的四個(gè)角色:值班護(hù)士,醫(yī)生,病人,標(biāo)準(zhǔn)病癥信號(hào)庫。角色描述模板角色:病人角色職責(zé):提供病癥信號(hào)角色職責(zé)識(shí)別:負(fù)責(zé)生成、實(shí)時(shí)提供各種病癥信號(hào)。角色:值班護(hù)士角色職責(zé):負(fù)責(zé)監(jiān)視病人的病情變化角色職責(zé)識(shí)別:

(1)使用系統(tǒng)主要功能

(2)對(duì)系統(tǒng)運(yùn)行結(jié)果感興趣角色:標(biāo)準(zhǔn)病癥信號(hào)庫角色職責(zé):負(fù)責(zé)向系統(tǒng)提供病癥信號(hào)的正常值角色職責(zé)識(shí)別:

(1)負(fù)責(zé)保持系統(tǒng)正常運(yùn)行

(2)與系統(tǒng)交互角色:醫(yī)生角色職責(zé):對(duì)病人負(fù)責(zé),負(fù)責(zé)處理病情的變化角色職責(zé)識(shí)別:

(1)需要系統(tǒng)支持以完成其日常工作

(2)對(duì)系統(tǒng)運(yùn)行結(jié)果感興趣通過分析可以初步識(shí)別出系統(tǒng)的用例為:中央監(jiān)護(hù),病癥監(jiān)護(hù),提供標(biāo)準(zhǔn)病癥信號(hào),病歷管理,病情報(bào)告管理。頂層用例圖為:角色描述

通過分析可以初步識(shí)別出系統(tǒng)的用例為:中央監(jiān)護(hù),病癥監(jiān)護(hù),提供標(biāo)準(zhǔn)病癥信號(hào),病歷管理,病情報(bào)告管理。頂層用例圖為:提供標(biāo)準(zhǔn)病癥信號(hào)病歷管理病人標(biāo)準(zhǔn)病癥信號(hào)庫

醫(yī)生值班護(hù)士病癥監(jiān)護(hù)病情報(bào)告管理中央監(jiān)護(hù)《使用》《使用》《使用》角色描述將用例細(xì)化,可以得到分解的用例:1、中央監(jiān)護(hù)

分解為:a分解信號(hào)將從病癥監(jiān)護(hù)器傳送來的組合病癥信號(hào)分解為系統(tǒng)可以處理的信號(hào)。

b比較信號(hào)將病人的病癥信號(hào)與標(biāo)準(zhǔn)信號(hào)比較。

c報(bào)警如果病癥信號(hào)發(fā)生異常(即高于峰值),發(fā)出報(bào)警信號(hào)。

d數(shù)據(jù)格式化將處理后的數(shù)據(jù)格式化以便寫入病歷庫。2、病癥監(jiān)護(hù)

分解為:e信號(hào)采集采集病人的病癥信號(hào)。

f模數(shù)轉(zhuǎn)化將采集來的模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào)。

g信號(hào)數(shù)據(jù)組合將采集到的脈搏,血壓等信號(hào)數(shù)據(jù)組合為一組信號(hào)數(shù)據(jù)。

h采樣頻率改變根據(jù)病人的情況改變監(jiān)視器采樣頻率。3、提供標(biāo)準(zhǔn)病癥信號(hào)

i(此用例不分解)用例細(xì)化4、病歷管理

分解為:j生成病歷

k查看病歷

l更新病歷

m打印病歷

5、病情報(bào)告

分解為:n顯示病情報(bào)告

在顯示器上顯示病情

o打印病情報(bào)告在打印機(jī)打印病情報(bào)告用例細(xì)化給出細(xì)化的用例圖病人模數(shù)轉(zhuǎn)化數(shù)據(jù)格式化值班護(hù)士報(bào)警信號(hào)采集比較信號(hào)標(biāo)準(zhǔn)病癥信號(hào)庫

醫(yī)生信號(hào)數(shù)據(jù)組合采樣頻率改變提供標(biāo)準(zhǔn)病癥信號(hào)生成病歷查看病歷更新病歷打印病歷顯示病情報(bào)告打印病情報(bào)告分解信號(hào)《Extend》《Extend》《Extend》《use》《use》《use》《use》《use》《use》《use》《use》細(xì)化的用例圖第三節(jié)概念模型和規(guī)范化

用戶的數(shù)據(jù)要求----需要哪些數(shù)據(jù),數(shù)據(jù)之間有哪些聯(lián)系,數(shù)據(jù)本身有哪些性質(zhì),數(shù)據(jù)的結(jié)構(gòu)等)。用戶的處理要求---對(duì)數(shù)據(jù)進(jìn)行哪些處理,每個(gè)處理的邏輯功能。

概念性模型(信息模型)---一種面向問題的數(shù)據(jù)模型,是按照用戶的觀點(diǎn)來對(duì)數(shù)據(jù)和信息建模。表示概念性數(shù)據(jù)模型的最常用方法是實(shí)體-聯(lián)系方法,采用用ER圖的方式,這種表示又稱為ER模型。ER模型

實(shí)體:客觀世界中存在的且可區(qū)分的事物。聯(lián)系:客觀事物之間的聯(lián)系(三類--1:1,1:N,M:N)屬性:實(shí)體或聯(lián)系所具有的性質(zhì)。教師姓名性別職稱職務(wù)教師號(hào)教1課程N(yùn)課程號(hào)課名學(xué)時(shí)學(xué)分學(xué)M學(xué)生N學(xué)號(hào)姓名性別系年級(jí)成績(jī)

范式通常用范式定義消除數(shù)據(jù)的冗余度(略)ER關(guān)系圖與數(shù)據(jù)庫映射關(guān)系描述關(guān)系數(shù)據(jù)庫數(shù)據(jù)以2維表的形式進(jìn)行表示,每個(gè)表的列表示字段、行表示數(shù)據(jù)庫表的一個(gè)記錄

Primarykey(主鍵):字段的唯一標(biāo)識(shí)Foreignkey(外鍵):其它表的主鍵在該表的參考SQL(結(jié)構(gòu)化查詢語言):可以進(jìn)行數(shù)據(jù)庫表記錄的操作.SQL語言基礎(chǔ)1、創(chuàng)建數(shù)據(jù)庫CREATEDATABASEdatabase-name

2、刪除數(shù)據(jù)庫dropdatabasedbname

3、創(chuàng)建新表createtabletabname(col1type1[notnull][primarykey],col2type2[notnull],..)

4、刪除新表droptabletabname

5、添加主鍵:Altertabletabnameaddprimarykey(col)

刪除主鍵:Altertabletabnamedropprimarykey(col)

6、創(chuàng)建索引:create[unique]indexidxnameontabname(col….)

刪除索引:dropindexidxname

SQL語言基礎(chǔ)7、創(chuàng)建視圖:createviewviewnameasselectstatement

刪除視圖:dropviewviewname

8、選擇:select*fromtable1where范圍

插入:insertintotable1(field1,field2)values(value1,value2)

刪除:deletefromtable1where范圍

更新:updatetable1setfield1=value1where范圍

E-R與數(shù)據(jù)庫映射E-R模型映射為數(shù)據(jù)庫表:屬性的映射每個(gè)實(shí)體映射為一個(gè)表實(shí)體的每個(gè)屬性映射為一個(gè)字段每個(gè)實(shí)體的個(gè)體映射為數(shù)據(jù)庫的一個(gè)記錄N:M關(guān)系映射為一個(gè)單獨(dú)的表1:N關(guān)系利用外鍵進(jìn)行映射例子:E-R關(guān)系模型與數(shù)據(jù)庫表的映射ICitycityNameAirportairportCodeairportName**ServescityNameHoustonAlbanyMunichHamburgCityTablecityNameHoustonHoustonAlbanyMunichHamburgServesTableairportCodeIAHHOUALBMUCHAMAirportTableairportCodeIAHHOUALBMUCHAMairportNameIntercontinentalHobbyAlbanyCountyMunichAirportHamburgAirportPrimaryKey

N:M(多對(duì)多關(guān)系):將關(guān)系映射為單個(gè)表SeparateTable例子:E-R關(guān)系模型與數(shù)據(jù)庫表的映射II

會(huì)議transactionID職員portfolioID...NportfolioID...PortfolioTabletransactionIDTransactionTableportfolioIDForeignKey1:N或N:1關(guān)系:隱藏外鍵的處理1例子:E-R關(guān)系模型與數(shù)據(jù)庫表的映射Ⅲ

doordoorIDskyskyID...*doorIDTransactionTabledoorID1-To-1關(guān)系門與鑰匙關(guān)系

習(xí)題給出E_R的數(shù)據(jù)庫設(shè)計(jì)教師姓名性別職稱職務(wù)教師號(hào)教1課程N(yùn)課程號(hào)課名學(xué)時(shí)學(xué)分學(xué)M學(xué)生N學(xué)號(hào)姓名性別系年級(jí)E_R與數(shù)據(jù)結(jié)構(gòu)映射關(guān)系數(shù)據(jù)元素四種基本結(jié)構(gòu):

(1)集合結(jié)構(gòu)(2)線性結(jié)構(gòu)

(3)樹狀結(jié)構(gòu)(4)圖狀結(jié)構(gòu)

應(yīng)用舉例線性表、樹、圖數(shù)據(jù)內(nèi)存的存儲(chǔ)順序存儲(chǔ)結(jié)構(gòu)、鏈?zhǔn)酱鎯?chǔ)問題數(shù)據(jù)結(jié)構(gòu)的核心:(1)關(guān)注數(shù)據(jù)元素在計(jì)算機(jī)內(nèi)存的存儲(chǔ)問題;(2)根據(jù)數(shù)據(jù)關(guān)系,利用數(shù)據(jù)基本操作來描述與表達(dá)算法數(shù)據(jù)結(jié)構(gòu)基本形式線性表:n個(gè)數(shù)據(jù)元素的有限序列如:樹:n個(gè)節(jié)點(diǎn)的有限集圖C語言描述C語言描述Typedefstruct{數(shù)據(jù)類型屬性1;數(shù)據(jù)類型屬性2;

數(shù)據(jù)類型屬性n;}structname;如:typedefstruct{Inti;chars;}Course;Coursetraffic[100],*signal,;線性表順序存儲(chǔ):

數(shù)組描述鏈?zhǔn)酱鎯?chǔ):指針動(dòng)態(tài)分配如線性表的元素若將上例改為合并為一個(gè)新的非遞減的集合,則算法為線性鏈表循環(huán)鏈表雙向鏈表?xiàng)#合冗M(jìn)后出鏈棧鏈棧解決內(nèi)存空間預(yù)分配不足問題如何出棧和入棧??隊(duì)列:先進(jìn)先出第四節(jié).圖形工具

層次方框圖:用樹形結(jié)構(gòu)的一系列多層次的矩形框描繪數(shù)據(jù)的層次結(jié)構(gòu)。

產(chǎn)品

硬件

軟件

服務(wù)

處理機(jī)

存儲(chǔ)器外部設(shè)備系統(tǒng)軟件應(yīng)用軟件軟件服務(wù)硬件維修培訓(xùn)操作系統(tǒng)編譯程序軟件工具層次方框圖的一個(gè)例子

注意:層次方框圖即可以表示數(shù)據(jù)的層次結(jié)構(gòu),也可以表示程序的層次結(jié)構(gòu)4.圖形工具(續(xù))

Warnier圖:用樹形結(jié)構(gòu)描繪數(shù)據(jù)的層次結(jié)構(gòu)。軟件產(chǎn)品系統(tǒng)軟件操作系統(tǒng)(P1)編譯程序(P2)軟件工具編輯程序(P3)測(cè)試驅(qū)動(dòng)程序(P4)設(shè)計(jì)輔助程序(P5)應(yīng)用軟件⊕5.驗(yàn)證軟件需求

從哪幾個(gè)方面驗(yàn)證軟件需求的正確性(四個(gè)方面)一致性:任何一條需求不能和其他需求互相矛盾。完整性:規(guī)格說明書應(yīng)該包括用戶需要的每一個(gè)功能和性能?,F(xiàn)實(shí)性:指定的需求是用現(xiàn)有的硬件、軟件技術(shù)可以實(shí)現(xiàn)的。有效性:需求是正確有效的,確實(shí)能解決用戶面對(duì)的問題。

驗(yàn)證軟件需求的方法一致性:人工審查---》形式化描述軟件需求,軟件工具自動(dòng)驗(yàn)證?,F(xiàn)實(shí)性:參考以往的開發(fā)經(jīng)驗(yàn),分析,仿真或模擬完整性和一致性:原型系統(tǒng)第四章總體設(shè)計(jì)總體設(shè)計(jì)的基本目的就是回答“概括地說,系統(tǒng)應(yīng)該如何實(shí)現(xiàn)?”這個(gè)問題。總體設(shè)計(jì)又稱為概要設(shè)計(jì)或初步設(shè)計(jì),其任務(wù):(1)劃分出組成系統(tǒng)的物理元素----程序、文件、數(shù)據(jù)庫、人工過程和文檔通過這個(gè)階段的工作將劃分出組成系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫、人工過程和文檔等等,但是每個(gè)物理元素仍然處于黑盒子級(jí),這些黑盒子里的具體內(nèi)容將在以后仔細(xì)設(shè)計(jì)。(2)總體設(shè)計(jì)階段的另一項(xiàng)重要任務(wù)是設(shè)計(jì)軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個(gè)程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。1總體設(shè)計(jì)的過程(兩個(gè)主要階段):

系統(tǒng)設(shè)計(jì):確定系統(tǒng)的具體實(shí)現(xiàn)方案。結(jié)構(gòu)設(shè)計(jì):確定軟件結(jié)構(gòu)。設(shè)想供選擇的方案選取合理的方案推薦最佳方案功能分解設(shè)計(jì)軟件結(jié)構(gòu)數(shù)據(jù)庫設(shè)計(jì)制訂測(cè)試計(jì)劃書寫文檔數(shù)據(jù)流圖

系統(tǒng)流程圖組成系統(tǒng)的物理元素清單成本/效益分析實(shí)現(xiàn)系統(tǒng)的進(jìn)度計(jì)劃

系統(tǒng)說明用戶手冊(cè)測(cè)試計(jì)劃詳細(xì)的實(shí)現(xiàn)計(jì)劃數(shù)據(jù)庫設(shè)計(jì)結(jié)果審查和復(fù)審2軟件設(shè)計(jì)的概念和原理模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮恼f明。

(1)模塊化:把程序劃分成若干個(gè)模塊,每個(gè)模塊完成一個(gè)子功能,把這些模塊集總起來組成一個(gè)整體,可以完成指定的功能,滿足問題的功能。C(P1+P2)>C(P1)+C(P2)E(P1+P2)>E(P1)+E(P2)成本模塊數(shù)目成本/模塊接口成本最小成本區(qū)

(2)抽象(3)信息隱蔽和局部化

信息隱蔽原理指出:使得一個(gè)模塊內(nèi)包含的信息(過程和數(shù)據(jù))對(duì)于不需要這些信息的模塊來說,是不能訪問的。所謂局部化是指把一些關(guān)系密切的軟件元素物理地放得彼此靠近。模塊化和軟件成本耦合:一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量,耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度,進(jìn)入或訪問一個(gè)模塊的點(diǎn),以及通過接口的數(shù)據(jù)。數(shù)據(jù)耦合:模塊之間通過參數(shù)交換數(shù)據(jù)信息??刂岂詈希耗K之間傳遞的參數(shù)含有控制信息。公共環(huán)境耦合:兩個(gè)或多個(gè)模塊通過一個(gè)公共數(shù)據(jù)環(huán)境相互作用。內(nèi)容耦合:如果出現(xiàn)下列情況之一,兩個(gè)模塊間就發(fā)生了內(nèi)容耦(1)一個(gè)模塊訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù);2)一個(gè)模塊不通過正常入口而轉(zhuǎn)到另一個(gè)模塊的內(nèi)部;3)兩個(gè)模塊有一部分程序代碼重疊4)一個(gè)模塊有多個(gè)入口。

設(shè)計(jì)原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共環(huán)境耦合,完全不用內(nèi)容耦合。數(shù)據(jù)耦合控制耦合公共環(huán)境耦合內(nèi)容耦合低高(4)模塊獨(dú)立----每個(gè)模塊完成一個(gè)相對(duì)獨(dú)立的子功能,并且和其他模塊之間的關(guān)系很簡(jiǎn)單。模塊獨(dú)立的概念是模塊化、抽象、信息隱蔽和局部化概念的直接結(jié)果,獨(dú)立的優(yōu)點(diǎn):(1)有效的模塊化的軟件比較容易開發(fā)

(2)獨(dú)立的模塊比較容易測(cè)試和維護(hù)模塊的獨(dú)立程度兩個(gè)定性標(biāo)準(zhǔn)度量:內(nèi)聚和耦合耦合衡量不同模塊彼此間互相依賴的緊密程度;內(nèi)聚衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。2軟件設(shè)計(jì)的概念和原理

----耦合非直接耦合數(shù)據(jù)耦合特征耦合控制耦合外部耦合公共耦合內(nèi)容耦合弱耦合中耦合較強(qiáng)耦合強(qiáng)耦合模塊1模塊2模塊3模塊4數(shù)據(jù)耦合通過簡(jiǎn)單變量交換數(shù)據(jù)特征耦合通過數(shù)據(jù)結(jié)構(gòu)交換數(shù)據(jù)非直接耦合模塊之間沒有信息傳遞模塊A模塊B模塊C模塊D模塊L模塊N全局性數(shù)據(jù)結(jié)構(gòu)公共耦合Flag=1?S1S2模塊1控制耦合模塊之間傳遞的是控制信息TF全局性簡(jiǎn)單變量外部耦合模塊A

模塊B內(nèi)容耦合

訪問其它模塊的內(nèi)部數(shù)據(jù)直接跳到其他模塊內(nèi)部執(zhí)行2軟件設(shè)計(jì)的概念和原理(續(xù)1)內(nèi)聚:一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度。偶然內(nèi)聚:一個(gè)模塊完成一組任務(wù),任務(wù)之間的關(guān)系很松散。公共語句。邏輯內(nèi)聚:若干個(gè)邏輯功能類似的任務(wù)組成一個(gè)模塊。(如模板函數(shù))時(shí)間內(nèi)聚:若干個(gè)任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行。如初始化工作。低內(nèi)聚中內(nèi)聚高內(nèi)聚過程內(nèi)聚:模塊內(nèi)的處理元素是相關(guān)的,且必須以特定次序執(zhí)行。通信內(nèi)聚:模塊中所有元素都使用同一個(gè)輸入數(shù)據(jù),和/或產(chǎn)生同一個(gè)輸出數(shù)據(jù)。順序內(nèi)聚:模塊中所有處理元素和同一個(gè)功能密切相關(guān),且這些處理必須順序執(zhí)行。功能內(nèi)聚:所有處理元素屬于一個(gè)整體,完成一個(gè)單一的功能。模塊A模塊B模塊CS1;S2;模塊A模塊B模塊C模塊A模塊B模塊C模塊D2軟件設(shè)計(jì)的概念和原理(續(xù)2)

改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性模塊規(guī)模應(yīng)該適中深度、寬度、扇入、扇出都應(yīng)適當(dāng)扇入:一個(gè)模塊的扇人表明有多少個(gè)上級(jí)模塊直接調(diào)用它,扇入越大則共享該模塊的上級(jí)模塊數(shù)目越多。扇出:扇出是一個(gè)模塊直接控制(調(diào)用)的模塊數(shù)目,扇出過大意味著模塊過分復(fù)雜,需要控制和協(xié)調(diào)過多的下級(jí)模塊。模塊的作用域應(yīng)該在控制域之內(nèi)模塊的作用域:為受該模塊內(nèi)一個(gè)判定影響的所有模塊的集合。模塊的控制域:這個(gè)模塊本身以及所有直接或間接從屬于它的模塊的集合。力爭(zhēng)降低模塊接口的復(fù)雜程度設(shè)計(jì)單入口單出口的模塊模塊的功能應(yīng)該可以預(yù)測(cè)3啟發(fā)式規(guī)則4圖形工具

層次圖和HIPO圖層次圖用來描述軟件結(jié)構(gòu),層次圖+IPO圖=HIPO圖正文加工系統(tǒng)輸入輸出編輯加標(biāo)題存儲(chǔ)檢索編目錄格式化添加刪除插入修改合并列表

結(jié)構(gòu)圖方框之間的箭頭表示模塊的調(diào)用關(guān)系,帶注釋的箭頭表示模塊間來回傳遞的信息:空心圓—數(shù)據(jù),實(shí)心圓—控制信息。結(jié)構(gòu)圖還可以表示模塊的選擇調(diào)用或循環(huán)調(diào)用參見:P645面向數(shù)據(jù)流的設(shè)計(jì)方法1)變換流2)事務(wù)流3)設(shè)計(jì)過程時(shí)間輸入流輸出流變換流外部表示內(nèi)部表示信息變換流:信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。當(dāng)數(shù)據(jù)流圖具有這些持征時(shí),這種信息流就叫作變換流。這種數(shù)據(jù)流是“以事務(wù)為中心的”.也就是說,數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理T,這個(gè)處理根據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動(dòng)作序列中選出一個(gè)來執(zhí)行。這類數(shù)據(jù)流應(yīng)該劃為一類特殊的數(shù)據(jù)流,稱為事務(wù)流。事務(wù)T事務(wù)中心活動(dòng)通路事務(wù)中心T完成下述任務(wù):接受輸入數(shù)據(jù)(事務(wù))分析每個(gè)事務(wù)以確定它的類型根據(jù)事務(wù)類型選取一條活動(dòng)通路變換流與事務(wù)流三要素變換流三要素輸入、輸出、變換中心

事務(wù)流三要素事務(wù)、事務(wù)中心、活動(dòng)通路5面向數(shù)據(jù)流的設(shè)計(jì)方法(續(xù))精化數(shù)據(jù)流圖流類型區(qū)分事務(wù)中心和數(shù)據(jù)接收通路映射成事務(wù)結(jié)構(gòu)區(qū)分輸入和輸出分支映射成變換結(jié)構(gòu)用啟發(fā)式設(shè)計(jì)規(guī)則精化軟件結(jié)構(gòu)導(dǎo)出接口描述和全程數(shù)據(jù)結(jié)構(gòu)復(fù)查詳細(xì)設(shè)計(jì)事務(wù)分析變換分析5面向數(shù)據(jù)流的設(shè)計(jì)方法(續(xù))

變換分析:汽車數(shù)字儀表板功能:

1)通過A/D轉(zhuǎn)換實(shí)現(xiàn)傳感器和微處理器接口,

2)在發(fā)光二極管面板上顯示數(shù)據(jù),

3)指示每小時(shí)英里數(shù)(mph),行駛的里程,每加倫油行駛的英里數(shù)(mpg)等等。

4)指示加速或減速;

5)超速警告:如果車速超過55英里/小時(shí),則發(fā)出超速警告鈴聲。A/D轉(zhuǎn)數(shù)計(jì)數(shù)器流量傳感器微處理機(jī)里程表車速表油效表油管系統(tǒng)加速/減速指示超速報(bào)警5面向數(shù)據(jù)流的設(shè)計(jì)方法(續(xù))讀旋轉(zhuǎn)信號(hào)收集和求平均轉(zhuǎn)換成轉(zhuǎn)/分(rpm)計(jì)算里程確定加速/減速產(chǎn)生加速/減速顯示產(chǎn)生里程顯示計(jì)算mph和超速值計(jì)算燃料消耗發(fā)出鈴聲產(chǎn)生mph顯示產(chǎn)生mpg顯示讀和校核計(jì)算gph旋轉(zhuǎn)信號(hào)信號(hào)/秒SPS△SPSSPSrpmrpm箭頭指示上箭頭⊕⊕水平線下箭頭英里超速值顯示鈴聲mphmphmpggph燃料流燃料流傳感器信號(hào)Mpg顯示數(shù)字儀表板控制接受傳感器信號(hào)數(shù)據(jù)轉(zhuǎn)換控制驅(qū)動(dòng)儀表板輸入控制變換控制輸入控制5面向數(shù)據(jù)流的設(shè)計(jì)方法(續(xù))設(shè)計(jì)步驟:復(fù)查基本系統(tǒng)模型復(fù)查并精化數(shù)據(jù)流圖確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性確定輸入流和輸出流的邊界,劃分變換或事務(wù)中心完成“第一級(jí)分解”CmCaCtCe第一級(jí)分解的方法5面向數(shù)據(jù)流的設(shè)計(jì)方法(續(xù))ADBCCmCaCBDA接受傳感器信號(hào)轉(zhuǎn)換成rpm收集SPS讀旋轉(zhuǎn)信號(hào)計(jì)算gph讀燃料流數(shù)字儀表板控制確定加/減速計(jì)算mph計(jì)算gpg計(jì)算里程驅(qū)動(dòng)儀表板加速/減速顯示顯示mpg顯示mph顯示里程發(fā)出鈴聲發(fā)光二極管顯示5面向數(shù)據(jù)流的設(shè)計(jì)方法(續(xù))數(shù)字儀表板控制接受傳感器信號(hào)轉(zhuǎn)換成rpm讀旋轉(zhuǎn)信號(hào)計(jì)算gph讀燃料流數(shù)字儀表板控制確定加/減速計(jì)算mph計(jì)算gpg計(jì)算里程驅(qū)動(dòng)儀表板加速/減速顯示顯示mpg顯示mph顯示里程發(fā)出鈴聲發(fā)光二極管顯示數(shù)字儀表板軟件系統(tǒng)經(jīng)過調(diào)整后的結(jié)構(gòu)圖注意:紅色模塊的位置有所調(diào)整5面向數(shù)據(jù)流的設(shè)計(jì)方法(續(xù))

事務(wù)分析432總控接收通路C通路B通路A通路調(diào)度A_CTL142+1321B_CTLC_CTL

設(shè)計(jì)優(yōu)化設(shè)計(jì)優(yōu)化應(yīng)該力求做到在有效的模塊化的前提下使用最少量的模塊,以及在能夠滿足信息要求的前提下使用最簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)。‘?dāng)?shù)據(jù)流圖軟件結(jié)構(gòu)總體設(shè)計(jì)說明書的主要內(nèi)容如下:(1)引言:編寫目的,背景,定義,參考資料。(2)總體設(shè)計(jì):需求規(guī)定,運(yùn)行環(huán)境,基本設(shè)計(jì)概念和處理流程,結(jié)構(gòu)。(3)接口設(shè)計(jì):用戶接口,外部接口,內(nèi)部接口。(4)運(yùn)行設(shè)計(jì):運(yùn)行模塊組合.運(yùn)行控制,運(yùn)行時(shí)間。(5)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):邏輯結(jié)構(gòu)設(shè)計(jì),物理結(jié)構(gòu)設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)與程序的關(guān)系,(6)系統(tǒng)出錯(cuò)處理設(shè)計(jì):出錯(cuò)信息,補(bǔ)救措施.系統(tǒng)恢復(fù)設(shè)計(jì)。第五章詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì):過程設(shè)計(jì)設(shè)計(jì)方法:結(jié)構(gòu)程序設(shè)計(jì)結(jié)構(gòu)序設(shè)計(jì):一種程序設(shè)計(jì)技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)詳細(xì)設(shè)計(jì)階段的目標(biāo):確定應(yīng)該怎樣具體地實(shí)現(xiàn)所要求的系統(tǒng)。精確地描述整個(gè)目標(biāo)系統(tǒng),從而在編碼階段可以把這個(gè)描述翻譯成用某種程序設(shè)計(jì)語言書寫的程序。詳細(xì)設(shè)計(jì)的基本任務(wù)1.算法設(shè)計(jì)用某種圖形、表格、語言等工具將每個(gè)模塊處理過程的詳細(xì)算法描述出來2.?dāng)?shù)據(jù)結(jié)構(gòu)設(shè)計(jì)對(duì)于需求分析、概要設(shè)計(jì)確定的概念性的數(shù)據(jù)類型進(jìn)行確切的定義。

3.物理設(shè)計(jì)對(duì)數(shù)據(jù)庫進(jìn)行物理設(shè)計(jì),即確定數(shù)據(jù)庫的物理結(jié)構(gòu)。物理結(jié)構(gòu)主要指數(shù)據(jù)庫的存儲(chǔ)記錄格式、存儲(chǔ)記錄安排和存儲(chǔ)方法,這些都依賴于具體所使用的數(shù)據(jù)庫系統(tǒng)。

4.其他設(shè)計(jì)根據(jù)軟件系統(tǒng)的類型,還可能要進(jìn)行以下設(shè)計(jì):(1)代碼設(shè)計(jì);為了提高數(shù)據(jù)的輸入、分類、存儲(chǔ)及檢索等操作的效率空間,對(duì)數(shù)據(jù)庫中的某些數(shù)據(jù)項(xiàng)的值要進(jìn)行代碼設(shè)計(jì)。(2)輸入/輸出格式設(shè)計(jì)。(3)人機(jī)對(duì)話設(shè)計(jì):對(duì)于一個(gè)實(shí)時(shí)系統(tǒng),用戶與計(jì)算機(jī)顛蟹對(duì)話,因此要進(jìn)行對(duì)話方式、內(nèi)容及格式的具體設(shè)計(jì)。5.編寫詳細(xì)設(shè)計(jì)說明書詳細(xì)設(shè)計(jì)說明書有下列的主要內(nèi)容:(1)引言:包括編寫目的、背景、定義(2)程序系統(tǒng)的組織結(jié)構(gòu)。(3)程序l(標(biāo)識(shí)符)設(shè)計(jì)說明:(4)程序2(標(biāo)識(shí)符)設(shè)計(jì)說明。(5)程序N(標(biāo)識(shí)符)設(shè)計(jì)說明6.評(píng)審結(jié)構(gòu)程序設(shè)計(jì)順序、選擇、循環(huán)三種基本結(jié)構(gòu)BexpAABexpAAexpTFTTFF順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)1)“While”型循環(huán)2)Do….Until型循環(huán)結(jié)構(gòu)程序設(shè)計(jì)技術(shù)好處:(1)自頂向下逐步求精的方法符合人類解決復(fù)雜問題的普遍規(guī)律。(2)先全局后局部、先整體后細(xì)節(jié)、先抽象后具體的逐步求精過程開發(fā)出的程序有清晰的層次結(jié)構(gòu),容易閱讀和理解。

(3)不使用GoTo語句僅使用單入口單出口的控制結(jié)構(gòu).使得程序的靜態(tài)結(jié)構(gòu)和它的動(dòng)態(tài)執(zhí)行情況比較一致。

(4)控制結(jié)構(gòu)有確定的邏輯模式,編寫程序代碼只限于使用很少幾種直截了當(dāng)?shù)姆绞?,因此源程序清晰流暢,易讀易懂而且容易測(cè)試。(5)程序清晰和模塊化使得在修改和重新設(shè)計(jì)一個(gè)軟件時(shí)可以重用的代碼量最大。(6)程序的邏輯結(jié)構(gòu)清晰,有利于程序正確性證明。習(xí)題1.For(inti=0;i<n;i++){A}2.while(i<100){A}3.Do{A}While(i<100)非結(jié)構(gòu)化程序轉(zhuǎn)換方法:1、設(shè)置標(biāo)志位2、變換結(jié)構(gòu)1結(jié)構(gòu)程序設(shè)計(jì)

經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì):順序,選擇,當(dāng)型循環(huán)擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì):順序,選擇+多分支,當(dāng)型循環(huán)+直到型循環(huán)修正的結(jié)構(gòu)程序設(shè)計(jì):順序,選擇+多分支,當(dāng)型循環(huán)+直到型循環(huán),break結(jié)構(gòu)詳細(xì)設(shè)計(jì)的工具程序流程圖開始或停止準(zhǔn)備選擇多分支選擇注釋預(yù)先定義的處理,子程序循環(huán)下界循環(huán)上界處理控制流2詳細(xì)設(shè)計(jì)的工具----盒圖(N_S圖)S1S2S3條件FTElse部分Then部分Case條件值1值2。。。值nCase1部分Case2部分Casen部分循環(huán)條件Do-While

部分循環(huán)條件Do-Until

部分A特點(diǎn):1)功能域(既一個(gè)特定控制結(jié)構(gòu)的作用域)明確

2)不可能任意轉(zhuǎn)移控制

3)很容易確定局部和全程數(shù)據(jù)的作用域

4)很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)Nassi&Shneiderman2詳細(xì)設(shè)計(jì)的工具----PAD圖P1P2P1P2條件CPnP2P1WHILECPUNTILCPdef順序選擇Case型多分支選擇當(dāng)型循環(huán)直到型循環(huán)語句標(biāo)號(hào)定義2詳細(xì)設(shè)計(jì)的工具----PAD圖P1P2P3P4CP5P2defP6P3P8CUntilC3UNTILC2P9P10PAD圖的主要優(yōu)點(diǎn):使用PAD符號(hào)設(shè)計(jì)的程序必然是結(jié)構(gòu)化的程序.PAD圖所描繪的程序結(jié)構(gòu)十分清晰.用PAD圖表現(xiàn)程序邏輯,易讀,易記,易懂.容易將PAD圖轉(zhuǎn)換成高級(jí)語言源程序.可用軟件工具實(shí)現(xiàn)自動(dòng)轉(zhuǎn)換.即可以表示程序邏輯,也可以描繪數(shù)據(jù)結(jié)構(gòu).支持自頂向下,逐步求精方法的使用.2詳細(xì)設(shè)計(jì)的工具----判定表程序流程圖、N-S圖、PAD圖或過程設(shè)計(jì)語言(PDL)都不易清楚的描述含有多重嵌套的條件選擇。判定表可以清晰的表示復(fù)雜的條件組合與其對(duì)應(yīng)的處理之間的關(guān)系。例子假設(shè)某航空公司規(guī)定,乘客可以免費(fèi)托運(yùn)重量不超過30公斤的行李。當(dāng)行李重量超過30公斤時(shí),對(duì)頭等艙的國內(nèi)乘客超重部分每公斤收費(fèi)4元,對(duì)其它艙的國內(nèi)乘客超重部分每公斤收費(fèi)6元,對(duì)外國乘客超重部分每公斤收費(fèi)比國內(nèi)乘客多一倍,對(duì)殘疾乘客超重部分每公斤收費(fèi)比正常乘客少一半。用判定表來表示與上述每種條件組合相對(duì)應(yīng)的動(dòng)作。所有條件條件組合矩陣與每種條件組合所對(duì)應(yīng)的動(dòng)作表所有可能的動(dòng)作列表國內(nèi)乘客頭等艙殘疾乘客行李≤30kg免費(fèi)(W-30)*2(W-30)*3(W-30)*4(W-30)*6(W-30)*8(W-30)*2TTTFTTTTTTTTTTFFFFFFFFFFFFFFFFFFF×××××××××2詳細(xì)設(shè)計(jì)的工具----判定樹行李費(fèi)算法行李重量

W>30國內(nèi)乘客外國乘客頭等艙其它艙殘疾乘客----(W-30)*2正常乘客----(W-30)*4殘疾乘客----(W-30)*3正常乘客----(W-30)*6頭等艙其它艙殘疾乘客----(W-30)*4正常乘客----(W-30)*8殘疾乘客----(W-30)*6正常乘客----(W-30)*12行李重量

W≤30免費(fèi)過程設(shè)計(jì)語言(PDL)PDL應(yīng)該具有下述特點(diǎn):

(1)關(guān)鍵字的固定語法,它提供了結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和模塊化的待點(diǎn)。為了使結(jié)構(gòu)清晰和可讀性好,通常在所有可能嵌套使用的控制結(jié)構(gòu)的頭和尾都有關(guān)鍵字,例如:if...fi(或endif)等等。

(2)自然語言的自由語法,它描述處理待點(diǎn)。

(3)數(shù)據(jù)說明的手段。應(yīng)該既包括簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)(例如純量和數(shù)組),又包括復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(例如,鏈表或?qū)哟蔚臄?shù)據(jù)結(jié)構(gòu))。

(4)模塊定義和調(diào)用的技術(shù),應(yīng)該提供各種接口描述模式。PDL作為一種設(shè)計(jì)工具的優(yōu)點(diǎn):(1)可以作為注釋直接插在源程序中間。這樣做能促使維護(hù)人員在修改程序代碼的同時(shí)也相應(yīng)地修改PDL注釋,因此有助于保持文檔和程序的一致性,提高了文檔的質(zhì)量。

(2)可以使用普通的正文編輯程序或文字處理系統(tǒng),很方便池完成PDL的書寫和編輯工作。

(3)已經(jīng)有自動(dòng)處理程序存在,而且可以自動(dòng)由PDL生成程序代碼。

PDL的缺點(diǎn)是不如圖形工具形象直觀,描述復(fù)雜的條件組合百動(dòng)作間的對(duì)應(yīng)關(guān)系時(shí),不如判定表清晰簡(jiǎn)單。Jackson程序設(shè)計(jì)方法特點(diǎn):面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法,也就是用數(shù)據(jù)結(jié)構(gòu)作為程序設(shè)計(jì)的基礎(chǔ)方法:首先需要分析確定數(shù)據(jù)結(jié)構(gòu),并且用適當(dāng)?shù)墓ぞ咔逦孛枥L數(shù)據(jù)結(jié)構(gòu)。Jackson圖數(shù)據(jù)元素彼此間的邏輯關(guān)系只有順序、選擇和重復(fù)三類順序結(jié)構(gòu)順序結(jié)構(gòu)的數(shù)據(jù)由一個(gè)或多個(gè)數(shù)據(jù)元素組成,每個(gè)元素按確定次序出現(xiàn)一次。選擇結(jié)構(gòu)選擇結(jié)構(gòu)的數(shù)據(jù)包含兩個(gè)或多個(gè)數(shù)據(jù)元素,每次使用這個(gè)數(shù)據(jù)時(shí)按一定條件從這些數(shù)據(jù)元素中選擇一個(gè)。重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)的數(shù)據(jù),根據(jù)使用時(shí)的條件由一個(gè)數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成。Jackson圖優(yōu)點(diǎn):·便于表示層次結(jié)構(gòu),而且是對(duì)結(jié)構(gòu)進(jìn)行自頂向下分解的有力工具;·形象直觀可瀆性好;·既能表示數(shù)據(jù)結(jié)構(gòu)也能表示程序結(jié)構(gòu)改進(jìn)的Jackson圖Jackson方法Jackson結(jié)構(gòu)程序設(shè)計(jì)方法基本上由下述五個(gè)步騾組成: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)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元。

3.用下述三條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson:第一,為每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們?cè)跀?shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個(gè)處理框第二,根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,分別為它們面上對(duì)應(yīng)的處理框;第三,根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,次分別為它們畫上對(duì)應(yīng)的處理框。總之,描繪程序結(jié)構(gòu)的Jackson圖應(yīng)該綜合輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)的層次關(guān)系而導(dǎo)出來。

4.列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。

5.用偽碼表示程序。例子:

一個(gè)正文文件由若干個(gè)記錄組成,每個(gè)記錄是一個(gè)字符串。要求統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù),以及文件中空格字符的總個(gè)數(shù)。要求的輸出數(shù)據(jù)格式是,每復(fù)制一行輸入字符串之后,另起一行印出這個(gè)字符串中的空格數(shù),最后印出文件中空格的總個(gè)數(shù)。5詳細(xì)設(shè)計(jì)的工具----程序復(fù)雜度的定量度量

利用軟件設(shè)計(jì)的基本原理和概念可以定性的衡量軟件模塊的質(zhì)量。但定量的度量程序復(fù)雜程度的方法很有價(jià)值:估算程序中軟件故障的數(shù)量;估算軟件開發(fā)的工作量;比較兩個(gè)不同的設(shè)計(jì)或兩個(gè)不同算法的友劣;作為模塊規(guī)模的精確上限。程序定量度量方法是一個(gè)有待進(jìn)一步研究的重要領(lǐng)域。1)McCabe方法程序圖–把程序流程圖中每個(gè)處理符號(hào)都退化成一個(gè)點(diǎn),原來連接不同處理符號(hào)的箭頭變成連接不同點(diǎn)的有向弧,這樣得到的有向圖就稱為程序圖。程序圖僅僅描述程序內(nèi)部的控制流程,完全不表現(xiàn)對(duì)數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。入口點(diǎn):程序圖中開始點(diǎn)后面的那個(gè)節(jié)點(diǎn)。出口點(diǎn):程序圖中停止點(diǎn)前面的那個(gè)節(jié)點(diǎn)。用McCabe方法度量得出的結(jié)果稱為程序的環(huán)形復(fù)雜度。程序的環(huán)形復(fù)雜度=強(qiáng)連通圖中線性無關(guān)的有向環(huán)的個(gè)數(shù)。5詳細(xì)設(shè)計(jì)的工具----程序復(fù)雜度的定量度量2)環(huán)形復(fù)雜度的計(jì)算方法在一個(gè)強(qiáng)連通的有向圖中,線性無關(guān)環(huán)的個(gè)數(shù)由以下公式確定:

V(G)=m–n+p

其中:V(G)----有向圖G中的環(huán)數(shù)。

m----有向圖G中的弧數(shù)。

n----有向圖G中的節(jié)點(diǎn)數(shù)。

p----有向圖G中的分離部分的數(shù)目。(對(duì)于正常的程序,p=1)

一般來說,由于程序圖不是強(qiáng)連通的,要直接應(yīng)用以上結(jié)論到程序圖中還不行,因此要對(duì)程序圖進(jìn)行擴(kuò)展,從其出口點(diǎn)到入口點(diǎn)增畫一條虛弧,則原程序圖必然成為強(qiáng)連通圖。這樣就可以應(yīng)用以上公式來計(jì)算環(huán)形復(fù)雜度。3)環(huán)形復(fù)雜度的用途:程序的環(huán)形復(fù)雜度與程序控制流的復(fù)雜程度,也就是與程序結(jié)構(gòu)的復(fù)雜程度有關(guān)。程序內(nèi)分支數(shù)或循環(huán)個(gè)數(shù)增加時(shí),環(huán)形復(fù)雜度就增加,因此它是對(duì)測(cè)試難度的一種度量,也能對(duì)軟件最終的可靠性給出某種預(yù)測(cè)。McCabe發(fā)現(xiàn):環(huán)形復(fù)雜度高的程序往往是最困難、最容易出問題的程序。實(shí)踐表明:模塊規(guī)模以V(G)≤10為宜。也就是說,V(G)=10是模塊規(guī)模的一個(gè)更科學(xué)更精確的上限。5詳細(xì)設(shè)計(jì)的工具----程序復(fù)雜度的定量度量開始K=0L=0TOTAL=0輸入ADowhileTOTAL≤1000andA≠0A>0TOTAL=TOTAL+AK=K+1輸入AL=L+1輸出K,L,TOTAL停止abcdefghijkabcdefghjikV(G)=13-11+1=313條弧11

個(gè)節(jié)點(diǎn)1

個(gè)獨(dú)立部分第六章編碼程序設(shè)計(jì)語言:人與計(jì)算機(jī)通信的基本工具,指揮計(jì)算機(jī)按人的意志工作。

1946—1954:機(jī)器語言和匯編語言,與計(jì)算機(jī)硬件操作一一對(duì)應(yīng)。

1954:第一個(gè)高級(jí)語言FORTRAN語言。

高級(jí)語言的種類:基礎(chǔ)語言----Fortran,Basic,Cobol,Algol

結(jié)構(gòu)化語言----Pl/1,Pascal,C,Ada

專用語言-------特殊應(yīng)用如LISP,Prolog.

程序設(shè)計(jì)語言的特點(diǎn):名字說明:類型說明:初始化:程序?qū)ο螅ㄕZ句,存儲(chǔ),過程)的局部性:程序模塊:循環(huán)控制結(jié)構(gòu):分支選擇結(jié)構(gòu):異常處理:獨(dú)立編譯:選擇程序設(shè)計(jì)語言的原則:系統(tǒng)用戶的要求;可以使用的編譯程序;可以使用的軟件工具;工程規(guī)模;程序員的知識(shí);軟件可移植要求;軟件的應(yīng)用領(lǐng)域。在這個(gè)階段的任務(wù)是:把軟件設(shè)計(jì)的結(jié)果翻譯成計(jì)算機(jī)可以“理解”的形式

—用計(jì)算機(jī)語言表示的程序。第六章編碼(續(xù))程序設(shè)計(jì)途徑寫程序的風(fēng)格程序內(nèi)部的文檔----恰當(dāng)?shù)囊饬x明確的標(biāo)識(shí)符,注解,程序的視覺組織(語句布局).數(shù)據(jù)說明----次序標(biāo)準(zhǔn)化,歸類化.語句構(gòu)造----每個(gè)語句的構(gòu)造應(yīng)該簡(jiǎn)單、直接和易于理解。一般不要為了節(jié)省紙張多個(gè)語句寫在一行;避免復(fù)雜的條件測(cè)試;減少對(duì)“非”條件的測(cè)試;避免大量使用循環(huán)嵌套和條件嵌套;利用括號(hào)使邏輯表達(dá)式或算術(shù)表達(dá)式的運(yùn)算次序清晰直觀。輸入/輸出----效率----程序運(yùn)行時(shí)間、存儲(chǔ)器效率、輸入和輸出的效率。程序設(shè)計(jì)方法論程序設(shè)計(jì)自動(dòng)化----三種途徑(用戶需求形式化精確定義,組件技術(shù),范型)程序設(shè)計(jì)工具----編譯程序代碼管理系統(tǒng)第七章測(cè)試基本概念軟件測(cè)試的目標(biāo)或定義(G.Myers):1)測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程。

2)好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案。

3)成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。黑盒測(cè)試和白盒測(cè)試黑盒測(cè)試:已經(jīng)知道了軟件產(chǎn)品應(yīng)該具有的功能,通過測(cè)試來檢驗(yàn)是否每個(gè)功能都能正常使用。這種測(cè)試方法又稱功能測(cè)試。白盒測(cè)試:知道軟件產(chǎn)品內(nèi)部的工作過程,通過測(cè)試來檢驗(yàn)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說明書的規(guī)定正常進(jìn)行。這種測(cè)試方法又稱結(jié)構(gòu)測(cè)試。不論是每個(gè)功能或每個(gè)邏輯控制通路,如果對(duì)所有的情況都進(jìn)行測(cè)試,這樣的測(cè)試成為窮盡測(cè)試。窮盡測(cè)試在一般情況下是實(shí)際不可行的。例一、Sum(inta,intb,intc){return(a+b+c);}假定int類型為16位整數(shù)。需要測(cè)試216*216*216次。每次1ms,約要1萬年循環(huán)20次各種組合,約520種例二:白盒測(cè)試7.1基本概念(1)軟件測(cè)試的步驟:模塊測(cè)試子系統(tǒng)測(cè)試系統(tǒng)測(cè)試平行運(yùn)行

目的:保證每個(gè)模塊作為一個(gè)單元能夠正確運(yùn)行,又稱為單元測(cè)試集成測(cè)試、組裝測(cè)試、聯(lián)合測(cè)試;重點(diǎn)在于測(cè)試模塊之間的接口;

將經(jīng)過測(cè)試的子系統(tǒng)裝配成一個(gè)完整的系統(tǒng)來測(cè)試;發(fā)現(xiàn)設(shè)計(jì)和編碼的錯(cuò)誤,驗(yàn)證系統(tǒng)是否滿足需求說明所定義的功能及其動(dòng)態(tài)特性;也稱為集成測(cè)試。同時(shí)運(yùn)行新舊兩個(gè)系統(tǒng),并且對(duì)處理的結(jié)果進(jìn)行比較,以確定新系統(tǒng)是否滿足相關(guān)性能指標(biāo)。驗(yàn)收測(cè)試

有用戶參加的系統(tǒng)測(cè)試;驗(yàn)證是否滿足用戶的需要。7.1基本概念(2)測(cè)試階段的信息流:測(cè)試軟件配置測(cè)試配置測(cè)試結(jié)果預(yù)期結(jié)果評(píng)價(jià)錯(cuò)誤錯(cuò)誤率數(shù)據(jù)調(diào)試可靠性模型正確可靠性預(yù)測(cè)測(cè)試與軟件開發(fā)各個(gè)階段的關(guān)系軟件開發(fā)過程是一個(gè)自頂向下,逐步細(xì)化的過程軟件計(jì)劃階段定義軟件作用域軟件需求分析建立軟件信息域、功能和性能需求、約束等軟件設(shè)計(jì)把設(shè)計(jì)用某種程序設(shè)計(jì)語言轉(zhuǎn)換成程序代碼測(cè)試過程是依相反順序安排的自底向上,逐步集成的過程。包括需求說明書、設(shè)計(jì)說明書、源程序清單等包括測(cè)試計(jì)劃和測(cè)試方案7.1基本概念(3)測(cè)試與軟件開發(fā)各個(gè)階段的關(guān)系(示意圖)7.2單元測(cè)試(1)單元測(cè)試又稱模塊測(cè)試,是針對(duì)軟件設(shè)計(jì)的最小單位─程序模塊,進(jìn)行正確性檢驗(yàn)的測(cè)試工作。其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯(cuò)。單元測(cè)試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例。多個(gè)模塊可以平行地獨(dú)立進(jìn)行單元測(cè)試。1.單元測(cè)試的內(nèi)容在單元測(cè)試時(shí),測(cè)試者需要依據(jù)詳細(xì)設(shè)計(jì)說明書和源程序清單,了解該模塊的I/O條件和模塊的邏輯結(jié)構(gòu),主要采用白盒測(cè)試的測(cè)試用例,輔之以黑盒測(cè)試的測(cè)試用例,使之對(duì)任何合理的輸入和不合理的輸入,都能鑒別和響應(yīng)。(1)模塊接口測(cè)試在單元測(cè)試的開始,應(yīng)對(duì)通過被測(cè)模塊的數(shù)據(jù)流進(jìn)行測(cè)試。測(cè)試項(xiàng)目包括:調(diào)用本模塊的輸入?yún)?shù)是否正確;本模塊調(diào)用子模塊時(shí)輸入給子模塊的參數(shù)是否正確;全局量的定義在各模塊中是否一致;

模塊接口局部數(shù)據(jù)結(jié)構(gòu)重要的執(zhí)行通路出錯(cuò)處理通路影響上述各方面特性的邊界條件7.2單元測(cè)試(2)

在做內(nèi)外存交換時(shí)要考慮:文件屬性是否正確;

OPEN與CLOSE語句是否正確;緩沖區(qū)容量與記錄長(zhǎng)度是否匹配;在進(jìn)行讀寫操作之前是否打開了文件;在結(jié)束文件處理時(shí)是否關(guān)閉了文件;正文書寫/輸入錯(cuò)誤,

I/O錯(cuò)誤是否檢查并做了處理。

(2)局部數(shù)據(jù)結(jié)構(gòu)測(cè)試不正確或不一致的數(shù)據(jù)類型說明使用尚未賦值或尚未初始化的變量錯(cuò)誤的初始值或錯(cuò)誤的缺省值變量名拼寫錯(cuò)或書寫錯(cuò)不一致的數(shù)據(jù)類型全局?jǐn)?shù)據(jù)對(duì)模塊的影響(3)路徑測(cè)試選擇適當(dāng)?shù)臏y(cè)試用例,對(duì)模塊中重要的執(zhí)行路徑進(jìn)行測(cè)試。應(yīng)當(dāng)設(shè)計(jì)測(cè)試用例查找由于錯(cuò)誤的計(jì)算、不正確的比較或不正常的控制流而導(dǎo)致的錯(cuò)誤。對(duì)基本執(zhí)行路徑和循環(huán)進(jìn)行測(cè)試可以發(fā)現(xiàn)大量的路徑錯(cuò)誤.(4)錯(cuò)誤處理測(cè)試出錯(cuò)的描述是否難以理解出錯(cuò)的描述是否能夠?qū)﹀e(cuò)誤定位顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤是否相符對(duì)錯(cuò)誤條件的處理正確與否在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件是否已經(jīng)引起系統(tǒng)的干預(yù)等7.2單元測(cè)試(3)(5)邊界測(cè)試注意數(shù)據(jù)流、控制流中剛好等于、大于或小于確定的比較值時(shí)出錯(cuò)的可能性。對(duì)這些地方要仔細(xì)地選擇測(cè)試用例,認(rèn)真加以測(cè)試。如果對(duì)模塊運(yùn)行時(shí)間有要求的話,還要專門進(jìn)行關(guān)鍵路徑測(cè)試,以確定最壞情況下和平均意義下影響模塊運(yùn)行時(shí)間的因素2.單元測(cè)試的步驟代碼審查:組長(zhǎng)+程序設(shè)計(jì)、編寫、測(cè)試者模塊并不是一個(gè)獨(dú)立的程序,在考慮測(cè)試模塊時(shí),同時(shí)要考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測(cè)模塊相聯(lián)系的其它模塊。

驅(qū)動(dòng)模塊(driver):調(diào)用測(cè)試單元的“主程序”,它接受測(cè)試數(shù)據(jù),把這些數(shù)據(jù)傳送給被測(cè)試的模塊并打印有關(guān)結(jié)果。

樁模塊(stub)──存根模塊:是被測(cè)試模塊單元所調(diào)用模塊的代替模塊,在模塊調(diào)用接口、相關(guān)數(shù)據(jù)處理、控制返回等方面對(duì)被代替模塊進(jìn)行“模擬”。驅(qū)動(dòng)模塊被測(cè)模塊樁模塊樁模塊樁模塊測(cè)試用例測(cè)試結(jié)果單元測(cè)試的測(cè)試環(huán)境7.3集成測(cè)試(1)

集成測(cè)試是組裝軟件的系統(tǒng)技術(shù);組裝測(cè)試、聯(lián)合測(cè)試通常,在單元測(cè)試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng)。這時(shí)需要考慮的問題是:在把各個(gè)模塊連接起來的時(shí)侯,穿越模塊接口的數(shù)據(jù)是否會(huì)丟失;一個(gè)模塊的功能是否會(huì)對(duì)另一個(gè)模塊的功能產(chǎn)生不利的影響;各個(gè)子功能組合起來,能否達(dá)到預(yù)期要求的父功能;全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問題;單個(gè)模塊的誤差累積起來,是否會(huì)放大,從而達(dá)到不能接受的程度。在單元測(cè)試的同時(shí)可進(jìn)行組裝測(cè)試,發(fā)現(xiàn)并排除在模塊連接中可能出現(xiàn)的問題,最終構(gòu)成要求的軟件系統(tǒng)。子系統(tǒng)的組裝測(cè)試特別稱為部件測(cè)試,它所做的工作是要找出組裝后的子系統(tǒng)與系統(tǒng)需求規(guī)格說明之間的不一致。通常,把模塊組裝成為系統(tǒng)的方式有兩種一次性組裝方式:又稱為非漸增式測(cè)試;增殖式組裝方式:其中又分為自頂向下、自底向上和兩種方法混合測(cè)試方式。7.3集成測(cè)試(2)1.一次性組裝方式(bigbang)它是一種非增殖式組裝方式。也叫做整體拼裝。使用這種方式,首先對(duì)每個(gè)模塊分別進(jìn)行模塊測(cè)試,然后再把所有模塊組裝在一起進(jìn)行測(cè)試,最終得到要求的軟件系統(tǒng)。系統(tǒng)結(jié)構(gòu)圖單元測(cè)試整體組裝7.3集成測(cè)試(3)2.增殖式組裝方式這種組裝方式又稱漸增式組裝首先對(duì)一個(gè)個(gè)模塊進(jìn)行模塊測(cè)試,然后將這些模塊逐步組裝成較大的系統(tǒng)在組裝的過程中邊連接邊測(cè)試

溫馨提示

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