




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
樂(lè)山師范學(xué)院課程教案系(院)計(jì)算機(jī)科學(xué)學(xué)院專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)課程名稱面向?qū)ο蠹夹g(shù)與UML授課對(duì)象數(shù)信學(xué)院10級(jí)本科信計(jì)班教師項(xiàng)煒職稱講師課程學(xué)時(shí)642012~2013學(xué)年(上)期
課程名稱面向?qū)ο蠹夹g(shù)與UML課程編號(hào)授課時(shí)間2012-2013(上)專業(yè)及班級(jí)數(shù)信學(xué)院10本信計(jì)班修課人數(shù)總學(xué)時(shí)64學(xué)分4課程類型必修課公共基礎(chǔ)()專業(yè)(學(xué)科)基礎(chǔ)課(√)專業(yè)課()選修課專業(yè)限選課()專業(yè)任選課()全校任選課()授課方式理論課(√)實(shí)踐課(√)學(xué)時(shí)分配課堂講授32學(xué)時(shí);實(shí)踐環(huán)節(jié)32學(xué)時(shí)考核方式考試()考查(√)是否采用多媒體是是否采用雙語(yǔ)否使用教材:(名稱、作者、出版社及出版時(shí)間)《UML面向?qū)ο蠼;A(chǔ)》,徐鋒,中國(guó)水利水電出版社,2006教學(xué)參考書(shū):(名稱、作者、出版社及出版時(shí)間)《UML基礎(chǔ)與ROSE建模案例》,吳建,人民郵電出版社,2007《Java與UML面向?qū)ο蟪绦蛟O(shè)計(jì)教程》,劉曉冬,清華大學(xué)出版社,2008《UML與系統(tǒng)分析設(shè)計(jì)》,張龍祥,人民郵電出版社,2007《軟件工程》,錢(qián)樂(lè)秋,清華大學(xué)出版社,2007教研室審查意見(jiàn)注:表中()選項(xiàng)請(qǐng)打“√”。
第一章面向?qū)ο蟮母拍睿?學(xué)時(shí))1.1章節(jié)目標(biāo)(教學(xué)目的及要求)1、解釋面向?qū)ο蟮幕驹瓌t2、定義面向?qū)ο蟮幕靖拍詈拖嚓P(guān)的UML符號(hào)3、展示面向?qū)ο蟮耐?、列舉一些基本UML建模符號(hào)教學(xué)內(nèi)容1.1什么是UML?統(tǒng)一建模語(yǔ)言(UML)是一種通用的可視化建模語(yǔ)言,用于對(duì)軟件進(jìn)行描述、可視化處理、構(gòu)造和建立軟件系統(tǒng)工作文檔。它記錄了與被建系統(tǒng)的有關(guān)決策和理解,可用于對(duì)系統(tǒng)的理解、設(shè)計(jì)、瀏覽、配置、維護(hù)以及控制系統(tǒng)的信息。UML適用于各種軟件開(kāi)發(fā)方法、軟件生命周期的各個(gè)階段、各種應(yīng)用領(lǐng)域以及各種開(kāi)發(fā)工具,旨在統(tǒng)一以往建模技術(shù)的經(jīng)驗(yàn),吸收當(dāng)今軟件開(kāi)發(fā)的最佳實(shí)踐從而形成一種標(biāo)準(zhǔn)方法。UML包括語(yǔ)義概念、表示方法和指導(dǎo)規(guī)范,提供了靜態(tài)、動(dòng)態(tài)、系統(tǒng)環(huán)境及組織結(jié)構(gòu)的模型。它可被交互式的可視化建模工具所支持,這些工具提供代碼生成和報(bào)表生成。UML標(biāo)準(zhǔn)并沒(méi)有定義一種標(biāo)準(zhǔn)的開(kāi)發(fā)過(guò)程,但它適用于迭代的開(kāi)發(fā)過(guò)程。它是為支持現(xiàn)今大部分面向?qū)ο蟮拈_(kāi)發(fā)過(guò)程而設(shè)計(jì)的。UML是一種語(yǔ)言;是一種可視化的語(yǔ)言;是一種可用于詳細(xì)描述的語(yǔ)言;是一種構(gòu)造語(yǔ)言。是一種文檔化的語(yǔ)言;主要用于軟件密集型系統(tǒng)。1.2軟件工程最佳實(shí)踐軟件工程六個(gè)最佳實(shí)踐(即DevelopIteratively迭代開(kāi)發(fā)、ManageRequirements需求管理、UseComponentArchitectures組件架構(gòu)、ModelVisually可視化建模(UML)、ContinuouslyVerifyQuality持續(xù)質(zhì)量改進(jìn)、ManageChange變更管理)與本課程相關(guān)三個(gè)最佳實(shí)踐對(duì)象技術(shù)幫助成就了以下行為:1、迭代開(kāi)發(fā): 適應(yīng)需求的變更、逐步加入對(duì)象元素和功能的可重用性;2、使用組件為基礎(chǔ)的結(jié)構(gòu): 結(jié)構(gòu)化、組件為基礎(chǔ)的開(kāi)發(fā);3、可視化模型: 容易理解,修改簡(jiǎn)單。1.3什么是對(duì)象技術(shù)?什么是面向過(guò)程?以算法和數(shù)據(jù)結(jié)構(gòu)為核心,一段程序代碼解決一個(gè)或幾個(gè)問(wèn)題。什么是面向?qū)ο??以客觀存在的事物即對(duì)象為開(kāi)發(fā)核心,在開(kāi)發(fā)時(shí)以類作為對(duì)象的框架。一種指導(dǎo)將語(yǔ)言、數(shù)據(jù)庫(kù)和其他工具構(gòu)造在一起的原則。(注釋:面向?qū)ο笫且环N新興的程序設(shè)計(jì)方法或開(kāi)發(fā)范型paradigm,面向?qū)ο筮\(yùn)用對(duì)象、類、繼承、封裝、消息等概念來(lái)進(jìn)行程序設(shè)計(jì)。其基本思想是,從現(xiàn)實(shí)世界中客觀存在的事物及對(duì)象出發(fā)來(lái)構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造中盡可能運(yùn)用人類的自然思維方式。)1.4什么是模型?----模型是現(xiàn)實(shí)的簡(jiǎn)化。模型提供了系統(tǒng)的藍(lán)圖。1)什么是模型?為什么要建模?模型是對(duì)現(xiàn)實(shí)的簡(jiǎn)化。建模是為了更好地理解正在開(kāi)發(fā)的系統(tǒng)。因?yàn)槲覀儾荒芡暾乩斫庖粋€(gè)復(fù)雜系統(tǒng),所以我們要對(duì)它建?!,F(xiàn)實(shí)世界太復(fù)雜,我們的理解力有限。建模一定會(huì)進(jìn)行抽象和簡(jiǎn)化。2)為什么要建模?建模是為了產(chǎn)生對(duì)系統(tǒng)的理解??梢暬睦斫馐亲顬橹庇^的理解。對(duì)于復(fù)雜系統(tǒng),只用一個(gè)模型是不夠的,需要對(duì)系統(tǒng)拆分并使用多個(gè)相互關(guān)聯(lián)的模型。對(duì)于軟件密集型系統(tǒng),就需要一種語(yǔ)言,它貫穿于軟件開(kāi)發(fā)生命周期,并能表達(dá)系統(tǒng)體系結(jié)構(gòu)的各種不同視圖。建模有四個(gè)目標(biāo):----幫助我們可視化我們的系統(tǒng);----允許我們制定我們的系統(tǒng)的結(jié)構(gòu)和行為;----給我們一個(gè)構(gòu)造系統(tǒng)的模板;----記錄我們所做的決定;3)建模的原則:選擇要?jiǎng)?chuàng)建什么模型,對(duì)如何動(dòng)手解決問(wèn)題以及如何形成解決方案,有著意義深遠(yuǎn)的影響。每一種模型你可以在不同的精度級(jí)別上表示。最好的模型適于現(xiàn)實(shí)相聯(lián)系的。單個(gè)模型是不充分的。對(duì)每個(gè)重要的系統(tǒng)最好用一組幾乎獨(dú)立的模型去處理。1.5什么是對(duì)象?----通常一個(gè)對(duì)象代表一個(gè)實(shí)體,不管它是物理實(shí)體、概念實(shí)體還是軟件實(shí)體。----一個(gè)對(duì)象是具有明確界限并封裝了狀態(tài)和行為的統(tǒng)一體。----狀態(tài)主要表現(xiàn)為屬性和關(guān)聯(lián)。----行為主要表現(xiàn)為操作、方法和狀態(tài)機(jī)。1.6什么是模板類型?----根據(jù)模板類型中的其他元素定義一個(gè)新的元素。Stereotype構(gòu)造型:屬于UML擴(kuò)展機(jī)制之一,它允許用戶基于已存在的構(gòu)造塊創(chuàng)建新的適應(yīng)于用戶特定問(wèn)題的構(gòu)造塊。1.7面向?qū)ο蟮幕驹瓌t----抽象區(qū)別其他實(shí)體最本質(zhì)的特征。----封裝向調(diào)用者隱藏了內(nèi)部(封裝),調(diào)用者只能依賴接口實(shí)現(xiàn)調(diào)用。----模塊將復(fù)雜的整體分割成可以控制的小塊,以幫助人們理解復(fù)雜的系統(tǒng)。----繼承任何等級(jí)或排序都可以以樹(shù)形結(jié)構(gòu)表示。1.8什么是類?類就是一系列(某一類)對(duì)象共享相同屬性、操作、關(guān)聯(lián)和語(yǔ)義描述。對(duì)象是類的實(shí)例。1.9什么是屬性屬性是類中具有名詞特性的參數(shù),屬性描述了實(shí)例中可取值的范圍。1.10什么是操作操作能被任何類的實(shí)例調(diào)用執(zhí)行、并完成某項(xiàng)實(shí)現(xiàn)的功能。1.11什么是多態(tài)?使用同一接口隱藏了不同的實(shí)現(xiàn)。多態(tài)(Polymorphism)在希臘語(yǔ)中意味著“擁有多種形式”。如繪圖,圖形可以是矩形、圓或曲線,等等。投資,可以是股票、債券或基金,等等。一個(gè)接口可能有很多實(shí)現(xiàn),但每一種實(shí)現(xiàn)都必須滿足接口參數(shù)要求。有時(shí),一個(gè)實(shí)現(xiàn)也可以滿足多個(gè)基本需求接口。如一個(gè)控制器能夠控制任何符合這個(gè)控制其接口規(guī)范的電視機(jī)。多態(tài)意味著用同一個(gè)名字來(lái)引用不同的方法。JAVA中提供兩種形式的多態(tài):第一種可以通過(guò)子類對(duì)父類方法的覆蓋來(lái)實(shí)現(xiàn)運(yùn)行時(shí)對(duì)態(tài);第二種利用方法重載在同一個(gè)類中定義多個(gè)同名(但參數(shù)不同)的方法,實(shí)現(xiàn)編譯時(shí)多態(tài)。1.12什么是接口?1、接口的定義與作用:1)接口是用來(lái)描述類或組件提供的操作的集合。2)接口正規(guī)化了多態(tài)。接口消除了多態(tài)的神秘性。3)接口支持“即插即用”的結(jié)構(gòu)。2、接口的表示方法:1)“棒棒糖”表示法(表示接口的存在)2)“類/模板”表示法(表示接口的詳情)1.13什么是包?《UML用戶手冊(cè)》:包package是“對(duì)元素進(jìn)行分組的通用機(jī)制”。包是分組的通常手法,包可以包含其它模型元素。包可作為管理單元,使模型條理化。包是簡(jiǎn)單的分組機(jī)制,沒(méi)有語(yǔ)義上的實(shí)例。所以包就沒(méi)有必要一定要需要實(shí)現(xiàn),除非它表示一個(gè)目錄。1.14什么是子系統(tǒng)?1)子系統(tǒng)的定義和作用:子系統(tǒng)是包(包含其他模型元素)和類(擁有行為)的結(jié)合。實(shí)現(xiàn)定義在行為中的一個(gè)或多個(gè)接口?!禪ML用戶手冊(cè)》:子系統(tǒng)是“提供了一些特定行為的一組元素”。2)子系統(tǒng)組件:組件是設(shè)計(jì)的物理實(shí)現(xiàn)。子系統(tǒng)能夠表示設(shè)計(jì)中的一個(gè)組件。1.15什么是組件(構(gòu)件)?在一個(gè)定義良好的系統(tǒng)框架中,宏觀的、可以替換的、獨(dú)立的系統(tǒng)功能。組件可以是:源代碼組件、實(shí)時(shí)運(yùn)行組件、可被執(zhí)行的組件?!禪ML用戶手冊(cè)》component組件:系統(tǒng)中遵從一組接口并提供其實(shí)現(xiàn)的物理的、可替換的部分。1.16什么是關(guān)聯(lián)?《UML用戶手冊(cè)》關(guān)聯(lián)association:是一種結(jié)構(gòu)關(guān)系,它指明一個(gè)事物的對(duì)象到另一個(gè)事物的對(duì)象間的聯(lián)系。兩個(gè)或多個(gè)類的對(duì)象之間的聯(lián)系。一種結(jié)構(gòu)化的聯(lián)系,制定了一個(gè)對(duì)象到另外一個(gè)對(duì)象的連接。1.17什么是多重性?一定數(shù)量的某個(gè)類的實(shí)例對(duì)應(yīng)另外一個(gè)類的實(shí)例的數(shù)量的范圍。《UML用戶手冊(cè)》multiplicity多重性:對(duì)集合可能采用技術(shù)范圍的說(shuō)明。1.18集合是什么?《UML用戶手冊(cè)》Aggregation聚合:關(guān)聯(lián)的一種特殊形式,它表示聚集(整體)和構(gòu)件(部分)之間的“整體-部分”關(guān)系?!禪ML用戶手冊(cè)》組合compstion:聚合的一種形式,整體和部件之間具有很強(qiáng)的擁有關(guān)系和一致的生存期。1.19什么導(dǎo)航?《UML用戶手冊(cè)》Navigation導(dǎo)航:給定兩個(gè)類之間的一個(gè)簡(jiǎn)單的、未加修飾的關(guān)聯(lián),從一個(gè)類的對(duì)象能夠?qū)Ш降搅硪粋€(gè)類的對(duì)象。除非另有指定,否則關(guān)聯(lián)的導(dǎo)航是雙向的。在圖形上,把一個(gè)關(guān)聯(lián)畫(huà)成一條實(shí)線,它可能有方向,偶爾還在其上有一個(gè)標(biāo)記,而且它經(jīng)常還含有諸如多重性和角色名這樣的修飾。UML有四種關(guān)系:依賴、關(guān)聯(lián)、泛化、實(shí)現(xiàn)?!禪ML用戶手冊(cè)》Dependency依賴:兩個(gè)事物之間的語(yǔ)義關(guān)系,其中一個(gè)事物(獨(dú)立事物)的改編將影響到另一個(gè)事物(依賴事物)。在圖形上,把一個(gè)依賴畫(huà)成一條可能有方向的虛線,偶爾還在其上有一個(gè)標(biāo)記。1.20什么是一般化(泛化)?它們之間是這樣的關(guān)系:一個(gè)類(子類)共享另外一個(gè)類(父類)的結(jié)構(gòu)或者行為。一個(gè)子類能夠從一個(gè)(單繼承)或者多個(gè)(多繼承)父類繼承?!禪ML用戶手冊(cè)》generalization泛化:一般/特殊關(guān)系,其中特殊元素(子類)的對(duì)象可以替換一般元素(父類)的對(duì)象。一般化(泛化)就是從子類中提取共性而形成父類;繼承則是子類在承接父類的職責(zé)和本質(zhì)(屬于共性的關(guān)健的屬性、操作和關(guān)聯(lián))的同時(shí),將會(huì)產(chǎn)生屬于自己的、特殊的個(gè)性。1.21什么是實(shí)現(xiàn)?《UML用戶手冊(cè)》realization實(shí)現(xiàn):類元之間的一種語(yǔ)義關(guān)系,其中一個(gè)類元描述一個(gè)規(guī)格說(shuō)明,另一個(gè)類元保證實(shí)現(xiàn)這個(gè)規(guī)格說(shuō)明。在兩種地方要遇到實(shí)現(xiàn)關(guān)系:一種是在接口和實(shí)現(xiàn)它們的類或構(gòu)件之間;另一種是在用況和實(shí)現(xiàn)它們的協(xié)作之間。提示是什么?在圖像上增加一種注釋可以包含更多的信息。1.22本章小結(jié)面向?qū)ο蟮乃膫€(gè)最基本原則是什么?分別簡(jiǎn)短闡明一下。對(duì)象的概念是什么?類的概念是什么?他們的區(qū)別是什么?屬性的概念是什么?操作的概念是什么?多態(tài)的概念是什么?什么是包?什么是子系統(tǒng)?子系統(tǒng)怎么和包能夠關(guān)聯(lián)起來(lái)?又怎么和類關(guān)聯(lián)起來(lái)?UML語(yǔ)言中有那幾種類關(guān)系?他們的定義分別是什么?闡明面向?qū)ο蟮男ЧJ裁词悄0孱愋??第二章需求概述?)(4學(xué)時(shí))教授方式:講課討論2.1章節(jié)目標(biāo)(教學(xué)目的及要求)1、描述了需求中使用的基本概念以及需求對(duì)分析和設(shè)計(jì)產(chǎn)生的影響。2、展示了作為分析和設(shè)計(jì)起點(diǎn)的需求產(chǎn)出品的閱讀以及解釋方法。教學(xué)內(nèi)容2.2需求概述的內(nèi)容(1)簡(jiǎn)要介紹1、需求概述的內(nèi)容(1)簡(jiǎn)要介紹核心概念用例模型術(shù)語(yǔ)表補(bǔ)充說(shuō)明檢查點(diǎn)列舉2、需求工作的目標(biāo)包含:提供一種與客戶在系統(tǒng)功能方面進(jìn)行溝通并達(dá)成共識(shí)的方式使開(kāi)發(fā)者能夠更準(zhǔn)確的理解系統(tǒng)的需求確定系統(tǒng)的邊界提供了對(duì)迭代過(guò)程中的技術(shù)內(nèi)容進(jìn)行計(jì)劃的基礎(chǔ)。為系統(tǒng)開(kāi)發(fā)的成本估計(jì)提供一個(gè)基礎(chǔ)定義出系統(tǒng)與用戶之間的交互接口(交互界面—確定用戶的需求和目的)USDP:統(tǒng)一軟件開(kāi)發(fā)過(guò)程3、需求的產(chǎn)出:用例模型:角色;用例;用例描述。術(shù)語(yǔ)表補(bǔ)充說(shuō)明2.3需求概述的內(nèi)容(2)核心概念1、需求概述的內(nèi)容(2)簡(jiǎn)要介紹核心概念用例模型術(shù)語(yǔ)表補(bǔ)充說(shuō)明檢查點(diǎn)列舉2、系統(tǒng)行為是什么?系統(tǒng)行為是系統(tǒng)的活動(dòng)和對(duì)輸入進(jìn)行的響應(yīng)方式–外界可見(jiàn)的并且可以測(cè)試的系統(tǒng)活動(dòng)系統(tǒng)行為可以使用用例進(jìn)行描述–用例描述了系統(tǒng),環(huán)境以及系統(tǒng)和環(huán)境之間存在的關(guān)系。3、用例建模中的核心概念角色表示與系統(tǒng)交互的任何事物(可以是人—用戶、也可以是其他系統(tǒng)或設(shè)備)用例表示系統(tǒng)執(zhí)行的一系列動(dòng)作。這些動(dòng)作產(chǎn)生對(duì)某一角色可見(jiàn)的結(jié)果。需求概述的內(nèi)容(3)用例模型1、需求概述的內(nèi)容(3)簡(jiǎn)要介紹核心概念用例模型術(shù)語(yǔ)表補(bǔ)充說(shuō)明檢查點(diǎn)列舉2、用例模型是什么?用例描述了系統(tǒng)的功能需求模型化表示了系統(tǒng)的功能(用例)和系統(tǒng)的環(huán)境(角色)。3、用例模型的優(yōu)點(diǎn)是什么?交流在系統(tǒng)開(kāi)發(fā)早期就可以明確最后提交產(chǎn)品的功能;確保雙方都對(duì)需求有準(zhǔn)確的了解。標(biāo)識(shí)確定系統(tǒng)與用戶群之間的接口需求。驗(yàn)證確保開(kāi)發(fā)團(tuán)隊(duì)已完全理解了客戶需求。識(shí)別與系統(tǒng)交互的角色;界定系統(tǒng)邊界和功能;確保即將開(kāi)的發(fā)系統(tǒng)是用戶所期望。4、用例描述用例名稱概述事件流關(guān)系活動(dòng)圖用例圖特殊需求前置條件后置條件其他圖4、用例事件流一個(gè)正常的基本的路徑多個(gè)可選的路徑–正常的可選路徑–罕見(jiàn)的可選路徑–異常路徑5、場(chǎng)景是什么?場(chǎng)景是用例的一個(gè)實(shí)例。6、活動(dòng)圖是什么?用例模型中的活動(dòng)圖用來(lái)描述用例中發(fā)生的活動(dòng)?;顒?dòng)圖必須是一個(gè)流程圖,需要能夠描述清楚系統(tǒng)的活動(dòng)流程以及分支的時(shí)機(jī)。7、事件流當(dāng)注冊(cè)管理員要求關(guān)閉注冊(cè)時(shí),這個(gè)用例開(kāi)始執(zhí)行。1)首先系統(tǒng)檢查注冊(cè)用例是否在執(zhí)行。如果正在執(zhí)行,一條消息應(yīng)該顯示給用戶,并且用例結(jié)束。如果注冊(cè)活動(dòng)在執(zhí)行,“關(guān)閉注冊(cè)”的活動(dòng)是無(wú)法進(jìn)行的。2)對(duì)于每個(gè)課程,系統(tǒng)需要檢查是否有一位教授已經(jīng)申請(qǐng)教授,并且至少有三個(gè)學(xué)生選該門(mén)課。只有這兩個(gè)條件都滿足的話,系統(tǒng)才能夠提交這門(mén)課以安排課程表。2.5需求概述的內(nèi)容(4)術(shù)語(yǔ)表1、需求概述的內(nèi)容(4)簡(jiǎn)要介紹核心概念用例模型詞匯表補(bǔ)充說(shuō)明檢查點(diǎn)列舉1、詞匯表實(shí)例:1)選課系統(tǒng)詞匯表介紹這個(gè)文檔定義并解釋了問(wèn)題域中專有的名詞,這些解釋可以幫助那些對(duì)問(wèn)題領(lǐng)域不太熟悉的用例描述和其他項(xiàng)目文檔的閱讀者。通常情況下,這個(gè)文檔可以作為一個(gè)非正式的數(shù)據(jù)字典,用來(lái)記錄數(shù)據(jù)的定義。這樣可以讓用例的描述文檔和項(xiàng)目的其他文檔能夠?qū)⒆⒁饬Ω蛹械较到y(tǒng)的功能上。2)詞匯定義詞匯表定義了選課系統(tǒng)中的核心概念。2-1)課程:學(xué)校提供的課程。2-2)開(kāi)設(shè)課程:一個(gè)學(xué)期中學(xué)校開(kāi)設(shè)的課程--在一個(gè)學(xué)期中這將會(huì)有若干相同的課程并行開(kāi)授,你可以在其中選擇一個(gè)學(xué)習(xí)。時(shí)間的選擇需要視課程提供的時(shí)間而定。2-3)課程總表:大學(xué)所教授的所有課程的列表2.6需求概述的內(nèi)容(5)補(bǔ)充說(shuō)明功能可用性穩(wěn)定性性能可維護(hù)性設(shè)計(jì)約束2.7需求概述的內(nèi)容(6)檢查點(diǎn)列舉1、檢查點(diǎn)列舉:需求:用例模型用例模型描述的容易理解嗎?通過(guò)研究用例模型,一位客戶或開(kāi)發(fā)者可以清楚的了解系統(tǒng)的功能和這些功能之間的聯(lián)系嗎?客戶所有的需要都被滿足了嗎?用例模型包含有一些多余的行為嗎?每個(gè)用例模型是否都分配到合適的包集合中了?2、檢查點(diǎn)列舉:需求:角色所有的角色都被識(shí)別出了嗎?每個(gè)角色是否均發(fā)生了至少一個(gè)用例?每個(gè)角色的職能是否單一?角色之間是否需要進(jìn)一步的拆分和合并?是否存在兩個(gè)角色,在與同一用例交互時(shí)行使著相同的職能?角色的名稱是否直觀且含義清晰?用戶和客戶對(duì)名稱的含義的理解是否一致?3、檢查點(diǎn)列舉:需求:用例是否每個(gè)用例都至少涉及到了一個(gè)角色?是否每個(gè)用例都和其他用例是獨(dú)立的?是否有些用例中存在著類似的行為或事件流?每個(gè)用例的名字都是唯一,直觀并且意義足夠明確以免在以后階段發(fā)生混淆嗎?是否客戶和系統(tǒng)的用戶對(duì)用例的名稱和描述理解相同?4、檢查點(diǎn)列表:需求:用例描述用例的執(zhí)行者是否明確?用例執(zhí)行的目的是否明確?用例簡(jiǎn)述是否正確描述了用例的功能用例事件流開(kāi)始和結(jié)束的時(shí)機(jī)和方式是否明確角色和用例之間的交互序列是否滿足了用戶的期望?角色交互和信息交換是否明確?是否有用例過(guò)于復(fù)雜?5、檢查點(diǎn)列表:需求:詞匯表每一個(gè)詞匯的定義是否全是清晰和精確的?每一個(gè)詞匯是否都被使用在了某個(gè)用例的描述中?在角色和用例的描述中,每個(gè)詞匯的含義是否一致?2.8本章小結(jié)本章小結(jié):需求總結(jié)需求的主要產(chǎn)出是什么?需求的產(chǎn)出有什么用途?用例模型是什么?角色是什么?用例是什么?列舉出用例屬性的一些例子用例和場(chǎng)景有何不同?附加說(shuō)明是什么?包含什么內(nèi)容?詞匯表是什么?包含什么內(nèi)容?第三章分析和設(shè)計(jì)概述3.1章節(jié)目標(biāo)1、理解分析和設(shè)計(jì)的核心術(shù)語(yǔ)、概念;2、了解分析和設(shè)計(jì)的實(shí)際過(guò)程,包括角色、工件和工作流程;3、解釋分析和設(shè)計(jì)的差異。3.2特定情景下的分析和設(shè)計(jì)分析和設(shè)計(jì)的目的是:將需求轉(zhuǎn)化為系統(tǒng)設(shè)計(jì)使系統(tǒng)具有更加健壯的架構(gòu)是設(shè)計(jì)和實(shí)現(xiàn)環(huán)境相匹配,做性能設(shè)計(jì)商務(wù)規(guī)則為系統(tǒng)結(jié)構(gòu)提供場(chǎng)景需求規(guī)則為分析和設(shè)計(jì)提供了基本輸入測(cè)試規(guī)則測(cè)試了在分析和設(shè)計(jì)階段的系統(tǒng)環(huán)境規(guī)則發(fā)展和維護(hù)了在分析階段使用的工件管理原則規(guī)劃整個(gè)項(xiàng)目和每一次迭代(迭代項(xiàng)目中)。3.3分析和設(shè)計(jì)概述輸入:USE-CASE模型(角色、用例、用例描述)、術(shù)語(yǔ)表和附加規(guī)范(補(bǔ)充說(shuō)明)。產(chǎn)出:設(shè)計(jì)模型(作為源代碼抽象的模型)展開(kāi):設(shè)計(jì)活動(dòng)圍繞架構(gòu)的概念展開(kāi)。架構(gòu)優(yōu)先:其可行性和正確性是早期設(shè)計(jì)迭代周期的主要關(guān)注點(diǎn)。通過(guò)抽象忽略其細(xì)節(jié),展現(xiàn)其主要特征使之具體化。架構(gòu)不僅為了開(kāi)發(fā)好的設(shè)計(jì)模型,還將提高實(shí)現(xiàn)過(guò)程的質(zhì)量。架構(gòu)由架構(gòu)文檔記錄。架構(gòu)文檔不在這次課程范圍,但我們會(huì)討論其內(nèi)容及如何解釋。3.4分析和設(shè)計(jì)綜述(1)核心概念從定義分析和設(shè)計(jì)工作流程的核心術(shù)語(yǔ)及概念開(kāi)始。1、分析和設(shè)計(jì)對(duì)比(參看幻燈片)關(guān)注點(diǎn)不同:分析和設(shè)計(jì)的差別在于關(guān)注點(diǎn)和側(cè)重點(diǎn)。分析的目標(biāo):理解問(wèn)題并建立一個(gè)可視化的分析模型,而不去考慮實(shí)現(xiàn)的技術(shù)細(xì)節(jié)。分析關(guān)注于把功能需求轉(zhuǎn)化為軟件中的概念,目的是得到系統(tǒng)中的對(duì)象,側(cè)重于行為的封裝。以便盡快轉(zhuǎn)入設(shè)計(jì)及其他階段。設(shè)計(jì)的目標(biāo):細(xì)化分析模型,開(kāi)發(fā)一個(gè)設(shè)計(jì)模型,以便迅速過(guò)渡到編碼階段。在設(shè)計(jì)中,我們必須適應(yīng)實(shí)現(xiàn)環(huán)境和分布環(huán)境。實(shí)現(xiàn)環(huán)境是開(kāi)發(fā)者必須滿足的環(huán)境,它是分布環(huán)境中軟件的超集和硬件的子集。建模的目標(biāo):從一個(gè)和現(xiàn)實(shí)世界緊密類似的對(duì)象模型出發(fā),找出更為普遍的解決方法。由此而創(chuàng)建模擬現(xiàn)實(shí)世界的模型,更為強(qiáng)大、能更簡(jiǎn)單地解決問(wèn)題。2、分析和設(shè)計(jì)并不是由下而上或由上而下的分析和設(shè)計(jì)并不是由下而上或由上而下的。用例從左側(cè)進(jìn)入并定義一個(gè)中間層:分析類。定義的子系統(tǒng)移動(dòng)到上部,定義的設(shè)計(jì)類移動(dòng)到下部。分析可以是上到中、中到上、下到上地移動(dòng)。不能說(shuō)哪一個(gè)路徑更重要,而是必須覆蓋所有的路徑以保證系統(tǒng)的正確性。所有四種路徑同等重要,這就是由上到下或由下到上無(wú)法解決問(wèn)題的原因。3、什么是架構(gòu)?架構(gòu)Architecture(體系結(jié)構(gòu)):一組關(guān)于下述問(wèn)題的重要決定:軟件系統(tǒng)的組織方式,構(gòu)成系統(tǒng)的模型元素和它們接口的選擇,以及由這些模型元素之間的協(xié)作所描述的行為;這些結(jié)構(gòu)元素和行為元素如何進(jìn)一步組成較大的系統(tǒng),以及指導(dǎo)這種組織(這些元素和它們的接口、協(xié)作和組合)的結(jié)構(gòu)風(fēng)格。軟件體系結(jié)構(gòu)不僅關(guān)注結(jié)構(gòu)和行為,也關(guān)注使用關(guān)系、功能性、性能、彈性、復(fù)用、可理解性、經(jīng)濟(jì)和技術(shù)約束與折中以及審美考慮。軟件架構(gòu)包含:組成系統(tǒng)的結(jié)構(gòu)元素和它們的接口;元素協(xié)作的特定行為;將結(jié)構(gòu)元素和行為元素結(jié)合成一個(gè)大的子系統(tǒng);體系結(jié)構(gòu)風(fēng)格支配了組織結(jié)構(gòu)。架構(gòu)可以是靜態(tài)的也可以是動(dòng)態(tài)的。相同系統(tǒng)的架構(gòu)應(yīng)該是類似的(已用過(guò)的特殊類型):體系結(jié)構(gòu)=元素+形式+基本原理。基本原理決定一個(gè)好架構(gòu)的核心部分。模式是將元素聚合為某種形式的指導(dǎo)方針。4、架構(gòu)約束設(shè)計(jì)和實(shí)現(xiàn)架構(gòu)包括一套整體設(shè)計(jì)的結(jié)論、規(guī)則或者設(shè)計(jì)約束和結(jié)構(gòu)的模式。架構(gòu)結(jié)論是最底層的結(jié)論,改變它將帶來(lái)巨大的影響。架構(gòu)可以被看作一套核心設(shè)計(jì)結(jié)論的集合。架構(gòu)是對(duì)系統(tǒng)的最初限制,這些限制往往也是最重要的。他們組成了軟件設(shè)計(jì)的最基礎(chǔ)的結(jié)論。架構(gòu)為設(shè)計(jì)提供了一個(gè)框架,因此架構(gòu)也被稱作戰(zhàn)略式的設(shè)計(jì)。一個(gè)系統(tǒng)架構(gòu)師的工作就是消除非必須的工作。隨著對(duì)代碼的越發(fā)接近,這些工作就會(huì)被除去(架構(gòu)限制著設(shè)計(jì)、設(shè)計(jì)限制著實(shí)現(xiàn))。這樣做是非常有用的,因?yàn)樵趯?shí)現(xiàn)過(guò)程中,我們可以增加其他方面(例如,提高質(zhì)量和性能)的工作。5、軟件架構(gòu):“4+1視圖”模型上面的圖表說(shuō)明了Rational公司用來(lái)描述軟件架構(gòu)的模型。不同的組織對(duì)架構(gòu)有不同的看法。在一個(gè)指定的項(xiàng)目中,通常有許多投資人,他們對(duì)姚開(kāi)發(fā)的系統(tǒng)都有它們自己的看法。我們的目標(biāo)是為這些不同的投資人提供一個(gè)系統(tǒng)來(lái)滿足他們所關(guān)心的,而忽略一些其他的細(xì)節(jié)。為了滿足這些不同的需求,Rational公司定義了“4+1視圖”模型。一個(gè)架構(gòu)視圖是對(duì)系統(tǒng)從特殊觀點(diǎn)或者優(yōu)勢(shì)來(lái)進(jìn)行簡(jiǎn)單描述(或抽象),覆蓋特定的關(guān)注點(diǎn),并忽略與這個(gè)關(guān)聯(lián)聯(lián)系不緊密的實(shí)體。視圖是模型的“片段”,而不是所有的系統(tǒng)都需要所有的視圖(例如,單一處理器:舍棄分布視圖;單一進(jìn)程:舍棄過(guò)程視圖;小程序:舍棄實(shí)現(xiàn)視圖等)。一些項(xiàng)目可以記錄所有這些視圖,或者附加一些視圖。具體視圖的數(shù)量依賴所開(kāi)發(fā)的系統(tǒng)。這些視圖中的每一個(gè),以及用來(lái)代表他們的UML符號(hào),將在以后的章節(jié)討論。3.5分析和設(shè)計(jì)綜述(2)分析和設(shè)計(jì)工作流程僅僅由開(kāi)發(fā)者、活動(dòng)和工件并不能組成一個(gè)進(jìn)程。我們需要一種描述活動(dòng)的方法,一些有價(jià)值的結(jié)果,以及開(kāi)發(fā)者之間的交互結(jié)果。工作流程是一個(gè)活動(dòng)序列,而且可以產(chǎn)生能夠看得見(jiàn)的價(jià)值。在UML術(shù)語(yǔ)中,工作流程可以用順序圖、交互圖或者活動(dòng)圖來(lái)表示。我們使用RUP中的一些活動(dòng)圖。對(duì)每一個(gè)核心工作流程,都有一個(gè)活動(dòng)圖與之對(duì)應(yīng)。這個(gè)圖說(shuō)明了工作流程,根據(jù)工作流程的細(xì)節(jié)來(lái)描述的。這張幻燈片說(shuō)明了分析和設(shè)計(jì)的工作流程。早期的“ElaborationPhase”階段關(guān)注為系統(tǒng)創(chuàng)建一個(gè)初始的架構(gòu)(定義一個(gè)備選架構(gòu)),來(lái)為主要的分析階段提供一個(gè)起始點(diǎn)。如果架構(gòu)已經(jīng)存在(可以從前期的迭代、項(xiàng)目、或者一個(gè)用程序的框架得來(lái)),工作的重點(diǎn)就變?yōu)榧?xì)化架構(gòu),分析行為和創(chuàng)建一套初始化的元素來(lái)提供適當(dāng)?shù)男袨椋ǚ治鲂袨椋.?dāng)初始化的元素定義完之后,它們就要被進(jìn)一步細(xì)化。設(shè)計(jì)組件和設(shè)計(jì)實(shí)施組件將會(huì)產(chǎn)生一套組件,這套組件為了滿足系統(tǒng)需要提供了適當(dāng)?shù)男袨?。與此并列的是數(shù)據(jù)庫(kù)設(shè)計(jì)。結(jié)果是產(chǎn)出在實(shí)現(xiàn)階段進(jìn)一步細(xì)化的一套初始化組件。1、分析和設(shè)計(jì)活動(dòng)綜述在分析和設(shè)計(jì)中,我們從USE-CASE模型和設(shè)計(jì)階段的輔助規(guī)范著手,以作為源代碼抽象的設(shè)計(jì)模型的產(chǎn)出而結(jié)束。設(shè)計(jì)活動(dòng)以架構(gòu)概念為中心。在早期迭代設(shè)計(jì)中,這種架構(gòu)的產(chǎn)出以及正確性是我們主要的關(guān)注點(diǎn)。架構(gòu)是一個(gè)重要工具,使用它不但可以開(kāi)發(fā)一個(gè)好的設(shè)計(jì)模型,而且可以提高系統(tǒng)開(kāi)發(fā)過(guò)程中模塊的質(zhì)量。本課程的關(guān)注點(diǎn)在設(shè)計(jì)行為。系統(tǒng)架構(gòu)是的行為要討論,但是我們將更多地給出一些架構(gòu)的結(jié)論。架構(gòu)和設(shè)計(jì)都將在單獨(dú)的章節(jié)中展開(kāi)。2、軟件架構(gòu)師的責(zé)任軟件系統(tǒng)架構(gòu)師的任務(wù)是在整個(gè)項(xiàng)目過(guò)程中領(lǐng)導(dǎo)和協(xié)調(diào)技術(shù)以及工件。軟件系統(tǒng)架構(gòu)師為每一個(gè)架構(gòu)視圖建立全面的結(jié)構(gòu):分解視圖、元素分組、以及這些主要分組間的接口。因此,與其他角色相比,軟件系統(tǒng)架構(gòu)師的觀點(diǎn)決定著系統(tǒng)的廣度和深度。總的來(lái)說(shuō),軟件系統(tǒng)架構(gòu)師必須是全面的、成熟的、具有快速掌握問(wèn)題的豐富經(jīng)驗(yàn)、良好素質(zhì),缺少全部信息時(shí)的關(guān)鍵判斷。更專業(yè)地說(shuō),系統(tǒng)架構(gòu)師或架構(gòu)師團(tuán)隊(duì)中的一員,必須具有以下技能:同時(shí)具有解決問(wèn)題領(lǐng)域和軟件工程領(lǐng)域中對(duì)需求的徹底理解。如果一個(gè)團(tuán)隊(duì)具有這些品質(zhì)就可以在團(tuán)隊(duì)中擴(kuò)散,但至少得有一個(gè)軟件架構(gòu)師可以提供一個(gè)項(xiàng)目全局性的看法。具有領(lǐng)導(dǎo)才能,以此在技術(shù)方面驅(qū)動(dòng)不同的團(tuán)隊(duì),在壓力下做出關(guān)鍵的結(jié)論,并堅(jiān)持這些結(jié)論。為了更有效,軟件系統(tǒng)架構(gòu)師和項(xiàng)目經(jīng)理必須緊密合作。軟件系統(tǒng)架構(gòu)師領(lǐng)導(dǎo)技術(shù)問(wèn)題,項(xiàng)目經(jīng)理領(lǐng)導(dǎo)行政性問(wèn)題。軟件系統(tǒng)架構(gòu)師必須有權(quán)利在技術(shù)方面做出決定。具有交流能力,以此獲得信任,說(shuō)服別人,激發(fā)別人以及指導(dǎo)別人。軟件系統(tǒng)架構(gòu)師不能被規(guī)則所領(lǐng)導(dǎo),而只需得到項(xiàng)目其他成員的同意。為了更加有效,軟件系統(tǒng)架構(gòu)師必須在項(xiàng)目組中贏得其他人的尊重,包括項(xiàng)目經(jīng)理、客戶、用戶團(tuán)體及管理團(tuán)隊(duì)。針對(duì)目標(biāo)并且嚴(yán)格地以結(jié)果為前提。軟件系統(tǒng)架構(gòu)師是項(xiàng)目中的技術(shù)驅(qū)動(dòng)力量,而不是空想家或夢(mèng)想家。一個(gè)成功的軟件系統(tǒng)架構(gòu)師的職業(yè)生涯是在一系列不確定性和壓力下的并非最理想的決定。只有那些關(guān)注于必須做的事情的人才是項(xiàng)目中這種角色的成功者。3、設(shè)計(jì)師的責(zé)任設(shè)計(jì)師的任務(wù)是定義一個(gè)或幾個(gè)類的職責(zé)、操作、屬性、關(guān)聯(lián),決定如何修改它們來(lái)滿足實(shí)現(xiàn)環(huán)境。而且設(shè)計(jì)是的任務(wù)可以為一個(gè)或更多的包指定職責(zé),或者設(shè)計(jì)子系統(tǒng),包含包或子系統(tǒng)中包括的所有的類。設(shè)計(jì)師必須具有扎實(shí)的應(yīng)用知識(shí),包括:Use-case建模技術(shù);系統(tǒng)需求(Systemrequirements);軟件設(shè)計(jì)技術(shù),包括面向?qū)ο蟮姆治龊驮O(shè)計(jì)技術(shù),統(tǒng)一建模語(yǔ)言;系統(tǒng)實(shí)現(xiàn)時(shí)所涉及的技術(shù)。附加的,設(shè)計(jì)師必須:理解軟件架構(gòu)文檔中描述的系統(tǒng)架構(gòu)4、分析和設(shè)計(jì)是Use-Case驅(qū)動(dòng)的使用案例是一個(gè)系統(tǒng)的整個(gè)開(kāi)發(fā)過(guò)程的基礎(chǔ)。優(yōu)點(diǎn):簡(jiǎn)明、簡(jiǎn)單,能為多數(shù)客戶理解;幫助實(shí)現(xiàn)不同模型的同步。使用案例是推薦用來(lái)組織需求的方法。取代將需求列出,用一種講述某人如何使用系統(tǒng)來(lái)組織它們。這樣做,你得到了一個(gè)更為全面和一致的需求。你可以更好地理解從用戶的觀點(diǎn)來(lái)討論需求的重要性。通常很難從一個(gè)傳統(tǒng)的對(duì)象系統(tǒng)的模型,說(shuō)明一個(gè)系統(tǒng)是否按照預(yù)期的設(shè)想工作。這種情況的出現(xiàn)是由于在系統(tǒng)執(zhí)行特定任務(wù)的時(shí)候缺少一個(gè)通用的線索。使用案例正是這種線索,因?yàn)樗鼈兌x了一個(gè)系統(tǒng)執(zhí)行時(shí)的行為。使用案例不是“傳統(tǒng)”的面向?qū)ο蟮囊徊糠?,但它們的作用已?jīng)變得越來(lái)越重要,進(jìn)一步強(qiáng)調(diào)的事實(shí)是使用案例是UML的一部分。5、什么是Use-Case實(shí)現(xiàn)根據(jù)對(duì)象的相互交互,一個(gè)Use-Case實(shí)現(xiàn)描述的是設(shè)計(jì)模型中一個(gè)指定的用例是如何實(shí)現(xiàn)的。一個(gè)Use-Case實(shí)現(xiàn)將Use-Case模型中的用例和設(shè)計(jì)模型中的類及關(guān)聯(lián)緊密聯(lián)系起來(lái)。一個(gè)Use-Case實(shí)現(xiàn)指出了那些類必須來(lái)實(shí)現(xiàn)一個(gè)Use-Case。在UML中,Use-Case實(shí)現(xiàn)是傳統(tǒng)的交互。一個(gè)交互的符號(hào)是包含一個(gè)交互的名字的省略符號(hào)。一個(gè)Use-Case實(shí)現(xiàn)的符號(hào)是交互符號(hào)的點(diǎn)線。在設(shè)計(jì)模型中的一個(gè)Use-Case實(shí)現(xiàn)可以追溯到Use-Case模型中的用例。關(guān)聯(lián)關(guān)系是從Use-Case的相互關(guān)聯(lián)中而來(lái)。通過(guò)UML工具,Use-Case的實(shí)現(xiàn)可以用很多表達(dá)交互關(guān)系環(huán)境的圖形來(lái)描述(實(shí)現(xiàn)Use-Case及其關(guān)系的類/對(duì)象-類圖),還有交互圖(這些類/對(duì)象是怎么完成用例的——協(xié)作圖和序列圖)。使用多少種類和多少數(shù)量的圖形是由項(xiàng)目究竟需要多少交互圖才能夠完整描述,和開(kāi)發(fā)需要多少指導(dǎo)來(lái)決定的。6、迭代過(guò)程中的分析和設(shè)計(jì)本課程假定開(kāi)發(fā)者使用迭代過(guò)程。記住每一次完成過(guò)程工作流程序列就叫做一次迭代。因此,從一個(gè)開(kāi)發(fā)者的觀點(diǎn)看,軟件生命周期是連續(xù)迭代過(guò)程,一次迭代就是軟件開(kāi)發(fā)的一個(gè)增量。在一個(gè)迭代分析和設(shè)計(jì)工作流程時(shí),一個(gè)使用案例將是最基本的輸入工件。經(jīng)過(guò)分析和設(shè)計(jì)工作流程中一連串的活動(dòng),開(kāi)發(fā)團(tuán)隊(duì)將創(chuàng)建一個(gè)聯(lián)合的Use-Case實(shí)現(xiàn)來(lái)描述一個(gè)特定的使用案例是如何實(shí)現(xiàn)的。3.6本章小結(jié)分析和設(shè)計(jì)階段的主要目的是什么?輸入和產(chǎn)出是什么?列舉并簡(jiǎn)要描述一下架構(gòu)的“4+1”視圖。分析和設(shè)計(jì)的區(qū)別是什么?什么是系統(tǒng)架構(gòu)?第四章架構(gòu)分析4.1章節(jié)目標(biāo)解釋架構(gòu)設(shè)計(jì)的目的,及其在生命周期的什么時(shí)期執(zhí)行。說(shuō)明一個(gè)典型的架構(gòu)模式和一套分析機(jī)制,以及他們?nèi)绾斡绊懠軜?gòu)。說(shuō)明用以支持架構(gòu)決策的基本原理和需要考慮的事項(xiàng)。說(shuō)明如何閱讀和理解架構(gòu)設(shè)計(jì)的結(jié)果:架構(gòu)層及其關(guān)系關(guān)鍵抽象概念分析機(jī)制章節(jié)目標(biāo)在軟件架構(gòu)上,清晰說(shuō)明系統(tǒng)結(jié)構(gòu)(包/構(gòu)件),以及他們集成(相互作用的基本機(jī)制和模式)的方式。在架構(gòu)分析中,進(jìn)行了初步的工作,包括定義片/塊及其關(guān)系,并用依賴關(guān)系將這些片/塊組織成有明確界限的層。4.2工作環(huán)境中的架構(gòu)分析架構(gòu)分析是定義備選架構(gòu)中的一個(gè)活動(dòng)。架構(gòu)模式和習(xí)慣用語(yǔ)取得一致。將片/塊組織成有明確界限的層。從需求中識(shí)別出分析類,以詳細(xì)描述架構(gòu)。架構(gòu)分析在精化階段早期進(jìn)行,這項(xiàng)活動(dòng)由架構(gòu)設(shè)計(jì)師或架構(gòu)租來(lái)進(jìn)行。如果架構(gòu)風(fēng)險(xiǎn)較低,架構(gòu)分析可以跳過(guò)。4.3架構(gòu)分析概述目的:定義一個(gè)備選架構(gòu)定義系統(tǒng)的架構(gòu)模式、關(guān)鍵機(jī)制和建模約定。定義重用策略。為策劃過(guò)程提供輸入。輸入工件:用例模型補(bǔ)充約規(guī)詞匯表設(shè)計(jì)模型參考架構(gòu)前景文檔項(xiàng)目詳細(xì)指南軟件架構(gòu)文檔生成工件:軟件架構(gòu)文檔設(shè)計(jì)模型部署模型4.4架構(gòu)分析步驟(1)核心概念1、核心概念定義子系統(tǒng)的高級(jí)結(jié)構(gòu)確定分析機(jī)制確定關(guān)鍵抽象創(chuàng)建用例實(shí)現(xiàn)檢查點(diǎn)2、什么是架構(gòu):“4+1視圖”模式。邏輯視圖將在確定設(shè)計(jì)機(jī)制中詳細(xì)介紹。進(jìn)程視圖將在運(yùn)行時(shí)架構(gòu)中討論。實(shí)施視圖不在分析與設(shè)計(jì)課程中討論3、什么是包?包是一種通用分組機(jī)制,用于將元素組成組。包是一種模型元素,它包含其它模型元素。包能被用于--組織并開(kāi)發(fā)模型--作為一個(gè)配置管理的單元3、包關(guān)系:依賴包可以使用依賴關(guān)系來(lái)關(guān)聯(lián)另一個(gè)包。依賴的含義:--Supplier包的變化可能影響Client包,Client包必須重新編譯和測(cè)試。--Client包不能被獨(dú)立使用,因?yàn)樗蕾嘢upplier包。4、避免循環(huán)依賴包的分層結(jié)構(gòu)需要非循環(huán)的。如果出現(xiàn)循環(huán)依賴,可將循環(huán)依賴中的一個(gè)包,分解成兩個(gè)較小的包,來(lái)避免循環(huán)依賴。4.5架構(gòu)分析步驟(2)定義子系統(tǒng)的高級(jí)結(jié)構(gòu)在軟件開(kāi)發(fā)生命周期的早期,確定建模約定很重要,項(xiàng)目中每個(gè)人都應(yīng)當(dāng)使用。建模約定確保了構(gòu)架和設(shè)計(jì)的表現(xiàn)形式在跨團(tuán)隊(duì)和迭代時(shí)是一致的。1、模式和框架模式:--提供在一個(gè)環(huán)境下共同問(wèn)題的一個(gè)共同解決方案。分析/設(shè)計(jì)模式--提供一個(gè)狹窄范圍技術(shù)問(wèn)題的一個(gè)解決方案。--提供一個(gè)解決方案的一部分,或難題的一部分。框架--確定解決問(wèn)題的通用方法。--提供一個(gè)概要解決方案,其詳細(xì)內(nèi)容可能是分析/設(shè)計(jì)模式。2、模式和框架的進(jìn)一步說(shuō)明模式是把來(lái)自經(jīng)驗(yàn)的知識(shí)系統(tǒng)化。模式提供了使用模型解決實(shí)際問(wèn)題的優(yōu)秀樣例,不論是你自己提出的模式還是使用他人的模式??蚣苁且粋€(gè)宏觀架構(gòu)。框架提供了構(gòu)件運(yùn)行的環(huán)境??蚣芴峁┝嘶A(chǔ)結(jié)構(gòu),如通信機(jī)制、分布機(jī)制、錯(cuò)誤處理、事務(wù)支持,等等。允許構(gòu)件以可預(yù)見(jiàn)的方式執(zhí)行和共存。(見(jiàn)下頁(yè)J2EE架構(gòu)示意圖)框架可以是持久性的,可以針對(duì)特定領(lǐng)域。比如SAP公司就有專門(mén)針對(duì)制造業(yè)和金融業(yè)的框架??蚣茉诜秶鸵?guī)模上與分析/設(shè)計(jì)模式不同,它允許在問(wèn)題域缺少很多細(xì)節(jié)時(shí)給出的一個(gè)通用的、宏觀的解決方案或架構(gòu)。在此基礎(chǔ)上的進(jìn)一步工作,則需要應(yīng)用不同的分析/設(shè)計(jì)模式使之進(jìn)一步豐富和細(xì)化。3、什么是設(shè)計(jì)模式?設(shè)計(jì)模式是對(duì)一個(gè)共同設(shè)計(jì)問(wèn)題的解決方案。--說(shuō)明一個(gè)共同的設(shè)計(jì)問(wèn)題。--說(shuō)明對(duì)此問(wèn)題的解決方案。--討論應(yīng)用此模式的結(jié)果和評(píng)定比較。設(shè)計(jì)模式提供了重要成功設(shè)計(jì)的能力。設(shè)計(jì)模式被收集和編錄在許多出版物和媒介上。使用設(shè)計(jì)模式提高開(kāi)發(fā)效率和可維護(hù)性,提供了好的設(shè)計(jì)方法、設(shè)計(jì)用語(yǔ)和設(shè)計(jì)樣例。應(yīng)當(dāng)熟悉一些通用的設(shè)計(jì)模式及其處理的問(wèn)題和處理方法。設(shè)計(jì)模式在UML中作為參數(shù)化協(xié)作杯模型化,它包括結(jié)構(gòu)側(cè)重面和行為側(cè)重面。結(jié)構(gòu)側(cè)重面是類,其實(shí)例實(shí)現(xiàn)模式及其關(guān)系(靜態(tài)視圖)。行為側(cè)重面說(shuō)明實(shí)例如何協(xié)作(通常是發(fā)送消息)以實(shí)現(xiàn)模式(動(dòng)態(tài)視圖)。參數(shù)化寫(xiě)作時(shí)協(xié)作的一個(gè)模版。模版參數(shù)通常被用于為一個(gè)特定用途而調(diào)整協(xié)作。這些參數(shù)不一定是抽象集,這取決于它們是如何在設(shè)計(jì)中應(yīng)用的。4、什么是架構(gòu)模式架構(gòu)模式表達(dá)了對(duì)軟件系統(tǒng)基礎(chǔ)結(jié)構(gòu)的一個(gè)組織大綱。它提供了一套預(yù)定義的框架模式,詳細(xì)說(shuō)明了他們的職責(zé),并包括組織他們之間關(guān)系的規(guī)則和指南等。層:在層模式中應(yīng)用被分為不同的抽象層次。層的范圍從高端的特定應(yīng)用層到低端的實(shí)施/特定技術(shù)層。模型-視圖-控制器:在MVC模式中,應(yīng)用被分為三個(gè)部分:模型、視圖和控制器。管道和過(guò)濾器:在管道和過(guò)濾器模式中,數(shù)據(jù)在流動(dòng)中進(jìn)行處理,通過(guò)管道從一個(gè)過(guò)濾器到另一個(gè)過(guò)濾器。每個(gè)過(guò)濾器是一個(gè)處理步驟。黑板:在黑板模式中獨(dú)立的專業(yè)應(yīng)用協(xié)作產(chǎn)生一個(gè)解決方案,工作在一個(gè)共同數(shù)據(jù)結(jié)構(gòu)上。架構(gòu)模式可以在一起工作,即一個(gè)實(shí)際的軟件架構(gòu)可以同時(shí)應(yīng)用多個(gè)架構(gòu)模式。上面列出的架構(gòu)模式包含了系統(tǒng)特征、性能特征以及進(jìn)程和分布架構(gòu)。5、典型分層方法應(yīng)用程序?qū)?;特定業(yè)務(wù)層;中間件層;系統(tǒng)軟件層。6、架構(gòu)模式:層環(huán)境:需要分解的大系統(tǒng)。問(wèn)題:必須在不同抽象層處理問(wèn)題的系統(tǒng),如硬件控制問(wèn)題;常見(jiàn)服務(wù)問(wèn)題。編寫(xiě)能處理所有層次上問(wèn)題的垂直構(gòu)件完全沒(méi)有必要,甚至不得不在不同構(gòu)件中處理。影響:構(gòu)件的某些部分是可以替換的。構(gòu)件中的變化不會(huì)傳遞(波動(dòng))。相似的職責(zé)應(yīng)歸為一組。構(gòu)件大小----復(fù)雜構(gòu)件應(yīng)進(jìn)行必要的分解。解決方案:將系統(tǒng)分為構(gòu)件組,并使構(gòu)件組形成層疊結(jié)構(gòu)。使上層只使用下層(絕不使用上層)提供的服務(wù)。盡量不使用非緊鄰下層提供的服務(wù)(不跳層使用服務(wù),除非中間件層添加通過(guò)構(gòu)件)。嚴(yán)格的分層架構(gòu)規(guī)定設(shè)計(jì)元素(類、構(gòu)件、包、子系統(tǒng))只能使用下層提供的服務(wù)。服務(wù)包括事務(wù)處理、出錯(cuò)處理、數(shù)據(jù)庫(kù)訪問(wèn)等等。7、分層考慮事項(xiàng)層常常用于不同種類服務(wù)間縫中概念邊界,提供有益的抽象,使設(shè)計(jì)更易于理解。通常只有一個(gè)應(yīng)用程序?qū)?。即,領(lǐng)域?qū)拥臄?shù)量取決于問(wèn)題域和解決空間的復(fù)雜性。如果領(lǐng)域中已經(jīng)有先前構(gòu)建的系統(tǒng),有由較小的互操作系統(tǒng)構(gòu)成的復(fù)雜系統(tǒng),和/或各設(shè)計(jì)團(tuán)隊(duì)之間尤其需要共享信息的系統(tǒng)。為明確起見(jiàn),可以將業(yè)務(wù)專用層分成幾個(gè)層。在架構(gòu)分析中,我們關(guān)注于較高層(應(yīng)用程序和業(yè)務(wù)專用層)。較低層(基礎(chǔ)層和廠商專用層)將在包含已有設(shè)計(jì)元素中詳細(xì)說(shuō)明。8、架構(gòu)層建模架構(gòu)層可以使用構(gòu)造型包建模??稍赗ose中用《layer》構(gòu)造型包來(lái)表示。層說(shuō)明可以放在包規(guī)格說(shuō)明的document字段中。9、模型的高層結(jié)構(gòu)上面的例子包括了課程注冊(cè)系統(tǒng)的應(yīng)用程序和業(yè)務(wù)專用層。應(yīng)用程序?qū)影藢S糜谡n程注冊(cè)系統(tǒng)的設(shè)計(jì)元素。我們期望多個(gè)應(yīng)用程序共享一些核心抽象和公共服務(wù)。這些已經(jīng)封裝入業(yè)務(wù)服務(wù)層,應(yīng)用程序是可以訪問(wèn)的。業(yè)務(wù)服務(wù)層包含的專用業(yè)務(wù)元素,可用于多個(gè)應(yīng)用程序。4.6架構(gòu)分析步驟(3)確定分析機(jī)制架構(gòu)應(yīng)當(dāng)是簡(jiǎn)單的,但不應(yīng)過(guò)分簡(jiǎn)單。它應(yīng)當(dāng)通過(guò)標(biāo)準(zhǔn)抽象和機(jī)制來(lái)提供標(biāo)準(zhǔn)行為。因而,設(shè)計(jì)一個(gè)軟件框架的關(guān)鍵因素就是機(jī)制的定義和選擇。設(shè)計(jì)員通過(guò)機(jī)制給對(duì)象以“生命”。在架構(gòu)分析中,待開(kāi)發(fā)軟件的分析機(jī)制是十分重要的。分析機(jī)制集中和定位在系統(tǒng)的非功能需求上(也就是需要永久性、可靠性和性能),并將對(duì)非功能需求的支撐直接并入架構(gòu)。分析機(jī)制被用于在分析過(guò)程中向設(shè)計(jì)人員提供復(fù)雜行為的簡(jiǎn)短表示,從而減少分析的復(fù)雜性并提高分析的一致性。通過(guò)這些機(jī)制,可以使分析工作集中于將功能性需求轉(zhuǎn)換成軟件概念,而不必細(xì)究那些需要用來(lái)支持功能但卻不是功能核心的相對(duì)復(fù)雜的行為。1、什么是分析機(jī)制?為了更好地理解什么是分析機(jī)制,我們必須去理解什么是架構(gòu)機(jī)制。架構(gòu)機(jī)制是一項(xiàng)關(guān)于常規(guī)標(biāo)準(zhǔn)、方針和實(shí)踐的戰(zhàn)略決策。它是一個(gè)項(xiàng)目應(yīng)當(dāng)標(biāo)準(zhǔn)化的課題的實(shí)現(xiàn)。項(xiàng)目的每個(gè)人都應(yīng)當(dāng)以相同的方式使用這些概念,并重用相同的機(jī)制執(zhí)行操作。一個(gè)架構(gòu)機(jī)制描述了針對(duì)一個(gè)經(jīng)常發(fā)生的問(wèn)題的一種通用解決方案。它可能是結(jié)構(gòu)模式、行為模式,或者兩種都是。架構(gòu)機(jī)制是系統(tǒng)所要求的功能和如何實(shí)現(xiàn)此功能間的一個(gè)重要的組合部分。對(duì)架構(gòu)機(jī)制的支持需要構(gòu)置在架構(gòu)上。架構(gòu)機(jī)制被架構(gòu)師所調(diào)整。架構(gòu)師選擇機(jī)制,通過(guò)構(gòu)造和集成它們以進(jìn)行確認(rèn),驗(yàn)證它們的工作,并持續(xù)將它們加入系統(tǒng)設(shè)計(jì)的其余部分。2、架構(gòu)機(jī)制的三個(gè)種類。有三種架構(gòu)機(jī)制:分析機(jī)制(概念);設(shè)計(jì)機(jī)制(具體);實(shí)施機(jī)制(實(shí)際)。它們之間的唯一差別就是精細(xì)程度。分析機(jī)制以與實(shí)現(xiàn)無(wú)關(guān)的方式捕捉解決方案的關(guān)鍵部分。它們或者提供一個(gè)領(lǐng)域相關(guān)類或者構(gòu)件的特定行為,或者符合類和/或構(gòu)件間協(xié)作的實(shí)現(xiàn)。它們可能作為一個(gè)框架被實(shí)現(xiàn)。例如永久性、進(jìn)程間通信、錯(cuò)誤或故障處理、通知和消息的傳遞機(jī)制,其例子不勝枚舉。設(shè)計(jì)機(jī)制更具體一些。它假定一些實(shí)施環(huán)境的一些細(xì)節(jié),但并不約束于一個(gè)特定實(shí)施(一個(gè)實(shí)施機(jī)制)。實(shí)施機(jī)制詳細(xì)說(shuō)明了機(jī)制的準(zhǔn)確實(shí)現(xiàn)。實(shí)施機(jī)制一定是一個(gè)確定技術(shù),影響它的是實(shí)施語(yǔ)言、銷售商或其它因素。在一個(gè)設(shè)計(jì)機(jī)制中,會(huì)選擇一些專用技術(shù)(如數(shù)據(jù)庫(kù))。然而在一個(gè)實(shí)施機(jī)制中,將選擇一些更專用的技術(shù)(如Oracle或Sybase)。對(duì)分析機(jī)制實(shí)施的全部策略必須被構(gòu)置在架構(gòu)中。在討論設(shè)計(jì)和實(shí)施機(jī)制時(shí),將討論有關(guān)確定設(shè)計(jì)機(jī)制的更多內(nèi)容。3、為什么使用分析機(jī)制?分析機(jī)制代表常見(jiàn)問(wèn)題的解決模式。這些機(jī)制可能表示結(jié)構(gòu)模式或行為模式,也可能表示這兩者。它們用于在分析過(guò)程中向設(shè)計(jì)人員提供復(fù)雜行為的簡(jiǎn)短表示,從而減少分析的復(fù)雜性并提高分析的一致性。分析機(jī)制主要用于在架構(gòu)的中層或低層作為更復(fù)雜技術(shù)的“占位符”。當(dāng)在架構(gòu)機(jī)制中將分析機(jī)制用作“占位符”時(shí),可以盡量避免機(jī)制行為的細(xì)節(jié)分散架構(gòu)工作的重點(diǎn)。通過(guò)這些機(jī)制,可以使分析工作集中于將功能性需求轉(zhuǎn)換成軟件概念,而不必細(xì)究那些需要用來(lái)支持功能但卻不是功能核心的相對(duì)的復(fù)雜性。分析機(jī)制通常源于對(duì)一個(gè)或多個(gè)架構(gòu)或分析模式的實(shí)例化。永久性提供了分析機(jī)制的例子。一個(gè)永久性對(duì)象是在創(chuàng)建它的程序消亡后仍然邏輯存在的對(duì)象。在對(duì)象生存期,用例、進(jìn)程生存期或系統(tǒng)關(guān)閉和啟動(dòng)等方面的需要確定了在對(duì)象永久性方面的需要。永久性是一種特別復(fù)雜的機(jī)制。在分析過(guò)程中,我們不希望因細(xì)究如何達(dá)到永久性而分散工作的重點(diǎn)。這就導(dǎo)致了“永久性”分析機(jī)制的出現(xiàn)。它使我們?cè)谡劶坝谰眯詫?duì)象和分析永久性機(jī)制的需求時(shí),不必考慮永久性機(jī)制的確切功能或工作方式。分析機(jī)制通常與問(wèn)題與無(wú)關(guān)(但不一定總是無(wú)關(guān)),而屬于“計(jì)算機(jī)科學(xué)”的概念。所以,它們通常占據(jù)架構(gòu)的中層及更低層。它們?yōu)榕c領(lǐng)域相關(guān)的類或構(gòu)件提供特定的行為,或者對(duì)應(yīng)于類和構(gòu)件之間、類與類之間、或構(gòu)件與構(gòu)件之間協(xié)作關(guān)系的實(shí)施。4、分析機(jī)制舉例分析機(jī)制或者提供一個(gè)領(lǐng)域相關(guān)類或構(gòu)件的特定行為,或者符合類和/或構(gòu)件間協(xié)作的實(shí)現(xiàn)。分析機(jī)制的一些例子在這張幻燈片上。這個(gè)列表并不詳盡。通信機(jī)制的例子包括進(jìn)程間通信(IPC)和節(jié)點(diǎn)間通信(遠(yuǎn)程進(jìn)程或PRC).PRC包括通信和分布。當(dāng)一個(gè)人以“模式”進(jìn)行通信時(shí),機(jī)制或許更容易討論。因此進(jìn)程間通行模式與分布模式進(jìn)行交互、產(chǎn)生PRC模式。這個(gè)過(guò)程給我們提供了一種實(shí)現(xiàn)遠(yuǎn)程IPC的方式。5、分析機(jī)制特征舉例分析機(jī)制特性分析一些系統(tǒng)的非功能性需求。永久性:對(duì)于其實(shí)例可能會(huì)具有永久性的所有類,我們需要確定:粒度:保持永久性所需要的對(duì)象大小的范圍。容量:保持永久性所需要的對(duì)象數(shù)量。持續(xù)時(shí)間:所需的對(duì)象保留時(shí)間。訪問(wèn)機(jī)制:如何唯一的地標(biāo)識(shí)并檢索給定對(duì)象。訪問(wèn)頻率:對(duì)象是否大致保持很定不變?它們是否經(jīng)常更新?可靠性:對(duì)象是否應(yīng)當(dāng)在進(jìn)程、處理器或者整個(gè)系統(tǒng)崩潰后繼續(xù)存在?進(jìn)程間通信:有些模型元素需要在與其他進(jìn)程或線程中執(zhí)行的對(duì)象、構(gòu)件或服務(wù)進(jìn)行通信,對(duì)于所有這些模型元素,我們需要確定:反應(yīng)時(shí)間:進(jìn)程之間的通信速度必須是多快?同步性:通信同步。消息大?。褐付ù笮》秶赡鼙葐蝹€(gè)大小值更恰當(dāng)。協(xié)議:控制流量、緩存及其他。安全性:數(shù)據(jù)粒度:包級(jí)、類級(jí)、屬性級(jí)。用戶粒度:?jiǎn)我挥脩?、角?組。安全規(guī)則:基于數(shù)據(jù)值,和基于數(shù)據(jù)算法,以及基于用戶數(shù)據(jù)和數(shù)據(jù)算法。授權(quán):讀、寫(xiě)、創(chuàng)建、刪除,執(zhí)行其它操作。6、說(shuō)明分析機(jī)制說(shuō)明分析機(jī)制的過(guò)程如下:畫(huà)一張用戶類到分析機(jī)制的圖。將所有分析機(jī)制集中在一張列表上。相同的分析機(jī)制可能會(huì)以不同的名字出現(xiàn),跨越不同的用例實(shí)現(xiàn),或跨越不同的設(shè)計(jì)人員。舉例來(lái)說(shuō):storage、persistency、database和repository都可以參照一個(gè)永久性機(jī)制。Inter-process、communication、messagepassing或remoteinvocation都可以參照一個(gè)進(jìn)程間通信機(jī)制。確定分析機(jī)制的特性。識(shí)別潛在設(shè)計(jì)、確定用于證明每個(gè)分析機(jī)制合格的關(guān)鍵特性。7、例子:課程注冊(cè)分析機(jī)制永久性。分布。安全性。遺留接口。4.7架構(gòu)分析步驟(4)確定關(guān)鍵抽象概念確定問(wèn)題域的關(guān)鍵抽象。建立“詞匯表”。關(guān)鍵抽象是系統(tǒng)必須處理的核心概念。例子:在課程注冊(cè)系統(tǒng)中教授學(xué)生課程課程目錄課程安排4.8架構(gòu)分析步驟(5)創(chuàng)建用例實(shí)現(xiàn)一個(gè)用例實(shí)現(xiàn)代表了一個(gè)用例的設(shè)計(jì)觀點(diǎn)(思路、思想)。它是一個(gè)組織模型元素,用于將一定數(shù)量的工件進(jìn)行分組。用例與用例實(shí)現(xiàn)是分離的,因此你可以獨(dú)立地管理每一個(gè),并更改用例設(shè)計(jì),而不會(huì)影響到用例的基線。對(duì)于用例模型內(nèi)的每個(gè)用例,帶有“實(shí)現(xiàn)”構(gòu)造型的依賴關(guān)系的設(shè)計(jì)模型中都存在一個(gè)用例實(shí)現(xiàn)。1、復(fù)審:什么事用例實(shí)現(xiàn)?一個(gè)用例實(shí)現(xiàn)是設(shè)計(jì)模型中一個(gè)特殊用例的表達(dá)式。它描述了協(xié)作對(duì)象方面的用例。一個(gè)用例實(shí)現(xiàn)將用例模型的用例和設(shè)計(jì)模型聯(lián)系在一起。一個(gè)用例實(shí)現(xiàn)說(shuō)明了每個(gè)用例必須用那些類來(lái)實(shí)現(xiàn)。在UML中,用例實(shí)現(xiàn)就是構(gòu)造型協(xié)作。協(xié)作的符號(hào)是一個(gè)包含協(xié)作名字的橢圓。用例實(shí)現(xiàn)的符號(hào)是協(xié)作符號(hào)的虛線版。設(shè)計(jì)模型中的一個(gè)用例實(shí)現(xiàn)可被追蹤到用例模型中的一個(gè)用例。一個(gè)實(shí)現(xiàn)關(guān)系就是從用例實(shí)現(xiàn)畫(huà)到它實(shí)現(xiàn)的用例的帶箭頭的虛線。在UML中,一個(gè)用例實(shí)現(xiàn)可以使用一組圖(順序圖、協(xié)作圖和類圖)來(lái)表示,這些圖模擬協(xié)作(實(shí)現(xiàn)用例及它們關(guān)系的類/對(duì)象----類圖)的環(huán)境,和它們的協(xié)作交互(這些類/對(duì)象是如何相互影響以執(zhí)行用例的----協(xié)作圖和順序圖)。要使用的這些圖的數(shù)量和類型,取決于需要什么來(lái)提供一個(gè)協(xié)作和項(xiàng)目應(yīng)用指南。2、用例實(shí)現(xiàn)的價(jià)值:用例形成了大多數(shù)早期分析和設(shè)計(jì)工作的主要集中點(diǎn)。為了能夠在需求中心活動(dòng)和設(shè)計(jì)中心活動(dòng)間轉(zhuǎn)換,用例實(shí)現(xiàn)扮演了橋梁的角色,提供了一種對(duì)設(shè)計(jì)模型到用例模型的逆行追蹤行為的方式,也組織了圍繞用例概念的設(shè)計(jì)模型中的協(xié)作。用例模型中的每個(gè)用例,都在設(shè)計(jì)模型中創(chuàng)建一個(gè)用例實(shí)現(xiàn)。用例實(shí)現(xiàn)的名稱應(yīng)當(dāng)與其關(guān)聯(lián)的用例一樣,并且應(yīng)當(dāng)建立從用例實(shí)現(xiàn)到其關(guān)聯(lián)用例的一個(gè)追蹤依賴。4.9架構(gòu)分析步驟(6)檢查點(diǎn)4.10本章總結(jié)
第五章用例分析5.1章節(jié)目標(biāo)1、用例分析的目的;何時(shí)執(zhí)行?2、確定執(zhí)行用例事件流的類。3、將用例行為分配給類,確定這些類的職責(zé)。4、開(kāi)發(fā)用例實(shí)現(xiàn),在所確定類的實(shí)例間構(gòu)建協(xié)作模型。在用例分析中,首先確定初始類----分析類。將職責(zé)分配給它們,注意架構(gòu)機(jī)制的使用。用例分析活動(dòng)開(kāi)發(fā)的關(guān)鍵模型元素:分析類和初始用例實(shí)現(xiàn),將在后續(xù)的分析設(shè)計(jì)活動(dòng)中被改進(jìn)。5.2工具環(huán)境中的用例分析用例分析––––分析行為。初始架構(gòu)已經(jīng)定義,和軟件需求一起作為輸入指導(dǎo)和服務(wù)于用例分析活動(dòng)。構(gòu)架層及其職責(zé),可能影響分析類的定義和職責(zé)分配。用例實(shí)現(xiàn)說(shuō)明分析如何協(xié)作,以執(zhí)行用例。用例實(shí)現(xiàn)將在用例設(shè)計(jì)模型中改進(jìn)。5.3用例分析概述用例分析有設(shè)計(jì)員執(zhí)行,每個(gè)用例實(shí)現(xiàn)進(jìn)行一次迭代。目的:確定執(zhí)行用例事件流的類。將用例行為分配給這些類。確定類的職責(zé)、屬性和關(guān)聯(lián)。記錄架構(gòu)機(jī)制的使用情況。5.4用例分析步驟以上是用例分析的步驟。復(fù)審用例描述,發(fā)掘足夠多的細(xì)節(jié)。研究用例事件流,確定分析類,將用例職責(zé)分配給分析類,模型化分析類間的關(guān)系。將分析類的職責(zé)文檔化。確保以開(kāi)發(fā)的分析模型是一致的。5.5用例分析步驟(1)補(bǔ)充用例說(shuō)明補(bǔ)充用例描述5.6用例分析步驟(2-1)對(duì)每一個(gè)用例實(shí)現(xiàn)從用例行為中查找類對(duì)需求更詳細(xì)描述,并文檔化,以確定候選分析類。從用例中查找行為,是為了確定備選的分析類(行為模型元素)。1、復(fù)審:類強(qiáng)調(diào)相關(guān)性。排除其它特性。一個(gè)類由三部分組成:類名;屬性(結(jié)構(gòu));操作(行為)。2、復(fù)審:用例實(shí)現(xiàn)理解用例實(shí)現(xiàn)中類的職責(zé)、角色以及如何交互,用以改進(jìn)類的職責(zé)和接口。3、分析類:達(dá)成執(zhí)行的第一步尋找分析類的候選集是系統(tǒng)轉(zhuǎn)換的第一步。分析類代表早期的概念模型,它將不斷被改進(jìn)。分析類是“原型類”,其本質(zhì)是“行為族”,經(jīng)過(guò)改進(jìn)和組合形成分離類、合并類、構(gòu)件或子系統(tǒng)。4、從用例行為中查找類從三種角度識(shí)別類:系統(tǒng)與角色的邊界(邊界類);系統(tǒng)使用信息(實(shí)體類);系統(tǒng)的控制邏輯(控制類)。5、什么是分析類分析類是系統(tǒng)對(duì)象模型的“第一稿”,主要處理功能需求。三種類型:邊界類;實(shí)體類;控制類。6、什么是邊界類邊界類是接口和系統(tǒng)外部事物的中間體。通常由三種邊界類:用戶界面類;系統(tǒng)接口類;設(shè)備接口類。初步建議:每對(duì)角色/用例考慮一個(gè)邊界類。7、邊界類角色邊界類用于對(duì)系統(tǒng)環(huán)境與其內(nèi)部運(yùn)作之間的交互進(jìn)行建模的類。邊界類對(duì)系統(tǒng)中依賴于環(huán)境的那些部分進(jìn)行建模。邊界類用于隔離外部環(huán)境與內(nèi)部機(jī)制之間的相互影響。邊界類的生命周期長(zhǎng)于或等于用例實(shí)例的生命周期。8、查找邊界類考慮外部事件的來(lái)源,確??蓹z測(cè)。初步識(shí)別建議:每對(duì)角色/用例一個(gè)邊界類(以后可以考慮刪節(jié)或合并)。9、指南:邊界類(關(guān)注職責(zé)、不究細(xì)節(jié))不必注重細(xì)節(jié)考慮。用戶界面類:關(guān)注展示給用戶的信息;不必注重界面細(xì)節(jié)。系統(tǒng)和設(shè)備接口:關(guān)注必須定義的協(xié)議,不關(guān)注協(xié)議如何實(shí)現(xiàn);可直接從接口定義派生。10、什么是實(shí)體類?系統(tǒng)的關(guān)鍵抽象。實(shí)體類顯示了系統(tǒng)的邏輯樹(shù)結(jié)構(gòu),提供了另一個(gè)了解系統(tǒng)的視點(diǎn),有助于理解系統(tǒng)為用戶提供的服務(wù)內(nèi)容。發(fā)現(xiàn)實(shí)體類:詞匯表(需求階段);業(yè)務(wù)領(lǐng)域模型(業(yè)務(wù)建模);用例事件流(需求階段);關(guān)鍵抽象(架構(gòu)分析);行為分析(用例分析)。11、一個(gè)實(shí)體類角色實(shí)體類通常表示了系統(tǒng)的永久信息存儲(chǔ)。實(shí)體類的主要職責(zé)是存儲(chǔ)和管理系統(tǒng)中的信息。實(shí)體對(duì)象通常是系統(tǒng)的、甚至超系統(tǒng)范圍的,而不是專屬于某個(gè)用例。實(shí)體對(duì)象獨(dú)立于環(huán)境(角色)。12、什么是控制類?用例行為協(xié)調(diào)器:如事物管理,資源協(xié)調(diào),出錯(cuò)處理??刂祁愑行У貙⑦吔鐚?duì)象和實(shí)體對(duì)象分開(kāi),讓系統(tǒng)更能適應(yīng)邊界內(nèi)的變更??刂祁愡€將用例特有行為與實(shí)體對(duì)象分開(kāi),提高實(shí)體對(duì)象的復(fù)用性。控制類提供的行為,有如下特點(diǎn):------獨(dú)立與環(huán)境。------確定用例的控制邏輯(事件順序)和事務(wù)。------幾乎不因?qū)嶓w結(jié)構(gòu)或行為變更而變更。------協(xié)調(diào)實(shí)體類之間的行為。------執(zhí)行方式具有多態(tài)性(事件流具有多種狀態(tài))。初始確定控制類,每個(gè)用例只能創(chuàng)建一個(gè)控制類,進(jìn)一步分析時(shí)發(fā)現(xiàn)更多用例的共性時(shí),再增加、刪除或合并使用控制類。13、一個(gè)控制類角色(起的作用、擔(dān)任的任務(wù))一個(gè)控制類是用于對(duì)一個(gè)或多個(gè)用例所特有的控制行為進(jìn)行建模的類。控制對(duì)象控制其它對(duì)象、協(xié)調(diào)它們的行為??刂祁惙庋b了用例的特有行為??刂祁惸鼙硎鞠到y(tǒng)動(dòng)態(tài)行為,從處理主要任務(wù)和控制流的角度,幫助理解系統(tǒng)。系統(tǒng)執(zhí)行用例時(shí),產(chǎn)生控制對(duì)象,通常在用例執(zhí)行完畢時(shí)控制對(duì)象消亡。15、總結(jié):分析類每個(gè)用例實(shí)現(xiàn)都有一個(gè)或多個(gè)類圖與它們的關(guān)系一起描述其參與類。這些圖有助于確保用例實(shí)現(xiàn)中跨子系統(tǒng)邊界的一致性。這樣的類圖被稱為“參與類視圖”:ViewofParticipatingClasses(VOPC)。5.7用例分析步驟(2-2)對(duì)每一個(gè)用例實(shí)現(xiàn)將用例行為分配給類“將用例行為分配給類”的目的是:按照協(xié)作分析類表述用例行為。確定分析類的職責(zé)。1、將用例行為分配給類通過(guò)用例事件流,確定為必要行為負(fù)責(zé)的分析類,準(zhǔn)確給出被應(yīng)用的時(shí)間。交互圖用角色來(lái)顯示于系統(tǒng)的交互,若有多個(gè)角色,將它們保持在圖的外圍。2、指南:將職責(zé)分配到類邊界類:接口;控制類:事件流;實(shí)體類:永久性數(shù)據(jù)。那個(gè)類擁有執(zhí)行職責(zé)的數(shù)據(jù)?----一個(gè)類擁有,將職責(zé)放在這個(gè)類;----多個(gè)類擁有,則:將職責(zé)交給一個(gè)類,并對(duì)其它類的增加一個(gè)關(guān)系(OO原則:數(shù)據(jù)和操作在一起);創(chuàng)建一個(gè)新類,將職責(zé)交給它,并對(duì)需要執(zhí)行職責(zé)類增加關(guān)系;將職責(zé)發(fā)起那個(gè)在控制類,并對(duì)需要執(zhí)行職責(zé)類增加關(guān)系。注意:增加關(guān)系必須考慮模型的全面影響;盡可能重用已有的類,確認(rèn)沒(méi)有近似職責(zé)的類時(shí),才創(chuàng)建新類。3、序列圖剖析按時(shí)間順序描述對(duì)象間的交互(用“生命線”和消息顯示)。4、協(xié)作圖剖析通過(guò)對(duì)象間的連接(關(guān)系)和相互發(fā)送消息,來(lái)顯示參與交互的對(duì)象。。對(duì)象間的實(shí)線表示連接,通過(guò)連接實(shí)現(xiàn)交互或?qū)Ш?。消息使?duì)象間的通信,它傳達(dá)信息并期望活動(dòng)隨之發(fā)生。在連接旁帶有標(biāo)記的箭頭表示消息,箭頭的編號(hào)表示消息的順序。用消息指向的目標(biāo)對(duì)象的操作代替消息的名稱,表明消息將會(huì)激發(fā)的操作。5、一個(gè)協(xié)作圖并不充分將大多數(shù)事件流模型化,確保參與類操作的所有需求都被確定。從最通用和最重要的事件流(基礎(chǔ)流)開(kāi)始,然后說(shuō)明變體(如異常流)。常見(jiàn)的異常流:出錯(cuò)處理;超時(shí)處理;錯(cuò)誤輸入處理等。可選流:系統(tǒng)下一步做什么;后續(xù)事件流依賴于存儲(chǔ)的屬性值或關(guān)系;后續(xù)事件流依賴于處理數(shù)據(jù)的類型。6、協(xié)作圖VS.序列圖兩者表達(dá)相似的信息,以不同的方式顯示;可捕捉用例事件流語(yǔ)義,幫助確定對(duì)象、類、接口和職責(zé);幫助確認(rèn)架構(gòu)。協(xié)作圖強(qiáng)調(diào)一組對(duì)象結(jié)構(gòu)上的協(xié)作,提供了關(guān)系模式和控制更清晰的圖畫(huà),有利于理解給定對(duì)象的所有影響,更適合于過(guò)程設(shè)計(jì)。序列圖顯示消息的順序,更適合實(shí)時(shí)規(guī)約和復(fù)雜場(chǎng)景。時(shí)間維度更易理解、操作和參數(shù)更易展示、易于管理大量對(duì)象。序列圖和協(xié)作圖都允許捕捉用例事件流的語(yǔ)義;幫助確定對(duì)象、類、接口和職責(zé);幫助確認(rèn)構(gòu)架。**************************************************2007-4-55.8用例分析步驟(3-1)對(duì)每一個(gè)得到的分析類說(shuō)明職責(zé)此時(shí),分析類已經(jīng)確定,職責(zé)也已分配。說(shuō)明分析類的職責(zé)。將分析類的內(nèi)容文檔化。1、說(shuō)明職責(zé)對(duì)象可執(zhí)行的操作。對(duì)象保留并提供給其它對(duì)象的知識(shí)。職責(zé)從消息中得到。類職責(zé)分析可用下面兩種方式之一文檔化:命名約定;文本描述。2、總結(jié)分析類每個(gè)用例實(shí)現(xiàn)都有一個(gè)或多個(gè)類圖與它們的關(guān)系一起描述其參與類。這些圖有助于確保用例實(shí)現(xiàn)中跨子系統(tǒng)邊界的一致性。這樣的類圖被稱為“參與類視圖”:ViewofParticipatingClasses(VOPC)。3、維護(hù)一致性,期待什么?一個(gè)類存在互不相干的職責(zé)時(shí),可將其分成兩個(gè)或多個(gè)類。幾個(gè)類有相似職責(zé)時(shí),合并它們。只有一項(xiàng)職責(zé)的類,應(yīng)對(duì)其必要性進(jìn)行驗(yàn)證。類發(fā)生變更,必須更新交互圖。5.9用例分析步驟(3-2)對(duì)每一個(gè)得到的分析類說(shuō)明屬性與關(guān)聯(lián)關(guān)聯(lián):說(shuō)明分析類依賴的其它類。說(shuō)明該類必須了解的其它類中的事件。屬性:說(shuō)明分析類負(fù)責(zé)維護(hù)的信息。1、復(fù)審:什么是屬性?屬性被用來(lái)存儲(chǔ)信息,它們是沒(méi)有職責(zé)的原子事物。屬性應(yīng)當(dāng)是名詞;屬性類型來(lái)源于領(lǐng)域。2、查找屬性可能的屬性來(lái)源:領(lǐng)域知識(shí);需求;詞匯表;業(yè)務(wù)模型;領(lǐng)域模型。信息本身才是重要的,而不是它的位置。如果信息有復(fù)雜行為,或被多個(gè)類共享,此時(shí)應(yīng)將信息作為一個(gè)分離類被模型化。3、什么是關(guān)聯(lián)?關(guān)聯(lián)表示不同類的對(duì)象之間的結(jié)構(gòu),它在一段時(shí)間內(nèi)將多個(gè)類的實(shí)例連接在一起。4、查找關(guān)系協(xié)作圖中相互連接的對(duì)象或類,存在關(guān)聯(lián)。自反關(guān)聯(lián),即遞歸關(guān)聯(lián)。5、什么是聚合?聚合是一種特殊的關(guān)聯(lián),它表明了“整體/部分”的關(guān)系。6、關(guān)聯(lián)或聚合?當(dāng)“部分”游離于“整體”時(shí),整體顯得不完全時(shí)才使用聚合。當(dāng)類與類之間的關(guān)系并非明顯的“整體/部分”關(guān)系時(shí),用關(guān)聯(lián),不用聚合。猶豫不決時(shí),用關(guān)聯(lián)、不用聚合。關(guān)聯(lián)還是聚合,與建模的問(wèn)題與有關(guān)。如整車經(jīng)銷和零配件經(jīng)銷的車和門(mén)。7、什么是角色(起的作用、擔(dān)任的任務(wù))?一個(gè)類在關(guān)聯(lián)中承擔(dān)的“任務(wù)”,即該類在關(guān)聯(lián)中扮演的角色。8、復(fù)審:多重性(第一章翻譯為“多樣性”)關(guān)聯(lián)類兩端可關(guān)聯(lián)對(duì)象數(shù)量的描述。9、多重性意味著什么?一個(gè)對(duì)象可以擁有另一個(gè)對(duì)象關(guān)系數(shù)量的上限和下限。為0的下限說(shuō)明這個(gè)關(guān)系可選的,反之則是必須的。*說(shuō)明數(shù)量是未知的。10、例子:多重關(guān)聯(lián)兩個(gè)類之間可以有多個(gè)關(guān)聯(lián),但應(yīng)當(dāng)表示不同的關(guān)系和擔(dān)任不同的角色(職務(wù));而不是僅僅引起不同的操作。如果兩個(gè)類之間有多個(gè)關(guān)聯(lián),則必須分別命名,以示區(qū)別和說(shuō)明。多重關(guān)聯(lián)必須仔細(xì)檢查;一個(gè)類的一個(gè)實(shí)例與另一個(gè)類的多個(gè)分離實(shí)例連接,多重關(guān)聯(lián)才是有效的。5.10用例分析步驟(3-3)對(duì)每一個(gè)得到的分析類限定分析機(jī)制限定分析機(jī)制的目的:確定類使用的分析機(jī)制(如果有的話);提供更多關(guān)于類應(yīng)用分析機(jī)制的信息。對(duì)每一個(gè)分析機(jī)制,應(yīng)限定其特性、給定其適用范圍、指出其不確定性。分析機(jī)制的特性往往并不十分精確,但很有價(jià)值,應(yīng)當(dāng)與類一起文檔化。1、復(fù)審:為什么使用分析機(jī)制?減少分析的復(fù)雜性,提高分析的一致性。分析機(jī)制通常與問(wèn)題領(lǐng)域無(wú)關(guān)(并不總是無(wú)關(guān)),屬于“計(jì)算機(jī)科學(xué)”的概念。通常占據(jù)架構(gòu)的中低層。如永久性、進(jìn)程間通信、出錯(cuò)或故障處理、消息傳遞等處理機(jī)制。2、說(shuō)明分析機(jī)制在架構(gòu)分析中,確定和說(shuō)明分析機(jī)制。方法:將所有分析機(jī)制收集在一張列表上;畫(huà)一張類和分析機(jī)制圖;確定分析機(jī)制的特性。5.11用例分析步驟(4)統(tǒng)一分析類現(xiàn)在必須復(fù)審我們的工作,確保轉(zhuǎn)到構(gòu)架活動(dòng)前,盡可能地完全和一致。統(tǒng)一分析類的目的是確保每個(gè)分析類表示一個(gè)單一的、明確定義的概念,而不會(huì)出現(xiàn)職責(zé)重疊。1、統(tǒng)一分析類過(guò)濾分析類,確保創(chuàng)建數(shù)量最小的新概念。不同的用例將貢獻(xiàn)給(使用)相同的類。一個(gè)類可參與多個(gè)(任意數(shù)量)用例。所以,必須檢查每個(gè)類的一致性。合并行為相似或表現(xiàn)相同的類。合并說(shuō)明相同屬性的實(shí)體類,即使其行為不同;聚合合并類的行為。更新類和更新用例的“補(bǔ)充”說(shuō)明同步。更新需求則應(yīng)受控,因?yàn)樾枨笫桥c客戶的契約,任何變化都必須驗(yàn)證和控制。2、評(píng)估“用例分析”結(jié)果驗(yàn)證分析類是否滿足系統(tǒng)的功能需求。驗(yàn)證分析類及其職責(zé),是否與它們支持的協(xié)作一致。5.12用例分析步驟(5)檢查點(diǎn)1、檢查點(diǎn):分析類類是合理的嗎?每個(gè)類名都清楚地反映了它所扮演的角色了嗎?類是否表示了一個(gè)單一的、明確定義的抽象?所有屬性和職責(zé)在功能上是連接在一起的嗎(任何屬性和關(guān)系冗余,或不被用例實(shí)現(xiàn)需要,則應(yīng)刪除之)?類提供了必要的(用例實(shí)現(xiàn)和其它類要求的)行為了嗎?類應(yīng)當(dāng)滿足需求規(guī)格說(shuō)明書(shū)中,對(duì)類的所有需求。2、檢查點(diǎn):用例實(shí)現(xiàn)所有主流和/或子流,包括異常流都已經(jīng)被處理了嗎?所有的對(duì)象都已經(jīng)被發(fā)現(xiàn)了嗎?所有行為都已經(jīng)被明確分配給參與對(duì)象了嗎?行為已經(jīng)被分配到正確的對(duì)象上了嗎?有幾個(gè)交互圖時(shí),它們的關(guān)系是清洗和一致的嗎?5.13本章總結(jié)用例分析的目的是什么?什么是分析類?說(shuō)出三種鉤造型的名稱,并描述它們。什么是用例實(shí)現(xiàn)?描述分配職責(zé)給分析類的一些注意事項(xiàng)。用例分析期間,應(yīng)當(dāng)產(chǎn)生多少交互圖?第六章確定設(shè)計(jì)元素6.1章節(jié)目標(biāo)1、說(shuō)明確定設(shè)計(jì)元素的目的,及其在生命周期何處執(zhí)行。2、對(duì)分析類的交互進(jìn)行分析,并確定設(shè)計(jì)模型元素:1)設(shè)計(jì)類2)子系統(tǒng)3)子系統(tǒng)接口確定設(shè)計(jì)元素執(zhí)行了什么,但不描述執(zhí)行過(guò)程是怎樣實(shí)現(xiàn)的。通過(guò)理解用以支持構(gòu)架決策的基本原理、考慮事項(xiàng)和約束構(gòu)架設(shè)計(jì)完成的框架,進(jìn)而理解系統(tǒng)構(gòu)架。6.2在環(huán)境中確定設(shè)計(jì)元素確定設(shè)計(jì)元素是改進(jìn)構(gòu)架過(guò)程(工作流)的一個(gè)活動(dòng)。架構(gòu)分析過(guò)程的活動(dòng)中定義了系統(tǒng)的層(集中于上層);用例分析中,分析了需求和系統(tǒng)行為,并將職責(zé)分配到類(分析類)。確定設(shè)計(jì)元素過(guò)程中,分析類將被改進(jìn)成設(shè)計(jì)元素(設(shè)計(jì)類、子系統(tǒng)和子系統(tǒng)接口)。用例分析關(guān)心“做什么”;架構(gòu)活動(dòng)關(guān)心“怎么做”(設(shè)計(jì));構(gòu)架就是選擇。6.3確定設(shè)計(jì)元素概述目的:對(duì)分析類的交互進(jìn)行分析,以確定設(shè)計(jì)元素(設(shè)計(jì)類、子系統(tǒng)和子系統(tǒng)接口)。輸入:補(bǔ)充約規(guī);項(xiàng)目詳細(xì)指南;軟件構(gòu)架文檔;分析類;分析模型;設(shè)計(jì)模型。輸出:設(shè)計(jì)模型元素----類;包;子系統(tǒng)。6.4確定設(shè)計(jì)元素步驟本章(確定設(shè)計(jì)元素)將要進(jìn)行的活動(dòng):確定類和子系統(tǒng);確定子系統(tǒng)接口;更新設(shè)計(jì)模型結(jié)構(gòu);檢查點(diǎn)。6.5確定設(shè)計(jì)元素步驟(1)確定類和子系統(tǒng)確定類和子系統(tǒng)的目的是改進(jìn)分析類,使之成為適當(dāng)?shù)脑O(shè)計(jì)元素。分析類將可能被擴(kuò)充、推倒、合并,甚至刪除;很少在設(shè)計(jì)過(guò)程中保持不變。1、從分析類到設(shè)計(jì)元素分析類將被改進(jìn)為設(shè)計(jì)元素:比如設(shè)計(jì)類或子系統(tǒng)。決定哪個(gè)分析“類”是真正的類,哪些是子系統(tǒng),哪些是既存的構(gòu)件,根本不需要再進(jìn)行“設(shè)計(jì)”。創(chuàng)建了設(shè)計(jì)類和子系統(tǒng)必須命名并簡(jiǎn)短描述,原始分析類的職責(zé)應(yīng)當(dāng)轉(zhuǎn)移到新創(chuàng)建的子系統(tǒng)。已經(jīng)確定的設(shè)計(jì)機(jī)制應(yīng)當(dāng)被連接到設(shè)計(jì)元素。2、確定設(shè)計(jì)類如果分析類是簡(jiǎn)單的,并已經(jīng)表示了一個(gè)簡(jiǎn)單邏輯抽象,則可以直接一對(duì)一地影射為一個(gè)設(shè)計(jì)類。通常實(shí)體類可以在設(shè)計(jì)過(guò)程中保持相對(duì)完整。一般而言,分析類和設(shè)計(jì)元素之間有一個(gè)多對(duì)多的映射。比如,一個(gè)分析類可以成為設(shè)計(jì)模型中的:一個(gè)簡(jiǎn)單類;一個(gè)類的一部分;一個(gè)聚合類(聚合中的部分可能沒(méi)有被明確模型化);同一個(gè)類繼承而來(lái)的組類;一組功能相關(guān)的類(例如,一個(gè)包);一個(gè)子系統(tǒng);一個(gè)關(guān)系。分析類間的一個(gè)關(guān)系,可以設(shè)計(jì)成設(shè)計(jì)模型中的一個(gè)類。一個(gè)分析類部分可以被硬件實(shí)現(xiàn),而不必在設(shè)計(jì)模型中建模。分析類也可以被映射為以上的任何組合。3、復(fù)審:包和類什么是類?什么是包?4、將包中的設(shè)計(jì)類分組封裝標(biāo)準(zhǔn)可基于不同因素:配置單元(提交單元);開(kāi)發(fā)隊(duì)伍中的資源分配(子項(xiàng)目);反映用戶類型(子系統(tǒng));表示系統(tǒng)使用的既存產(chǎn)品和服務(wù)(子系統(tǒng))。5、封裝技巧:邊界類如果系統(tǒng)接口可能進(jìn)行相當(dāng)大的更改,邊界類應(yīng)被放置在一個(gè)或多個(gè)單獨(dú)的包中。一旦更改,將只會(huì)影響這些包,而不致波及其它。如果接口不會(huì)有較大更改,則應(yīng)將邊界類與功能相關(guān)的實(shí)體類和控制類放置在一起。如果實(shí)體類和控制類變化,就很容易看出哪些邊界類受影響。6、封裝技巧:功能相關(guān)類確定功能是否相關(guān)類的標(biāo)準(zhǔn):----一個(gè)類的行為和/或結(jié)構(gòu)發(fā)生變化,使得另一個(gè)類必須相應(yīng)地變化。----一個(gè)類的刪除,影響其他類。----兩個(gè)對(duì)象進(jìn)行大量的消息交互,或以復(fù)雜的方式通信(交互),這兩個(gè)對(duì)象就可能在功能上相關(guān)。----如果某個(gè)邊界類的功能是顯示一個(gè)特定的實(shí)體類,這個(gè)邊界類就可能與該實(shí)體類功能相關(guān)。----如果兩個(gè)類與同一個(gè)actor交互,或受到同一個(gè)actor變更的影響,這兩個(gè)類就可能功能相關(guān)。----兩個(gè)類之間存在某些關(guān)系。----一個(gè)類創(chuàng)建另一個(gè)類的實(shí)例。確定何時(shí)不應(yīng)將兩個(gè)類放在同一個(gè)包中的標(biāo)準(zhǔn):----與不同actor相關(guān)的兩個(gè)類,不應(yīng)放在同一個(gè)包中。----一個(gè)可選類和一個(gè)必選類,不應(yīng)放在同一個(gè)包中。7、包依賴關(guān)系:包元素的可見(jiàn)性包中元素的可見(jiàn)性與類的屬性和操作的可見(jiàn)性相同:允許其它包(或類)訪問(wèn)該包(或類)元素。(可見(jiàn)性即可訪問(wèn)性)UML定義了三種可見(jiàn)性:----Public (公共):符號(hào):+,外部均可訪問(wèn)。----Protected(保護(hù)):符號(hào):#,可以被其擁有包,以及從其擁有包繼承的包所訪問(wèn)。----Private (私有):符號(hào):-,只能被其擁有包中的類所訪問(wèn)。一個(gè)包的公共元素組成了包的接口。包的依賴關(guān)系就是對(duì)包公共元素的依賴關(guān)系。包的可見(jiàn)性提供了對(duì)OO封裝原則的支持。8、包耦合度:提示不應(yīng)進(jìn)行交叉耦合(相互依賴)包的依賴只能指向同層或下層,不能指向高層。通常,不能跳層依賴,除非依賴行為在所有層之間都是共通的,或僅用于簡(jiǎn)化各層之間的傳遞操作調(diào)用。包不應(yīng)依賴子系統(tǒng),而只能依賴其它包或接口。9、復(fù)審:子系統(tǒng)和接口子系統(tǒng)是同時(shí)具有包(可包含其它元素)和類(具有行為)的語(yǔ)義的模型元素,用帶有《》標(biāo)記的包來(lái)表示,它將實(shí)現(xiàn)定義其行為的一個(gè)或多個(gè)接口。接口是一個(gè)模型元素,它確定了有一個(gè)分類器(類、子系統(tǒng)或構(gòu)件)提供的一組行為(一組操作)。實(shí)現(xiàn)是兩個(gè)分類器之間的語(yǔ)義關(guān)系,一個(gè)分類器服務(wù)于其它分類器同意承擔(dān)的契約。接口是從一個(gè)包的公共類到外部(通過(guò)包含這個(gè)包的子系統(tǒng))的一個(gè)規(guī)范的抽象。外部只能通過(guò)接口和子系統(tǒng)通信,子系統(tǒng)也只能通過(guò)接口接受外部信息并將響應(yīng)結(jié)果傳遞到外部。子系統(tǒng)中所有類都是私有的,不能從外部直接訪問(wèn)。10、子系統(tǒng)和接口(續(xù))接口封裝了子系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié),并將其與構(gòu)架的其余部分隔離開(kāi)來(lái)。接口所確定的操作被子系統(tǒng)所包含的一個(gè)或多個(gè)元素實(shí)現(xiàn)。接口提供了實(shí)現(xiàn)它的分類器必須支持的行為族。接口和實(shí)現(xiàn)的分離,例證了OO概念的模塊性和封裝性。(和抽象類不同,接口不提供缺省行為,所以接口不是抽象類)。一個(gè)接口,可以被一個(gè)或多個(gè)子系統(tǒng)實(shí)現(xiàn)。實(shí)現(xiàn)統(tǒng)一接口的子系統(tǒng)可以互換。這樣,只要接口保持不變,子系統(tǒng)的內(nèi)容和內(nèi)部行為可以完全自由地更改。11、包與子系統(tǒng)對(duì)比子系統(tǒng): 包:----提供行為(通過(guò)接口)。 ----不一定提供行為。----完全封裝其行為。 ----不一定完全封裝其行為。----易于替代。 ----不完全封裝就不易替代。12、子系統(tǒng)使用方法子系統(tǒng)可被用來(lái)將系統(tǒng)劃分成若干部分,這些部分可以是:----被定制、被配置、或被提交----被開(kāi)發(fā),只要接口保持不變----被部署,跨越一組分布式計(jì)算節(jié)點(diǎn)----被修改,而不破壞系統(tǒng)的其它部分子系統(tǒng)可被用于:----將系統(tǒng)劃分成單元,其中可以提供對(duì)關(guān)鍵資源的受限安全性----表示設(shè)計(jì)中既存產(chǎn)品或外部系統(tǒng)(例如,構(gòu)件)13、確定子系統(tǒng):提示查看對(duì)象(類)協(xié)作:如果一組協(xié)作類僅僅相互協(xié)作就可以產(chǎn)生明確定義的結(jié)果集,那么就將它們封裝在一個(gè)子系統(tǒng)中。查看可選性:如果協(xié)作建模的行為,可以被刪除、升級(jí)、或選擇替代的特性,那么就將它們封裝在一個(gè)子系統(tǒng)中。查看系統(tǒng)的用戶界面(用戶接口):創(chuàng)建“水平”子系統(tǒng)(邊界類和相關(guān)實(shí)體類在不同的子系統(tǒng)中)或“垂直”子系統(tǒng)(邊界類和相關(guān)實(shí)體類在同一個(gè)子系統(tǒng)中),取決于用戶界面和實(shí)體類的耦合度。查看主角(actor):使用不同的actor劃分功能,因?yàn)槊總€(gè)actor都可以獨(dú)立地修改需求。查看類之間的耦合和聚合:將高度耦合的類組成子系統(tǒng),沿著弱耦合線進(jìn)行分離。查看替代:一個(gè)分離子系統(tǒng)的一個(gè)特殊性能的不同級(jí)別服務(wù)(例如高、中、低),它們實(shí)現(xiàn)同一個(gè)接口。查看分布:如果特殊的功能必須存在于一個(gè)特殊節(jié)點(diǎn),確保子系統(tǒng)功能映射在一個(gè)單一的節(jié)點(diǎn)。查看揮發(fā)度:你應(yīng)盡量把你期望修改部分封裝在同一個(gè)(或盡可能少)的子系統(tǒng)中。14、候選子系統(tǒng)可能發(fā)展為子系統(tǒng)的分析類:----提供復(fù)雜服務(wù)和/或程序的類----金融應(yīng)用軟件中的信用或風(fēng)險(xiǎn)評(píng)估引擎----商業(yè)應(yīng)用軟件中基于規(guī)則的評(píng)估引擎----大多數(shù)應(yīng)用軟件中的安全授權(quán)服務(wù)----邊界類,包括用戶界面和外部系統(tǒng)接口設(shè)計(jì)中的既存產(chǎn)品或外部系統(tǒng)(例如,構(gòu)件),系統(tǒng)所使用的可在一個(gè)子系統(tǒng)中表示的產(chǎn)品包括:----通信軟件(中間件,COM/CORBA)----數(shù)據(jù)庫(kù)訪問(wèn)支持(RDBMS)----類型和數(shù)據(jù)結(jié)構(gòu)(堆棧、列表、隊(duì)列)----通用程序(數(shù)學(xué)庫(kù)——算法庫(kù))----專業(yè)應(yīng)用軟件產(chǎn)品(計(jì)費(fèi)系統(tǒng)、日程安排系統(tǒng))接口(提供了接口的子系統(tǒng))和實(shí)現(xiàn)之間必要的解偶。15、確定子系統(tǒng)如果分析類相當(dāng)復(fù)雜,其行為不能由單個(gè)類獨(dú)自承擔(dān),應(yīng)將該分析類映射到設(shè)計(jì)子系統(tǒng)。使用設(shè)計(jì)子系統(tǒng)來(lái)封裝這些行為,客戶不必知道子系統(tǒng)的內(nèi)部設(shè)計(jì)??梢允紫却_定子系統(tǒng)的接口,而其接口實(shí)施的設(shè)計(jì)細(xì)節(jié)則可在子系統(tǒng)設(shè)計(jì)階段進(jìn)行。是否要將某些事物發(fā)展成一個(gè)子系統(tǒng),常常由架構(gòu)師的知識(shí)和經(jīng)驗(yàn)所決定。6.6確定設(shè)計(jì)元素步驟(2)確定子系統(tǒng)接口接口通常定義子系統(tǒng)的操作集。接口就是子系統(tǒng)行為的聲明,它將這些行為在子系統(tǒng)內(nèi)的實(shí)現(xiàn)分離,從而完成對(duì)子系統(tǒng)的封裝。1、確定接口確定子系統(tǒng),首先必須確定其職責(zé)?;谧酉到y(tǒng)的職責(zé)來(lái)確定其接口。將職責(zé)分組,每組作為一個(gè)候選接口。為每個(gè)職責(zé)確定一個(gè)操作、及其使用參數(shù)和返回值。分析候選接口、職責(zé)和操作,尋找相似點(diǎn)、重新組成接口,并盡可能復(fù)用現(xiàn)有接口。定義接口依賴關(guān)系。將接口映射到子系統(tǒng):建立子系統(tǒng)和接口間的實(shí)現(xiàn)關(guān)系。將接口打包:獨(dú)立于子系統(tǒng)對(duì)接口進(jìn)行管理和控制,依照其職責(zé)劃分接口。2、接口指南接口名:名稱簡(jiǎn)潔、反映接口在系統(tǒng)中的作用。接口描述:說(shuō)明接口的職責(zé)。操作定義:每個(gè)接口應(yīng)提供一個(gè)唯一的、定義明確的操作集;操作名稱應(yīng)反映操作結(jié)果;說(shuō)明操作什么、以及所有參數(shù)(包括返回結(jié)果)類型。接口文檔:接口所定義的行為被表示為操作集,并按以上要求給出說(shuō)明。3、例子:設(shè)計(jì)子系統(tǒng)和接口計(jì)費(fèi)系統(tǒng)和課程目錄系統(tǒng)在用例分析中是兩個(gè)邊界類。由于其功能復(fù)雜且由外部系統(tǒng)實(shí)現(xiàn),故設(shè)計(jì)成兩個(gè)子系統(tǒng)和與之對(duì)應(yīng)的接口。完成了從分析類到設(shè)計(jì)元素的映射。4、建模約定:子系統(tǒng)和接口《subsystem》包、《subsystemproxy》類和以I作為命名首字符的接口。5、例子:子系統(tǒng)環(huán)境:CourseCatalogSystem子系統(tǒng)環(huán)境包括:子系統(tǒng)、接口、代理類、依賴和實(shí)現(xiàn)關(guān)系以及任何子系統(tǒng)關(guān)系。6、例子:子系統(tǒng)環(huán)境:BillingSystem子系統(tǒng)環(huán)境包括:子系統(tǒng)、接口、代理類、依賴和實(shí)現(xiàn)關(guān)系以及任何子系統(tǒng)關(guān)系。6.7確定設(shè)計(jì)元素步驟(3)確定復(fù)用機(jī)會(huì)確定復(fù)用機(jī)會(huì)是一個(gè)重要的構(gòu)架步驟。復(fù)用會(huì)帶來(lái)極大的好處,但必須對(duì)系統(tǒng)行為有較好理解和確定設(shè)計(jì)元素工作基本清晰之后統(tǒng)籌考慮。1、確定復(fù)用機(jī)會(huì)目的:根據(jù)現(xiàn)有子系統(tǒng)和/或構(gòu)件的接口確定可以在哪些地方復(fù)用。步驟:1)尋找相似接口;2)修改新確定的接口,以增強(qiáng)匹配性;3)將被選接口替換成現(xiàn)有接口;4)將備選子系統(tǒng)映射到現(xiàn)有構(gòu)件。2、可能復(fù)用的機(jī)會(huì)被開(kāi)發(fā)系統(tǒng)內(nèi)部:識(shí)別跨包和子系統(tǒng)的共性。被開(kāi)發(fā)系統(tǒng)外部:商業(yè)上可得到的構(gòu)件;先前開(kāi)發(fā)的應(yīng)用軟件構(gòu)件;反向設(shè)計(jì)構(gòu)件。3、對(duì)系統(tǒng)的內(nèi)部復(fù)用的機(jī)會(huì)發(fā)現(xiàn)和尋找設(shè)計(jì)元素的共性:開(kāi)發(fā)公共元素或構(gòu)件。力求實(shí)現(xiàn)設(shè)計(jì)元素的通用性:為今后的復(fù)用及需求的變更考慮。建立以復(fù)用為目的的構(gòu)件庫(kù)(不斷積累、分類管理)。6.8確定設(shè)計(jì)元素步驟(4)更新設(shè)計(jì)模型結(jié)構(gòu)1、復(fù)審:典型分層方法應(yīng)用層;業(yè)務(wù)規(guī)則層;中間件層;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度股東致行動(dòng)協(xié)議:董事會(huì)席位調(diào)整與決策權(quán)分配
- 二零二五年度汽車充電樁場(chǎng)地租賃及維護(hù)服務(wù)合同
- 旅游景區(qū)服務(wù)質(zhì)量提升策略手冊(cè)
- 汽車配件銷售及售后支持協(xié)議
- 企業(yè)級(jí)軟件系統(tǒng)開(kāi)發(fā)合作協(xié)議
- 水滸傳經(jīng)典人物宋江征文
- 租賃房屋補(bǔ)充協(xié)議
- 關(guān)于提高工作效率的研討會(huì)紀(jì)要
- 文化創(chuàng)意產(chǎn)業(yè)發(fā)展規(guī)劃策略
- 融資租賃資產(chǎn)轉(zhuǎn)讓協(xié)議
- 大學(xué)物理馬文蔚版PPT
- 內(nèi)蒙古自治區(qū)高層建筑工程結(jié)構(gòu)抗震基本參數(shù)表(2022年版)
- FZ/T 07010-2021綠色設(shè)計(jì)產(chǎn)品評(píng)價(jià)技術(shù)規(guī)范針織服裝
- 2023年北京市中學(xué)生數(shù)學(xué)競(jìng)賽高一年級(jí)復(fù)賽試題及解答
- 乙?;蚁┩p烯酮;二乙烯酮;雙乙烯酮)的理化性質(zhì)及危險(xiǎn)特性表
- 酒店機(jī)房巡視簽到表
- API-650-1鋼制焊接石油儲(chǔ)罐
- 鼠疫演練腳本
- 變壓器試驗(yàn)精品課件
- 煤礦機(jī)電運(yùn)輸類臺(tái)賬(各種記錄匯編)
- 危險(xiǎn)化學(xué)品從業(yè)單位安全生產(chǎn)標(biāo)準(zhǔn)化宣貫
評(píng)論
0/150
提交評(píng)論