Your SlideShare is downloading. ×
  • Like
Tigerstripe @ Eclipse Summit 08
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Tigerstripe @ Eclipse Summit 08


Introduction to Tigerstripe Model Driven Engineering workbench.

Introduction to Tigerstripe Model Driven Engineering workbench.

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads


Total Views
On SlideShare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. Tigerstripe Richard Craddock, Eric Dillon (Cisco) Integrated Model-Driven Engineering
  • 2. Get started with Tigerstripe
    • Quick project overview
    • Tigerstripe Workbench: highlights
    • Requirements for Real-life MDE
    • Customize the Tigerstripe Framework
    • Wrap-up – Q&A
  • 3. Project Overview
    • Technology sub-project, in Incubation
      • Model-Driven-Engineering framework for large Telecom and Enterprise Models
      • Open-sourced by Cisco in Jan’08
      • Used in production (Cisco ANA)
    • Website:
    • Wiki:
    • (all materials available at )
  • 4. Tigerstripe: The Workbench
    • A Scalable MDE environment
      • Class Diagrams, Instance Diagrams
      • Model Scoping (facets)
      • Integrated Code/Content Generation
      • Scalable, production-ready
      • Integration with Continuous builds Env.
  • 5. Concepts: Componentized Models
    • Models are hosted in a project
    • Cross-project dependencies can be used in a Java-Classpath fashion
    • Models can be packaged as .zip for read-only distribution.
    • Allow to “Componentize” large models
    • Buckminster integration to materialize large number of inter-dependent model projects.
  • 6. Concepts: SCM Friendly Models
    • Model Artifacts are stored in separate files in project
    • Allows SCM to handle them separately, and set own revisions
    • Reduces number of required merges when large distributed team work on large models.
  • 7. Concepts: Model Scoping
    • Define model self-contained, valid, sub-models by walking all relevant relationships
    • Use Stereotypes/Annotations to control model lifecycle
    • Use sub-model as driver for code/content generation
    Out of Scope
  • 8. Template-based Code/Content Generation
  • 9. Instance-based vs. Class-based Generation
  • 10. Real-life Model-Driven Engineering
    • The model…
      • Is shipped with product (partners/customers)
      • Is annotated
        • To drive code generation
        • To document design
        • Documentation
    • The platform…
      • Controls the model is valid
      • Facilitates distributed development
      • Generates content/code
    Dev. Team (not shared with Partners/Customers) Modeling Team (shared with Partners) Doc. Team (shared with Partners/Customers)
  • 11. Tigerstripe Annotation Framework
    • Principles
      • Associate Arbitrary EMF object with URI
      • Independent of Tigerstripe Core
      • Allow for custom UI, both as property view or on GMF diagrams
      • Control where they are persisted
    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.
    • Goals:
      • Documentation Annotations created when Entities are created
      • Visual indication of documentation, and design notes
      • Require documentation content for code/content generation.
      • Integrate with Continous Build Environment
    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;; 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. Example: Define 2 Annotation Types
    • Annotation content is defined thru .Ecore
    • Register as AnnotationType, with proper target
    • Add LabelProvider, Validators, Constraints, etc…
    • See
    <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. Install Annotations… … and annotate the model. Selection-based view Native EditPart on GMF Diagrams Annotation “routed” to .ann file
  • 15. Customized Workbench
  • 16. Materialize and Build
    • Use Buckminster to materialize
    • Drive headless generation
    <cs:cspec xmlns:cs=&quot; &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. Wrap-up
    • Tigerstripe
      • As a workbench
      • As a MDE framework
    • Annotation Framework
    • Integration with Continuous build environments.
  • 18.