1 Aspects and Modularity: The Hope and the Challenge Jonathan Aldrich Institute for Software Research International School of Computer Science Carnegie.

Slides:



Advertisements
Similar presentations
AspectWerkz 2 - and the road to AspectJ 5 Jonas Bonér Senior Software Engineer BEA Systems.
Advertisements

Scenarios for applying crosscutting concerns. Aspects should be visible throughout the full lifecycle of a software product. While most AOP-efforts currently.
EECE 310: Software Engineering Modular Decomposition, Abstraction and Specifications.
BI Web Intelligence 4.0. Business Challenges Incorrect decisions based on inadequate data Lack of Ad hoc reporting and analysis Delayed decisions.
Aspect Oriented Programming. AOP Contents 1 Overview 2 Terminology 3 The Problem 4 The Solution 4 Join point models 5 Implementation 6 Terminology Review.
ASTA Aspect Software Testing Assistant Juha Gustafsson, Juha Taina, Jukka Viljamaa University of Helsinki.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 32 Slide 1 Aspect-oriented Software Development.
1 An Aspect-Aware Outline Viewer Michihiro Horie and Shigeru Chiba Tokyo Institute of Technology, Japan.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 Modularization.
Each design pattern is designed to facilitate one kind of change, i.e. changes in one dimension. However, software evolution can happen in multiple dimensions.
Aspect-Oriented Programming In Eclipse ® Aspect-Oriented Programming in Eclipse with AspectJ Dr Helen Hawkins and Sian January.
University of British Columbia Software Practices Lab Fluid AOP Join Point Models Terry Hon Gregor Kiczales.
University of British Columbia Software Practices Lab 2005 CASCON A Fluid AOP Editor Terry Hon Gregor Kiczales.
ASPECT ORIENTED SOFTWARE DEVELOPMENT Prepared By: Ebru Doğan.
University of British Columbia Software Practices Lab CAS Seminar 06 Fluid AJ - A Simple Fluid AOP Tool Terry Hon Gregor Kiczales.
Good Advice for Type-directed Programming Aspect-oriented Programming and Extensible Generic Functions Geoffrey Washburn [ ] Joint.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
Harmless Advice Daniel S Dantas Princeton University with Prof. David Walker.
Generative Programming. Generic vs Generative Generic Programming focuses on representing families of domain concepts Generic Programming focuses on representing.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
1 Model Interface Implementation for Two-Way Obliviousness in Aspect-Oriented Modeling Presented by Wuliang Sun Department of Computer Science Baylor University.
A Formal Model of Modularity in Aspect-Oriented Programming Jonathan Aldrich : Objects and Aspects Carnegie Mellon University.
Outline Introduction Problem Statement Object-Oriented Design Aspect-Oriented Design Conclusion Demo.
Taming Obliviousness in Aspects with Data-flow Analysis and Design by Contract Tim Molderez and Dirk Janssens Ansymo Antwerp Systems and Software Modelling.
“Enhancing Reuse with Information Hiding” ITT Proceedings of the Workshop on Reusability in Programming, 1983 Reprinted in Software Reusability, Volume.
Introduction to Aspect Oriented Programming Presented By: Kotaiah Choudary. Ravipati M.Tech IInd Year. School of Info. Tech.
Aspect Oriented Programming (AOP) in.NET Brent Krueger 12/20/13.
Aspect Oriented Programming Razieh Asadi University of Science & Technology Mazandran Babol Aspect Component Based Software Engineering (ACBSE)
VERIFICATION OF ASPECT ORIENTED MODELS BY DON MARTIN JAYASHREE VENKIPURAM PATHANGI PIYUSH SRIVASTAVA REFERENCES F. Mostefaoui and J. Vachon,” Design level.
Aspect Oriented Programming Scott Nykl CSSE 411 Senior Seminar.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
1 Metamodel Access Protocols for Extensible Aspect-Oriented Modeling Naoyasu Ubayashi(Kyushu Institute of Technology, Japan) Shinji Sano(Kyushu Institute.
Composing Adaptive Software Authors Philip K. McKinley, Seyed Masoud Sadjadi, Eric P. Kasten, Betty H.C. Cheng Presented by Ana Rodriguez June 21, 2006.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 32 Slide 1 Aspect-oriented Software Development 1.
POSL (Principles of Software Languages) Gr. Kyushu Institute of Technology, Japan Pointcut-based Architectural Interface.
Generative Programming. Automated Assembly Lines.
Kiczales and Mezini - FOAL AOP and Modular Reasoning [ICSE05] Start with first-principles definition of modularity and modular reasoning –localization,
A Distributed Aspect-Oriented System for J2EE Applications Muga Nishizawa and Shigeru Chiba (Tokyo Institute of Technology, Japan) Background - As benefits.
TRANSPARENT EXTENSION OF SINGLE- USER APPLICATIONS TO MULTI-USER REAL-TIME COLLABORATIVE SYSTEMS An Aspect Oriented Approach to Framework Integration ICEIS.
SCALABLE EVOLUTION OF HIGHLY AVAILABLE SYSTEMS BY ABHISHEK ASOKAN 8/6/2004.
AOP-1 Aspect Oriented Programming. AOP-2 Aspects of AOP and Related Tools Limitation of OO Separation of Concerns Aspect Oriented programming AspectJ.
Aspect-Oriented Programming and Modular Reasoning G. KiczalesM. Mezini Presented by Alex Berendeyev.
IDENTIFYING SEMANTIC DIFFERENCES IN ASPECTJ PROGRAMS Martin Görg and Jianjun Zhao Computer Science Department, Shanghai Jiao Tong University.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
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.
Alloy-based Lightweight Verification for Aspect-oriented Architecture Naoyasu Ubayashi(Kyushu Institute of Technology) Yuki Sato(Kyushu Institute of Technology)
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
Towards an Aspect-oriented Language Module: Aspects for Petri Nets Tim Molderez, Bart Meyers, Dirk Janssens and Hans Vangheluwe Ansymo Antwerp Systems.
AOSD'04, Lancaster, UK 1 Remote Pointcut - A Language Construct for Distributed AOP Muga Nishizawa (Tokyo Tech) Shigeru Chiba (Tokyo Tech) Michiaki Tatsubori.
R R R A Brief Introduction to Aspect-Oriented Programming.
AspectScope: An Outline Viewer for AspectJ Programs Michihiro Horie, Shigeru Chiba Tokyo Institute of Technology, Japan.
UBC software modularity group 1/14/02 UCSD1 Discussion with Kiczales at UBC Ontology of AOP Ontology is the study of what there is, an inventory of what.
University of British Columbia Software Practices Lab Uniform Support for Modeling Crosscutting Structure Maria Tkatchenko Gregor Kiczales Work supported.
E81 CSE 532S: Advanced Multi-Paradigm Software Development Venkita Subramonian, Christopher Gill, Huang-Ming Huang, Shih-Ling Chen, Sajeeva Pallemulle.
Aspect-Oriented Software Development (AOSD)
1 An AOP Implementation Framework for Extending Join Point Models Naoyasu Ubayashi(Kyushu Institute of Technology, Japan) Hidehiko Masuhara(University.
Inspections on Testing Aspect-Oriented Programs Rodrigo Manuel Lopes de Matos Moreira 4 th Doctoral Symposium on Informatics Engineering Porto, 6 th February.
Copyright 2015, Robert W. Hasker. Classic Model Gathering Requirements Specification Scenarios Sequences Design Architecture Class, state models Implementation.
PPL 2004, Gamagori, AICHI1 Remote Pointcut - A Language Construct for Distributed AOP Muga Nishizawa (Tokyo Tech, Japan) Shigeru Chiba (Tokyo Tech, Japan)
 Is a programming paradigm  Extends OOP  Enables modularization of cross cutting concerns.
CS 265 Jianbo Zhao. What is interface? Interface is a detailed boundary between code that provides a service and code that uses it. An interface defines.
Software Engineering Lecture 7
Object Oriented Programming
Discussion with Gregor Kiczales at UBC
Demeter Aspects Who We Are Aspectual Collaborations
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
AspectAda Aspect-Oriented Programming for Ada95
Presentation transcript:

1 Aspects and Modularity: The Hope and the Challenge Jonathan Aldrich Institute for Software Research International School of Computer Science Carnegie Mellon University

6 September Why Modularity? Protect client code from changes to design decisions encapsulated within a module [Parnas, others] Protect invariants of module code from ill- behaved clients [Milner, others]

6 September Aspects: A New Hope Key benefit: capture concerns more locally and consistently Better protects clients from change by localizing crosscutting concerns Can be used to consistently enforce invariants of a module

6 September Aspects: A Double-Edged Light-Saber? This works when you use AOP to modularize a concern What happens when the client of a module uses AOP?

6 September Aspects: The Phantom Menace Aspect-oriented clients can become dependent on details of a module’s implementation Aspect-oriented clients can break a module’s invariants

6 September Non-Solution: Read-Only Aspects AOP clients may still depend on information that might change Even non-mutator AOP clients can break invariants Untrusted code can view sensitive data Aspects can create new objects with broken invariants Many concerns require mutator aspects

6 September Non-Solution: Semantic Pointcuts Control flow, data flow pointcuts are more robust Still can be broken if control/data flow does not exactly match problem Only one kind of semantic pointcut is a solution: Do what I mean! We say this already with interfaces!

6 September Non-Solution: Semantic Pointcuts Control flow, data flow pointcuts are more robust Still can be broken if control/data flow does not exactly match problem Only one kind of semantic pointcut is a solution: Do what I mean! We say this already with interfaces!

6 September Non-Solution: Semantic Pointcuts Control flow, data flow pointcuts are more robust Still can be broken if control/data flow does not exactly match problem Only one kind of semantic pointcut is a solution: Do what I mean! We say this already with interfaces!

6 September Solution: Interfaces Use Interfaces to Mediate Interaction Aspects may advise entry/exit join points of a module Aspects may advise pointcuts explicitly exported by a module “do what I mean” by this pointcut Other advice is prohibited Module changes which preserve interface pointcuts also preserve client behavior Can be formalized and proved for simple pointcuts Aldrich, FOAL ‘04, ECOOP ’05 Work needed to extend to practical system Interfaces also enforce internal invariants This story is old…but controversial in AOP!

6 September Solution: Interfaces Use Interfaces to Mediate Interaction Aspects may advise entry/exit join points of a module Aspects may advise pointcuts explicitly exported by a module “do what I mean” by this pointcut Other advice is prohibited Module changes which preserve interface pointcuts also preserve client behavior Can be formalized and proved for simple pointcuts Aldrich, FOAL ‘04, ECOOP ’05 Work needed to extend to practical system Interfaces also enforce internal invariants This story is old…but controversial in AOP!

6 September Obliviousness is Bunk! Well-known AOP “requirement” Code does not have to be specifically prepared to receive AOP enhancements Bunk because aspects depend on details of code As soon as you advise it, code is no longer oblivious! Can’t change code or rely on invariants obliviously (without knowing about aspects)

6 September Obliviousness is Bunk! A proxy for what you really want: agility Ease of change of crosscutting concerns Modify a pointcut declaratively and locally within a module After-the-fact enhancement Tools could give it to you transparently View or modify a pointcut in an interface Even if it’s a reflection of a more global pointcut Add or modify a pointcut that cuts across interfaces This may require negotiation with another stakeholder (other developers, the user, the application architect)

6 September Obliviousness is Bunk! A proxy for what you really want: agility Ease of change of crosscutting concerns Modify a pointcut declaratively and locally within a module After-the-fact enhancement Maybe tools could give this to you transparently View or modify a pointcut in an interface Even if it’s a reflection of a more global pointcut Add or modify a pointcut that cuts across interfaces This may require negotiation with another stakeholder (other developers, the user, the application architect) Insufficient to calculate one from the other Both must be editable if you want both modularity and agility Changes to pointcuts in interfaces of module require negotiation