面向對象建模與UML-基礎_第1頁
面向對象建模與UML-基礎_第2頁
面向對象建模與UML-基礎_第3頁
面向對象建模與UML-基礎_第4頁
面向對象建模與UML-基礎_第5頁
已閱讀5頁,還剩112頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

面向對象建模與UML信息與電氣工程學院高洪江2/2/20240第1章面向對象方法概論2/2/20241內容什么是面向對象從認識論看面向對象方法的形成面向對象方法的根本概念與原那么OO方法的開展歷史與現狀2/2/20242什么是面向對象從程序設計方法的角度看,面向對象是一種新的程序設計范型(paradigm),其根本思想是使用對象、類、繼承、封裝、聚合、關聯(lián)、消息、多態(tài)性等根本概念來進行程序設計。2/2/20243自20世紀80年代以來,面向對象方法已深入到計算機軟件領域的幾乎所有分支。它不僅是一些具體的軟件開發(fā)技術與策略,而且是一整套關于如何看待軟件系統(tǒng)與現實世界的關系,用什么觀點來研究問題并進行問題求解,以及如何進行系統(tǒng)構造的軟件方法學。從這個意義上講:面向對象方法是一種運用對象、類、繼承、封裝、聚合、關聯(lián)、消息、多態(tài)性等概念來構造系統(tǒng)的軟件開發(fā)方法。2/2/20244面向對象方法的根本思想從現實世界中客觀存在的事物出發(fā)來構造系統(tǒng)強調直接以問題域〔現實世界〕中的事物為中心來思考問題、認識問題,并根據這些事物的本質特征,把它們抽象為系統(tǒng)中的對象,作為系統(tǒng)的根本構成單位。這可以使系統(tǒng)直接映射問題域,保持問題域中事物及其相互關系的本來面貌。充分運用人類日常的思維方法強調運用人類在日常的邏輯思維中經常采用的思想方法與原那么,例如抽象、分類、繼承、聚合、封裝、關聯(lián)等等。這使得軟件開發(fā)者能更有效地思考問題,并以其他人也能看得懂的方式把自己的認識表達出來。2/2/20245主要特點:用類和對象作為系統(tǒng)的根本構成單位。對象對應問題域中的事物,其屬性和操作刻畫了事物的靜態(tài)特征和動態(tài)特征,它們之間的繼承關系、聚合關系、關聯(lián)和消息如實地表達了問題域中事物之間實際存在的各種關系。因此,無論系統(tǒng)的構成成分,還是通過這些成分之間的關系而表達的系統(tǒng)結構,都可直接地映射問題域。2/2/20246內容什么是面向對象從認識論看面向對象方法的形成面向對象方法的根本概念與原那么OO方法的開展歷史與現狀2/2/20247從認識論看面向對象方法的形成軟件開發(fā):對事物的認識和描述問題——語言的鴻溝對問題域的認識〔人〕客觀世界〔問題域〕計算機自然語言語言的鴻溝編程語言語言的過渡〔人〕編程〔人〕程序的理解和執(zhí)行〔機器〕2/2/20248語言的開展——鴻溝變窄計算機機器語言自然語言客觀世界〔問題域〕語言的鴻溝程序的指令、數據、地址,都是由二進制的“0〞和“1〞構成的。離機器最近,能夠直接地執(zhí)行,然而沒有絲毫形象的意義,離人類的思維最遠。匯編語言以易理解的符號表示指令、數據以及寄存器、地址等物理概念。稍稍適合人類的形象思維,但仍然相差很遠。因為抽象層次太低,仍需考慮大量的機器細節(jié)。高級語言隱蔽了機器細節(jié),使用有形象意義的命名和表達式,可以聯(lián)系到程序所描述的具體事物。特別是結構化編程語言更便于體現客觀事物的結構和邏輯涵義,與人類的自然語言更接近,但仍有不少差距。面向對象語言能比較直接地反映客觀世界的本來面目,并使軟件開發(fā)人員能夠運用人類認識事物所采用的一般思維方法來進行軟件開發(fā)。2/2/20249軟件工程學的作用——傳統(tǒng)的軟件工程方法問題域測試編程計算機編程語言自然語言需求分析總體設計詳細設計分析與設計的鴻溝分析與設計概念及表示法的不一致2/2/202410軟件工程學的作用——

面向對象的軟件工程方法問題域OOA計算機自然語言面向對象編程語言OODOOPOOT2/2/202411內容什么是面向對象從認識論看面向對象方法的形成面向對象方法的根本概念與原那么OO方法的開展歷史與現狀2/2/202412面向對象方法的根本概念與原那么對象,類屬性,操作封裝繼承,一般—特殊結構聚合,整體—局部結構關聯(lián)消息多態(tài)持久對象,主動對象……2/2/202413對象,屬性,操作對象是現實世界中某個實際存在的事物,它可以是有形的,比方一輛汽車,也可以是無形的,比方一項方案。對象是構成世界的一個獨立單位。它具有自己的靜態(tài)特征和動態(tài)特征。屬性是用來描述對象靜態(tài)特征的一個數據項。操作是用來描述對象動態(tài)特征的一個動作序列。對象標識就是對象的名字,有“外部標識〞和“內部標識〞之分。對象是系統(tǒng)中用來描述客觀事物的一個實體,它是構成系統(tǒng)的一個基本單位。對象由一組屬性和施加于這些屬性一組操作構成。對象對象標識屬性操作2/2/202414封裝:把對象的屬性和操作結合成一個獨立的系統(tǒng)單位,并盡可能隱蔽對象的內部細節(jié)。售報亭屬性操作報刊A報刊B…錢箱報刊零售款貨清點顧客封裝的重要意義:使對象能夠集中而完整地描述并對應一個具體的事物。表達了事物的相對獨立性,使對象外部不能隨意存取對象的內部數據,防止了外部錯誤對它的“交叉感染〞。對象的內部的修改對外部的影響很小,減少了修改引起的“波動效應〞。由封裝機制保證封裝帶來的問題:編程的麻煩執(zhí)行效率的損失解決方法:不強調嚴格封裝,實行可見性控制?!不旌闲蚈OPL〕例如:C++2/2/202415抽象,類,一般類,特殊類抽象與分類:忽略事物的非本質特征,只注意那些與當前目標有關的本質特征,從而找出事物的共性,叫做抽象。抽象是形成概念的根本手段。把具有共同性質的事物劃分為一類,叫做分類。類是具有相同屬性和操作的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述,其內部包括屬性和操作兩個主要局部。類的作用是用來創(chuàng)立對象,對象是類的一個實例。對象對象對象對象對象對象對象對象類名屬性操作抽象2/2/202416不同程度的抽象可得到不同層次的分類較多地忽略事物之間的差異可得到較一般的類較多地注意事物之間的差異可得到較特殊的類運輸工具火車汽車飛機卡車轎車輪船車輛2/2/202417一般類和特殊類的定義定義1:如果類A具有類B的全部屬性和全部操作,而且具有自己特有的某些屬性或操作,那么A叫做B的特殊類,B叫做A的一般類。一般類與特殊類又稱父類與子類。定義2:如果類A的全部對象都是類B的對象,而且類B中存在不屬于類A的對象,那么A是B的特殊類,B是A的一般類?!梢宰C明,以上兩種定義是等價的2/2/202418繼承特殊類擁有其一般類的全部屬性與操作,稱作特殊類對一般類的繼承。繼承意味著自動地擁有,或曰隱含地復制繼承簡化了人們對事物的認識和描述,非常有益于軟件復用,是OO技術提高軟件開發(fā)效率的重要原因之一。由繼承機制保證由一組具有繼承關系的類所組成的結構稱作一般-特殊結構。它是一個以類為結點,以繼承關系為邊的連通的有向圖。繼承關系的語義:“isakindof〞軍人軍官士兵義務兵志愿兵例2/2/202419多繼承允許一個特殊類具有一個以上一般類的繼承方式稱作多繼承人員姓名············教職工職稱專業(yè)············研究生學號班級專業(yè)············在職研究生在職單位············例:2/2/202420聚合:是兩個類之間的一個二元關系,它表示一個類的對象實例以另一個類的對象實例作為其組成局部。聚合刻畫了現實事物之間的構成關系或者擁有關系。部分對象部分對象整體對象嵌套對象整體對象部分對象部分對象整體對象對象指針或對象標識兩種聚合,兩種實現方式:緊密、固定的聚合關系——例如汽車與發(fā)動機松散、靈活的聚合關系——例如公司與法律顧問聚合關系的語義:“hasa〞或“isapartof〞緊密、固定的聚合方式又稱為組合2/2/202421整體-局部結構聚合關系又稱整體-局部關系。由一組具有聚合關系的類所形成的結構稱為整體-局部結構。它是一個以類為結點,以聚合關系為邊的連通有向圖。例公司0‥*0‥*法律顧問汽車發(fā)動機車身氣缸111111‥*2/2/202422關聯(lián)兩個或者多個類上的一個關系〔即這些類的對象實例集合的笛卡兒積的一個子集合〕,其中的元素提供了被開發(fā)系統(tǒng)的應用領域中一組有意義的信息。城市**有航線城市之間有航線教師學生*1指導論文教師與被指導的學生例:2/2/202423用集合論的觀點和系統(tǒng)需求討論關聯(lián)概念關聯(lián)是兩個或者多個類上的一個關系,其中的元素提供了被開發(fā)系統(tǒng)的應用領域中一組有意義的信息。例:設A和B是兩個類,它們的對象實例集合是A={a1,a2,……,an}B={b1,b2,……,bm}A和B的笛卡兒積A×B={<a1,b1>,<a1,b2>,……<a1,bm><a2,b1>,<a2,b2>,……<a2,bm>……<an,b1>,<an,b2>,……<an,bm>}這個笛卡兒積集合中有n×m個元素,它們可以組合成2〔n×m〕個子集合。但是只有某個子集合中的元素提供了被開發(fā)系統(tǒng)的應用領域中一組有意義的信息時,才有必要把它定義為系統(tǒng)中的一個關聯(lián)。2/2/202424例如:在一個教學管理系統(tǒng)中有教師、學生、教務員課程等類。系統(tǒng)中需要說明每一門課程由哪位教師承擔、有哪些學生選修,因此需要在教師和課程之間定義一個關聯(lián),在學生和課程之間也定義一個關聯(lián)。該系統(tǒng)的教務員要為學生做注冊、登記成績等工作,但是不需要區(qū)別是哪個教務員為哪個學生做的,因此就不需要在教務員和學生這兩個類之間定義關聯(lián)。教師課程學生教務員?call??call?1***教務員2/2/202425消息:消息是向對象發(fā)出的效勞請求目前在大局部面向對象的編程語言中,消息其實就是函數〔或過程〕調用。但是,函數調用只是實現消息的方式之一,上述理解只適合于順序系統(tǒng)更一般的定義:消息是對象之間在一次交互中所傳送的信息2/2/202426糾正一種誤解——認為在任何兩個類之間只有存在關聯(lián)才可能存在消息。實際上,關聯(lián)和消息是兩個截然不同的概念,二者是相互獨立的。教師課程學生教務員?call??call?1***教務員?call?2/2/202427多態(tài)多態(tài)是指同一個命名可具有不同的語義。OO方法中,常指在一般類中定義的屬性或操作被特殊類繼承之后,可以具有不同的數據類型或表現出不同的行為。實現機制:重寫〔override〕——在特殊類中對繼承來的屬性或操作重新定義其實現;動態(tài)綁定〔dynamicbinding〕——在運行時根據對象接收的消息動態(tài)地確定要連接哪一段操作代碼;類屬〔generic〕——操作參量的類型可以是參數化的。2/2/202428其他持久對象在程序運行結束后仍能繼續(xù)保存的對象超出了程序運行時間,跨越了內外存空間實現途徑:支持持久對象的OOPL,OO-DBMS主動對象至少有一個操作不需要接收消息就能主動執(zhí)行的對象。描述具有主動行為的事物描述并發(fā)執(zhí)行的多個控制流2/2/202429面向對象是軟件方法學的返樸歸真面向機器面向代數面向過程面向數據面向人面向文件面向信息面向應用面向功能面向數據流······軟件科學的開展歷程中出現過許多“面向〞軟件開發(fā)從過分專業(yè)化的方法、規(guī)那么和技巧中回到了客觀世界,回到了人們的日常思維,是軟件理論的返樸歸真。面向對象2/2/202430內容什么是面向對象從認識論看面向對象方法的形成面向對象方法的根本概念與原那么OO方法的開展歷史與現狀2/2/202431OO方法的開展歷史與現狀雛形階段60年代挪威計算中心開發(fā)的Simula67——面向對象語言的先驅和第一個里程碑〔首先引入了類的概念和繼承機制〕。70年代CLU、并發(fā)Pascal、Ada和Modula-2等語言對抽象數據類型理論的開展起到重要作用〔支持數據與操作的封裝〕。猶他大學的博士生AlanKay設計了一個實驗性的語言Flex。從Simula67中借鑒了許多概念,如類、對象、繼承等。2/2/2024321972年PaloAlno研究中心〔PARC〕發(fā)布了Smalltalk-72,其中正式使用了“面向對象〞這個術語。Smalltalk的問世標志著面向對象程序設計方法的正式形成。但是這個時期的Smalltalk語言還不夠完善2/2/202433完善階段PARC先后發(fā)布了Smalltalk-72,76,78等版本,直至1981年推出該語言最完善的版本Smalltalk-80。Smalltalk-80的問世被今認為是面向對象語言開展史上最重要的里程碑。迄今絕大局部面向對象的根本概念及其支持機制在Smalltalk-80中都已具備。它是第一個完善的、能夠實際應用的面向對象語言。但是,Smalltalk開始幾年的應用不夠廣泛,原因是:一種新的軟件方法學被廣泛接受需要一定的時間。商品化軟件開發(fā)工作到87年才開始進行。追求純OO的宗旨使許多軟件開發(fā)人員感到不便。2/2/202434繁榮階段自80年代中期到90年代,是面向對象語言走向繁榮的階段。其主要表現是大批比較實用的OOPL的涌現,例如C++、Objective-C、ObjectPascal、CLOS〔CommonLispObjectSystem〕、Eiffel、Actor等。OO編程語言分為純OO語言和混合型OO語言混合型語言是在傳統(tǒng)的過程式語言根底上增加OO語言成分,在實用性方面具有更大的優(yōu)勢。此時的純OO語言也比較重視實用性。2/2/202435開展到軟件生存周期前期階段計算機軟件領域的很多新的方法與技術都有這樣的開展經歷,例如:結構化方法,形式化方法,軟件復用。與其他方法相比,面向對象的方法與技術開展到軟件生命期的前期階段有著更為深刻的意義。當前:幾乎覆蓋計算機軟件領域的所有分支面向對象的編程語言面向對象的分析面向對象的設計面向對象的軟件測試面向對象的軟件維護面向對象的圖形用戶界面面向對象的數據庫面向對象的數據結構面向對象的智能程序設計面向對象的軟件開發(fā)環(huán)境面向對象的體系結構許多新領域以面向對象理論為基礎,或作為主要技術軟件體系結構(softwarearchitecture)領域工程(domainengineering)設計模式(designpatterns)基于構件的軟件工程(CBSE)智能代理(agent)面向服務的體系結構(SOA)面向對象方法從編程開展到設計、分析,進而開展到整個軟件生存周期。2/2/202436最新開展編程語言——語言+類庫+可視化編程環(huán)境例如:VisualC++,VisualBasic,Delhpi分析與設計方法走向統(tǒng)一,形成統(tǒng)一建模語言UML結束各種方法的概念及表示法不一致的局面2/2/202437在軟件生存周期全過程運用面向對象方法L.M.Northrop:“盡管面向對象語言正取得令人振奮的開展,但編程并不是軟件開發(fā)問題的主要根源。需求分析與設計問題更為普遍并且更值得解決。因此面向對象開發(fā)技術的焦點不應該只對準編程階段,而應更全面地對準軟件工程的其他階段。面向對象方法真正意義深遠的目標是它適合于解決分析與設計期間的復雜性并實現分析與設計的復用。面向對象的開發(fā)不僅僅是編程,必須在整個軟件生存周期采用一種全新的方法,這一觀點已被人們所接受。——《軟件工程百科全書》紐約,1994面向對象的分析面向對象的設計面向對象的編程面向對象的測試面向對象的軟件維護2/2/202438第2章不同的分析與設計方法2/2/202439本章內容結構幾種典型的建模方法功能分解法結構化方法信息建模法面向對象方法方法的比較對問題域的不同映射以不同的概念構成系統(tǒng)模型什么是OOA什么是OODOO方法的主要優(yōu)點幾種典型的OO方法從軟件系統(tǒng)建模面臨的難題看面向對象方法的優(yōu)勢Booch方法Coad-Yourdon方法Jacobson方法(OOSE)Rumbaugh方法(OMT)2/2/202440內容功能分解法結構化方法信息建模法面向對象方法2/2/202441功能分解法〔functiondecomposition〕以系統(tǒng)需要提供的功能為中心來組織系統(tǒng)。首先定義各種功能,然后把功能分解為子功能對較大的子功能進一步分解,直到可給出明確的定義。根據功能/子功能的需要設計數據結構。定義功能/子功能之間的接口。沒有明確地區(qū)分分析與設計功能功能功能系統(tǒng)子功能子功能子功能子功能分解分解分解……………………建模過程:層層進行功能分解2/2/202442功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊功能模塊得到的系統(tǒng)模型:由模塊及其接口構成優(yōu)點與缺點:直接地反映用戶的需求,所以工作很容易開始。不能直接地映射問題域,很難檢驗結果的正確性。對需求變化的適應能力很差。局部的錯誤和修改很容易產生全局性的影響。2/2/202443內容功能分解法結構化方法信息建模法面向對象方法2/2/202444結構化方法SA+SD結構化分析〔structuredanalysis,SA〕結構化分析又稱數據流法,其根本策略是跟蹤數據流,即研究問題域中數據如何流動,以及在各個環(huán)節(jié)上進行何種處理,從而發(fā)現數據流和加工。得到的分析模型是數據流圖〔DFD〕,主要模型元素是數據流、加工、文件及端點,外加處理說明和數據字典。2/2/202445結構化設計〔structureddesign,SD〕結構化設計與功能分解法根本相同,基于模塊的概念建立設計模型,分為概要設計和詳細設計。概要設計:確定系統(tǒng)中包含哪些模塊以及模塊之間的調用關系,得到模塊結構圖〔MSD〕。詳細設計:描述每個模塊內部的數據結構和操作流程。2/2/202446數據流加工文件起點處理說明————————————————————————數據詞典————————————————————————優(yōu)點:有嚴格的法那么,強調研究問題域。缺點:仍然是間接映射問題域;與結構化設計的概念不一致,從分析到設計的過渡比較困難;數據流和加工的數量太多,引起分析文檔的膨脹。終點2/2/202447內容功能分解法結構化方法信息建模法面向對象方法2/2/202448信息建模法〔informationmodeling〕由實體-關系法〔E-R方法〕開展而來。核心概念是實體和關系。實體描述問題域中的事物,關系描述事物之間在數據方面的聯(lián)系,都可以帶有屬性。開展之后的方法也把實體稱作對象,并使用了類型和子類型的概念,作為實體〔對象〕的抽象描述。實體屬性屬性屬性屬性關系實體mnE-R圖信息模型mn對象屬性關系屬性對象屬性2/2/202449有人也稱之為面向對象方法,但有以下差異:強調的重點是信息建模和狀態(tài)建模,而不是對象建模。沒有把對實體屬性所進行的操作封裝到實體對象中。只有屬性的繼承,不支持操作的繼承。沒有采用消息通訊。2/2/202450內容功能分解法結構化方法信息建模法面向對象方法2/2/202451面向對象方法OOA+OOD運用對象、類、繼承、封裝、聚合、關聯(lián)、消息、多態(tài)性等概念來構造系統(tǒng)。把問題域中的事物抽象為對象,作為系統(tǒng)的根本構成單位其屬性和操作刻畫了事物的靜態(tài)特征和動態(tài)特征——完整地刻畫了問題域中事物。用類作為對象的抽象描述,建立它們之間的繼承、聚合、關聯(lián)、消息等關系——如實地表達了問題域中事物之間的各種關系。封裝、繼承、聚合、關聯(lián)、消息通訊等原那么符合人類的日常思維——使系統(tǒng)的復雜性得到控制。因此,得到的系統(tǒng)模型可以直接映射問題域。2/2/202452不同的建模方法表達于從不同的概念出發(fā)來認識問題域用不同的概念進行系統(tǒng)構造系統(tǒng)對現實世界的不同映射信息建模法面向對象方法功能/子功能功能接口功能分解法數據流加工結構化方法間接映射間接映射半直接映射直接映射2/2/202453不同的方法對同一應用實例〔安裝業(yè)務系統(tǒng)〕的不同效果結構化分析——數據流和加工問題:不是直接映射問題域,與問題域事物相關的數據和操作不是圍繞這些事物來組織的,而是分散在數據流和加工中;經常發(fā)生信息膨脹——模型中的多個數據流,實現中其實只是一項數據;分析模型難以與設計模型及源程序對應。審批登記安裝開通用戶登記表用戶登記表用戶登記表用戶登記表文件用戶信息2/2/202454面向對象方法——對象及其關系用戶登記表用戶名登記人審批人施工隊號碼登記審批安裝開通用戶營業(yè)員主管人施工隊機房1*1*1*?call??call??call??call?個人用戶團體用戶帳單帳單項1*1*?call?直接映射了問題域中的實際事物;能夠與程序形成良好的對應。2/2/202455什么是OOA顧名思義,面向對象的分析〔OOA〕,就是運用面向對象方法進行系統(tǒng)分析。首先,OOA是分析,是軟件生存周期的一個階段,具有一般分析方法共同具有的內容、目標及策略;但是,它強調運用面向對象方法進行分析,用面向對象的概念和表示法表達分析結果。2/2/202456根本任務:運用面向對象的概念對問題域進行分析和理解,將問題域中與系統(tǒng)責任有關的事物抽象為系統(tǒng)中的類和對象,定義這些類和對象的屬性與操作,以及它們之間所形成的各種關系。最終目標:建立一個滿足用戶需求、直接映射問題域的OOA模型及其規(guī)約。問題:OOA是需求分析還是系統(tǒng)分析?2/2/202457什么是OOD不同時期有不同內容及特點早期〔80年代末期之前〕OOD的特點:不是基于OOA的大多基于結構化分析結果〔數據流圖〕是OO編程方法的延伸多數方法與編程語言有關,特別受Ada影響很大不是純OO的對某些OO概念〔如繼承〕缺少支持,攙雜一些非OO概念〔如數據流、包、模塊等〕不是只針對軟件生存周期的設計階段OOD中的“D〞——指的是Design或Development多少涉及分析問題〔如識別問題域的對象〕,但很不徹底——早期的OOD可看作現今OOA&OOD方法的雛形2/2/202458現今〔90年代以后〕OOD的特點:以面向對象的分析為根底,一般不依賴結構化分析。與相應的OOA方法共同構成一種OOA&OOD方法體系。OOA和OOD采用一致的概念與原那么,但屬于軟件生存周期的不同階段,有不同的目標及策略。較全面地表達面向對象方法的概念與原那么。大多數方法獨立于編程語言,通過面向對象的分析與設計所得到的系統(tǒng)模型可以由不同的編程語言實現。2/2/202459定義:面向對象的設計〔OOD〕就在是OOA模型根底上運用面向對象方法進行系統(tǒng)設計,目標是產生一個符合具體實現條件的OOD模型。2/2/202460OO方法的主要優(yōu)點軟件建模面臨的挑戰(zhàn)問題域和系統(tǒng)責任復雜性日益增長問題域〔problemdomain〕:被開發(fā)系統(tǒng)的應用領域,即在現實世界中由這個系統(tǒng)進行處理的業(yè)務范圍。系統(tǒng)責任〔systemresponsibilities〕:所開發(fā)的系統(tǒng)應該具備的職能。隨著硬件性能的提高和價格的下降,軟件系統(tǒng)所面臨的問題域和系統(tǒng)責任越來越復雜,因此系統(tǒng)也越來越龐大。交流問題軟件系統(tǒng)的開發(fā)需要各類人員之間頻繁交流。領域的多樣性使軟件工程中的交流問題比與其他工程更為突出。有效的交流需要一種彼此都能理解的共同語言,否那么將使彼此的思想難以溝通,很容易隱藏下許多錯誤。2/2/202461需求的不斷變化用戶因素,競爭因素,經費因素……開發(fā)者必須接受和適應需求變化軟件復用的要求復用級別提高——分析結果復用要求分析模型的根本成分可以在多個系統(tǒng)中復用要求一個分析模型可以在多種條件下設計和實現易變局部和穩(wěn)定局部:功能:最易變外部接口:很易變屬性:較易變對象:較穩(wěn)定需求變化系統(tǒng)局部修改受影響局部修改產生新錯誤延長開發(fā)時間2/2/202462面向對象方法的優(yōu)勢對問題域和系統(tǒng)責任的復雜性具有較強的處理能力從問題域中的實際事物出發(fā)來構造系統(tǒng)模型,使系統(tǒng)模型能直接地映射問題域;繼承、封裝、聚合等概念使系統(tǒng)的復雜性得到有效的控制。提供了便于各類相關人員交流共同語言使用與問題域一致的概念及術語,表達人類的日常思維方式,為改進各類人員之間的交流提供了最根本的條件。對需求的變化具有較強的適應性按封裝原那么把系統(tǒng)中最容易變化的因素隔離起來,系統(tǒng)的各個單元成分之間接口很少,把需求變化所引起的影響局部化。為實現分析與設計級別的軟件復用提供了有力支持OO方法的封裝、繼承、聚合等原那么,對象的完整性、獨立性以及與問題域的良好對應,使之非常有利于軟件復用。貫穿軟件生存周期全過程的一致性從OOA開始使用與問題域一致的概念、詞匯、原那么及表示法,這種一致性保持到設計、編程、測試、維護等各個階段,對于整個軟件生存周期的開發(fā)、維護及管理活動都具有重要的意義。2/2/202463幾種典型的OO方法Booch方法Coad-Yourdon方法Firesmith方法Jacobson方法(OOSE)Martin-Odell方法Rumbaugh方法(OMT)Seidewitz-Stark方法Shlaer-Mellor方法Wirfs-Brock方法……方法的異同表達于:概念表示法系統(tǒng)模型開發(fā)過程可用性技術支持2/2/202464Booch方法必要時使用用于分析和設計6種模型圖根本圖通常不可缺少類圖對象圖模塊圖進程圖只用于設計補充圖狀態(tài)轉移圖交互圖模型圖2/2/202465Booch方法〔續(xù)〕開發(fā)期望行為模型(分析〕建立體系結構(設計)逐漸形成實現(演化)建立核心需求(概念化)(a)宏過程識別類和對象識別類和對象的語義識別類和對象的關系說明類和對象的接口和實現(b)微過程管理交付后的演化(維護〕特點:思想活潑,開拓與創(chuàng)新可操作性不夠強類圖與對象圖并存過程2/2/202466Coad/Yourdon方法主題層類及對象層結構層屬性層效勞層OOA模型的5個層次主題層類及對象層結構層屬性層效勞層人機交互局部〔HIC〕問題域局部〔PDC〕任務管理局部〔TMC〕數據管理局部〔DMC〕OOD模型的5個層次和4個局部特點:概念簡練,過程清晰強調概念的一致性過程指導不夠具體2/2/202467Jacobson方法實體對象界面對象控制對象三種對象行為表示信息三維的分析模型四維的設計模型實現環(huán)境需求說明需求分析健壯分析需求模型分析模型需求模型設計實現設計模型實現模型分析模型需求模型單元測試組裝測試實現模型設計模型系統(tǒng)測試測試模型分析過程構造過程測試過程特點:通過用況描述用戶需求用交互圖描述對象之間的交互用況驅動的觀點言之有過2/2/202468Rumbaugh方法三個模型功能模型對象模型模型動態(tài)過程:分析〔面向對象〕系統(tǒng)設計〔傳統(tǒng)方法〕對象設計〔面向對象〕實現特點:概念嚴謹,闡述清楚過程具體,可操作性強包含了許多非OO的內容提出假設干擴充概念,偏于復雜2/2/202469第3章統(tǒng)一建模語言UML簡介2/2/202470內容UML的背景與開展歷史UML1概況UML2概況主要組成局部元模型體系結構具體元類和抽象元類各種圖和擴展機制UML2的四個標準圖的增加和主要變化2/2/202471誕生背景面向對象方法種類繁多1989年約10種,1994年到達50種以上概念、表示法、過程策略及文檔組織等方面的差異使用戶在選擇建模方法和工具時無所適從不利于技術交流迫切需要OO概念及表示法走向統(tǒng)一和標準化統(tǒng)一建模語言UML應運而生2/2/202472開展歷史第一階段:OO方法學家的聯(lián)合行動1995.10:G.Booch與J.Rumbaugh聯(lián)合推出UnifiedMethod0.81996.6:I.Jacobson參加推出UML0.9〔UnifiedModelingLanguage〕第二階段:公司的聯(lián)合行動1996:成立了UML伙伴組織,12家公司參加1997.1:推出UML1.0,另外5家公司加盟1997.9:形成UML1.1,提交OMG作為建模語言標準提案1997.11:UML1.1被OMG正式采納不再稱“方法〞而改稱“建模語言〞2/2/202473第三階段:OMG主持下的修訂1997~2002:OMG成立UML修訂任務組主持UML的修訂先后產生UML1.2、UML1.3、UML1.4、UML1.5等版本第四階段:UML的重大修訂——UML21999:開始醞釀,旨在產生比UML1有顯著改進的新版本2000~2001:由OMG陸續(xù)發(fā)布了4個提案需求〔RFP〕征集提案,擇優(yōu)采納2002年之后先后形成4個UML2.0標準在OMG的組織下繼續(xù)修訂和改進,目前最新的版本是UML1.3和UML1.4是兩個最重要的修訂版本2/2/202474UML是什么不是什么是一種建模語言,不是一種建模方法“Rational統(tǒng)一過程〞不是UML的一局部用于建立系統(tǒng)的分析模型和設計模型,而不是用于編程是一種已被OMG采納的建模語言標準〔specification〕正式場合一般不稱作“標準〞〔standard〕局部地采用了形式化語言的定義方式,但并不嚴格不是一種形式化語言,不能編譯執(zhí)行或解釋執(zhí)行“統(tǒng)一建模語言〔UML〕是一種用來對軟件密集型系統(tǒng)制品進行可視化、詳述、構造和建檔的圖形語言,也可用于業(yè)務建模以及其它非軟件系統(tǒng)。〞2/2/202475內容UML的背景與開展歷史UML1概況UML2概況主要組成局部元模型體系結構具體元類和抽象元類各種圖和擴展機制UML2的四個標準圖的增加和主要變化2/2/202476UML1標準的主要構成局部UML概要〔UMLSummary〕對UML做概括介紹,包括其構成、動機、目標、范圍、特點、歷史、現狀以及對未來演化的建議UML語義〔UMLSemantics〕定義UML的語法和語義,是定義UML語言的根本文件UML表示法指南〔UMLNotationGuide〕定義UML的各種模型圖給出各種圖中建模元素的可視化表示法2/2/202477UML外廓范例〔UMLExampleProfiles〕用于軟件開發(fā)過程的UML外廓用于業(yè)務建模的UML外廓UML模型交換〔UMLModelInterchange〕規(guī)定了建模工具在實現各種UML模型時需要共同遵守的語言約定,使來自不同廠商的建模工具能夠彼此交換和處理各自開發(fā)的系統(tǒng)模型對象約束語言OCL〔ObjectConstraintLanguage〕定義了一種對象約束語言,用來描述模型中關于對象的附加約束,是一種形式化的語言2/2/202478定義建模語言的語言元-元模型層應用領域中的事物用戶對象層應用系統(tǒng)的抽象描述系統(tǒng)模型層抽象描述模型的語言元模型層抽象實例化抽象實例化實例化元-元模型〔meta-metamodel〕:元模型的根底體系結構,定義一種說明元模型的語言。例如:MOF元模型〔metamodel〕:元-元模型的一個實例,定義一種說明模型的語言例如:UML模型〔model〕:元模型的一個實例,定義一種語言來描述信息領域。例如:教學管理系統(tǒng)——教室類、學生類、課程類用戶對象〔userobject〕:模型的一個實例,定義一個特定的信息領域。例如:一個學校——某老師,某學生,某課程OMG的四層元模型體系結構2/2/202479抽象元類和具體元類類類型接口構件結點關聯(lián)泛化依賴類目關系可泛化元素模型元素元素具體元類抽象元類〔classifier〕2/2/202480UML1的9種模型圖靜態(tài)結構圖〔StaticStructureDiagram〕類圖〔ClassDiagram〕對象圖〔ObjectDiagram〕用況圖〔UseCaseDiagram〕交互圖〔InteractionDiagram〕順序圖〔SequenceDiagram〕協(xié)作圖〔CollaborationDiagram〕狀態(tài)圖〔StatechartDiagrams〕活動圖〔ActivityDiagrams〕實現圖〔ImplementationDiagrams〕構件圖〔ComponentDiagram〕部署圖〔DeploymentDiagram〕九種圖支持用戶從不同的視角進行系統(tǒng)建模2/2/202481元模型中的實例級概念引起

體系結構層次的混亂關聯(lián)類對象鏈教師:史密斯課程:計算概論教師:瑪麗課程:圖論*1課程教師2/2/202482約束〔constraint〕用于說明某些必須保持為真的命題。注釋〔comment〕對模型元素的細節(jié)所進行的解釋。標記值〔TaggedValue〕表示模型元素的附加的特征。衍型/構造型〔stereotype〕附加到其他模型元素之上,從而將原有的建模元素定制成一種語義較為特殊的新變種。衍型的表示法和例子?active?類名類名?界面?類名+關鍵詞或圖標=擴展機制:附加到其他模型元素之上以,將原有的建模元素特化成一種語義較特殊的新變種,或者表示出它們的某些細節(jié)。2/2/202483內容UML的背景與開展歷史UML1概況UML2概況主要組成局部元模型體系結構具體元類和抽象元類各種圖和擴展機制UML2的四個標準圖的增加和主要變化2/2/202484UML2的四個標準UML基礎結構Infrastructure定義一個可復用的元語言核心,用來定義各種元模型,包括UML、MOF和CWM等元模型UML上層結構Superstructure提供可直接用來構造用戶系統(tǒng)的各種模型元素,以及從不同的視角對系統(tǒng)進行建模的各種模型圖UML圖交換DiagramInterchange給出在不同的建模工具之間實現模型交換的規(guī)范UML對象約束語言UMLOCL一個形式化的語言,描述模型約束信息2/2/202485UML2的13種模型圖圖結構圖行為圖交互圖類圖構件圖對象圖活動圖用況圖狀態(tài)機圖部署圖順序圖通訊圖組合結構圖包圖交互概覽圖定時圖支持用戶從不同的視角進行系統(tǒng)建模2/2/202486UML與UML2的各種圖的對照UML1的圖UML2的圖詳見結構圖類圖classdiagram類圖classdiagram第6章~第8章對象圖objectdiagram對象圖objectdiagram第9章9.7.1節(jié)構件圖componentdiagram構件圖componentdiagram第9章9.6節(jié)部署圖deploymentdiagram部署圖deploymentdiagram第9章9.7.6節(jié)包圖packagediagram第9章9.2節(jié)組合結構圖compositestructurediagram第9章9.7.2節(jié)行為圖用況圖usecasediagram用況圖usecasediagram第5章5.5節(jié)狀態(tài)圖statechartdiagram狀態(tài)機圖statemachinediagram第9章9.5節(jié)活動圖activitydiagrams活動圖activitydiagrams第9章9.4節(jié)順序圖sequencediagram順序圖sequencediagram第9章9.3節(jié)協(xié)作圖collaborationdiagram通信圖communicationdiagram第9章9.7.3節(jié)交互概覽圖interactionoverviewdiagram第9章9.7.4節(jié)定時圖timingdiagram第9章9.7.5節(jié)2/2/202487學習建議重點掌握UML直接提供給應用模型開發(fā)者使用的建模元素,即“具體元類〞;熟練地掌握面向對象方法最根本的概念。在13種圖中,重點掌握類圖、用況圖、順序圖、活動圖狀態(tài)機圖、構件圖。著眼于實際應用,從UML的復雜性中解放出來。切記:UML只是一種建模語言,不是建模方法。它不包括過程,而且是獨立于過程的。根據本單位的實際情況選擇適當的過程。動手實踐,使用工具;選擇適宜的工程開始實際應用。2/2/202488第4章OOA&OOD方法概貌2/2/202489內容引言主要概念模型及其規(guī)約建模過程OOA與OOD的關系從MDA看OOA與OOD的關系2/2/202490引言充分運用面向對象方法的根本概念,限制擴充概念以往某些OO方法提出了許多擴充概念,問題是:使方法復雜化——增加學習難度和工程開銷缺乏編程語言支持——造成模型與源程序不一致加強過程指導給出運用最根本的OO概念自然而有效地解決建模問題的策略,包括那些在其他方法中采用擴充概念解決的問題強調在類的抽象層次上建立系統(tǒng)模型所有對象的屬性和操作以及對象之間的關系,都通過它們的類來描述,而不是針對個別對象實例進行描述……2/2/202491內容引言主要概念模型及其規(guī)約建模過程OOA與OOD的關系從MDA看OOA與OOD的關系2/2/202492主要概念面向對象的概念包括以下兩種情況用來構成系統(tǒng)模型的某種根本成分,稱為建模元素在建模中需要遵守的某種原那么,不代表任何模型成分主要建模元素對象、類〔所有的對象都通過類來表示〕屬性、操作〔類屬性和實例屬性,被動操作和主動操作〕一般-特殊關系,一般-特殊結構整體-局部關系,整體-局部結構關聯(lián)〔二元關聯(lián)、多元關聯(lián)〕消息〔控制流內部的消息,控制流之間的消息〕2/2/202493主要原那么抽象什么叫抽象?〔回憶定義〕OO方法廣泛地運用抽象原那么,例如:系統(tǒng)中的對象是對現實世界中事物的抽象類是對象的抽象一般類是對特殊類的進一步抽象屬性是事物靜態(tài)特征的抽象操作是事物動態(tài)特征的抽象過程抽象任何一個完成確定功能的操作序列,其使用者都可把它看作一個單一的實體,盡管實際上它可能是由一系列更低級的操作完成的。數據抽象根據施加于數據之上的操作來定義數據類型,并限定數據的值只能由這些操作來修改和觀察。2/2/202494分類分類就是把具有相同屬性和操作的對象劃分為一類,用類作為這些對象的抽象描述不同程度的抽象可得到不同層次的類,形成一般-特殊結構〔又稱分類結構〕強調:在類的抽象層次上建模封裝繼承聚合關聯(lián)消息通信即要求對象之間只能通過消息進行通訊,而不允許在對象之外直接地存取對象內部的屬性。2/2/202495粒度控制人們在研究問題時既需要微觀的思考,也需要宏觀的思考。因此需要控制自己的視野:考慮全局時,注重其大的組成局部,暫時不詳察每一局部的具體的細節(jié);考慮某局部的細節(jié)時那么暫時撇開其余的局部。這就是粒度控制原那么引入包〔package〕的概念,把模型中的類按一定的規(guī)那么進行組合,形成一些包,使模型具有大小不同的粒度層次,從而有利于人們對復雜性的控制2/2/202496行為分析以對象為單位描述系統(tǒng)中的各種行為任何行為都歸屬于某個對象,用對象的操作表示對象的操作只作用于對象自身的屬性通過消息描述對象之間的行為依賴關系如果一個對象操作的執(zhí)行需要另一個對象為它提供效勞,那么在模型中表現為前者向后者發(fā)送消息認識行為的起因,區(qū)分主動行為和被動行為用主動對象的主動操作描述主動行為用對象的被動操作描述被動行為認識系統(tǒng)的并發(fā)行為在分析階段根據,根據系統(tǒng)的需求和事物的主動性來認識系統(tǒng)的并發(fā)行為。在設計階段,根據具體的實現條件確定系統(tǒng)中需要設計哪些控制流2/2/202497內容引言主要概念模型及其規(guī)約建模過程OOA與OOD的關系從MDA看OOA與OOD的關系2/2/202498模型及其規(guī)約在分析階段和設計階段建立的系統(tǒng)模型分別稱為OOA模型和OOD模型正規(guī)理解:一個系統(tǒng)模型,應包括建模過程中產生的圖形、文字等各種形式的文檔。因為,所謂“模型〞是指某一級別上的系統(tǒng)抽象描述,構成這種描述的任何資料都是模型的一局部。習慣說法:目前大局部OOA/OOD著作談到“模型〞,一般是指OOA或OOD過程中產生的圖形文檔。2/2/202499本課程采用習慣說法——將模型和模型規(guī)約分別討論OOA和OOD模型包括需求模型、根本模型和輔助模型,通過模型規(guī)約做詳細說明根本模型——類圖面向對象的建模中最重要、最根本的模型圖集中而完整地表達了面向對象的概念為面向對象的編程提供了直接、可靠的依據可以從三個層次來看:2/2/2024100需求模型——用況圖每個用況是一項系統(tǒng)功能使用情況的說明,把每一類參與者對每一項系統(tǒng)功能的使用情況確切地描述出來,便全面地定義了系統(tǒng)的功能需求對象層特征層關系層輔助模型——其他各種圖對類圖起到輔助作用,提供更詳細的建模信息,或者從不同的視角來描述系統(tǒng)。例如包圖、順序圖、活動圖等模型規(guī)約對上述各種模型圖及其模型元素的詳細而確切的定義和解釋2/2/2024101OOA模型框架根本模型:類圖模型規(guī)約需求模型:用況圖輔助模型:包圖順序圖活動圖……對象層特征層關系層2/2/2024102OOD模型框架——從兩個側面來描述人機交互部分數據接口部分控制驅動部分問題域部分從一個側面看:OOD模型包括幾個主要部分?一個核心加三個外圍需求模型輔助模型類圖模型規(guī)約從另一側面看:OOD模型每個部分如何用OO概念表達?采用與OOA相同的概念及模型組織方式2/2/2024103內容引言主要概念模型及其規(guī)約建模過程OOA與OOD的關系從MDA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論