In empirical comparisons of Aspect-Oriented (AO) to Object-Oriented (OO) and OO to Module-Oriented (MO) systems, system properties like modularity, understandability, reusability, maintainability, and testability have often been inferred from other metrics, such as lines of code and modularity. In this paper, the above mentioned software quality attributes/system properties have been compared for the current popular programming approaches, i.e., Module-Oriented Approach (MOA) (also known as procedural approach), Object-Oriented Approach (OOA) and Aspect-Oriented Approach (AOA). This paper illustrates that in case of crosscutting concerns/properties in a big application, AOA with illustration of Aspect-Oriented Programs (AOP) has improved the aforementioned system properties/quality attributes efficiently, than MOA and OOA.
Software
development is a highly complex and intellect-Oriented activity. In the early
days of program development, developers wrote programs using machine language
in which programmers spent more time thinking about a particular machine's instruction
set than the problem at hand. Gradually, programmers migrated to using higher-level
languages.In
the 1970s, MOA was the dominant approach to software development. Modular programming
is a programming paradigm based on the concept of procedure call (also known as
subroutine, method and function). Any given procedure might be called at a point
during the course of execution of the program. Modular programming is a better
choice than simple sequential or unstructured programming in many situations which
involve moderate complexity, or which require significant ease of maintainability.
But, as the complexity increases, better techniques are required.
OOA
aimed at removing some of the flaws encountered with MOA. It has now become the
mainstream programming paradigm where real world problems are decomposed into
objects that abstract behavior and data in a single unit (Booch G, 1994). Object-Oriented
Programming (OOP) encourages software reuse by providing design and language constructs
for modularity, encapsulation, inheritance and polymorphism (Rumbaugh J et
al., 1991; Jacobson I et al., 1992).
Although
OOP/OOA has met great success in modeling and implementing complex software systems,
yet, it has limitations. Practical experience with large projects has shown that
developers may face some problems with maintaining their code because it becomes
increasingly difficult to clearly separate concerns such as readability, security,
modifiability, etc., into modules. An attempt to do a minor change in the program
design may require several updates to a large number of unrelated modules. Aspect-Oriented
Software Development (AOSD) is a new technique to support separation of concerns
in software development (Bergmans L and Aksits M, 2001; Kiczales G et al.,
1997; Lieberher K et al., 2001; Tarr P et al., 1999). |