軟件工程:理論、技術(shù)及實(shí)踐 課件 第5章 需求分析_第1頁
軟件工程:理論、技術(shù)及實(shí)踐 課件 第5章 需求分析_第2頁
軟件工程:理論、技術(shù)及實(shí)踐 課件 第5章 需求分析_第3頁
軟件工程:理論、技術(shù)及實(shí)踐 課件 第5章 需求分析_第4頁
軟件工程:理論、技術(shù)及實(shí)踐 課件 第5章 需求分析_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第5章

需求分析本章學(xué)習(xí)目標(biāo)1.理解需求分析的主要任務(wù)。2.理解不同需求分析方法解決問題的本質(zhì)3.掌握傳統(tǒng)的結(jié)構(gòu)化分析方法。4.掌握面向?qū)ο蟮姆治龇椒ā?.熟練應(yīng)用UML建立需求分析模型。6.了解軟件形式化分析技術(shù)。

面向數(shù)據(jù)流的結(jié)構(gòu)化分析1形式化分析技術(shù)5結(jié)構(gòu)化分析實(shí)例2面向?qū)ο蟮姆治?面向?qū)ο蠓治鰧?shí)例4需求分析的主要任務(wù)在需求工程的起始階段,項(xiàng)目利益相關(guān)者建立起基本的問題需求,定義重要的項(xiàng)目約束條件并描述項(xiàng)目的功能和主要特征。這些信息經(jīng)過各種需求收集活動(dòng)后,在需求導(dǎo)出階段記錄下來。在進(jìn)入需求的精化階段,需求會(huì)得到進(jìn)一步的精煉,并擴(kuò)展為分析模型。創(chuàng)建需求分析模型原則Ariow和Neustadt提出了在創(chuàng)建需求分析模型時(shí)應(yīng)注意的原則:(1)分析模型應(yīng)關(guān)注問題域或業(yè)務(wù)域內(nèi)可見的需求,并注意提高抽象級(jí)別。(2)分析模型的每個(gè)元素都應(yīng)能增加對(duì)軟件需求的整體理解,并提供對(duì)信息域、功能和系統(tǒng)行為域的深入理解。(3)關(guān)于基礎(chǔ)結(jié)構(gòu)和其他非功能的模型應(yīng)推遲到設(shè)計(jì)階段再考慮。(4)應(yīng)最小化整個(gè)系統(tǒng)內(nèi)的關(guān)聯(lián),減少類和功能間的直接依賴關(guān)系和相互作用。(5)確認(rèn)分析模型為項(xiàng)目所有利益相關(guān)者都能帶來價(jià)值。(6)盡可能保持模型簡(jiǎn)潔。需求建模方法在需求建模過程中,軟件工程具體關(guān)注的焦點(diǎn)是“系統(tǒng)要做什么”,而不是“系統(tǒng)該怎么做”。關(guān)注的主要問題有“在特定的應(yīng)用環(huán)境下,發(fā)生了哪些用戶交互?系統(tǒng)處理哪些對(duì)象?系統(tǒng)必須執(zhí)行什么功能?系統(tǒng)對(duì)外界展示什么行為?系統(tǒng)與外界有哪些接口?受到什么樣的約束?”等。需求建模方法傳統(tǒng)的面向數(shù)據(jù)和面向處理的需求建模方法被稱為結(jié)構(gòu)化分析,其中處理是將數(shù)據(jù)作為獨(dú)立實(shí)體加以轉(zhuǎn)換,表示了數(shù)據(jù)對(duì)象在系統(tǒng)內(nèi)流動(dòng)時(shí),系統(tǒng)是如何處理和如何轉(zhuǎn)換數(shù)據(jù)。面向?qū)ο蟮男枨蠓治龇椒?,則是關(guān)注于識(shí)別和定義類,通過類之間的協(xié)作來響應(yīng)客戶的需求。5.1.1半形式化分析技術(shù)(1)數(shù)據(jù)流圖數(shù)據(jù)流圖有時(shí)也被稱為數(shù)據(jù)流程圖(DataFlowDiagram,簡(jiǎn)稱DFD),是一種便于用戶理解和分析系統(tǒng)數(shù)據(jù)流程的圖形工具。表5-1數(shù)據(jù)流程圖基本符號(hào)5.1面向數(shù)據(jù)流的結(jié)構(gòu)化分析5.1面向數(shù)據(jù)流的結(jié)構(gòu)化分析在繪制分層數(shù)據(jù)流圖時(shí)應(yīng)注意以下事項(xiàng):①自頂向下、逐層分解。②數(shù)據(jù)流必須經(jīng)過加工環(huán)節(jié)。③每個(gè)加工必須既有輸入數(shù)據(jù)流,又有輸出數(shù)據(jù)流。④數(shù)據(jù)存儲(chǔ)環(huán)節(jié)一般作為兩個(gè)加工環(huán)節(jié)的界面來安排。⑤適當(dāng)?shù)貫閿?shù)據(jù)流、加工、數(shù)據(jù)存儲(chǔ)、外部實(shí)體命名,名字應(yīng)反映該成分的實(shí)際含義,避免空洞的名字。在繪制分層數(shù)據(jù)流圖時(shí)應(yīng)注意以下事項(xiàng):⑥編號(hào)。⑦保持?jǐn)?shù)據(jù)守恒。⑧局部數(shù)據(jù)存儲(chǔ)的隱蔽性。⑨保持父圖與子圖平衡。⑩只繪制所描述的系統(tǒng)穩(wěn)定工作情況下的數(shù)據(jù)流圖。?畫數(shù)據(jù)流而不要畫控制流。5.1面向數(shù)據(jù)流的結(jié)構(gòu)化分析(2)判定樹和判決表判定樹又稱決策樹(decisiontree),是一種描述加工的圖形工具,適合描述問題處理中具有多個(gè)判斷,并且每個(gè)決策與若干條件有關(guān),導(dǎo)致不同的結(jié)果。5.1面向數(shù)據(jù)流的結(jié)構(gòu)化分析例如有關(guān)退票改簽費(fèi)有如下規(guī)定:

開車前8天(不含)以上退票的,不收取退票費(fèi);票面乘車站開車時(shí)間前48小時(shí)以上的按票價(jià)5%計(jì),24小時(shí)以上、不足48小時(shí)的按票價(jià)10%計(jì),不足24小時(shí)的按票價(jià)20%計(jì)。辦理車票改簽時(shí),新車票票價(jià)高于原車票的,收取票價(jià)差額。新車票票價(jià)等于原車票,不收取費(fèi)用。新車票票價(jià)低于原車票的,退還差額。5.1面向數(shù)據(jù)流的結(jié)構(gòu)化分析圖5-1判定樹表示購(gòu)票5.1面向數(shù)據(jù)流的結(jié)構(gòu)化分析表5-2購(gòu)買火車票判定表5.1面向數(shù)據(jù)流的結(jié)構(gòu)化分析(3)數(shù)據(jù)字典數(shù)據(jù)字典是元數(shù)據(jù)(metadata)的結(jié)構(gòu)化存儲(chǔ)庫,它提供所用數(shù)據(jù)的全面描述。其主要目的是提供一種共同的語言,以幫助軟件項(xiàng)目的涉眾理解數(shù)據(jù)、數(shù)據(jù)的含義以及數(shù)據(jù)與其他數(shù)據(jù)元素的關(guān)系。在結(jié)構(gòu)化分析中,數(shù)據(jù)字典的作用是給數(shù)據(jù)流圖中每個(gè)成分加以定義和說明,數(shù)據(jù)流圖和數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型。5.1面向數(shù)據(jù)流的結(jié)構(gòu)化分析1.數(shù)據(jù)項(xiàng):數(shù)據(jù)流圖中數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)項(xiàng)說明。數(shù)據(jù)項(xiàng)描述={數(shù)據(jù)項(xiàng)名,數(shù)據(jù)項(xiàng)含義說明,別名,數(shù)據(jù)類型,長(zhǎng)度,取值范圍,取值含義,與其他數(shù)據(jù)項(xiàng)的邏輯關(guān)系}2.數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)流圖中數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu)說明。數(shù)據(jù)結(jié)構(gòu)描述={數(shù)據(jù)結(jié)構(gòu)名,含義說明,組成:{數(shù)據(jù)項(xiàng)或數(shù)據(jù)結(jié)構(gòu)}}3.數(shù)據(jù)流:數(shù)據(jù)流圖中流線的說明。數(shù)據(jù)流描述={數(shù)據(jù)流名,說明,數(shù)據(jù)流來源,數(shù)據(jù)流去向,組成:{數(shù)據(jù)結(jié)構(gòu)},平均流量,高峰期流量}4.數(shù)據(jù)存儲(chǔ):數(shù)據(jù)流圖中數(shù)據(jù)塊的存儲(chǔ)特性說明。數(shù)據(jù)存儲(chǔ)描述={數(shù)據(jù)存儲(chǔ)名,說明,編號(hào),流入的數(shù)據(jù)流,流出的數(shù)據(jù)流,組成:{數(shù)據(jù)結(jié)構(gòu)},數(shù)據(jù)量,存取方式}5.處理過程:數(shù)據(jù)流圖中功能塊也就是加工的說明。處理過程描述={處理過程名,說明,輸入:{數(shù)據(jù)流},輸出:{數(shù)據(jù)流},處理:{簡(jiǎn)要說明}}5.1面向數(shù)據(jù)流的結(jié)構(gòu)化分析5.1.2

Gane和Sarsen結(jié)構(gòu)化系統(tǒng)分析Gane和Sarsen的結(jié)構(gòu)化系統(tǒng)分析方法作為主流的傳統(tǒng)需求分析技術(shù)是以系統(tǒng)中數(shù)據(jù)流動(dòng)為重點(diǎn),對(duì)數(shù)據(jù)出入系統(tǒng)邊界形態(tài)、系統(tǒng)內(nèi)部處理進(jìn)行研究來分析用戶的要求。其分析過程分為9個(gè)步驟。5.1面向數(shù)據(jù)流的結(jié)構(gòu)化分析分析過程分為以下9個(gè)步驟:(1)在需求初步獲取的基礎(chǔ)上運(yùn)用逐步求精的方法畫數(shù)據(jù)流圖,數(shù)據(jù)流圖分層描述。(2)決定軟件系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)流圖中哪些部分。(3)確定數(shù)據(jù)流圖中數(shù)據(jù)流的細(xì)節(jié)。(4)定義數(shù)據(jù)流圖中加工的處理邏輯。(5)定義數(shù)據(jù)流圖中涉及的數(shù)據(jù)存儲(chǔ)。(6)定義滿足項(xiàng)目需要的物理資源。(7)確定項(xiàng)目需要滿足的輸入-輸出規(guī)格說明。(8)確定系統(tǒng)中輸入數(shù)據(jù)、中間計(jì)算結(jié)果、輸出數(shù)據(jù)的大小。(9)根據(jù)步驟(8)中的計(jì)算結(jié)果,確定硬件要求和約束。5.1面向數(shù)據(jù)流的結(jié)構(gòu)化分析5.2結(jié)構(gòu)化分析實(shí)例5.2.1逐步求精數(shù)據(jù)流圖智慧教室是一個(gè)較為復(fù)雜的問題,一次性得到一張完整的DFD比較困難,可以按照系統(tǒng)抽象層次結(jié)構(gòu)進(jìn)行逐步求精,并采用分層數(shù)據(jù)流圖表示。圖5-2頂層數(shù)據(jù)流圖圖5-3第一次細(xì)化數(shù)據(jù)流圖5.2結(jié)構(gòu)化分析實(shí)例圖5-4課堂管理細(xì)化數(shù)據(jù)流圖5.2結(jié)構(gòu)化分析實(shí)例圖5-5人臉考勤管理細(xì)化數(shù)據(jù)流圖5.2結(jié)構(gòu)化分析實(shí)例5.2.2定義數(shù)據(jù)字典表5-3人臉考勤管理數(shù)據(jù)字典部分詞條5.2結(jié)構(gòu)化分析實(shí)例5.2.3建造實(shí)體-關(guān)系模型5.2結(jié)構(gòu)化分析實(shí)例面向?qū)ο蠓治?.3.1面向?qū)ο蠓椒ê徒Y(jié)構(gòu)化方法結(jié)構(gòu)化方法求解問題的基本策略是從功能的角度審視問題域。它將應(yīng)用程序看成實(shí)現(xiàn)某些特定任務(wù)的功能模塊。在每個(gè)功能模塊中,用數(shù)據(jù)結(jié)構(gòu)描述待處理數(shù)據(jù)的組織形式,用算法描述具體的操作過程。在面向?qū)ο蟮募夹g(shù)中,對(duì)象由數(shù)據(jù)和操作組成。對(duì)程序設(shè)計(jì)者而言,對(duì)象是一個(gè)具有信息性內(nèi)聚的程序模塊;對(duì)其他用戶而言,對(duì)象是程序提供給他們的服務(wù),通過知悉對(duì)象接口形式就可以調(diào)用,并不需要了解它們的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。5.3面向?qū)ο蠓治?.3.2面向?qū)ο蠓治鲋械闹饕夹g(shù)面向?qū)ο蠓治觯∣OA)是一種半形式化的分析技術(shù)。在多種面向?qū)ο蟮能浖こ谭椒ㄖ?,比較有影響的應(yīng)用有Booch、OOSE、OMT,以及后面出現(xiàn)的統(tǒng)一過程等。5.3面向?qū)ο蠓治?.3.2面向?qū)ο蠓治鲋械闹饕夹g(shù)GradyBooch是面向?qū)ο蠓椒ㄗ钤绲某珜?dǎo)者之一。他于1986年提出了“面向?qū)ο蠓治雠c設(shè)計(jì)(OOAD)”。

Booch提出的開發(fā)模型包括邏輯模型、物理模型、靜態(tài)模型和動(dòng)態(tài)模型。①發(fā)現(xiàn)類和對(duì)象,在一定抽象層面標(biāo)識(shí)出類和對(duì)象;②確定類和對(duì)象的語義,將期望的行為賦予對(duì)象類;③標(biāo)識(shí)類和對(duì)象之間的關(guān)系。Booch方法有很強(qiáng)的表達(dá)能力,其迭代和增量的思想對(duì)很多軟件工程開發(fā)設(shè)計(jì)階段的建模提供了重要的指導(dǎo)。5.3面向?qū)ο蠓治鯫MT(ObjectModelingTechnique)方法是由Loomis,Shan和JamesRumbaugh在最先提出的實(shí)體和關(guān)系模型基礎(chǔ)上進(jìn)一步擴(kuò)展了類、行為以及繼承等得來。①對(duì)象模型:表述對(duì)象靜態(tài)的結(jié)構(gòu)以及它們之間的相互作用關(guān)系。②動(dòng)態(tài)模型:描述系統(tǒng)動(dòng)態(tài)的變化特點(diǎn),包括狀態(tài)和活動(dòng)等。③功能模型:描述與數(shù)據(jù)值的變換有關(guān)的系統(tǒng)特征,不同數(shù)據(jù)值之間在系統(tǒng)內(nèi)的轉(zhuǎn)換,包括處理、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)流等概念。5.3面向?qū)ο蠓治鯦acobson提出了“面向?qū)ο筌浖こ蹋∣OSE)”方法,其核心是用例驅(qū)動(dòng),建立面向?qū)ο蟮姆治瞿P秃驮O(shè)計(jì)模型。主要用五種模型來描述系統(tǒng):①需求模型(Requirementmodel,簡(jiǎn)稱RM)。②分析模型(Analysismodel,AM)。③設(shè)計(jì)模型(Designmodel,簡(jiǎn)稱DM)。④實(shí)現(xiàn)模型(Implementationmodel,IM)。⑤測(cè)試模型(Testingmodel,簡(jiǎn)稱TM)。OOSE的開發(fā)活動(dòng)主要包括分析、構(gòu)造、測(cè)試三個(gè)過程。5.3面向?qū)ο蠓治鼋y(tǒng)一過程使用統(tǒng)一建模語言(UnifiedModelingLanguage,簡(jiǎn)稱UML)來表示要開發(fā)的軟件。UML是面向?qū)ο箝_發(fā)中一種通用的圖形化建模語言?;赨ML建??梢苑譃殪o態(tài)和動(dòng)態(tài)兩類:基于用例圖、對(duì)象圖以及類圖等創(chuàng)建的模型為靜態(tài)模型,基于狀態(tài)圖、活動(dòng)圖等創(chuàng)建的模型為動(dòng)態(tài)模型。表5-4UML部分語法描述5.3面向?qū)ο蠓治?.3.3面向?qū)ο蟮姆治龇椒ê椭饕襟E面向?qū)ο蠓治龅哪繕?biāo)主要是完成對(duì)求解問題的分析,建立系統(tǒng)的需求分析模型,包括對(duì)象模型、動(dòng)態(tài)模型和功能模型等。(1)對(duì)象模型:對(duì)用例模型進(jìn)行分析,把系統(tǒng)分解成互相協(xié)作的分析類,通過類圖和對(duì)象圖描述對(duì)象、對(duì)象的屬性以及對(duì)象間的關(guān)系。對(duì)象模型是對(duì)系統(tǒng)的靜態(tài)建模。(2)動(dòng)態(tài)模型:描述系統(tǒng)的動(dòng)態(tài)行為,通過順序圖、協(xié)作圖描述對(duì)象的交互,以揭示對(duì)象間如何協(xié)作來完成每個(gè)具體的用例。單個(gè)對(duì)象的狀態(tài)變化、動(dòng)態(tài)行為可以通過狀態(tài)圖來表示。(3)功能模型:描述系統(tǒng)應(yīng)該做什么,最直接地反映了用戶對(duì)目標(biāo)系統(tǒng)的需求。通常功能模型由一組數(shù)據(jù)流圖或一組用例圖組成。5.3面向?qū)ο蠓治?.3.3面向?qū)ο蟮姆治龇椒ê椭饕襟E可以把面向?qū)ο蟮姆治鲞^程分成三個(gè)主要活動(dòng):用例建模、類建模和動(dòng)態(tài)建模。(1)

用例建模:建立以用例模型為主體的需求模型,提出所有用例的場(chǎng)景,又稱功能建模。(2)類建模:確定類和它們的屬性,以及類間的相互關(guān)系和交互作用。(3)動(dòng)態(tài)建模:確定由每個(gè)類或者子類執(zhí)行的活動(dòng)或?qū)λ鼈冞M(jìn)行的行為。5.3面向?qū)ο蠓治?.3.3面向?qū)ο蟮姆治龇椒ê椭饕襟E面向?qū)ο蠓治鰪某槿☆愰_始。5.3表5-5

類的構(gòu)造表達(dá)面向?qū)ο蠓治?.3.3面向?qū)ο蟮姆治龇椒ê椭饕襟E實(shí)體類的提取可以按照如下步驟進(jìn)行:1)提出所有用例的可能場(chǎng)景,包括正常場(chǎng)景和異常場(chǎng)景。2)標(biāo)識(shí)出這些用例和場(chǎng)景中的實(shí)體類(包括屬性和方法,

也可以在面向?qū)ο笤O(shè)計(jì)時(shí)深入探索)。3)確定實(shí)體類結(jié)構(gòu)和層次。4)確定實(shí)體類之間的交互關(guān)系。5.3面向?qū)ο蠓治?.3.3面向?qū)ο蟮姆治龇椒ê椭饕襟E用例是系統(tǒng)功能的一般性描述,場(chǎng)景是用例的一個(gè)特定實(shí)例。系統(tǒng)每個(gè)用例可以通過由實(shí)體類、邊界類、控制類相互關(guān)聯(lián)的類圖來表示。用例的場(chǎng)景通過這些類的對(duì)象之間的交互關(guān)系和交互行為來實(shí)現(xiàn),可以通過順序圖、協(xié)作圖等來對(duì)這個(gè)場(chǎng)景進(jìn)行動(dòng)態(tài)建模。在面向?qū)ο蠓治鲞^程中,有多種方法可以幫助提取實(shí)體類。5.3面向?qū)ο蠓治?.3.3面向?qū)ο蟮姆治龇椒ê椭饕襟E(1)用例識(shí)別從用例和場(chǎng)景中識(shí)別類是提取類的一種主要方法。針對(duì)每個(gè)用例,我們可以通過回答以下問題來識(shí)別出候選類:①用例或者場(chǎng)景描述,需要哪些實(shí)體參與合作以完成任務(wù)?②用例或者場(chǎng)景描述中,會(huì)生成或者存儲(chǔ)哪些需要長(zhǎng)期保存的信息?③用例使用者需要向用例輸入的信息有哪些?④用例向使用者輸出的信息有哪些?⑤用例需要對(duì)哪些設(shè)備進(jìn)行操作?5.3面向?qū)ο蠓治觯?)名詞識(shí)別法首先用指定語言對(duì)系統(tǒng)進(jìn)行簡(jiǎn)要的描述,通常用一個(gè)段落即可;接著從這段描述中標(biāo)識(shí)出名詞、代詞、名詞短語,并將其表示成初始的候選類;然后通過回答以下問題進(jìn)一步確定類。①是否存在兩個(gè)及以上類,表述的是同一個(gè)信息,刪除冗余的候選類,僅保留一個(gè)具有描述能力的候選類。②刪除處于系統(tǒng)邊界之外的類,即去掉不相干的候選類。③刪除定義不確切,或者范圍過大的模糊的候選類。④刪除獨(dú)立性不清,應(yīng)該屬于類的屬性的候選類。⑤刪除獨(dú)立性不強(qiáng),應(yīng)該屬于類的操作的候選類。5.3面向?qū)ο蠓治觯?)CRC卡片1990年Wiener提出了類—職責(zé)—協(xié)作建模(Class-Responsibility-Collaboration,簡(jiǎn)稱CRC)。CRC模型在開始時(shí)是用卡片記錄,將每個(gè)類的類名、功能(職責(zé))和它要需要調(diào)用其他類的列表放在一張卡片中。5.35.4.1功能建模表5-6查看考勤結(jié)果用例場(chǎng)景描述面向?qū)ο蠓治鰧?shí)例5.45.4.1功能建模圖5-7查看考勤結(jié)果活動(dòng)圖面向?qū)ο蠓治鰧?shí)例5.4面向?qū)ο蠓治鰧?shí)例5.4.1功能建模表5-8

活動(dòng)圖基本組成描述5.45.4.2類建模根據(jù)人臉考勤用例可以得到下列類:(1)實(shí)體類①考勤記錄:記錄用戶每一次的考勤結(jié)果。②采集人臉信息:保存教室現(xiàn)場(chǎng)采集的考勤人臉特征信息。③學(xué)生信息:保存學(xué)生信息包括學(xué)生人臉信息。(2)控制類①人臉考勤:負(fù)責(zé)處理考勤過程中系統(tǒng)特定指令和動(dòng)作。(3)邊界類①攝像頭接口:負(fù)責(zé)獲取教室圖像信息。②教師界面:教師與系統(tǒng)交流的媒介。面向?qū)ο蠓治鰧?shí)例5.45.4.2類建模圖5-8考勤管理用例的初始類圖面向?qū)ο蠓治鰧?shí)例5.45.4.2類建模圖5-9用戶管理用例的初始類圖面向?qū)ο蠓治鰧?shí)例5.45.4.2類建模圖5-10智慧教室管理系統(tǒng)部分用例合并得到的初始類圖面向?qū)ο蠓治鰧?shí)例5.45.4.3動(dòng)態(tài)建模

(1)狀態(tài)圖表5-9狀態(tài)圖基本組成描述面向?qū)ο蠓治鰧?shí)例5.45.4.3動(dòng)態(tài)建模

在狀態(tài)圖中,事件(Event)、動(dòng)作(Action)、以及活動(dòng)(Activity),在描述狀態(tài)之間的轉(zhuǎn)換和狀態(tài)行為時(shí)起著關(guān)鍵作用。事件是引起狀態(tài)轉(zhuǎn)換或觸發(fā)狀態(tài)中行為的觸發(fā)器。它可以是外部的信號(hào)、條件的改變、用戶的操作等。事件表示狀態(tài)變化的原因或起因。動(dòng)作是在狀態(tài)機(jī)中執(zhí)行的某種行為或操作,它通常與狀態(tài)轉(zhuǎn)換相關(guān)聯(lián),描述了狀態(tài)從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的具體動(dòng)作。動(dòng)作是狀態(tài)機(jī)中可以執(zhí)行的原子操作。活動(dòng)是狀態(tài)機(jī)中一個(gè)狀態(tài)執(zhí)行的一系列操作或任務(wù)。它是狀態(tài)中進(jìn)行的非原子操作,可以描述狀態(tài)內(nèi)部的活動(dòng)流程,而不是僅僅描述狀態(tài)之間的轉(zhuǎn)換。面向?qū)ο蠓治鰧?shí)例5.45.4.3動(dòng)態(tài)建模

(1)狀態(tài)圖圖5-11學(xué)生考勤狀態(tài)圖面向?qū)ο蠓治鰧?shí)例5.45.4.3動(dòng)態(tài)建模

(2)順序圖表5-10順序圖基本組成描述面向?qū)ο蠓治鰧?shí)例5.45.4.3動(dòng)態(tài)建模

(2)順序圖圖5-12人臉考勤順序圖面向?qū)ο蠓治鰧?shí)例5.45.4.3動(dòng)態(tài)建模

(2)順序圖圖5-13教師查詢考勤記錄順序圖面向?qū)ο蠓治鰧?shí)例5.45.4.3動(dòng)態(tài)建模

(3)協(xié)作圖表5-11協(xié)作圖中的部分符號(hào)面向?qū)ο蠓治鰧?shí)例5.45.4.3動(dòng)態(tài)建模

(3)協(xié)作圖圖5-14教師查詢考勤結(jié)果協(xié)作圖面向?qū)ο蠓治鰧?shí)例5.4形式化分析技術(shù)形式化方法(FormalMethods)是驗(yàn)證軟件系統(tǒng)是否高度安全可靠的重要方法,是提高軟件質(zhì)量的有效途徑。在軟件工程領(lǐng)域,形式化方法是基于數(shù)學(xué)的描述和驗(yàn)證軟件系統(tǒng)的一種方法。形式化方法利用數(shù)學(xué)的嚴(yán)密性去證明系統(tǒng)的正確性,形成一套嚴(yán)密的理論體系,提供一個(gè)完整的框架,使得人們可以在這個(gè)框架中以一種系統(tǒng)的方式描述和驗(yàn)證軟件系統(tǒng)。5.5形式化方法可以分為以下五類:(1)基于模型的方法:通過明確定義狀態(tài)和操作來建立一個(gè)系統(tǒng)模型,顯式說明系統(tǒng)如何從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài),例如Z語言、VDM和B方法等。(2)基于網(wǎng)絡(luò)的方法:采用具有形式語義的圖形語言,例如Petri網(wǎng)、狀態(tài)機(jī)等。(3)進(jìn)程代數(shù)方法:通過限制所有容許的可觀察的進(jìn)程間通信來表示系統(tǒng)行為,允許并發(fā)進(jìn)程的顯式表示,例如通信順序進(jìn)程CSP、通信系統(tǒng)演算CCS、時(shí)序排序規(guī)約語言LOTOS、計(jì)時(shí)通信順序進(jìn)程TCSP、計(jì)時(shí)可能性演算TPCCS等。形式化分析技術(shù)5.5形式化方法可以分為以下五類:(4)基于邏輯的方法:用邏輯描述系統(tǒng)底層規(guī)約、時(shí)序和行為等,采用與所選邏輯相關(guān)的公理系統(tǒng)證明系統(tǒng)達(dá)到預(yù)期目標(biāo)。利用具體的編程構(gòu)造擴(kuò)充邏輯,通過保持正確性的細(xì)化步驟集來開發(fā)系統(tǒng)。這類方法有各類時(shí)序邏輯TL、hoare邏輯、WP演算、模態(tài)邏輯等。(5)代數(shù)方法:通過將未定義狀態(tài)下不同的操作行為相聯(lián)系,給出操作的顯式定義。這類方法有OBJ、Larch族代數(shù)規(guī)約語言等。形式化分析技術(shù)5.5汽車無鑰匙進(jìn)入系統(tǒng)CSP模型//模型需要的常量定義#defineN2;//車鑰匙擁有者數(shù)目(2人)#definefar0;//人離汽車遠(yuǎn)#definenear1;//人離汽車近,有鑰匙的話可以開車門#definein2;//人在車?yán)?defineoff0;//汽車發(fā)動(dòng)機(jī)關(guān)#defineon1;//汽車發(fā)動(dòng)機(jī)開#defineunlock0;//車門關(guān)閉但沒鎖#definelock1;//車門鎖住#defineopen2;//車門開著#defineincar-1;//鑰匙在車?yán)?definefaralone-2;//鑰匙不在車?yán)锴译x車很遠(yuǎn)形式化分析技術(shù)5.5//模型需要的變量定義varowner[N]={far,far};//人的位置,編號(hào)分別是0和1,初始時(shí)2人都離車很遠(yuǎn)varengine=off;//發(fā)動(dòng)機(jī)狀態(tài),初始時(shí)關(guān)閉vardoor=lock;//車門的狀態(tài),初始時(shí)門是鎖住的varkey=0;//車鑰匙歸屬,初始時(shí)在0號(hào)人處varmoving=0;//汽車移動(dòng)狀態(tài),0是停止,1是移動(dòng)varfuel=10;//發(fā)動(dòng)機(jī)油耗,1表示短距離,5表示長(zhǎng)距離//人的行為模型,其中i表示人的編號(hào)(這個(gè)模型中可以是0也可以是1),“[]”表示前后連接的行為可以任意選擇,“[條件]”表示滿足條件才能進(jìn)行條件后的行為(斜體字部分),“{運(yùn)算}”表示行為發(fā)生時(shí)改變一些變量的值,箭頭表示行為發(fā)生先后順序,“&&”和“||”分別表示邏輯并或者邏輯或owner_pos(i)=[owner[i]==far]towards.i{owner[i]=near;}->owner_pos(i)[][owner[i]==near]goaway.i{owner[i]=far;}->owner_pos(i)[][owner[i]==near&&door==open&&moving==0]getin.i{owner[i]=in;}->owner_pos(i)[][owner[i]==in&&door==open&&moving==0]goout.i{owner[i]=near;}->owner_pos(i);

形式化分析技術(shù)5.5//車鑰匙的行為模型key_pos(i)=[key==i&&owner[i]==in]putincar.i{key=incar;}->key_pos(i)[][key==i&&owner[i]==far]putaway.i{key=faralone;}->key_pos(i)[][(key==faralone&&owner[i]==far)||(key==incar&&owner[i]==in)]getkey.i{key=i;}->key_pos(i);//車門的行為模型door_op(i)=[key==i&&owner[i]==near&&door==lock&&moving==0]unlockopen.i{door=open;}->door_op(i)[][owner[i]==near&&door==unlock&&moving==0]justopen.i{door=open;}->door_op(i)[][door!=open&&owner[i]==in]insideopen.i{door=open;}->door_op(i)[][door==open]close.i{door=unlock;}->door_op(i)[][door==unlock&&owner[i]==in]insidelock.i{door=lock;}->door_op(i)[][door==unlock&&owner[i]==near&&key==i]outsidelock.i{door=lock;}->door_op(i);形式化分析技術(shù)5.5//發(fā)動(dòng)機(jī)的行為模型motor(i)=[owner[i]==in&&(key==i||key==incar)&&engine==off&&fuel!=0]turnon.i{engine=on;}->motor(i)[][engine==on&&owner[i]==in&&moving==0]startdrive.i{moving=1;}->motor(i)[][moving==1&&fuel!=

溫馨提示

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