面向?qū)ο蟮男枨蠓治稣n件_第1頁
面向?qū)ο蟮男枨蠓治稣n件_第2頁
面向?qū)ο蟮男枨蠓治稣n件_第3頁
面向?qū)ο蟮男枨蠓治稣n件_第4頁
面向?qū)ο蟮男枨蠓治稣n件_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第六章面向?qū)ο蟮男枨蠓治雒嫦驅(qū)ο蟮男枨蠓治龇椒ǖ暮诵氖抢妹嫦驅(qū)ο蟮母拍詈头椒檐浖枨蠼ㄔ炷P?。它包含面向?qū)ο箫L(fēng)格的圖形語言機(jī)制以及用于指導(dǎo)需求分析的面向?qū)ο蠓椒▽W(xué)。面向?qū)ο蟮乃枷胱畛跗鹪从?960年代中期的仿真程序設(shè)計(jì)語言Simula67。1980年代初出現(xiàn)的Smalltalk語言及其程序設(shè)計(jì)環(huán)境對(duì)面向?qū)ο蠹夹g(shù)的推廣應(yīng)用起到了顯著的促進(jìn)作用。1990年代中后期誕生并迅速成熟的UML(統(tǒng)一建模語言,UnifiedModelingLanguage)是面向?qū)ο蠹夹g(shù)發(fā)展的一個(gè)重要里程碑。UML統(tǒng)一了面向?qū)ο蠼5幕靖拍?、術(shù)語和表示方法,不僅為面向?qū)ο蟮能浖_發(fā)過程提供了能力豐富的表達(dá)手段,而且也為軟件開發(fā)人員提供了互相交流、分享經(jīng)驗(yàn)的共用語言。6/8/20231面向?qū)ο蟮男枨蠓治雒嫦驅(qū)ο蟮母拍钆c思想U(xiǎn)ML概述基于UML的需求分析以“家庭保安系統(tǒng)”為實(shí)例,介紹與需求分析相關(guān)的部分UML語言機(jī)制以及基于UML的面向?qū)ο蟮男枨蠓治龇椒ê瓦^程。6/8/202326.1面向?qū)ο蟮母拍钆c思想客觀世界中的應(yīng)用問題都是由實(shí)體及其相互關(guān)系構(gòu)成的??梢詫⒖陀^世界中與應(yīng)用問題有關(guān)的實(shí)體及其屬性抽象為問題空間中的對(duì)象。為應(yīng)用問題尋求軟件解,是借助于計(jì)算機(jī)語言對(duì)其提供的實(shí)體施加某些動(dòng)作,以動(dòng)作的結(jié)果給出問題的解。面向?qū)ο?Object-Oriented,簡(jiǎn)稱OO)的需求分析方法通過提供對(duì)象、對(duì)象間消息傳遞等語言機(jī)制讓分析人員在解空間中直接模擬問題空間中的對(duì)象及其行為6/8/20233面向?qū)ο蟮母拍钆c思想

OO方法學(xué)核心概念:

(1)對(duì)象對(duì)象是現(xiàn)實(shí)世界中個(gè)體或事物的抽象表示,是其屬性和相關(guān)操作的封裝。屬性表示對(duì)象的性質(zhì),屬性值規(guī)定了對(duì)象所有可能的狀態(tài)。對(duì)象的操作是指該對(duì)象可以展現(xiàn)的外部服務(wù)。例如,大型客機(jī)可視為對(duì)象,它具有位置、速度、顏色、容量等屬性,對(duì)于

該對(duì)象可施行起飛、降落、加速、維修等操作,這些操作將或多或少地改變飛機(jī)的屬性值(狀態(tài))。6/8/202346/8/20235面向?qū)ο蟮母拍钆c思想(2)類。類表示某些對(duì)象在屬性和操作方面的共同特征。例如,直升飛機(jī)、大型客機(jī)、轟炸機(jī)可歸為飛行器類。共同屬性有:位置、速度和顏色等。共同操作有:起飛、降落、加速和維修等。飛行器類:位置速度顏色起飛降落加速維修6/8/20236面向?qū)ο蟮母拍钆c思想

(3)繼承類之間的繼承關(guān)系是現(xiàn)實(shí)世界中遺傳關(guān)系的模擬,它表示類之間的內(nèi)在聯(lián)系

以及對(duì)屬性和操作的共享,即,子類可以沿用父類(被繼承類)的某些特征。子類也可以具有自己獨(dú)有的屬性和操作。例如,飛行器、汽車和輪船可歸于交通工具類,飛行器類可以繼承交通工具類的某些屬性和操作。直升飛機(jī)、大型客機(jī)、轟炸機(jī)可歸為飛行器類。6/8/20237飛行器類位置,速度,顏色起飛、降落、加速、維修直升飛機(jī)大型客機(jī)轟炸機(jī)6/8/20238面向?qū)ο蟮母拍钆c思想

(4)聚集現(xiàn)實(shí)世界普遍存在部分—整體關(guān)系。例如,飛機(jī)可由發(fā)動(dòng)機(jī)、機(jī)身、機(jī)械控制系統(tǒng)、電子控制系統(tǒng)等構(gòu)成。部分—整體關(guān)系在OO方法學(xué)中表示為類之間的聚集關(guān)系。在聚集關(guān)系下,部分類的對(duì)象是整體類對(duì)象的一個(gè)組成部分。6/8/20239飛機(jī)機(jī)械控制系統(tǒng)機(jī)身電子控制系統(tǒng)6/8/202310面向?qū)ο蟮母拍钆c思想(5)消息消息傳遞是對(duì)象與其外部世界相互關(guān)聯(lián)的唯一途徑。對(duì)象可以向其它對(duì)象發(fā)送消息以請(qǐng)求服務(wù),也可以響應(yīng)其它對(duì)象傳來的消息,完成自身固有的某些操作,從而服務(wù)于其它對(duì)象。例如,直升飛機(jī)可以響應(yīng)輪船的海難急救信號(hào),起飛,加速,飛赴出事地點(diǎn)并實(shí)施救援作業(yè)。因?yàn)閷?duì)象的操作主要用來響應(yīng)外來消息并為其它對(duì)象提供服務(wù),所以它們也被稱作“外部服務(wù)”。面向?qū)ο?/p>

=對(duì)象

+類

+繼承

+聚集

+消息。6/8/2023116.2UML概述6.2.1UML的語言機(jī)制

UML主要以Booch方法、OMT方法[71]和OOSE方法為基礎(chǔ),同時(shí)也吸收了其他面向?qū)ο蠼7椒ǖ膬?yōu)點(diǎn),形成了一種概念清晰、表達(dá)能力豐富、適用范圍廣泛的面向?qū)ο蟮臉?biāo)準(zhǔn)建模語言。6/8/202312UML的語言機(jī)制UML通過圖形化的表示機(jī)制從多個(gè)側(cè)面刻畫系統(tǒng)的分析和設(shè)計(jì)模型。

UML共定義十種視圖,可分四類:

(1)用例圖(usecasediagram)從外部用戶的角度描述系統(tǒng)的功能,并指出功能的執(zhí)行者。

(2)靜態(tài)圖類圖(classdiagram)、類圖描述系統(tǒng)的靜態(tài)結(jié)構(gòu),類圖的結(jié)點(diǎn)表示系統(tǒng)中的類及其屬性和操作,類圖的邊表示類之間的聯(lián)系,包括繼承、關(guān)聯(lián)、依賴、聚合等。6/8/202313

對(duì)象圖(objectdiagram)

對(duì)象圖是類圖的一個(gè)實(shí)例。它描述在某種狀態(tài)下,或者在某一時(shí)間段系統(tǒng)中活躍的對(duì)象及其關(guān)系。在對(duì)象圖中,一個(gè)類可以擁有多個(gè)活躍的對(duì)象實(shí)例。包圖(packagediagram)

包圖描述系統(tǒng)的分解,表示包(package)以及包之間的關(guān)系。包由子包及類組成。包之間的關(guān)系包括繼承、構(gòu)成與依賴關(guān)系。6/8/202314(3)行為圖交互圖(interactivediagram)

狀態(tài)圖(statechartdiagram)

活動(dòng)圖(activitydiagram)

它們從不同的側(cè)面刻畫系統(tǒng)的動(dòng)態(tài)行為。交互圖描述對(duì)象之間的消息傳遞。它又可分為順序圖(sequencediagram)與合作圖(collaborationdiagram)兩種形式。順序圖強(qiáng)調(diào)對(duì)象之間消息發(fā)送的時(shí)間序。合作圖更強(qiáng)調(diào)對(duì)象間的動(dòng)態(tài)協(xié)作關(guān)系。合作圖也可通過消息序號(hào)來表示消息傳遞的時(shí)間序,只不過這種表示不如順序圖那樣直觀。6/8/202315狀態(tài)圖描述類的對(duì)象的動(dòng)態(tài)行為。它包含對(duì)象所有可能的狀態(tài)、在每個(gè)狀態(tài)下能夠響應(yīng)的事件以及事件發(fā)生時(shí)的狀態(tài)遷移與響應(yīng)動(dòng)作。活動(dòng)圖描述系統(tǒng)為完成某項(xiàng)功能而執(zhí)行的操作序列,這些操作序列可以并發(fā)和同步?;顒?dòng)圖中包含控制流和信息流??刂屏鞅硎疽粋€(gè)操作完成后對(duì)其后續(xù)操作的觸發(fā),信息流則刻畫操作之間的信息交換。6/8/202316(4)實(shí)現(xiàn)圖(implementationdiagram)描述軟件系統(tǒng)的實(shí)現(xiàn)。構(gòu)件圖(componentdiagram)

描述軟件實(shí)現(xiàn)系統(tǒng)中各組成部件以及它們之間的依賴關(guān)系。一個(gè)部件可能是一個(gè)資源描述文件、一個(gè)二進(jìn)制文件或一個(gè)可執(zhí)行文件。構(gòu)件圖用于理解和分析軟件各部分之間的相互影響程度。

6/8/202317部署圖(deploymentdiagram)

描述軟件系統(tǒng)運(yùn)行環(huán)境的硬件及網(wǎng)絡(luò)的物理體系結(jié)構(gòu)。結(jié)點(diǎn)表示實(shí)際的計(jì)算機(jī)和設(shè)備,邊表示結(jié)點(diǎn)之間的物理連接關(guān)系,也可顯示連接的類型及結(jié)點(diǎn)之間的依賴性。在結(jié)點(diǎn)內(nèi)部,可以放置可執(zhí)行部件和對(duì)象以顯示結(jié)點(diǎn)與可執(zhí)行軟件單元之間的對(duì)應(yīng)關(guān)系。部署圖對(duì)于軟件安裝工程師有重要的參考價(jià)值。6/8/202318例:課程注冊(cè)管理系統(tǒng)的用例圖課表維護(hù)、個(gè)人課程規(guī)劃和選課學(xué)生花名冊(cè)查詢。教務(wù)管理人員使用“課表維護(hù)”用例,設(shè)置或修改課程屬性(課程的時(shí)間、地點(diǎn)、上課老師等),增刪課程;學(xué)生使用“個(gè)人課程規(guī)劃”用例選課、修改自己的個(gè)人課表,收費(fèi)管理系統(tǒng)根據(jù)每個(gè)學(xué)生的選課情況計(jì)算其應(yīng)繳費(fèi)用;老師使用“選課學(xué)生花名冊(cè)查詢”用例獲取選定其所開課程的學(xué)生花名冊(cè)。6/8/202319課程注冊(cè)管理系統(tǒng)的類圖6/8/202320圖6.2表示課程注冊(cè)管理系統(tǒng)包括:“教務(wù)管理人員”、“學(xué)生”、“老師”、“課程”、“課程設(shè)置”、“課程注冊(cè)表”、“課程注冊(cè)管理器”、“課程管理器”八個(gè)類。前三個(gè)類為一般化的“用戶”類的子類。一門“課程”可由一到多個(gè)“課程設(shè)置”構(gòu)成,例如,對(duì)于全校性的公共基礎(chǔ)課,由于選修的學(xué)生太多,必須安排不同的老師、不同的教室或者不同的時(shí)間段?!皩W(xué)生”、“老師”與“課程設(shè)置”之間,“課程注冊(cè)表”與“課程注冊(cè)管理器”之間,以及“課程注冊(cè)管理器”與“課程”之間存在著關(guān)聯(lián)關(guān)系。6/8/202321用UML順序圖表示“個(gè)人課程規(guī)劃”

用例中的學(xué)生選課過程6/8/202322用UML協(xié)作圖表示“個(gè)人課程規(guī)劃”

用例中的學(xué)生選課過程

6/8/202323

UML狀態(tài)圖示例

“課程設(shè)置”對(duì)象的狀態(tài)圖表示,每個(gè)“課程設(shè)置”最多只能容納50個(gè)選課學(xué)生。6/8/2023246.2.2基于UML的軟件開發(fā)過程雖然UML是獨(dú)立于軟件開發(fā)過程的,即,UML能夠在幾乎任何一種軟件開發(fā)過程中使用,但是,熟悉一種有代表性的面向?qū)ο蟮能浖_發(fā)過程,并知悉UML各語言要素在過程中不同階段的應(yīng)用,對(duì)于理解UML將大有裨益。圖6.6表示了一種迭代的漸進(jìn)式軟件開發(fā)過程,它包含四個(gè)階段:初啟,細(xì)化,構(gòu)造和移交。6/8/202325

面向?qū)ο蟮牡?、漸進(jìn)式軟件開發(fā)過程6/8/2023261初啟在初啟階段,軟件項(xiàng)目的發(fā)起人確定項(xiàng)目的主要目標(biāo)和范圍,并進(jìn)行初步的可行性分析和經(jīng)濟(jì)效益分析。

6/8/2023272細(xì)化(1)初步的需求分析。采用UML的用例描述目標(biāo)軟件系統(tǒng)所有比較重要、比較有風(fēng)險(xiǎn)的用例,利用用例圖表示參與者與用例、以及用例與用例之間的關(guān)系。采用UML的類圖表示目標(biāo)軟件系統(tǒng)所基于的應(yīng)用領(lǐng)域中的概念及概念之間的關(guān)系。這些相互關(guān)聯(lián)的概念構(gòu)成領(lǐng)域模型。如果領(lǐng)域中含有明顯的流程處理成分,可以考慮利用UML的活動(dòng)圖來刻畫領(lǐng)域中的工作流,并標(biāo)識(shí)業(yè)務(wù)流程中的并發(fā)、同步等特征。6/8/202328

(2)初步的高層設(shè)計(jì)。如果目標(biāo)軟件系統(tǒng)的規(guī)模比較龐大,那么,經(jīng)初步需求分析獲得的用例、類將會(huì)非常多。此時(shí),可以考慮根據(jù)用例、類在業(yè)務(wù)領(lǐng)域中的關(guān)系,或者根據(jù)業(yè)務(wù)領(lǐng)域中某種有意義的分類方法將整個(gè)軟件系統(tǒng)劃分為若干個(gè)包,利用UML的包圖刻畫這些包及其關(guān)系。如此,用例、用例圖、類、類圖將依據(jù)包的劃分方法分屬于不同的包,從而給出整個(gè)目標(biāo)軟件系統(tǒng)的高層結(jié)構(gòu)。6/8/202329(3) 部分的詳細(xì)設(shè)計(jì)。對(duì)于系統(tǒng)中某些重要的、或者風(fēng)險(xiǎn)比較高的用例,可以采用交互圖進(jìn)一步探討其內(nèi)部實(shí)現(xiàn)過程。同樣,對(duì)于系統(tǒng)中的關(guān)鍵類,也可以詳細(xì)研究其屬性和操作,并在UML類圖中加以表現(xiàn)。(4)部分的原型構(gòu)造。針對(duì)用例生成詳盡的交互圖,對(duì)所有相關(guān)類給出明確的屬性和操作定義。6/8/202330

綜上,在細(xì)化階段可能需要使用的UML語言機(jī)制包括:描述用戶需求的用例及用例圖,表示領(lǐng)域概念模型的類圖,表示業(yè)務(wù)流程處理的活動(dòng)圖,表示系統(tǒng)高層結(jié)構(gòu)的包圖,表示用例內(nèi)部實(shí)現(xiàn)過程的交互圖等。6/8/2023313構(gòu)造:6/8/202332構(gòu)造階段可能使用的UML語言機(jī)制:1)用例及用例圖。它們是開發(fā)人員在構(gòu)造階段進(jìn)行分析和設(shè)計(jì)的基礎(chǔ)。2)類圖。在領(lǐng)域概念模型的基礎(chǔ)上引進(jìn)為軟件實(shí)現(xiàn)所必需的類、屬性和方法。3)交互圖:表示針對(duì)用例設(shè)計(jì)的軟件實(shí)現(xiàn)方法。4)狀態(tài)圖:表示類的對(duì)象的狀態(tài)—事件—響應(yīng)行為。5)活動(dòng)圖:表示復(fù)雜的算法過程,尤其是過程中的并發(fā)和同步。6)包圖:表示目標(biāo)軟件系統(tǒng)的頂層結(jié)構(gòu)。7)構(gòu)件圖。8)部署圖。6/8/2023334移交在移交階段,開發(fā)人員對(duì)構(gòu)造階段獲得的軟件系統(tǒng)在用戶實(shí)際工作環(huán)境(或接近實(shí)際的模擬環(huán)境)中試運(yùn)行,根據(jù)用戶的修改意見進(jìn)行少量調(diào)整。

6/8/2023346.3基于UML的需求分析初步業(yè)務(wù)需求描述形成后,基于UML的需求分析分為以下步驟:(1)利用用例及用例圖表示需求:從業(yè)務(wù)需求描述出發(fā)獲取執(zhí)行者和場(chǎng)景;對(duì)場(chǎng)景進(jìn)行匯總、分類、抽象,形成用例;確定執(zhí)行者與用例、用例與用例圖之間的關(guān)系,生成用例圖。

(2)利用包圖及類圖表示目標(biāo)軟件系統(tǒng)的總體框架結(jié)構(gòu):根據(jù)領(lǐng)域知識(shí)、業(yè)務(wù)需求和工作經(jīng)驗(yàn),設(shè)計(jì)目標(biāo)軟件系統(tǒng)的頂層架構(gòu);從業(yè)務(wù)需求描述中提取“關(guān)鍵概念”,形成領(lǐng)域概念模型;從概念模型和用例出發(fā),研究系統(tǒng)中主要的類之間的關(guān)系,生成類圖。6/8/202335需求分析過程6/8/2023366.3.1開發(fā)場(chǎng)景場(chǎng)景從單個(gè)執(zhí)行者的角度觀察目標(biāo)軟件系統(tǒng)的功能和外部行為。這種功能通過系統(tǒng)與用戶之間的交互表征。場(chǎng)景是用戶與系統(tǒng)進(jìn)行交互的一組具體的動(dòng)作。場(chǎng)景是用例的實(shí)例,而用例是某類場(chǎng)景的共同抽象。對(duì)場(chǎng)景的完整描述包含場(chǎng)景名稱、執(zhí)行者實(shí)例、前置條件、事件流和后置條件。如,“家庭保安系統(tǒng)”的初步需求描述,具有系統(tǒng)配置、開機(jī)、關(guān)機(jī)、門窗監(jiān)測(cè)、煙霧監(jiān)測(cè)、復(fù)位等場(chǎng)景。6/8/202337門窗監(jiān)測(cè)場(chǎng)景的描述:場(chǎng)景名稱:門窗監(jiān)測(cè)。參與執(zhí)行者實(shí)例:警報(bào)器,報(bào)警電話,顯示器,門窗監(jiān)視器。前置條件:系統(tǒng)已開機(jī)。事件流:

(1)門窗監(jiān)視器發(fā)現(xiàn)門或窗戶發(fā)生異動(dòng),向軟件系統(tǒng)報(bào)告異常事件。(2)軟件系統(tǒng)啟動(dòng)警報(bào)器并撥報(bào)警電話號(hào)碼。

(3)報(bào)警電話接通后,軟件系統(tǒng)播出語音,報(bào)告異常事件發(fā)生的時(shí)間、地點(diǎn)和事件的性質(zhì)(門窗異動(dòng))。

(4)系統(tǒng)在控制面板的顯示器上顯示報(bào)警時(shí)間及當(dāng)前狀態(tài)(報(bào)警:門窗異動(dòng))。后置條件:系統(tǒng)處于“報(bào)警”狀態(tài)。6/8/202338場(chǎng)景的分類(1)

實(shí)際場(chǎng)景對(duì)實(shí)際的業(yè)務(wù)處理流程或其優(yōu)化流程的描述,是用戶需求的重要組成部分。(2)設(shè)想場(chǎng)景分析人員對(duì)目標(biāo)軟件系統(tǒng)投入應(yīng)用后經(jīng)改進(jìn)或優(yōu)化的業(yè)務(wù)流程的描述。(3)評(píng)價(jià)場(chǎng)景確認(rèn)需求或提出改進(jìn)建議為主要目的的業(yè)務(wù)流程描述。(4)培訓(xùn)場(chǎng)景:面向開發(fā)人員及用戶解釋系統(tǒng)的功能和外部行為的業(yè)務(wù)流程描述。6/8/202339場(chǎng)景的獲取確定執(zhí)行者和場(chǎng)景的關(guān)鍵在于理解業(yè)務(wù)領(lǐng)域和初步需求描述文檔。下列問題的回答可幫助分析人員獲取場(chǎng)景:(1)目標(biāo)軟件系統(tǒng)有哪些執(zhí)行者?(2)執(zhí)行者希望系統(tǒng)執(zhí)行的任務(wù)有哪些?(3)執(zhí)行者希望獲得哪些信息?這些信息由誰生成?由誰修改?(4)執(zhí)行者需要通知系統(tǒng)哪些事件?系統(tǒng)響應(yīng)這些事件時(shí)會(huì)表現(xiàn)出哪些外部行為?(5)系統(tǒng)將通告執(zhí)行者哪些事件?場(chǎng)景將促成開發(fā)人員和用戶對(duì)于業(yè)務(wù)處理流程和目標(biāo)軟件系統(tǒng)的功能范圍的共同理解。在場(chǎng)景確定之后,通過對(duì)場(chǎng)景的匯總、分類歸并、抽象即可形成用例。6/8/2023406.3.2生成用例從外部用戶的視角看,一個(gè)用例是執(zhí)行者(actor)與目標(biāo)軟件系統(tǒng)之間一次典型的交互作用。從軟件系統(tǒng)內(nèi)部的視角出發(fā),一個(gè)用例代表著系統(tǒng)執(zhí)行的一系列動(dòng)作,動(dòng)作執(zhí)行的結(jié)果能夠被外部的執(zhí)行者所察覺。執(zhí)行者指外部用戶或外部實(shí)體在系統(tǒng)中扮演的角色。如果多個(gè)用戶在使用目標(biāo)軟件系統(tǒng)時(shí)扮演同一角色,這些用戶用單一執(zhí)行者表示。如果一個(gè)用戶扮演多種角色,則需要用多個(gè)執(zhí)行者來表示同一用戶。6/8/202341生成用例對(duì)用例的完整描述包括用例名稱、參與執(zhí)行者、前置條件、一個(gè)主事件流、0到多個(gè)輔事件流、后置條件。主事件流表示正常情況下執(zhí)行者與系統(tǒng)之間的信息交互及動(dòng)作序列,輔事件流則表示特殊情況或異常情況下的信息交互及動(dòng)作序列。顯式地分隔主、輔事件流是為了使分析人員首先聚焦于正常的業(yè)務(wù)處理流程,同時(shí)也便于用例的讀者理解業(yè)務(wù)需求。6/8/202342生成用例用例源于分析人員對(duì)場(chǎng)景的分類和抽象,對(duì)相似場(chǎng)景進(jìn)行歸并,使得一個(gè)用例可以通過實(shí)例化、參數(shù)調(diào)節(jié)而涵蓋多個(gè)場(chǎng)景。例如,“家庭保安系統(tǒng)”中的“開機(jī)”、“關(guān)機(jī)”、“復(fù)位”三個(gè)場(chǎng)景可以歸并為“命令處理”用例,三個(gè)場(chǎng)景之間的差異通過用戶命令區(qū)分。門窗監(jiān)測(cè)、煙霧監(jiān)測(cè)兩個(gè)場(chǎng)景可歸并為統(tǒng)一的“傳感器監(jiān)測(cè)”用例。熟悉業(yè)務(wù)領(lǐng)域的分析師,可以略過場(chǎng)景,直接從業(yè)務(wù)需求描述中獲取用例。在家庭保安系統(tǒng)中,執(zhí)行者有“用戶”、“傳感器”、“警報(bào)器”、“報(bào)警電話”、“顯示器”,用例有“系統(tǒng)配置”、“命令響應(yīng)”和“傳感器監(jiān)測(cè)”。6/8/202343“傳感器監(jiān)測(cè)”用例的描述用例名稱:傳感器監(jiān)測(cè)參與執(zhí)行者:各類傳感器,警報(bào)器,報(bào)警電話,顯示器前置條件:系統(tǒng)已開機(jī)。主事件流:

(1)傳感器向目標(biāo)軟件系統(tǒng)上報(bào)其監(jiān)測(cè)數(shù)據(jù),系統(tǒng)判斷監(jiān)測(cè)數(shù)據(jù)正常。

(2)如果不正常,系統(tǒng)啟動(dòng)警報(bào)器,撥報(bào)警電話號(hào)碼。

(3)報(bào)警電話接通后,軟件系統(tǒng)播出語音,報(bào)告異常事件發(fā)生的時(shí)間、地點(diǎn)和事件的性質(zhì)。

(4)系統(tǒng)在控制面板的顯示器上顯示報(bào)警時(shí)間及當(dāng)前狀態(tài)(報(bào)警)。6/8/202344“傳感器監(jiān)測(cè)”用例的描述輔事件流:

(1)如果報(bào)警電話無人接聽,則按照重?fù)苎舆t反復(fù)撥號(hào),直至電話接通,再轉(zhuǎn)入主事件流的步驟(3)。

(2)如果重?fù)艽螖?shù)達(dá)到系統(tǒng)預(yù)設(shè)的最大次數(shù),電話仍無人接聽,則跳過主事件流的步驟(3),轉(zhuǎn)入步驟(4)。后置條件:如果已發(fā)現(xiàn)異常的監(jiān)測(cè)數(shù)據(jù),系統(tǒng)處于“報(bào)警”狀態(tài);否則系統(tǒng)處于正常的“監(jiān)測(cè)”狀態(tài)。6/8/2023456.3.3用活動(dòng)圖表示用例用例的描述既可采用自然語言,也可采用活動(dòng)圖,活動(dòng)圖表示法更為精確、直觀。下面介紹活動(dòng)圖的語法機(jī)制,然后結(jié)合實(shí)例說明如何用活動(dòng)圖表示用例。6/8/2023461UML活動(dòng)圖用例的事件流或者操作均可表示為一系列的活動(dòng),每個(gè)活動(dòng)在活動(dòng)圖中被表示為一個(gè)結(jié)點(diǎn)。結(jié)點(diǎn)之間的有向邊表示順序執(zhí)行的活動(dòng)。在結(jié)點(diǎn)間的連接邊上可以附加條件表達(dá)式,表示在有向連接邊的源結(jié)點(diǎn)執(zhí)行完成后,如果條件成立,則開始執(zhí)行有向連接邊的目標(biāo)結(jié)點(diǎn)所表示的活動(dòng);如果條件不成立,則目標(biāo)結(jié)點(diǎn)的活動(dòng)不執(zhí)行。菱形在活動(dòng)圖中表示條件判斷,條件表達(dá)式一般出現(xiàn)在以菱形為源結(jié)點(diǎn)的有向邊上?;顒?dòng)圖可以表示過程的并發(fā)?;顒?dòng)圖的同步條(水平或者垂直粗線)可以將一條有向連接邊分叉為多個(gè)并發(fā)執(zhí)行的分支進(jìn)程,或?qū)⒍鄠€(gè)有向連接邊上的進(jìn)程同步合并為一個(gè)進(jìn)程。6/8/202347UML活動(dòng)圖泳道為了描述活動(dòng)的責(zé)任對(duì)象,活動(dòng)圖引進(jìn)了“泳道”的概念。泳道是由垂直長(zhǎng)線分割出來的矩形區(qū)域,在泳道上方的對(duì)象負(fù)責(zé)該矩形區(qū)域內(nèi)的所有活動(dòng)。如,在圖6.8中,類“Customer”的對(duì)象負(fù)責(zé)“插入銀行卡”、“輸入密碼”、“選擇功能”、“輸入金額”四項(xiàng)活動(dòng),其余活動(dòng)由類“ATMsystem”的對(duì)象負(fù)責(zé)。6/8/202348典型的活動(dòng)圖6/8/2023492用例的活動(dòng)圖表示

傳感器監(jiān)測(cè)用例活動(dòng)圖6/8/2023506.3.4生成用例圖執(zhí)行者與用例之間的關(guān)系:觸發(fā)執(zhí)行和信息交換如,在“家庭保安系統(tǒng)”中,執(zhí)行者“用戶”在觸發(fā)用例“命令響應(yīng)”的同時(shí),還要向用例傳送命令信息。在UML用例圖中,從執(zhí)行者指向用例的邊表示觸發(fā)執(zhí)行和/或信息交換,從用例指向執(zhí)行者的邊則表示用例將生成的信息傳遞給執(zhí)行者。6/8/202351UML用例與用例之間的關(guān)系(1)使用(use)關(guān)系,如果多個(gè)用例都有一個(gè)公共的動(dòng)作序列,為避免重復(fù)并使模型簡(jiǎn)潔,可以將公共動(dòng)作序列抽取出來,構(gòu)成新的獨(dú)立用例。原來的多個(gè)用例與新的用例之間通過使用關(guān)系連接。如,“家庭保安系統(tǒng)”中,“系統(tǒng)配置”和“命令響應(yīng)”兩個(gè)用例都使用公共的“密碼驗(yàn)證”子用例。(2)擴(kuò)展(extend)關(guān)系。如果一個(gè)用例的動(dòng)作序列完全包含另一個(gè)用例的動(dòng)作序列,且前者含有后者所不具備的一些特殊情況下的處理動(dòng)作,則稱前者擴(kuò)展后者。例如,圖6.10中的“傳感器監(jiān)測(cè)”用例僅包含正常的處理流程,而“報(bào)警電話未接通”用例除正常流程外還增加了“重復(fù)撥號(hào)”以及“重?fù)艽螖?shù)達(dá)到最大次數(shù)仍無人接聽”這兩種異常處理動(dòng)作。6/8/202352“家庭保安系統(tǒng)”的用例圖6/8/2023536.3.5建立頂層架構(gòu)頂層架構(gòu)的主要目的是為后續(xù)的分析和設(shè)計(jì)活動(dòng)建立一種結(jié)構(gòu)和分劃,以便開發(fā)人員在不同的開發(fā)階段,以及同一開發(fā)階段的不同開發(fā)人員,能夠聚焦于系統(tǒng)的不同部分。頂層架構(gòu)是分析和設(shè)計(jì)階段的成果。隨著開發(fā)過程的推進(jìn),框架中的內(nèi)容不斷豐富、翔實(shí),最終演進(jìn)為完整的面向?qū)ο筌浖Y(jié)構(gòu)。6/8/2023541UML包圖UML包圖是表示頂層架構(gòu)的機(jī)制。下面首先介紹包圖的語法機(jī)制,然后探討建立頂層架構(gòu)的方法與原則。包是UML支持對(duì)類分組的一種機(jī)制??梢詮哪撤N視角,將某些關(guān)聯(lián)密切的類劃為一個(gè)包,而不同包的兩個(gè)類的關(guān)聯(lián)應(yīng)比較松散。對(duì)于大型軟件系統(tǒng),包的劃分是實(shí)現(xiàn)“分而治之”的重要技術(shù)手段。6/8/202355UML包圖包的依賴和構(gòu)成關(guān)系如果對(duì)類A的修改將導(dǎo)致類B的改變,則稱B依賴于A。如果兩個(gè)包中存在具有依賴關(guān)系的兩個(gè)類,則稱這兩個(gè)包之間存在依賴關(guān)系。包的構(gòu)成關(guān)系包可以嵌套,包可包含類,也可包含子包。為了表示軟件架構(gòu),還需要在包之間引進(jìn)“連接器”邊,連接器表示包之間的信息傳遞、事件發(fā)送、軟件調(diào)用等關(guān)系。連接器分為單向和雙向(即無向)。6/8/202356包圖示例“領(lǐng)域”包由“訂單”和“客戶”兩個(gè)子包構(gòu)成,“訂單”包依賴于“客戶”包。數(shù)據(jù)庫接口類僅定義抽象數(shù)據(jù)訪問,數(shù)據(jù)操作。Oracle接口包和DB2接口包基于具體的數(shù)據(jù)庫管理系統(tǒng)實(shí)現(xiàn)通用接口定義的抽象接口函數(shù)。6/8/2023572軟件頂層架構(gòu)的設(shè)計(jì)方法結(jié)合實(shí)際需求,選取架構(gòu)模式,再進(jìn)行局部調(diào)整。主要架構(gòu)模式流程處理模式客戶/服務(wù)器模式、模型—視圖—控制器模式分層模式6/8/202358軟件頂層架構(gòu)的設(shè)計(jì)(1)流程處理模式。流程處理系統(tǒng)以算法和數(shù)據(jù)結(jié)構(gòu)為中心,其系統(tǒng)功能由一系列的處理步驟構(gòu)成,相鄰處理步驟用數(shù)據(jù)流通管道連接。流程處理模式適用于批處理方式的軟件系統(tǒng),不適合交互式系統(tǒng)。6/8/202359流程處理模式流程處理模式具有三個(gè)處理步驟。步驟都使用公共的系統(tǒng)服務(wù)(例如數(shù)據(jù)庫訪問服務(wù)),命令處理和命令處理的進(jìn)度、結(jié)果都通過用戶界面。6/8/202360客戶/服務(wù)器模式(2)客戶/服務(wù)器模式。客戶端負(fù)責(zé)用戶輸入和處理結(jié)果的呈現(xiàn),服務(wù)端負(fù)責(zé)后臺(tái)業(yè)務(wù)處理。6/8/202361模型—視圖—控制器(MVC)模式(3)模型—視圖—控制器模式軟件系統(tǒng)由模型、視圖和控制器三部分組成。模型負(fù)責(zé)維護(hù)并保存具有持久性的業(yè)務(wù)數(shù)據(jù),實(shí)現(xiàn)業(yè)務(wù)處理功能,并將業(yè)務(wù)數(shù)據(jù)的變化情況及時(shí)通知視圖。視圖負(fù)責(zé)呈現(xiàn)模型中包含的業(yè)務(wù)數(shù)據(jù),響應(yīng)模型變化通知,更新呈現(xiàn)形式,向控制器傳遞用戶的界面動(dòng)作??刂破髫?fù)責(zé)將用戶的界面動(dòng)作映射為模型中的業(yè)務(wù)處理功能并實(shí)際調(diào)用之,然后根據(jù)模型返回的業(yè)務(wù)處理結(jié)果選擇新的視圖。MVC模式特別適合于分布式應(yīng)用軟件,尤其是Web應(yīng)用系統(tǒng)6/8/202362分層模式(4)分層模式將整個(gè)軟件系統(tǒng)分為若干層次,最頂層直接面向用戶提供軟件系統(tǒng)的操作界面,其余各層為緊鄰其上的層次提供服務(wù)。分層模式可以有效降低軟件系統(tǒng)的耦合度,應(yīng)用普遍。6/8/202363分層模式層次劃分的主要原則易變化的部分,如用戶界面、與業(yè)務(wù)邏輯緊密相關(guān)的部件,置于高層穩(wěn)定部分,如公共的技術(shù)服務(wù)部件,置于低層;每層都盡量訪問緊鄰的下層,避免越級(jí)訪問,尤其要避免逆向訪問即,上層模塊為下層模塊提供服務(wù);將目標(biāo)軟件系統(tǒng)的外部接口置入較低層次,系統(tǒng)其余部分對(duì)外部系統(tǒng)的訪問或操作通過這些外部接口提供的服務(wù)來完成。6/8/202364軟件架構(gòu)在全面了解軟件架構(gòu)樣式的前提下,對(duì)于具體的應(yīng)用需求而言,影響頂層架構(gòu)選取的主要因素在于分析人員的經(jīng)驗(yàn)以及他們對(duì)每種架構(gòu)樣式與當(dāng)前軟件項(xiàng)目之間匹配程度的判斷。大型軟件的頂層架構(gòu)往往需要使用多種架構(gòu)樣式。如,整個(gè)目標(biāo)軟件系統(tǒng)采用分層結(jié)構(gòu),在系統(tǒng)的不同層次內(nèi)再分別使用適宜的其他類型的架構(gòu)模式。6/8/202365確立軟件架構(gòu)考慮的因素(1)架構(gòu)中包的數(shù)量包中軟件元素過多,應(yīng)對(duì)包進(jìn)一步細(xì)分;如果過少,則說明架構(gòu)過早地陷入細(xì)節(jié)。(2)架構(gòu)中包之間的耦合度包的依賴關(guān)系、連接關(guān)系應(yīng)盡量簡(jiǎn)單、松散,如,在分層結(jié)構(gòu)中,通常要求某一層的軟件元素只與同層及下一層的元素存在依賴關(guān)系。(3)軟件元素的穩(wěn)定性抽取不穩(wěn)定的軟件元素的相對(duì)穩(wěn)定部分,將不穩(wěn)定的軟件元素分類聚集在少數(shù)幾個(gè)包中,以提高軟件系統(tǒng)的可維護(hù)性。6/8/202366確立軟件架構(gòu)(4)軟件元素的分類將軟件可選功能和必須實(shí)現(xiàn)功能的軟件元素分別置于架構(gòu)的不同包或子包中。(5)作為軟件系統(tǒng)運(yùn)行環(huán)境的物理網(wǎng)絡(luò)拓樸根據(jù)軟件元素在分布環(huán)境中的布局,劃分頂層架構(gòu)的包,使包的消息傳遞與物理節(jié)點(diǎn)的通信相協(xié)調(diào),頂層架構(gòu)定義的通信關(guān)系支持后續(xù)的分析和設(shè)計(jì)活動(dòng)。6/8/202367確立軟件架構(gòu)(6)軟件元素的安全、保密級(jí)別。根據(jù)安全訪問的權(quán)限劃分頂層架構(gòu)中的包或者子包。(7)開發(fā)團(tuán)隊(duì)的技術(shù)專長(zhǎng)。根據(jù)開發(fā)人員在問題和技術(shù)領(lǐng)域的專長(zhǎng)劃分頂層架構(gòu),使得每個(gè)包的開發(fā)都能充分發(fā)揮開發(fā)人員和團(tuán)隊(duì)的技術(shù)專長(zhǎng)(8)調(diào)整軟件架構(gòu),支持并行開發(fā)。6/8/2023686.3.6建立領(lǐng)域概念模型在用戶需求和相關(guān)的業(yè)務(wù)領(lǐng)域中,有一些全局性的概念對(duì)于理解需求至關(guān)重要。因此,有必要抽取這些概念,研究這些概念之間的關(guān)系。UML類圖是表示領(lǐng)域概念模型的機(jī)制。下面首先介紹類圖的語法機(jī)制,然后探討建立領(lǐng)域概念模型的方法。6/8/2023691UML類圖在UML中,用類表示概念,用類圖表示領(lǐng)域概念模型。在需求分析的早期,不需要一次性列舉類的所有屬性和方法。剛開始可以僅標(biāo)識(shí)類名,以后隨著分析、設(shè)計(jì)的不斷推進(jìn)而逐步完善屬性列表和方法列表。6/8/202370UML類圖UML的類包含三個(gè)部分:類的名稱屬性列表方法列表表示圖元如圖所示。UML類之間的關(guān)系主要有繼承、聚集、關(guān)聯(lián)和依賴。繼承關(guān)系表示子類重用父類的屬性和操作,子類的對(duì)象也是父類的對(duì)象,有時(shí)也稱父類是子類的泛化(generalization)。6/8/202371UML類圖在課程管理系統(tǒng)中,“教務(wù)管理人員”、“學(xué)生”和“老師”都是泛化的“用戶”類的子類,它們繼承來自“用戶”類的用戶姓名、標(biāo)識(shí)碼、密碼等屬性,以及用戶注冊(cè)、密碼驗(yàn)證、退出系統(tǒng)等操作,見圖6.2。類之間的聚集關(guān)系是現(xiàn)實(shí)世界部分—整體關(guān)系的模擬。6/8/202372聚集和構(gòu)成關(guān)系的表示圖元UML將聚集關(guān)系分為普通聚集關(guān)系:一個(gè)部件對(duì)象可同時(shí)參與多個(gè)整體對(duì)象。構(gòu)成關(guān)系:限定一個(gè)部件對(duì)象在任意時(shí)刻只能參與一個(gè)整體類的對(duì)象,部件類對(duì)象與整體類對(duì)象共存亡。6/8/202373關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系表示兩個(gè)類的對(duì)象之間存在著用于消息傳遞的穩(wěn)定通道。如,在課程注冊(cè)管理系統(tǒng)中,“學(xué)生”類、“老師”類與“課程設(shè)置”類之

溫馨提示

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