software modernization

Post on 06-May-2015

716 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Slides from my talk in Madrid, November 11th 2012

TRANSCRIPT

Software Modernization

Javier Luis Cánovas Izquierdojavier.canovas@inria.fr

Universidad Autónoma de MadridNoviembre de 2012

René Magritte

Who am I?

Where am I from?

The team

AtlanMod people

Our place

Our place in MDD

My place

Outline

fotopedia/DVIDSHUB

Jean Christophe Prunet

Software modernization

Mauro Cateb

Callingthings

properly

Calling things properly

Reengineering"The examination and alteration of a software system to reconstitute it in a new form and the subsequent implementation of a new form. Generally includes some form of reverse engineering, followed by some form of forward engineering or restructuring."

E. Chikofsky and J. Cross, “Reverse engineering and design recovery: A taxonomy,” Software, IEEE, vol. 7, no. 1, pp. 13–17, 1990.

Calling things properly

Reverse Engineering"Process of analyzing a subject system to identify its components and their relationships and to create representations of the systems in another form or at a higher level of abstraction. Generally involves extracting design artifacts and building or synthesizing abstractions that are less implementation- dependent..."

E. Chikofsky and J. Cross, “Reverse engineering and design recovery: A taxonomy,” Software, IEEE, vol. 7, no. 1, pp. 13–17, 1990.

Calling things properly

Restructuring"Transformation for one representation form to another, at the same abstraction level, while preserving the subject system external behavior (functionality and semantics)"

E. Chikofsky and J. Cross, “Reverse engineering and design recovery: A taxonomy,” Software, IEEE, vol. 7, no. 1, pp. 13–17, 1990.

Calling things properly

Forward Engineering"The traditional process of moving from high level abstractions & logical or implementation independent designs (e.g. models) to the physical implementation of a system (e.g. source code)."

E. Chikofsky and J. Cross, “Reverse engineering and design recovery: A taxonomy,” Software, IEEE, vol. 7, no. 1, pp. 13–17, 1990.

Everything together

R. Kazman, S. G. Woods, and S. J. Carrière, “Requirements for Integrating Software Architecture and Reengineering Models : CORUM II,” in WCRE conf., 1998, pp. 154–163.

Everything together (reloaded)

R. Kazman, S. G. Woods, and S. J. Carrière, “Requirements for Integrating Software Architecture and Reengineering Models : CORUM II,” in WCRE conf., 1998, pp. 154–163.

flickr/a_ninjamonkey

Modernization

"It is a form of software evolution which relies on an existing system as input."

R. C. Seacord, D. Plakosh and G. A. Lewis, “Modernizing Legacy Systems”. Addison-Wesley, 2003

flickr/mark.hogan

ModernizationExamples

Reverse engineering goal models

Y. Yu, Y. Wang, J. Mylopoulos, S. Liaskos, A. Lapouchnian, and J. C. Sampaio do Prado Leite, “Reverse engineering goal models from legacy code,” in RE conf., 2005.

Reverse engineering goal models

Y. Yu, Y. Wang, J. Mylopoulos, S. Liaskos, A. Lapouchnian, and J. C. Sampaio do Prado Leite, “Reverse engineering goal models from legacy code,” in RE conf., 2005.

SOA migration

M. Razavian and P. Lago, “Towards a conceptual framework for legacy to soa migration,” in ICSOC workshop, 2010, vol. 6275, pp. 445–455.

flickr/roger4336

MDD in Software modernization

The classical Horse-shoe model

The MDD-based Horse-shoe model

The MDD-based Horse-shoe model

Alan Pennington

MDD-based ModernizationExamples

Struts to JSF migration

J. L. Cánovas Izquierdo, O. Sánchez Ramón, J. Sánchez Cuadrado, and J. García Molina, “DSLs para la extracción de modelos en modernización,” in DSDM workshop, 2008.

Maintainer script modernization

D. D. Ruscio and P. Pelliccione, “Towards maintainer script modernization in FOSS distributions,” OCE workshop, 2009.

Maintainer script modernization

D. D. Ruscio and P. Pelliccione, “Towards maintainer script modernization in FOSS distributions,” OCE workshop, 2009.

Modernization business

T. Clark and P.-A. Muller, “Exploiting model driven technology: a tale of two startups,” Software & Systems Modeling, vol. 11, no. 4, pp. 481–493, Aug. 2012.

fotopedia/Mirco Wilheim

Architecture-Driven Modernization

What is it?

What is it?

What is it?

What is it?

What is it?

From OMG's specification"ADM refers to the process of understanding and evolving existing software assets in order to maintain their business value"

ADM metamodels

ADM metamodels

Alex Proimos

Going into the metamodels

ADM metamodels

What is it?

From OMG's specification"...the ASTM supports a direct 1-to-1 mapping of all code-level software language statements into low-level software models."

What for?

From OMG's specification"This mapping is intended to provide a framework for:

1. A high-fidelity invertible representation of code written in any software language...

2. Attachment of low-level software semantics produced by a constraint analysis, specifically scope analysis..."

Abstract syntax tree

Levels of conformance

GASTM

SASTM

Levels of conformance

Levels of conformance

Example

Example

Example

Example

Summary

ADM metamodels

What is it?

From OMG's specification"...a meta-model for representing existing software, its elements, associations, and operational environments... KDM facilitates projects that involve existing software systems by ensuring interoperability and exchange of data between tools provided by different vendors..."

KDM packages

Compliant levels

Core Package

Kdm Package

Kdm Package

● KDM metamodel structure

Kdm Package

● KDM metamodel structure● Audit mechanism

Kdm Package

● KDM metamodel structure● Audit mechanism● Extension mechanism

Kdm Package

● KDM metamodel structure● Audit mechanism● Extension mechanism● Tag mechanism

Source Package

Code Package

Action Package

Micro-KDM package

● Action semantic

● Action types

● Comparison(equals, notequals, lessthan,…)

● Numerical (add, multiply, divide,…)

● Binary operations (bitAnd, bitNot, leftShift,…)

● Control (if, assign, condition,…)

● Data type access (fieldSelect, …)

● Data type conversion (sizeof,…)

● String operations (tail, append,…)

● ...

Example

Example

Example

Example

Example

And the other packages?

Summary

ASTM vs. KDM

ASTM

KDM

ASTM vs. KDM

ASTM

KDM

ADM metamodels

What is it?

From OMG's specification"...meta-model for representing measurement information related to any model structured information with an initial focus on software, its operation, and its design.... ...this specification is an extensible meta-model for exchanging both measures and measurement information concerning artifacts contained or expressed by structured models, such as MOF..."

Core elements

Measures hierarchy

Measurements hierarchy

Hierarchy mirrored

Example

Example

The classical Horse-shoe model

ADM-based horse shoe model

Modernization scenarios

OMG, “Architecture-driven modernization scenarios,” 2006.

ADM Modernization business

flickr/jonrus

ADM-based modernizationexamples

Calculating metrics from PL/SQL

J. L. Cánovas Izquierdo and J. García Molina, “An Architecture-Driven Modernization Tool for Calculating Metrics,” IEEE Software, vol. 27, no. 4, pp. 37–43, 2010.

Calculating metrics from PL/SQL

J. L. Cánovas Izquierdo and J. García Molina, “An Architecture-Driven Modernization Tool for Calculating Metrics,” IEEE Software, vol. 27, no. 4, pp. 37–43, 2010.

Recovering Web Services

R. Pérez-Castillo, I. G. D. Guzmán, and I. Caballero, “Software modernization by recovering Web services from legacy databases,” Journal of Software: Evolution and Process, 2012.

Recovering Web Services

R. Pérez-Castillo, I. G. D. Guzmán, and I. Caballero, “Software modernization by recovering Web services from legacy databases,” Journal of Software: Evolution and Process, 2012.

photopedia/marfis75

MoDisco

MoDisco = Model Discovery

"An Eclipse framework to support the elaboration of Model-Driven Reverse Engineering solutions."

MoDisco in the Horse-shoe model

MoDisco in the Horse-shoe model

Reverse Engineering in MoDisco

Discover

Technical Spaces

Definition:"A technological space is a working context with a set of associated concepts, body of knowledge, tools, required skills, and possibilities. It is often associated to a given user community with shared know-how, educational support, common literature and even workshop and conference meetings."

I. Kurtev, J. Bézivin, and M. Aksit, “Technological Spaces : an Initial Appraisal,” in DOA, 2002

Technical Spaces

Bridging Technical Spaces

"...no TS is an island. There are bridges between various spaces and these bridges also have particular properties. Some may be bi-directional and some may be one-way bridges. Some operations may be performed easier in one space and the result may then be imported into other space."

I. Kurtev, J. Bézivin, and M. Aksit, “Technological Spaces : an Initial Appraisal,” in DOA, 2002

Why bridging?

Jean Bézivin. Model Engineering for Software Modernization. In WCRE - Guest Talk, 2004

Bridging Technical Spaces

I. Kurtev, J. Bézivin, and M. Aksit, “Technological Spaces : an Initial Appraisal,” in DOA, 2002

Technical Spaces

Technical Spaces

Reverse Engineering in MoDisco

MoDisco support for Java

MoDisco support for XML

MoDisco support for JSP

Discovery manager

New discoverers

Understand

Reverse Engineering in MoDisco

Model Browser

Transform

Transform

Reverse Engineering in MoDisco

MoDisco Architecture

flickr/-staci-

MoDiscoexamples

JUnit migration

Java source codeJUnit3 code

Java modelJUnit3

Java metamodel

conforms to

MoDiscoJava

Discoverer

MoDiscoModel

Browser

JUnit migration

MoDiscoModelBrowser

Java modelJUnit3

JavaCustomization

JUnit3Queries

JUnit3Facets

uses

JUnit migration

Java source codeJUnit4 code

JUnit3 to JUnit4M2M Transformation

Java modelJUnit4

Java modelJUnit3

MoDisco Java

Generator

JUnit3Facets

Calculating metrics from code

Viewpoints from source code

flickr/peterzen

top related