Preface Acknowledgments About the Authors Chapter 1 Introduction Software Development and the Object-Oriented Paradigm The Case for Aspects What Is an Aspect? Why Consider Aspects in Analysis and Design? Aspects and Other Concerns Asymmetric Separation Symmetric Separation The Theme Approach What ls a Theme? Relationships Between Themes Concept Sharing Crossuutting Applying the Theme Approach Analyzing Requirements with Theme/Doc Starting Out Theme Identification Aspect Identification Designing Themes with Theme/UML Design the Themes Specify the Relationships Theme: Symmetric or Asymmetric? Fitting Theme into Your Existing Development Process What About Implementation? Summary Chapter 2 The Object-Oriented Way Differing Unitscof Interest Describing Requirements Requirements Units Motivation for Choosing Units Describing Objects Object-Oriented Units Motivation for Choosing Units Comparing Requirements to Objects Expressions Example Object-Oriencted Design Requirements Scattered and Tangledcin the EES Design Accommodating Evolution Scattering and Tangling with Design Patterns Evolution the Object-Oriented Way Summary Chapter 3 The Theme Approach Chapter 4 Analysis Chapter 5 Theme Design Chapter 6 Theme Composition Chapter 7 Map to Implementation Chapter 8 Case Study: Phone Features Chapter 9 Case Study:Usage Licensing Appendix The Crystal Game Bibliography Index