Copyright © Philip M. Parker, INSEAD. Terms of Use.

ASPECT-ORIENTED PROGRAMMING

Specialty Definition: ASPECT-ORIENTED PROGRAMMING

DomainDefinition

Computing

Aspect-oriented programming (AOP) A style of programming that attempts to abstract out features common to many parts of the code beyond simple functional modules and thereby improve the quality of software. Mechanisms for defining and composing abstractions are essential elements of programming languages. The design style supported by the abstraction mechanisms of most current languages is one of breaking a system down into parameterised components that can be called upon to perform a function. But many systems have properties that don't necessarily align with the system's functional components, such as failure handling, persistence, communication, replication, coordination, memory management, or real-time constraints, and tend to cut across groups of functional components. While they can be thought about and analysed relatively separately from the basic functionality, programming them using current component-oriented languages tends to result in these aspects being spread throughout the code. The source code becomes a tangled mess of instructions for different purposes. This "tangling" phenomenon is at the heart of much needless complexity in existing software systems. A number of researchers have begun working on approaches to this problem that allow programmers to express each of a system's aspects of concern in a separate and natural form, and then automatically combine those separate descriptions into a final executable form. These approaches have been called aspect-oriented programming. Xerox AOP homepage (http://www.parc.xerox.com/csl/projects/aop/). AspectJ (http://AspectJ.org/). ECOOPP'99 AOP workshop (http://wwwtrese.cs.utwente.nl/aop-ecoop99/) (1999-11-21). Source: The Free On-line Dictionary of Computing.

Source: compiled by the editor from various references; see credits.

Top     

Specialty Definition: Aspect-oriented programming

(From Wikipedia, the free Encyclopedia)

In computer science, aspect-oriented programming is a programming paradigm that centers around constructs called aspects, which describe concerns of a separate set of objects, classes or functions.

Aspect-oriented programming is not limited to object-oriented programming, though. An aspect describes points (join points) in a program, where the aspect will affect the program's semantics. A set of join points is called a (pointcut). Now methodss or functions may be called in the aspect (called advices then), that may implement behaviour that would normally crosscut behaviour of the core concern of the application. For example, in a credit card application billing would be a core concern, and logging and persistence of participating objects would be concerns, that most likely crosscut the whole object hierarchy. Separating these concerns from the core concerns is the main concept behind aspect-oriented progamming. It removes code not related to solving the domain problem from the business logic into its own aspect of the program. The code no longer contains calls to those concerns, they are maintained and isolated in aspects, easing and isolating changes that would otherwise spread throughout the whole application.

The steps to successful aspect-oriented programming are described below...

1. Define and separarte the core concerns of the problem. 2. Build small, independent modules to solve them. 3. Combine the modules. (called weaving in AOP)

The result is a solution weaved from smaller solutions.

The most widely-known aspect language is AspectJ, which is based on Java, and was created at Xerox PARC.

Aspects emerged out of object-oriented programming and are similar in function to using meta-object protocol. Aspects are closely related to programming concepts like subjects, mixins, and delegation.

The term aspect-oriented programming was coined by Chris Maeda (of Xerox PARC), though the exact date when is not known. The term crosscutting was coined by Gregor Kiczales.

External links

Source: adapted by the editor from Wikipedia, the free encyclopedia under a copyleft GNU Free Documentation License (GFDL) from the article "Aspect-oriented programming."

Top     


Crosswords: ASPECT-ORIENTED PROGRAMMING

Specialty definitions using "ASPECT-ORIENTED PROGRAMMING": AOP. (references)

Source: compiled by the editor from various references; see credits.

Top     

Commercial Usage: ASPECT-ORIENTED PROGRAMMING

DomainTitle

Books

  • Aspect-Oriented Programming with AspectJ (reference)

    (more book examples)

Source: compiled by the editor from various references; see credits.

Top     

Alternative Orthography: ASPECT-ORIENTED PROGRAMMING


Hexadecimal (or equivalents, 770AD-1900s) (references)

41 53 50 45 43 54 2D 4F 52 49 45 4E 54 45 44      50 52 4F 47 52 41 4D 4D 49 4E 47

Leonardo da Vinci (1452-1519; backwards) (references)

    

Binary Code (1918-1938, probably earlier) (references)

01000001 01010011 01010000 01000101 01000011 01010100 00101101 01001111 01010010 01001001 01000101 01001110 01010100 01000101 01000100 00100000 01010000 01010010 01001111 01000111 01010010 01000001 01001101 01001101 01001001 01001110 01000111

HTML Code (1990) (references)

&#65 &#83 &#80 &#69 &#67 &#84 &#45 &#79 &#82 &#73 &#69 &#78 &#84 &#69 &#68 &#32 &#80 &#82 &#79 &#71 &#82 &#65 &#77 &#77 &#73 &#78 &#71

ISO 10646 (1991-1993) (references)

0041 0053 0050 0045 0043 0054 002D 004F 0052 0049 0045 004E 0054 0045 0044      0050 0052 004F 0047 0052 0041 004D 004D 0049 004E 0047

Encryption (beginner's substitution cypher): (references)

35535039375415495243394854393825052494152354747434841

Top     



INDEX

1. Crosswords
2. Usage: Commercial
3. Orthography
4. Bibliography


  

Copyright © Philip M. Parker, INSEAD. Terms of Use.