Tigerstripe @ Eclipse Summit 08

  • 828 views
Uploaded on

Introduction to Tigerstripe Model Driven Engineering workbench.

Introduction to Tigerstripe Model Driven Engineering workbench.

More 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

Views

Total Views
828
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
11
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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: www.eclipse.org/tigerstripe
    • Wiki: http://wiki.eclipse.org/Tigerstripe
    • (all materials available at http://wiki.eclipse.org/TigerstripeAtEclipseSummit08 )
  • 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.
    references
  • 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;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. Example: Define 2 Annotation Types
    • Annotation content is defined thru .Ecore
    • Register as AnnotationType, with proper target
    • Add LabelProvider, Validators, Constraints, etc…
    • See http://wiki.eclipse.org/Tigerstripe_APIs
    <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; 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. Wrap-up
    • Tigerstripe
      • As a workbench
      • As a MDE framework
    • Annotation Framework
    • Integration with Continuous build environments.
  • 18.