180 likes | 316 Views
A Comparison of Aspect-oriented Approaches to Model Driven Engineering. Devon M. Simmonds, Computer Science Department University of North Carolina, Wilmington simmondsd@uncw.edu. Y. Raghu Reddy, Department of Software Engineering Rochester Institute of Technology.
E N D
A Comparison of Aspect-oriented Approaches to Model Driven Engineering Devon M. Simmonds, Computer Science Department University of North Carolina, Wilmington simmondsd@uncw.edu Y. Raghu Reddy, Department of Software Engineering Rochester Institute of Technology Eunjee Song, Department of Computer Science Baylor University Emanuel Grant, Department of Computer Science, University of North Dakota
A Comparison of Aspect-oriented Approaches to Model Driven Engineering • Outline • Overview of model driven engineering • Challenges in model driven engineering • Overview of AOMDE approaches • Generate-Then-Weave Approaches • Lessons Learned and Future Work
. . Model A Model B A M A . . C C K B B P Model Driven Engineering • xxxx
MDE Challenges • Model specification • Model transformation • Model analysis • Model evolution and reuse • Model debugging
MDE is difficult in the presence of crosscutting functionality Tangling!!
Crosscutting Functionality In AOSD crosscutting functionality is isolated in modular units called aspects. logging in org.apache.tomcat An Aspect-Oriented Approach is beneficial 6
Overview of AOMDE Approaches • Weave Then Generate • Then Generate Weave • Generate Then Weave … Primary Model Primary Model Aspect Model-1 Aspect Model-1 Aspect Model-2 Aspect Model-2 Aspect Model-n Aspect Model-n … Generate Weave Primary Model Code/Binary Composed Model Aspect Models Code/Binary Weave Generate Composed Model Code/Binary Weave Then Generate
Weave Then Generate Approach Application Integration Primary Model Development Primary Model Customization [createError] [morePM] [enhanceError] [weavePMError] Analysis Enhance PIM Create Primary Model Weave [else] Requirements Specification Composed Design Model [else] Enhanced PIM [else] [else] [weaveAsp Error] Acquire Aspect Models [else] Enhance Instantiate Generate Code Generic Design Aspects [else] [mapping Error] [else] Complete Application [aspectDesignError] [moreAspects] [enhance AspError] [codePM Error] [else] Aspect Models Development Aspect Models Customization [codeAspError] Code Generation
Generate Then Weave Approaches(1) Code Generation Application Integration Primary Model Development Primary Model Customization 1 [createError] [morePM] Analysis Enhance [codePMError] PIM [enhanceError] Create Primary Model [else] 2 Requirements Specification [else] Generate Code Weave [else] Enhanced PIM [else] 3 5 4 Complete Application Acquire Aspect Models [else] Enhance Instantiate Generate Code Generic Design Aspects [else] [mapping Error] [else] [else] [codeAspError] [weave PMError] [aspectDesignError] [more Aspects] [enhance AspError] [weaveAsp Error] Aspect Models Development Aspect Models Customization Code Generation Enhance-Generate Enhance-Instantiate Approach (1-2-3-4-5)
Generate Then Weave Approaches(2) Code Generation Application Integration Primary Model Development Primary Model Customization 1 [createError] [morePM] Analysis Enhance [codePMError] PIM [enhanceError] Create Primary Model [else] 2 Requirements Specification [else] Generate Code Weave [else] Enhanced PIM [else] 3 5 4 Complete Application Acquire Aspect Models [else] Enhance Instantiate Generate Code Generic Design Aspects [else] [enhance AspError] [mapping Error] [else] [else] [weave PMError] [aspectDesignError] [more Aspects] [CodeAsp Error] [weaveAsp Error] Code Generation Aspect Models Development Aspect Models Customization Enhance-Generate Generate-Enhance Approach (1-2-5-3-4)
Generate Then Weave Approaches(3) Primary Model Customization Application Integration Primary Model Development Code Generation [createError] [morePM] 2 [enhanceError] Analysis [codePMError] PIM [else] Create Primary Model Generate Code [else] [else] Enhance Requirements Specification Weave 1 [else] 3 5 4 Complete Application Acquire Aspect Models [else] Enhance Instantiate Generate Code Generic Design Aspects [else] [mapping Error] [else] [else] [codeAspError] [weave PMError] [aspectDesignError] [more Aspects] [enhance AspError] [weaveAsp Error] Aspect Models Customization Aspect Models Development Code Generation Generate-Enhance Enhance-Instantiate Approach (2-1-3-4-5)
Generate Then Weave Approaches(4) Code Generation Application Integration Primary Model Development Primary Model Customization [createError] [morePM] 2 [enhanceError] Analysis [codePMError] PIM [else] Create Primary Model Generate Code [else] [else] Enhance Requirements Specification Weave 1 [else] 3 5 4 Complete Application Acquire Aspect Models [else] Enhance Instantiate Generate Code Generic Design Aspects [else] [enhance AspError] [mapping Error] [else] [else] [weave PMError] [aspectDesignError] [more Aspects] [CodeAsp Error] [weaveAsp Error] Code Generation Aspect Models Development Aspect Models Customization Generate-Enhance Generate-Enhance Approach (1-2-5-3-4)
Summary: Generate Then Weave Approaches Code Generation Application Integration Primary Model Development Primary Model Customization E [createError] [morePM] Analysis Enhance [codePMError] PIM [enhanceError] Create Primary Model [else] G W Requirements Specification [else] Generate Code Weave [else] Enhanced PIM [else] E G I Complete Application Acquire Aspect Models [else] Enhance Instantiate Generate Code Generic Design Aspects [else] [mapping Error] [else] [else] [codeAspError] [weave PMError] [aspectDesignError] [more Aspects] [enhance AspError] [weaveAsp Error] Aspect Models Development Aspect Models Customization Code Generation Computation may then be represented as permutation: P(2,2)P(3,3) which means there are 2!3! or 12 valid combinations.
Lessons Learned • AOMDE requires an understanding of how AOSD affect MDE lifecycle. • MDE is not a unary model-to-code process • A variety of approaches are available. • Further research needed to explore AOMDE in both initial development and evolution
Future Work Code Generation Application Integration Primary Model Development Primary Model Customization [createError] [morePM] Analysis Enhance [codePMError] PIM [enhanceError] Create Primary Model [else] Requirements Specification [else] Generate Code Weave [else] Enhanced PIM [else] Complete Application Acquire Aspect Models [else] Enhance Instantiate Generate Code Generic Design Aspects [else] [mapping Error] [else] • Evaluating approaches using case studies • Initial development • Evolution [else] [codeAspError] [weave PMError] [aspectDesignError] [more Aspects] [enhance AspError] [weaveAsp Error] Aspect Models Development Aspect Models Customization Code Generation
Q u e s t i o n s ?