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
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 Security Functionality 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
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 Transformation/Mapping Subject Oriented PIM and PSM
MDA and Separation of Aspects: an approach based on Viewpoints Traceability, evolution and change impact Create resolving Recover Expedient Authenticate User < < o v e r l a p > > < < i n t e r a c t > > < < i n t e r a c t > > 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 Create resolving Recover Expedient Authenticate User < < o v e r l a p > > < < ov e r l a p > > > < < i n t e r a c t > > << i n t e r ac t >> StakeInstructorUser > StakeStaffUser > StakeSecExpert package resolvingpackage expedientpackage security > StakeInstructorUser > StakeStaffUser > StakeSecExpert package expedient package security package resolving > CreatResolving > RecovExpedient > AuthenticatUser > NewExpedient <ClassAuth, _AuthOp(..)> > JSPserver bind[ ] b i n d [ < U s e r, g e t P e r s o n a l D a t a ( ) > ] b i nd [ < U s e r, g e t A n t ece d e n t D a t a () > ] > StakeInstructorUser > StakeStaffUser > StakeSecExpert package expedient package security package resolving > CreatResolving > RecovExpedient > AuthenticatUser > NewExpedient <ClassAuth, _AuthOp(..)> bind[ ] b i n d [ < U s e r, g e t A n t e c e d e n t D a t a ( ) > ] { b y N a m e } < < m e r g e > > { b y N a m e } < < m e r g e > > Transformation
MDA and Separation of Aspects: an approach based on Viewpoints Traceability, evolution and change impact Create resolving Recover Expedient Authenticate User < < o v e r l a p > > < < i n t e r a c t > > < < i n t e r a c t > > 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 Create resolving Recover Expedient Authenticate User < < o v e r l a p > > < < ov e r l a p > > > < < i n t e r a c t > > << i n t e r ac t >> StakeInstructorUser > StakeStaffUser > StakeSecExpert package resolvingpackage expedientpackage security > StakeInstructorUser > StakeStaffUser > StakeSecExpert package expedient package security package resolving > CreatResolving > RecovExpedient > AuthenticatUser > NewExpedient <ClassAuth, _AuthOp(..)> > JSPserver bind[ ] b i n d [ < U s e r, g e t P e r s o n a l D a t a ( ) > ] b i nd [ < U s e r, g e t A n t ece d e n t D a t a () > ] > StakeInstructorUser > StakeStaffUser > StakeSecExpert package expedient package security package resolving > CreatResolving > RecovExpedient > AuthenticatUser > NewExpedient <ClassAuth, _AuthOp(..)> bind[ ] b i n d [ < U s e r, g e t A n t e c e d e n t D a t a ( ) > ] { b y N a m e } < < m e r g e > > { b y N a m e } < < m e r g e > > Transformation
MDA and Separation of Aspects: an approach based on Viewpoints Adding Aspects -- viewpoints New Expedient Create resolving Recover Expedient Authenticate User < < o v e r l a p > > < < ov e r l a p > > > < < i n t e r a c t > > << i n t e r ac t >> StakeInstructorUser > StakeStaffUser > StakeSecExpert package resolvingpackage expedientpackage security > StakeInstructorUser > StakeStaffUser > StakeSecExpert package expedient package security package resolving > CreatResolving > RecovExpedient > AuthenticatUser > NewExpedient <ClassAuth, _AuthOp(..)> bind[ ] b i n d [ < U s e r, g e t A n t e c e d e n t D a t a ( ) > ] { b y N a m e } < < m e r g e > > { b y N a m e } < < m e r g e > > 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
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 Group University of Extremadura, Spain Pablo Amaya, Carlos González and Juan M. Murillo MDA and Separation of Aspects: An approach based on multiples views and Subject Oriented Design