版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
交通軟件系統(tǒng)分析與設計李志慧E_mail:lizhih@電話考教材張海藩編著,《軟件工程導論》,清華大學出版社鄭人杰編,《實用軟件工程》,清華大學出版社,1997年《數(shù)據(jù)結(jié)構(gòu)》,嚴蔚敏等編著,清華大學出版社數(shù)據(jù)結(jié)構(gòu),殷人坤,清華大學出版社第一章緒論交通軟件系統(tǒng)分析與設計關注的問題:1、
軟件系統(tǒng)開發(fā)過程
2、
數(shù)據(jù)結(jié)構(gòu)+算法
數(shù)據(jù)結(jié)構(gòu):相互之間存在一種或多種特點關系的數(shù)據(jù)元素的結(jié)合。由某一數(shù)據(jù)對象及該對象中所有數(shù)據(jù)成員之間的關系組成,表示為
data_structure={D,R}數(shù)據(jù)結(jié)構(gòu)線性表
棧和隊列
串
數(shù)組和廣義表
二叉樹
樹和森林
圖
算法查找排序算法評價:空間復雜度
時間復雜度
生命周期各階段的任務(1)問題定義
問題定義階段必須回答的關鍵問題是:”要解決的問題是什么?”通過問題定義階段的工作,系統(tǒng)分析員應該提出關于問題性質(zhì)、工程目標和規(guī)模的書面報告。(2)可行性研究該階段要回答的關鍵問題是:“對于上一個階段所確定的問題有行得通的解決辦法嗎?”
可行性研究的結(jié)果是使用部門負責人做出是否繼續(xù)進行這項工程的決定的重要依據(jù)。
(3)需求分析該階段的任務不是具體地解決問題,而是準確地確定“為下解決這個問題,目標系統(tǒng)必須做什么”,主要是確定目標系統(tǒng)必須具備哪些功能。
(4)總體設計該階段必須回答的關鍵問題是:“概括地說,應該如何解決這個問題?生命周期各階段的任務(5)詳細設計
總體設計階段以比較抽象概括的方式提出了解決問題的辦法。詳細設計階段的任務就是把解法具體化,也就是回答下面這個關鍵問題:“應該怎樣具體地實現(xiàn)這個系統(tǒng)呢?”(6)編碼和單元測試
該階段的關鍵任務是寫出正確的容易理解、容易維護的程序模塊。(7)綜合測試該階段的關鍵任務是通過各種類型的測試(及相應的調(diào)試)使軟件達到預定的要求。(8)軟件維護
維護階段的關鍵任務是,通過各種必要的維護活動使系統(tǒng)持久地滿足用戶的需要。
結(jié)構(gòu)分析過程小節(jié)階段關鍵問題結(jié)束標準問題定義問題是什么關于規(guī)模和目標的報告書可行性研究有可行的解嗎?系統(tǒng)的高層邏輯模型:數(shù)據(jù)流圖、成本/效益分析需求分析系統(tǒng)必須做什么?系統(tǒng)的邏輯模型:數(shù)據(jù)流因、數(shù)據(jù)字典、算法描述總體設計概括地說,應該如何解決這個問題?可能的解法:系統(tǒng)硫程圖、成本/效益分析推薦的系統(tǒng)結(jié)構(gòu):層次圖或結(jié)構(gòu)圖詳細設計怎樣具體地實現(xiàn)這個系統(tǒng)?編碼規(guī)格說明:
HIPO圖或PDL編碼和單元測試正確的程序模塊源程序清單‘單元測試方案和結(jié)果綜合測試符合要求的軟件綜合測試方案和結(jié)果;完整一致的軟件配置維護持久地滿足用戶需要的軟件完整準確的維護記錄軟件生存期模型軟件生存期模型是跨越整個生存期的系統(tǒng)開發(fā)、運作和維護所實施的全部過程、活動和任務的結(jié)構(gòu)框架瀑布模型螺旋模型噴泉模型智能模型瀑布模型瀑布模型特點:(1)為一個整體開發(fā)模型(2)開發(fā)前可完整、準確地定義系統(tǒng)各個階段
適用條件:
適用開發(fā),如:編譯系統(tǒng),數(shù)據(jù)庫系統(tǒng)于功能和性能明確、完整、無重大變化地軟件等螺旋模型螺旋模型(原型開發(fā)模型)特點:(1)降低軟件開發(fā)風險(2)按照軟件的演化規(guī)律進行開發(fā)
(3)開發(fā)初期不要求開發(fā)人員準確、無二義了解系統(tǒng)適用:適用與復雜系統(tǒng)的開發(fā)或系統(tǒng)目標不明確的情況噴泉模型噴泉模型
噴泉模型是一種以用戶需求為動力,以對象作為驅(qū)動的模型它以面向?qū)ο蟮能浖_發(fā)方法為基礎,以用戶需求作為噴泉模型的源泉。特點(1)噴泉模型規(guī)定軟件開發(fā)過程有4個階段,即分析、系統(tǒng)設計、軟件設計和實現(xiàn)(2)噴泉模型的各階段相互重疊,它反映了軟件過程并行性的特點。(3)噴泉模型以分析為基礎,資源消耗呈塔型,在分析階段消耗的資源最多‘(4)噴泉模型反映了軟件過程迭代的自然特性,從高層返回低層無資源消耗軟件開發(fā)方法結(jié)構(gòu)化方法結(jié)構(gòu)化方法由結(jié)構(gòu)化分析、結(jié)構(gòu)化設計和結(jié)構(gòu)化程序設計構(gòu)成,它是一種面向數(shù)據(jù)流的開發(fā)方法Jackson方法一種面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法維也納開發(fā)方法一種形式化的開發(fā)方法,軟件的需求用嚴格的形式語言描述,把描述模型逐步變換成目標系統(tǒng)面向?qū)ο蟮拈_發(fā)方法面向?qū)ο箝_發(fā)方法包括面向?qū)ο蠓治觯∣OA)、面向?qū)ο笤O計(OOD)和面向?qū)ο髮崿F(xiàn)。
其包括Booch、Coad、OMT方法統(tǒng)一建模語言UML第二章可行性分析可行性分析的任務
1)“問題是否可行?”2)目的:可行性研究的目的就是用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。3)首先需要進一步分析和澄清問題定義。在澄清了問題定義之后,分析員應該導出系統(tǒng)的邏輯模型。然后從系統(tǒng)邏輯模型出發(fā),探索若干種可供選擇的主要解法(即系統(tǒng)實現(xiàn)方案)。對每種解法都應該仔細研究它的可行性,一般說來,至少應該從下述三方面研究每種解法的可行性:(1)技術(shù)可行性
使用現(xiàn)有的技術(shù)能實現(xiàn)這個系統(tǒng)嗎?(2)經(jīng)濟可行性
這個系統(tǒng)的經(jīng)濟效益能超過它的開發(fā)成本嗎?(3)操作可行性
系統(tǒng)的操作方式在這個用戶組織內(nèi)行得通嗎?可行性研究的步驟
(1)復查系統(tǒng)規(guī)模和目標(2)研究目前正在使用的系統(tǒng)(3)導出新系統(tǒng)的高層邏輯模型(4)重新定義問題(5)導出和評價供選擇的解法(6)推薦行動方針(7)草擬開發(fā)計劃(8)書寫文檔提交審查
系統(tǒng)流程圖
系統(tǒng)流程圖的作用:系統(tǒng)流程圖是描述物理系統(tǒng)的工具。所謂物理系統(tǒng),就是一個具體實現(xiàn)的系統(tǒng),也就是描述一個單位、組織的信息處理的具體實現(xiàn)的系統(tǒng)。在進行可行性研究過程中,要以概括的形式描述現(xiàn)有系統(tǒng)的高層邏輯模型,并通過概要的設計變成所建議系統(tǒng)的物理模型,可以用系統(tǒng)流程圖來描述所建議系統(tǒng)的物理模型。系統(tǒng)流程圖可用圖形符號來表示系統(tǒng)中的各個元素,表達了系統(tǒng)中各個元素之間的信息流動的情況畫系統(tǒng)流程圖時,首先要搞清業(yè)務處理過程以及處理中的各個元素,同時要理解系統(tǒng)的流程圖的各個符號的含義,選擇相應的符號來代表系統(tǒng)中的各個元素。所畫的系統(tǒng)流程圖要反映出系統(tǒng)的處理流程。系統(tǒng)流程圖的符號系統(tǒng)流程圖的符號例子某裝配廠有一座存放零件的倉庫,倉庫中現(xiàn)有的各種零件的數(shù)量以及每種零件的庫存量臨界值等數(shù)據(jù)記錄在庫存清單主文件中。當倉庫中零件數(shù)量有變化時,應該及時修改庫存清單主文件,如果那種零件的庫存量少于它的庫存量臨界值,則應該報告給采購部門以便定貨,規(guī)定每天向采購部門送一次定貨報告。該裝配廠使用一臺小型計算機處理更新庫存清單主文件和產(chǎn)生定貨報告的任務。零件庫存量的每一次變化稱為一個事務,由放在倉庫中的CRT終端輸入到計算機中;系統(tǒng)中的庫存清單程序?qū)κ聞者M行處理,更新存儲在磁盤上的庫存清單主文件,并且把必要的定貨信息寫在磁帶上。最后,每天由報告生成程序讀一次磁帶,并且打印出定貨報告分層面對復雜的系統(tǒng)時,一個比較好的方法是分層次地描繪這個系統(tǒng)。首先用一張高層次的系統(tǒng)流程圖描繪系統(tǒng)總體格朗,表明系統(tǒng)的關鍵功能。然后分別把每個關鍵功能擴展到適當?shù)脑敿毘潭?,面在單獨的一頁紙上。這種分層次的描繪方法便于閱讀者按從抽象到具體的過程逐步深入地了解一個復雜的系統(tǒng)。系統(tǒng)流程圖與程序流程圖系統(tǒng)流程圖表達的是信息在系統(tǒng)各部件之間流動的情況,而不是對信息進行加工處理的控制過程,因此盡管系統(tǒng)流程圖使用的某些符號和程序流程圖中用的符號相同,但是它卻是物理數(shù)據(jù)流因而不是程序流程圖。
數(shù)據(jù)流圖
數(shù)據(jù)流圖描繪系統(tǒng)的邏輯模型,圖中沒有任何具體的物理元素,只是描繪信息在系統(tǒng)中流動和處理的情況。設計數(shù)據(jù)流圖只需考慮系統(tǒng)必須完成的基本邏輯功能,完全不需要考慮如何具體地實現(xiàn)這些功能,所以它也是軟件設計的很好的出發(fā)點。符號例子假設一家工廠的采購部每天需要一張定貨報表,報表按零件編號排序,表中列出所有需要再次定貨的零件。對于每個需要再次定貨的零件應該列出下述數(shù)據(jù):零件編號,零件名稱,定貨數(shù)量,目前價格,主要供應者,次要供應者。零件入庫或出庫稱為事務、通過放在倉庫中的CRT終端把事務報告給定貨系統(tǒng)。當某種零件的庫存數(shù)量少于庫存量臨界值時就應該再次定貨。數(shù)據(jù)流圖有四種成分:源點或終點,處理,數(shù)據(jù)存儲和數(shù)據(jù)流。分析方法:數(shù)據(jù)字典
數(shù)據(jù)字典是關于數(shù)據(jù)的信息的集合,也就是對數(shù)據(jù)流圖中包含的所有元柬的定義的集合。數(shù)據(jù)流圖和數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型—般說來,數(shù)據(jù)字典由四類元素組成:
1)數(shù)據(jù)流
2)數(shù)據(jù)流分量(即,數(shù)據(jù)元素)3)數(shù)據(jù)存儲
4)處理。數(shù)據(jù)處理工具(如IPO圖或PDL)描述成本/效益分析
第三章需要分析需求分析是軟件定義時期的最后一個階段,它的基本任務是準確地回答“系統(tǒng)必須做什么?”這個問題。需求分析的任務是對目標系統(tǒng)提出完整、準確、清晰、具體的要求??尚行匝芯侩A段產(chǎn)生的文檔,持別是數(shù)據(jù)流圖,是需求分折的出發(fā)點。需求分析的結(jié)果是系統(tǒng)開發(fā)的基礎,關系到工程的成敗和軟件產(chǎn)品的質(zhì)量。因此,必須用行之有效的方法對軟件需求進行嚴格的審查驗證。需求分析的任務
1、確定對系統(tǒng)的綜合要求
1)系統(tǒng)功能要求
2)系統(tǒng)性能要求
3)運行要求
4)將來可能提出的要求
2、分析系統(tǒng)的數(shù)據(jù)要求
數(shù)據(jù)結(jié)構(gòu)表示數(shù)據(jù)元素之間的邏輯關系
3、導出系統(tǒng)的邏輯模型
導出系統(tǒng)的詳細的邏輯模型,通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和主要的處理算法描述這個邏輯模型。
4、修正系統(tǒng)開發(fā)計劃
5、開發(fā)原型系統(tǒng)需求分析的特點
1、問題的復雜性。
2、交流障礙
3、不完備性和不一致性
4、需求易變性需求分析的原則
1、必須能夠表達相理解問題的數(shù)據(jù)域和功能域。
2、可以把一個復雜問題按功能進行分解并可逐層細化3、建模需求分析的方法1、功能分解方法2、結(jié)構(gòu)化分析方法3、信息建模方法4、面向?qū)ο蠓治龇椒ㄐ枨笳f明書的主要內(nèi)容
(1)前言:說明項目的目的、范圍,所用的術(shù)語的定義;用到的縮略語和縮寫詞;資料。
(2)項目概述:產(chǎn)品的描述;產(chǎn)品的功能;用戶的特點,一般的約束等。
(3)具體需求:說明每個功能的輸入、處理和輸出;外部接口需求,包括用戶接口、軟件接口、硬件接口相通信接口;性能需求;設計約束;共他需求,包括數(shù)據(jù)庫、操作等第二節(jié)需求分析過程
分析步驟:1、建立用例關系圖2、細化數(shù)據(jù)流圖3、用戶復查4、細化數(shù)據(jù)流圖5、修正開發(fā)計劃6、書寫文檔7、審查和復審3.3.2用例模型(Usecasemodel)用例圖(Usecasediagram)從用戶角度描述系統(tǒng)功能,并指出各功能的操作者用例模型描述的是外部執(zhí)行者(Actor)所理解的系統(tǒng)功能。它描述了待開發(fā)系統(tǒng)的功能需求。用例模型由若干個用例圖構(gòu)成,用例圖中主要描述執(zhí)行者和用例之間的關系。在UML中,構(gòu)成用例圖的主要元素是用例和執(zhí)行者及其它們之間的聯(lián)系。創(chuàng)建用例模型的工作包括:
定義系統(tǒng)、確定執(zhí)行者和用例、描述用例、定義用例間的關系、確認模型。一、執(zhí)行者(Actor)執(zhí)行者是指用戶在系統(tǒng)中所扮演的角色。執(zhí)行者在用例圖中是用類似人的圖形來表示,但執(zhí)行者可以是人,也可以是一個外界系統(tǒng)。注意:用例總是由執(zhí)行者啟動的。如何確定執(zhí)行者:1、誰使用系統(tǒng)的主要功能(主執(zhí)行者)?2、誰需要從系統(tǒng)獲得對日常工作的支持和服務?3、需要誰維護管理系統(tǒng)的日常運行(副執(zhí)行者)?4、系統(tǒng)需要控制哪些硬件設備?5、系統(tǒng)需要與其它哪些系統(tǒng)交互?6、誰需要使用系統(tǒng)產(chǎn)生的結(jié)果(值)?一、執(zhí)行者5.3.2用例模型供貨買飲料取貨款客戶供貨人收銀員圖5.15自動售貨系統(tǒng)回例1二、用例二、用例(usecase)
從本質(zhì)上講,一個用例是用戶與計算機之間的一次典型交互作用。在UML中,用例被定義成系統(tǒng)執(zhí)行的一系列動作(功能)。用例有以下特點:用例捕獲某些用戶可見的需求,實現(xiàn)一個具體的用戶目標。用例由執(zhí)行者激活,并將結(jié)果值反饋給執(zhí)行者。用例必須具有功能上的完整描述。如何確定用例:1、與系統(tǒng)實現(xiàn)有關的主要問題是什么?2、系統(tǒng)需要哪些輸入/輸出?這些輸入/輸出從何而來?到哪里去?3、執(zhí)行者需要系統(tǒng)提供哪些功能?4、執(zhí)行者是否需要對系統(tǒng)中的信息進行讀、創(chuàng)建、修改、刪除或存儲?二、用例5.3.2用例模型回例15.3.3用例圖
圖5.16用例圖的元素5.3.3用例圖用例圖描述了系統(tǒng)的功能需求,它是從執(zhí)行者的角度來理解系統(tǒng),由“執(zhí)行者”、“用例”和“用例之間的關系”3類模型元素構(gòu)成。圖中還有另外兩種類型的連接,即《使用》和《擴展》關系,是兩種不同形式的泛化關系。 用例2用例A用例執(zhí)行者用例1用例3用例B《使用》《使用》《擴展》(a)(b)(c)《Use》表示一個用例使用另一個用例?!禘xtend》通過向被擴展的用例添加動作來擴展用例。用例圖實例用例圖實例圖5.18應用生命周期用例圖圖5.17金融貿(mào)易系統(tǒng)貿(mào)易經(jīng)理風險分析設置邊界進行交易交易估價更新帳目《使用》《使用》《擴展》營銷人員超越邊界評價記帳系統(tǒng)銷售人員5.3.4用例圖實例應用設計者應用提供者
改變應用運行應用
實現(xiàn)應用<<使用>><<擴展>><<展開>>應用操作者<<實現(xiàn)>>設計應用5.3.4用例圖實例例1建立項目與資源管理系統(tǒng)的Usecase圖
系統(tǒng)的主要功能是:項目管理,資源管理和系統(tǒng)管理。項目管理包括項目的增加、刪除、更新。資源管理包括對資源和技能的添加、刪除和更新。系統(tǒng)管理包括系統(tǒng)的啟動和關閉,數(shù)據(jù)的存儲和備份等功能。1、分析確定系統(tǒng)的執(zhí)行者(角色)到確定到確定
項目管理員、資源管理員、系統(tǒng)管理員、備份數(shù)據(jù)系統(tǒng)。項目管理,資源管理和系統(tǒng)管理。2、確定用例3、對用例進行分解,畫出下層的Usecase圖
對上層的用例進行分解,并將執(zhí)行者分配到各層次的Usecase圖中。角色:角色職責:角色職責識別:圖5.19角色描述模板
還應畫出相應的執(zhí)行者描述模板及用例描述模板。例1項目與資源管理系統(tǒng)(PRMS)添加技能刪除技能更新技能資源管理員添加資源刪除資源更新資源查找技能《Use》查找資源《Use》《Use》《Use》把技能指定給資源從資源中清除技能《Extend》《Extend》5.21資源管理UseCase圖UseCase圖可以自頂而下不斷精化,抽象出不同層次的UseCase圖。5.3.4用例圖實例系統(tǒng)管理員項目管理員資源管理員資源管理項目管理系統(tǒng)管理備份系統(tǒng)圖5.20PRMS高層UseCase圖例1項目與資源管理系統(tǒng)(PRMS)項目管理員添加項目刪除項目更新項目添加活動刪除活動更新活動查找項目《Use》添加任務《Use》把技能指定給資源從資源中清除技能《Extend》《Extend》刪除任務更新任務《Extend》《Extend》《Extend》《Extend》《Extend》《Extend》圖5.22項目管理UseCase圖5.3.4用例圖實例系統(tǒng)管理員圖5.23系統(tǒng)管理UseCase圖添加技能存儲數(shù)據(jù)啟動系統(tǒng)關閉系統(tǒng)查找技能《Use》《Use》《Use》備份資源數(shù)據(jù)備份項目數(shù)據(jù)《Extend》《Extend》《Use》備份數(shù)據(jù)備份系統(tǒng)
現(xiàn)有一醫(yī)院病房監(jiān)護系統(tǒng),病癥監(jiān)視器安置在每個病房,將病人的病癥信號實時傳送到中央監(jiān)視系統(tǒng)進行分析處理。在中心值班室里,值班護士使用中央監(jiān)視系統(tǒng)對病員的情況進行監(jiān)控,根據(jù)醫(yī)生的要求隨時打印病人的病情報告,定期更新病歷,當病癥出現(xiàn)異常時,系統(tǒng)會立即自動報警,并實時打印病人的病情報告,立及更新病歷。要求根據(jù)現(xiàn)場情景,對醫(yī)院病房監(jiān)護系統(tǒng)進行需求分析,建立系統(tǒng)的Usecasemodel。
請對系統(tǒng)需求進行分析!經(jīng)過初步的需求分析,得到系統(tǒng)功能要求:1、監(jiān)視病員的病癥(血壓、體溫、脈搏等)2、定時更新病歷3、病員出現(xiàn)異常情況時報警。4、隨機地產(chǎn)生某一病員的病情報告。
例2醫(yī)院病房監(jiān)護系統(tǒng)產(chǎn)生病情報告監(jiān)視病情更新病歷情景教學二、簡單的需求分析說明
系統(tǒng)名稱:醫(yī)院病房監(jiān)護系統(tǒng)根據(jù)分析系統(tǒng)主要實現(xiàn)以下功能:
1、病癥監(jiān)視器可以將采集到的病癥信號(組合),格式化后實時的傳送到中央監(jiān)護系統(tǒng)。
2、中央監(jiān)護系統(tǒng)將病人的病癥信號開解后與標準的病癥信號庫里的病癥信號的正常值進行比較,當病癥出現(xiàn)異常時系統(tǒng)自動報警。
3、當病癥信號異常時,系統(tǒng)自動更新病歷并打印病情報告。
4、值班護士可以查看病情報告并進行打印。
5、醫(yī)生可以查看病情報告,要求打印病情報告,也可以查看或要求打印病歷。
6、系統(tǒng)定期自動更新病歷。退出上頁首頁下頁末頁需求分析三、用UML的靜態(tài)建模機制定義并描述系統(tǒng)的靜態(tài)結(jié)構(gòu)
(一)建立系統(tǒng)的用例圖
1、通過以下六個問題識別角色
(1)誰使用系統(tǒng)的主要功能?
(2)誰需要系統(tǒng)的支持以完成日常工作任務?
(3)誰負責維護,管理并保持系統(tǒng)正常運行?
(4)系統(tǒng)需要應付(或處理)哪些硬設備?
(5)系統(tǒng)需要和哪些外部系統(tǒng)交互?
(6)誰(或什么)對系統(tǒng)運行產(chǎn)生的結(jié)果(值)感興趣?需求分析
通過回答這六個問題以后,再進一步分析可以識別出本系統(tǒng)的四個角色:值班護士,醫(yī)生,病人,標準病癥信號庫。角色描述模板角色:病人角色職責:提供病癥信號角色職責識別:負責生成、實時提供各種病癥信號。角色:值班護士角色職責:負責監(jiān)視病人的病情變化角色職責識別:
(1)使用系統(tǒng)主要功能
(2)對系統(tǒng)運行結(jié)果感興趣角色:標準病癥信號庫角色職責:負責向系統(tǒng)提供病癥信號的正常值角色職責識別:
(1)負責保持系統(tǒng)正常運行
(2)與系統(tǒng)交互角色:醫(yī)生角色職責:對病人負責,負責處理病情的變化角色職責識別:
(1)需要系統(tǒng)支持以完成其日常工作
(2)對系統(tǒng)運行結(jié)果感興趣通過分析可以初步識別出系統(tǒng)的用例為:中央監(jiān)護,病癥監(jiān)護,提供標準病癥信號,病歷管理,病情報告管理。頂層用例圖為:角色描述
通過分析可以初步識別出系統(tǒng)的用例為:中央監(jiān)護,病癥監(jiān)護,提供標準病癥信號,病歷管理,病情報告管理。頂層用例圖為:提供標準病癥信號病歷管理病人標準病癥信號庫
醫(yī)生值班護士病癥監(jiān)護病情報告管理中央監(jiān)護《使用》《使用》《使用》角色描述將用例細化,可以得到分解的用例:1、中央監(jiān)護
分解為:a分解信號將從病癥監(jiān)護器傳送來的組合病癥信號分解為系統(tǒng)可以處理的信號。
b比較信號將病人的病癥信號與標準信號比較。
c報警如果病癥信號發(fā)生異常(即高于峰值),發(fā)出報警信號。
d數(shù)據(jù)格式化將處理后的數(shù)據(jù)格式化以便寫入病歷庫。2、病癥監(jiān)護
分解為:e信號采集采集病人的病癥信號。
f模數(shù)轉(zhuǎn)化將采集來的模擬信號轉(zhuǎn)化為數(shù)字信號。
g信號數(shù)據(jù)組合將采集到的脈搏,血壓等信號數(shù)據(jù)組合為一組信號數(shù)據(jù)。
h采樣頻率改變根據(jù)病人的情況改變監(jiān)視器采樣頻率。3、提供標準病癥信號
i(此用例不分解)用例細化4、病歷管理
分解為:j生成病歷
k查看病歷
l更新病歷
m打印病歷
5、病情報告
分解為:n顯示病情報告
在顯示器上顯示病情
o打印病情報告在打印機打印病情報告用例細化給出細化的用例圖病人模數(shù)轉(zhuǎn)化數(shù)據(jù)格式化值班護士報警信號采集比較信號標準病癥信號庫
醫(yī)生信號數(shù)據(jù)組合采樣頻率改變提供標準病癥信號生成病歷查看病歷更新病歷打印病歷顯示病情報告打印病情報告分解信號《Extend》《Extend》《Extend》《use》《use》《use》《use》《use》《use》《use》《use》細化的用例圖第三節(jié)概念模型和規(guī)范化
用戶的數(shù)據(jù)要求----需要哪些數(shù)據(jù),數(shù)據(jù)之間有哪些聯(lián)系,數(shù)據(jù)本身有哪些性質(zhì),數(shù)據(jù)的結(jié)構(gòu)等)。用戶的處理要求---對數(shù)據(jù)進行哪些處理,每個處理的邏輯功能。
概念性模型(信息模型)---一種面向問題的數(shù)據(jù)模型,是按照用戶的觀點來對數(shù)據(jù)和信息建模。表示概念性數(shù)據(jù)模型的最常用方法是實體-聯(lián)系方法,采用用ER圖的方式,這種表示又稱為ER模型。ER模型
實體:客觀世界中存在的且可區(qū)分的事物。聯(lián)系:客觀事物之間的聯(lián)系(三類--1:1,1:N,M:N)屬性:實體或聯(lián)系所具有的性質(zhì)。教師姓名性別職稱職務教師號教1課程N課程號課名學時學分學M學生N學號姓名性別系年級成績
范式通常用范式定義消除數(shù)據(jù)的冗余度(略)ER關系圖與數(shù)據(jù)庫映射關系描述關系數(shù)據(jù)庫數(shù)據(jù)以2維表的形式進行表示,每個表的列表示字段、行表示數(shù)據(jù)庫表的一個記錄
Primarykey(主鍵):字段的唯一標識Foreignkey(外鍵):其它表的主鍵在該表的參考SQL(結(jié)構(gòu)化查詢語言):可以進行數(shù)據(jù)庫表記錄的操作.SQL語言基礎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語言基礎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ù)庫表:屬性的映射每個實體映射為一個表實體的每個屬性映射為一個字段每個實體的個體映射為數(shù)據(jù)庫的一個記錄N:M關系映射為一個單獨的表1:N關系利用外鍵進行映射例子:E-R關系模型與數(shù)據(jù)庫表的映射ICitycityNameAirportairportCodeairportName**ServescityNameHoustonAlbanyMunichHamburgCityTablecityNameHoustonHoustonAlbanyMunichHamburgServesTableairportCodeIAHHOUALBMUCHAMAirportTableairportCodeIAHHOUALBMUCHAMairportNameIntercontinentalHobbyAlbanyCountyMunichAirportHamburgAirportPrimaryKey
N:M(多對多關系):將關系映射為單個表SeparateTable例子:E-R關系模型與數(shù)據(jù)庫表的映射II
會議transactionID職員portfolioID...NportfolioID...PortfolioTabletransactionIDTransactionTableportfolioIDForeignKey1:N或N:1關系:隱藏外鍵的處理1例子:E-R關系模型與數(shù)據(jù)庫表的映射Ⅲ
doordoorIDskyskyID...*doorIDTransactionTabledoorID1-To-1關系門與鑰匙關系
習題給出E_R的數(shù)據(jù)庫設計教師姓名性別職稱職務教師號教1課程N課程號課名學時學分學M學生N學號姓名性別系年級E_R與數(shù)據(jù)結(jié)構(gòu)映射關系數(shù)據(jù)元素四種基本結(jié)構(gòu):
(1)集合結(jié)構(gòu)(2)線性結(jié)構(gòu)
(3)樹狀結(jié)構(gòu)(4)圖狀結(jié)構(gòu)
應用舉例線性表、樹、圖數(shù)據(jù)內(nèi)存的存儲順序存儲結(jié)構(gòu)、鏈式存儲問題數(shù)據(jù)結(jié)構(gòu)的核心:(1)關注數(shù)據(jù)元素在計算機內(nèi)存的存儲問題;(2)根據(jù)數(shù)據(jù)關系,利用數(shù)據(jù)基本操作來描述與表達算法數(shù)據(jù)結(jié)構(gòu)基本形式線性表:n個數(shù)據(jù)元素的有限序列如:樹:n個節(jié)點的有限集圖C語言描述C語言描述Typedefstruct{數(shù)據(jù)類型屬性1;數(shù)據(jù)類型屬性2;
數(shù)據(jù)類型屬性n;}structname;如:typedefstruct{Inti;chars;}Course;Coursetraffic[100],*signal,;線性表順序存儲:
數(shù)組描述鏈式存儲:指針動態(tài)分配如線性表的元素若將上例改為合并為一個新的非遞減的集合,則算法為線性鏈表循環(huán)鏈表雙向鏈表棧:先進后出鏈棧鏈棧解決內(nèi)存空間預分配不足問題如何出棧和入棧??隊列:先進先出第四節(jié).圖形工具
層次方框圖:用樹形結(jié)構(gòu)的一系列多層次的矩形框描繪數(shù)據(jù)的層次結(jié)構(gòu)。
產(chǎn)品
硬件
軟件
服務
處理機
存儲器外部設備系統(tǒng)軟件應用軟件軟件服務硬件維修培訓操作系統(tǒng)編譯程序軟件工具層次方框圖的一個例子
注意:層次方框圖即可以表示數(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)測試驅(qū)動程序(P4)設計輔助程序(P5)應用軟件⊕5.驗證軟件需求
從哪幾個方面驗證軟件需求的正確性(四個方面)一致性:任何一條需求不能和其他需求互相矛盾。完整性:規(guī)格說明書應該包括用戶需要的每一個功能和性能。現(xiàn)實性:指定的需求是用現(xiàn)有的硬件、軟件技術(shù)可以實現(xiàn)的。有效性:需求是正確有效的,確實能解決用戶面對的問題。
驗證軟件需求的方法一致性:人工審查---》形式化描述軟件需求,軟件工具自動驗證?,F(xiàn)實性:參考以往的開發(fā)經(jīng)驗,分析,仿真或模擬完整性和一致性:原型系統(tǒng)第四章總體設計總體設計的基本目的就是回答“概括地說,系統(tǒng)應該如何實現(xiàn)?”這個問題??傮w設計又稱為概要設計或初步設計,其任務:(1)劃分出組成系統(tǒng)的物理元素----程序、文件、數(shù)據(jù)庫、人工過程和文檔通過這個階段的工作將劃分出組成系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫、人工過程和文檔等等,但是每個物理元素仍然處于黑盒子級,這些黑盒子里的具體內(nèi)容將在以后仔細設計。(2)總體設計階段的另一項重要任務是設計軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個程序是由哪些模塊組成的,以及這些模塊相互間的關系。1總體設計的過程(兩個主要階段):
系統(tǒng)設計:確定系統(tǒng)的具體實現(xiàn)方案。結(jié)構(gòu)設計:確定軟件結(jié)構(gòu)。設想供選擇的方案選取合理的方案推薦最佳方案功能分解設計軟件結(jié)構(gòu)數(shù)據(jù)庫設計制訂測試計劃書寫文檔數(shù)據(jù)流圖
系統(tǒng)流程圖組成系統(tǒng)的物理元素清單成本/效益分析實現(xiàn)系統(tǒng)的進度計劃
系統(tǒng)說明用戶手冊測試計劃詳細的實現(xiàn)計劃數(shù)據(jù)庫設計結(jié)果審查和復審2軟件設計的概念和原理模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮恼f明。
(1)模塊化:把程序劃分成若干個模塊,每個模塊完成一個子功能,把這些模塊集總起來組成一個整體,可以完成指定的功能,滿足問題的功能。C(P1+P2)>C(P1)+C(P2)E(P1+P2)>E(P1)+E(P2)成本模塊數(shù)目成本/模塊接口成本最小成本區(qū)
(2)抽象(3)信息隱蔽和局部化
信息隱蔽原理指出:使得一個模塊內(nèi)包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說,是不能訪問的。所謂局部化是指把一些關系密切的軟件元素物理地放得彼此靠近。模塊化和軟件成本耦合:一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量,耦合強弱取決于模塊間接口的復雜程度,進入或訪問一個模塊的點,以及通過接口的數(shù)據(jù)。數(shù)據(jù)耦合:模塊之間通過參數(shù)交換數(shù)據(jù)信息??刂岂詈希耗K之間傳遞的參數(shù)含有控制信息。公共環(huán)境耦合:兩個或多個模塊通過一個公共數(shù)據(jù)環(huán)境相互作用。內(nèi)容耦合:如果出現(xiàn)下列情況之一,兩個模塊間就發(fā)生了內(nèi)容耦(1)一個模塊訪問另一個模塊的內(nèi)部數(shù)據(jù);2)一個模塊不通過正常入口而轉(zhuǎn)到另一個模塊的內(nèi)部;3)兩個模塊有一部分程序代碼重疊4)一個模塊有多個入口。
設計原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共環(huán)境耦合,完全不用內(nèi)容耦合。數(shù)據(jù)耦合控制耦合公共環(huán)境耦合內(nèi)容耦合低高(4)模塊獨立----每個模塊完成一個相對獨立的子功能,并且和其他模塊之間的關系很簡單。模塊獨立的概念是模塊化、抽象、信息隱蔽和局部化概念的直接結(jié)果,獨立的優(yōu)點:(1)有效的模塊化的軟件比較容易開發(fā)
(2)獨立的模塊比較容易測試和維護模塊的獨立程度兩個定性標準度量:內(nèi)聚和耦合耦合衡量不同模塊彼此間互相依賴的緊密程度;內(nèi)聚衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。2軟件設計的概念和原理
----耦合非直接耦合數(shù)據(jù)耦合特征耦合控制耦合外部耦合公共耦合內(nèi)容耦合弱耦合中耦合較強耦合強耦合模塊1模塊2模塊3模塊4數(shù)據(jù)耦合通過簡單變量交換數(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全局性簡單變量外部耦合模塊A
模塊B內(nèi)容耦合
訪問其它模塊的內(nèi)部數(shù)據(jù)直接跳到其他模塊內(nèi)部執(zhí)行2軟件設計的概念和原理(續(xù)1)內(nèi)聚:一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度。偶然內(nèi)聚:一個模塊完成一組任務,任務之間的關系很松散。公共語句。邏輯內(nèi)聚:若干個邏輯功能類似的任務組成一個模塊。(如模板函數(shù))時間內(nèi)聚:若干個任務必須在同一段時間內(nèi)執(zhí)行。如初始化工作。低內(nèi)聚中內(nèi)聚高內(nèi)聚過程內(nèi)聚:模塊內(nèi)的處理元素是相關的,且必須以特定次序執(zhí)行。通信內(nèi)聚:模塊中所有元素都使用同一個輸入數(shù)據(jù),和/或產(chǎn)生同一個輸出數(shù)據(jù)。順序內(nèi)聚:模塊中所有處理元素和同一個功能密切相關,且這些處理必須順序執(zhí)行。功能內(nèi)聚:所有處理元素屬于一個整體,完成一個單一的功能。模塊A模塊B模塊CS1;S2;模塊A模塊B模塊C模塊A模塊B模塊C模塊D2軟件設計的概念和原理(續(xù)2)
改進軟件結(jié)構(gòu)提高模塊獨立性模塊規(guī)模應該適中深度、寬度、扇入、扇出都應適當扇入:一個模塊的扇人表明有多少個上級模塊直接調(diào)用它,扇入越大則共享該模塊的上級模塊數(shù)目越多。扇出:扇出是一個模塊直接控制(調(diào)用)的模塊數(shù)目,扇出過大意味著模塊過分復雜,需要控制和協(xié)調(diào)過多的下級模塊。模塊的作用域應該在控制域之內(nèi)模塊的作用域:為受該模塊內(nèi)一個判定影響的所有模塊的集合。模塊的控制域:這個模塊本身以及所有直接或間接從屬于它的模塊的集合。力爭降低模塊接口的復雜程度設計單入口單出口的模塊模塊的功能應該可以預測3啟發(fā)式規(guī)則4圖形工具
層次圖和HIPO圖層次圖用來描述軟件結(jié)構(gòu),層次圖+IPO圖=HIPO圖正文加工系統(tǒng)輸入輸出編輯加標題存儲檢索編目錄格式化添加刪除插入修改合并列表
結(jié)構(gòu)圖方框之間的箭頭表示模塊的調(diào)用關系,帶注釋的箭頭表示模塊間來回傳遞的信息:空心圓—數(shù)據(jù),實心圓—控制信息。結(jié)構(gòu)圖還可以表示模塊的選擇調(diào)用或循環(huán)調(diào)用參見:P645面向數(shù)據(jù)流的設計方法1)變換流2)事務流3)設計過程時間輸入流輸出流變換流外部表示內(nèi)部表示信息變換流:信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。當數(shù)據(jù)流圖具有這些持征時,這種信息流就叫作變換流。這種數(shù)據(jù)流是“以事務為中心的”.也就是說,數(shù)據(jù)沿輸入通路到達一個處理T,這個處理根據(jù)輸入數(shù)據(jù)的類型在若干個動作序列中選出一個來執(zhí)行。這類數(shù)據(jù)流應該劃為一類特殊的數(shù)據(jù)流,稱為事務流。事務T事務中心活動通路事務中心T完成下述任務:接受輸入數(shù)據(jù)(事務)分析每個事務以確定它的類型根據(jù)事務類型選取一條活動通路變換流與事務流三要素變換流三要素輸入、輸出、變換中心
事務流三要素事務、事務中心、活動通路5面向數(shù)據(jù)流的設計方法(續(xù))精化數(shù)據(jù)流圖流類型區(qū)分事務中心和數(shù)據(jù)接收通路映射成事務結(jié)構(gòu)區(qū)分輸入和輸出分支映射成變換結(jié)構(gòu)用啟發(fā)式設計規(guī)則精化軟件結(jié)構(gòu)導出接口描述和全程數(shù)據(jù)結(jié)構(gòu)復查詳細設計事務分析變換分析5面向數(shù)據(jù)流的設計方法(續(xù))
變換分析:汽車數(shù)字儀表板功能:
1)通過A/D轉(zhuǎn)換實現(xiàn)傳感器和微處理器接口,
2)在發(fā)光二極管面板上顯示數(shù)據(jù),
3)指示每小時英里數(shù)(mph),行駛的里程,每加倫油行駛的英里數(shù)(mpg)等等。
4)指示加速或減速;
5)超速警告:如果車速超過55英里/小時,則發(fā)出超速警告鈴聲。A/D轉(zhuǎn)數(shù)計數(shù)器流量傳感器微處理機里程表車速表油效表油管系統(tǒng)加速/減速指示超速報警5面向數(shù)據(jù)流的設計方法(續(xù))讀旋轉(zhuǎn)信號收集和求平均轉(zhuǎn)換成轉(zhuǎn)/分(rpm)計算里程確定加速/減速產(chǎn)生加速/減速顯示產(chǎn)生里程顯示計算mph和超速值計算燃料消耗發(fā)出鈴聲產(chǎn)生mph顯示產(chǎn)生mpg顯示讀和校核計算gph旋轉(zhuǎn)信號信號/秒SPS△SPSSPSrpmrpm箭頭指示上箭頭⊕⊕水平線下箭頭英里超速值顯示鈴聲mphmphmpggph燃料流燃料流傳感器信號Mpg顯示數(shù)字儀表板控制接受傳感器信號數(shù)據(jù)轉(zhuǎn)換控制驅(qū)動儀表板輸入控制變換控制輸入控制5面向數(shù)據(jù)流的設計方法(續(xù))設計步驟:復查基本系統(tǒng)模型復查并精化數(shù)據(jù)流圖確定數(shù)據(jù)流圖具有變換特性還是事務特性確定輸入流和輸出流的邊界,劃分變換或事務中心完成“第一級分解”CmCaCtCe第一級分解的方法5面向數(shù)據(jù)流的設計方法(續(xù))ADBCCmCaCBDA接受傳感器信號轉(zhuǎn)換成rpm收集SPS讀旋轉(zhuǎn)信號計算gph讀燃料流數(shù)字儀表板控制確定加/減速計算mph計算gpg計算里程驅(qū)動儀表板加速/減速顯示顯示mpg顯示mph顯示里程發(fā)出鈴聲發(fā)光二極管顯示5面向數(shù)據(jù)流的設計方法(續(xù))數(shù)字儀表板控制接受傳感器信號轉(zhuǎn)換成rpm讀旋轉(zhuǎn)信號計算gph讀燃料流數(shù)字儀表板控制確定加/減速計算mph計算gpg計算里程驅(qū)動儀表板加速/減速顯示顯示mpg顯示mph顯示里程發(fā)出鈴聲發(fā)光二極管顯示數(shù)字儀表板軟件系統(tǒng)經(jīng)過調(diào)整后的結(jié)構(gòu)圖注意:紅色模塊的位置有所調(diào)整5面向數(shù)據(jù)流的設計方法(續(xù))
事務分析432總控接收通路C通路B通路A通路調(diào)度A_CTL142+1321B_CTLC_CTL
設計優(yōu)化設計優(yōu)化應該力求做到在有效的模塊化的前提下使用最少量的模塊,以及在能夠滿足信息要求的前提下使用最簡單的數(shù)據(jù)結(jié)構(gòu)?!當?shù)據(jù)流圖軟件結(jié)構(gòu)總體設計說明書的主要內(nèi)容如下:(1)引言:編寫目的,背景,定義,參考資料。(2)總體設計:需求規(guī)定,運行環(huán)境,基本設計概念和處理流程,結(jié)構(gòu)。(3)接口設計:用戶接口,外部接口,內(nèi)部接口。(4)運行設計:運行模塊組合.運行控制,運行時間。(5)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設計:邏輯結(jié)構(gòu)設計,物理結(jié)構(gòu)設計,數(shù)據(jù)結(jié)構(gòu)與程序的關系,(6)系統(tǒng)出錯處理設計:出錯信息,補救措施.系統(tǒng)恢復設計。第五章詳細設計詳細設計:過程設計設計方法:結(jié)構(gòu)程序設計結(jié)構(gòu)序設計:一種程序設計技術(shù),它采用自頂向下逐步求精的設計方法和單入口單出口的控制結(jié)構(gòu)詳細設計階段的目標:確定應該怎樣具體地實現(xiàn)所要求的系統(tǒng)。精確地描述整個目標系統(tǒng),從而在編碼階段可以把這個描述翻譯成用某種程序設計語言書寫的程序。詳細設計的基本任務1.算法設計用某種圖形、表格、語言等工具將每個模塊處理過程的詳細算法描述出來2.數(shù)據(jù)結(jié)構(gòu)設計對于需求分析、概要設計確定的概念性的數(shù)據(jù)類型進行確切的定義。
3.物理設計對數(shù)據(jù)庫進行物理設計,即確定數(shù)據(jù)庫的物理結(jié)構(gòu)。物理結(jié)構(gòu)主要指數(shù)據(jù)庫的存儲記錄格式、存儲記錄安排和存儲方法,這些都依賴于具體所使用的數(shù)據(jù)庫系統(tǒng)。
4.其他設計根據(jù)軟件系統(tǒng)的類型,還可能要進行以下設計:(1)代碼設計;為了提高數(shù)據(jù)的輸入、分類、存儲及檢索等操作的效率空間,對數(shù)據(jù)庫中的某些數(shù)據(jù)項的值要進行代碼設計。(2)輸入/輸出格式設計。(3)人機對話設計:對于一個實時系統(tǒng),用戶與計算機顛蟹對話,因此要進行對話方式、內(nèi)容及格式的具體設計。5.編寫詳細設計說明書詳細設計說明書有下列的主要內(nèi)容:(1)引言:包括編寫目的、背景、定義(2)程序系統(tǒng)的組織結(jié)構(gòu)。(3)程序l(標識符)設計說明:(4)程序2(標識符)設計說明。(5)程序N(標識符)設計說明6.評審結(jié)構(gòu)程序設計順序、選擇、循環(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ù)好處:(1)自頂向下逐步求精的方法符合人類解決復雜問題的普遍規(guī)律。(2)先全局后局部、先整體后細節(jié)、先抽象后具體的逐步求精過程開發(fā)出的程序有清晰的層次結(jié)構(gòu),容易閱讀和理解。
(3)不使用GoTo語句僅使用單入口單出口的控制結(jié)構(gòu).使得程序的靜態(tài)結(jié)構(gòu)和它的動態(tài)執(zhí)行情況比較一致。
(4)控制結(jié)構(gòu)有確定的邏輯模式,編寫程序代碼只限于使用很少幾種直截了當?shù)姆绞?,因此源程序清晰流暢,易讀易懂而且容易測試。(5)程序清晰和模塊化使得在修改和重新設計一個軟件時可以重用的代碼量最大。(6)程序的邏輯結(jié)構(gòu)清晰,有利于程序正確性證明。習題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、設置標志位2、變換結(jié)構(gòu)1結(jié)構(gòu)程序設計
經(jīng)典的結(jié)構(gòu)程序設計:順序,選擇,當型循環(huán)擴展的結(jié)構(gòu)程序設計:順序,選擇+多分支,當型循環(huán)+直到型循環(huán)修正的結(jié)構(gòu)程序設計:順序,選擇+多分支,當型循環(huán)+直到型循環(huán),break結(jié)構(gòu)詳細設計的工具程序流程圖開始或停止準備選擇多分支選擇注釋預先定義的處理,子程序循環(huán)下界循環(huán)上界處理控制流2詳細設計的工具----盒圖(N_S圖)S1S2S3條件FTElse部分Then部分Case條件值1值2。。。值nCase1部分Case2部分Casen部分循環(huán)條件Do-While
部分循環(huán)條件Do-Until
部分A特點:1)功能域(既一個特定控制結(jié)構(gòu)的作用域)明確
2)不可能任意轉(zhuǎn)移控制
3)很容易確定局部和全程數(shù)據(jù)的作用域
4)很容易表現(xiàn)嵌套關系,也可以表示模塊的層次結(jié)構(gòu)Nassi&Shneiderman2詳細設計的工具----PAD圖P1P2P1P2條件CPnP2P1WHILECPUNTILCPdef順序選擇Case型多分支選擇當型循環(huán)直到型循環(huán)語句標號定義2詳細設計的工具----PAD圖P1P2P3P4CP5P2defP6P3P8CUntilC3UNTILC2P9P10PAD圖的主要優(yōu)點:使用PAD符號設計的程序必然是結(jié)構(gòu)化的程序.PAD圖所描繪的程序結(jié)構(gòu)十分清晰.用PAD圖表現(xiàn)程序邏輯,易讀,易記,易懂.容易將PAD圖轉(zhuǎn)換成高級語言源程序.可用軟件工具實現(xiàn)自動轉(zhuǎn)換.即可以表示程序邏輯,也可以描繪數(shù)據(jù)結(jié)構(gòu).支持自頂向下,逐步求精方法的使用.2詳細設計的工具----判定表程序流程圖、N-S圖、PAD圖或過程設計語言(PDL)都不易清楚的描述含有多重嵌套的條件選擇。判定表可以清晰的表示復雜的條件組合與其對應的處理之間的關系。例子假設某航空公司規(guī)定,乘客可以免費托運重量不超過30公斤的行李。當行李重量超過30公斤時,對頭等艙的國內(nèi)乘客超重部分每公斤收費4元,對其它艙的國內(nèi)乘客超重部分每公斤收費6元,對外國乘客超重部分每公斤收費比國內(nèi)乘客多一倍,對殘疾乘客超重部分每公斤收費比正常乘客少一半。用判定表來表示與上述每種條件組合相對應的動作。所有條件條件組合矩陣與每種條件組合所對應的動作表所有可能的動作列表國內(nèi)乘客頭等艙殘疾乘客行李≤30kg免費(W-30)*2(W-30)*3(W-30)*4(W-30)*6(W-30)*8(W-30)*2TTTFTTTTTTTTTTFFFFFFFFFFFFFFFFFFF×××××××××2詳細設計的工具----判定樹行李費算法行李重量
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免費過程設計語言(PDL)PDL應該具有下述特點:
(1)關鍵字的固定語法,它提供了結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和模塊化的待點。為了使結(jié)構(gòu)清晰和可讀性好,通常在所有可能嵌套使用的控制結(jié)構(gòu)的頭和尾都有關鍵字,例如:if...fi(或endif)等等。
(2)自然語言的自由語法,它描述處理待點。
(3)數(shù)據(jù)說明的手段。應該既包括簡單的數(shù)據(jù)結(jié)構(gòu)(例如純量和數(shù)組),又包括復雜的數(shù)據(jù)結(jié)構(gòu)(例如,鏈表或?qū)哟蔚臄?shù)據(jù)結(jié)構(gòu))。
(4)模塊定義和調(diào)用的技術(shù),應該提供各種接口描述模式。PDL作為一種設計工具的優(yōu)點:(1)可以作為注釋直接插在源程序中間。這樣做能促使維護人員在修改程序代碼的同時也相應地修改PDL注釋,因此有助于保持文檔和程序的一致性,提高了文檔的質(zhì)量。
(2)可以使用普通的正文編輯程序或文字處理系統(tǒng),很方便池完成PDL的書寫和編輯工作。
(3)已經(jīng)有自動處理程序存在,而且可以自動由PDL生成程序代碼。
PDL的缺點是不如圖形工具形象直觀,描述復雜的條件組合百動作間的對應關系時,不如判定表清晰簡單。Jackson程序設計方法特點:面向數(shù)據(jù)結(jié)構(gòu)的設計方法,也就是用數(shù)據(jù)結(jié)構(gòu)作為程序設計的基礎方法:首先需要分析確定數(shù)據(jù)結(jié)構(gòu),并且用適當?shù)墓ぞ咔逦孛枥L數(shù)據(jù)結(jié)構(gòu)。Jackson圖數(shù)據(jù)元素彼此間的邏輯關系只有順序、選擇和重復三類順序結(jié)構(gòu)順序結(jié)構(gòu)的數(shù)據(jù)由一個或多個數(shù)據(jù)元素組成,每個元素按確定次序出現(xiàn)一次。選擇結(jié)構(gòu)選擇結(jié)構(gòu)的數(shù)據(jù)包含兩個或多個數(shù)據(jù)元素,每次使用這個數(shù)據(jù)時按一定條件從這些數(shù)據(jù)元素中選擇一個。重復結(jié)構(gòu)重復結(jié)構(gòu)的數(shù)據(jù),根據(jù)使用時的條件由一個數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成。Jackson圖優(yōu)點:·便于表示層次結(jié)構(gòu),而且是對結(jié)構(gòu)進行自頂向下分解的有力工具;·形象直觀可瀆性好;·既能表示數(shù)據(jù)結(jié)構(gòu)也能表示程序結(jié)構(gòu)改進的Jackson圖Jackson方法Jackson結(jié)構(gòu)程序設計方法基本上由下述五個步騾組成: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)中有對應關系的數(shù)據(jù)單元。
3.用下述三條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導出描繪程序結(jié)構(gòu)的Jackson:第一,為每對有對應關系的數(shù)據(jù)單元,按照它們在數(shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應層次畫一個處理框第二,根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個數(shù)據(jù)單元所處的層次,分別為它們面上對應的處理框;第三,根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個數(shù)據(jù)單元所處的層次,次分別為它們畫上對應的處理框。總之,描繪程序結(jié)構(gòu)的Jackson圖應該綜合輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)的層次關系而導出來。
4.列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把它們分配到程序結(jié)構(gòu)圖的適當位置。
5.用偽碼表示程序。例子:
一個正文文件由若干個記錄組成,每個記錄是一個字符串。要求統(tǒng)計每個記錄中空格字符的個數(shù),以及文件中空格字符的總個數(shù)。要求的輸出數(shù)據(jù)格式是,每復制一行輸入字符串之后,另起一行印出這個字符串中的空格數(shù),最后印出文件中空格的總個數(shù)。5詳細設計的工具----程序復雜度的定量度量
利用軟件設計的基本原理和概念可以定性的衡量軟件模塊的質(zhì)量。但定量的度量程序復雜程度的方法很有價值:估算程序中軟件故障的數(shù)量;估算軟件開發(fā)的工作量;比較兩個不同的設計或兩個不同算法的友劣;作為模塊規(guī)模的精確上限。程序定量度量方法是一個有待進一步研究的重要領域。1)McCabe方法程序圖–把程序流程圖中每個處理符號都退化成一個點,原來連接不同處理符號的箭頭變成連接不同點的有向弧,這樣得到的有向圖就稱為程序圖。程序圖僅僅描述程序內(nèi)部的控制流程,完全不表現(xiàn)對數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。入口點:程序圖中開始點后面的那個節(jié)點。出口點:程序圖中停止點前面的那個節(jié)點。用McCabe方法度量得出的結(jié)果稱為程序的環(huán)形復雜度。程序的環(huán)形復雜度=強連通圖中線性無關的有向環(huán)的個數(shù)。5詳細設計的工具----程序復雜度的定量度量2)環(huán)形復雜度的計算方法在一個強連通的有向圖中,線性無關環(huán)的個數(shù)由以下公式確定:
V(G)=m–n+p
其中:V(G)----有向圖G中的環(huán)數(shù)。
m----有向圖G中的弧數(shù)。
n----有向圖G中的節(jié)點數(shù)。
p----有向圖G中的分離部分的數(shù)目。(對于正常的程序,p=1)
一般來說,由于程序圖不是強連通的,要直接應用以上結(jié)論到程序圖中還不行,因此要對程序圖進行擴展,從其出口點到入口點增畫一條虛弧,則原程序圖必然成為強連通圖。這樣就可以應用以上公式來計算環(huán)形復雜度。3)環(huán)形復雜度的用途:程序的環(huán)形復雜度與程序控制流的復雜程度,也就是與程序結(jié)構(gòu)的復雜程度有關。程序內(nèi)分支數(shù)或循環(huán)個數(shù)增加時,環(huán)形復雜度就增加,因此它是對測試難度的一種度量,也能對軟件最終的可靠性給出某種預測。McCabe發(fā)現(xiàn):環(huán)形復雜度高的程序往往是最困難、最容易出問題的程序。實踐表明:模塊規(guī)模以V(G)≤10為宜。也就是說,V(G)=10是模塊規(guī)模的一個更科學更精確的上限。5詳細設計的工具----程序復雜度的定量度量開始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
個節(jié)點1
個獨立部分第六章編碼程序設計語言:人與計算機通信的基本工具,指揮計算機按人的意志工作。
1946—1954:機器語言和匯編語言,與計算機硬件操作一一對應。
1954:第一個高級語言FORTRAN語言。
高級語言的種類:基礎語言----Fortran,Basic,Cobol,Algol
結(jié)構(gòu)化語言----Pl/1,Pascal,C,Ada
專用語言-------特殊應用如LISP,Prolog.
程序設計語言的特點:名字說明:類型說明:初始化:程序?qū)ο螅ㄕZ句,存儲,過程)的局部性:程序模塊:循環(huán)控制結(jié)構(gòu):分支選擇結(jié)構(gòu):異常處理:獨立編譯:選擇程序設計語言的原則:系統(tǒng)用戶的要求;可以使用的編譯程序;可以使用的軟件工具;工程規(guī)模;程序員的知識;軟件可移植要求;軟件的應用領域。在這個階段的任務是:把軟件設計的結(jié)果翻譯成計算機可以“理解”的形式
—用計算機語言表示的程序。第六章編碼(續(xù))程序設計途徑寫程序的風格程序內(nèi)部的文檔----恰當?shù)囊饬x明確的標識符,注解,程序的視覺組織(語句布局).數(shù)據(jù)說明----次序標準化,歸類化.語句構(gòu)造----每個語句的構(gòu)造應該簡單、直接和易于理解。一般不要為了節(jié)省紙張多個語句寫在一行;避免復雜的條件測試;減少對“非”條件的測試;避免大量使用循環(huán)嵌套和條件嵌套;利用括號使邏輯表達式或算術(shù)表達式的運算次序清晰直觀。輸入/輸出----效率----程序運行時間、存儲器效率、輸入和輸出的效率。程序設計方法論程序設計自動化----三種途徑(用戶需求形式化精確定義,組件技術(shù),范型)程序設計工具----編譯程序代碼管理系統(tǒng)第七章測試基本概念軟件測試的目標或定義(G.Myers):1)測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程。
2)好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案。
3)成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試。黑盒測試和白盒測試黑盒測試:已經(jīng)知道了軟件產(chǎn)品應該具有的功能,通過測試來檢驗是否每個功能都能正常使用。這種測試方法又稱功能測試。白盒測試:知道軟件產(chǎn)品內(nèi)部的工作過程,通過測試來檢驗產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行。這種測試方法又稱結(jié)構(gòu)測試。不論是每個功能或每個邏輯控制通路,如果對所有的情況都進行測試,這樣的測試成為窮盡測試。窮盡測試在一般情況下是實際不可行的。例一、Sum(inta,intb,intc){return(a+b+c);}假定int類型為16位整數(shù)。需要測試216*216*216次。每次1ms,約要1萬年循環(huán)20次各種組合,約520種例二:白盒測試7.1基本概念(1)軟件測試的步驟:模塊測試子系統(tǒng)測試系統(tǒng)測試平行運行
目的:保證每個模塊作為一個單元能夠正確運行,又稱為單元測試集成測試、組裝測試、聯(lián)合測試;重點在于測試模塊之間的接口;
將經(jīng)過測試的子系統(tǒng)裝配成一個完整的系統(tǒng)來測試;發(fā)現(xiàn)設計和編碼的錯誤,驗證系統(tǒng)是否滿足需求說明所定義的功能及其動態(tài)特性;也稱為集成測試。同時運行新舊兩個系統(tǒng),并且對處理的結(jié)果進行比較,以確定新系統(tǒng)是否滿足相關性能指標。驗收測試
有用戶參加的系統(tǒng)測試;驗證是否滿足用戶的需要。7.1基本概念(2)測試階段的信息流:測試軟件配置測試配置測試結(jié)果預期結(jié)果評價錯誤錯誤率數(shù)據(jù)調(diào)試可靠性模型正確可靠性預測測試與軟件開發(fā)各個階段的關系軟件開發(fā)過程是一個自頂向下,逐步細化的過程軟件計劃階段定義軟件作用域軟件需求分析建立軟件信息域、功能和性能需求、約束等軟件設計把設計用某種程序設計語言轉(zhuǎn)換成程序代碼測試過程是依相反順序安排的自底向上,逐步集成的過程。包括需求說明書、設計說明書、源程序清單等包括測試計劃和測試方案7.1基本概念(3)測試與軟件開發(fā)各個階段的關系(示意圖)7.2單元測試(1)單元測試又稱模塊測試,是針對軟件設計的最小單位─程序模塊,進行正確性檢驗的測試工作。其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯。單元測試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設計測試用例。多個模塊可以平行地獨立進行單元測試。1.單元測試的內(nèi)容在單元測試時,測試者需要依據(jù)詳細設計說明書和源程序清單,了解該模塊的I/O條件和模塊的邏輯結(jié)構(gòu),主要采用白盒測試的測試用例,輔之以黑盒測試的測試用例,使之對任何合理的輸入和不合理的輸入,都能鑒別和響應。(1)模塊接口測試在單元測試的開始,應對通過被測模塊的數(shù)據(jù)流進行測試。測試項目包括:調(diào)用本模塊的輸入?yún)?shù)是否正確;本模塊調(diào)用子模塊時輸入給子模塊的參數(shù)是否正確;全局量的定義在各模塊中是否一致;
模塊接口局部數(shù)據(jù)結(jié)構(gòu)重要的執(zhí)行通路出錯處理通路影響上述各方面特性的邊界條件7.2單元測試(2)
在做內(nèi)外存交換時要考慮:文件屬性是否正確;
OPEN與CLOSE語句是否正確;緩沖區(qū)容量與記錄長度是否匹配;在進行讀寫操作之前是否打開了文件;在結(jié)束文件處理時是否關閉了文件;正文書寫/輸入錯誤,
I/O錯誤是否檢查并做了處理。
(2)局部數(shù)據(jù)結(jié)構(gòu)測試不正確或不一致的數(shù)據(jù)類型說明使用尚未賦值或尚未初始化的變量錯誤的初始值或錯誤的缺省值變量名拼寫錯或書寫錯不一致的數(shù)據(jù)類型全局數(shù)據(jù)對模塊的影響(3)路徑測試選擇適當?shù)臏y試用例,對模塊中重要的執(zhí)行路徑進行測試。應當設計測試用例查找由于錯誤的計算、不正確的比較或不正常的控制流而導致的錯誤。對基本執(zhí)行路徑和循環(huán)進行測試可以發(fā)現(xiàn)大量的路徑錯誤.(4)錯誤處理測試出錯的描述是否難以理解出錯的描述是否能夠?qū)﹀e誤定位顯示的錯誤與實際的錯誤是否相符對錯誤條件的處理正確與否在對錯誤進行處理之前,錯誤條件是否已經(jīng)引起系統(tǒng)的干預等7.2單元測試(3)(5)邊界測試注意數(shù)據(jù)流、控制流中剛好等于、大于或小于確定的比較值時出錯的可能性。對這些地方要仔細地選擇測試用例,認真加以測試。如果對模塊運行時間有要求的話,還要專門進行關鍵路徑測試,以確定最壞情況下和平均意義下影響模塊運行時間的因素2.單元測試的步驟代碼審查:組長+程序設計、編寫、測試者模塊并不是一個獨立的程序,在考慮測試模塊時,同時要考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測模塊相聯(lián)系的其它模塊。
驅(qū)動模塊(driver):調(diào)用測試單元的“主程序”,它接受測試數(shù)據(jù),把這些數(shù)據(jù)傳送給被測試的模塊并打印有關結(jié)果。
樁模塊(stub)──存根模塊:是被測試模塊單元所調(diào)用模塊的代替模塊,在模塊調(diào)用接口、相關數(shù)據(jù)處理、控制返回等方面對被代替模塊進行“模擬”。驅(qū)動模塊被測模塊樁模塊樁模塊樁模塊測試用例測試結(jié)果單元測試的測試環(huán)境7.3集成測試(1)
集成測試是組裝軟件的系統(tǒng)技術(shù);組裝測試、聯(lián)合測試通常,在單元測試的基礎上,需要將所有模塊按照設計要求組裝成為系統(tǒng)。這時需要考慮的問題是:在把各個模塊連接起來的時侯,穿越模塊接口的數(shù)據(jù)是否會丟失;一個模塊的功能是否會對另一個模塊的功能產(chǎn)生不利的影響;各個子功能組合起來,能否達到預期要求的父功能;全局數(shù)據(jù)結(jié)構(gòu)是否有問題;單個模塊的誤差累積起來,是否會放大,從而達到不能接受的程度。在單元測試的同時可進行組裝測試,發(fā)現(xiàn)并排除在模塊連接中可能出現(xiàn)的問題,最終構(gòu)成要求的軟件系統(tǒng)。子系統(tǒng)的組裝測試特別稱為部件測試,它所做的工作是要找出組裝后的子系統(tǒng)與系統(tǒng)需求規(guī)格說明之間的不一致。通常,把模塊組裝成為系統(tǒng)的方式有兩種一次性組裝方式:又稱為非漸增式測試;增殖式組裝方式:其中又分為自頂向下、自底向上和兩種方法混合測試方式。7.3集成測試(2)1.一次性組裝方式(bigbang)它是一種非增殖式組裝方式。也叫做整體拼裝。使用這種方式,首先對每個模塊分別進行模塊測試,然后再把所有模塊組裝在一起進行測試,最終得到要求的軟件系統(tǒng)。系統(tǒng)結(jié)構(gòu)圖單元測試整體組裝7.3集成測試(3)2.增殖式組裝方式這種組裝方式又稱漸增式組裝首先對一個個模塊進行模塊測試,然后將這些模塊逐步組裝成較大的系統(tǒng)在組裝的過程中邊連接邊測試
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆甘肅省張掖市甘州區(qū)張掖二中高二數(shù)學第一學期期末質(zhì)量跟蹤監(jiān)視試題含解析
- 貴州省安順市平壩一中2025屆高三生物第一學期期末調(diào)研試題含解析
- 四川省金堂中學2025屆數(shù)學高二上期末調(diào)研模擬試題含解析
- 北京市西城區(qū)第四中學2025屆高二上數(shù)學期末聯(lián)考試題含解析
- 山西省晉中市平遙縣二中2025屆高三英語第一學期期末統(tǒng)考試題含解析
- 湖南省雙峰縣一中2025屆高二生物第一學期期末質(zhì)量檢測模擬試題含解析
- 安徽省六安中學2025屆高三數(shù)學第一學期期末學業(yè)水平測試模擬試題含解析
- 2025屆山西省平遙縣和誠高一數(shù)學第一學期期末考試模擬試題含解析
- 課件圖片循環(huán)動畫
- 冷凍藥品倉儲服務合同
- 2024-2030年工業(yè)自動化行業(yè)市場發(fā)展分析及發(fā)展前景與投資機會研究報告
- 國外工程項目合同范本
- JT∕T 937-2014 在用汽車噴烤漆房安全評價規(guī)范
- 人教版小學四年級道德與法治上冊《第四單元 讓生活多一些綠色》大單元整體教學設計
- 《麻雀》教學課件(第二課時)
- 蘇科版(2024)七年級上冊數(shù)學第1章 數(shù)學與我們同行 1.3交流 表達 教案
- 中國慢性冠脈綜合征患者診斷及管理指南2024版解讀
- 2024年江蘇省無錫市中考英語試卷附答案
- JT-T-1180.17-2018交通運輸企業(yè)安全生產(chǎn)標準化建設基本規(guī)范第17部分:公路水運工程施工項目
- 2024年刑法知識考試題庫及完整答案(各地真題)
- 新公司籌備計劃方案(2篇)
評論
0/150
提交評論