MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

13
MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design Quercus Software Engineering Group Computer Science Department University of Extremadura, Spain Pablo Amaya, Carlos González and Juan M. Murillo

description

MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design. Quercus Software Engineering Group Computer Science Department University of Extremadura, Spain Pablo Amaya, Carlos González and Juan M. Murillo. Outline. Introduction Model-Driven Architecture - PowerPoint PPT Presentation

Transcript of MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

Page 1: MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

MDA and Separation of Aspects: An approach based on multiples views and

Subject Oriented Design

Quercus Software Engineering GroupComputer Science Department

University of Extremadura, Spain

Pablo Amaya, Carlos González and Juan M. Murillo

Page 2: MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

MDA and Separation of Aspects: an approach based on Viewpoints

Outline

Introduction Model-Driven Architecture The problem!!

The proposal Case study Subject Oriented PIM and PSM Traceability, evolution and change impact

Conclusions and future works

Page 3: MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

MDA and Separation of Aspects: an approach based on Viewpoints

Introduction

Model-Driven Architecture OMG’s initiative

To enable Model-Driven Development

Three abstraction levels

To improve development of large complex system

CIM

PIM

transformation

PSM

transformation

Page 4: MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

MDA and Separation of Aspects: an approach based on Viewpoints

Introduction Large complex systems

e-government

Software development with MDA Problems

Each model becomes large and monolithic Models are not manageable, reusable, adaptable, etc. Transformations between models are too complex.

Objectives To improve :

modeling traceability evolution …

Solution: Separation of Aspects in all MDA levels.

Page 5: MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

MDA and Separation of Aspects: an approach based on Viewpoints

Introduction

In all levels MDA

Viewpoints

skateholder concerns

CIM1 CIM2

PIM1 PIM2

PSM1 PSM2

Communication SecurityFunctionality

CIM3

PIM3

PSM3

CIMN

PIMN

PSMN

Aspect-Oriented Software Development

Crosscutting Concerns ==

Aspects

Page 6: MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

MDA and Separation of Aspects: an approach based on Viewpoints

Case Study

Subject Oriented Design Composition Patterns

Use Case Subject or CP

E x p e d ie n tP en a lty

g e t Id ()g e tD a te ( ).. .s e tL e v e lS ec u r ity ( )is S e cu re ().. ...s e tIn s tru c to r( )s to re R e s o lv e ().. ...

g e tA m o u n t( )g e tTy p e P en a lty ( ).. .s e tA m o u n t( )s e tD a te E x p ira tio n ()

C re a teR e s o lu tio n R e c o v e r

E x p e d ie n t

A u th e n ti c a t eU s e r

< < o v e r la p > ><< u se> >< < u s e > >

U s e r

g e tP e rs o n a lD a ta ( ).. .g e tP a s s w d ()s e tP as s w d ()in iS e s s io n ().. ...n o t ify R e s o lv e ().. ...

< < s y s t em M o d e l> >C IM

N e w E x p e d ie n t

C re a teR e s o lu tio n

R e c o v e rE x p e d ie n t

A u th en ti c a t eU s e r< < o v e r la p > >

< < o v e rl a p > >

< < u s e > >

< <u se> >

< < u s e > >

< < v iew C IM > >S ta k e In s tru c to rU s e r

< < v iew C IM > >S ta k e S ta ffU s e r

< < v iew C IM > >S ta k e S ec E x p e r t

p ac k a g e res o lv in g p ac k a g e ex p e d ie n t p ac k a g e s ec u r ity

Page 7: MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

MDA and Separation of Aspects: an approach based on Viewpoints

< < s y s t em M o d e l> >C IM

N e w E x p e d ie n t

C re a teR e s o lu tio n

R e c o v e rE x p e d ie n t

A u th en ti c a t eU s e r< < o v e r la p > >

< < o v e rl a p > >

< < u s e > >

< <u se> >

< < u s e > >

< < v iew C IM > >S ta k e In s tru c to rU s e r

< < v iew C IM > >S ta k e S ta ffU s e r

< < v iew C IM > >S ta k e S ec E x p e r t

p ac k a g e res o lv in g p ac k a g e ex p e d ie n t p ac k a g e s ec u r ity

< < s y s t em M o d e l> >P IM

< < v iew P IM > >S ta k e In s tru c to rU s e r

< < v iew P IM > >S ta k e S ta ffU s e r

< < v iew P IM > >S ta k e S ec E x p e r t

p ac k a g e ex p e d ie n t p ac k a g e s ec u r ity

p ac k a g e res o lv in g

< < sub jec t> >C rea tR eso lvin g

E xp ed ient

{ byN am e }

< < m erge> >

se tIn stru ctor()sto reR es olv e ().. .

P en a ltyse tA m o un t()se tD a teE x p ira tion ().. .

U se r

n otify R eso lv e ().. ...

< < su bjec t> >R eco v E x p edien t

E xp ed ient

{byN

ame}

g e tId ()g e tD a te ().. .

P en a ltyg e tA m o u nt()g e tD a teE xp ira tion ().. .

U se r

g e tP e rso na lD a ta ().. ...

< < su bjec t> >A u then tica tU s e r

sd A uth O p

A u thO p

< < sub jec t> >N ew E x ped ient

E xp ed ient

se tL im itD a te ()se tTy pe ().. .

U se rg e tA nteced ent ().. ...

A u th

C la ssA u th

< C lass A uth , _ A u thO p (..)>

in iS ess ion ()c lo seS es sio n()se tP assw d ()g e tP ass w d()isS ecure ().. .

+ A u th O p()- _ A uth O p ()

:C lassA u th A u th

in iS ess ion ()

b ind [< { E xp ed ient,U se} ,{ s e tInst ru c to r() ,sto reR es olv e () ,n o tifyR eso lve ()} > ]

b ind [< U ser,g e tP e rso na lD ata ()> ]

b ind[<U se r,g e tA n tec e de n tD a ta() > ]

[secu re= yes ]

se tP assw d ()

isS ecure ()

c lo seS es sio n()

a lt _ A u thO p

<<mer

ge>>

Subject Oriented PIM and PSM

Page 8: MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

MDA and Separation of Aspects: an approach based on Viewpoints

< < v iew P IM > >S ta k e S ec E x p e r t

p ac k a g e s e c u r ity

< < su bjec t> >A u then tica tU se r

sd A uth O p

A u thO p

A u th

C las sA u th

< C lass A uth , _ A u thO p (..)>

in iS ess ion ()c lo seS ess ion ()se tP assw d ()g e tP assw d()isS ecure ().. .

+ A u thO p()- _ A uth O p ()

:C lassA u th A u th

in iS ess ion ()

[secu re= yes ]

se tP assw d ()

isS ecure ()

c lo seS ess ion ()

a lt _ A u thO p

Transformation/Mapping

Transformation/Mapping

Subject Oriented PIM and PSM

< < v iew P S M > >S ta k e S ec E x p e r t

p ac k a g e s ec u r ity

< < su bjec t> >A u then tica tU s e r

< < su bjec t> >JS P S erve r

< C lass A uth , _ A u thO p (..)>

{ b y N a me }

< < me r g e > >

A u th

in iS ess ion ()sta r tS S H ()g e tC o ok ie ()isS ecure ().. .

A u th e n ti c a t eU s e r

< < v iew C IM > >S ta k e S ec E x p e r t

p ac k a g e s ec u r it y

Page 9: MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

MDA and Separation of Aspects: an approach based on Viewpoints

Traceability, evolution and change impact

Createresolving Recover

Expedient

AuthenticateUser

<<overlap>><<intera

ct>><<interact>>

ExpedientPenalty

getId()getDate()...setInstructor()storeResolve().....

getAmount()getTypePenalty()...setAmount()setDateExpiration()

User

getPersonalData()...notifyResolve().....

ExpedientPenalty

getId()getDate()...setInstructor()storeResolve().....

getAmount()getTypePenalty()...setAmount()setDateExpiration()

User

getPersonalData()...notifyResolve().....

CIM

PIM

PSM

New Expedient

Createresolving

RecoverExpedient

AuthenticateUser<<overlap>>

<<overlap>>

<<interact>>

<<interact>

>

<<interact>>

<<viewCIM>>StakeInstructorUser

<<viewCIM>>StakeStaffUser

<<viewCIM>>StakeSecExpert

package resolving package expedient package security

<<viewPIM>>StakeInstructorUser

<<viewPIM>>StakeStaffUser <<viewPIM>>

StakeSecExpertpackage expedient

package securitypackage resolving

<<subject>>CreatResolving

<<subject>>RecovExpedient

<<subject>>AuthenticatUser

<<subject>>NewExpedient

<ClassAuth, _AuthOp(..)>

<<subject>>JSPserver

bind[<{Expedient,Use},{setInstructor(),storeResolve(),notifyResolve()}>]

bind[<User,getPerso

nalData()>

]

bind[<User,getAntecedentData()>]

{byName}

<<merge>>

{byN

ame }

<<m

erge

>>

{byN

ame}

<<m

erge

>>

<<viewPIM>>StakeInstructorUser

<<viewPIM>>StakeStaffUser <<viewPIM>>

StakeSecExpertpackage expedient

package securitypackage resolving

<<subject>>CreatResolving

<<subject>>RecovExpedient

<<subject>>AuthenticatUser

<<subject>>NewExpedient

<ClassAuth, _AuthOp(..)>

bind[<{Expedient,Use},{setInstructor(),storeResolve(),notifyResolve()}>]

bind[<User,getPersonalData()>]

bind[<User,getAntecedentData()>]

{byName}

<<merge>>

{byN

ame}

<<m

erge

>>

Transformation

Transformation

Page 10: MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

MDA and Separation of Aspects: an approach based on Viewpoints

Traceability, evolution and change impact

Createresolving Recover

Expedient

AuthenticateUser

<<overlap>><<intera

ct>><<interact>>

ExpedientPenalty

getId()getDate()...setInstructor()storeResolve().....

getAmount()getTypePenalty()...setAmount()setDateExpiration()

User

getPersonalData()...notifyResolve().....

ExpedientPenalty

getId()getDate()...setInstructor()storeResolve().....

getAmount()getTypePenalty()...setAmount()setDateExpiration()

User

getPersonalData()...notifyResolve().....

CIM

PIM

PSM

New Expedient

Createresolving

RecoverExpedient

AuthenticateUser<<overlap>>

<<overlap>>

<<interact>>

<<interact>

>

<<interact>>

<<viewCIM>>StakeInstructorUser

<<viewCIM>>StakeStaffUser

<<viewCIM>>StakeSecExpert

package resolving package expedient package security

<<viewPIM>>StakeInstructorUser

<<viewPIM>>StakeStaffUser <<viewPIM>>

StakeSecExpertpackage expedient

package securitypackage resolving

<<subject>>CreatResolving

<<subject>>RecovExpedient

<<subject>>AuthenticatUser

<<subject>>NewExpedient

<ClassAuth, _AuthOp(..)>

<<subject>>JSPserver

bind[<{Expedient,Use},{setInstructor(),storeResolve(),notifyResolve()}>]

bind[<User,getPerso

nalData()>

]

bind[<User,getAntecedentData()>]

{byName}

<<merge>>

{byN

ame }

<<m

erge

>>

{byN

ame}

<<m

erge

>>

<<viewPIM>>StakeInstructorUser

<<viewPIM>>StakeStaffUser <<viewPIM>>

StakeSecExpertpackage expedient

package securitypackage resolving

<<subject>>CreatResolving

<<subject>>RecovExpedient

<<subject>>AuthenticatUser

<<subject>>NewExpedient

<ClassAuth, _AuthOp(..)>

bind[<{Expedient,Use},{setInstructor(),storeResolve(),notifyResolve()}>]

bind[<User,getPersonalData()>]

bind[<User,getAntecedentData()>]

{byName}

<<merge>>

{byN

ame}

<<m

erge

>>

Transformation

Transformation

Page 11: MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

MDA and Separation of Aspects: an approach based on Viewpoints

Adding Aspects -- viewpoints

New Expedient

Createresolving

RecoverExpedient

AuthenticateUser<<overlap>>

<<overlap>>

<<interact>>

<<interact>

>

<<interact>>

<<viewCIM>>StakeInstructorUser

<<viewCIM>>StakeStaffUser

<<viewCIM>>StakeSecExpert

package resolving package expedient package security

<<viewPIM>>StakeInstructorUser

<<viewPIM>>StakeStaffUser <<viewPIM>>

StakeSecExpertpackage expedient

package securitypackage resolving

<<subject>>CreatResolving

<<subject>>RecovExpedient

<<subject>>AuthenticatUser

<<subject>>NewExpedient

<ClassAuth, _AuthOp(..)>

<<subject>>JSPserver

bind[<{Expedient,Use},{setInstructor(),storeResolve(),notifyResolve()}>]

bind[<User,getPerso

nalData()>

]

bind[<User,getAntecedentData()>]

{byName}

<<merge>>

{byN

ame }

<<m

erge

>>

{byN

ame}

<<m

erge

>>

<<viewPIM>>StakeInstructorUser

<<viewPIM>>StakeStaffUser <<viewPIM>>

StakeSecExpertpackage expedient

package securitypackage resolving

<<subject>>CreatResolving

<<subject>>RecovExpedient

<<subject>>AuthenticatUser

<<subject>>NewExpedient

<ClassAuth, _AuthOp(..)>

bind[<{Expedient,Use},{setInstructor(),storeResolve(),notifyResolve()}>]

bind[<User,getPersonalData()>]

bind[<User,getAntecedentData()>]

{byName}

<<merge>>

{byN

ame}

<<m

erge

>>

New requirement

Persistence

Repository

To add these aspect to the three levels

Complete views or aspects can be modeled and can be added to MDA repositoires

< < v iew C IM > >S ta k e P er s is E x p er t

p ac k a g e p e rs is t en c e

< < v iew P IM > >S ta k e P er si s E x p e r t

p ac k a g e p e rs is t en c e

< < su bjec t> >P ersi_ o bj

< C lass P e rs, _ P e rsO p (. .)>

< < v iew P S M > >S ta k e P er si s E x p e r t

p ac k a g e p e rs is t en c e

< < su bjec t> >P ersi_ o bj

< C lass P e rs, _ P e rsO p (. .)>

Page 12: MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

MDA and Separation of Aspects: an approach based on Viewpoints

Conclusions and Future Works

Improvements in MDA Concurrent Development Evolution

Change Impact Additive vs Invasive

Change propagation Traceability Models more reusable, manageable and

adapatable To allow us to develop aspect repositories

Future work directions In general: To mature the proposal

A Foundation for view repositories To model CIM with other diagrams

Workflow, domain models,activity diagrams. etc.

To enhance relationships between views Intregation of views at model or code level

Order of composition Consistency Check Transformations between aspect-models

Page 13: MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design

Quercus Software Engineering GroupUniversity of Extremadura, Spain

Pablo Amaya, Carlos González and Juan M. Murillo

http://[email protected]

MDA and Separation of Aspects: An approach based on multiples views and

Subject Oriented Design