Copyright © IBM Corp., 2007-2008. | March-17-2008 | Creating Robust Scalable DSLs with UML Tutorial (172) James Bruck, Christian Damus IBM Rational Software.

Slides:



Advertisements
Similar presentations
Profiles Construction Eclipse ECESIS Project Construction of Complex UML Profiles UPM ETSI Telecomunicación Ciudad Universitaria s/n Madrid 28040,
Advertisements

1 CIS224 Software Projects: Software Engineering and Research Methods Lecture 11 Brief introduction to the UML Specification (Based on UML Superstructure.
Copyright © IBM Corp., All rights reserved. The presentation is licensed under Creative Commons Att. Nc Nd 2.5 license. RESTful Service Oriented.
Copyright © IBM Corp., Introducing the new Web Tools JavaScript™ Features Phil Berkland IBM Software Group 9/26/2007.
A Brief Introduction. Acknowledgements  The material in this tutorial is based in part on: Concurrency: State Models & Java Programming, by Jeff Magee.
OOP in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
© 2006 Pearson Addison-Wesley. All rights reserved4-1 Chapter 4 Data Abstraction: The Walls.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
UML CASE Tool. ABSTRACT Domain analysis enables identifying families of applications and capturing their terminology in order to assist and guide system.
Component and Deployment Diagrams
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
© Copyright Eliyahu Brutman Programming Techniques Course.
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
Common Mechanisms in UML
1 An Introduction to Visual Basic Objectives Explain the history of programming languages Define the terminology used in object-oriented programming.
Design Management: When Model Driven Engineering Embraces the Semantic Web NECSIS 2012, Gatineau, QC 27 June 2012 Maged Elaasar.
Object-Oriented Analysis and Design
© 2011 IBM Corporation Overview on Modeling RESTful Services August, 2011 Manoj Paul, Software Developer, Rational,
Proceso kintamybių modeliavimas Modelling process variabilities Donatas Čiukšys.
Copyright © IBM Corp., All rights reserved. Plastic Surgery For Eclipse: Custom SWT Widgets, RCP Customization, and more Benjamin Pasero.
Microsoft Visual Basic 2005: Reloaded Second Edition
Faculty of Informatics and Information Technologies Slovak University of Technology Peter Kajsa and Ľubomír Majtás Design.
Workshop on Integrated Application of Formal Languages, Geneva J.Fischer Mappings, Use of MOF for Language Families Joachim Fischer Workshop on.
SOFTWARE ENGINEERING BIT-8 APRIL, 16,2008 Introduction to UML.
UML2 Package Merge Usage scenarios and their effect on XMI and Java API interoperability Bran Selic, Jim Amsden, Kenn Hussey Oct, 2003.
Copyright © IBM Corp., All rights reserved; made available under the EPL v1.0 | March 20, 2008 | Short Talk Standards based systems management: An.
An Introduction to Software Architecture
Introduction to MDA (Model Driven Architecture) CYT.
Lecture 3: Visual Modeling & UML 1. 2 Copyright © 1997 by Rational Software Corporation Computer System Business Process Order Item Ship via “ Modeling.
Building Tools by Model Transformations in Eclipse Oskars Vilitis, Audris Kalnins, Edgars Celms, Elina Kalnina, Agris Sostaks, Janis Barzdins Institute.
Copyright © IBM Corp., All rights reserved. This presentation is licensed under Creative Commons Att. Nc Nd 2.5 license. OpenDocument Format.
What is MOF? The Meta Object Facility (MOF) specification provides a set of CORBA interfaces that can be used to define and manipulate a set of interoperable.
Copyright © IBM Corp., All rights reserved; made available under the EPL v1.0 | March 19, 2008 | Short Talk Extending TPTP for TTCN-3 Paul Slauenwhite.
Specializing and extending the UML
Copyright © IBM Corp., The Eclipse™ Babel Project Translation Server Kit Lo IBM™ Corporation.
Copyright © IBM Corp., All rights reserved. From SWT to RCP: Experiences implementing RSSOwl 2.0 with RCP Benjamin Pasero.
Unified Modeling Language © 2002 by Dietrich and Urban1 ADVANCED DATABASE CONCEPTS Unified Modeling Language Susan D. Urban and Suzanne W. Dietrich Department.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Dr. Darius Silingas | No Magic, Inc. Domain-Specific Profiles for Your UML Tool Building DSL Environments with MagicDraw UML.
Slide 1 Systems Analysis and Design With UML 2.0 An Object-Oriented Approach, Second Edition Chapter 2: Introduction to Object-Oriented Systems Analysis.
Part VII: Design Continuous
Copyright © IBM Corp., Introduction to the Eclipse™ Babel Project Kit Lo IBM™ Corporation.
Copyright © IBM Corp., All rights reserved; made available under the EPL v1.0 | March 18, 2008 | Nitin Dahyabhai What can the WTP Snippets View do.
1 Class Diagrams. 2 Overview Class diagrams are the most commonly used diagrams in UML. Class diagrams are for visualizing, specifying and documenting.
Functional Testing with Eclipse TPTP | Copyright © IBM Corp., All rights reserved. Source code in this presentation is made available under.
® A Proposed UML Profile For EXPRESS David Price Seattle ISO STEP Meeting October 2004.
Lecture 9-1 : Intro. to UML (Unified Modeling Language)
Slide 1 Systems Analysis and Design With UML 2.0 An Object-Oriented Approach, Second Edition Chapter 2: Introduction to Object-Oriented Systems Analysis.
1 Technical & Business Writing (ENG-715) Muhammad Bilal Bashir UIIT, Rawalpindi.
1 Unified Modeling Language, Version 2.0 Chapter 2.
® IBM Software Group © 2007 IBM Corporation Module 1: Getting Started with Rational Software Architect Essentials of Modeling with IBM Rational Software.
Chapter 5 System Modeling. What is System modeling? System modeling is the process of developing abstract models of a system, with each model presenting.
CSCI 3428: Software Engineering Tami Meredith UML Unified Modeling Language.
UML Profile BY RAEF MOUSHEIMISH. Background Model is a description of system or part of a system using well- defined language. Model is a description.
UML Course Instructor: Rizwana Noor. Overview  Modeling  What is UML?  Why UML?  UML Diagrams  Use Case  Components  Relationships  Notations.
Class Diagrams. Terms and Concepts A class diagram is a diagram that shows a set of classes, interfaces, and collaborations and their relationships.
Ontologies Reasoning Components Agents Simulations An Overview of Model-Driven Engineering and Architecture Jacques Robin.
Domino iSeries Multi-Versioning © 2002 IBM Corporation | Lotus software © 2002 IBM Corporation Domino Multi-Versioning Mike Gordon – IBM Global Services.
1 SYS366 Week 2 - Lecture 2 Visual Modeling & UML.
UML (Unified Modeling Language)
Comparison between EPF Composer and Rational Method Composer
IBM Rational Rhapsody Advanced Systems Training v7.5
Course Outcomes of Object Oriented Modeling Design (17630,C604)
Object-Oriented Analysis and Design
Systems Analysis and Design With UML 2
Systems Analysis and Design With UML 2
Seminar 1 Design of Informatics Systems
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
An Introduction to Software Architecture
Presentation transcript:

Copyright © IBM Corp., | March | Creating Robust Scalable DSLs with UML Tutorial (172) James Bruck, Christian Damus IBM Rational Software

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 2 Agenda Introduction Exploring Extension Mechanisms  Featherweight  Lightweight  Middleweight  Heavyweight Deciding which Technique to Use Advanced Concepts  Subsetting  Derived Unions  Redefinition Meta-model Decomposition  Package Merge  Language Units  Compliance Levels Summary

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 3 Introduction – What is a DSL? DSL stands for “Domain Specific Language”. A DSL is created specifically to solve problems in a particular domain.  A language designed to be useful for a specific task. UML® is a general purpose modeling language.  Large and very expressive.  UML 1.x was sometimes criticized for being too large, UML 2.x adds even more concepts.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 4 Introduction – Why extend UML? A common end-goal of those wishing to extend UML is to leverage existing tools and conventions defined by UML while making modeling easier for the end user.  Give a terminology that is adapted to a particular domain.  Give a different notation for already existing symbols  Add semantics that do not exist in the meta-model.  Add constraints that restrict the way you use the meta-model.  Add information that can be used when transforming a model to another model or code.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 5 Introduction – Understanding the Options Need to know:  The types of customizations you wish to create.  Add/remove behavior  Add/remove properties  Add/remove constraints  How the extended meta-model is intended to be used.  How will end user create instances of new meta-types and meta- types from the extended meta-model.  How much overlap exists between new domain and extended domain.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 6 Agenda Introduction Exploring Extension Mechanisms  Featherweight  Lightweight  Middleweight  Heavyweight Deciding which Technique to Use Advanced Concepts  Subsets  Derived Unions  Redefinition Meta-model Decomposition  Package Merge  Language Units  Compliance Levels Summary

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 7 Exploring Extension Mechanisms - Featherweight Why use Keywords?  To distinguish a particular concept from others sharing the same general graphical form. For example:  uml::Interface has a similar appearance to uml::Class. The keyword > is used to distinguish interfaces from other classifiers.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 8 Exploring Extension Mechanisms - Featherweight Why use Keywords?  To distinguish a particular kind of relationship from other relationships sharing the same graphical form.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 9 Exploring Extension Mechanisms - Featherweight Why use Keywords?  To specify the value of some modifier attached to a meta-attribute value.  The keyword > appearing within an Activity signifies that the isSingleExecution attribute of the Activity is true.  To indicate standard stereotype.  For example the > keyword attached to a package identify that the package contains a set of model elements intended to be shared by multiple models. There is support in the API:  Element::addKeyword(), Element::removeKeyword(), Element::hasKeyword() etc.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 10 Exploring Extension Mechanisms - Featherweight Pro  Adding keyword is trivial  Great to visually distinguish items Con  Limited functionality  Cannot add attributes or operations

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 11 Agenda Introduction Exploring Extension Mechanisms  Featherweight  Lightweight  Middleweight  Heavyweight Deciding which Technique to Use Advanced Concepts  Subsets  Derived Unions  Redefinition Meta-model Decomposition  Package Merge  Language Units  Compliance Levels Summary

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 12 Exploring Extension Mechanisms - Lightweight A profile defines a limited extension to a reference meta-model. Primary extension construct is the Stereotype. Stereotypes can be used to add:  Keywords  Constraints  Images  Properties  Behavior Should be your first choice when considering extending UML.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 13 Exploring Extension Mechanisms - Lightweight

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 14 Exploring Extension Mechanisms - Lightweight Pro  Easy to create and work with.  Well described and documentation in the superstructure spec.  Standard means to define icons and display options.  Low implementation cost.  Standard mechanism that interoperates with other compliant tools. Con  Cannot remove existing constraints.  Cannot modify existing structures.  Not a first class extension mechanism.  Cannot use redefinition for example since Stereotypes are not specializations of the meta-types they extend.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 15 Exercise 1 – Lightweight Extension Objectives:  Learning how to describe domain specific constructs with a profile.  Explore Static Profile Definition.  Generate Java™ API for the profile.  Register the generated profile to make it available at run-time.  Work with your profile.  Apply and use the profile in a UML model.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 16 Exercise 1 – Lightweight Extension Core stereotypes of the MyUnit profile.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 17 Exercise 1 – Lightweight Extension Timing stereotypes of MyUnit profile  For performance sensitive tests

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 18 Agenda Introduction Exploring Extension Mechanisms  Featherweight  Lightweight  Middleweight  Heavyweight Deciding which Technique to Use Advanced Concepts  Subsets  Derived Unions  Redefinition Meta-model Decomposition  Package Merge  Language Units  Compliance Levels Summary

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 19 Exploring Extension Mechanisms - Middleweight Extension by specialization of UML meta-classes.  Extend byspecializing types within UML.metamodel.uml (the merged UML meta-model) Creating dependencies on a specific version of UML. Implementation classes in the specialized meta-model reference internal UML implementation classes (compiler warnings)

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 20 Exploring Extension Mechanisms - Middleweight Pro  First class extension mechanism.  Easier than heavyweight to create initially.  Easy for end user to use programmatically than profiles.  Can add behavior.  Can add structure.  Can add constraints. Con  Creates dependence on specific version of UML.  Difficult to maintain especially if UML changes.  User must know about 2 factories for creating elements, the UMLFactory and the new one defined by the extension.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 21 Agenda Introduction Exploring Extension Mechanisms  Featherweight  Lightweight  Middleweight  Heavyweight Deciding which Technique to Use Advanced Concepts  Subsets  Derived Unions  Redefinition Meta-model Decomposition  Package Merge  Language Units  Compliance Levels Summary

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 22 Exploring Extension Mechanisms – Heavyweight Reuse by copy instead of reuse by extension as middleweight. Heavyweight extensions involve 2 steps  Select the language units you wish to extend and merge.  Add your own domain specific types. Merging packages forms the basis for constructing UML itself. Have access to all concepts used to create UML  Subset  Redefinition  Derived unions

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 23 Exploring Extension Mechanisms – Heavyweight Pro  Easy for end users to use programmatically (only 1 meta-model in the end)  Ability to override or customize operations and behavior.  Can add behavior/constraints/structure.  Isolate yourself from changes to UML meta-model.  You can stratify your own specialized meta-model for different levels of abstraction and DSL concerns. Con  Costly development (more complex than profiles).  Difficult to maintain (re-merge).  Lose interoperability with other UML based tools since we have a new meta-model.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 24 Agenda Introduction Exploring Extension Mechanisms  Featherweight  Lightweight  Middleweight  Heavyweight Deciding which Technique to Use Advanced Concepts  Subsets  Derived Unions  Redefinition Meta-model Decomposition  Package Merge  Language Units  Compliance Levels Summary

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 25 Other concepts – Subsets Comes in 2 flavors  Derived subsets  Non-derived subsets UML2 includes a customized EMF code generator to handle subsets.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 26 Other concepts – Subsets - Derived Values are computed from the values of the superset property.  Often read-only. Example  Package::nestedPackage is a derived subset of Package::packageableElement.  Since nested package collection is derived, a user cannot add directly to it.  Clients must add to the packageableElement collection.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 27 Other concepts – Subsets – Non-Derived Values are not computed from the superset values.  Must be writable. Example  Operation::precondition subsets Namespace::ownedRule.  Adding a precondition to some operation means that if you call Operation::getOwnedRules(), that precondition will appear in the collection.  A precondition has a “Subset-Superset” implementation meaning that if a Constraint was added to owned rule collection that it would not be added to precondition list. However, adding to the precondition collection does mean that it gets added to the owned rule collection.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 28 Other concepts – Derived unions Indicate that a property is the union of one or more collections (or scalar). Typically applied to properties on abstract types high up in the inheritance hierarchy. Concrete types make a derived union useful by contributing subsets. Derived unions are read only and derived ( ).

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 29 Other concepts – Derived unions Element::ownedElement is a derived union.  Element contributes Element::ownedComment to that collection.  Package contributes Package::ownedTemplateSignature and Package::profileApplication amongst others.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 30 Derived unions: Example

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 31 Other concepts – Redefinition Redefinition replaces an existing property. Redefinition only makes sense in the context of specialization. May be used to change the definition of a feature. The detailed semantics of redefinition vary for each specialization of RedefinableElement in UML.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 32 Other concepts – Redefinition Redefinition can be used to restrict the kinds of things added to a collection (like co-variant returns in Java™). The name of a property which has been redefined does not have to match the one redefining it.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 33 Other concepts – Redefinition: Example Class::superClass redefines Classifier::general

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 34 Exercise 2 – Creating Middleweight Extension Objectives:  Explore subsets.  Explore extending UML using specialization.  Explore code generator options.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 35 Exercise 2 – Creating Middleweight Extension Core meta-classes of the MyUnit meta-model.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 36 Exercise 2 – Creating Middleweight Extension Timing meta-classes of the MyUnit meta-model

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 37 Agenda Introduction Exploring Extension Mechanisms  Featherweight  Lightweight  Middleweight  Heavyweight Deciding which Technique to Use Advanced Concepts  Subsetting  Derived Unions  Redefinition Meta-model Decomposition  Package Merge  Language Units  Compliance Levels Summary

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 38 Package Merge A directed relationship between two packages which indicates that the contents are to be combined. This mechanism should be used when elements defined in different packages are intended to represent the same concept. By selecting which increments to merge, it is possible to obtain a custom definition of a concept. Package merge allows modeling concepts defined in one package to be extended with new features. UML itself is a merge of a large number of packages.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 39 Package Merge Package merge allows modeling concepts defined at one level to be extended with new features.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 40 Package Merge - Example

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 41 Language Units In order to deal with the problem of language complexity, UML 2.0 was modularized in a way that allows selective use of language units. The modeling concepts in UML are also partitioned into layers of capability referred to as compliance levels. UML itself is ultimately merged into a single package which defines a shared namespace for all compliance levels.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 42 Language Units and Compliance Levels

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 43 Compliance Levels – L0 Represents a common denominator that can serve as a basis for interoperability. The core of EMOF.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 44 Compliance Levels – L1 Adds language units for use cases, interactions, structures, actions, and activities.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 45 Compliance Levels – L2 Adds language units for deployment, state machine modeling and profiles.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 46 Compliance Levels – L3 Adds language units for information flows, templates and model packaging. Represents the complete UML.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 47 Exercise 3 – Creating Heavyweight Extension Objectives:  Explore Package Merge.  Explore working with your extension (generating an editor).

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 48 Exercise 3 – Creating Heavyweight Extension Core package of the MyUnit library

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 49 Exercise 3 – Creating Heavyweight Extension Timing Language UnitObjectives Language Unit

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 50 Exercise 3 – Creating Heavyweight Extension Overview of the MyUnit library

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 51 Exercise 3 – Creating Heavyweight Extension Basic Compliance LevelComplete Compliance Level

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 52 Agenda Introduction Exploring Extension Mechanisms  Featherweight  Lightweight  Middleweight  Heavyweight Deciding which Technique to Use Advanced Concepts  Subsets  Derived Unions  Redefinition Meta-model Decomposition  Package Merge  Language Units  Compliance Levels Summary

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 53 Summary Four basic techniques.  Flyweight  Lightweight  Middleweight  Heavyweight Favor “lightweight” extension (use of profiles).  A practical solution for most applications.

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 54 Thank You!

Creating Robust Scalable DSLs with UML | Tutorial | Copyright © IBM Corp., All rights reserved. 55 Legal Notices Copyright © IBM Corp., All rights reserved. Source code in this presentation is made available under the EPL, v1.0; remainder of the presentation is licensed under Creative Commons Att. Nc Nd 2.5 license. IBM and the IBM logo are trademarks or registered trademarks of IBM Corporation in the United States, other countries, or both. Rational and the Rational logo are trademarks or registered trademarks of International Business Corporation in the United States, other countries, or both. UML, Unified Modeling Language, and MOF are trademarks or registered trademarks of Object Management Group, Inc. Java and all Java-based trademarks, among others, are trademarks or registered trademarks of Sun Microsystems in the United States, other countries, or both Eclipse and the Eclipse logo are trademarks of the Eclipse Foundation, Inc. Other company, product, and service names may be trademarks or service marks of others. THE INFORMATION DISCUSSED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION, IT IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, AND IBM SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, SUCH INFORMATION. ANY INFORMATION CONCERNING IBM’S PRODUCT PLANS OR STRATEGY IS SUBJECT TO CHANGE BY IBM WITHOUT NOTICE.