Awais Rashid, Steffen Zschaler

Slides:



Advertisements
Similar presentations
Profiles Construction Eclipse ECESIS Project Construction of Complex UML Profiles UPM ETSI Telecomunicación Ciudad Universitaria s/n Madrid 28040,
Advertisements

Aspect Oriented Programming. AOP Contents 1 Overview 2 Terminology 3 The Problem 4 The Solution 4 Join point models 5 Implementation 6 Terminology Review.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 32 Slide 1 Aspect-oriented Software Development.
7M701 1 Software Engineering Object-oriented Design Sommerville, Ian (2001) Software Engineering, 6 th edition: Chapter 12 )
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 8 Slide 1 System models.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 System models.
Introduction to Software Architecture. What is Software Architecture?  It is the body of methods and techniques that help us to manage the complexities.
7M701 1 Software Engineering Systems Models Sommerville, Ian (2001) Software Engineering, 6 th edition: Chapter 7 (some items)
© Copyright Eliyahu Brutman Programming Techniques Course.
Technion Israel Early Aspects Based on lectures by Awais Rashid, Alessandro Garcia Lectures at AOSD Summer School, Brussels, July 2006 © A. Rashid, A.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Chapter 1 The Systems Development Environment
1 Model Interface Implementation for Two-Way Obliviousness in Aspect-Oriented Modeling Presented by Wuliang Sun Department of Computer Science Baylor University.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions of systems whose requirements are being.
Deriving AO Software Architectures using the AO-ADL Tool Suite Luis Fernández, Lidia Fuentes, Mónica Pinto, Juan A. Valenzuela Universidad de Málaga
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Chapter 1- Introduction Lecture 1 Ready, fire, aim (the fast approach to software development). Ready, aim, aim, aim, aim... (the slow approach to software.
Chapter 1 The Systems Development Environment
BCS 2143 Introduction to Object Oriented and Software Development.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions of systems whose requirements are being.
Chapter 4 System Models A description of the various models that can be used to specify software systems.
1 CS 456 Software Engineering. 2 Contents 3 Chapter 1: Introduction.
Aspect Oriented Programming Razieh Asadi University of Science & Technology Mazandran Babol Aspect Component Based Software Engineering (ACBSE)
11 Chapter 11 Object-Oriented Databases Database Systems: Design, Implementation, and Management 4th Edition Peter Rob & Carlos Coronel.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 32 Slide 1 Aspect-oriented Software Development 1.
Chapter 1 The Systems Development Environment Modern Systems Analysis and Design Sixth Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich.
Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about.
Hyper/J and Concern Manipulation Environment. The need for AOSD tools and development environment AOSD requires a variety of tools Life cycle – support.
Aspect Oriented Programming Sumathie Sundaresan CS590 :: Summer 2007 June 30, 2007.
Aspect-Oriented Refactoring of the Apache Cocoon Shared-Object Resource Allocation System Jeff Dalton February 28th, 2003 Advisor: David G. Hannay Client:
Aspect Oriented Programming Gülşah KARADUMAN.
Chapter 7 System models.
Joel Phinney March 31, ◦ Concerns  Separation of Concerns, Tangled and Scattered Concerns, Cross-Cutting Concerns, Aspects ◦ Aspect-Oriented Software.
System models l Abstract descriptions of systems whose requirements are being analysed.
AOP-1 Aspect Oriented Programming. AOP-2 Aspects of AOP and Related Tools Limitation of OO Separation of Concerns Aspect Oriented programming AspectJ.
Introduction Better Faster Cheaper (pick any two) On-going issue that continues to motivate research in software engineering Applications: –continue to.
Aspect-Oriented Requirements Engineering David Schaefer, Joao Araujo, Isabel Brito, Awais Rashid, Claudia Mesquita.
What is Object-Oriented?  Organization of software as a collection of discreet objects that incorporate both data structure and behavior.
Adaptive Software Kevin Cella Graduate Seminar 02/04/2005.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
SWEN 5231 FORMAL METHODS Slide 1 System models u Abstract presentations of systems whose requirements are being analyzed.
Demeter Aspects We study techniques for the emerging area of Aspect-Oriented Software Development and focus on the following areas:  Aspectual Collaborations.
Chapter 8: Aspect Oriented Programming Omar Meqdadi SE 3860 Lecture 8 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 System models.
AOP-Driven Variability in Software Product Lines Vander Alves, Ayla Dantas, and Paulo Borba Informatics Center – UFPE – Brazil
The Systems Development Environment Systems Analysis and Design II.
1 Modularity Analysis of Use Case Implementations Fernanda d’Amorim Advisor: Paulo Borba.
Software Engineering Introduction.
Applying Aspect-Orientation in Designing Security Systems Shu Gao Florida International University Center for Advanced Distributed Systems Engineering.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Aspect-Oriented Software Development (AOSD)
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 System models.
 The Object Oriented concepts was evolved for solving complex problems. Object- oriented software development started in the 1980s. Object-oriented design.
Engineering, 7th edition. Chapter 8 Slide 1 System models.
Chapter 1- Introduction
Software Engineering Lecture 4 System Modeling The Analysis Stage.
Software Process Activities.
Chapter 1- Introduction
Abstract descriptions of systems whose requirements are being analysed
Frequently asked questions about software engineering
Domain Class Diagram Chapter 4 Part 2 pp
System models October 5, 2005.
Chapter 20 Object-Oriented Analysis and Design
Appendix A Object-Oriented Analysis and Design
Aspect-oriented programming
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
Aspect Oriented Software Design
Appendix A Object-Oriented Analysis and Design
UML Design for an Automated Registration System
Presentation transcript:

Awais Rashid, Steffen Zschaler Introduction to AOSD Awais Rashid, Steffen Zschaler © Awais Rashid, Steffen Zschaler, 2009

Why Aspect-Oriented Software Development (AOSD)? Software becoming increasingly large, complex and distributed Requires effective separation of concerns Improve quality attributes Evolvability Cost-efficiency Composability Reliability Fault tolerance Reusability Scalability Dependability Adaptability Etc.

Need for Separation of Concerns Large … complex … distributed software systems Development requires focusing on one concern at a time

Separation of Concerns E. Dijkstra, A Discipline of Programming, Prentice Hall, 1976, pp. 210 Edsger Dijkstra 1930-2002

The Problem of Crosscutting Concerns Broadly-scoped concerns Distribution, security, real-time constraints, etc. Crosscutting in nature Severely constrain quality attributes and separation of concerns

Crosscutting Concerns Affect Modularisation Good modularisation [XML parsing in org.apache.tomcat] [logging in org.apache.tomcat] Bad modularisation

Resulting Problems Scattering The specification of one property is not encapsulated in a single module Tangling Each module contains descriptions of several properties or different functionalities

Aspect-Oriented Software Development (AOSD) Data Management Distribution Security AOSD tools, techniques and methodology Distribution Security Data Management

A Definition of AOSD AOSD: systematic identification, modularisation, representation and composition of crosscutting concerns [1] [1] Rashid, A., Moreira, A., Araujo, J. “Modularisation and Composition of Aspectual Requirements”, Proceedings of 2nd International Conference on Aspect-Oriented Software Development, ACM, 2003.

Potential Benefits of AOSD Improved ability to reason about problem domain and corresponding solution Reduction in application code size, development costs and maintenance time Improved code reuse Requirements, architecture and design-level reuse Improved ability to engineer product lines Context-sensitive application adaptation Improved modelling methods

History and Evolution of AOSD “AOSD is vital to our [IBM Software Group’s] survival”. Daniel Sabbah, IBM Vice President, speaking at AOSD Conference, Lancaster University, 2004. History and Evolution of AOSD Evolution Time More expressive Langs., Early Aspects, Middleware, Databases, Industrial Applications, Transactions on AOSD In the Making Initial Breakthrough Excitement Stabilisation AspectJ @ Eclipse, AOSD Conf. Hyper/J, UML Ext. AspectJ @ PARC Composition Filters, Adaptive Prog., SOP, Reflection Towards Maturity

Crosscutting: The Tracing Concern class B { // some attributes void m2( ) { System.out.println(“Entering B.m2( )”); // method code System.out.println(“Leaving B.m2( )”); } int m3( ) { System.out.println(“Entering B.m3( )”); System.out.println(“Leaving B.m3( )”); // return an integer class A { // some attributes void m1( ) { System.out.println(“Entering A.m1( )”); // method code System.out.println(“Leaving A.m1( )”); } String m2( ) { System.out.println(“Entering A.m2( )”); System.out.println(“Leaving A.m2( )”); // return a string

Tangling and Scattering Primary Functionality Persistence Security Data Classes Account Loan Customer User Interface ATM Web PC Terminal

Crosscutting: Links Among Meta-Objects (1) Links among meta-objects (e.g., class, attribute, method definitions): traditionally information about links is embedded within them Meta-class Class Collection of references to subclass meta-objects Collection of references to superclass meta-objects

Crosscutting: Links Among Meta-Objects (2) Person Staff Sub- classes Super- Tutor Subclasses Principal Introduce as non-leaf node Tutor Principal Crosscutting Person Superclasses Person Superclasses

Revisiting the Tracing Example class B { // some attributes void m2( ) { System.out.println(“Entering B.m2( )”); // method code System.out.println(“Leaving B.m2( )”); } int m3( ) { System.out.println(“Entering B.m3( )”); System.out.println(“Leaving B.m3( )”); // return an integer class A { // some attributes void m1( ) { System.out.println(“Entering A.m1( )”); // method code System.out.println(“Leaving A.m1( )”); } String m2( ) { System.out.println(“Entering A.m2( )”); System.out.println(“Leaving A.m2( )”); // return a string

Wouldn’t it be Nice if … class A { // some attributes void m1( ) { // method code } String m2( ) { // return a string class B { // some attributes void m2( ) { // method code } int m3( ) { // return an integer aspect Tracing { when someone calls these methods before the call {System.out.println(“Entering ” + methodSignature);} after the call {System.out.println(“Leaving ” + methodSignature);} }

Revisiting the Bank Example Primary Functionality Persistence Security Data Classes Account Loan Customer User Interface ATM Web PC Terminal

Wouldn’t it be Nice if … aspect Persistence aspect Security Data Classes Account Loan Customer User Interface ATM Web PC Terminal

Revisiting the Links Example Person Staff Sub- classes Super- Tutor Subclasses Principal Introduce as non-leaf node Tutor Principal Crosscutting Person Superclasses Person Superclasses

Wouldn’t it be Nice if … Person Staff Tutor Principal aspect Introduce as non-leaf node aspect super/subclass relationships Tutor Principal

Aspect-Oriented Programming (AOP): The AspectJ Approach Class A Class B Classes Aspect Weaver Composed Code Aspects Aspect X Aspect Y Legend Join Points: Reference points in classes used by aspects for specifying relationships with classes Class Aspect

The Notion of a Join Point class A { // some attributes void m1( ) { // method code } String m2( ) { // return a string class B { // some attributes void m2( ) { // method code } int m3( ) { // return an integer Type of Join Point Specific Join Points in this Program that we are Interested in aspect Tracing { when someone calls these methods before the call {System.out.println(“Entering ” + methodSignature);} after the call {System.out.println(“Leaving ” + methodSignature);} }

Discussion Points Why not rely on inheritance? Why not rely on design patterns?