We recommend the first chapter, which is an introduction to the ideas of aspect-oriented software development, to all readers. Beyond that, system development rests on a basis of programming languages and models, though actual system development demands all the processes of an engineering activity. The ultimate test of a software technology is the systems whose construction it has supported, though aspects are not sufficiently mature to have an impressive portfolio. Correspondingly, after the introduction, the book is structured in three parts: Part 1, "Languages and Foundations," is primarily descriptions of languages for implementing aspects, with some attention to the place of aspects in the programming language universe. Part 2, "Software Engineering," describes technologies for the aspect-oriented software development process. Finally, Part 3, "Applications," details some of the first application experiences using aspect technology. Each part has an introductory section delimiting the space of aspect technology within the topic and outlining the place of each chapter in that space. Beyond that introduction, the chapters (as befits a contributed book on the state-of-the-art) are fundamentally independent. While the authors make the typical reference to other's works, almost every chapter is self-contained. |