ATL Transformation Example

Similar documents
ATL Transformation Example

CISC836: Models in Software Development: Methods, Techniques and Tools

ATL Transformation Example

ATL Transformation. Catalogue of Model Transformations

Object-Oriented Design

ATL Transformation Examples. The KM3 to Metric ATL transformation

CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS

ATL Transformation Example

ATL TRANSFORMATION EXAMPLE

Research Article ISSN:

Chapter 8: Enhanced ER Model

ATL: Atlas Transformation Language. ATL User Manual

Towards the re-usability of software metric definitions at the meta level

Metamodeling. Janos Sztipanovits ISIS, Vanderbilt University

Dominique Blouin Etienne Borde

Measuring ATL Transformations

Class modelling (part 2)

ATL: Atlas Transformation Language. ATL Transformation Description Template - version 0.1 -

Ant tasks for AMMA. Ant is an Apache project. It is open source software, and is released under the Apache Software License.

Static Metrics. Feature Brief

Chapter 8: Class and Method Design

Object Oriented Metrics. Impact on Software Quality

Model transformations. Model transformations. Model transformations. Model transformations

Existing Model Metrics and Relations to Model Quality

An Empirical Verification of Software Artifacts Using Software Metrics

Reusability Metrics for Object-Oriented System: An Alternative Approach

Inheritance Metrics: What do they Measure?

Class modelling (part 2)

An Approach for Quality Control Management in Object Oriented Projects Development

Metamodeling with Metamodels. Using. UML/MOF including OCL

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis

Dominique Blouin Etienne Borde

Object-Oriented Design Quality Models A Survey and Comparison

Advanced Traceability for ATL

Inheritance and Polymorphism

A Hierarchical Model for Object- Oriented Design Quality Assessment

Some observations on the application of software metrics to UML models

On the Application of Software Metrics to UML Models

Some observations on the application of software metrics to UML models

Object Oriented Measurement

Enhanced Class Design -- Introduction

Chapter 8 The Enhanced Entity- Relationship (EER) Model

Reviewing for the Midterm Covers chapters 1 to 5, 7 to 9. Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013

Object-Oriented Design

M. (1) (1) (2) (1) ATLAS

Ingegneria del Software Corso di Laurea in Informatica per il Management. Introduction to UML

MDD with OMG Standards MOF, OCL, QVT & Graph Transformations

Object-Oriented Concepts and Principles (Adapted from Dr. Osman Balci)

Index. Index. More information. block statements 66 y 107 Boolean 107 break 55, 68 built-in types 107

Classwide Programming 1

Transforming models with ATL

Model transformations. Overview of DSLE. Model transformations. Model transformations. The 4-layer architecture

Last Lecture. Lecture 26: Design Patterns (part 2) State. Goals of Lecture. Design Patterns

Towards using OWL DL as a metamodelling framework for ATL

ATL Transformation. Catalogue of Model Transformations

The TTC 2011 Reengineering Challenge Using MOLA and Higher-Order Transformations

TOWARDS MODEL TRANSFORMATION DESIGN PATTERNS

Kermeta tutorial. How to create an EMF meta model? François Tanguy, Didier Vojtisek, Zoé Drey, Marie Gouyette. Abstract

Computer Programming II Python

OMG Modeling Glossary B

MDT OCL Goes Generic. Introduction to OCL and Study of the Generic Metamodel and API. Christian W. Damus IBM Rational Software OCL Committer

Goals of the Lecture OO Programming Principles

Chapter 5 Object-Oriented Programming

ECE 122. Engineering Problem Solving with Java

Meta-Model Guided Error Correction for UML Models

Think of drawing/diagramming editors. ECE450 Software Engineering II. The problem. The Composite pattern

Detailed Description and User Guide

METRIC ATTITUDE PLUG-IN FOR ECLIPSE USER GUIDE

Rules and Helpers Dependencies in ATL Technical Report

Draft version. Model Integration with Model Weaving: a Case Study in System Architecture

AADL Graphical Editor Design

C++ Important Questions with Answers

Introduction to Software Testing Chapter 2.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt

birds fly S NP N VP V Graphs and trees

From Module To Objects

Trees : Part 1. Section 4.1. Theory and Terminology. A Tree? A Tree? Theory and Terminology. Theory and Terminology

Unified Modeling Language 2

From Objects to Aspects: Assessing Modularity Evolution

Object Oriented Features. Inheritance. Inheritance. CS257 Computer Science I Kevin Sahr, PhD. Lecture 10: Inheritance

Chapter 6 Introduction to Defining Classes

Object-Oriented Design

Object-oriented metrics 1

Software Design Heuristics

Computer Programming II C++ (830)

ATL: ATLAS Transformation Language. MISO - Uniandes

Notes on Binary Dumbbell Trees

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

CHAPTER 3 ROLE OF OBJECT-ORIENTED METRICS IN SOFTWARE MEASUREMENT

UML PROFILING AND DSL

XML databases. Jan Chomicki. University at Buffalo. Jan Chomicki (University at Buffalo) XML databases 1 / 9

Review: Object Diagrams for Inheritance. Type Conformance. Inheritance Structures. Car. Vehicle. Truck. Vehicle. conforms to Object

NOTES ON OBJECT-ORIENTED MODELING AND DESIGN

Joint Tactical Radio System (JTRS) Standard Device IO Application Program Interface (API)

ATL: ATLAS Transformation Language

UNIT I. 3. Write a short notes on process view of 4+1 architecture. 4. Why is object-oriented approach superior to procedural approach?

Programming II (CS300)

CSE 214 Computer Science II Introduction to Tree

Applying Experiences with Declarative Codifications of Software Architectures on COD

Coral: A Metamodel Kernel for Transformation Engines

ATL Demystified and an Introduction to the RPG2Petrinet Experiment

Transcription:

1. ATL Transformation Example: UML2 to Measure The UML2 to Measure example describes measurement on UML2 models, using metrics defined as ATL libraries. 1.1. Transformation Overview The aim of this transformation is to collect measurement data on UML2 meta-models. EMF MOF M3 ct ct UML2 by URI ct Measure ct M2 example.uml UML2 Model Handler example-uml2.ecore FLAME4UML2.atl UML22Measure.atl example-measure.ecore QMOOD4UML2.atl M1 MOOD4UML2.atl EMOOSE4UML2.atl Figure 1: Overview of the transformation UML2 models can be measured with ATL transformations. An UML2 model file is loaded using the UML2 model handler, the result model is conformed to the UML2 Eclipse Project [3] and used as the input of the transformation. The transformation input and output meta-model handlers are UML2 and Measure. The run of the transformation UML22Measure produces a collection of measurement data. We obtain an output model of measures (which keeps the hierarchy of the model). The metrics used in the transformation are implemented with ATL libraries and will be explained in an upcoming section. Page 1/10

2. Meta-models 2.1. UML2 The UML2 meta-model used is from the UML2 Eclipse Project [3]. 2.2. Measure The Measure meta-model is used to stored the data collected after a model measurement. RootMeasureSet +modeltype : ModelKind 1 * +root +mesuresets MeasureSet +element : String +elementtype : ElementKind +root 1 1..* +categories * Category +name : String +desc : String +subsets 1 +category 1 +owner 1 * +measures Measure * +parent 1 +metric 1..* +metrics Metric +name : String +desc : String +preferredvalue : String IntegerMeasure +value : Integer DoubleMeasure +value : Double PercentageMeasure +value : Double «enumeration» ModelKind +KM3 +UML2 «enumeration» ElementKind +metamodel +model +package +interface +class Figure 2: Measure meta-model A measure model is in the following way made up: the root is a set of measure (RootMeasureSet) which contains information on the type of measured model (modeltype among KM3 or UML2), a set of categories of metric and sets of measure for each model element measured. A category (Category) corresponds to a metric set with a name and a description (desc) (an acronym and its definition). A category gathers one or more metric (Metric) also defined with a name and a description. A default predicate is also associated (preferredvalue), it is the desired values for the metric (for example 0 or > 75). A set of measure (MeasureSet) described measurements performed on a model element (element) of a given type (elementtype among meta-model, model, package, interface Page 2/10

or class). The set of measure are structured between them, for example a set of measure on a package will contain the set of measure of the classes that this package contains. A measure (Measure) is associated to a metric and is declined in several versions. Measures with an integer, real or percentage value (respectively IntegerMesasure, DoubleMeasure and PercentageMeasure). 3. Transformation from UML2 to Measure 3.1. Rules specification These are the rules to collect measurement data from a UML2 model to a Measure model. For the whole model, the following elements are created: o A RootMeasureSet element is created with: A type of model measured (modeltype set to #UML2). o For each category implemented, the following elements are created: A Category element with : A name and a description. The created Category element is linked to the RootMeasureSet. o For each metric implemented created: for a category, the following elements are A Metric element with: A name and a description. A mandatory preferred value. The created Metric element is linked to a Category element. The measure level determinates the metrics and categories that are registered. For each Package element, the following elements are created: o A MeasureSet element with the name and the type of the Package element measured. o The created MeasureSet element is linked to the MeasureSet created for his owner Package element. Page 3/10

o If the Package element contains Class elements, the following elements are created: An IntegerMeasure, DoubleMeasure or PercentageMeasure element, for each Metric element created and defined for package level. o If the Package element is a root package : It is linked to the RootMeasureSet. For each Class element, the following elements are created: o A MeasureSet element with the name and the type of the Class element measured. o The created MeasureSet element is linked to the MeasureSet created for his owner Package or Class (nested classifier) element. o An IntegerMeasure, DoubleMeasure or PercentageMeasure element, for each Metric element created and defined for class level. 3.2. ATL code This ATL code for the UML22Measure transformation consists in 4 helpers and 9 rules. The transformation uses the metrics libraries defined in section 4. The attribute helper measurelevel is used to define the type of model elements measured. For example, at package level (#package), only metrics defined for packages will be used. At class level (#class), both packages and classes metrics will be used. The two maps CategoryBy and MetricBy are used to register the categories of metrics and the metrics implemented. The entrypoint rule Metrics is used to fill the two previous maps, before processing measures. The metrics and categories registered depend on the measure level. The rule Package2MeasureSet is called if the package or class level is enabled. If the package contains some classes, measures will be performed for the metrics defined for package level. The rule Class2MeasureSet is called if the class level is enabled. Measures are performed for each metrics defined for class level. The called rules Category, Metric and MetricWithPreferredValue are used in the entrypoint rule to register the implemented categories and metrics with mandatory preferred value. The called rules IntegerMeasure, DoubleMeasure and PercentageMeasure store the value for a metric given. Page 4/10

4. Metrics Libraries 4.1. FLAME for UML2 Library 4.1.1. FLAME (Formal Library for Aiding Metrics Extraction) The functions of this library are defined in OCL language in [4] and [5] for the UML 1.3 meta-model. They have been adapted to fit with the UML2 meta-model and class diagram models. 4.1.2. ATL code This ATL code for the FLAME4UML2 library consists in 93 helpers. 4.2. MOOD for UML2 Library 4.2.1. MOOD (Metrics for Object-Oriented Design) and MOOD2 MOOD::AIF - Attributes Inheritance Factor Informal definition Quotient between the number of inherited attributes in all classes of the package and the number of available attributes (locally defined plus inherited) for all classes of the current package. MOOD::OIF - Operations Inheritance Factor Informal definition Quotient between the number of inherited operations in all classes of the package and the number of available operations (locally defined plus inherited) for all classes of the current package. MOOD::AHF - Attributes Hiding Factor Informal definition Quotient between the sum of the invisibilities of all attributes defined in all classes in the current package and the total number of attributes defined in the package. MOOD::OHF - Operations Hiding Factor Informal definition Quotient between the sum of the invisibilities of all operations defined in all classes in the current package and the total number of operations defined in the package. MOOD::BPF - Behavioral Polymorphism Factor Informal definition Quotient between the actual number of possible different polymorphic situations within the current package and the maximum number of possible distinct polymorphic situations (due to inheritance). MOOD::CCF - Class Coupling Factor Informal definition Quotient between the actual number of coupled class-pairs within the package and the maximum possible number of class-pair couplings in the package. This coupling is the one not imputable to inheritance. Page 5/10

MOOD::ICF - Internal Coupling Factor Informal definition Quotient between the number of coupling links where both the client and supplier classes belong to the current package and the total number of coupling links originating in the current package. MOOD2::IIF - Internal Inheritance Factor Informal definition Quotient between the number of inheritance links where both the base and derived classes belong to the current package and the total number of inheritance links originating in the current package. MOOD2::AHEF - Attributes Hiding Effectiveness Factor Informal definition Quotient between the cumulative number of the package classes that do access the package attributes and the cumulative number of the package classes that can access the package attributes. MOOD2::OHEF - Operations Hiding Effectiveness Factor Informal definition Quotient between the cumulative number of the package classes that do access the package operations and the cumulative number of the package classes that can access the package operations. 4.2.2. ATL code This ATL code for the MOOD4UML2 library consists in 10 helpers. The implemented metrics from the MOOD and MOOD2 sets only depend on the FLAME functions and are list above. These metrics are defined for package level. 4.3. EMOOSE for UML2 Library 4.3.1. MOOSE (Metrics for Object-Oriented Software Engineering) and EMOOSE (Extended MOOSE) MOOSE::DIT - Depth of Inheritance Tree Informal definition The length of the longest path of inheritance from the current class to the root of the tree. MOOSE::NOC - Number Of Children Informal definition The number of classes that inherit directly from the current class. MOOSE::CBO - Coupling Between Objects Informal definition The number of other classes that are coupled to the current one. Two classes are coupled when references declared in one class use references or instance variables defined by the other class. Or used as a type or in reference by other classes. MOOSE::RFC - Response for a Class Informal definition The number of methods in the current class that might respond to a message received by its object, including methods both inside and outside of this class. Page 6/10

EMOOSE::SIZE2 Informal definition Number of local attributes and operations defined in the class. The metric SIZE 1 is code dependant so not adapted to our problem. 4.3.2. ATL code This ATL code for the EMOOSE4UML2 library consists in 6 helpers. The implemented metrics from the MOOSE and EMOOSE sets only depend on the FLAME functions and are list above. These metrics are defined for class level. 4.4. QMOOD for UML2 Library 4.4.1. QMOOD (Quality Model for Object-Oriented Design) QMOOD::DSC - Design Size in Classes Informal definition Count of the total number of classes in the design. QMOOD::NOH - Number of Hierarchies Informal definition Count of the number of class hierarchies in the design. QMOOD::NIC - Number of Independent Classes Informal definition Count of the number of Classes that are not inherited by any Class in the design. QMOOD::NSI - Number of Single Inheritance Informal definition Number of Classes (sub classes) that use inheritance in the design. QMOOD::NNC - Number of Internal Classes Informal definition Count of the number of internal classes defined for creating generalization-specialization structures in class hierarchies of the design. QMOOD::NAC - Number of Abstract Classes Informal definition Count of the number of classes that have been defined purely for organizing information in the design. QMOOD::NLC - Number of Leaf Classes Informal definition Count of the number of leaf classes in the hierarchies of the design. QMOOD::ADI - Average Depth of Inheritance Informal definition The average depth of inheritance of classes in the design. It is computed by dividing the summation of maximum path lengths to all classes by the number of classes. The path length for a class is the number of edges from the root to the class in an inheritance tree representation. QMOOD::AWI - Average Width of Inheritance Informal definition The average number of children per class in the design. The metric is computed by dividing the summation of the number of children over all classes by the number of classes in the design Page 7/10

QMOOD::ANA - Average Number of Ancestors Informal definition The average number of classes from which a class inherits information. QMOOD::MFA - Measure of Functional Abstraction Informal definition The ratio of the number of methods inherited by a class to the total number of methods accessible by members in the class. QMOOD::MAA - Measure of Attribute Abstraction Informal definition The ratio of the number of attributes inherited by a class to the total number of attributes in the class. QMOOD::MAT - Measure of Abstraction Informal definition The average of functional and attribute abstraction measures. QMOOD::MOA - Measure of Aggregation Informal definition Count of the number of data declarations whose types are user defined classes. QMOOD::MRM - Modeled Relationship Measure Informal definition Measure of the total number of attribute and parameter based relationships in a class. QMOOD::DAM - Data Access Metric Informal definition The ratio of the number of private attributes to the total number of attributes declared in a class. QMOOD::OAM - Operation Access Metric Informal definition The ratio of the number of public methods to the total number of methods declared in the class. QMOOD::MAM - Member Access Metric Informal definition This metric computes the access to all the members (attributes and methods) of a class. QMOOD::NOA - Number of Ancestors Informal definition Counts the number of distinct classes which a class inherits. QMOOD::NOM - Number of Methods Informal definition Count of all the methods defined in a class. QMOOD::CIS - Class Interface Size Informal definition Number of public methods in a class. QMOOD::NPT - Number of Unique Parameter Types Informal definition Number of different parameter types used in the methods of the class. QMOOD::NPM - Number of Parameters per Method Informal definition Average of the number of parameters per method in the class. Computed by summing the parameters of all methods and dividing by the number of methods in the class. QMOOD::NOD - Number of Attributes Informal definition Number of attributes in the class. QMOOD::NAD - Number of Abstract Data Types Informal definition Number of user defined objects used as attributes in the class and which are necessary to instantiate an object instance of the (aggregate) class. Page 8/10

QMOOD::NPA - Number of Public Attributes Informal definition Number of attributes that are declared as public in the class. QMOOD::CSM - Class Size Metric Informal definition Sum of the number of methods and attributes in the class. QMOOD::CAM - Cohesion Among Methods of Class Informal definition Computes the relatedness among methods of the class based upon the parameter list of the methods. The metrics is computed using the summation of the intersection of parameters of a method with the maximum independent set of all parameter types in the class. QMOOD::DCC - Direct Class Coupling Informal definition Count of the different number of classes that a class is directly related to. The metric includes classes that are directly related by attribute declarations and message passing (parameters) in methods. QMOOD::MCC - Maximum Class Coupling Informal definition This metric not only includes classes that are directly related to a class by attributes and methods, but also classes that are indirectly related through the directly related classes. QMOOD::DAC - Direct Attribute Base Coupling Informal definition This metric is a direct count of the number of different class types that are declared as attribute references inside a class. QMOOD::DPC - Direct Parameter Based Coupling Informal definition Number of class object types that are required directly for a message passing (parameters) to methods in the class. QMOOD::MPC - Maximum Parameter Based Coupling Informal definition Number of Class object types that are required directly and indirectly for message passing (parameters) in the Class. QMOOD::CCD - Class Complexity Based on Data Informal definition Computes complexity based upon the number of components (attributes) that are defined in the class. All component declarations are resolved to the basic primitives (integers, doubles and characters). The metric value is a count of the number of primitives. QMOOD::CCP - Class Complexity Based on Method Parameters Informal definition Estimates complexity based upon the number of parameters required to call methods of the Class. Inherited method parameters are also included in the computation of the metric value. QMOOD::CCM - Class Complexity Based on Members Informal definition This metric is an aggregate of the data and method parameter complexities. Page 9/10

4.4.2. ATL code This ATL code for the QMOOD4UML2 library consists in 36 helpers. The implemented metrics from the QMOOD set only depends on the FLAME functions and are list above. These metrics are defined both for package and class levels. 5. References [1] ATLAS (ATLantic data Systems) Official Webpage: http://www.sciences.univnantes.fr/lina/atlas/ [2] AM3 ANT Tasks: http://wiki.eclipse.org/index.php/am3_ant_tasks [3] UML2 Project Official Webpage: http://www.eclipse.org/modeling/mdt/?project=uml2 [4] Baroni, A.L.: Formal Definition of Object-Oriented Design Metrics. Master Thesis, Vrije University, Brussel, Belgium, 2002. [5] Baroni, A.L. and Abreu, F.B.: A Formal Library for Aiding Metrics Extraction. In: Workshop on Object-Oriented Reengineering (ECOOP 03), Darmstadt, Germany, July 2003. Page 10/10