Aspect-Oriented Software Development
Today, software engineers must build systems that address an increasingly wide range of technical, business, and performance concerns. Doing so using conventional object-oriented techniques, they often find themselves producing tangled, incorrect, difficult-to-maintain code. Aspect-oriented software development (AOSD) overcomes this problem by enabling them to express concerns separately, and then compose modularized expressions into reliable, effective systems.
In this book, four leaders in AOSD development bring together today's most significant advances. Drawing on contributions from the field's leading researchers, they introduce fundamental AOSD concepts, present new technologies for AOSD engineering and programming, and detail early application experiences with AOSD methods.
Aspect-oriented development has come of age. If you're an experienced software engineer or architect, this foundation reference is all you need to start applying it in real-world systems.
Coverage includes
- Using AOSD to streamline complex systems development without sacrificing flexibility or scalability
- How AOSD builds on the object-oriented paradigm and how it's different
- State-of-the-art best practices for the AOSD development process
- Languages and foundations: separating concerns, filter technologies, improving modularity, integrating new features, and more
- Using key AOSD tools, including AspectJ, Hyper/J, JMangler, and Java Aspect Components
- Engineering aspect-oriented systems: UML, concern modeling and elaboration, dependency management, and aspect composition
- Developing more secure applications with AOSD techniques
- Applying aspect-oriented programming to database systems
- Building dynamic aspect-oriented infrastructure
Review By: Vivek Vaishampayan
06/23/2010"Aspect-Oriented Software Development" is an excellent reference book that explains the concepts of AOSD and related terminologies. This book is a collection of well-organized research papers, where each paper presentation becomes a self-contained chapter. Each chapter is so rich that it is almost equivalent to reading another small book.
The book is structured in three parts:
Part One, "Languages and Foundation," explains topics such as separating concerns, filter technologies, improving modularity, integrating new features, and more. This part of the book also clearly presents new key AOSD tools, including AspectJ, Hyper/J, JMangler, and Java Aspect Components (JAC).
Part Two, "Software Engineering," presents in great details the engineering of aspect-oriented systems, UML with reference to AOSD, concern modeling and elaboration, dependency management, and aspect composition. This part of the book represents the core of new technology and basically how to engineer it in the best possible and most technical way.
Part Three, "Applications," deals with building dynamic aspect-oriented infrastructure. This part of the book explains how the infrastructure leads to developing more secure applications with AOSD techniques. In one of the chapters, the authors have nicely presented an application describing how to apply AOP to database systems.
The book essentially covers state-of-art best practices for AOSD development process, how AOSD builds on the object-oriented paradigm, yet how it’s different. The subject matter coverage includes using AOSD to streamline complex systems development without sacrificing flexibility and scalability. The subject matter is covered at an expert level and presented in a technical and research oriented manner. The writing style of all authors is uniform and easy to understand. It’s worth noting however that most of the examples described as applications are still research projects.
Aspect-Oriented Software Development is primarily meant for experienced software engineers and architects. It provides the framework, guidance, and the necessary references to build systems that address an increasingly wide range of technical, business, and performance concerns. The authors paved the path for experienced software engineers, enabling them to express concerns separately, and then compose modularized expressions into reliable, effective systems. The AOSD concepts, tools, and applications described in this book make it a perfect book on the subject matter of Aspect-Oriented Software Development.