CSC/ECE 517 Fall 2009/wiki2 9 km: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
Line 3: Line 3:


==Overview==
==Overview==
The principle of separation of concerns has long been used
by software engineers to manage the complexity of software
system development. Programming languages help software
engineers explicitly maintain the separation of some concerns
in code. As another step towards increasing the scope
of concerns that can be captured cleanly within the code,
Kiczales and colleagues have introduced aspect-oriented programming.
In aspect-oriented programming, explicit language
support is provided to help modularize design decisions
that cross-cut a functionally-decomposed program.
Aspect-oriented programming is intended to make it easier
to reason about, develop, and maintain certain kinds
of application code. To investigate these claims, we conducted
two exploratory experiments that considered the impact
of aspect-oriented programming, as found in AspectJ
version 0.1, on two common programming activities: debugging
and change. Our experimental results provide insights
into the usefulness and usability of aspect-oriented
programming. Our results also raise questions about the characteristics
of the interface between aspects and functionallydecomposed
core code that are necessary to accrue programming
benefits. Most notably, the separation provided by
aspect-oriented programming seems most helpful when the
interface is narrow (i.e., the separation is more complete);
partial separation does not necessarily provide partial benefit.


==History==
==History==

Revision as of 15:41, 9 October 2009

Aspect-Oriented Programming

Aspect-Oriented Programming (AOP) is a programming paradigm in which the model can be dynamically modified to pefectly satisfy the growing/new requirements of a system. It's very helpful in development of applications which change drastically during their lifecycle.

Overview

The principle of separation of concerns has long been used by software engineers to manage the complexity of software system development. Programming languages help software engineers explicitly maintain the separation of some concerns in code. As another step towards increasing the scope of concerns that can be captured cleanly within the code, Kiczales and colleagues have introduced aspect-oriented programming. In aspect-oriented programming, explicit language support is provided to help modularize design decisions that cross-cut a functionally-decomposed program. Aspect-oriented programming is intended to make it easier to reason about, develop, and maintain certain kinds of application code. To investigate these claims, we conducted two exploratory experiments that considered the impact of aspect-oriented programming, as found in AspectJ version 0.1, on two common programming activities: debugging and change. Our experimental results provide insights into the usefulness and usability of aspect-oriented programming. Our results also raise questions about the characteristics of the interface between aspects and functionallydecomposed core code that are necessary to accrue programming benefits. Most notably, the separation provided by aspect-oriented programming seems most helpful when the interface is narrow (i.e., the separation is more complete); partial separation does not necessarily provide partial benefit.

History

Fundamtental Concepts of AOP

AspectJ/AspectR

See also

References

Further Reading

External links