天天看點

《UML使用者指南(第2版.修訂版)》目錄—導讀

《UML使用者指南(第2版.修訂版)》目錄—導讀

版權聲明

uml使用者指南(第2版.修訂版)

authorized translation from the english language edition, entitled the unified modeling language user guide, second edition, 0321267974 by grady booch, james rumbaugh, and ivar jacobson, published by pearson education, inc., publishing as addison-wesley, copyright © 2005 pearson education, inc.

all rights reserved. no part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from pearson education, inc.

chinese simplified language edition published by pearson education asia ltd. and posts & telecom press copyright © 2013.

本書中文簡體字版由pearson education asia ltd. 授權人民郵電出版社獨家出版。未經出版者書面許可,不得以任何方式複制或抄襲本書内容。

本書封面貼有pearson education(培生教育出版集團)雷射防僞标簽,無标簽者不得銷售。

版權所有,侵權必究。

内容提要

本書是uml方面的一部權威著作,3位作者是面向對象方法最早的倡導者、uml的創始人。本版涵蓋了uml2.0。書中為uml具體特征的使用提供了指南,描述了使用uml進行開發的過程,旨在讓讀者掌握uml的術語、規則和慣用法,以及如何有效地使用這種語言,知道如何應用uml去解決一些常見的模組化問題。本書由7個部分共33章組成,每章都對一組uml特征及其具體用法進行了詳細闡述,其中大部分按入門、術語和概念、常用模組化技術、提示和技巧的方式組織。本書還為進階開發人員提供了在進階模組化問題中應用uml的一條非常實用的線索。

本書适合作為高等院校計算機及相關專業大學生或研究所學生“統一模組化語言(uml)”課程的教材,也适合從事軟體開發的工程技術人員和軟體工程領域的研究人員參考。

譯者簡介

《UML使用者指南(第2版.修訂版)》目錄—導讀

邵維忠 北京大學資訊科學技術學院教授、博士生導師。1970年畢業于北京大學數學力學系,1979至1983年在計算機科學技術系任教并攻讀碩士學位。早期主要從事作業系統和軟體工程領域的研究。自1991年起注重面向對象模組化方法的研究與教學,撰寫和翻譯了多部關于面向對象方法的學術著作。在軟體工程環境、面向對象方法、模組化語言、軟體複用、構件技術和中間件技術等領域承擔了多項國家高技術研究發展計劃(863)項目、國家重大基礎研究(973)項目和國家自然科學基金項目。曾獲國家科技進步二等獎及多項國家部委級獎勵。

《UML使用者指南(第2版.修訂版)》目錄—導讀

麻志毅 博士,北京大學資訊科學技術學院副教授,國家軟體工程協會軟體工程分會秘書長。主要研究領域為軟體模組化技術、模型驅動開發技術和軟體工程支撐環境等。發表學術論文80餘篇,出版著(譯)作11部。曾獲國家科技進步二等獎和國家科技攻關優秀成果獎等多項國家部委獎勵。

《UML使用者指南(第2版.修訂版)》目錄—導讀

馬浩海 博士、教授、ibm資深軟體工程師。2006年在北京大學資訊學院獲得計算機軟體與理論專業理學博士學位。先後就職于内蒙古大學、platform computing和ibm canada。已發表學術論文30餘篇。主要研究領域為分布式計算和大規模資料處理、軟體工程、面向對象技術、軟體模組化語言和模型驅動的軟體開發技術。

《UML使用者指南(第2版.修訂版)》目錄—導讀

劉輝 博士、副教授。2008年畢業于北京大學資訊科學技術學院計算機軟體與理論專業,獲理學博士學位。同年進入北京理工大學計算機學院從事教學科研工作,入選校優秀青年教師資助計劃。目前主要從事軟體重構、軟體演化、軟體維護、軟體測試等方面的研究和教學工作。現主持國家自然科學基金兩項、教育部博士點基金一項、其他縱向科研項目4項。以第一作者在ieee transactions on software engineering等期刊及esecfse、ase等國際會議發表學術論文十餘篇。

譯者序

開發一個複雜的軟體系統和編寫一個簡單的程式大不一樣。其間的差别,借用g. booch的比喻,如同建造一座大廈和搭建一個狗窩的差别。大型的、複雜的軟體系統開發是一項系統工程,必須按工程學的方法來組織軟體生産,需要經過一系列的軟體生命周期階段。這是人們從軟體危機中獲得的最重要的教益。這一認識促使了軟體工程學的誕生。程式設計仍然是重要的,但是更具有決定意義的是系統模組化。隻有在分析和設計階段建立了良好的系統模型,才有可能保證工程的正确實施。由于這一原因,在程式設計領域出現的許多新方法和新技術,總是很快地拓展到軟體生命周期的分析與設計階段。

面向對象方法正是經曆了這樣的發展過程,它首先在程式設計領域興起,作為一種嶄新的程式設計範型引起世人矚目。繼smalltalk-80之後,20世紀80年代有一大批面向對象程式設計語言問世,标志着面向對象方法走向成熟和實用。此時,面向對象方法開始向系統設計階段延伸,出現了一批早期的面向對象設計(ood)方法。到80年代末期,面向對象方法的研究重點轉向面向對象的分析(ooa),并将ooa與ood密切地聯系在一起,出現了一大批面向對象的分析與設計(ooa&d)方法。至1994年,公開發表并具有一定影響的ooa&d方法已達50餘種。這種繁榮的局面表明面向對象方法已經深入到分析與設計領域。此後,大多數比較成熟的軟體開發組織已經從分析、設計到程式設計、測試全面地采用面向對象方法,使面向對象無可置疑地成為軟體領域的主流技術。

各種ooa&d方法都為面向對象理論與技術的發展做出了貢獻。這些方法的主導思想以及所采用的主要概念與原則大體上是一緻的,但是也存在不少差異。這些差異所帶來的問題是:不利于oo方法的發展,妨礙了技術交流,也給使用者的選擇帶來困惑。在這種形勢下,統一模組化語言(unified modeling language,uml)應運而生。

uml是在多種面向對象分析與設計方法互相融合的基礎上形成的,其發展曆史可以大緻概括為 4 個階段。最初的階段是面向對象方法學家的聯合行動,由g. booch、j. rumbaugh和i. jacobson将他們各自的方法結合起來,形成了uml0.9。第二階段是公司的聯合行動,由十多家公司組成uml夥伴組織,共同提出了 uml1.0 和 1.1,于 1997 年被對象管理組織(omg)正式采納作為模組化語言規範。第三階段是在omg控制下對uml規範進行修訂和改進,産生了uml1.2、1.3、1.4和1.5等版本。第四階段是從1999年開始醞釀,并于本世紀初實施的一次重大的修訂,推出了uml2.0,繼而進行了多次修訂,産生了uml2.1到uml2.4一系列版本,送出到國際标準化組織iso作為模組化語言标準的提案,其中各個部分已陸續進入iso的标準化日程。

uml 用于對軟體密集型系統進行詳述、可視化、構造和文檔化,也可以用于業務模組化以及其他非軟體系統的模組化。uml定義了系統模組化所需的概念并給出其可視化表示法,但是它并不涉及如何進行系統模組化。是以它隻是一種模組化語言,而不是一種模組化方法。uml是獨立于過程的,就是說,它可以适應不同的模組化過程。uml的出現使面向對象模組化概念和表示法趨于統一和标準化。目前uml已成為被廣泛公認的工業标準,擁有越來越多的使用者。現今大部分面向對象系統的模組化均采用uml。

g. booch、j. rumbaugh和i. jacobson是uml的3位主要創始者,被稱為“三友”,他們為uml的形成和發展做出了卓越貢獻。在廣大讀者的殷切期待中,“三友”聯名撰寫的 3 本介紹uml以及rational統一軟體開發過程的著作(the unified modeling language user guide、the unified modeling language reference manual和the unified software development process)于1999年由addison-wesley出版,深受廣大讀者的歡迎,被視為uml方面的權威性著作。在uml2.0問世之後,“三友”對他們的上述3本著作進行了再創作,以适應uml2.0的新内容,作為第2版,于2005年陸續出版。

現在我們翻譯的《uml使用者指南》第2版(the unified modeling language user guide, second edition)是“三友”上述3本著作中的一本,是閱讀另外兩本著作的基礎。書中為如何使用uml提供了指南,旨在讓讀者掌握uml的術語、規則和慣用法,學會如何有效地使用uml進行開發,如何應用uml去解決常見的模組化問題。實際上,這不僅僅是一部深入介紹uml的技術文獻,而且處處閃爍着作者在方法學方面的真知灼見,凝結了作者在軟體工程、面向對象方法、構件技術等諸多領域的經驗和智慧。該書語言生動、深入淺出、執行個體豐富、圖文并茂。對于想學習和使用uml的廣大讀者,這是一本難得的好書。該書的宗旨并不是全面地介紹uml,也不是完整地介紹軟體開發過程,這些内容屬于“三友”的另外兩本著作。

承擔這樣一本好書的翻譯工作是1項愉快而又嚴肅的任務。盡管我們對uml進行過多年的研究,并且翻譯過該書的第1版,但是在新版的翻譯中仍不敢有駕輕就熟的心理。對翻譯中遇到的一些疑難問題,往往要經過反複讨論,并通過對uml的進一步研究,才能獲得比較準确的譯法。忠實于原文是我們始終遵循的宗旨,但是原著中存在着個别前後不一緻或者與uml規範不一緻的現象,譯文中采用了兩種處理方式:對比較明顯的錯誤在譯文中做了訂正,并通過譯者注加以說明;對不太明顯的錯誤按原文翻譯,并在譯者注中指出疑點。

本書的第一個譯本于2006年6月由人民郵電出版社出版。承蒙廣大讀者的厚愛,先後9次印刷,累計印數達15 000冊。在此期間,uml2的版本更新并未影響本書的适用性,因為本書的宗旨并不是全面地介紹uml某個版本的具體細節,而是引導讀者學習和使用uml。人民郵電出版社為滿足廣大讀者的迫切需求,決定再次出版這本書,趁此機會我們對2006年的譯稿進行了全面的稽核和修訂。修訂範圍涉及全書各章,以及前言、術語表、附錄和譯者注,對一些翻譯不太準确或前後不一緻的地方逐一做了訂正,對文字上不夠通順的地方也進行了修改。

書中的科技術語譯法以國标gb/t11457《資訊技術 軟體工程術語》1和我國計算機界權威性工具書《計算機科學技術百科全書》2為基準。其中有幾個比較關鍵的術語(例如use case和classifier等),一些曾經流行的不同譯法使讀者對這些術語的含義産生了截然不同的了解。關于這些術語的譯法問題,我們在《中國計算機學會通訊》2010年第1期上刊登的一篇短文曾對此專門加以論述,我們也将這篇短文附在本書最後,供讀者參考。

本書的翻譯和相關研究得到了高可信軟體技術教育部重點實驗室和北京大學資訊科學技術學院的大力支援。北京大學軟體研究所模組化研究小組所開展的研究工作對本書的翻譯提供了可靠的依據。在此,謹向上述機關和相關個人緻以衷心感謝。同時,我們誠懇地希望廣大讀者對書中可能存在的疏漏和錯誤之處給予批評和指正。

譯者

2012年10月于北京

1國家技術監督局.資訊技術 軟體工程術語 gb/t 11457——2006.北京:中國**标準出版社,2006

2張效祥主編,計算機科學技術百科全書(第二版).北京:清華大學

前言

統一模組化語言(unified modeling language,uml)是一種用于對軟體密集型系統的制品進行可視化、詳述、構造和文檔化的圖形語言。uml給出了一種描繪系統藍圖的标準方法,其中既包括概念性的事物(如業務過程和系統功能),也包括具體的事物(如用特定的程式設計語言編寫的類、資料庫模式和可複用的軟體構件)。

本書旨在教會讀者如何有效地使用uml。

本書涵蓋了uml 2.01。

目标

在本書中,讀者将獲益于以下幾點。

明白uml是什麼,不是什麼,以及為什麼uml對于開發軟體密集型系統的過程非常重要。

掌握uml的術語、規則和慣用法,一般說來,還将學會如何有效地使用這種語言。

知道如何應用uml去解決許多常見的模組化問題。

本書為uml具體特征的使用提供了參考資料,但它不是一本全面的uml參考手冊。全面的參考請參閱我們編寫的the unified modeling language reference manual第2版(rumbaugh、jacobson、booch合著,addison-wesley出版公司2005年出版)2。

本書描述了使用uml進行開發的過程,但并沒有提供對于開發過程的完整參考資料。開發過程是the unified software development process(jacobson、booch、rumbaugh合著,addison-wesley出版公司1999年出版)3一書的重點。

最後,本書提供了如何運用uml去解決許多常見模組化問題的提示和技巧,但沒有講述如何去模組化。本書類似于一本程式設計語言的使用者指南,它教使用者如何使用語言,而不教使用者如何程式設計。

讀者對象

進行軟體開發、部署和維護的人員均可使用uml。本書主要針對用uml進行模組化的開發組成員,但它也适用于為了了解、建造、測試和釋出一個軟體密集型系統而一起工作的人員,他們要閱讀這些模型。雖然這幾乎包含了軟體開發組織中的所有角色,但本書特别适合下述人員閱讀:分析員和最終客戶(他們要詳細說明系統應該具有的結構和行為)、體系結構設計人員(他們設計滿足上述需求的系統)、開發人員(他們把體系結構轉換為可執行的代碼)、品質保證人員(他們檢驗并确認系統的結構和行為)、庫管理人員(他們建立構件并對構件進行編目)、項目及程式管理者(他們一般是把握方向的上司者,要進行有序的管理,并合理地配置設定資源,以保證系統的成功傳遞)。

使用本書的人員應該具有面向對象概念的基本知識。如果讀者具有面向對象程式設計的經驗或懂得面向對象的方法,就能更容易掌握本書内容,但這并不是必需的。

怎樣使用本書

初次接觸uml的開發人員最好按順序閱讀本書。第2章提出了uml的概念模型,讀者應特别予以注意。所有的章節都是這樣組織的——每一章建立在前面各章的内容之上,循序漸進。

至于正在尋求用uml解決常見模組化問題的有經驗的開發人員,可以按任意順序閱讀本書。讀者應該特别注意在各章中提到的常見模組化問題。

本書的組織及特點

本書主要由7個部分組成:

第一部分 入門

第二部分 對基本結構模組化

第三部分 對進階結構模組化

第四部分 對基本行為模組化

第五部分 對進階行為模組化

第六部分 對體系結構模組化

第七部分 結束語

本書還包含兩個附錄:uml表示法概要和rational統一過程概要。在附錄後,提供了一個常見術語表和一個索引。

每章都描述了針對uml具體特征的用法,其中的大部分按下述4節的方式組織:

(1)入門;

(2)術語和概念;

(3)常用模組化技術;

(4)提示和技巧。

第3節“常用模組化技術”提出一組常見模組化問題并予以解決。為了便于讀者浏覽本書找到這些uml的應用場合,每一個問題都标有一個明顯的标題,如下例所示。

對體系結構模式模組化

每一章都從它所涵蓋的特征概要開始,如下例所示。

本章内容

主動對象、程序和線程

對多控制流模組化

對程序間通信模組化

建立線程安全的抽象

類似地,把附加的解釋和一般性的指導分離出來作為注解,如下例所示。

注解

uml中的抽象操作對應于c++中的純虛操作;葉子操作對應于c++的非虛操作。

uml的語義是非常豐富的,是以對一個特征的描述自然會涉及另一個特征。在這種情況下,在自然段的最後部分标注交叉引用,正如本段這樣。

【第25章讨論構件。】

在圖中使用灰色字4是為了表明這些文字不是模型本身的一部分,隻是用于解釋模型。程式代碼用courier字型表示以示差別,如this example。

緻謝

作者向bruce douglass、per krol和joaquin miller表示感謝,謝謝他們幫助審閱了第2版的書稿。

uml簡史

通常公認的第一種面向對象語言是1967年由dahl和nygaard在挪威開發的simula-67。雖然該語言從來沒有得到大量擁護者,但是它的概念給後來的語言以很大啟發。smalltalk在20世紀80年代早期得到了廣泛的使用,到20世紀80年代晚期跟着出現了其他的面向對象語言,如objective c、c++和eiffel等。方法學家面對新型面向對象程式設計語言的湧現和不斷增長的應用系統複雜性,開始試驗用不同的方法來進行分析和設計,由此在20世紀80年代出現了面向對象模組化語言。在1989年到1994年之間,面向對象的方法從不足10種增加到50多種。面對這麼多的方法,很多使用者很難找到一種完全滿足他們要求的模組化語言,于是就加劇了所謂的“方法戰”。一些傑出的方法脫穎而出,其中包括booch方法、jacobson的oose(面向對象的軟體工程)和rumbaugh的omt(對象模組化技術)。其他的重要方法還有fusion方法、shlaer-mellor方法和coad-yourdon方法。這些方法中的每一種方法都是完整的,但是每一種方法又都被認為各有優點和缺點。簡單來說,booch方法在項目的設計和構造階段的表達力特别強,oose對以用況作為一種途徑來驅動需求擷取、分析和高層設計提供了極好的支援,而omt對于分析和資料密集型資訊系統最為有用。

到20世紀90年代中期,一個關鍵的想法開始形成。當時grady booch(rational軟體公司)、james rumbaugh(通用電氣公司)、ivar jacobson(objectory公司)和其他一些人開始從彼此的方法中取長補短,他們的共同成果開始在全球範圍内被公認為是上司性的面向對象方法。作為booch方法、oose方法和omt方法的主要作者,促使我們 3 個人建立統一模組化語言的原因有3個。第一,我們的方法已經在朝着互相獨立的方向演化,而我們希望它朝着一個方向演化,這樣可以消除任何不必要的和不合理的潛在差别,因為這樣的差别會加重使用者的疑惑。第二,通過統一我們的方法,能夠給面向對象的市場帶來一定的穩定,能夠讓人們使用一種成熟的模組化語言去設計項目,使工具開發人員把焦點集中于最有用的特征。第三,希望我們的合作能夠改進早期的3種方法,幫助我們吸取教訓,解決以前的方法不能妥善處理的問題。

統一工作之始,我們确立了3個工作目标。

(1)運用面向對象技術對系統進行從概念到可執行制品的模組化。

(2)解決複雜系統和關鍵任務系統中固有的規模問題。

(3)創造一種人和機器都可以使用的模組化語言。

設計一種用于面向對象分析和設計的語言與設計一種程式設計語言不同。首先,必須縮小問題範圍:這種語言是否應包含需求描述?這種語言是否應支援可視化程式設計?其次,必須在表達能力和表達的簡潔性之間做好平衡。太簡單的語言會限制能夠解決問題的範圍,而太複雜的語言會使開發人員無所适從。在統一現有方法的情況下,也必須小心從事。若對語言進行太多的改進,會給已有使用者造成混亂;若不對語言進行改進,則會失去赢得更廣大的使用者群和使語言得到簡化的時機。uml的定義力争在這些方面做出最好的選擇。

1994年10月,rumbaugh加入booch所在的rational公司,自此正式開始了uml的統一工作。我們的計劃最初注重于聯合booch方法和omt方法。“統一方法”(當時的名稱)0.8版本(草案)在1995年10月釋出。差不多就在那時,jacobson也加入了rational公司,于是uml項目的範圍又做了擴充,把oose也結合進來。經過我們的努力,在1996年6月釋出了uml 0.9版本。1996 年全年,我們都在軟體工程界征求和收集回報意見。在此期間,明顯地有很多軟體組織把uml作為商業戰略來考慮。我們與幾個願意緻力于定義一個強大而完善的uml的組織一起成立了一個uml夥伴組織。對uml 1.0版本做出貢獻的合作夥伴有dec、hp、i-logix、intellicorp、ibm、icon computing、mci systemhouse、microsoft、oracle、rational、ti和unisys。這些合作夥伴協作産生的uml 1.0版本是一個定義明确、富有表現力、強大、可應用于廣泛問題域的模組化語言。mary loomis幫助說服omg(對象管理組織)釋出了一個标準模組化語言的提案需求(rfp)。在1997年1月,作為對該提案的響應,uml 1.0作為标準化的模組化語言送出給omg。

在1997年1月至7月之間,合作夥伴的隊伍不斷擴大,實際上包括了所有對最初omg的提議做出貢獻的公司,它們是andersen consulting、ericsson、objectime limited、platinum technology、ptech、reich technologies、softeam、sterling software和taskon。為了制定uml規範,并把uml與其他的标準化成果結合起來,成立了一支由mci systemhouse公司的cris kobryn上司并由rational公司的ed eykholt管理的語義任務組。在1997年7月,把uml的修改版(1.1版本)送出給omg,申請進行标準化審查。1997年9月,omg的分析與設計任務組(analysis and design task force,adtf)和omg的體系結構部接受了該版本,并把它送出給omg的全體成員進行表決。1997年11月14日,uml 1.1版本被omg采納。

幾年來,uml一直由omg的修訂任務組(revision task force,rtf)維護,陸續研發了uml的1.3、1.4和1.5版本。從2000年到2003年,一個經過擴充了的新的夥伴組織制定了一個更新的uml規範,即uml 2.0。由ibm的bran selic上司的定案任務組(finalization task force,ftf)對這個版本進行了為期一年的評審,uml 2.0的正式版本于2005年初被omg采納。uml 2.0是對uml 1的重大修訂,包括了大量的新增特性。此外,基于先前版本的經驗,uml 2.0對先前版本的構造物做了很多的修改。可以在omg的網站www.omg.org上獲得目前的uml規範文檔。

uml是很多人的工作成果,它的思想來自于大量的先前工作。重新構造一個貢獻者的完整清單将是一項很大的曆史性研究工程,根據對uml影響大小來識别那麼多的先驅者就更為困難了。同所有的科學研究和工程實踐一樣,uml隻是站在巨人肩上而已。

1 uml2.0釋出之後版本已多次更新,各個版本統稱為uml2,目前最新的版本是uml2.4。本書絕大部分内容對uml2.0之後的各個版本仍然适應。——譯者注

2中文版已由機械工業出版社出版,中文書名《uml參考手冊》。——編者注

3中文版已由機械工業出版社出版,中文書名《統一軟體開發過程》。——編者注

4本書中用灰色字代替原版中的藍字表示這種差別。——編者注

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。

目錄

<a href="https://yq.aliyun.com/articles/96091">第1章 為什麼要模組化</a>

<a href="https://yq.aliyun.com/articles/96091">1.1 模組化的重要性</a>

<a href="https://yq.aliyun.com/articles/96097">1.2 模組化原理</a>

<a href="https://yq.aliyun.com/articles/96099">1.3 面向對象模組化t</a>

<a href="https://yq.aliyun.com/articles/96105">第2章 uml介紹</a>

<a href="https://yq.aliyun.com/articles/96105">2.1 uml概述</a>

<a href="https://yq.aliyun.com/articles/96126">2.2 uml的概念模型</a>

<a href="https://yq.aliyun.com/articles/96129">2.3 體系結構</a>

<a href="https://yq.aliyun.com/articles/96135">2.4 軟體開發生命周期</a>

第3章 hello, world!

第二部分 對基本結構模組化

第4章 類

第5章 關系

第6章 公共機制

第7章 圖

第8章 類圖

第三部分 對進階結構模組化

第9章 進階類

第10章 進階關系

第11章 接口、類型和角色

第12章 包

第13章 執行個體

第14章 對象圖

第15章 構件

第四部分 對基本行為模組化

第16章 互動

第17章 用況

第18章 用況圖

第19章 互動圖

第20章 活動圖

第五部分 對進階行為模組化

第21章 事件和信号

第22章 狀态機

第23章 程序和線程

第24章 時間和空間

第25章 狀态圖

第六部分 對體系結構模組化

第26章 制品

第27章 部署

第28章 協作

第29章 模式和架構

第30章 制品圖

第31章 部署圖

第32章 系統和模型

第七部分 結束語

第33章 應用uml

附錄a uml表示法

附錄b rational統一過程

術語表

索引

繼續閱讀