mda and separation of aspects: an approach based on multiples views and subject oriented design
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 PresentationTRANSCRIPT
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
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
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
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.
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
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
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
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
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
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
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 (. .)>
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
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