Aspect-oriented software development (AOSD) is a software programming solution built to address the modularity deficiencies of traditional software development approaches — structural, procedural, and object-oriented programming methods alike. It is an approach designed to complement conventional designs rather than replace them.
AOSD introduces a new modularization of systems, separating secondary functions from the primary business logic — many concerns represented in separate units, automatically joined into a complete working system.The idea in one breath
AOSD, in brief, focuses first on the identification, specification, and representation of concerns that are cross-cutting. It then involves the modularization of these concerns into distinct functional units — and finally their automation, so that they work together as one complete system.
01The Problem With Traditional Software Development
Traditional software design is concerned with splitting software systems into primary functional units — in full knowledge that some concerns don't fit properly into those primary units. In the traditional process, the programmer is left to write the code for each corresponding function and to make sure every issue of concern is properly addressed. That means a great deal of wrestling with interactions, and with getting expected behaviour to execute at the intended time. Because such a concern spans many primary units of the system, it becomes a real problem during both development and maintenance. AOSD is designed to handle this difficulty efficiently.
02The Impact Of Cross-Cutting
In AOSD, an aspect of a program is said to exhibit a cross-cutting concern if it affects other concerns. A concern, here, simply describes a set of information that has an effect on the code of the program. Cross-cutting concerns cannot be neatly decomposed — in either implementation or design — from the other parts of the computer program. This invariably results in duplicated code, or what is commonly called scattering.
03Implementing AOSD
The drive for implementing AOSD comes from the need to address the problems of code tangling and scattering presented by cross-cutting concerns. With scattering, the code of a concern is spread across many modules: the implementation is not modular, and it touches many modules at once. With a tangled concern, likewise, its code is interwoven with code implementing other concerns — the module loses cohesiveness.
Now, you cannot modularize cross-cutting concerns by applying the decomposition principles of traditional programming languages, because they simply do not share the same decomposition rules. AOSD addresses this by providing systemic identification, representation, separation, and composition. Cross-cutting concerns are instead encapsulated in distinct modules referred to as aspects. Aspects promote the localization that is required to solve the problem of cross-cutting concerns. As a result, modularization improves — reducing the various costs of evolution, maintenance, and development.
04Top Features Of Aspect-Oriented Software Development
- AOSD focuses on the core areas of identification and investigation, specification, and representation of concerns that can present cross-cutting behaviour.
- AOSD gives complementary benefits and can be used alongside other coding standards.
- AOSD ensures better modularization mechanisms in program design — reducing software design, maintenance, and development costs.
- AOSD is a better way to handle localization of cross-cutting concerns, because those concerns are encapsulated in dedicated modules.
- AOSD makes available software coding methods and tools that support modularization at the source-code stage.
- AOSD ensures an improved, smaller code size, as a direct result of addressing the cross-cutting issues.
- AOSD encourages the reuse of code created by the modularization technique.
In short: aspect-oriented software development seeks a better way to apply modularization in software development — by effectively handling the issues of cross-cutting concerns.