Business Analysis for Information Technology
Books and Selected Products
Addison–Wesley Professional
September 1998
Hardcover, 512 pages
ISBN: 0201571684

Description
Just as architects and musicians need architectural drawings or music scores to be written using standard notations that everyone agrees on and understands, developers need a single, common, widely usable modeling language for the development of software systems. The UML has been proposed as this standard and has received the support of academic and industry heavyweights.
The Unified Modeling Language User Guide is the first of three definitive UML works written by the creators of UML, Grady Booch, Jim Rumbaugh, and Ivar Jacobson. Together these three widely respected and world–famous methodologists form an unbeatable author team representing combined worldwide sales of their prior individual books of more than 250,000 copies. This book will introduce the core 80% of the UML, approaching it in a layered fashion and providing numerous examples of its application. The Unified Modeling Language User Guide is suitable for developers unfamiliar with UML or with modeling in general.
The Unified Modeling Language (UML) is a graphical language for visualizing, specifying, constructing, and documenting the artifacts of a software–intensive system. The UML gives you a standard way to write a system‘s blueprints, covering conceptual things, such as business processes and system functions, as well as concrete things, such as classes written in a specific programming language, database schemas, and reusable software components.
This book teaches you how to use the UML effectively. Goals
In this book, you will
Learn what the UML is, what it is not, and why the UML is relevant to the process of developing software–intensive systems Master the vocabulary, rules, and idioms of the UML and, in general, learn how to "speak" the language effectively Understand how to apply the UML to solve a number of common modeling problems
The user guide provides a reference to the use of specific UML features. However, it is not intended to be a comprehensive reference manual for the UML; that is the focus of another book, The Unified Modeling Language Reference Manual (Rumbaugh, Jacobson, Booch, Addison–Wesley, 1999).
The user guide describes a development process for use with the UML. However, it is not intended to provide a complete reference to that process; that is the focus of yet another book, The Unified Software Development Process (Jacobson, Booch, Rumbaugh, Addison–Wesley, 1999).
Finally, this book provides hints and tips for using the UML to solve a number of common modeling problems, but it does not teach you how to model. This is similar to a user guide for a programming language that teaches you how to use the language but does not teach you how to program. Audience
The UML is applicable to anyone involved in the production, deployment, and maintenance of software. The user guide is primarily directed to members of the development team who create UML models. However, it is also suitable to those who read them, working together to understand, build, test, and release a software–intensive system. Although this encompasses almost every role in a software development organization, the user guide is especially relevant to analysts and end users (who specify the required structure and behavior of a system), architects (who design systems that satisfy those requirements), developers (who turn those architectures into executable code), quality assurance personnel (who verify and validate the system‘s structure and behavior), librarians (who create and catalogue components), and project and program managers (who generally wrestle with chaos, provide leadership and direction, and orchestrate the resources necessary to deliver a successful system).
The user guide assumes a basic knowledge of object–oriented concepts. Experience in an object–oriented programming language or method is helpful but not required. How to Use This Book
For the developer approaching the UML for the first time, the user guide is best read linearly. You should pay particular attention to Chapter 2, which presents a conceptual model of the UML. All chapters are structured so that each builds upon the content of the previous one, thus lending itself to a linear progression.
For the experienced developer seeking answers to common modeling problems using the UML, this book can be read in any order. You should pay particular attention to the common modeling problems presented in each chapter. Organization and Special Features
The user guide is organized into seven major sections:
Section 1 Getting Started Section 2 Basic Structural Modeling Section 3 Advanced Structural Modeling Section 4 Basic Behavioral Modeling Section 5 Advanced Behavioral Modeling Section 6 Architectural Modeling Section 7 Wrapping Up
The user guide contains three appendices: a summary of the UML notation, a list of standard UML elements, and a summary of the Rational Unified Process. A glossary of common terms is also provided.
Each chapter addresses the use of a specific UML feature, and most are organized into the following four sections:
Getting Started Terms and Concepts Common Modeling Techniques Hints and Tips
The third section introduces and then solves a set of common modeling problems. To make it easy for you to browse the guide in search of these use cases for the UML, each problem is identified by a distinct heading.
Each chapter begins with a summary of the features it covers, as in the following example.
In this chapter
Active objects, processes, and threads Modeling multiple flows of control Modeling interprocess communication Building thread–safe abstractions
Similarly, parenthetical comments and general guidance are set apart as notes, as in the following example. Note: You can specify more complex multiplicities by using a list, such as 0..1, 3..4, 6..*, which would mean "any number of objects other than 2 or 5."
The UML is semantically rich. Therefore, a presentation about one feature may naturally involve another. In such cases, cross references are provided in the left margin. Blue highlights are used in figures to distinguish text that explains a model from text that is part of the model itself. Code is distinguished by displaying it in a monospace font, as in this example. A Brief History of the UML
Object–oriented modeling languages appeared sometime between the mid 1970s and the late 1980s as methodologists, faced with a new genre of object–oriented programming languages and increasingly complex applications, began to experiment with alternative approaches to analysis and design. The number of object–oriented methods increased from fewer than 10 to more than 50 during the period between 1989 and 1994. Many users of these methods had trouble finding a modeling language that met their needs completely, thus fueling the so–called method wars. Learning from experience, new generations of these methods began to appear, with a few clearly prominent methods emerging, most notably Booch, Jacobson‘s OOSE (Object–Oriented Software Engineering), and Rumbaugh‘s OMT (Object Modeling Technique). Other important methods included Fusion, Shlaer–Mellor, and Coad–Yourdon. Each of these was a complete method, although each was recognized as having strengths and weaknesses. In simple terms, the Booch method was particularly expressive during the design and construction phases of projects, OOSE provided excellent support for use cases as a way to drive requirements capture, analysis, and high–level design, and OMT–2 was most useful for analysis and data–intensive information systems.
A critical mass of ideas started to form by the mid 1990s, when Grady Booch (Rational Software Corporation), Ivar Jacobson (Objectory), and James Rumbaugh (General Electric) began to adopt ideas from each other‘s methods, which collectively were becoming recognized as the leading object–oriented methods worldwide. As the primary authors of the Booch, OOSE, and OMT methods, we were motivated to create a unified modeling language for three reasons. First, our methods were already evolving toward each other independently. It made sense to continue that evolution together rather than apart, eliminating the potential for any unnecessary and gratuitous differences that would further confuse users. Second, by unifying our methods, we could bring some stability to the object–oriented marketplace, allowing projects to settle on one mature modeling language and letting tool builders focus on delivering more useful features. Third, we expected that our collaboration would yield improvements for all three earlier methods, helping us to capture lessons learned and to address problems that none of our methods previously handled well.
As we began our unification, we established three goals for our work:
To model systems, from concept to executable artifact, using object– oriented techniques To address the issues of scale inherent in complex, mission–critical systems To create a modeling language usable by both humans and machines
Devising a language for use in object–oriented analysis and design is not unlike designing a programming language. First, we had to constrain the problem: Should the language encompass requirements specification? Should the language be sufficient to permit visual programming? Second, we had to strike a balance between expressiveness and simplicity. Too simple a language would limit the breadth of problems that could be solved; too complex a language would overwhelm the mortal developer. In the case of unifying existing methods, we also had to be sensitive to the installed base. Make too many changes, and we would confuse existing users; resist advancing the language, and we would miss the opportunity of engaging a much broader set of users and of making the language simpler. The UML definition strives to make the best trade–offs in each of these areas.
The UML effort started officially in October 1994, when Rumbaugh joined Booch at Rational. Our project‘s initial focus was the unification of the Booch and OMT methods. The version 0.8 draft of the Uni
Backcover Copy
Introduced in 1997, the Unified Modeling Language (UML) has rapidly been accepted throughout the software industry as the standard graphical language for specifying, constructing, visualizing, and documenting software–intensive systems. The UML provides anyone involved in the production, deployment, and maintenance of software with a standard notation for expressing a system‘s blueprint. The UML covers conceptual things, such as business processes and system functions, as well as concrete things, such as programming–language classes, database schemas, and reusable software components.
In The Unified Modeling Language User Guide, the original developers of the UML––Grady Booch, James Rumbaugh, and Ivar Jacobson––provide a tutorial to the core aspects of the language in a two–color format designed to facilitate learning. Starting with a conceptual model of the UML, the book progressively applies the UML to a series of increasingly complex modeling problems across a variety of application domains. This example–driven approach helps readers quickly understand and apply the UML. For more advanced developers, the book includes a learning track focused on applying the UML to advanced modeling problems.
With The Unified Modeling Language User Guide, readers will:
Author Bios
Grady Booch, is the Chief Scientist at Rational Software Corporation and developer of the Booch Method of object–oriented analysis and design. He is also co–developer of the Unified Modeling Language (UML). Widely recognized for these and many contributions in the field, he is a popular speaker at technology conferences around the world. Booch has twice received Software Development magazine‘s coveted Jolt–Cola Product Excellence Award for his seminal text, Object–Oriented Analysis and Design with Applications. Dr. James Rumbaugh is one of the leading object–oriented methodologists. He is the chief developer of the Object Modeling Technique (OMT) and the lead author of the best–selling book Object–Oriented Modeling and Design. Before joining Rational Software Corporation in October 1994, he worked for more than 25 years at General Electric Research and Development Center in Schenectady, New York.
He has been working on object–oriented methodology and tools for many years. He developed the DSM object–oriented programming language, the state tree model of control, the OMT object modeling notation, and the Object Modeling Tool graphic editor. The foundations for the OMT notation were developed more than 10 years ago with Mary Loomis and Ashwin Shah of Calma Corporation. The OMT methodology was developed at GE R&D Center with coauthors Mike Blaha, Bill Premerlani, Fred Eddy, and Bill Lorensen.
Dr. Rumbaugh received his Ph.D. in computer science from MIT. During his Ph.D. research under Professor Jack Dennis, Dr. Rumbaugh was one of the inventors of data flow computer architecture. His career has dealt with semantics of computation, tools for programming productivity, and applications using complex algorithms and data structures. Dr. Rumbaugh has published journal articles on his work and has spoken at leading object–oriented conferences. He writes a regular column for the Journal of Object–Oriented Programming.
Dr. Rumbaugh is the lead author of the recent best–selling book Object–Oriented Modeling and Design, published by Prentice Hall. His latest book, OMT Insights: Perspectives on Modeling from the Journal of Object–Oriented Programming, was released in October 1996. He and his colleagues developed the OMT methodology described in the book based on real–world applications at GE, and they have worked to extend the original methodology. He has taught courses based on the methodology to different audiences around the world, ranging from one–hour seminars to intensive several–day training courses.
He has a B.S. in physics from MIT, an M.S. in astronomy from Caltech, and a Ph.D. in computer science from MIT.
During his career at GE, he worked on a variety of problems, including the design of one of the first time–sharing operating systems, early work in interactive graphics, algorithms for computed tomography, use of parallel machines for fast image generation, VLSI chip design, and finally, object–oriented technology.
Jim developed OMTool, an interactive graphical editor for manipulation of object model diagrams. The editor is commercially available. In addition, he led a five–year programming effort producing production–quality software.
In addition, Jim was the manager of the Software Engineering Program at GE, where he led a team of eight to ten Ph.D. and M.S. scientists performing research in software engineering in the areas of algorithm development, programming languages, program proving, and VLSI computer–aided design. In addition, he performed personal research.
Jim developed Chipwright, an interactive graphical CAD system for VLSI layout with incremental design rule checking. He also led a team of four programmers in implementation.
Jim developed and implemented the object–oriented language DSM, combining object–oriented concepts with database concepts and distributed it within GE for use on production applications. The language was heavily used at Calma Corporation and was extensively extended based on user feedback with a preliminary version.
Jim also developed Vista, a hierarchical interactive standard graphics system (similar to the PHIGS system) written in the object–oriented DSM language. He implemented user–interface applications based on this system, including a configuration–management tool and a user–interface generation tool.
Jim developed the concept of state trees, a structured extension of finite state machines incorporating a new model of object–oriented control. He applied it to the design of user interfaces, and the technique was used as a main aspect of the CHIDE user–interface system developed by colleagues at GE–CRD. Later, it was used in the OMTool object editor.
Jim also developed the Flow Graph System, a generic interactive graphic system for controlling a network of design engineering jobs, including management of multiple versions of data and coordination of information flow among applications. He received a patent on the underlying concepts.
In addition, Jim developed algorithms for the reconstruction of images for computerized tomography using fewer input points and with reduced noise in the reconstructed images. He also developed algorithms for display of three–dimensional images in real time using array processors, and he developed Parallax, a language for programming pipelined array processors.
Jim has served on various committees, including the OOPSLA Program Committee and the TOOLS Program Committee.
Ivar Jacobson, Ph.D., is "the father" of many technologies, including components and component architecture, use cases, modern business engineering, and the Rational Unified Process. He was one of the three amigos who originally developed the Unified Modeling Language. He is the principal author of five best–selling books on these methods and technologies, in addition to being the coauthor of the two leading books on the Unified Modeling Language. Ivar is a founder of Jaczone AB, where he and his daughter and cofounder, Agneta Jacobson, are developing a ground–breaking new product that includes intelligent agents to support software development. Ivar also founded Ivar Jacobson Consulting (IJC) with the goal of promoting good software development practices throughout teams worldwide.