That you have picked up this book tells us that you are a member of the software development community: a tester, a developer, a project leader, a project manager, an architect, an analyst, or a member involved in one of the many other aspects of developing. We also know that you are someone who wants to improve the way you develop software. You want your sys tem to be more maintainable, more extensible, more reusable, and if you are a project leader, you want your team to be more productive. You know that these goals are not always easy to achieve.
……
Aspect-oriented programming (AOP) is a revolutionary new way to think about software engineering. AOP was introduced to address crosscutting concerns such as security, logging, persistence, debugging, tracing, distribution, performance monitoring, and exception handling in a more effective mariner. Unlike conventional development techniques, which scatter the implementation of each concern into multiple classes, aspect-oriented programming localizes them.
Aspect-oriented software development (AOSD) uses this approach to create a better modularity for functional and nonfunctional requirements, platform specifics, and more, allowing you to build more understandable systems that are easier to configure and extend to meet the evolving needs of stakeholders.
In this highly anticipated new book, Ivar Jacobson and Pan-Wei Ng demonstrate how to apply use cases--a mature and systematic approach to focusing on stakeholder concerns--and aspect-orientation in building robust and extensible systems. Throughout the book, the authors employ a single, real-world example of a hotel management information system to make the described theories and practices concrete and understandable.
The authors show how to identify, design, implement, test, and refactor use-case modules, as well as extend them. They also demonstrate how to design use-case modules with the Unified Modeling Language (UML)-- emphasizing enhancements made in UML 2.0--and how to achieve use-case modularity using aspect technologies, notably AspectJ. Key topics include
·Making the case for use cases and aspects
· Capturing and modeling concerns with use cases
· Keeping concerns separate with use-case modules
· Modeling use-cases stices and aspects using the newest extensions to the UML notation
· Applying use cases and aspects in projects
Preface
Acknowledgments
PART I The Case for Use Cases and Aspects
Chapter 1 Problem to Attack
1.1 The Use of Components Today
1.1.1 Building a System with Components
1.1.2 Benefits of Components
1.2 Limitation of Components
1.2.1 Inability to Keep Peers Separate
1.2.2 Inability to Keep Extensions Separate
1.3 Approaching a Solution
1.3.1 Early Support for Extensions
1.3.2 Support for Extensions in UML
1.4 Keeping Concerns Separate
Chapter 2 Attacking the Problem with Aspects
2. l Approaching a Solution with Aspects
2.2 Keeping Peers Separate with Aspects
2.3 Keeping Extensions Separate with Aspects
2.4 Need for Methodological Guidance
Chapter 3 Today with Use Cases
3.1 Use Cases in Brief
3.2 USe-Case-Driven Development
3.3 Roles and Benefits of Use Cases
3.4 Gaps in the Use-Case Technique
3.5 Bridging the Gaps with Aspects
Chapter 4 Tomorrow with Use-Case Modules
4.1 Building Systems in Overlays with Use-Case Slices
4.2 Keeping Peer Use Cases Separate
4.3 Keeping Extension Use Cases Separate
4.4 Developing with Use-Case Modules
PART II Modeling and Capturing Concerns with Use Cases
Chapter 5 Modeling Concerns with Use Cases
5.1 Use-Case Modeling
5.2 Use-Case Instances and Flows of Events
5.3 Describing Use Cases
5.4 Visualizing Use-Case Flows
5.5 Summary and Highlights
Chapter 6 Structuring Use Cases
6.1 Use-Case Relationships
6.2 Use-Case Extend Relationship
6.3 Use-Case Include Relationship
6,4 Use-Case Generalization
6.5 Utility Use Cases
6.6 Summary and Highlights
Chapter 7 Capturing Concerns with Use Cases
7. l Understanding Stakeholder Concerns
7.1.1 Understanding the Problem Domain
……