UML參考手冊(cè).doc
《UML參考手冊(cè).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《UML參考手冊(cè).doc(364頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 UML參考手冊(cè) 目錄 譯者序 i 前言 iv 第一部分 背景知識(shí) 1 第 1 章 UML綜述 1 1.1 UML簡(jiǎn)介 1 1.2 UML 的歷史 1 1.2.1 面向?qū)ο蟮拈_發(fā)方法 1 1.2.2 統(tǒng)一工作 2 1.2.3 標(biāo)準(zhǔn)化 3 1.2.4 核心組員 3 1.2.5 統(tǒng)一的意義 3 1.3 UML的目標(biāo) 4 1.4 UML概念域 5 1.5 表達(dá)式和圖表語法 6 第 2 章 模型的性質(zhì)與目標(biāo) 7 2.1 什么是模型 7 2.2 模型的用途 7
2、2.3 模型的層次 8 2.4 模型內(nèi)容 10 2.5 模型說明了什么? 11 第二部分 基本概念 13 第 3 章 UML初覽 14 3.1 UML視圖 14 3.2 靜態(tài)視圖 15 3.3 用例視圖 16 3.4 交互視圖 17 3.4.1 順序圖 17 3.4.2 協(xié)作圖 18 3.5 狀態(tài)機(jī)視圖 19 3.6 活動(dòng)視圖 20 3.7 物理視圖 21 3.8 模型管理視圖 24 3.9 擴(kuò)展組件 25 3.10 各種視圖間的關(guān)系 26 第 4 章 靜態(tài)視圖 27 4.1 概述 27 4.2 類元 27 4.3 關(guān)系 29 4.4 關(guān)聯(lián) 30 4
3、.5 泛化 33 4.5.1 繼承 34 4.5.2 多重繼承 34 4.5.3 單分類和多重分類 35 4.5.4 靜態(tài)與動(dòng)態(tài)類元 35 4.6 實(shí)現(xiàn) 36 4.7 依賴 37 4.8 約束 38 4.9 實(shí)例 39 4.10 對(duì)象圖 39 第 5 章 用例視圖 41 5.1 概述 41 5.2 參與者 41 5.3 用例 42 第 6 章 狀態(tài)機(jī)視圖 44 6.1 概述 44 6.2 狀態(tài)機(jī) 44 6.3 事件 44 6.4 狀態(tài) 46 6.5 轉(zhuǎn)換 47 6.6 組成狀態(tài) 50 第 7 章 活動(dòng)視圖 55 7.1 概述 55 7.2 活動(dòng)圖
4、55 7.3 活動(dòng)和其他圖 57 第 8 章 交互視圖 58 8.1 概述 58 8.2 協(xié)作 58 8.3 交互 58 8.4 順序圖 59 8.5 激活 59 8.6 合作圖 60 8.7 模板 62 第 9 章 物理視圖 64 9.1 概述 64 9.2 構(gòu)件 64 9.3 節(jié)點(diǎn) 65 第 10 章 模型管理視圖 66 10.1 概述 66 10.2 包 66 10.3 包間的依賴關(guān)系 66 10.4 訪問與引入依賴關(guān)系 67 10.5 模型和子系統(tǒng) 67 第 11 章 擴(kuò)展機(jī)制 69 11.1 概述 69 11.2 約束 69 11.3 標(biāo)
5、簽值 70 11.4 構(gòu)造型 71 11.5 裁制UML 72 第 12 章 UML環(huán)境 73 12.1 概述 73 12.2 語義職責(zé) 73 12.3 表示法職責(zé) 74 12.4 程序語言職責(zé) 74 12.5 使用建模工具建模 75 12.5.1 工具問題 75 12.5.2 工作進(jìn)展過程中產(chǎn)生的不一致模型 75 12.5.3 空值和未詳細(xì)說明的值 75 第三部分 參考資料 77 第 13 章 術(shù)語大全 78 第 14 章 標(biāo)準(zhǔn)元素 334 第四部分 附錄 343 附錄 UML元模型 344 索引 347 譯者序 隨著計(jì)算機(jī)硬件性能的不斷提高和價(jià)格
6、的不斷下降,其應(yīng)用領(lǐng)域也在不斷擴(kuò)大。人們?cè)谠絹碓蕉嗟念I(lǐng)域希望把更多、更難的問題交給計(jì)算機(jī)去解決。這使得計(jì)算機(jī)軟件的規(guī)模和復(fù)雜性與日俱增,從而使軟件技術(shù)不斷地受到新的挑戰(zhàn)。60年代軟件危機(jī)的出現(xiàn)就是因?yàn)橄到y(tǒng)的復(fù)雜性超出了人們?cè)诋?dāng)時(shí)的技術(shù)條件下所能駕御的程度。此后在軟件領(lǐng)域,從學(xué)術(shù)界到工業(yè)界,人們一直在為尋求更先進(jìn)的軟件方法與技術(shù)而奮斗。每當(dāng)出現(xiàn)一種先進(jìn)的方法與技術(shù),都會(huì)使軟件危機(jī)得到一定程度的緩和。然而這種進(jìn)步又立刻促使人們把更多、更復(fù)雜的問題交給計(jì)算機(jī)去解決。于是又需要更先進(jìn)的方法與技術(shù)。 開發(fā)一個(gè)具有一定規(guī)模和復(fù)雜性的軟件系統(tǒng)和編寫一個(gè)簡(jiǎn)單的程序大不一樣。其間的差別,借用G. Booch的
7、比喻,如同建造一座大廈和搭一個(gè)狗窩的差別。大型的、復(fù)雜的軟件系統(tǒng)的開發(fā)是一項(xiàng)工程,必須按工程學(xué)的方法組織軟件的生產(chǎn)與管理,必須經(jīng)過分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、維護(hù)等一系列的軟件生命周期階段。這是人們從軟件危機(jī)中獲得的最重要的教益。這一認(rèn)識(shí)促使了軟件工程學(xué)的誕生。編程仍然是重要的,但是更具有決定意義的是系統(tǒng)建模。只有在分析和設(shè)計(jì)階段建立了良好的系統(tǒng)模型,才有可能保證工程的正確實(shí)施。正是由于這一原因,許多在編程領(lǐng)域首先出現(xiàn)的新方法和新技術(shù),總是很快地被拓展到軟件生命周期的分析與設(shè)計(jì)階段。 面向?qū)ο蠓椒ㄕ墙?jīng)歷了這樣的發(fā)展過程,它首先在編程領(lǐng)域興起,作為一種嶄新的程序設(shè)計(jì)范型引起世人矚目。繼Small
8、talk-80之后,20世紀(jì)80年代又有一大批面向?qū)ο蟮木幊陶Z言問世,標(biāo)志著面向?qū)ο蠓椒ㄗ呦虺墒旌蛯?shí)用。此時(shí),面向?qū)ο蠓椒ㄩ_始向系統(tǒng)設(shè)計(jì)階段延伸,出現(xiàn)了如Booch86、GOOD(通用面向?qū)ο蟮拈_發(fā))、HOOD(層次式面向?qū)ο蟮脑O(shè)計(jì))、OOSD(面向?qū)ο蟮慕Y(jié)構(gòu)設(shè)計(jì))等一批OOD(“面向?qū)ο蟮脑O(shè)計(jì)”或“面向?qū)ο蟮拈_發(fā)”的縮寫)方法。但是這些早期的OOD方法不是以面向?qū)ο蟮姆治觯∣OA)為基礎(chǔ)的,而主要是基于結(jié)構(gòu)化分析。到1989年之后,面向?qū)ο蠓椒ǖ难芯恐攸c(diǎn)開始轉(zhuǎn)向軟件生命周期的分析階段,并將OOA和OOD密切地聯(lián)系在一起,出現(xiàn)了一大批面向?qū)ο蟮姆治雠c設(shè)計(jì)(OOA&D)方法,如Booch方法、
9、Coad/Yourdon方法、 Firesmith方法、Jacobson的OOSE、 Martin/Odell方法、 Rumbaugh等人的OMT、 Shlaer/Mellor方法等等。截至1994年,公開發(fā)表并具有一定影響的OOA & D方法已達(dá)50余種。這種繁榮的局面表明面向?qū)ο蠓椒ㄒ呀?jīng)深入到分析與設(shè)計(jì)領(lǐng)域,并隨著面向?qū)ο蟮臏y(cè)試、集成與演化技術(shù)的出現(xiàn)而發(fā)展為一套貫穿整個(gè)軟件生命周期的方法體系。目前,大多數(shù)較先進(jìn)的軟件開發(fā)組織已經(jīng)從分析、設(shè)計(jì)到編程、測(cè)試階段全面地采用面向?qū)ο蠓椒?,使面向?qū)ο鬅o可置疑地成為當(dāng)前軟件領(lǐng)域的主流技術(shù)。 各種面向?qū)ο蟮姆治雠c設(shè)計(jì)方法都為面向?qū)ο罄碚撆c技術(shù)的發(fā)展作出
10、了貢獻(xiàn)。這些方法各有自己的優(yōu)點(diǎn)和缺點(diǎn),同時(shí)在各自不同范圍內(nèi)擁有自己的用戶群。各種方法的主導(dǎo)思想以及所采用的主要概念與原則大體上是一致的,但是也存在不少差異。這些差異所帶來的問題是,不利于面向?qū)ο蠓椒ㄏ蛞恢碌姆较虬l(fā)展,也會(huì)給用戶的選擇帶來一些困惑。為此,Rational公司的G. Booch和J. Rumbaugh決定將他們各自的方法結(jié)合起來成為一種方法。1995年10月發(fā)布了第1個(gè)版本,稱作“統(tǒng)一方法”(Unified Method 0.8)。此時(shí)OOSE的作者I. Jacobson也加入了Rational公司,于是也加入了統(tǒng)一行動(dòng)。1996年6月發(fā)布了第2個(gè)版本UML0.9。鑒于統(tǒng)一行動(dòng)的產(chǎn)
11、物只是一種建模語言,而不是一種建模方法,(因?yàn)椴话^程指導(dǎo)),所以自0.9版起,改稱“統(tǒng)一建模語言”(Unified Modeling Language)。在此過程中,由Rationl公司發(fā)起成立了UML伙伴組織。開始時(shí)有12家公司加入,共同推出了UML1.0版,并于1997年1月提交到對(duì)象管理組織(OMG)申請(qǐng)作為一種標(biāo)準(zhǔn)建模語言。此后,又把其他幾家分頭向OMG提交建模語言提案的公司擴(kuò)大到UML伙伴組織中,并為反映他們的意見而對(duì)UML進(jìn)一步做了修改,產(chǎn)生了UML1.1版。該版本于1997年11月4日被OMG采納。此后UML還在繼續(xù)改進(jìn),目前最新的版本是UML1.3。 關(guān)于UML的歷史、發(fā)
12、起的動(dòng)機(jī)、目標(biāo)、權(quán)衡的問題等,這里不想做更多的介紹,因?yàn)樽x者很快會(huì)從《UML用戶指南》的前言中看到更詳細(xì)的敘述。這里想著重指出的是以下三點(diǎn):第一點(diǎn)是UML的三位發(fā)起人G. Booch、J. Rumbaugh和I. Jacobson是從事面向?qū)ο笱芯康闹麑<?,他們各自的方法和著作在該領(lǐng)域均具有很大的影響;第二點(diǎn)是眾多的大公司加入了UML陣營,為UML的制定和推廣提供了強(qiáng)有力的支持;第三點(diǎn)是UML經(jīng)過數(shù)年的努力終于被OMG采納,成為該組織承認(rèn)的一種標(biāo)準(zhǔn)建模語言??傊琔ML是吸收多種方法的成果、凝結(jié)許多組織和個(gè)人智慧的產(chǎn)物。 UML是一種用于對(duì)軟件密集型系統(tǒng)進(jìn)行可視化、詳述、構(gòu)造和文檔化的建模
13、語言,主要適用于分析與設(shè)計(jì)階段的系統(tǒng)建模。UML最主要的特點(diǎn)是表達(dá)能力豐富。因?yàn)樗鼜母鞣NOOA&D方法中吸取了大量的概念,并在“UML語義”、“UML表示法指南”、“對(duì)象約束語言規(guī)約”等UML文獻(xiàn)中對(duì)這些概念的語義、圖形表示法和使用規(guī)則作了完整而詳細(xì)的定義??梢哉f,UML對(duì)系統(tǒng)模型的表達(dá)能力超出了以往任何一種OOA&D方法。當(dāng)然,隨之而來的問題是,它的復(fù)雜性也超出了以往任何一種方法。 UML的問世引起了計(jì)算機(jī)軟件界的廣泛重視,因?yàn)樗砹艘环N積極的方向—多種方法相互借鑒、相互融合、趨于一致、走向標(biāo)準(zhǔn)化。建模語言的標(biāo)準(zhǔn)化將為軟件開發(fā)商及其用戶帶來諸多便利。因此,在美國等國家已有大量的軟件開發(fā)組
14、織開始用UML進(jìn)行系統(tǒng)建模。學(xué)習(xí)和使用UML已經(jīng)成為一種潮流。我國軟件界對(duì)UML也相當(dāng)關(guān)注。許多研究人員和技術(shù)人員已在數(shù)年前開始學(xué)習(xí)和研究UML。更有許多人想學(xué)習(xí)UML,但苦于找不到合適的書籍。由于UML的復(fù)雜性,僅通過UML的標(biāo)準(zhǔn)文獻(xiàn)來學(xué)習(xí)和使用它確實(shí)不是一件輕松的事。以往國內(nèi)外也曾發(fā)表過一些介紹或評(píng)述UML的著作或論文,但是與UML的豐富內(nèi)容相比,這些介紹遠(yuǎn)不能滿足讀者的要求。 值得高興的是,UML的三位主要設(shè)計(jì)者G. Booch、J. Rumbaugh和I. Jacobson現(xiàn)在已親自撰寫了這套詳細(xì)闡述UML的著作,由Addison Wesley公司于1999年出版。這套著作對(duì)UML進(jìn)
15、行了詳細(xì)、深入而準(zhǔn)確的介紹和論述,而且語言生動(dòng)、深入淺出、實(shí)例豐富、圖文并茂。這是一套教會(huì)讀者掌握和使用UML的教材和指導(dǎo)手冊(cè),而不是枯燥的標(biāo)準(zhǔn)文獻(xiàn)。對(duì)于想學(xué)習(xí)和使用UML的廣大讀者,這是一套難得的好書。為了使中國的讀者能夠更好地從中受益,我們?cè)跈C(jī)械工業(yè)出版社的懇切建議下,分頭翻譯了這三本書,即《UML用戶指南》、《UML參考手冊(cè)》和《統(tǒng)一軟件開發(fā)過程》。 三本原著都是由這三位作者合著,既各自獨(dú)立、又有很強(qiáng)的內(nèi)在聯(lián)系。其中《UML用戶指南》介紹了UML的基礎(chǔ)知識(shí),包括UML的術(shù)語、規(guī)則和語言特點(diǎn),以及如何運(yùn)用該語言去解決常見的建模問題,初學(xué)者學(xué)習(xí)UML最好從閱讀該書開始?!禪ML參考手冊(cè)》對(duì)
16、UML的組成和概念作了詳細(xì)的介紹,包括這些概念的語義、語法、表示法和用途,是一本適合軟件專業(yè)人員使用的方便而全面的參考讀物?!督y(tǒng)一軟件開發(fā)過程》給出了一種以UML作為建模語言進(jìn)行軟件開發(fā)的過程指導(dǎo)。其內(nèi)容不是UML固有的組成部分,因?yàn)楸籓MG采納的UML只是一種建模語言,并不包含過程指導(dǎo)。實(shí)際上,UML是獨(dú)立于過程的,可以用于不同的軟件過程。但是該書介紹的軟件開發(fā)過程是三位作者在開發(fā)UML時(shí)一直在頭腦中思考的,因此很切合UML的特點(diǎn)。該書對(duì)于如何運(yùn)用UML的概念進(jìn)行軟件開發(fā)提供了詳細(xì)指導(dǎo),適合軟件專業(yè)人員使用。 鑒于UML本身以及這套著作的重要意義,譯者在翻譯這些著作時(shí)采取了特別慎重和嚴(yán)謹(jǐn)?shù)?/p>
17、態(tài)度,力求準(zhǔn)確和通順。在翻譯過程中,一個(gè)重要問題是要使這套書中的專業(yè)術(shù)語的中文譯法保持一致。這三本書的譯者以往曾分別開展過一些與UML有關(guān)的研究和寫作,對(duì)有些術(shù)語的譯法互有差異。本次翻譯工作中,所有譯者在機(jī)械工業(yè)出版社的組織下進(jìn)行了多次討論、研究和交流,首先對(duì)所有專業(yè)術(shù)語的譯法統(tǒng)一意見,達(dá)成共識(shí)。其中某些術(shù)語的譯法頗難定奪:既要確切反映英文本意,又要符合中文習(xí)慣,還要避免與國內(nèi)已習(xí)慣于與其它英文詞對(duì)應(yīng)的中文相混淆。經(jīng)過反復(fù)切磋,大部分問題都得到滿意的解決。對(duì)個(gè)別有爭(zhēng)議的問題,在充分討論的基礎(chǔ)上采取放棄己見、服從大局的態(tài)度,從而形成了一個(gè)譯法一致的詞匯表。此后在翻譯過程中還經(jīng)常以各種交流方式進(jìn)行
18、磋商和勾通。最終使這套叢書能以一致的面貌呈獻(xiàn)給讀者。我們也希望這些工作能為UML術(shù)語今后在中文翻譯中的統(tǒng)一貢獻(xiàn)一份力量。 在科技著作的翻譯中,保證準(zhǔn)確和通順的關(guān)鍵因素不僅僅是外文水平,還取決于譯者真正了解所涉及的技術(shù)內(nèi)容。這套著作的內(nèi)容遠(yuǎn)遠(yuǎn)超出了UML的標(biāo)準(zhǔn)文獻(xiàn),因?yàn)槌私榻BUML的語法、語義、使用規(guī)則之外,其中還包含許多學(xué)術(shù)思想、技術(shù)策略和實(shí)踐經(jīng)驗(yàn)。在翻譯中遇到的許多疑難問題,我們是通過進(jìn)一步研究UML以及有關(guān)的學(xué)術(shù)和技術(shù)問題而得到解決的,從而避免了許多訛誤。因此,這套著作的翻譯不僅是文字方面的工作,還包含譯者在技術(shù)上的研究。我們希望這些研究最終通過較準(zhǔn)確的翻譯文字使讀者受益。同時(shí)誠懇地希
19、望廣大讀者對(duì)可能存在的疏漏和錯(cuò)誤之處給予批評(píng)和指正。 譯 者 2000年10月于北京 前言 目標(biāo) 本書是關(guān)于統(tǒng)一建模語言(UML, Unified Modeling Language)的一本全面實(shí)用的參考書,可供軟件開發(fā)人員,設(shè)計(jì)人員,項(xiàng)目管理員,系統(tǒng)工程師,程序設(shè)計(jì)人員,分析員,用戶以及研究、設(shè)計(jì)、開發(fā)和理解復(fù)雜軟件系統(tǒng)的技術(shù)人員參考。書中對(duì)UML的組成和概念做了詳細(xì)介紹,包括其語義、語法、表示法和用途。對(duì)廣大專業(yè)軟件開發(fā)人員來說,這是一本使用方便、內(nèi)容全面的參考讀物。此外,本書還討論了有關(guān)標(biāo)準(zhǔn)文獻(xiàn)沒有解釋清楚的細(xì)節(jié)問題和UML標(biāo)準(zhǔn)中一些結(jié)論的基本原理。 本書不是一本關(guān)于UM
20、L語言標(biāo)準(zhǔn)文獻(xiàn)和UML元模型內(nèi)部細(xì)節(jié)的指導(dǎo)手冊(cè)。對(duì)元模型的細(xì)節(jié)感興趣的是UML工具的開發(fā)者和研究開發(fā)方法的專家,一般的軟件開發(fā)人員無需了解對(duì)象管理組織(OMG, Object Management Group)制定的這些不易為人了解的細(xì)節(jié)。本書涵蓋了能夠滿足絕大部分軟件開發(fā)人員需要的細(xì)節(jié)內(nèi)容,對(duì)于某些源于原始標(biāo)準(zhǔn)的細(xì)節(jié),往往指明了其出處。 本書所附光盤收錄了一些原始標(biāo)準(zhǔn)文獻(xiàn),供讀者參考。 在閱讀本書之前,讀者應(yīng)具備有關(guān)面向?qū)ο蠹夹g(shù)的基本知識(shí)。為方便初學(xué)者,書后的參考文獻(xiàn)中列出了我們和其他作者早期的原作。雖然這些書中采用的某些表示法現(xiàn)在已有了變化,但是一些書中介紹的面向?qū)ο蟮母拍钊匀挥杏茫鏪
21、Rumbaugh-91]、[Booch-94]、[Jacobson-92]和[Meyer-88]等書,所以這里沒有必要重新討論這些基本概念。如果某些讀者要個(gè)別學(xué)習(xí)如何用UML對(duì)一般問題建立模型,可參考《UML 用戶指南》(即將由機(jī)械工業(yè)出版社出版)一書。那些已經(jīng)了解如OMT、Booch、Objectory、Coad-Yourdon、Fusion等面向?qū)ο蠓椒ǖ淖x者,完全能夠讀懂本書,并能夠掌握UML及其表示法和語義。若要快速學(xué)習(xí)UML,閱讀《UML 用戶指南》很有幫助。 使用UML并不局限于某一種專門的開發(fā)過程,本書也不針對(duì)某一種開發(fā)過程進(jìn)行討論和介紹。盡管UML可用于許多開發(fā)過程,但它最適
22、用于以一個(gè)健壯的構(gòu)架為中心的迭代的、增量的、用例驅(qū)動(dòng)的開發(fā)過程—我們認(rèn)為這是開發(fā)現(xiàn)代復(fù)雜軟件最適宜的開發(fā)過程。《統(tǒng)一軟件開發(fā)過程》(即將由機(jī)械工業(yè)出版社出版)[Jacobson-99]就描述了這樣一種開發(fā)過程,我們認(rèn)為這是對(duì)UML的補(bǔ)充和對(duì)軟件開發(fā)的最好支持。 本書概貌 本書分為三部分:對(duì)UML歷史和有關(guān)建模知識(shí)的概述;UML基本概念的綜述;UML術(shù)語和概念大全。 第一部分是UML綜述—UML的歷史、目標(biāo)及使用—幫助理解UML的來源和它能滿足的需求。 第二部分是UML視圖的簡(jiǎn)要概述,以便讀者能將概念與視圖聯(lián)系起來。該部分綜述了UML所支持的各種視圖,并說明各種構(gòu)件如何協(xié)同工作。該部分首
23、先介紹了一個(gè)用到了各種UML視圖的例子,接著分章介紹每一種視圖。概述的目的不是提供一個(gè)完整的教材或?qū)Ω鞣N概念進(jìn)行全面敘述,而主要是總結(jié)性地闡述UML 的各種概念,它是進(jìn)一步詳細(xì)閱讀本書中術(shù)語和概念大全的起點(diǎn)。 第三部分包括了各種參考信息,這些信息被組織成一個(gè)個(gè)相關(guān)主題以便于查找。本書的主體是一個(gè)按字母順序排列的所有UML概念和組件的大全。所有UML術(shù)語,不論重要與否,在大全中都有對(duì)應(yīng)條目,大全盡可能提供全面信息。因此,凡是第二部分提到的概念,在大全中都有更詳細(xì)的進(jìn)一步闡述。相同或相似的信息有時(shí)在大全中的許多條目中都予以列出,以便讀者查閱。 參考信息部分還包括了一個(gè)按字母順序排列的UML標(biāo)準(zhǔn)
24、元素列表。標(biāo)準(zhǔn)元素是使用UML擴(kuò)充機(jī)制預(yù)定義的一個(gè)特性。標(biāo)準(zhǔn)元素是UML的擴(kuò)展部分,相信應(yīng)該能得到廣泛使用。 附錄列出了UML的元模型、UML表示法小結(jié)和用于專門領(lǐng)域的標(biāo)準(zhǔn)擴(kuò)展集。附錄還給出了一個(gè)有關(guān)面向?qū)ο笾R(shí)的主要的參考文獻(xiàn),但不包含UML或其他方法的來源。參考文獻(xiàn)中所列的許多文獻(xiàn)都提及了一些優(yōu)秀的書籍和雜志文章,有興趣的讀者可據(jù)此進(jìn)一步研究這些方法和概念的形成和發(fā)展。 大全部分的格式約定 本書的大全部分是一個(gè)按字母表順序組織的條目表,每一條目都較為詳細(xì)地描述了一個(gè)概念。條目下所有的解釋性短文按照概念的不同層次組織。高層次概念通常包括其低層次概念的概括性說明,每一低層概念在一段單獨(dú)的
25、短文中有詳細(xì)解釋。各個(gè)短文中所闡述的概念彼此之間有復(fù)雜的相互參考關(guān)系。大全的這種組織形式使得每個(gè)概念在一致的層次中,避免了嵌套性的解釋說明來回查找?guī)淼穆闊?。高度格式化的編排也有利于相關(guān)概念的引用。閱讀本書時(shí),不必根據(jù)索引查找書中內(nèi)容,而可以直接到大全正文中查找有關(guān)概念和術(shù)語。但這種編排格式不適于學(xué)習(xí)UML語言。建議初學(xué)者首先閱讀本書第二部分或其他UML的介紹性讀物,如《UML 用戶指南》。 大全條目包含以下部分,但并不是所有條目都包含所有部分。 簡(jiǎn)要定義 概念名用黑體表示,緊接在概念名之后的簡(jiǎn)要定義用一般字體印刷。概念的定義力求抓住該概念的主旨,以簡(jiǎn)潔的表達(dá)方式描述,因此,
26、它只是一個(gè)簡(jiǎn)要定義。概念的精確涵義參考后面的主體解釋短文。 語義 該部分詳細(xì)解釋概念的含義,包括該概念使用和執(zhí)行順序上的約束。盡管某些例子要用到表示法,但該部分不包括表示法。首先給出概念的概括語義。對(duì)于具有從屬結(jié)構(gòu)特性的概念,在概括性語義說明后面的“結(jié)構(gòu)”子標(biāo)題下有一系列特性名。在大多數(shù)情況下,特性按特性名的字母表順序排列。如果某一特性還有更多的選擇項(xiàng),那么每一選擇項(xiàng)均縮排。在更復(fù)雜的情況下,特性專門用一段短文敘述,以避免嵌套過多引起混亂。有時(shí),對(duì)一個(gè)主要概念的說明分散在多個(gè)邏輯子項(xiàng)中而不是在一處。此時(shí),附加說明段接在“結(jié)構(gòu)”小節(jié)之后或替代了“結(jié)構(gòu)”小節(jié)。盡管在結(jié)構(gòu)編排上采取了多種
27、方式,但該結(jié)構(gòu)對(duì)讀者來說仍然很清晰。 表示法 本節(jié)對(duì)概念的表示法進(jìn)行詳細(xì)的描述。通常,表示法段與其參考的語義描述段平行,并且通常與語義描述段有相同的劃分。表示法段一般都有一個(gè)或多個(gè)圖表,用來說明有關(guān)概念。為了幫助讀者更好地理解表示法,許多圖表中用楷體表示注釋說明。所有用楷體表示的都是注釋說明,不是實(shí)際表示法的一部分。 示例 本小節(jié)展示如何使用表示法以及有關(guān)概念的運(yùn)用。這些例子一般都針對(duì)復(fù)雜的或容易產(chǎn)生混淆的情形來列舉。 討論 本節(jié)討論難以理解和把握的問題,澄清疑惑和容易混淆的要點(diǎn),并且包括一些其他方面的細(xì)節(jié)問題,這些細(xì)節(jié)問題有可能分散讀者對(duì)語義說明段的注意力
28、。只有一小部分的條目有討論段。 本節(jié)還解釋了在UML的開發(fā)過程中產(chǎn)生的設(shè)計(jì)結(jié)論,特別是有違直覺和容易引起激烈爭(zhēng)論的設(shè)計(jì)結(jié)論。 只有一小部分條目有這一節(jié)。討論一般不涉及風(fēng)格上的簡(jiǎn)單不同點(diǎn)。 標(biāo)準(zhǔn)元素 本節(jié)列出了標(biāo)準(zhǔn)約束、標(biāo)記、構(gòu)造型和其他約定,這些是預(yù)先規(guī)定好的。這一節(jié)很少出現(xiàn)。 語法約定 語法表達(dá)式。語法表達(dá)式是用Sans Serif 字體印刷的經(jīng)過修改的BNF范式。 標(biāo)點(diǎn)符號(hào)也出現(xiàn)在目標(biāo)字符串中。 文中的斜體表示能夠被目標(biāo)字符串中另一個(gè)字串或另一語法產(chǎn)生式替換的變量,可以包含字符和連字符。 在代碼示例中,注釋用楷體印刷在代碼右側(cè)。 下標(biāo)
29、或上劃線為語法操作,舉例如下: expression opt 這個(gè)表達(dá)式是任選的。 expression list, 用逗號(hào)來分隔一系列表達(dá)式。如果出現(xiàn)了零個(gè)或者一個(gè)重復(fù)符號(hào),則不需要分隔符。每個(gè)重復(fù)符號(hào)都要用一個(gè)單獨(dú)的替換符號(hào)。如果一個(gè)除逗號(hào)之外的標(biāo)點(diǎn)符號(hào)出現(xiàn)在下標(biāo)中,則它是分隔符。 =expression opt 用上劃線來連接兩個(gè)或多個(gè)屬于同一單元的可選的或重復(fù)出現(xiàn)的項(xiàng)目。在這個(gè)例子中,等號(hào)和表達(dá)式構(gòu)成一個(gè)可以使用或省略的單元。如果只有一個(gè)項(xiàng)目,可以不用上劃線。 不允許出現(xiàn)兩重嵌套。 字符串。在連續(xù)的文本中,關(guān)鍵字、模型元素名稱和模型中的字符串例用 Sans
30、Serif字體印刷。 圖表。在圖表中,楷體和箭頭是注釋,即,對(duì)圖中表示法的解釋不出現(xiàn)在實(shí)際圖表中。其他所有文字和符號(hào)都是實(shí)際的圖形表示法。 CD光盤 本書所附光盤以Adobe Reader(PDF)文件格式收錄了本書全文,讀者可以很容易地查到一個(gè)字或短語。本書CD 還包括一個(gè)可用鼠標(biāo)點(diǎn)擊操作的目錄表,表中包括書中文章的目錄、索引、Adobe Reader的一小部分以及各個(gè)條目主體部分的可擴(kuò)展熱鏈接。用鼠標(biāo)簡(jiǎn)單地點(diǎn)擊某一熱鏈接,即可跳到大全中對(duì)應(yīng)該字或短語條目的章節(jié)中去。 這張CD還收錄了OMG的有關(guān)UML標(biāo)準(zhǔn)詳細(xì)說明的全文,這是經(jīng)過OMG授權(quán)認(rèn)可的。 我們認(rèn)為這張CD對(duì)U
31、ML高級(jí)用戶來說,將是一本非常有用的在線參考書。 如何獲取更多信息 有關(guān)UML的另外一些原始文件和最新信息及相關(guān)方面的主題可在萬維網(wǎng)上查找。網(wǎng)址為:和。 致謝 我們感謝所有使UML成為現(xiàn)實(shí)的人。首先,我們必須感謝Rational軟件公司,特別是Mike Devlin 和 Paul levy,正是他們頗具慧眼地將我們組織在一起,并發(fā)起面向?qū)ο蠼UZ言的統(tǒng)一工作,歷經(jīng)四年的努力直至這項(xiàng)工作勝利完成。我們還得感謝OMG匯集了各方面的不同的觀點(diǎn),并使這些觀點(diǎn)統(tǒng)一成被普遍接受的一致觀點(diǎn),這遠(yuǎn)非個(gè)人的力量所能夠做到的。 我們尤其要感謝Cris Kobryn,他既是制定UML標(biāo)準(zhǔn)的
32、技術(shù)小組的負(fù)責(zé)人,并且使眾位各執(zhí)己見的組員達(dá)成一致(當(dāng)然我們?nèi)齻€(gè)人達(dá)成一致不會(huì)有太大的問題)。他的交際才能和技術(shù)上的斡旋能力使制定UML的努力沒有因各種不同觀點(diǎn)的影響而白費(fèi)。Cris 還復(fù)審了全書,給出了大量有益的建議。 我們要對(duì)Gunnar 卾ergaard 表示感謝,感謝他對(duì)本書做了詳細(xì)的復(fù)審,以及他為完成大量UML文獻(xiàn)所做的辛勤勞動(dòng)。這些文獻(xiàn)不適于寫入本書,但具有正確和有益的參考價(jià)值。 我們還要感謝Karin Palmkvist 對(duì)本書做了極為細(xì)致的校審,并指出了許多技術(shù)上的錯(cuò)誤以及語法、措辭和表達(dá)方式上的缺陷。 我們還要感謝 Mike Blaha、Conrad Bock、Pe
33、rry Cole、Bruce Douglass、Martin Fowler、Eran Gery、Pete Mcbreen、Guus Ramackers、Tom Schultz、Ed seidewitz 和Bran Selic ,感謝他們對(duì)本書做了復(fù)審。 尤其重要的是,我們要對(duì)所有對(duì)UML思想作出貢獻(xiàn)的人表示感謝。他們提出了許多有益的見解和想法,這些想法涉及面向?qū)ο蠹夹g(shù)、軟件方法、程序設(shè)計(jì)語言、用戶界面、可視化編程和許許多多計(jì)算機(jī)方面的其他領(lǐng)域。在此我們不可能一一列舉他們的名字,不經(jīng)過學(xué)術(shù)上的討論也難以理解他們的見解所具有的影響,并且本書是一本工程方面的書,并不是歷史傳記。這些見解有的廣為人知
34、,有的卻因?yàn)樘岢鲞@些見解的人運(yùn)氣不佳而不被人了解。 要是在一個(gè)更私人的場(chǎng)合,我希望能夠表達(dá)對(duì)Jack Dennis教授的感謝。早在25年前,他就對(duì)我和我的學(xué)生在建模方面的工作進(jìn)行鼓勵(lì)。他所在的MIT的 計(jì)算結(jié)構(gòu)組(Computations Structures Group)所提出的見解已產(chǎn)生了豐碩的成果,這些見解對(duì)UML的影響也是不小的。我還必須感謝Mary Loomis和Ashwin Shah,我和他們一起萌發(fā)了OMT的思想,還有我在GE 公司研發(fā)中心的同事Mike Blaha、Bill Premerlani、Fred Eddy和 Bill Lorensen,我和他們一起撰寫了OMT的書籍
35、。 最后要說的是,沒有我的妻子 Madeline 及兩個(gè)兒子Nick 和 Alex 的耐心支持,就沒有UML和這本書。 James Rumbaugh 于加州 Cupertino 1998年11月 第一部分 背景知識(shí) 這一部分介紹了UML的基本原理,包括UML建模的性質(zhì)和目標(biāo)以及UML覆蓋的所有功能領(lǐng)域。 第 1 章 UML綜述 本章是UML及其應(yīng)用的一個(gè)快速瀏覽。 1.1 UML簡(jiǎn)介 統(tǒng)一建模語言(UML)是一個(gè)通用的可視化建模語言,用于對(duì)軟件進(jìn)行描述、可視化處理、構(gòu)造和建立軟件系統(tǒng)制品的文檔。它記錄了對(duì)必須構(gòu)造的系統(tǒng)的決定和理解,可用于對(duì)系統(tǒng)的理解、設(shè)計(jì)、瀏
36、覽、配置、維護(hù)和信息控制。UML適用于各種軟件開發(fā)方法、軟件生命周期的各個(gè)階段、各種應(yīng)用領(lǐng)域以及各種開發(fā)工具,UML 是一種總結(jié)了以往建模技術(shù)的經(jīng)驗(yàn)并吸收當(dāng)今優(yōu)秀成果的標(biāo)準(zhǔn)建模方法。UML包括概念的語義,表示法和說明,提供了靜態(tài)、動(dòng)態(tài)、系統(tǒng)環(huán)境及組織結(jié)構(gòu)的模型。它可被交互的可視化建模工具所支持,這些工具提供了代碼生成器和報(bào)表生成器。UML標(biāo)準(zhǔn)并沒有定義一種標(biāo)準(zhǔn)的開發(fā)過程,但它適用于迭代式的開發(fā)過程。它是為支持大部分現(xiàn)存的面向?qū)ο箝_發(fā)過程而設(shè)計(jì)的。 UML描述了一個(gè)系統(tǒng)的靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)行為。UML將系統(tǒng)描述為一些離散的相互作用的對(duì)象并最終為外部用戶提供一定的功能的模型結(jié)構(gòu)。靜態(tài)結(jié)構(gòu)定義了系統(tǒng)中
37、的重要對(duì)象的屬性和操作以及這些對(duì)象之間的相互關(guān)系。動(dòng)態(tài)行為定義了對(duì)象的時(shí)間特性和對(duì)象為完成目標(biāo)而相互進(jìn)行通信的機(jī)制。從不同但相互聯(lián)系的角度對(duì)系統(tǒng)建立的模型可用 于不同的目的。 UML還包括可將模型分解成包的結(jié)構(gòu)組件,以便于軟件小組將大的系統(tǒng)分解成易于處理的塊結(jié)構(gòu),并理解和控制各個(gè)包之間的依賴關(guān)系,在復(fù)雜的開發(fā)環(huán)境中管理模型單元。它還包括用于顯示系統(tǒng)實(shí)現(xiàn)和組織運(yùn)行的組件。 UML不是一門程序設(shè)計(jì)語言。但可以使用代碼生成器工具將UML模型轉(zhuǎn)換為多種程序設(shè)計(jì)語言代碼,或使用反向生成器工具將程序源代碼轉(zhuǎn)換為UML。UML不是一種可用于定理證明的高度形式化的語言,這樣的語言有很多種,但它們通用性較差
38、,不易理解和使用。UML是一種通用建模語言。對(duì)于一些專門領(lǐng)域,例如用戶圖形界面(GUI)設(shè)計(jì)、超大規(guī)模集成電路(VLSI)設(shè)計(jì)、基于規(guī)則的人工智能領(lǐng)域,使用專門的語言和工具可能會(huì)更適合些。UML是一種離散的建模語言,不適合對(duì)諸如工程和物理學(xué)領(lǐng)域中的連續(xù)系統(tǒng)建模。它是一個(gè)綜合的通用建模語言,適合對(duì)諸如由計(jì)算機(jī)軟件、固件或數(shù)字邏輯構(gòu)成的離散系統(tǒng)建模。 1.2 UML 的歷史 UML是為了簡(jiǎn)化和強(qiáng)化現(xiàn)有的大量面向?qū)ο箝_發(fā)方法這一目的而開發(fā)的。 1.2.1 面向?qū)ο蟮拈_發(fā)方法 利用傳統(tǒng)程序設(shè)計(jì)語言(如Cobol和 Fortran語言)的軟件開發(fā)方法出現(xiàn)于20世紀(jì)70年代,在80年代被廣泛采
39、用,其中最重要的是結(jié)構(gòu)化分析和結(jié)構(gòu)化設(shè)計(jì)方法[Yourdon-79]和它的變體,如實(shí)時(shí)結(jié)構(gòu)化設(shè)計(jì)方法[Ward-85]等。這些方法最初由Constantine、Demarco、Mellor、Ward、Yourdon和其他一些人發(fā)明和推廣,在一些大型系統(tǒng),特別是和政府簽約的航空和國防領(lǐng)域的系統(tǒng)中取得了一定突破,在這些系統(tǒng)中,主持項(xiàng)目的政府官員強(qiáng)調(diào)開發(fā)過程的有組織性和開發(fā)設(shè)計(jì)文檔的完備和充分。結(jié)果不總是像預(yù)料的那么好—許多計(jì)算機(jī)輔助軟件工程系統(tǒng)(CASE)只是摘錄一些已實(shí)現(xiàn)的系統(tǒng)設(shè)計(jì)的報(bào)表生成器—盡管如此,這些方法中仍包含一些好的思想,有時(shí)在一些大系統(tǒng)中是很有效的。商業(yè)應(yīng)用軟件更不愿采用大型的CA
40、SE系統(tǒng)和開發(fā)方法。大部分商業(yè)企業(yè)都獨(dú)立開發(fā)本企業(yè)內(nèi)部使用的軟件,客戶和締約人之間沒有對(duì)立關(guān)系,而這種關(guān)系正是大型政府工程的特征。一般都認(rèn)為商用系統(tǒng)比較簡(jiǎn)單,不論這種看法是否正確,反正它不需要經(jīng)過外界組織的檢查。 普遍認(rèn)為,誕生于1967年的Simula-67是第一個(gè)面向?qū)ο蟮恼Z言。盡管這個(gè)語言對(duì)后來的許多面向?qū)ο笳Z言的設(shè)計(jì)產(chǎn)生了很大的影響,但是它沒有后繼版本。80年代初Smalltalk,語言的廣泛使用掀起了一場(chǎng)“面向?qū)ο筮\(yùn)動(dòng)”,隨之誕生了面向?qū)ο蟮腃、C++、Eiffel和CLOS等語言。起初,盡管面向?qū)ο缶幊陶Z言在實(shí)際使用中有一定的局限性,但它仍然吸引了廣泛的注意力。在smalltal
41、k語言成名約5 年后,第一批介紹面向?qū)ο筌浖_發(fā)方法的書籍出現(xiàn)了。包括Shlaer/Mellor [Shlaer-88]和Coad/Yourdon [Coad-91],緊接著又有Booch的[Booch-91]、Rumbaugh/Blaha/Premerlani/Eddy/Lorensen的[Rumbaugh-91]和Wirfs-Brock/Wilkerson/Wiener [Wirfs-Brock-90](注意:圖書年代往往包括了上一年度7月份以后出版的書)。這些著作再加上 Goldberg/Robson[Goldberg-83] Cox[Cox-86]和Meyer[Meyer-88]
42、等有關(guān)程序語言設(shè)計(jì)的著作,開創(chuàng)了面向?qū)ο蠓椒ǖ南群印5谝浑A段在1990年末完成。稍晚[Jacobson-92]出版了,它建立在以前的成果的基礎(chǔ)上,介紹了一種稍微不同的方法,即以用例和開發(fā)過程為中心。 在以后的5年中,大批關(guān)于面向?qū)ο蠓椒ǖ臅畣柺溃饔凶约旱囊惶赘拍?、定義、表示法、術(shù)語和適用的開發(fā)過程。有些書提出了一些新概念,但總的來說各個(gè)作者所使用的概念大同小異。許多后繼出版的書都照搬前人,自己再做一些小的擴(kuò)充或修改。最早的著作者也沒閑著,他們大部分人都更新了自己前期的著作,采納了其他人一些好的思想。總之,出現(xiàn)了一些被廣泛使用的核心概念,另外還有一大批被個(gè)別人采納的概念。即使在被廣泛接受的
43、核心概念里,在各個(gè)面向?qū)ο蠓椒ㄖ幸灿幸恍┬〉牟町?。這些面向?qū)ο蠓椒ㄖg的細(xì)微比較常使人覺得這些概念不知依據(jù)哪個(gè)為好,特別是非專業(yè)的讀者。 1.2.2 統(tǒng)一工作 在UML之前,已經(jīng)有一些試圖將各種方法中使用的概念進(jìn)行統(tǒng)一的初期嘗試,比較有名的一次是Coleman和他的同事們[Coleman-94]對(duì)OMT[Rumbaugh-91]、Booch[Booch-91]、CRC[Wirfs-Brock-90]方法使用的概念進(jìn)行融合。由于這項(xiàng)工作沒有這些方法的原作者參與,實(shí)際上僅僅形成了一種新方法,而不能替換現(xiàn)存的各種方法。第一次成功合并和替換現(xiàn)存的各種方法的嘗試始于1994 年在Rational
44、軟件公司Rumbaugh與 Booch合作。他們開始合并OMT和Booch 方法中使用的概念,于1995年提出了第一個(gè)建議。此時(shí),Jacobson 也加入了Rational公司開始與Rumbaugh和Booch一同工作。他們共同致力于設(shè)計(jì)統(tǒng)一建模語言。三位最優(yōu)秀的面向?qū)ο蠓椒▽W(xué)的創(chuàng)始人共同合作,為這項(xiàng)工作注入了強(qiáng)大的動(dòng)力,打破了面向?qū)ο筌浖_發(fā)領(lǐng)域內(nèi)原有的平衡。而在此之前,各種方法的擁護(hù)者覺得沒有必要放棄自己已經(jīng)采用的概念而接受這種統(tǒng)一的思想。 1996年,OMG發(fā)布了征集向外界關(guān)于面向?qū)ο蠼?biāo)準(zhǔn)方法的消息。UML的三位創(chuàng)始人開始與來自其他公司的軟件工程方法專家和開發(fā)人員一道制訂一套使OM
45、G感興趣的方法,并設(shè)計(jì)一種能被軟件開發(fā)工具提供者、軟件開發(fā)方法學(xué)家和開發(fā)人員這些最終用戶所接受的建模語言。與此同時(shí),其他一些人也在做這項(xiàng)富有競(jìng)爭(zhēng)性的工作。1997年9月,所有建議終于被合并成一套UML方法提交到OMG。 最后的成果是許多人共同努力的結(jié)果。我們發(fā)起了創(chuàng)建UML的工作并提出了一些有益的建議,但是這些建議的最終成型是集體智慧的結(jié)晶。 1.2.3 標(biāo)準(zhǔn)化 1997年11月,UML被OMG全體成員一致通過,并被采納為標(biāo)準(zhǔn)。OMG承擔(dān)了進(jìn)一步完善UML標(biāo)準(zhǔn)的工作。在UML標(biāo)準(zhǔn)通過前,就已經(jīng)有許多概括UML精華的書出版發(fā)行。許多軟件開發(fā)工具供應(yīng)商聲稱他們的產(chǎn)品支持或計(jì)劃支持UML,若干
46、軟件工程方法學(xué)家宣布他們將使用UML的表示法進(jìn)行以后的研究工作。UML的出現(xiàn)似乎深受計(jì)算機(jī)界歡迎,因?yàn)樗怯晒俜匠雒婕辛嗽S多專家的經(jīng)驗(yàn)而形成的,減少了各種軟件開發(fā)工具之間無謂的分歧。我們希望建模語言的標(biāo)準(zhǔn)化既能促進(jìn)軟件開發(fā)人員廣泛使用面向?qū)ο蠼<夹g(shù),同時(shí)也能帶來UML支持工具和培訓(xùn)市場(chǎng)的繁榮,因?yàn)椴徽撌怯脩暨€是供應(yīng)商都不用再考慮到底應(yīng)該采用哪一種開發(fā)方法。 1.2.4 核心組員 提出UML建議或進(jìn)行UML標(biāo)準(zhǔn)修訂工作的核心組員有下列人員: 數(shù)據(jù)存取公司:Tom Digre DHR 技術(shù)公司:Ed Seidewitz HP 公司:Martin Griss IBM 公司:Stev
47、e Brodsky, Steve Cook, Jos Warmer I—Lgix 公司:Eran Gery, David Harel ICON Computing 公司:Desmond DSouza IntelliCorp and James Martin 公司:Conrad Bock, James Odell MCI 系統(tǒng)企業(yè):Cris Kobryn, Joaquin Miller ObjecTime 公司:John Hogg, Bran Selic Oracle 公司:Guus Ramackers 鉑技術(shù)公司:Dilhar Desilva Rational 軟件公司:
48、Grady Booch, Ed Eykholt, Ivar Jacobson, Gunnar Overgaard, Karin Palmkvist, James Rumbaugh SAP 公司:Oliver Wiegert SOFTEAM:Philippe Desfray Sterling 軟件公司:John Cheesman, Keith Short Taskon 公司:Trygve Reenskaug 1.2.5 統(tǒng)一的意義 “統(tǒng)一”這個(gè)詞在UML中有下列一些相互關(guān)聯(lián)的含義: 在以往出現(xiàn)的方法和表示法方面。UML合并了許多面向?qū)ο蠓椒ㄖ斜黄毡榻邮艿母拍?,?duì)每一種概念,UM
49、L都給出了清晰的定義、表示法和有關(guān)術(shù)語。使用UML可以對(duì)已有的用各種方法建立的模型進(jìn)行描述,并比原來的方法描述得更好。 在軟件開發(fā)的生命期方面。UML對(duì)于開發(fā)的要求具有無縫性。開發(fā)過程的不同階段可以采用相同的一套概念和表示法,在同一個(gè)模型中它們可以混合使用。在開發(fā)的不同階段,不必轉(zhuǎn)換概念和表示。這種無縫性對(duì)迭代式的、增量式軟件開發(fā)是至關(guān)重要的。 在應(yīng)用領(lǐng)域方面。UML適用于各種應(yīng)用領(lǐng)域的建模,包括大型的、復(fù)雜的、實(shí)時(shí)的、分布式的、集中式數(shù)據(jù)或計(jì)算的、嵌入式的系統(tǒng)。也許用某種專用語言來描述一些專門領(lǐng)域更有用,但在大部分應(yīng)用領(lǐng)域中,UML 不但不比其他的通用語言遜色并且更好。 在實(shí)現(xiàn)的編程語
50、言和開發(fā)平臺(tái)方面。 UML可應(yīng)用于運(yùn)行各種不同的編程實(shí)現(xiàn)語言和開發(fā)平臺(tái)的系統(tǒng)。其中包括程序設(shè)計(jì)語言、數(shù)據(jù)庫、4GL、組織文檔及固件等。在各種情況下,前部分工作應(yīng)當(dāng)相同或相似,后部分工作因各種開發(fā)媒介的不同而有某種程度上的不同。 在開發(fā)全過程方面。UML是一個(gè)建模型語言,不是對(duì)開發(fā)過程的細(xì)節(jié)進(jìn)行描述的工具。就像通用程序設(shè)計(jì)語言可以用于許多風(fēng)格的程序設(shè)計(jì)一樣,UML適用于大部分現(xiàn)有的或新出現(xiàn)的開發(fā)過程。尤其適用于我們所推薦的迭代式增量開發(fā)過程。 在內(nèi)部概念方面。在構(gòu)建UML元模型的過程中,我們特別注意揭示和表達(dá)各種概念之間的內(nèi)在聯(lián)系并試圖用多種適用于已知和未知情況的辦法去把握建模中的概念。這個(gè)
51、過程會(huì)增強(qiáng)對(duì)概念及其適用性的理解。這不是統(tǒng)一各種標(biāo)準(zhǔn)的初衷,但卻是統(tǒng)一各種標(biāo)準(zhǔn)最重要的結(jié)果之一。 1.3 UML的目標(biāo) UML語言的開發(fā)有多個(gè)目標(biāo)。首先,最重要的目標(biāo)是使UML一個(gè)通用的建模語言,可供所有建模者使用。它并非某人專有,且建立在計(jì)算機(jī)界普遍認(rèn)同的基礎(chǔ)上,即它包括了各種主要的方法并可作為它們的建模語言。至少,我們希望它能夠替代OMT,Booch,Objectory方法以及參與UML建議制訂的其他人所使用的方法建立的模型。其次,我們希望 UML 采用源自O(shè)MT Booch, Objectory及其他主要方法的表示法,即盡可能地它能夠很好地支持設(shè)計(jì)工作,像封裝、分塊、記錄模型構(gòu)造思
52、路。此外,我們希望UML 準(zhǔn)確表達(dá)當(dāng)前軟件開發(fā)中的熱點(diǎn)問題,比如大規(guī)模、分布、并發(fā)、方式和團(tuán)體開發(fā)等。 UML并不試圖成為一個(gè)完整的開發(fā)方法。它不包括一步一步的開發(fā)過程。我們認(rèn)為一個(gè)好的軟件開發(fā)過程對(duì)成功的開發(fā)軟件是至關(guān)重要的,我們向讀者推薦一本書[Jacobson-99]。UML和使用UML的軟件開發(fā)過程是兩回事,這一些很重要。我們希望UML可以支持所有的,至少是目前現(xiàn)有的大部分軟件開發(fā)過程。UML包含了所有的概念,我們認(rèn)為這些概念對(duì)于支持基于一個(gè)健壯的構(gòu)架來解決用例驅(qū)動(dòng)的需求的迭代式開發(fā)過程是必要的。 UML的最終目標(biāo)是在盡可能簡(jiǎn)單的同時(shí)能夠?qū)?shí)際需要建立的系統(tǒng)的各個(gè)方面建模。UML需
53、要有足夠的表達(dá)能力以便可以處理現(xiàn)代軟件系統(tǒng)中出現(xiàn)的所有概念,例如并發(fā)和分布,以及軟件工程中使用的技巧,如封裝和組件。它必須是一個(gè)通用語言,像任何一種通用程序設(shè)計(jì)語言一樣。然而,這樣就意味著UML必將十分龐大,不可能像描述一個(gè)近乎于玩具一樣的軟件系統(tǒng)那樣簡(jiǎn)單?,F(xiàn)代語言和操作系統(tǒng)比起40年前要復(fù)雜多,因?yàn)槲覀儗?duì)它們的要求越來越多。UML提供了多種模型,不是在一天之內(nèi)就能夠掌握的。它比先前的建模語言更復(fù)雜,因?yàn)樗妗5悄悴槐匾幌戮屯耆珜W(xué)會(huì)它,就像學(xué)習(xí)任何一種程序設(shè)計(jì)語言、操作系統(tǒng)或是復(fù)雜的應(yīng)用軟件一樣。 1.4 UML概念域 UML的概念和模型可以分成以下幾個(gè)概念域。 靜態(tài)結(jié)構(gòu)。任何
54、一個(gè)精確的模型必須首先定義所涉及的范圍,即確定有關(guān)應(yīng)用、內(nèi)部特性及其相互關(guān)系的關(guān)鍵概念。UML的靜態(tài)組件稱為靜態(tài)視圖。靜態(tài)視圖用類構(gòu)造模型來表達(dá)應(yīng)用,每個(gè)類由一組包含信息和實(shí)現(xiàn)行為的離散對(duì)象組成。對(duì)象包含的信息被作為屬性,它們執(zhí)行的行為被作為操作。多個(gè)類通過泛化處理可以具有一些共同的結(jié)構(gòu)。子類在繼承它們共同的父類的結(jié)構(gòu)和行為的基礎(chǔ)上增加了新的結(jié)構(gòu)和行為。對(duì)象與其他對(duì)象之間也具有運(yùn)行時(shí)間連接,這種對(duì)象與對(duì)象之間的關(guān)系被稱為類間的關(guān)聯(lián)。一些元素通過依賴關(guān)系組織在一起,這些依賴關(guān)系包括在抽象級(jí)上進(jìn)行模型轉(zhuǎn)換、模板參數(shù)的捆綁、授予許可以及通過一種元素使用另一種元素等。另一類關(guān)系包括用例和數(shù)據(jù)流的合并。
55、靜態(tài)視圖主要使用類圖。靜態(tài)視圖可用于生成程序中用到的大多數(shù)數(shù)據(jù)結(jié)構(gòu)聲明。在UML視圖中還要用到其他類型的元素,比如接口、數(shù)據(jù)類型、用例和信號(hào)等,這些元素統(tǒng)稱為類元,它們的行為很像在每種類元上具有一定限制的類。 動(dòng)態(tài)行為。有兩種方式對(duì)行為建模。一種是根據(jù)一個(gè)對(duì)象與外界發(fā)生關(guān)系的生命歷史;另一種是一系列相關(guān)對(duì)象之間當(dāng)它們相互作用實(shí)現(xiàn)行為時(shí)的通信方式。孤立對(duì)象的視圖是狀態(tài)機(jī)—當(dāng)對(duì)象基于當(dāng)前狀態(tài)對(duì)事件產(chǎn)生反應(yīng),執(zhí)行作為反應(yīng)的一部分的動(dòng)作,并從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)時(shí)的視圖。狀態(tài)機(jī)模型用狀態(tài)圖來描述。 相互作用對(duì)象的系統(tǒng)視圖是一種協(xié)作,一種與語境有關(guān)的對(duì)象視圖和相互之間的鏈,通過數(shù)據(jù)鏈對(duì)象間存在著
56、消息流。視圖點(diǎn)將數(shù)據(jù)結(jié)構(gòu)、控制流和數(shù)據(jù)流在一個(gè)視圖中統(tǒng)一起來。協(xié)作和互操作用順序圖和協(xié)作圖來描述。對(duì)所有行為視圖起指導(dǎo)作用的是一組用例,每一個(gè)用例描述了一個(gè)用例參與者或系統(tǒng)外部用戶可見的一個(gè)功能。 實(shí)現(xiàn)構(gòu)造。UML模型既可用于邏輯分析又可用于物理實(shí)現(xiàn)。某些組件代表了實(shí)現(xiàn)。構(gòu)件是系統(tǒng)中物理上的可替換的部分,它按照一組接口來設(shè)計(jì)并實(shí)現(xiàn)。它可以方便地被一個(gè)具有同樣規(guī)格說明的構(gòu)件替換。節(jié)點(diǎn)是運(yùn)行時(shí)間計(jì)算資源,資源定義了一個(gè)位置。它包括構(gòu)件和對(duì)象。部署圖描述了在一個(gè)實(shí)際運(yùn)行的系統(tǒng)中節(jié)點(diǎn)上的資源配置和構(gòu)件的排列以及構(gòu)件包括的對(duì)象,并包括節(jié)點(diǎn)間內(nèi)容的可能遷移。 模型組織。計(jì)算機(jī)能夠處理大型的單調(diào)的模型,
57、但人力不行。對(duì)于一個(gè)大型系統(tǒng),建模信息必須被劃分成連貫的部分,以便工作小組能夠同時(shí)工作在不同部分上。即使是一個(gè)小系統(tǒng),人的理解能力也要求將整個(gè)模型的內(nèi)容組織成一個(gè)個(gè)適當(dāng)大小的包。包是UML模型通用的層次組織單元,它們可以用于存儲(chǔ)、訪問控制、置以管理配及構(gòu)造包含可重用的模型單元庫。包之間的依賴關(guān)系是對(duì)包的組成部分之間的依賴關(guān)系的歸納。系統(tǒng)整個(gè)構(gòu)架可以在包之間施加依賴關(guān)系。因此,包的內(nèi)容必須符合包的依賴關(guān)系和有關(guān)的構(gòu)架要求。 擴(kuò)展機(jī)制。無論一種語言能夠提供多么完善的機(jī)制,人們總是想擴(kuò)展它的功能。我們已使UML具有一定的擴(kuò)展能力,相信能夠滿足大多數(shù)對(duì)UML擴(kuò)充的需求而不改變語言的基礎(chǔ)部分。構(gòu)造型是
58、一種新的模型元素,與現(xiàn)有的模型元素具有相同的結(jié)構(gòu),但是加上了一些附加限制,具有新的解釋和圖標(biāo)。代碼生成器和其他的工具對(duì)它的處理過程也發(fā)生了變化。標(biāo)記值是一對(duì)任意的標(biāo)記值字符串,能夠被連接到任何一種模型元素上并代表任何信息,如項(xiàng)目管理信息、代碼生成指示信息和構(gòu)造型所需要的值。標(biāo)記和值用字符串代表。約束是用某種特定語言(如程序設(shè)計(jì)語言)的文本字符串表達(dá)的條件專用語言或自然語言。UML提供了一個(gè)表達(dá)約束的語言,名為OCL。與所有其他擴(kuò)展機(jī)制一樣,必須小心使用這些擴(kuò)展機(jī)制,因?yàn)橛锌赡苄纬梢恍﹦e人無法理解的方言。但這些機(jī)制可以避免語言基礎(chǔ)發(fā)生根本性變化。 1.5 表達(dá)式和圖表語法 本書列舉了許多演
59、示實(shí)際模型的表達(dá)式和圖表,以及表達(dá)式的語法和圖表的注釋。為了盡量避免將解釋說明和實(shí)例弄混,本書采用了一些約定的格式。 在圖表和文本表達(dá)式中實(shí)際的表示法部分用Comic Sans字體印刷。例如,模型中出現(xiàn)的Helvetica字體的類名是一個(gè)合法的名稱。語法表達(dá)式中的括弧是一個(gè)可能出現(xiàn)在實(shí)際表達(dá)式中的括弧,它不是實(shí)際語法機(jī)構(gòu)的一部分。例如:e(customer,amount) 在連續(xù)的文中,關(guān)鍵詞和模型元素名都用Comic Sans字體印刷,如:Order或Customer。 在一個(gè)語法表達(dá)式子中,句法單元名可以被實(shí)際的一段文字用藍(lán)色Comic Sans字體替代,如:name。表達(dá)式中的黑色
60、正文表示出現(xiàn)在目標(biāo)圖示上字面上的值。斜體或下劃線說明替換文本具有給定的性質(zhì)。例如: tion(argument,...) object-name:class 在語法表達(dá)式中,下標(biāo)和上劃線用于指示某種語法性質(zhì)。例如: expressionopt 這個(gè)表達(dá)式是任選的。 expressionlist, 用逗號(hào)來分隔一系列表達(dá)式。如果出現(xiàn)了零個(gè)或者一個(gè)重復(fù)符號(hào),則不需要分隔符。每個(gè)重復(fù)符號(hào)都要用一個(gè)單獨(dú)的替換符號(hào)。如果一個(gè)除逗號(hào)之外的標(biāo)點(diǎn)符號(hào)出現(xiàn)在下標(biāo)中,則它是分隔符。 用上劃線來連接兩個(gè)或多個(gè)屬于同一單元的可選的或重復(fù)出現(xiàn)的項(xiàng)目。在這個(gè)例子中,等號(hào)和表達(dá)式構(gòu)成一個(gè)可以使用或省略的單元
61、。如果只有一個(gè)項(xiàng)目,可以不用上劃線。 在圖表中,中文楷體、藍(lán)色的文字與箭頭是注釋,它們是解釋性說明而不是實(shí)際表示法的一部分。其他文字和符號(hào)是實(shí)際表示法的一部分。 第 2 章 模型的性質(zhì)與目標(biāo) 本章將解釋什么是模型,模型有何用途以及如何使用模型。本章還要解釋模型的不同層次:理想的,部分的和基于工具的。 2.1 什么是模型 模型是用某種工具對(duì)同類或其他工具的表達(dá)方式。模型從某一個(gè)建模觀點(diǎn)出發(fā),抓住事物最重要的方面而簡(jiǎn)化或忽略其他方面。工程、建筑和其他許多需要具有創(chuàng)造性的領(lǐng)域中都使用模型。 表達(dá)模型的工具要求便于使用。建筑模型可以是圖紙上所繪的建筑圖,也可以是用厚紙板制作的三維模
62、型,還可以用存于計(jì)算機(jī)中的有限元方程來表示。一個(gè)建筑物的結(jié)構(gòu)模型不僅能夠展示這個(gè)建筑物的外觀,還可以用它來進(jìn)行工程設(shè)計(jì)和成本核算。 軟件系統(tǒng)的模型用建模語言來表達(dá),如UML。模型包含語義信息和表示法,可以采取圖形和文字等多種不同形式。建立模型的目的是因?yàn)樵谀承┯猛局心P褪褂闷饋肀炔倏v實(shí)物更容易和方便。 2.2 模型的用途 模型有多種用途 捕獲精確和表達(dá)項(xiàng)目的需求和應(yīng)用領(lǐng)域中的知識(shí),以使各方面的利益相關(guān)者能夠理解并達(dá)成一致。建筑物的各種模型能夠準(zhǔn)確表達(dá)出這個(gè)建筑物在外觀、交通、服務(wù)設(shè)施、抗風(fēng)和抗震性能,消費(fèi)及其他需求。各方面的利益相關(guān)者則包括建筑設(shè)計(jì)師、建筑工程師、合同締約人、各個(gè)子項(xiàng)
63、目的締約人、業(yè)主、出租者和市政當(dāng)局。 軟件系統(tǒng)的不同模型可以捕獲關(guān)于這個(gè)軟件的應(yīng)用領(lǐng)域、使用方法、試題手段和構(gòu)造模式等方面的需求信息。各方面的利益相關(guān)者包括軟件結(jié)構(gòu)設(shè)計(jì)師、系統(tǒng)分析員、程序員、項(xiàng)目經(jīng)理、顧客、投資者、最終用戶和使用軟件的操作員。在UML中要使用各種各樣的模型。 進(jìn)行系統(tǒng)設(shè)計(jì)。建筑設(shè)計(jì)師可以用畫在圖紙上的模型圖、存于計(jì)算機(jī)中的模型或?qū)嶋H的三維模型使自己的設(shè)計(jì)結(jié)果可視化,并用這些模型來做設(shè)計(jì)方面的的試驗(yàn)。建造、修改一個(gè)小型模型比較簡(jiǎn)單,這使得設(shè)計(jì)人員不需花費(fèi)什么代價(jià)就可以進(jìn)行創(chuàng)造和革新。 在編寫程序代碼以前,軟件系統(tǒng)的模型可以幫助軟件開發(fā)人員方便地研究軟件的多種構(gòu)架和設(shè)計(jì)方案
64、。在進(jìn)行詳細(xì)設(shè)計(jì)以前,一種好的建模語言可以讓設(shè)計(jì)者對(duì)軟件的構(gòu)架有全面的認(rèn)識(shí)。 使具體的設(shè)計(jì)細(xì)節(jié)與需求分開。建筑物的某種模型可以展示出符合顧客要求的外觀。另一類模型可以說明建筑物內(nèi)部的電氣線路、管線和通風(fēng)管道的設(shè)置情況。實(shí)現(xiàn)這些設(shè)置有多種方案。最后確定的建筑模型一定是建筑設(shè)計(jì)師認(rèn)為最好的一個(gè)設(shè)計(jì)方案。顧客可以對(duì)此方案進(jìn)行檢查驗(yàn)證,但通常顧客對(duì)具體的設(shè)計(jì)細(xì)節(jié)并不關(guān)心,只要能滿足他們的需要即可。 軟件系統(tǒng)的一類模型可以說明這個(gè)系統(tǒng)的外部行為和系統(tǒng)中對(duì)應(yīng)于真實(shí)世界的有關(guān)信息,另一類模型可以展示系統(tǒng)中的類以及實(shí)現(xiàn)系統(tǒng)外部行為特性所需要的內(nèi)部操作。實(shí)現(xiàn)這些行為有多種方法。最后的設(shè)計(jì)結(jié)果對(duì)應(yīng)的模型一定是
65、設(shè)計(jì)者認(rèn)為最好的一種。 生成有用的實(shí)際產(chǎn)品。建筑模型可以有多種相關(guān)產(chǎn)品,包括建筑材料清單、在各種風(fēng)速下建筑物的偏斜度、建筑結(jié)構(gòu)中各點(diǎn)的應(yīng)力水平等。 利用軟件系統(tǒng)的模型,可以獲得類的聲明、過程體、用戶界面、數(shù)據(jù)庫、合法使用的說明、配置草案以及與其他單位技術(shù)競(jìng)爭(zhēng)情況的對(duì)比說明。 組織、查找、過濾、重獲、檢查以及編輯大型系統(tǒng)的有關(guān)信息。建筑模型用服務(wù)設(shè)施來組織信息:建筑結(jié)構(gòu)、電器、管道、通風(fēng)設(shè)施、裝潢等等。除非利用計(jì)算機(jī)存儲(chǔ),否則對(duì)這些信息的查找和修改沒那么容易。相反,如果整個(gè)模型和相關(guān)信息均存儲(chǔ)在計(jì)算機(jī)中,則這些工作很容易進(jìn)行,并且可方便地研究多種設(shè)計(jì)方案,這些設(shè)計(jì)方案共享一些公共信息。
66、軟件系統(tǒng)用視圖來組織信息:靜態(tài)結(jié)構(gòu)視圖、狀態(tài)機(jī)視圖、交互視圖、反映需求的視圖等等。每一種視圖均是針對(duì)某一目的從模型中挑選的一部分信息的映射。沒有模型管理工具的支持不可能使模型做得任意精確。一個(gè)交互視圖編輯工具可以用不同的格式表示信息,可以針對(duì)特定的目的隱藏暫時(shí)不需要的信息并在以后再展示出來,可以對(duì)操作進(jìn)行分組、修改模型元素以及只用一個(gè)命令修改一組模型元素等等。 經(jīng)濟(jì)地研究多種設(shè)計(jì)過程中的解決方案。對(duì)同一建筑的不同設(shè)計(jì)方案的利弊在一開始可能不很清楚。例如,建筑物可以采用的不同的子結(jié)構(gòu)彼此之間可能有復(fù)雜的相互影響,建筑工程師可能無法對(duì)這些做出正確的評(píng)價(jià)。在實(shí)際建造建筑物以前,利用模型可以同時(shí)研究多種設(shè)計(jì)方案并進(jìn)行相應(yīng)的成本和風(fēng)險(xiǎn)估算。 通過研究一個(gè)大型軟件系統(tǒng)的模型可以提出多個(gè)實(shí)際方案并可以對(duì)它們進(jìn)行相互比較。當(dāng)然模型不可能做得足夠精細(xì),但即使一個(gè)粗糙的模型也能夠說明在最終設(shè)計(jì)中所要解決的許多問題。利用模型可以研究多種設(shè)計(jì)方案,所花費(fèi)的成本只是實(shí)現(xiàn)其中一種方案所花費(fèi)的成本。 利用模型可以全面把握復(fù)雜的系統(tǒng)。一個(gè)關(guān)于龍卷風(fēng)襲擊建筑物的工程模型中的龍卷風(fēng)不可能是真實(shí)世界里的龍卷風(fēng),僅僅
- 溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。