AOSD.net
Journal · Basics

Basic Things You Should Know About AOSD As A Computer Programmer

A working vocabulary for the aspect-oriented world: concerns, advice, join points, point cuts — and why none of them should scare you.

A programmer studying software diagrams on a whiteboard
Core information at your fingertips makes any new paradigm navigable.

As a computer programmer, there is core information you should have at your fingertips about any programming language. That knowledge helps you navigate its program designs easily, with a better understanding of its working principles. Since aspect-oriented programming is still a new baby in the programming world — and is built on a new abstraction called aspects — here are the basic things you should know about programming the aspect-oriented way.

The seven essentials
  • The key focus of AOSD: concerns, understanding, maintainability
  • Parallel development through use-case modules
  • Extension concerns — advice layered on a base
  • AOSD works alongside other approaches like OOP
  • Concerns are not a problem — they are the requirements
  • Separation: every element does one thing
  • Join points and point cuts — where aspects attach

01Key Focus Of AOSD

Books and a laptop for learning AOSD
There are many resources from which to learn AOSD.

Across the entire lifecycle of the aspect-oriented software development process, the programming approach keeps two major focuses. The first is the set of concerns about the system itself; the second is the pair of factors of adequate understanding of the system and its maintainability. The latter is established through designs, models, and the implementation of components.

02Parallel Development

Aspect-oriented programming provides a parallel development environment. It can completely transform use cases into use-case modules and slices. Since use-case modules are independent of one another, work on each module can proceed simultaneously, as separate projects — a genuine boost to how teams organise development.

03Separating Extension Concerns

Translucent layers stacked over a solid base, symbolizing extension concerns
Aspect-oriented programming has many useful applications.

A base concern can have another concern defined on top of it — an extension concern. Extension concerns represent additional features or services. Throughout its development lifecycle, AOSD can carry extension concerns, which in aspect-oriented programming are called advice. Through the composition mechanism, advice can be mixed freely with other concerns.

04Used Alongside Other Approaches

Aspect-oriented software development is used together with other conventional approaches, such as object-oriented programming. It serves to improve software development by implementing function encapsulation that cuts across — and exists alongside — other functionality and concerns. Aspects specify where they are to be added to a system, including the code that implements the cross-cutting concerns themselves.

05Concerns Should Not Be A Programming Problem

As a programmer, you should know that concerns are part of the program and should never be treated as an issue in aspect-oriented software development. They are the aspects of a system that reflect the system requirements and the stakeholders' priorities in the program.

The key concerns — the primary purpose of the program — describe the functional concerns, while QoS and non-functional requirements are reflected by the secondary concerns.Functional vs. secondary concerns

06Separation

The standard of separation of concerns states that programs are to be organised so that every program element does just one thing, alone. This implies, too, that each element in the program should be easy to understand without needing to reference other elements. It is also worth knowing that program abstractions such as procedures, subroutines, and objects all support the separation of these concerns.

Diagram of join points and point cuts along a program's execution
Join points and point cuts, illustrated.

07Join Points And Point Cuts

In aspect-oriented software development, the join point is the location in a system where you may include an aspect. A typical join point model includes:

A point cut, similarly, defines where specifically an aspect will be included in a system. It identifies the particular events with which advice is to be associated. For instance, the contexts in which advice can be included in a program are:

Next in the journal

Importance Of Modularity In Programming

Read it