2000 Research Overview Dr. Kim Mens Programming Technology Lab Vrije Universiteit Brussel.

Slides:



Advertisements
Similar presentations
Language Specification using Metamodelling Joachim Fischer Humboldt University Berlin LAB Workshop Geneva
Advertisements

1 A Graph Rewriting Formalism for Object-Oriented Software Evolution Tom Mens FWO Postdoctoral Fellow Programming Technology Lab Vrije.
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 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Unit 2. Software Lifecycle
Automated creation of verification models for C-programs Yury Yusupov Saint-Petersburg State Polytechnic University The Second Spring Young Researchers.
Object-Oriented Analysis and Design
Chess Review May 8, 2003 Berkeley, CA Classes and Inheritance in Actor- Oriented Models Stephen Neuendorffer Edward Lee UC Berkeley.
Vrije Universiteit amsterdamPostacademische Cursus Informatie Technologie Themes and Variations abstraction -- the object metaphor modeling -- understanding.
Generative Programming. Generic vs Generative Generic Programming focuses on representing families of domain concepts Generic Programming focuses on representing.
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
Community Manager A Dynamic Collaboration Solution on Heterogeneous Environment Hyeonsook Kim  2006 CUS. All rights reserved.
COMPUTER PROGRAMMING. Introduction to C++ History Merges notions from Smalltalk and notions from C The class concept was borrowed from Simular67 Developed.
Introduction To System Analysis and design
Object-oriented Software Engineering with Reuse Contracts Koen De Hondt, Carine Lucas, Kim Mens, Tom Mens, Patrick Steyaert, Roel Wuyts Programming Technology.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented.
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
2000 Advanced OOSA State of the Art on Software Architecture Declarative Meta Programming Session 1: Introduction Nantes, EMOOSE.
Introduction to MDA (Model Driven Architecture) CYT.
Assessing the Suitability of UML for Modeling Software Architectures Nenad Medvidovic Computer Science Department University of Southern California Los.
4/2/03I-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Software Architecture and Design Readings: Ambler, Chap. 7 (Sections to start.
Modularizing Web Services Management with AOP María Agustina Cibrán, Bart Verheecke { Maria.Cibran, System and Software Engineering.
A Novel Approach to Architectural Recovery in Evolving Object- Oriented Systems PhD thesis Koen De Hondt December 11, 1998.
Generative Programming. Automated Assembly Lines.
Formal Foundations for Software Evolution Programming Technology Lab Tom Mens
A language to describe software texture in abstract design models and implementation.
OOP Class Lawrence D’Antonio Lecture 3 An Overview of C++
Chapter 18 Object Database Management Systems. McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved. Outline Motivation for object.
C++ History C++ was designed at AT&T Bell Labs by Bjarne Stroustrup in the early 80's Based on the ‘C’ programming language C++ language standardised in.
A Logic Meta-Programming Approach to support the Co-Evolution of Object-Oriented Design and Implementation Roel Wuyts , PROG.
The Volcano Optimizer Generator Extensibility and Efficient Search.
ARCHITECTURAL DESIGN. Why is Architecture Important? Representations of software architecture are an enabler for communication between all parties (stakeholders)
Cupid: A Smart Development Environment for Earth System Models Rocky Dunlap research sponsored by NASA/ROSES 1.
Programming Technology Lab1 Declarative Meta Programming Dr. Kim Mens ( ) Programming Technology.
A Component Platform for Experimenting with Autonomic Composition A component framework for supporting composition of autonomic services and bio-inspired.
Ch- 8. Class Diagrams Class diagrams are the most common diagram found in modeling object- oriented systems. Class diagrams are important not only for.
A Formal Model for Object-Oriented Software Reuse Kim Mens Programming Technology Lab Vrije Universiteit Brussel FNRS MeetingMay 6th, 1997.
EMEA Beat Schwegler Architect Microsoft EMEA HQ Ingo Rammer Principal Consultant thinktecture
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Testing OO software. State Based Testing State machine: implementation-independent specification (model) of the dynamic behaviour of the system State:
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
Developing Product Line Components Jan Bosch Professor of Software Engineering University of Groningen, Netherlands
2000 Advanced OOSA State of the Art on Software Architecture Declarative Meta Programming Session 3: Declarative Meta Programming.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB Markus.
Chapter 18 Object Database Management Systems. Outline Motivation for object database management Object-oriented principles Architectures for object database.
Reuse Contracts A Historic Overview Dr. Tom Mens Programming Technology Lab Vrije Universiteit Brussel Course OOSE.RC EMOOSE
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
21/1/ Analysis - Model of real-world situation - What ? System Design - Overall architecture (sub-systems) Object Design - Refinement of Design.
Programming Language Concepts (CIS 635) Elsa L Gunter 4303 GITC NJIT,
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
1 Declaratively Codifying Software Architectures Using Virtual Software Classifications Kim Mens Kim Mens, Roel Wuyts, Theo D’Hondt Programming Technology.
October 19, 1998Doctoral Symposium OOPSLA’98 Kim Mens Intentional annotations for evolving object-oriented software Kim Mens Programming Technology Lab.
4 June 1998, Mulhouse, France > ‘98 International Workshop Tom Mens Carine Lucas & Patrick Steyaert Programming Technology.
Documenting Evolving Software Systems through Reuse Contracts Kim Mens Patrick SteyaertCarine Lucas Programming Technology Lab, Vrije Universiteit Brussel.
A Formalism for Transformational Software Evolution Programming Technology Lab Vrije Universiteit Brussel, Belgium Tom Mens
ECE 750 Topic 8 Meta-programming languages, systems, and applications Automatic Program Specialization for J ava – U. P. Schultz, J. L. Lawall, C. Consel.
Application architectures Advisor : Dr. Moneer Al_Mekhlafi By : Ahmed AbdAllah Al_Homaidi.
A Survey of Object-Oriented Concepts, by Oscar Nierstrasz Reviewed by Odd Petter N. Slyngstad for DT8100, 27/1/2005.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Introduction to Design Patterns
Types of Programming Languages
Designing Software for Ease of Extension and Contraction
Programming Languages 2nd edition Tucker and Noonan
Intentional source-code views
Reuse Contracts: Managing the Evolution of Reusable Assets
From Use Cases to Implementation
Software Architecture & Design
Presentation transcript:

Research Overview Dr. Kim Mens Programming Technology Lab Vrije Universiteit Brussel

2 Research history n Formal foundations of object orientation u OPUS – a calculus for modeling OO concepts OPUS u Typing dynamic inheritance a novel type system (based on annotated class interfaces) n Software reuse and evolution u Reuse contracts – detecting evolution conflicts Reuse contracts u Architectural conformance checking (PhD) Architectural conformance checking Strong emphasis on: object orientation formal foundations tool support

3 OPUS – a calculus for modeling object-oriented concepts n Goal: u study foundations of object-oriented programming languages n A calculus … u very simple syntax u only a few reduction rules n … to model object-oriented concepts: u objects u encapsulation (public/private) u message passing u incremental modification (inheritance)

4 Refinement 3 add {+size} Coarsening 3 addMany {-add} Refinement 3 add {+size} Inconsistent Methods addMany needs to be overridden too DesktopFolder xpos, ypos, contents move add addMany {add} SizedFolder add {size} size DesktopFolder xpos, ypos, contents move add addMany SizedFolder add {size} size Reuse contracts – detecting evolution conflicts

5 Architectural conformance checking Thesis statement: Focus: u we want an architectural conformance checking approach that is as expressive as possible Restrictions: u object-oriented software (e.g., Smalltalk) u only static structure (i.e., no run-time information) Automated support for checking conformance of the implementation of a software system to its architecture(s) can be achieved in a very expressive way by adopting a declarative meta-programming approach.

6 Architectural conformance checking – Conformance mapping Uses Data 1 Uses Data 2 Asks 2 Asks 1 Updates 1 Clause Selector Knowledge Base Rule Interpreter Working Memory ArchitectureImplementationConformance mapping

7 Architectural conformance checking – Cross-cutting mappings Uses Data 1 Uses Data 2 Asks 2 Asks 1 Updates 1 Clause Selector Knowledge Base Rule Interpreter Working Memory ArchitectureConformance mapping Implementation qzfdxgf

8 Architectural conformance checking – Software classifications Uses Data 1 Uses Data 2 Asks 2 Asks 1 Updates 1 Clause Selector Knowledge Base Rule Interpreter Working Memory ArchitectureImplementation Abstraction Implementation qzfdxgf Architectural Instantiation ruleInterpreter

9 Architectural conformance checking – Virtual software classifications classifiedAs(method( ’ruleInterpreter’ ), Method ) :- classifiedAs(class('soul'), Class), interpretingProtocolName(ProtocolName), protocolName(Protocol, ProtocolName), methodInProtocol(Class, Protocol, Method). classifiedAs(method( ’ruleInterpreter’ ), Method ) :- classifiedAs(class('soul'), Class), interpretingProtocolName(ProtocolName), protocolName(Protocol, ProtocolName), methodInProtocol(Class, Protocol, Method). Uses Data 1 Uses Data 2 Asks 2 Asks 1 Updates 1 Clause Selector Knowledge Base Rule Interpreter Working Memory ArchitectureImplementation Abstraction Implementation qzfdxgf Architectural Instantiation

10 Architectural conformance checking – Virtual dependencies asks (M1, M2) :- isAskedBy_M_M(M2, M1). isAskedBy_M_M(M2, M1) :- classImplementsMethodNamed(C1, M1N, M1), className(C1, C1N), methodName(M2, M2N), … asks (M1, M2) :- isAskedBy_M_M(M2, M1). isAskedBy_M_M(M2, M1) :- classImplementsMethodNamed(C1, M1N, M1), className(C1, C1N), methodName(M2, M2N), … Uses Data 1 Uses Data 2 Asks 2 Asks 1 Updates 1 Clause Selector Knowledge Base Rule Interpreter Working Memory ArchitectureImplementation Abstraction Implementation qzfdxgf Architectural Instantiation

11 Architectural conformance checking – Conformance checking algorithm Uses Data 1 Uses Data 2 Asks 2 Asks 1 Updates 1 Clause Selector Knowledge Base Rule Interpreter Working Memory ArchitectureImplementation Abstraction Implementation qzfdxgf Architectural Instantiation ruleInterpreter ruleSelection asks ( M1, M2 )  

12 Current research interests Strong emphasis on: object orientation formal foundations tool support

13 Declarative meta programming n Meta programming: u allows manipulation of & reasoning about some base language n Declarative programming: u readable, intuitive, intentional, concise u e.g., a logic programming language u a Prolog-like language is typically good at meta programming and language processing reasoning about knowledge unification, backtracking, multi-way reasoning n Declarative meta programming (DMP): u use of a logic programming language to reason about the structural aspects of the source code in some base language u check / search / enforce ( / generate / transform )

14 Declarative meta programming – A layered declarative framework

15 Co-evolution n Co-evolution u information in implementation and earlier life-cycle phases (e.g., analysis, design) may evolve independently u need to keep information in these phases synchronised u impact analysis / conflict detection / change propagation /... n Co-evolution of u design and implementation u architecture and implementation n Approach u use declarative meta programming u apply reuse contract ideas

16 Software architecture n Architectural conformance checking formalism u used a declarative meta-programming approach u 1 st step towards co-evolution of architecture and implementation n Refining the architectural description language architectural styles and patterns; sub-architectures; architectural constraints and architectural correspondences; architectural deviations; architectural specialization n Generalising the formalism to other base languages n More case studies to further validate the u feasibility, efficiency, expressiveness, ease of use, scalability n Using dynamic information

17 Software architecture – architectural styles architectural style arch. entitiesOO conceptsST implementation dataflow pipe-and-filter Components: user input state output Connectors: accessing updating creation class variable arguments instance creation initialization message passing getting / setting... new initialize (lazy/explicit) … accessors / mutators class / meta class instance variable class variable method parameters

18 Architecture-driven software development n Use table for architecture-driven software development n Define conformance mapping semi-automatically u between a given architecture and implementation u suggest plausible conformance mappings n Forward engineering u implement software conform to a given architecture u generate code (fragments) n Reverse engineering u extract software architecture from source code u “source-code mining”

19 An industrial-strength architecture- driven software development tool n Towards an industrial-strength tool: u Visualization tools u Advanced source-code browsers including architecture-driven browsers u Enforcing coding conventions and design styles u Layered library of predicates (declarative framework) u Reverse engineering architecture from source code u Code generation facilities u Co-evolution support architectural deviations resolving conformance conflicts incremental and partial conformance checking algorithm synchronization

20 Summary RC PhD

21 Other research interests n Aspect-oriented programming (AOP) and multi-dimensional separation of concerns n Logic programming n Functional programming n...