Description:
Modern distributed component computing and its platforms like J2EE and .NET have found its way into quite a lot of projects. They remove the burden of architecting, designing and implementing some non functional core requirements like transaction handling, persistence and distribution. They promise an unexpected level of software productivity in conjunction with modern programming techniques like refactoring.
Unfortunately they fail in implementing the remaining non-functional requirements in a modular way. Problems like tracing, logging, synchronisation, caching, pooling, auditing, security and exception handling, just to name some of them can not be modularised. Even worse it is hard (if not impossible) to implement business functionality, which capture business rules, in a modular way in most architectures.
The results are source code fragments, which do belong to one functionality (and of course this functionality should be stored in exactly one module), but these fragments are spread out through the whole code base. This has several severe impacts on the software development process:
- It reduces the reusability of components, because they are often limited by non functional limitations, which are not defined by the problem domain (e.g availability of a specific logging API, some security/ auditing constraints, etc. )
- It reduces the productivity of the developer, because they cannot focus on just one requirement, but they have to implement totally different requirements at the same time.
- Developers must manually insert redundant code in plenty of places, just to fulfil company policies for some major non functional requirements. This boring and expensive manual task makes it hard and costly to maintain and evolve the code base, because simple and necessary changes can not be performed in a single place.
Aspect oriented software development (AOSD) is the next programming paradigm, which eliminates these problems. The current focus of AOSD is on aspect oriented programming (AOP). Early adopters from research and industry have gained great productivity improvements with AOP. MIT considers therefore AOSD as one of the top 10 technologies for the next 10 years.
This presentation explains the concepts and ideas behind AOP on Java and AspectJ code fragments. However the ideas and concepts are similar by other AOP-languages like AspectC++ and AspectS and also by AOP Frameworks like AspectWerkz, Nanning, Jac, JBoss AOP-API.