1 / 11

A Generative Approach to Model Interpreter Evolution

Funded by the DARPA Information Exploitation Office (DARPA/IXO), under the Program Composition for Embedded Systems (PCES) program. A Generative Approach to Model Interpreter Evolution. Jing Zhang, Jeff Gray, and Yuehua Lin

wilmer
Download Presentation

A Generative Approach to Model Interpreter Evolution

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. Funded by the DARPA Information Exploitation Office (DARPA/IXO), under the Program Composition for Embedded Systems (PCES) program A Generative Approach to Model Interpreter Evolution Jing Zhang, Jeff Gray, and Yuehua Lin {zhangj, gray, liny} @ cis.uab.eduDept. of Computer & Information Sciences University of Alabama at Birmingham http://www.cis.uab.edu/softcom/

  2. Meta-model0 Meta-model1 Meta-modeln …… Based on Define Define Define ∆M 1 ∆MM 1 ∆M 2 ∆MM 2 ∆I 1 ∆M n ∆I 2 ∆MM n ∆I n …… Model1 Model0 Modeln Interpret Interpret Interpret Interpreter0 Interpreter1 Interpretern …… Evolution of models and interpreters in terms of meta-model changes ∆MM: The changes made to the meta-models ∆M: The changes reflected in the domain models ∆I: The changes reflected in the model interpreters

  3. Example: Old/New Metamodel and model

  4. Example: Old/New Interpreter CBuilderAtom *GetStartState( CBuilderModel *StateDiagram) { CBuilderAtom *startstate = null; const CBuilderAtomList *states = StateDiagram->GetAtoms("State"); POSITION pos=states->GetHeadPosition(); while(pos) { CBuilderAtom *st = states->GetNext(pos); CBuilderConnectionList *cons = st->GetInConnections("Transition"); if ( cons == null ) if ( startstate == null) startstate = st; else <<ERROR: more than one state has no InConnections>> } ASSERT ( startstate !=null ); return startstate;} CBuilderAtom *GetStartState( CBuilderModel *StateDiagram) { const CBuilderAtomList *startstates = StateDiagram->GetAtoms("StartState"); ASSERT(startstates->GetCount()==1); CBuilderAtom *startstate = startstates->GetHead(); return startstate; }

  5. Technical Challenges • Lack of formally-written model interpreter • Different developers may program interpreters in various ways • Hard to maintain and evolve such subjective realizations of model interpreters • Lack of formal specification for metamodel transformation • Metamodel transformation specifications must include the entire knowledge for the underlying interpreter evolution • ∆MM ∆I • Lack of support for parsing and invasively transforming program source code from higher-level models. ? • Utilize a mature program transformation engine: The Design Maintenance System (DMS)

  6. Modeling API Modeling API’ void CComponent::InvokeEx(CBuilder &builder) { Interpreter aInterpreter; CString fileName; char *specFile=new char[fileName.GetLength()]; strcpy(specFile, fileName); …. } void CComponent::InvokeEx(CBuilder &builder) { Interpreter aInterpreter; CString fileName; if(!aInterpreter.selectSpecAspects(fileName)) { return; } … } model model model model Interpreters Interpreters’ Metamodel Metamodel’ Model Xform Specification Models Models’ Model XformEngine Model Interpreter Evolution Architecture (MIEA)

  7. DMS rewriting rules for evolving intepreter(1) • Differences of names for any model entities, relationships and attributes rule ChangeName (id:identifier): expression_statement -> expression_statement ="\id -> GetModels(\“State\");" -> "\id -> GetModels(\“StartState\");".

  8. DMS rewriting rules for evolving intepreter(2) • Differences of model types rule ChangeModelType (id:identifier): expression_statement -> expression_statement = “\id -> GetAtoms(\“State\”);” -> “\id -> GetModels(\“State\”);”.

  9. DMS rewriting rules for evolving intepreter(3) • Differences of attribute types rule ChangeAttrType (): declaration_statement -> declaration _statement = “CString State_Text;” -> “int State_Text;”.

  10. Conclusion • Ideal Goal: • Support the (semi)-automation of model interpreter evolution in terms of metamodel changes and modeling API changes • Proposed Solution: • Model Interpreter Evolution Architecture • Obstacles: • Informal model interpreter • Hard to maintain the fidelity mapping of high-level abstract models to the low-level source code • Possible solution approaches to be investigated: • Attach program rewriting rules to the existing model transformation specification • Develop a new high-level specification for model transformation that can generate the rewriting rules • Investigate an intelligent model comparison technique to generate the rules through human interactions

  11. Thank You !! Questions ??

More Related