Date of Award


Document Type

Master Thesis

Degree Name

Masters of Science (Research)


Computer Science

First Advisor

Owen Mackessy


Aspect-Oriented Programming (AOP) is a relatively new programming paradigm, which promises to allow developers to express cross-cutting concerns independently of their application to the primary core concerns of a system. This promises to allow developers the freedom to reason about both the cross-cutting concerns of a system as well as its primary concerns. In allowing for the expression of cross-cutting concerns AOP is extremely powerful; significant benefits have been found such as the ability to reason about cross-cutting concerns, and in some cases dramatic reductions in the number of lines of code required to implement crosscutting behaviour. These benefits however come at a significant cost. It has been noted that as a direct result of the separation of concerns achieved by AOP that activities such as testing, debugging and understanding the resulting system are made more difficult. As a consequence of these difficulties widespread systems development using AOP may not become a reality. Static bytecode weaving is the main mechanism used by AOP tools to support the separation of concerns, and their subsequent reintegration. As these tools operate on the bytecode level, the resulting source of the system is not visible to the developer. With no access to the resulting source code, the developer is forced to continue to reason about the system in terms of crosscutting concerns and primary concerns. Without the resulting source code should the developer wish to reason about the final, fully woven primary concerns, they must mentally apply each and every cross-cutting concern to that primary concern without the support of tools to determine its fully woven behaviour. In this paper the limitations of static bytecode weaving will be presented, and an alternative weaving mechanism, static source code weaving, will be introduced. The comparative benefits of static source code weaving will then be discussed. This paper will then continue to describe the creation of a static source code weaver.

Access Level