"Developers who are using aspect-oriented programming will appreciate this contribution to aspect-oriented analysis and design. The authors are pioneers in this area and have elaborated on past research to produce a detailed methodology and notation for early aspects."
Ron Bodkin, Chief Technology Officer, New Aspects of Software
"Aspect-orientation is a powerful approach for programming complex systems. There is a lot to be gained from applying this approach during modeling and designing, as well. The Theme approach in this book represents an important advancement in AOP adoption by providing practitioners means to apply aspect-orientation early on."
Ramnivas Laddad, Author of AspectJ in Action
"Clarke & Baniassad have written an interesting book that shows how to use aspects to solve a difficult problem: composing independent program fragments with overlapping functionality. The included case studies well illustrate the principles. I recommend the book.
Charles B. Haley, Research Fellow, The Open University
"This book presents a very useful set of techniques for helping software developers to identify the aspects. I am sure that this book will rapidly become a landmark reference for the software community!"
João M. Fernandes, Ph.D., Universidade do Minho
Aspect-oriented software development (AOSD) is emerging as a viable approach for allowing the separate expression of multiple concerns along with "weaving" technologies for knitting together these separate expressions into coherent systems. Thanks to its great promise as an approach to simplifying the development of complex systems, many expert observers view AOSD as a worthwhile successor to the prevalent object-oriented paradigm.
In this new book, two AOSD experts apply theory to the practical realm of real-world development. They explain the different kinds of aspects, help the reader identify them, and provide guidance on successful design and implementation. The result is an applicable and easy-to-digest methodology for simplifying and optimizing the development of software systems.
Aspect-Oriented Analysis and Design: The Theme Approach will be particularly helpful for developers who are trying to answer the common questions of "What is an aspect?", "Which aspects should I be coding?", and "How do I design aspects?" Readers will come away with a starting point for thinking about aspects and accounting for them in requirements and design.
Meanwhile, seasoned AO practitioners will learn more about different models of decomposition, identifying aspect functionality in requirements documentation, designing aspects, and how to map aspect designs to code. The authors' groundbreaking Theme approach to AOSD offers both a flexible way to identify aspect functionality and a UML-based design modeling language that can describe aspects independently of programming language.
In short, practitioners and early adopters of AO alike will appreciate this book's practical information on how to make the significant shift to AOSD.