COM711 Course Work 1
Report on Aspect-Oriented Software Development
Abbreviations and Meanings
Aspect-Oriented Software Development
Unified Modeling Language
Aspect Oriented Design Model
1.0 Executive Summary
Aspect-Oriented Software Development (AOSD) is a relatively new software development paradigm that complements and improves on many contemporary development paradigms. To this extent, AOSD provides unique and advanced program structuring and modularization techniques. The implementation of software applications using AOSD techniques results in a better implementation structure which has an impact on many important software qualities such as enhanced reusability and reduced complexity. In turn, these software qualities lead to an improved software development lifecycle and, hence, to better software. This report introduces to management and software development staff to the concepts of aspect-orientation software development. It presents why aspect-orientation is needed in modern software development and what its contributions are to the improvement of software design and implementation structure. The report also highlight AO technology details though without probing much in particular, as it present the various concepts of AOSD. After reading this introduction, the reader will understand what AOSD is about, know its key concepts and terminology engaged to elaborate descriptions of concrete AOSD technologies.
As software systems becomes more complex developers use new technologies to help manage development. The development of large and complex software applications is a challenging task. Apart from the enormous complexity of the software’s desired functionality, software engineers are also faced with many other requirements that are speciﬁc to the software development lifecycle. Requirements such as reusability, robustness, performance, evolvability, etc. are requirements about the design and the implementation of the software itself, rather than about its functionality. Nevertheless, these non-functional requirements cannot be neglected because they contribute to the overall software quality, which is eventually perceived by the users of the software application. For example, a better evolvability will ensure that future maintenance tasks to the implementation can be carried out relatively easily and consequently also with fewer errors. Building software applications that adhere to all these functional and non-functional requirements is an ever more complex activity that requires appropriate programming languages and development paradigms to adequately address all these requirements throughout the entire software development lifecycle. To cope with this ever-growing complexity of software development, computer science has experienced a continuous evolution of development paradigms and programming languages. In the early days, software was directly implemented in machine-level assembly languages, leading to highly complex implementations for even simple software applications. The introduction of the procedural and functional programming paradigms provided software engineers with abstraction mechanisms to improve the design and implementation structure of the software and reduce its overall complexity. An essential element of these paradigms is the ability to structure the software in separate but cooperating modules (e.g. procedures, functions, etc.). The intention is that each of these modules represents or implements a well-identiﬁed subpart of the software, which renders the individual modules better reusable and evolvable. Modern software development often takes place in the object-oriented programming paradigm that allows to further enhance the software’s design...
Please join StudyMode to read the full document