3/7/2003 ABB rapid change 1 How To Address Rapidly Changing Data Representations in an Evolving Scientific Domain Using Aspect-oriented Programming Techniques.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
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.
Observer Method 1. References Gamma Erich, Helm Richard, “Design Patterns: Elements of Reusable Object- Oriented Software” 2.
1 Why do we need XAspects Structure-shyness –Can build DSL objects using constructors and use AspectJ to implement meaning of DSL objects. Is inconvenient.
The Bridge Pattern.. Intent Decouple an abstraction from its implementation so that the two can vary independently Also known as: Handle/Body.
Oct R McFadyen1 Recall UML Class Diagram BusRoute BusStopList BusStop BusList BusPersonList Person passengers buses busStops waiting 0..*
Page 1 Building Reliable Component-based Systems Chapter 7 - Role-Based Component Engineering Chapter 7 Role-Based Component Engineering.
Introduction To System Analysis and Design
3/7/2003Bioinformatics1 How To Address Rapidly Changing Data Representations in an Evolving Scientific Domain Using Aspect-oriented Programming Techniques.
March R. McFadyen1 Principle of Least Knowledge – page 265 Principle: talk only to your immediate friends Also called Law of Demeter (LoD)
© 2006 Pearson Addison-Wesley. All rights reserved4-1 Chapter 4 Data Abstraction: The Walls.
Computer Science 240 Principles of Software Design.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
Domain-Specific Software Engineering Alex Adamec.
1 CS101 Introduction to Computing Lecture 19 Programming Languages.
The chapter will address the following questions:
PROGRAMMING LANGUAGES The Study of Programming Languages.
3/7/2003Bioinformatics1 How To Address Rapidly Changing Data Representations in an Evolving Scientific Domain Using Aspect-oriented Programming Techniques.
REFACTORING Lecture 4. Definition Refactoring is a process of changing the internal structure of the program, not affecting its external behavior and.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
“Enhancing Reuse with Information Hiding” ITT Proceedings of the Workshop on Reusability in Programming, 1983 Reprinted in Software Reusability, Volume.
CSE 303 – Software Design and Architecture
Invitation to Computer Science, Java Version, Second Edition.
Aspect Oriented Programming Razieh Asadi University of Science & Technology Mazandran Babol Aspect Component Based Software Engineering (ACBSE)
Extensible Plug-ins for Aspect-Oriented Programming Macneil Shonle*Ankit Shah.
Copyright 2002 Prentice-Hall, Inc. Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich Chapter 20 Object-Oriented.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
CS101 Introduction to Computing Lecture Programming Languages.
Introduction To System Analysis and Design
CSC 395 – Software Engineering Lecture 12: Reusability –or– Programming was Bjarne Again.
SOFTWARE DESIGN.
Expression evaluation E : S | C. S = int. C = Op E E. Op : A | M. A = “+”. M = “*”.
Copyright 2002 Prentice-Hall, Inc. Chapter 2 Object-Oriented Analysis and Design Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey.
SE: CHAPTER 7 Writing The Program
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Slides for Gregor Kiczales Two versions –short version: Crosscutting capabilities for Java and AspectJ through DJ (4 viewgraphs only) –long version: Controlling.
Methodology: The AOP Refactoring Process Aspect-Oriented Refactoring of the Apache Cocoon Shared-Object Resource Allocation System Jeff Dalton Advisor:
GRASP: Designing Objects with Responsibilities
Not only mark-up languages! There are other many other grammar formalisms and tools than XML. Some of them standardized (ASN). Even XML does not always.
AOP-1 Aspect Oriented Programming. AOP-2 Aspects of AOP and Related Tools Limitation of OO Separation of Concerns Aspect Oriented programming AspectJ.
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
Design Patterns Gang Qian Department of Computer Science University of Central Oklahoma.
Structural Design Patterns
Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University.
Object-Oriented Modeling: Static Models. Object-Oriented Modeling Model the system as interacting objects Model the system as interacting objects Match.
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.
Software Design Patterns Curtsy: Fahad Hassan (TxLabs)
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Topic 4 - Database Design Unit 1 – Database Analysis and Design Advanced Higher Information Systems St Kentigern’s Academy.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
Adaptive Aspect-Oriented Programming in AspectJ Karl J. Lieberherr Northeastern University.
Watching the movie the hard way…. Page 256 – Head First Design Patterns.
Problem with Java and how it causes a problem for DJ.
Object Oriented Programming. OOP  The fundamental idea behind object-oriented programming is:  The real world consists of objects. Computer programs.
Kyung Hee University Class Diagramming Notation OOSD 담당조교 석사과정 이정환.
Software Design and Development Development Methodoligies Computing Science.
Pattern Language for AP1 Pattern Language for Adaptive Programming (AP) Karl Lieberherr Northeastern University.
Advanced Computer Systems
How is information hiding different from information shyness
Structure and Interpretation of an Aspect Language for Datatype
Software Design and Development
ADAPTIVE PROGRAMMING Sezen ERDEM December 2005.
Chapter 20 Object-Oriented Analysis and Design
Lecture 21: Crosscutting Aspect-Oriented Programming Background
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
Presentation transcript:

3/7/2003 ABB rapid change 1 How To Address Rapidly Changing Data Representations in an Evolving Scientific Domain Using Aspect-oriented Programming Techniques. Karl Lieberherr College of Computer and Information Science Northeastern University Boston

3/7/2003ABB rapid change2 Motivation  From: Computational Challenges in Structural and Functional Genomics by J. Head-Gordon,  From: Computational Challenges in Structural and Functional Genomics by J. Head-Gordon, IBM SYSTEMS JOURNAL, VOL 40, NO 2, 2001.

3/7/2003ABB rapid change3 Some Quotes From Head- Gordon.   Although techniques for warehousing are as vital in the sciences as in business, functional warehouses tailored for specific scientific needs are few and far between.   A key technical reason for this discrepancy is that our understanding of the concepts being explored in an evolving scientific domain change constantly, leading to rapid changes in data representation.

3/7/2003ABB rapid change4 Some Quotes From Head- Gordon (Refinement).   … evolving scientific domains change constantly, leading to rapid changes in data representation.   Not only changes in data representation but also changes in interfaces – need protection against changes in interfaces.   Examples: additional or modified fields or arguments; additional or modified types.

3/7/2003ABB rapid change5 More Quotes From Head- Gordon.   When the format of source data changes, the warehouse must be updated to read that source or it will not function properly. The bulk of these modifications involve extremely tedious, low-level translation and integration tasks that typically require the full attention of both database and domain experts. Given the lack of the ability to automate this work, warehouse maintenance costs are prohibitive, and warehouse “up-times” severely restricted.

3/7/2003ABB rapid change6 Protect Against Changes.  Protection against changes in data representation and interfaces. Traditional technique: information-hiding is good to protect against changes in data representation. Does not help with changes to interfaces.  Need more than information hiding to protect against interface changes: restriction through shy programming, called Adaptive Programming (AP). ImplementationInterfaceClient Information HidingShy Programming

3/7/2003ABB rapid change7 Problem with Information Hiding  Shy Programming builds on the observation that traditional black-box composition is not restricting enough. We use the slogan: information hiding is not hiding enough. Blackbox composition isolates the implementation from the interface, but does not decouple the interface from its clients.

3/7/2003ABB rapid change8 Cover unimportant parts of the interface  To permit interfaces to evolve, self-discipline is required to prevent from programming extensively against the interface. Certain parts of the interface are best left as if they were covered. ImplementationInterfaceClient Information HidingShy Programming

3/7/2003ABB rapid change9 Shy Programming = Adaptive Programming  This disciplined programming is referred to as shy programming. Shy programming lets the program recover from (or adapt to) interface changes. Shy programming is also called Adaptive Programming (AP). This is similar to the shyness metaphor in the Law of Demeter (LoD): structure evolves over time, thus an object communicates with only a subset of the visible objects.

3/7/2003ABB rapid change10 Decoupling of Interface  We summarize the commonalities and differences between black-box composition and Shy Programming into two principles. –Black-box Principle: the representation of objects can be changed without affecting clients. –Shy-Programming Principle: the interface of objects can be changed within certain parameters without affecting clients.  It is important to notice that the Shy-Programming Principle builds on top of the Black-Box principle.

3/7/2003ABB rapid change11 Manager Metaphor.  A manager M is managing a set of group leaders G, each one managing a set of workers W. We consider issues related to informing M and requesting information from M. We use this example to illustrate three points. –Micromanager – no information restriction. –Shyness – helps information restriction. –Complex requests – help information restriction and optimization. Want to learn about coping with rapidly changing interfaces. M G W

3/7/2003ABB rapid change12 Manager Metaphor.  Micromanager – no information restriction. –If the manager is a micromanager (a manager that wants to know about and rely on all the details of the worker’s projects), the managing approach is brittle because when there is a change in the details of one of the worker’s projects, the manager needs to be notified. M G W

3/7/2003ABB rapid change13 Manager Metaphor.  Micromanager – no information restriction (continued). –An object-oriented program written in the usual way corresponds to the manager that likes to micromanage. It is full of detailed knowledge of the class graph. An alternative way of formulating the same idea is to observe that it is good when the workers are shy. A shy worker will only share minimal, high-level information with the group leader. And this will prevent a brittle situation where the group leaders and manager rely on too much detail. M G W

3/7/2003ABB rapid change14 Manager Metaphor.  Shyness – helps information restriction –It is good for the workers to be shy and only talk to their group leader and not to the manager directly. (Shyness has two facets: talk only to a few friends AND share minimal information with them. Here we use the first facet while in the previous point we used the second facet.) The group leader will abstract the information from the workers and only pass on the abstract information to the manager. This will prevent the manager from micromanaging. This variant can be viewed as an application of the Law of Demeter (LoD) which states that an object should talk only to closely related objects. The closely related object for a worker is the group leader and not the manager. MG W

3/7/2003ABB rapid change15 Manager Metaphor.  Shyness – helps information restriction (continued). –The motivation is that when things change at the worker level, the manager does not have to be informed necessarily. The group leader will be informed and will decide whether the information needs to be passed up. M G W shielded

3/7/2003ABB rapid change16 Manager Metaphor.  Complex requests – help information restriction and optimization. –The manager does not want to be bothered by many simple requests from the many workers. Instead the manager prefers to get a complex request from time to time from a group manager. The complex request offers the manager the possibility to see all the requests as a whole and to optimize the overall result which would not be possible if simple requests come one by one and need to be satisfied immediately before the totality of all simple requests is seen.

3/7/2003ABB rapid change17 Manager Metaphor.  Complex requests – help information restriction and optimization (continued). –The same point applies to programming: instead of sending an object a lot of individual data access requests, it is better to send one complex request that can be treated as a whole and optimized accordingly.

3/7/2003ABB rapid change18 Aspect-oriented Programming (AOP).  AOP is programming with aspects. An aspect is a complex request to modify the execution of a program. May expose a large interface. This can be implemented efficiently by inserting code at compile time into the program. An aspect should be shy with respect to the program it modifies.

3/7/2003ABB rapid change19 AOSD: not every concern fits into a component: crosscutting Goal: find new component structures that encapsulate “rich” concerns

3/7/2003ABB rapid change20 A Reusable Aspect. abstract public aspect RemoteExceptionLogging { abstract pointcut logPoint(); after() throwing (RemoteException e): logPoint() { log.println(“Remote call failed in: ” + thisJoinPoint.toString() + “(” + e + “).”); } public aspect MyRMILogging extends RemoteExceptionLogging { pointcut logPoint(): call(* RegistryServer.*.*(..)) || call(private * RMIMessageBrokerImpl.*.*(..)); } abstract

3/7/2003ABB rapid change21 Good Aspects Are Shy. abstract aspect CapabilityChecking { pointcut invocations(Caller c): this(c) && call(void Service.doService(String)); pointcut workPoints(Worker w): target(w) && call(void Worker.doTask(Task)); pointcut perCallerWork(Caller c, Worker w): cflow(invocations(c)) && workPoints(w); before (Caller c, Worker w): perCallerWork(c, w) { w.checkCapabilities(c); }

3/7/2003ABB rapid change22 Lessons From Manager Metaphor.  Information hiding does not hide enough. Information hiding makes all public interfaces available and (Micromanager) makes the point that only an abstraction of those interfaces should be visible at higher levels.

3/7/2003ABB rapid change23 Lessons From Manager Metaphor (Continued).  In Shy Programming, only high-level information about the class or call graph is visible at the (shy) programming level and this shields the program from many changes to the class or call graph in the same way as the manager is shielded from many of the changes in the workers’ projects. The role of the group leader is played by the glue code that maps high-level information to low-level information and vice-versa. Shy Programming is graph-shy.

3/7/2003ABB rapid change24 Application to Scientific Warehouses  Need shy programming and shy knowledge representation techniques.  Need domain-specific aspect languages that are X-shy.

3/7/2003ABB rapid change25 Another Good Example of AOP. BusRoute BusStopList BusStop BusList BusPersonList Person passengers buses busStops waiting 0..* find all persons waiting at any bus stop on a bus route OO solution: one method for each red class

3/7/2003ABB rapid change26 Traversal Strategy. BusRoute BusStopList BusStop BusList BusPersonList Person passengers buses busStops waiting 0..* from BusRoute through BusStop to Person find all persons waiting at any bus stop on a bus route A complex request

3/7/2003ABB rapid change27 Robustness of Strategy. BusRoute BusStopList BusStop BusList BusPersonList Person passengers buses busStops waiting 0..* from BusRoute through BusStop to Person VillageList Village villages 0..* find all persons waiting at any bus stop on a bus route Complex request is class-graph shy

3/7/2003ABB rapid change28 Writing Aspect-oriented Programs With Strategies. class BusRoute { int countWaitingPersons() { Integer result = (Integer) Main.cg.traverse(this, WPStrategy, new Visitor(){ int r ; public void before(Person host){ r++; } public void start() { r = 0;} public Object getReturnValue() { return new Integer(r);} }); return result.intValue();} } String WPStrategy=“ from BusRoute through BusStop to Person” A complex request Complex request plays role of manager Complex request is class-graph shy

3/7/2003ABB rapid change29 Writing Aspect-Oriented Programs With Strategies. // Prepare current class graph Main.cg = new ClassGraph(); int r = aBusRoute.countWaitingPersons(); String WPStrategy=“ from BusRoute through BusStop to Person”

3/7/2003ABB rapid change30 ObjectGraph: in UML Notation. Route1:BusRoute :BusStopList busStops CentralSquare:BusStop :PersonList waiting Paul:PersonSeema:Person :BusList buses Bus15:Bus :PersonList passengers Joan:Person Eric:Person

3/7/2003ABB rapid change31 ObjectGraphSlice. Route1:BusRoute :BusStopList busStops CentralSquare:BusStop :PersonList waiting Paul:PersonSeema:Person BusList buses Bus15:Bus :PersonList passengers Joan:Person Eric:Person

3/7/2003ABB rapid change32 Summary So Far.  Aspect-oriented software development helps to create software that is –More flexible; supports easy adaptation to rapidly changing interfaces. –Easier to understand and also shorter. –Supports the Shy Programming Principle.

3/7/2003ABB rapid change33 Goal of AOSD.  Decompose problem into –Representation languages that support structure-shy representations of objects (Object representation concern for input/output/intermediate objects)  Benefit: define objects in a structure-shy way. Need structure- shy language design (not XML). –domain-specific aspect languages that support concern- shy representations of concerns. Aspect languages are representation-languages-shy.

3/7/2003ABB rapid change34 XAspects: Tool Support for Shy- programming and Complex Requests.  Two kinds of languages –Class dictionary languages: allow shy representations of objects. Used for representing objects: one class dictionary per domain.  At the base level. –Aspect-specific languages: For representing abstractions of programming concerns shy of other concerns. Implemented using class dictionaries.  At the meta level.

3/7/2003ABB rapid change35 XAspects and Manager Example.  Sentence of language corresponds to a complex request.  Languages should be shy of each other.  A language should not be a micro-manager of other languages.

3/7/2003ABB rapid change36 Why Not a General-purpose Aspect Language?  A la AspectJ: we use it in XAspect as one possible language (plug in) and also AspectJ plays the role of central language into which all aspect languages are translated.  But only using AspectJ is limiting: –Aspects interact in complex ways. Need special languages for better separation. –Example: Visitor pattern as a concern can not be well separated in AspectJ (unless we resort to heavy use of reflection: performance problem). Structure-shyness.

3/7/2003ABB rapid change37 Why Do We Need XAspects.  Separation of external interface and semantics  Structure-shyness –Can build DSL objects using constructors and use AspectJ to implement meaning of DSL objects. Is inconvenient (sentence is shorter than abstract syntax tree = object) and  Lack of static checking in AspectJ –Hinders static checking of DSL objects Improved AspectJ => makes implementation of plugins easier

3/7/2003ABB rapid change38 C Is X-shy.  A concern C is X-shy if C can adapt to small changes in X or if C relies only on minimal information of X (topological).  Domain-specific aspect languages allow problems to be decomposed to support concern-shy representations of concerns.

3/7/2003ABB rapid change39 Problems With Multiple Domain- specific Aspect Languages.   The fragmentation of tools causes problems when each concern relies on the solutions provided by the other tools.   Next we present how XAspects addresses this problem.

3/7/2003ABB rapid change40 Idea n*n n AspectJ

3/7/2003ABB rapid change41 A Plug-in Architecture.   The fragmentation problem can be solved by forcing each domain-specific solution to conform to a particular framework and by defining a common language with which the domain-specific tools can communicate.   The XAspects tool provides a plug-in framework that integrates domain-specific languages such that the tools become extensions of the AspectJ language. Rules restricting what a plug-in can do are introduced in order to enhance the integration.

3/7/2003ABB rapid change42 A JC :X AJC :P LUG - INS : 1.Source Code Identification 2. Generation of External Interfaces 3. Initial Bytecode Generation 4. Crosscutting Analysis 5. Generation of Semantics 6. Final Bytecode Generation Plugin Sequence Diagram.

3/7/2003ABB rapid change43 1. Source Code Identification.   The XAspects compiler identifies in the source code all program text that belongs to the plug-in and provides that text to the plug-in.

3/7/2003ABB rapid change44 2. Generation of External Interfaces.   The plug-in generates source files that define the external (i.e., program visible) components introduced by the language that the plug-in implements.

3/7/2003ABB rapid change45 3. Initial Bytecode Generation.   The AspectJ compiler generates bytecodes from the plug-in defined external interfaces and the remainder of the program.

3/7/2003ABB rapid change46 4. Crosscutting Analysis.   The XAspects compiler provides each plug- in the binary of the program to perform reflection or other analysis on it.

3/7/2003ABB rapid change47 5. Generation of Semantics.   The plug-in generates behavioral changes to the generated program in the form of AspectJ source code. (Structural changes are prohibited during this phase, only methods can be modified, and only aspect private methods can be introduced.)

3/7/2003ABB rapid change48 6. Final Bytecode Generation.   Finally, the new behavioral code is woven into the existing code to create the complete program.

3/7/2003ABB rapid change49 A JC :X AJC :P LUG - INS : Source Code Identification Generation of External Interfaces Initial Bytecode Generation Crosscutting Analysis Generation of Semantics Final Bytecode Generation

3/7/2003ABB rapid change50 Plug-ins Currently Available.  Class dictionary plug-in  Coordination plug-in  Traversal plug-in  AspectJ plug-in (includes Java)  Dependencies –Traversal plug-in depends on Class dictionary plug-in and AspectJ plug-in.

3/7/2003ABB rapid change51 Advantages of XAspects.   The XAspects system is unique because it separates conceptually two different provisions of a domain-specific language: – –the language's external interface and structural modifications and – –the language's semantics.   The separation of these two concepts allows for the plug-ins to passively cooperate with each other.

3/7/2003ABB rapid change52 Advantages of XAspects.   The XAspects infrastructure essentially reduces the problem for a domain-specific language to the problem of reading in Java code and producing changes and additions to that code. Dependency issues among domain-specific languages are reduced because each plug-in only has to worry about the properties of Java classes, and not the properties of constructs of other domain-specific languages that created those classes.

3/7/2003ABB rapid change53 Too Many Languages?   It could be argued that it is not feasible to introduce many little domain-specific languages with which the programmers have to work.   However, the inherent complexity of a project may require that the programmers address the issues of composition of aspect languages on a conceptual level. A conscious language design that addresses the aspect composition issues systematically can simplify the programmers' job.

3/7/2003ABB rapid change54 Too Many Languages?   Without such an approach, the programmers will have to do this at the lower level of a general purpose aspect language, which results in more code that actually needs to written, some of which will be redundant with the structure of the program and could have been generated automatically.

3/7/2003ABB rapid change55 Another Weakness of General Aspect-oriented Programming …  is the difficultly of using the language correctly. A novice can easily create an infinite loop in AspectJ if an advice happens to apply to itself. More subtle misapplications of advice can also occur. If a custom aspect language is created for a specific domain these misapplications can be checked by the plug-in. While a reusable AspectJ aspect might be able to implement some of the functionalities of an XAspects plug-in, it cannot perform some of the compile time checks needed to ensure that the aspect is being used correctly.

3/7/2003ABB rapid change56 Conclusions.  Aspect-Oriented Software Development (AOSD) is a useful technology for the rapidly evolving area of scientific warehouses.  XAspects is a tool that supports AOSD in a more powerful way than a general purpose aspect-oriented language.

3/7/2003ABB rapid change57 The End

3/7/2003ABB rapid change58 Lessons From Manager Metaphor (Continued).  AOP is related to (Micromanager) through the observation that aspects should be loosely coupled to the base programs they modify. The aspect should not be brittle with respect to the detailed calling structure of the base program in the same way as the manager should not rely on the details of the workers’ project. There is an intermediary, called glue code, that maps the aspect to the detailed usage context. AOP is call- graph shy.