"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. Additional information including exercises can be found at www.learninguml2.com.
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.
Table of contents
- 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?
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?
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?
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
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
- 6. Bringing Your Classes to Life: Object Diagrams
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?
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?
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?
- 10. Completing the Interaction Picture: Interaction Overview Diagrams
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?
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?
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?
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?
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?
- A. Object Constraint Language
- B. Adapting UML: Profiles
- C. A History of UML
- About the Authors
- Title: Learning UML 2.0
- Release date: April 2006
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9780596009823
You might also like
Designing Data-Intensive Applications
Data is at the center of many challenges in system design today. Difficult issues need to …
Messy code is a nuisance. "Tidying" code, to make it more readable, requires breaking it up …
Modern Software Engineering: Doing What Works to Build Better Software Faster
Improve Your Creativity, Effectiveness, and Ultimately, Your Code In Modern Software Engineering, continuous delivery pioneer David …
Mythical Man-Month, The: Essays on Software Engineering, Anniversary Edition, 2nd Edition
Few books on software project management have been as influential and timeless as The Mythical Man-Month. …