AOSD.net
Journal · Explanations

Aspect-Oriented Software Development As Explained By Professionals

The definitive plain-language explanation: what AOSD fixes, why cross-cutting concerns hurt, and the features that make the paradigm worth adopting.

An architect explaining a layered software diagram to colleagues
Professionals frame AOSD as a complement to conventional design — not a replacement.

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

A cracked monolith contrasted with tidy separated modules
Traditional software development has drawbacks the AOSD solves.

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

Notes and a laptop for learning the basics of AOSD
Learn the basics of AOSD — tangling and scattering are the enemies.

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

Seven features to remember
  • 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.

Next in the journal

Read it