Towards refactoring meta-models into multi-level models as 1 Esther - - PowerPoint PPT Presentation

towards refactoring meta models into multi level models
SMART_READER_LITE
LIVE PREVIEW

Towards refactoring meta-models into multi-level models as 1 Esther - - PowerPoint PPT Presentation

Towards refactoring meta-models into multi-level models as 1 Esther Guerra 2 Juan de Lara 2 Fernando Mac fernandomacias.es Campina Grande, November 21, 2017 1 Western Norway University of Applied Sciences 2 Universidad Aut onoma de Madrid


slide-1
SLIDE 1

Towards refactoring meta-models into multi-level models

Fernando Mac´ ıas1 Esther Guerra2 Juan de Lara2 fernandomacias.es Campina Grande, November 21, 2017

1Western Norway University of Applied Sciences 2Universidad Aut´

  • noma de Madrid

1 / 16

slide-2
SLIDE 2

This work: What, how and why

Two-level limitations Multi-level refactoring process Evaluation and experiments

Juan de Lara, Esther Guerra, and Jes´ us S´ anchez Cuadrado. “When and How to Use Multilevel Modelling”. In: ACM Trans. Softw. Eng. Methodol. 24.2 (Dec. 2014), 12:1–12:46. issn: 1049-331X. doi: 10.1145/2685615 2 / 16

slide-3
SLIDE 3

What is MDSE?

Model-Driven Software Engineering. Representing information in a structured way. Uses: Code generation Simulation Documentation ...

3 / 16

slide-4
SLIDE 4

Example: Security Policies

Tejeddine Mouelhi, Franck Fleurey, and Benoit Baudry. “A Generic Metamodel For Security Policies Mutation”. In: Proc. ICST. IEEE Computer Society, 2008, pp. 278–286

4 / 16

slide-5
SLIDE 5

Limitations of traditional approaches

Complexity tends to grow pretty fast. Difficult to read Complex maintenance Low reusability

5 / 16

slide-6
SLIDE 6

Multi-level modelling (MLM)

The good: Unbounded levels of abstraction Richer semantics Cleaner structures The bad: Lack of consensus on foundations Technology lock-in Tool isolation

6 / 16

slide-7
SLIDE 7

Security Policies with MLM

PolicyType name: String RuleType name: String ElementType name: String hierarchy: bool

1..* parameters ruleTypes 1..* elementTypes 1..*

Rule name: String Parameter name: String Policy name: String

type type parameters 1..* rules * elements * type children *

(a) “flat” meta-model

7 / 16

slide-8
SLIDE 8

Security Policies with MLM

userRole:RuleType name= “UserRole” user:ElementType name= “User” hierarchy= false role:ElementType name= “Role” hierarchy= true rbac:PolicyType name= “RBAC” policy:Policy name= “LibraryRBAC” rule:Rule name= “R1” p2:Parameter name= “Student” p1:Parameter name= “Romain”

:type :type :type :type :rules :ruleTypes :parameters :parameters

PolicyType name: String RuleType name: String ElementType name: String hierarchy: bool

1..* parameters ruleTypes 1..* elementTypes 1..*

Rule name: String Parameter name: String Policy name: String

type type parameters 1..* rules * elements * type children *

(a) “flat” meta-model (c) “flat” model

7 / 16

slide-9
SLIDE 9

Security Policies with MLM

userRole:RuleType name= “UserRole” user:ElementType name= “User” hierarchy= false role:ElementType name= “Role” hierarchy= true rbac:PolicyType name= “RBAC” policy:Policy name= “LibraryRBAC” rule:Rule name= “R1” p2:Parameter name= “Student” p1:Parameter name= “Romain”

:type :type :type :type :rules :ruleTypes :parameters :parameters

PolicyType name: String RuleType name: String ElementType name: String hierarchy: bool

1..* parameters ruleTypes 1..* elementTypes 1..*

Rule name: String Parameter name: String Policy name: String

type type parameters 1..* rules * elements * type children *

(a) “flat” meta-model (b) multi-level specification

PolicyType name: String RuleType name: String ElementType

1..* parameters 1..* elementTypes 1..* ruleTypes children@(2)

name: String hierarchy@1: bool

(c) “flat” model

7 / 16

slide-10
SLIDE 10

Security Policies with MLM

userRole:RuleType name= “UserRole” user:ElementType name= “User” hierarchy= false role:ElementType name= “Role” hierarchy= true rbac:PolicyType name= “RBAC” policy:Policy name= “LibraryRBAC” rule:Rule name= “R1” p2:Parameter name= “Student” p1:Parameter name= “Romain”

:type :type :type :type :rules :ruleTypes :parameters :parameters

userRole:RuleType name= “UserRole” user:ElementType name= “User” hierarchy= false role:ElementType name= “Role” hierarchy= true rbac:PolicyType name= “RBAC”

roles:ruleTypes rparam: parameters 1..1 uparam: parameters 1..1 *

PolicyType name: String RuleType name: String ElementType name: String hierarchy: bool

1..* parameters ruleTypes 1..* elementTypes 1..*

Rule name: String Parameter name: String Policy name: String

type type parameters 1..* rules * elements * type children *

(a) “flat” meta-model (b) multi-level specification

PolicyType name: String RuleType name: String ElementType

1..* parameters 1..* elementTypes 1..* ruleTypes children@(2)

name: String hierarchy@1: bool

(c) “flat” model (d) multi-level model

7 / 16

slide-11
SLIDE 11

Security Policies with MLM

userRole:RuleType name= “UserRole” user:ElementType name= “User” hierarchy= false role:ElementType name= “Role” hierarchy= true rbac:PolicyType name= “RBAC” policy:Policy name= “LibraryRBAC” rule:Rule name= “R1” p2:Parameter name= “Student” p1:Parameter name= “Romain”

:type :type :type :type :rules :ruleTypes :parameters :parameters

userRole:RuleType name= “UserRole” user:ElementType name= “User” hierarchy= false role:ElementType name= “Role” hierarchy= true rbac:PolicyType name= “RBAC”

roles:ruleTypes rparam: parameters

rule:userRole name= “R1” p2:role name= “Student” p1:user name= “Romain” policy:rbac name= “LibraryRBAC”

1..1 uparam: parameters 1..1 :rparam :uparam * :roles

PolicyType name: String RuleType name: String ElementType name: String hierarchy: bool

1..* parameters ruleTypes 1..* elementTypes 1..*

Rule name: String Parameter name: String Policy name: String

type type parameters 1..* rules * elements * type children *

(a) “flat” meta-model (b) multi-level specification

PolicyType name: String RuleType name: String ElementType

1..* parameters 1..* elementTypes 1..* ruleTypes children@(2)

name: String hierarchy@1: bool

(c) “flat” model (d) multi-level model

7 / 16

slide-12
SLIDE 12

Refactoring into MLM

Goals: Empirical data about MLM improvement Automatic refactoring tool Convergence of MLM frameworks

8 / 16

slide-13
SLIDE 13

Step 1: Detecting smells

Heuristic-based annotation Based on structure and name similarity Adjustable confidence threshold Open to human intervention (i.e. semi-automatic)

9 / 16

slide-14
SLIDE 14

Step 1: Detecting smells

9 / 16

slide-15
SLIDE 15

Step 2: Refactoring

Transformation applied to each annotated pattern Based on annotations from previous step Single-model output (for now) Automatic

10 / 16

slide-16
SLIDE 16

Step 2: Refactoring

10 / 16

slide-17
SLIDE 17

Step 3: Recommendation

Based on framework support for MLM features Three degrees of support: supported, emulated, unsupported Scores and ranking output Automatic

11 / 16

slide-18
SLIDE 18

Step 3: Recommendation

11 / 16

slide-19
SLIDE 19

Step 3: Recommendation

11 / 16

slide-20
SLIDE 20

Step 3: Recommendation

11 / 16

slide-21
SLIDE 21

Step 4: Deployment

12 / 16

slide-22
SLIDE 22

Step 4: Deployment

12 / 16

slide-23
SLIDE 23

Step 4: Deployment

12 / 16

slide-24
SLIDE 24

Evaluation: Gain

13 / 16

slide-25
SLIDE 25

Evaluation: F-score optimization

14 / 16

slide-26
SLIDE 26

Conclusions

Empirical evaluation of MLM with third-party data Prototype tool support Tool-independent representation of MLM hierarchies

15 / 16

slide-27
SLIDE 27

Future work

Support more scenarios Large-scale evaluation (Github) Crystallize tool-independent metamodel as exchange format

16 / 16

slide-28
SLIDE 28

References

Fernando Mac´ ıas, Esther Guerra, and Juan de Lara. “Towards rearchitecting meta-models into multi-level models”. In: International Conference on Conceptual Modeling. Springer. 2017,

  • pp. 59–68

Juan de Lara, Esther Guerra, and Jes´ us S´ anchez Cuadrado. “When and How to Use Multilevel Modelling”. In: ACM Trans. Softw.

  • Eng. Methodol. 24.2 (Dec. 2014), 12:1–12:46. issn: 1049-331X.

doi: 10.1145/2685615 Juan de Lara and Esther Guerra. “Deep meta-modelling with MetaDepth”. In: Objects, Models, Components, Patterns.

  • Vol. 6141. LNCS. Springer, July 2010, pp. 1–20. doi:

10.1007/978-3-642-13953-6\_1 Colin Atkinson, Ralph Gerbig, and Mathias Fritzsche. “A multi-level approach to modeling language extension in the enterprise systems domain”. In: Information Systems 54 (2015), pp. 289–307 Fernando Mac´ ıas, Adrian Rutle, and Volker Stolz. “MultEcore: Combining The Best of Fixed-Level and Multilevel Metamodelling”. In: 3rd International Workshop on Multi-Level Modelling (MULTI2016). Vol. 1722. CEUR Workshop Proceedings. 2016