SEF9 - 45 Object Oriented (OO) versus Aspect Oriented (AO) software design

ASPECT ORIENTED DESIGN

In computing, Aspect-Oriented software development (AOSD) is an emerging software development technology that seeks new modularizations of software systems in order to isolate secondary or supporting functions from the main program's business logic.

Aspect-Oriented Software Development focuses on the identification, specification and representation of cross-cutting concerns and their modularization into separate functional units as well as their automated composition into a working system.

Cross-cutting concerns
============================

The motivation for aspect-oriented programming approaches stem from the problems caused by code scattering and tangling. The purpose of Aspect-Oriented Software Development is to provide systematic means to modularize crosscutting concerns.

The implementation of a concern is scattered if its code is spread out over multiple modules. The concern affects the implementation of multiple modules. Its implementation is not modular.

The implementation of a concern is tangled if its code is intermixed with code that implements other concerns. The module in which tangling occurs is not cohesive.

Scattering and tangling often go together, even though they are different concepts.

Aspect-oriented software development considers that code scattering and tangling are the symptoms of crosscutting concerns.

Cross-cutting concerns cannot be modularized using the decomposition mechanisms of the language (object or procedures) because they inherently follow different decomposition rules. The implementation and integration of these concerns with the primary functional decomposition of the system causes code tangling and scattering.

===========================================================

OBJECT ORIENTED DESIGN

(1) Abstraction - translating "real world entities" into models (classes, or objects) that have simpler properties and behaviours

(2) Inheritance - attributes (properties) and methods (behaviours) passed down from parent to child classes.

(3) Polymorphism - exhibiting different behaviours depending on inputs and/or environmental conditions

(4) Encapsulation - protection from read and/or write access (public, private & protected)

===========================================================


--
WASSALAM
wruslan.hahaha

Microsoft Word Version
Return to Software Engineering Fundamentals (SEF9MMUWRY)
Previous Topic: READING => Did we all just witness Microsoft Windows start to die?
Next Topic: 46 Aspect Oriented Programming (AOP) Languages (e.g. C++, Java, Python, Ada)

0 comments:

Post a Comment