1 / 13

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 Group Computer Science Department University of Extremadura, Spain Pablo Amaya, Carlos González and Juan M. Murillo. Outline. Introduction Model-Driven Architecture

jolie
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. Case Study Subject Oriented Design Composition Patterns Use Case  Subject or CP MDA and Separation of Aspects: an approach based on Viewpoints

  7. Subject Oriented PIM and PSM MDA and Separation of Aspects: an approach based on Viewpoints

  8. Subject Oriented PIM and PSM Transformation/Mapping Transformation/Mapping MDA and Separation of Aspects: an approach based on Viewpoints

  9. > > 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

  10. > > 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

  11. 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

  12. 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

  13. 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

More Related