Software Evolution and Aspect-Oriented Programming

Similar documents
Aspect-Oriented Programming

Generating Aspect Code from UML Models

Génie Logiciel et Gestion de Projets. Evolution

Keywords Aspect-Oriented Modeling, Rule-based graph transformations, Aspect, pointcuts, crosscutting concerns.

Module 1. Introduction to Software Engineering. Version 2 CSE IIT, Kharagpur

Introducing a Graduate Course on. called Aspect-Oriented Software Development

Program Understanding in Software Engineering

BCS HIGHER EDUCATION QUALIFICATIONS Level 6 Professional Graduate Diploma in IT. March 2013 EXAMINERS REPORT. Software Engineering 2

Supporting Software Development through Declaratively Codified Programming Patterns

Software Engineering. So(ware Evolu1on

Composing Concerns with a Framework Approach

Acknowledgement. Software Engineering. CS 3141: Team Software Project Introduction

Lecture 3 Topics on Requirements Engineering

Basic Trends of Modern Software Development

Asset Management and EBU

On the importance of the separation-of-concerns principle in secure software engineering

Integration of Application Business Logic and Business Rules with DSL and AOP

The Role of the Software Architect

A Qualitative Comparison of Three Aspect Mining Techniques

Chapter 9 Software Evolution

Using an Aspect Oriented Layer in SOA for Enterprise Application Integration

CSC408H Lecture Notes

22C:22 (CS:2820) Object-Oriented Software Development

AOSD - Enhancing SoC :: INF5120 :: Mansur Ali Abbasi. AOSD :: Aspect Oriented Software Development SoC :: Separation of Concerns

SOFTWARE ENGINEERING OVERVIEW

McGraw-Hill The McGraw-Hill Companies, Inc.,

Unification of AOP and FOP in Model Driven Development

Dynamic Reconfiguration Using Template Based Web Service Composition

Concern Highlight: A Tool for Concern Exploration and Visualization

Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note

An Aspect-Oriented Product Line Framework to Support the Development of Software Product Lines of Web Applications

9 Research Questions Resolved

Component-Based Software Development with Aspect-Oriented Programming

How to Model Aspect-Oriented Web Services

Making the Most Out of SMPTE 2014!

Lecture 2 Software Re-engineering

A Knowledge-based Product Derivation Process and some Ideas how to Integrate Product Development

Software Development in the Large!

Advanced Test-Driven Development

BCS THE CHARTERED INSTITUTE FOR IT. BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 6 Professional Graduate Diploma in IT SOFTWARE ENGINEERING 2

WS15. Workshop on Knowledge-Based Object-Oriented Software Engineering (KBOOSE)

On Non-Functional Requirements

Business Development and Evolution of Components

Requirements Traceability

Supporting Software Development Process Using Evolution Analysis : a Brief Survey

Weighted Total Mark. Weighted Exam Mark

Introduction to software architecture

Aspect-oriented Refactoring of a J2EE Framework for Security and Validation Concerns

CS 565 Business Process & Workflow Management Systems

Component Based Software Engineering: A Broad Based Model is Needed

Harmless Advice. Daniel S Dantas Princeton University. with David Walker

Aspectual Mixin Layers

Chapter # Multi-Dimensional Separation of Concerns and The Hyperspace Approach

WEB ORIENTED APPLICATIONS GENERATOR

Structural Complexity Evolution in Free Software Projects: A Case Study

Aerospace Software Engineering

An Automatic Reversible Transformation from Composite to Visitor in Java

Chapter 13: Program Development and Programming Languages

Second Mares Conference Abstract Submission Guidelines

Bad code smells Refactoring Example

IF2261 Software Engineering. Introduction. What is software? What is software? What is software? Failure Curve. Software Applications Type

Robert Filman RIACS NASA Ames Moffett Field, CA

How to realize software evolution of existing BOSS via ZTE SEEM

Aspect Mining in Procedural Object-Oriented Code

Viewpoint Modeling. Agenda. 1. Viewpoint Modeling 2. ODS, Enterprise Architecture, Viewpoints, Models 3. Modeling approaches and standards

The Nature and Importance of a Programming Paradigm

Identifying Candidate Aspects with I-star Approach

Curriculum Vitae. Zhenchang Xing

COBOL2EJB : A Tool Generating Wrapping Component for CICS COBOL System

How To Combine Feature-Oriented And Aspect-Oriented Programming To Support Software Evolution

Design Document Version 0.0

A Comparison of SOA Methodologies Analysis & Design Phases

Combining Feature-Oriented and Aspect-Oriented Programming to Support Software Evolution

Role of Functional Clones in Software Development

Progress Report Aspect Oriented Programming meets Design Patterns. Academic Programme MSc in Advanced Computer Science. Guillermo Antonio Toro Bayona

Adaptability in Object-Oriented Software Development Workshop report

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

Migrating Legacy Software Systems to CORBA based Distributed Environments through an Automatic Wrapper Generation Technique

CS4507 Advanced Software Engineering

Chapter 4: Design Principles I: Correctness and Robustness

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

Release Strategy Enhancement in Purchase Order

Java Technology in the Design and Implementation of Web Applications

Agile Processes and Methodologies: A Conceptual Study

A Tool to Support Knowledge Based Software Maintenance: The Software Service Bay

Distributed Systems Development: Can we Enhance Evolution by using AspectJ?

THE EVOLUTION OF COMPONENT BASED SOFTWARE ENGINEERING FROM THE TRADITIONAL APPROACH TO CURRENT PRACTICES

Architectural Analysis of Microsoft Dynamics NAV

Ubiquitous, Pervasive and Mobile Computing: A Reusable-Models-based Non-Functional Catalogue

Coordinated Visualization of Aspect-Oriented Programs

A COMPARISON OF AOP BASED MONITORING TOOLS

Latest Trends in Testing. Ajay K Chhokra

Clone Detection in a Product Line Context

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

Modernized and Maintainable Code. Frank Weil, Ph.D. UniqueSoft, LLC

OOT Interface Viewer. Star

ASPECT-ORIENTED ANALYSIS APPLIED TO THE SPACE DOMAIN

The Concern-Oriented Software Architecture Analysis Method

However, the marketplace for replaceable components is still not at sight due to many

A WBS-Based Plan Changeability Measurement Model for Reducing Software Project Change Risk

Transcription:

Software Evolution and Aspect-Oriented Programming Belgian Symposium and Contact Day Monday, 3 May 2004 Het Pand, Gent

Software Evolution and Aspect-Oriented Programming Co-organised by FWO Scientific Research Network on Foundations of Sotware Evolution http://prog.vub.ac.be/ffse IWT GBOU Project on Architectural Resources for the Restructuring and Integration of Business Applications (ARRIBA) http://progwww.vub.ac.be/

Today's Schedule 3 Morning 8:30 Opening and registration 9:00 Welcome and introduction Tom Mens Theo D'Hondt 9:45 Rule-based approaches to aspect-oriented programming Maja D'Hondt 10:15 Coffee break 10:45 Using traits as aspects Roel Wuyts 11:15 Conceptual code mining Kim Mens 11:45 AOP in a graph-rewriting context Alon Amsel 12:15 Lunch Afternoon 14:00 Dynamic evolution of web services with AOP Wim Vanderperren 14:30 Aspects in network-transparent distributed programming Peter Van Roy 15:00 Aspectual contracts to manage invasive access Bart De Win 15:30 Coffee break 16:00 Cross-cutting concerns in industrial C applications Tom Tourwé 16:30 Aspect-oriented evolution of legacy software Kris De Schutter 17:00 Conclusion and future plans 17:30 Reception

Software Evolution and Aspect-Oriented Programming Tom Mens Université de Mons-Hainaut Service de Génie Logiciel staff.umh.ac.be/mens.tom/

Separation of concerns Concern Something the programmer should care about "Those interests which pertain to the system development, its operation or any other aspects that are critical or otherwise important to one or more stakeholders. Concerns can be logical or physiscal concepts, but they may also include system considerations such as performance, reliability, security, distribution, and evolvability." Recommended Practice for Architectural Description of Software-Intensive Systems, IEEE Std 1471-2000. September 2000 5

Separation of concerns Separation of concerns Arguably the most important principle in software engineering E. W. Dijkstra, A Discipline of Programming, Prentice Hall, 1976 Different concerns should be separated in the software to cope with complexity to achieve the required quality factors adaptability, maintainability, extendibility, reusability,... to facilitate localising and fixing defects to respond easier to market changes 6

Separation of concerns Implemented in different ways in different programming paradigms Procedural programming Separation of behaviour (procedures) and data (abstract data types) Store different concerns in different procedures Modular programming Store different concerns in different modules Object-oriented programming Store different concerns in different objects/classes 7

Separation of concerns Procedural programming 8 Tangling from explicit gotos Recognized common control structures capture in more explicit form Resulting code more clear, easier to write, maintain, debug etc. i = 1 TEST: if i < 4 then goto BODY else goto END BODY: print(i) i = i + 1 goto TEST END: i = 1 while (i < 4) { print(i) i = i + 1

But still tangled main () { draw_label( Haida Art Browser ); m = radio_menu( { Whale, Eagle, Dogfish ); q = button_menu({ Quit ); while (! check_buttons(q) ) { n = check_buttons(m); draw_image(n); 9 draw_label (string) { w = calculate_width(string); print(string, WINDOW_PORT); set_x(get_x() + w); radio_menu(labels) { i = 0; while (i < labels.size) { radio_button(i); draw_label(labels[i]); set_y(get_y() + RADIO_BUTTON_H); i++; radio_button (n) { draw_circle(get_x(), get_y(), 3); draw_circle (x, y, r) { %%primitive_oval(x, y, 1, r); button_menu(labels) { i = 0; while (i < labels.size) { draw_label(labels[i]); set_y(get_y() + BUTTON_H); i++; draw_image (img) { w = img.width; h = img.height; do (r = 0; r < h; r++) do (c = 0; c < w; c++) WINDOW[r][c] = img[r][c];

Group functionality 10 main () { draw_label( Haida Art Browser ); m = radio_menu( { Whale, Eagle, Dogfish ); q = button_menu({ Quit ); while (! check_buttons(q) ) { n = check_buttons(m); draw_image(n); draw_label (string) { w = calculate_width(string); print(string, WINDOW_PORT); set_x(get_x() + w); radio_menu(labels) { i = 0; while (i < labels.size) { radio_button(i); draw_label(labels[i]); set_y(get_y() + RADIO_BUTTON_H); i++; radio_button (n) { draw_circle(get_x(), get_y(), 3); draw_circle (x, y, r) { %%primitive_oval(x, y, 1, r); button_menu(labels) { i = 0; while (i < labels.size) { draw_label(labels[i]); set_y(get_y() + BUTTON_H); i++; draw_image (img) { w = img.width; h = img.height; do (r = 0; r < h; r++) do (c = 0; c < w; c++) WINDOW[r][c] = img[r][c];

Separation of concerns Modular programming 11 main () { draw_label( Haida Art Browser ); m = radio_menu( { Whale, Eagle, Dogfish ); q = button_menu({ Quit ); while (! check_buttons(q) ) { n = check_buttons(m); draw_image(n); draw_image (img) { w = img.width; h = img.height; do (r = 0; r < h; r++) do (c = 0; c < w; c++) WINDOW[r][c] = img[r][c]; draw_label (string) { w = calculate_width(string); print(string, WINDOW_PORT); set_x(get_x() + w); draw_circle (x, y, r) { %%primitive_oval(x, y, 1, r); radio_menu(labels) { i = 0; while (i < labels.size) { radio_button(i); draw_label(labels[i]); set_y(get_y() + RADIO_BUTTON_H); i++; radio_button (n) { draw_circle(get_x(), get_y(), 3); button_menu(labels) { i = 0; while (i < labels.size) { draw_label(labels[i]); set_y(get_y() + BUTTON_H); i++; But: variations on modules are incredibly complex

Separation of concerns Object-oriented programming ButtonMenu display: boxes, labels click: highlight Menu CheckBoxMenu display: boxes, maybe checks, labels click: set/clear display: <promise> click: <promise> ToggleButtonMenu click: set/clear RadioButtonMenu display: circle, maybe dots, labels click: set/clear AND clear others 12

But 13

Croscutting concerns 15 Problem Implementation of some concerns remains spread across different objects Tyranny of the Dominant Decomposition Tarr et al. Multi-dimensional separation of concerns, Proc. ICSE 1999, pp. 107-119, IEEE CS Press There is no ideal way to decompose a problem For any decomposition of the problem covering the core functionality concerns some concerns will cross-cut this decomposition non-functional concerns, functional concerns concerns that have been added later on

Crosscutting concerns and software evolution Requirements change all the time corresponds to Lehman's 1st law of Continuing Change "An E-type program that is used must be continually adapted else it becomes progressively less satisfactory." Consequence new concerns need to be added, and existing concerns modified, to make the software compatible again with the changed requirements number of crosscutting concerns will increase over time, according to Lehman's 2nd law of Increasing Complexity "As a program is evolved its complexity increases unless work is done to maintain or reduce it. " 16

Crosscutting concerns and aspect-oriented programming Aspects an additional abstraction mechanism for (objectoriented) programming languages allow to capture cross-cutting concerns in a localised way reduces complexity 17

Software evolution and aspect-oriented programming Existing software evolution expertise on migration of legacy code reverse and re-engineering refactoring and restructuring may be reused to migrate/restructure existing software into aspect-oriented software identify cross-cutting concerns and modularise them into aspects 18

Software evolution and aspect-oriented programming Three important research goals 1. automatically identify crosscutting concerns based on pattern matching, clone detection, logic reasoning, formal concept analysis,... 2. restructure legacy programs into aspect-oriented programs 3. deal with evolution of aspect-oriented programs co-evolution of base program and aspects 19