Outline Introduction Problem Statement Object-Oriented Design Aspect-Oriented Design Conclusion Demo.

Slides:



Advertisements
Similar presentations
Design Patterns.
Advertisements

Welcome to. Who am I? A better way to code Design Patterns ???  What are design patterns?  How many are there?  How do I use them?  When do I use.
A Brief Introduction to Aspect-Oriented Programming Zhenxiao Yang.
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.
Aspect Oriented Programming - AspectJ Radhika Rajput.
Overview of AspectJ Aspect Oriented Software Development Seminar Technion presented by Oren Mishali.
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 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.
Satzinger, Jackson, and Burd Object-Orieneted Analysis & Design
March R McFadyen1 GoF (Gang of Four): Gamma, Johnson, Helm & Vlissides Book: Design Patterns: Elements of Reusable Object-Oriented Software.
Spring 2010ACS-3913 Ron McFadyen1 Singleton To guarantee that there is at most one instance of a class we can apply the singleton pattern. Singleton Static.
Aspect Oriented Programming Written by Michael Beder.
Fall 2009ACS-3913 R McFadyen1 Singleton Problem: Exactly one instance of a certain object is required (this object is called a singleton). We must ensure.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
1 Model Interface Implementation for Two-Way Obliviousness in Aspect-Oriented Modeling Presented by Wuliang Sun Department of Computer Science Baylor University.
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
Secure Systems Research Group - FAU Aspects and mobile applications Sergio Soares Paulo Borba, “PaDA: A Pattern for Distribution Aspects” In Second Latin.
Introduction to Aspect Oriented Programming Presented By: Kotaiah Choudary. Ravipati M.Tech IInd Year. School of Info. Tech.
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.
1 Metamodel Access Protocols for Extensible Aspect-Oriented Modeling Naoyasu Ubayashi(Kyushu Institute of Technology, Japan) Shinji Sano(Kyushu Institute.
Object-Oriented Analysis and Design An Introduction.
Software Engineering 1 Object-oriented Analysis and Design Applying UML and Patterns An Introduction to Object-oriented Analysis and Design and Iterative.
Chapter 26 GoF Design Patterns. The Adapter Design Pattern.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 32 Slide 1 Aspect-oriented Software Development 1.
James Tam Introduction To Design Patterns You will learn about design techniques that have been successfully applied to different scenarios.
Modularizing Web Services Management with AOP María Agustina Cibrán, Bart Verheecke { Maria.Cibran, System and Software Engineering.
Aspect Oriented Programming Sumathie Sundaresan CS590 :: Summer 2007 June 30, 2007.
Aspect Oriented Programming Gülşah KARADUMAN.
Methodology: The AOP Refactoring Process Aspect-Oriented Refactoring of the Apache Cocoon Shared-Object Resource Allocation System Jeff Dalton Advisor:
Design Rules for Increasing Modularity with CaesarJ Carlos Eduardo Pontual Advisor: Paulo Borba 17/06/2010.
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.
Singleton and Basic UML CS340100, NTHU Yoshi. What is UML Unified Modeling Language A standardized general-purpose modeling language in the field of software.
Domain Driven Web Development With WebJinn Sergei Kojarski College of Computer & Information Science Northeastern University joint work with David H. Lorenz.
1 An Aspect-Oriented Implementation Method Sérgio Soares CIn – UFPE Orientador: Paulo Borba.
IDENTIFYING SEMANTIC DIFFERENCES IN ASPECTJ PROGRAMS Martin Görg and Jianjun Zhao Computer Science Department, Shanghai Jiao Tong University.
Towards Multi-Paradigm Software Development Valentino Vranić Department of Computer Science and Engineering Faculty of Electrical Engineering.
Design Patterns Yonglei Tao. Design Patterns  A design pattern describes a recurring design problem, a solution, and the context in which that solution.
© Siemens AG, CT SE 2 C O R P O R A T E T E C H N O L O G Y 1 Model-Driven Development for Pluggable Collaborations Iris Groher, Stephan Bleicher, Christa.
Topics for exam in AOSD Basic concepts: tangling, scattering, joinpoint, advice, cross-cutting, weaving AspectJ: syntax, pointcut notations, around, proceed,
Sadegh Aliakbary. Copyright ©2014 JAVACUP.IRJAVACUP.IR All rights reserved. Redistribution of JAVACUP contents is not prohibited if JAVACUP.
Aspect Oriented Development Alex Beatty.  Purpose  Cross-cutting Concerns  Join Points, Pointcuts, and Advices  Weaving  Invasive vs. Non-Invasive.
Alloy-based Lightweight Verification for Aspect-oriented Architecture Naoyasu Ubayashi(Kyushu Institute of Technology) Yuki Sato(Kyushu Institute of Technology)
AOP-Driven Variability in Software Product Lines Vander Alves, Ayla Dantas, and Paulo Borba Informatics Center – UFPE – Brazil
Aspect Mining Jin Huang Huazhong University of Science & Technology, China
Design Patterns Introduction
1 Deriving Refactorings for AspectJ Leonardo Cole Paulo Borba Informatics Center Federal University of Pernambuco Brazil.
TK2023 Object-Oriented Software Engineering CHAPTER 9 INTRODUCTION TO OBJECT DESIGN.
问题 Code scattering Blocks of duplicated code Blocks of complementary code, and different modules implementing complementary parts of the concern Code.
aspectj tools new and noteworthy Mik Kersten University of British Columbia Adrian Colyer IBM Hursley OOPSLA, October
Applying Aspect-Orientation in Designing Security Systems Shu Gao Florida International University Center for Advanced Distributed Systems Engineering.
R R R A Brief Introduction to Aspect-Oriented Programming.
COMP319 REVISION © University of LiverpoolCOMP 319slide 1.
Kyung Hee University Class Diagramming Notation OOSD 담당조교 석사과정 이정환.
L’origine dei mali: le dipendenze tra componenti Stefano Leli 14° Workshop DotNetMarche Venerdì 16 aprile
Aspect-oriented Code Generation Approaches Abid Mehmood & Dayang N. A. Jawawi Department of Software Engineering Faculty of Computer Science and Information.
Unit II-Chapter No. : 5- design Patterns
An Interface Mechanism for Encapsulating Weaving in Class-based AOP
Aspect-Oriented Programming with the Eclipse AspectJ plug-in
Aspect-Oriented Programming
WARNING These slides are not optimized for printing or exam preparation. These are for lecture delivery only. These slides are made for PowerPoint 2010.
Software Engineering Lecture 7 - Design Patterns
CS 350 – Software Design Singleton – Chapter 21
AspectAda Aspect-Oriented Programming for Ada95
Presentation transcript:

Outline Introduction Problem Statement Object-Oriented Design Aspect-Oriented Design Conclusion Demo

Introduction Project: UML Class Diagram Drawing Complex Issue Project Objective Practice Aspect Oriented Design & Development No problem with Rational! ;)

Problem Statement Complex nature of Software Design Notation UML Develop a UML Design Tool Implement using Aspect Technology

Requirements Analysis Create Class Structures Present the Structure Logical View Diagram View Support Basic UML Elements Export Images Print Images

User Interface Prototype

Use Cases

Object-Oriented Design Logical Model Diagram Model Views Tools Managers TreeViewManager DiagramViewManager

Logical Model Composite Pattern

Managers - Singleton Pattern public class Manager { private static Manager instance = null; private Manager() { } public static Manager getInstance() { if (instance == null) { instance = new Manager(); } return instance; }

Other Design Patterns Factory Method Creating diagram element UIs Observer Reflecting data model updates to views Faćade Saving, loading Project Drawing diagram contents

Crosscutting Concerns (Aspects) View Update Product Version Generation

View Updating Update of views due to model change View Updating Crosscutting Concern

View Updating Tangling Code Scattered Concern class NodeTool { void handleMouseMove() {... DiagramViewManager.getInstance(). getCurrentDiagramEditor().repaint(); } class AssociationTool { void handleMouseMove() {... DiagramViewManager.getInstance(). getCurrentDiagramEditor().repaint(); }

Aspect Code View Update aspect ViewUpdating { }

Aspect Code View Update aspect ViewUpdating { pointcut updatesView(): call(* tool.*.*(..)); }

Aspect Code View Update aspect ViewUpdating { pointcut updatesView(): call(* tool.*.*(..)); after(): updatesView() { DiagramViewManager.getInstance(). getCurrentDiagramEditor().repaint(); }

View Updating using AOP Crosscutting is localized No scattering No tangling Increased modularity Aspect Code Base Code Changes can be easily handled Scenario: Interface of “DiagramEditor” has changed Solution: Just need to change the “advice” code after(): updatesView() { DiagramViewManager.getInstance(). getCurrentDiagramEditor().repaint(); } after(): updatesView() { DiagramViewManager.getInstance(). getCurrentDiagramEditor().invalidate(); }

Product Version Generation Different Versions Personal Standard Enterprise How to develop? Different Source Trees  Enterprise Edition Source Personal Edition Source Standard Edition Source Changes are unmanageable

Product Version Generation Different Versions Personal Standard Enterprise How to develop? Different Source Trees  Inline checking  public void printDiagram() { int version = getVersion(); if ( version == ENTERPRISE ) {... } else if ( version() == STANDARD ) {... } else {... } Scattered Concern Tangling Code

Product Version Generation Different Versions Personal Standard Enterprise How to develop? Different Source Trees  Inline checking  Aspects

Aspect Code Version Control aspect VersionControlling { }

Aspect Code Version Control aspect VersionControlling { pointcut enterpriseOps(): call(* MainFrame.printDiagram()) || call(* MainFrame.exportDiagram()); }

Aspect Code Version Control aspect VersionControlling { pointcut enterpriseOps(): call(* MainFrame.printDiagram()) || call(* MainFrame.exportDiagram()); around(): enterpriseOps() { JOptionPane.showMessageDialog(null, "This operation is supported in Enterprise Edition.", "Warning", JOptionPane.WARNING_MESSAGE); }

Product Version Generation using AOP Crosscutting is localized No scattering No tangling Increased modularity Aspect Code Base Code Changes can be easily handled Scenario: Change supported operations in versions Solution: Just need to change the “pointcut” pointcut enterpriseOps(): call(* MainFrame.printDiagram()) || call(* MainFrame.exportDiagram()); pointcut enterpriseOps(): call(* MainFrame.layoutDiagram());

Aspect Oriented Design Simple, easy to understand design Aspect notation UML extension mechanism (stereotypes)

Aspect Specification Using Composition Filters Version Control versionControl: Error = { enterpriseEdition => {printDiagram, exportDiagram}, standardEdition ~> {printDiagram, exportDiagram} };

Conclusion Complex Software Systems Several concerns were crosscut Not easy to localize, scattering, tangling Reduces modularity We have overcame these using AOP Design became more modular Changes became more manageable

Demo

Thank You! Questions?