Synopses & Reviews
"Since its original introduction in 1997, the Unified Modeling Language has revolutionized software development. Every integrated software development environment in the world--open-source, standards-based, and proprietary--now supports UML and, more importantly, the model-driven approach to software development. This makes learning the newest UML standard, UML 2.0, critical for all software developers--and there isn't a better choice than this clear, step-by-step guide to learning the language."
--Richard Mark Soley, Chairman and CEO, OMG
If you're like most software developers, you're building systems that are increasingly complex. Whether you're creating a desktop application or an enterprise system, complexity is the big hairy monster you must manage.
The Unified Modeling Language (UML) helps you manage this complexity. Whether you're looking to use UML as a blueprint language, a sketch tool, or as a programming language, this book will give you the need-to-know information on how to apply UML to your project. While there are plenty of books available that describe UML, Learning UML 2.0 will show you how to use it. Topics covered include:
- Capturing your system's requirements in your model to help you ensure that your designs meet your users' needs
- Modeling the parts of your system and their relationships
- Modeling how the parts of your system work together to meet your system's requirements
- Modeling how your system moves into the real world, capturing how your system will be deployed
Engaging and accessible, this book shows you how to use UML to craft and communicate your project's design. Russ Miles and Kim Hamilton have written a pragmatic introduction to UML based on hard-earned practice, not theory. Regardless of the software process or methodology you use, this book is the one source you need to get up and running with UML 2.0.
Russ Miles is a software engineer for General Dynamics UK, where he works with Java and Distributed Systems, although his passion at the moment is Aspect Orientation and, in particular, AspectJ. Kim Hamilton is a senior software engineer at Northrop Grumman, where she's designed and implemented a variety of systems including web applications and distributed systems, with frequent detours into algorithms development.
With its clear introduction to the Unified Modeling Language (UML) 2.0, this tutorial offers a solid understanding of each topic, covering foundational concepts of object-orientation and an introduction to each of the UML diagram types.
About the Author
Russ Miles is a co-founder and CEO at OpenCredo, a software development best practice consultancy based in the UK, where he specializes in enterprise software development, working with many international clients. In addition to being a popular trainer, Russ speaks at international conferences on subjects ranging from Agile Software Development to Cloud Computing. He also leads and contributes to a number of open source projects.
Kim Hamilton is a senior software engineer at a major aerospace corporation, where she has designed and implemented a variety of systems, including web applications and distributed systems. Kim has a Master's in Applied Math and Computer Science from Cornell University.
Table of Contents
Preface; Audience; About This Book; Assumptions This Book Makes; Conventions Used in This Book; Using Code Examples; Safari® Enabled; How to Contact Us; Acknowledgments; Chapter 1: Introduction; 1.1 What's in a Modeling Language?; 1.2 Why UML 2.0?; 1.3 Models and Diagrams; 1.4 "Degrees" of UML; 1.5 UML and the Software Development Process; 1.6 Views of Your Model; 1.7 A First Taste of UML; 1.8 Want More Information?; Chapter 2: Modeling Requirements: Use Cases; 2.1 Capturing a System Requirement; 2.2 Use Case Relationships; 2.3 Use Case Overview Diagrams; 2.4 What's Next?; Chapter 3: Modeling System Workflows: Activity Diagrams; 3.1 Activity Diagram Essentials; 3.2 Activities and Actions; 3.3 Decisions and Merges; 3.4 Doing Multiple Tasks at the Same Time; 3.5 Time Events; 3.6 Calling Other Activities; 3.7 Objects; 3.8 Sending and Receiving Signals; 3.9 Starting an Activity; 3.10 Ending Activities and Flows; 3.11 Partitions (or Swimlanes); 3.12 Managing Complex Activity Diagrams; 3.13 What's Next?; Chapter 4: Modeling a System's Logical Structure: Introducing Classes and Class Diagrams; 4.1 What Is a Class?; 4.2 Getting Started with Classes in UML; 4.3 Visibility; 4.4 Class State: Attributes; 4.5 Class Behavior: Operations; 4.6 Static Parts of Your Classes; 4.7 What's Next; Chapter 5: Modeling a System's Logical Structure: Advanced Class Diagrams; 5.1 Class Relationships; 5.2 Constraints; 5.3 Abstract Classes; 5.4 Interfaces; 5.5 Templates; 5.6 What's Next; Chapter 6: Bringing Your Classes to Life: Object Diagrams; 6.1 Object Instances; 6.2 Links; 6.3 Binding Class Templates; 6.4 What's Next?; Chapter 7: Modeling Ordered Interactions: Sequence Diagrams; 7.1 Participants in a Sequence Diagram; 7.2 Time; 7.3 Events, Signals, and Messages; 7.4 Activation Bars; 7.5 Nested Messages; 7.6 Message Arrows; 7.7 Bringing a Use Case to Life with a Sequence Diagram; 7.8 Managing Complex Interactions with Sequence Fragments; 7.9 What's Next?; Chapter 8: Focusing on Interaction Links: Communication Diagrams; 8.1 Participants, Links, and Messages; 8.2 Fleshing out an Interaction with a Communication Diagram; 8.3 Communication Diagrams Versus Sequence Diagrams; 8.4 What's Next?; Chapter 9: Focusing on Interaction Timing: Timing Diagrams; 9.1 What Do Timing Diagrams Look Like?; 9.2 Building a Timing Diagram from a Sequence Diagram; 9.3 Applying Participants to a Timing Diagram; 9.4 States; 9.5 Time; 9.6 A Participant's State-Line; 9.7 Events and Messages; 9.8 Timing Constraints; 9.9 Organizing Participants on a Timing Diagram; 9.10 An Alternate Notation; 9.11 What's Next?; Chapter 10: Completing the Interaction Picture: Interaction Overview Diagrams; 10.1 The Parts of an Interaction Overview Diagram; 10.2 Modeling a Use Case Using an Interaction Overview; 10.3 What's Next?; Chapter 11: Modeling a Class's Internal Structure: Composite Structures; 11.1 Internal Structure; 11.2 Showing How a Class Is Used; 11.3 Showing Patterns with Collaborations; 11.4 What's Next?; Chapter 12: Managing and Reusing Your System's Parts: Component Diagrams; 12.1 What Is a Component?; 12.2 A Basic Component in UML; 12.3 Provided and Required Interfaces of a Component; 12.4 Showing Components Working Together; 12.5 Classes That Realize a Component; 12.6 Ports and Internal Structure; 12.7 Black-Box and White-Box Component Views; 12.8 What's Next?; Chapter 13: Organizing Your Model: Packages; 13.1 Packages; 13.2 Namespaces and Classes Referring to Each Other; 13.3 Element Visibility; 13.4 Package Dependency; 13.5 Importing and Accessing Packages; 13.6 Managing Package Dependencies; 13.7 Using Packages to Organize Use Cases; 13.8 What's Next?; Chapter 14: Modeling an Object's State: State Machine Diagrams; 14.1 Essentials; 14.2 States; 14.3 Transitions; 14.4 States in Software; 14.5 Advanced State Behavior; 14.6 Composite States; 14.7 Advanced Pseudostates; 14.8 Signals; 14.9 Protocol State Machines; 14.10 What's Next?; Chapter 15: Modeling Your Deployed System: Deployment Diagrams; 15.1 Deploying a Simple System; 15.2 Deployed Software: Artifacts; 15.3 What Is a Node?; 15.4 Hardware and Execution Environment Nodes; 15.5 Communication Between Nodes; 15.6 Deployment Specifications; 15.7 When to Use a Deployment Diagram; 15.8 What's Next?; Appendix A: Object Constraint Language; A.1 Building OCL Expressions; A.2 Types; A.3 Operators; A.4 Pulling It Together; A.5 Context; A.6 Types of Constraints; A.7 OCL Automation; Appendix B: Adapting UML: Profiles; B.1 What Is a Profile?; B.2 Stereotypes; B.3 Tagged Values; B.4 Constraints; B.5 Creating a Profile; B.6 Working with the Meta-Model; B.7 Using a Profile; B.8 Why Bother with Profiles?; Appendix C: A History of UML; C.1 Take One Part OOAD...; C.2 ...with a Sprinkling of OOSE...; C.3 ...Add a Dash of OMT...; C.4 ...and Bake for 10 to 15 Years; Colophon;