---++ Description Functional decomposition is good for flexibility, maintainance and modularity of programs. However, it is not necessarily good for other aspects of programming, e.g., memory efficiency, error handling, etc. To cope with such aspects it is often necessary to write monolithic programs in which components share knowledge. Aspect-Oriented Programming is a paradigm that attempts to cater for functional decomposition and other aspects of programming. Aspect programs describe how normal programs can be modified in order to deal with some aspect. An aspect-oriented program consists of component programs and aspect programs. An aspect weaver combines these into a final, tangled program in which components and aspects are expressed. One of the first implementations of Aspect Oriented Programming is AspectJ, this is an extension to java. ---++ Tools * AspectJ * [[AspectBench Compiler]] (abc) * [[XAspects]] * [[InjectJ]] * [[Jiazzi]] ---++ References * AspectOrientedProgrammingReview * Chapter 8 of GenerativeProgrammingBook ---++ See Also External * Website of the annual [[http://aosd.net/][Aspect-Oriented Software Development Conference]] (AOSD) * [[http://www.aosd.net/wiki/][AOSD Wiki]] * [[http://www.aosd.net/wiki/index.php?title=Technology][AOSD tools, methods and research projects]]