Aspect-oriented software development with use cases

Preface. Acknowledgments. I. THE CASE FOR USE CASES AND ASPECTS. 1. Problem to Attack. The Use of Components Today. Limitation of Components. Approaching a Solution. Keeping Concerns Separate. 2. Attacking the Problem with Aspects. Approaching a Solution with Aspects. Keeping Peers Separate with Aspects. Keeping Extensions Separate with Aspects. Need for Methodological Guidance. 3. Today with Use Cases. Use Cases in Brief. Use-Case-Driven Development. Roles and Benefits of Use Cases. Gaps in the Use-Case Technique. Bridging the Gaps with Aspects. 4. Tomorrow with Use-Case Modules. Building Systems in Overlays with Use-Case Slices. Keeping Peer Use Cases Separate. Keeping Extension Use Cases Separate. Developing with Use-Case Modules. II. MODELING AND CAPTURING CONCERNS WITH USE CASES. 5. Modeling Concerns with Use Cases. Use-Case Modeling. Use-Case Instances and Flows of Events. Describing Use Cases. Visualizing Use-Case Flows. Summary and Highlights. 6. Structuring Use Cases. Use-Case Relationships. Use-Case Extend Relationship. Use-Case Include Relationship. Use-Case Generalization. Utility Use Cases. Summary and Highlights. 7. Capturing Concerns with Use Cases. Understanding Stakeholder Concerns. Capturing Application Use Cases. Capturing Infrastructure Use Cases. Summary and Highlights. III. KEEPING CONCERNS SEPARATE WITH USE-CASE MODULES. 8. Keeping Peer Use-Case Realizations Separate with Aspects. Realizing Peer Use Cases. Keeping Use-Case Specifics Separate. Dealing with Overlap. Summary and Highlights. 9. Keeping Extensions Separate with Pointcuts. Realizing Extension Use Cases. Keeping Modularity of Extension Use-Case Realizations. Parameterizing Pointcuts. Generalizing Extension Use-Case Realizations. Templating Use-Case Slices. Summary and Highlights. 10. Building Systems with Use-Case Modules. A System Comprises Models. Use-Case Model. Analysis Model. Design and Implementation Models. Use-Case Modules Cut Across Models. Composing and Configuring Use-Case Modules. Summary and Highlights. IV. ESTABLISHING AN ARCHITECTURE BASED ON USE CASES AND ASPECTS. 11. Road to a Resilient Architecture. What Is Architecture? What Is a Good Architecture? Steps to Establish an Architecture Baseline. Begin with a Platform-Independent Structure. Overlay Platform Specifics on Top. Summary and Highlights. 12. Separating Functional Requirements with Application Peer Use Cases. Analyzing Application Use Cases. Keeping Application Use Cases Separate. Designing Application Use Cases. Refining Design Elements. Summary and Highlights. 13. Separating Functional Requirements with Application-Extension Use Cases. Analyzing Application-Extension Use Cases. Keeping Application-Extension Use Cases Separate. Designing Application-Extension Use Cases. Dealing with Changes in the Base. Summary and Highlights. 14. Separating Nonfunctional Requirements with Infrastructure Use Cases. Analyzing an Infrastructure Use Case. Keeping Infrastructure Use Cases Separate. Designing Infrastructure Use Cases. Dealing with Multiple Infrastructure Use Cases. Summary and Highlights. 15. Separating Platform Specifics with Platform-Specific Use-Case Slices. Keeping Platform Specifics Separate. Overlaying User Interfaces. Overlaying Distribution. Overlaying Persistency. Preserving the Use-Case Structure. Summary and Highlights. 16. Separating Tests with Use-Case Test Slices. Test-First Approach. Identifying Test Cases from Use Cases. Identifying Elements to Be Tested. Designing and Implementing Tests. Summary and Highlights. 17. Evaluating the Architecture. Putting It Together. Evaluating Separation of Concerns. Evaluating and Achieving Systemwide Concerns. Summary and Highlights. 18. Describing the Architecture. Architecture Description Comprises Architectural Views. Architectural View of the Use-Case Model. Architectural View of the Analysis Model. Architectural View of the Design Model. Summary and Highlights. V. APPLYING USE CASES AND ASPECTS IN A PROJECT. 19. Running a Project. Iterative Development. Estimating Development Effort. Planning and Controlling the Project. Productivity Gains by Keeping Concerns Separate. Summary and Highlights. 20. Tailoring the Approach. Achieving the Right Balance. Selecting Disciplines to Apply. Adopting at Different Phases of a Project. Summary and Highlights. 21. Aspects and Beyond. Building a System in Extensions. Balancing Best Practices. The Road Ahead. Appendix A. Modeling Aspects and Use-Case Slices in UML. Appendix B. Notation Guide. References. Glossary. Index.