Tigerstripe Richard Craddock, Eric Dillon (Cisco) Integrated Model-Driven Engineering
Get started with Tigerstripe <ul><li>Quick project overview </li></ul><ul><li>Tigerstripe Workbench: highlights </li></ul>...
Project Overview <ul><li>Technology sub-project, in Incubation </li></ul><ul><ul><li>Model-Driven-Engineering framework fo...
Tigerstripe: The Workbench <ul><li>A Scalable MDE environment </li></ul><ul><ul><li>Class Diagrams, Instance Diagrams </li...
Concepts: Componentized Models <ul><li>Models are hosted in a project </li></ul><ul><li>Cross-project dependencies can be ...
Concepts: SCM Friendly Models <ul><li>Model Artifacts are stored in separate files  in project </li></ul><ul><li>Allows SC...
Concepts: Model Scoping <ul><li>Define model self-contained, valid, sub-models by walking all relevant relationships </li>...
Template-based Code/Content Generation
Instance-based vs. Class-based Generation
Real-life Model-Driven Engineering <ul><li>The model… </li></ul><ul><ul><li>Is shipped with product (partners/customers) <...
Tigerstripe Annotation Framework <ul><li>Principles </li></ul><ul><ul><li>Associate Arbitrary EMF object with URI </li></u...
<ul><li>Goals: </li></ul><ul><ul><li>Documentation Annotations created when Entities are created </li></ul></ul><ul><ul><l...
Example: Define 2 Annotation Types <ul><li>Annotation content is defined thru .Ecore </li></ul><ul><li>Register as Annotat...
Install Annotations…  … and annotate the model. Selection-based view Native EditPart on GMF Diagrams Annotation “routed” t...
Customized Workbench
Materialize and Build <ul><li>Use Buckminster to materialize </li></ul><ul><li>Drive headless generation </li></ul><cs:csp...
Wrap-up <ul><li>Tigerstripe </li></ul><ul><ul><li>As a workbench </li></ul></ul><ul><ul><li>As a MDE framework </li></ul><...
 
Upcoming SlideShare
Loading in …5
×

Tigerstripe @ Eclipse Summit 08

1,073 views

Published on

Introduction to Tigerstripe Model Driven Engineering workbench.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,073
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
15
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Tigerstripe @ Eclipse Summit 08

  1. 1. Tigerstripe Richard Craddock, Eric Dillon (Cisco) Integrated Model-Driven Engineering
  2. 2. Get started with Tigerstripe <ul><li>Quick project overview </li></ul><ul><li>Tigerstripe Workbench: highlights </li></ul><ul><li>Requirements for Real-life MDE </li></ul><ul><li>Customize the Tigerstripe Framework </li></ul><ul><li>Wrap-up – Q&A </li></ul>
  3. 3. Project Overview <ul><li>Technology sub-project, in Incubation </li></ul><ul><ul><li>Model-Driven-Engineering framework for large Telecom and Enterprise Models </li></ul></ul><ul><ul><li>Open-sourced by Cisco in Jan’08 </li></ul></ul><ul><ul><li>Used in production (Cisco ANA) </li></ul></ul><ul><li>Website: www.eclipse.org/tigerstripe </li></ul><ul><li>Wiki: http://wiki.eclipse.org/Tigerstripe </li></ul><ul><li>(all materials available at http://wiki.eclipse.org/TigerstripeAtEclipseSummit08 ) </li></ul>
  4. 4. Tigerstripe: The Workbench <ul><li>A Scalable MDE environment </li></ul><ul><ul><li>Class Diagrams, Instance Diagrams </li></ul></ul><ul><ul><li>Model Scoping (facets) </li></ul></ul><ul><ul><li>Integrated Code/Content Generation </li></ul></ul><ul><ul><li>Scalable, production-ready </li></ul></ul><ul><ul><li>Integration with Continuous builds Env. </li></ul></ul>
  5. 5. Concepts: Componentized Models <ul><li>Models are hosted in a project </li></ul><ul><li>Cross-project dependencies can be used in a Java-Classpath fashion </li></ul><ul><li>Models can be packaged as .zip for read-only distribution. </li></ul><ul><li>Allow to “Componentize” large models </li></ul><ul><li>Buckminster integration to materialize large number of inter-dependent model projects. </li></ul>references
  6. 6. Concepts: SCM Friendly Models <ul><li>Model Artifacts are stored in separate files in project </li></ul><ul><li>Allows SCM to handle them separately, and set own revisions </li></ul><ul><li>Reduces number of required merges when large distributed team work on large models. </li></ul>
  7. 7. Concepts: Model Scoping <ul><li>Define model self-contained, valid, sub-models by walking all relevant relationships </li></ul><ul><li>Use Stereotypes/Annotations to control model lifecycle </li></ul><ul><li>Use sub-model as driver for code/content generation </li></ul>Out of Scope
  8. 8. Template-based Code/Content Generation
  9. 9. Instance-based vs. Class-based Generation
  10. 10. Real-life Model-Driven Engineering <ul><li>The model… </li></ul><ul><ul><li>Is shipped with product (partners/customers) </li></ul></ul><ul><ul><li>Is annotated </li></ul></ul><ul><ul><ul><li>To drive code generation </li></ul></ul></ul><ul><ul><ul><li>To document design </li></ul></ul></ul><ul><ul><ul><li>Documentation </li></ul></ul></ul><ul><li>The platform… </li></ul><ul><ul><li>Controls the model is valid </li></ul></ul><ul><ul><li>Facilitates distributed development </li></ul></ul><ul><ul><li>Generates content/code </li></ul></ul>Dev. Team (not shared with Partners/Customers) Modeling Team (shared with Partners) Doc. Team (shared with Partners/Customers)
  11. 11. Tigerstripe Annotation Framework <ul><li>Principles </li></ul><ul><ul><li>Associate Arbitrary EMF object with URI </li></ul></ul><ul><ul><li>Independent of Tigerstripe Core </li></ul></ul><ul><ul><li>Allow for custom UI, both as property view or on GMF diagrams </li></ul></ul><ul><ul><li>Control where they are persisted </li></ul></ul>package org.eclipse.tigerstripe.annotation.core; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; public interface Annotation extends EObject { … URI getUri(); void setUri(URI value); … EObject getContent(); void setContent(EObject value); … String getId(); void setId(String value); } // Annotation
  12. 12. <ul><li>Goals: </li></ul><ul><ul><li>Documentation Annotations created when Entities are created </li></ul></ul><ul><ul><li>Visual indication of documentation, and design notes </li></ul></ul><ul><ul><li>Require documentation content for code/content generation. </li></ul></ul><ul><ul><li>Integrate with Continous Build Environment </li></ul></ul>Let’s build an example! 1. Define an Artifact pattern to ensure “Entities are created with ‘Documentation’ Annotations” <pattern:creationPattern patternName= &quot;org.eclipse.tigerstripe.samples.eclipseSummit08.DocumentedEntity&quot; uiLabel= &quot;Documented Entity&quot; iconPath=&quot;icons/cube-new.png&quot; disabledIconPath=&quot;icons/cube-new-gs.png&quot; patternType= &quot;node&quot; index=&quot;100&quot; xmlns:pattern= &quot;http://org.eclipse.tigerstripe/xml/tigerstripeCreationPattern/v1-0&quot; xmlns:ts= &quot;http://org.eclipse.tigerstripe/xml/tigerstripeExport/v2-0&quot;> <pattern:description>Create a new Documented Entity</pattern:description> <ts:artifact name= &quot;_user1” artifactType= &quot;org.eclipse.tigerstripe.workbench.model.deprecated_.IManagedEntityArtifact&quot;> <ts:annotations> <![CDATA[<xmi:XMI xmi:version=&quot;2.0&quot; xmlns:xmi=&quot;http://www.omg.org/XMI&quot; xmlns:d=&quot;http:///org/eclipse/tigerstripe/samples/eclipseSummit08/annotations/ documentation.ecore&quot;> <d:Documentation author=&quot;&quot; content=&quot;&quot;/> </xmi:XMI>]]> </ts:annotations > </pattern:creationPattern> 3. Define custom audit code (IArtifactAuditor & ext. pt into Tigerstripe Incremental Builder) to check on content of Annotation. 2. Define custom IconProvider and ITigerstripeLabelDecorator driven by presence/Content of Annotations 4. Use buckminster to materialize and Maven to generate code/content.
  13. 13. Example: Define 2 Annotation Types <ul><li>Annotation content is defined thru .Ecore </li></ul><ul><li>Register as AnnotationType, with proper target </li></ul><ul><li>Add LabelProvider, Validators, Constraints, etc… </li></ul><ul><li>See http://wiki.eclipse.org/Tigerstripe_APIs </li></ul><extension point=&quot;org.eclipse.tigerstripe.annotation.core.annotationType&quot;> <definition description=&quot;Documentation content&quot; eclass=&quot;Documentation&quot; epackage-uri=&quot;http:///org/eclipse/… /annotations/documentation.ecore&quot; name=&quot;Documentation&quot;> <target type=&quot;org.eclipse.tigerstripe.workbench.model.deprecated_.IModelComponent&quot; unique=&quot;true&quot;> </target> </definition> </extension>
  14. 14. Install Annotations… … and annotate the model. Selection-based view Native EditPart on GMF Diagrams Annotation “routed” to .ann file
  15. 15. Customized Workbench
  16. 16. Materialize and Build <ul><li>Use Buckminster to materialize </li></ul><ul><li>Drive headless generation </li></ul><cs:cspec xmlns:cs=&quot; http://www.eclipse.org/buckminster/CSpec-1.0 &quot; name=&quot;Equipment-model&quot; componentType=&quot;tigerstripe&quot;>     <cs:dependencies>         <cs:dependency name=&quot;common-model&quot; componentType=&quot;tigerstripe&quot; />         <cs:dependency name=&quot;ClassLevel-Generator&quot; componentType=&quot;tigerstripe.generator&quot; />     </cs:dependencies>     <cs:actions>         <cs:public name=&quot;install-generator&quot; actor=&quot;ant&quot;>             <cs:properties>                 <cs:property key=&quot;projectname&quot; value=&quot;ClassLevel-Generator&quot;/>             </cs:properties>         </cs:public>     </cs:actions> </cs:cspec> `          <plugin>             <groupId>cisco-tigerstripe</groupId>             <artifactId>maven-tigerstripe-plugin</artifactId>             <version>1.1</version>             <executions>                     <execution>                     <configuration>                         <workspace>${basedir}/workspace</workspace>                         <projects>                             <param>${workspace}/base-defs</param>                             <param>${workspace}/common-model</param>                             <param>${workspace}/Equipment-model</param>                         </projects>                         <generationProject>${workspace}/Equipment-model</generationProject>                     </configuration>                     <goals>                         <goal>generate</goal>                     </goals>                 </execution>             </executions>         </plugin>
  17. 17. Wrap-up <ul><li>Tigerstripe </li></ul><ul><ul><li>As a workbench </li></ul></ul><ul><ul><li>As a MDE framework </li></ul></ul><ul><li>Annotation Framework </li></ul><ul><li>Integration with Continuous build environments. </li></ul>

×