130 likes | 239 Views
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
E N D
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 • 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
transformation transformation Introduction CIM • Model-Driven Architecture • OMG’s initiative • To enable Model-Driven Development • Three abstraction levels • To improve • development of large complex system PIM PSM 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 Crosscutting Concerns == Aspects Aspect-Oriented Software Development In all levels MDA Communication Functionality Security CIM2 CIM3 CIM1 CIMN Viewpoints PIM2 PIM3 PIM1 PIMN PSM2 PSM3 PSM1 PSMN skateholder concerns MDA and Separation of Aspects: an approach based on Viewpoints
Case Study Subject Oriented Design Composition Patterns Use Case Subject or CP MDA and Separation of Aspects: an approach based on Viewpoints
Subject Oriented PIM and PSM MDA and Separation of Aspects: an approach based on Viewpoints
Subject Oriented PIM and PSM Transformation/Mapping Transformation/Mapping MDA and Separation of Aspects: an approach based on Viewpoints
> > e g } r e e m m a < N < y b { > > e g < } < r e m e e r m g m e { > a > b < y N N < a m y e } b { <<viewCIM>> <<viewCIM>> <<viewCIM>> Traceability, evolution and change impact StakeInstructorUser StakeStaffUser StakeSecExpert Authenticate > > t c a r package resolving package expedient package security User e t n i > < < > t c i < < a t e r a c t n > > New r Authenticate e t < n Expedient < User Create i > o < v > e t < r l c a < < a Create o p r v e > r e l resolving a t > p n > > i < resolving Recover < < < o v e r l a p > > Recover Expedient Expedient CIM <<interact>> Transformation bind[<{Expedient,Use},{setInstructor(),storeResolve(),notifyResolve()}>] <<viewPIM>> StakeStaffUser <<viewPIM>> StakeSecExpert Penalty Expedient User package expedient <<viewPIM>> <<subject>> StakeInstructorUser NewExpedient package security <ClassAuth, _AuthOp(..)> > > package resolving e <<subject>> g getAmount() getId() getPersonalData() } r e e AuthenticatUser m m <<subject>> a < N < getTypePenalty() getDate() ... CreatResolving y b { ... ... notifyResolve() <<subject>> b i n RecovExpedient [ d < setAmount() U setInstructor() ..... < < s m e e r r , g e g > { > e b y t N setDateExpiration() storeResolve() A a m n e } t e c e d ..... e n t D PIM a t a ( ) > ] Transformation bind[<User,getPersonalData()>] bind[<{Expedient,Use},{setInstructor(),storeResolve(),notifyResolve()}>] <<viewPIM>> Penalty Expedient User StakeStaffUser <<viewPIM>> StakeSecExpert package expedient <<viewPIM>> <<subject>> getAmount() getId() getPersonalData() StakeInstructorUser NewExpedient package security <ClassAuth, _AuthOp(..)> package resolving getTypePenalty() getDate() ... <<subject>> AuthenticatUser <<subject>> ... ... notifyResolve() CreatResolving setAmount() setInstructor() ..... <<subject>> i n d b setDateExpiration() storeResolve() RecovExpedient ( ) > ] a t a e n t D e c e d A n t r , g e t U s e [ < ..... ] > ) ( a t a D l a n o s r e <<subject>> P t PSM e g , r JSPserver e s U < [ d n i b MDA and Separation of Aspects: an approach based on Viewpoints
> > e g } r e e m m a < N < y b { > > e g < } < r e m e e r m g m e { > a > b < y N N < a m y e } b { <<viewCIM>> <<viewCIM>> <<viewCIM>> Traceability, evolution and change impact StakeInstructorUser StakeStaffUser StakeSecExpert Authenticate > > t c a r package resolving package expedient package security User e t n i > < < > t c i < < a t e r a c t n > > New r Authenticate e t < n Expedient < User Create i > o < v > e t < r l c a < < a Create o p r v e > r e l resolving a t > p n > > i < resolving Recover < < < o v e r l a p > > Recover Expedient Expedient CIM <<interact>> Transformation bind[<{Expedient,Use},{setInstructor(),storeResolve(),notifyResolve()}>] <<viewPIM>> StakeStaffUser <<viewPIM>> StakeSecExpert Penalty Expedient User package expedient <<viewPIM>> <<subject>> StakeInstructorUser NewExpedient package security <ClassAuth, _AuthOp(..)> > > package resolving e <<subject>> g getAmount() getId() getPersonalData() } r e e AuthenticatUser m m <<subject>> a < N < getTypePenalty() getDate() ... CreatResolving y b { ... ... notifyResolve() <<subject>> b i n RecovExpedient [ d < setAmount() U setInstructor() ..... < < s m e e r r , g e g > { > e b y t N setDateExpiration() storeResolve() A a m n e } t e c e d ..... e n t D PIM a t a ( ) > ] Transformation bind[<User,getPersonalData()>] bind[<{Expedient,Use},{setInstructor(),storeResolve(),notifyResolve()}>] <<viewPIM>> Penalty Expedient User StakeStaffUser <<viewPIM>> StakeSecExpert package expedient <<viewPIM>> <<subject>> getAmount() getId() getPersonalData() StakeInstructorUser NewExpedient package security <ClassAuth, _AuthOp(..)> package resolving getTypePenalty() getDate() ... <<subject>> AuthenticatUser <<subject>> ... ... notifyResolve() CreatResolving setAmount() setInstructor() ..... <<subject>> i n d b setDateExpiration() storeResolve() RecovExpedient ( ) > ] a t a e n t D e c e d A n t r , g e t U s e [ < ..... ] > ) ( a t a D l a n o s r e <<subject>> P t PSM e g , r JSPserver e s U < [ d n i b MDA and Separation of Aspects: an approach based on Viewpoints
bind[<{Expedient,Use},{setInstructor(),storeResolve(),notifyResolve()}>]bind[<{Expedient,Use},{setInstructor(),storeResolve(),notifyResolve()}>] <<viewPIM>> StakeStaffUser <<viewPIM>> StakeSecExpert package expedient <<viewPIM>> <<subject>> StakeInstructorUser NewExpedient package security <ClassAuth, _AuthOp(..)> > > package resolving e <<subject>> g } r e e AuthenticatUser m m <<subject>> a < N < CreatResolving y b { <<subject>> i n d b > RecovExpedient > ( ) > ] a t a e n t D e c e d A n t r , g e t U s e [ < e g < } < r e m e e r m g m ] e { > > a > b ) < y ( N N a < a t a m y e D } b l a { n o s r e <<subject>> P t e g , r JSPserver e s U < [ d n i b <<viewCIM>> <<viewCIM>> <<viewCIM>> Adding Aspects -- viewpoints StakeInstructorUser StakeStaffUser StakeSecExpert New requirement package resolving package expedient package security i < < t e r a c t n > > New Authenticate < Expedient < User > o v > e t r l c a a Create p r > e t > n i < resolving < < < o v e r l a p > > Recover Expedient Persistence <<interact>> bind[<{Expedient,Use},{setInstructor(),storeResolve(),notifyResolve()}>] <<viewPIM>> StakeStaffUser <<viewPIM>> Repository StakeSecExpert package expedient <<viewPIM>> <<subject>> StakeInstructorUser NewExpedient package security <ClassAuth, _AuthOp(..)> > > package resolving e <<subject>> g } r e e AuthenticatUser m m <<subject>> a < N < CreatResolving y b { <<subject>> b i n RecovExpedient [ d < U < < s m e e r r , g e g > { > e b y t N A a m n e } t e c e d e n t D To add these aspect to the three levels a t a ( ) > ] bind[<User,getPersonalData()>] Complete views or aspects can be modeled and can be added to MDA repositoires 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 MDA and Separation of Aspects: an approach based on Viewpoints
MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design Quercus Software Engineering Group University of Extremadura, Spain Pablo Amaya, Carlos González and Juan M. Murillo http://quercusseg.unex.es pabloama@unex.es