© 2009 ibm corporation crma46 ibm rational software conference 2009 one version of the story: using...

30
© 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM® Rational® ClearQuest® as an SDLC Management Tool Jennifer McElroy Environment Management Analyst Allstate Insurance [email protected] CRMA46 © 2009 IBM Corporation

Upload: margery-oconnor

Post on 22-Dec-2015

224 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

© 2009 IBM Corporation

CRMA46

IBM Rational Software Conference 2009 One Version of the Story: Using IBM® Rational®

ClearQuest® as an SDLC Management Tool Jennifer McElroy

Environment Management Analyst

Allstate [email protected]

CRMA46

© 2009 IBM Corporation

Page 2: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

2CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Tracking Changes

Question: Where are you tracking your changes, issues, risks, etc??

Microsoft Excel

Word document on a share drive

Database that was created for a specific application

One or more ‘other’ defect/change tracking tools

Posted as a ‘blog’ on a Windows SharePoint website

Post-it Notes on a wall

Now, how do you gather metrics on everything your Requirements, Development, Quality, Environment or Change Management teams are working on?

Even bigger than that – how do you gather those metrics for globally distributed teams who are generating 40-50 releases per year?

Page 3: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

3CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Agenda Background

Allstate Implementation

Details of Implementation

DEMO

Sample Timelines and Cost

Lessons Learned/Conclusion

Questions and Answers About the Speaker About Allstate Insurance Our Environment

Page 4: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

4CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

About the Speaker

Certified as an IBM® Rational® ClearQuest® Administrator since 2006

An IBM® Rational® ClearQuest® Administrator for over eight years

Working with IBM® Rational® ClearQuest® in both a multisite and non-multisite environments

Written hook code in VB and PERL; most recently in PERL

Everything in the schema being discussed today is written in PERL

Working with IBM® Rational® ClearCase® for approximately six years

developerWorks Articles: Enterprise Software Release Management (co-author) -

http://www.ibm.com/developerworks/rational/library/06/0925_lipien-haines-gan/ Accessing the ClearCase Automation Library from ClearQuest hooks (author) -

http://www.ibm.com/developerworks/rational/library/07/0410_haines/

Please feel free to stop me anytime to ask questions

Page 5: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

5CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Allstate Insurance

The Allstate Corporation is the nation’s largest publicly held personal lines insurer. A Fortune 100 company, with $156.4 billion in assets, Allstate® sells 13 major lines of insurance, including auto, property, life and commercial. Allstate® also offers retirement and investment products and banking services. Allstate® is widely known through the “You’re In Good Hands With Allstate®” slogan.

Allstate is reinventing protection and retirement to help individuals in approximately 17 million households protect what they have today and better prepare for tomorrow.

Page 6: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

6CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Our Environment

Offshore servers for IBM® Rational® ClearQuest® running Windows 2003 with MS SQL Server 2005

Mastering site runs on MS SQL Server 2005 database cluster and has a separate Windows 2003 server to process IBM® Rational® ClearQuest® Multisite® jobs

Each replica site has IBM® Rational® ClearQuest® Web running on a Windows 2003 server

Each site has a team that range from 5-250+ people

We are currently running version 7.0.1.0 with IBM® Rational® ClearQuest® Multisite® in the process of testing and upgrading to 7.1

IBM® Rational® ClearQuest® is integrated with IBM® Rational® ClearCase®

Page 7: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

7CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Agenda Background

Allstate Implementation

Details of Implementation

DEMO

Sample Timelines and Cost

Lessons Learned/Conclusion

Questions and Answers

Benefits of this type of implementation State-based Record Types Stateless Record Types

Page 8: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

8CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Benefits Transfer records between teams

Development > Environment Implement processes that provide a “natural flow” from one team to the next

Multiple people working on one change Assists in Global Delivery

Ensure that all work is accounted for in a release Track your issues and risks in the same place as your changes and defects – because one might affect the

other Customizable choice lists

Some choice list items may be applicable to more than one group – so why not reuse them? Choice list maintenance

Problems using CQ dynamic choice lists Adding items Removing items

Consistent processes and terminology between teams Granular Reporting Moves towards a more mature software configuration management process Support and enable regulatory requirements like Sarbanes/Oxley Act of 2002 (SOX) and the

Capability Maturity Model Integration (CMMI) Producing consistent metrics Enforce repeatable processes Capture Audit Trails

Increase speed-to-market

Page 9: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

9CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Record Types Using a combination of stateful and stateless record types

Stateful record types Using three stateful record types (Software Release, Incident and Work

Request) Relate to each other (parent to child and sibling to sibling)

Stateless record types Used to control the choice lists that are presented to users Using 26 stateless record types (too many to list here) Using only a few dynamic lists for lists that rarely, if ever, change Global PERL scripts are used to query for choice lists Can be marked ‘Inactive’ so users are unable to select from a choice list

Page 10: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

10CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Stateless Record Types

Each Stateless record type has two standard fields Business Unit Name Status (Active or Inactive)

Can have relationship with other stateless record types For example: We have environment and application server Application server has a reference field to the environment record

Create/modify of stateless records is restricted to the group who ‘owns’ it For example: Project Managers can create/update the Business Unit Project

record type A member of the Administrator group can also update any look-up record

Page 11: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

11CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Stateless Record Types (examples)

Business Unit Name record

Business Unit Application Server record

Page 12: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

12CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Agenda Background Allstate Implementation Details of Implementation DEMO Sample Timelines and Cost Lessons Learned/Conclusion Questions and Answers

Sample Choice List Script Record Relationships Stateful record type details State Transitions State based record field behavior Creating Work Requests Relating Records to each other Other fun features - Cloning Records, Archiving Attachments

Page 13: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

13CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Sample Choice List Scriptsub CL_Bus_Unit_Name {my @buchoices;my $PresentAllChoices = $session->GetNameValue("ALLOW_INACTIVE_VAL");

if ($PresentAllChoices eq "yes") { $is_active_value = "Active" } else { $is_active_value = "Inactive" }

my $session = $entity->GetSession();my $queryDef = $session->BuildQuery("Business_Unit"); $queryDef->BuildField("Bus_Unit_Name"); my $filter = $queryDef->BuildFilterOperator($CQPerlExt::CQ_BOOL_OP_AND); $filter->BuildFilter("State",$CQPerlExt::CQ_COMP_OP_EQ, [$is_active_value]); my $resultSet = $session->BuildResultSet($queryDef); $resultSet->Execute();

while ($resultSet->MoveNext == $CQPerlExt::CQ_SUCCESS) { my $busunit = $resultSet->GetColumnValue(1); push (@buchoices, $busunit); } return @buchoices;}

Page 14: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

14CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Record Relationships

Software Release Record(Parent)

Incident Record(Child, Parent, or Sibling)

Work Request(Child)

Page 15: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

15CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Stateful record type details Software Release (parent or grand-parent)

Specifies the release information Release Manager, Pre-Production Deployment Date, Production Deployment

Date, Type of Release (Service Pack vs. Major Release), etc Can have many children (Incidents)

Page 16: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

16CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Software Release Record State Transition

Submitted

Assign

Closed

Deploy

Work On

DuplicateDuplicate

Assign

Deployed

Worked On

Close

Deferred Declined

Defer

Decline

Resubmit

Page 17: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

17CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Stateful record type details (cont…) Incident (the main record)

Differentiated by a field - Incident Type Code An Incident can be a Defect, Change Request, Environment, Project, Issue,

Risk, or Config Management Identifies the specifics about the request

Headline, Description, Owner, State, etc.. Must be related to Software Release Record Can be related to other Incident records Can have many children records (Work Requests)

Work Requests are created from an action (Create_Work_Request) on the Incident record

Data is pre-populated from the Incident to the Work Request User has no other interaction with the WR during the creation

Field behaviors are based on the Bus Unit Name and Incident Type Code

Page 18: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

18CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

State based record field behavior

sub Incident_Field_Behavior {

my $incidentType = $entity->GetFieldStringValue("Incident_Type_Code");

@Man_Defect = ("Bus_Unit_Line_of_Bus_Name", "Bus_Unit_Channel_Name", "Bus_Unit_Line_Number", "Geographical_State",

"Bus_Unit_Company_Name", "Bus_Unit_Team_Name", "Identified_in_Build_Nbr", "Bus_Unit_App_Server_Name",

"Bus_Unit_Environment_Name", "Identified_in_Iteration", "Identified_in_Test_Stage", "Bus_Unit_Project_Nbr",

"Bus_Unit_Transaction_Type");

@Opt_Defect = ("Bus_Unit_Area_Impact_Name", "USD_Last_Update_Date", "Impacted_Files", "Bus_Unit_Inc_Source",

"Risk_Category_Ind", "Help_Request_Code", "Risk_Impact_Code", "Risk_Mitigation_Text", "Next_Activity_Date",

"Risk_Probability_Code", "Risk_Rank_Code", "Required_Date", "Severity_Code", "Inc_Typ_Code_Subcat",

"Req_Team_Review_Ind", "Covered_in_Fixed_Price", "Deployment_Priority", "Impacts_UI_Ind", "Project_Active_Date",

"Bus_Unit_IntroPhase");

.....

@Man_Issue = ("Bus_Unit_Line_of_Bus_Name", "Bus_Unit_Channel_Name", "Bus_Unit_Line_Number", "Geographical_State",

"Bus_Unit_Company_Name", "Bus_Unit_Team_Name", "Next_Activity_Date", "Risk_Rank_Code", "Required_Date",

"Severity_Code", "Bus_Unit_Transaction_Type");

@Opt_Issue = ("Bus_Unit_Area_Impact_Name", "Identified_in_Build_Nbr", "Bus_Unit_App_Server_Name", "Bus_Unit_Environment_Name",

"Identified_in_Iteration", "Identified_in_Test_Stage", "USD_Last_Update_Date", "Impacted_Files",

"Bus_Unit_Inc_Source", "Risk_Category_Ind", "Help_Request_Code", "Risk_Impact_Code", "Risk_Mitigation_Text",

"Risk_Probability_Code", "Bus_Unit_Project_Nbr", "Inc_Typ_Code_Subcat", "Req_Team_Review_Ind",

"Covered_in_Fixed_Price", "Deployment_Priority", "Impacts_UI_Ind", "Project_Active_Date", "Bus_Unit_IntroPhase");

.....

if ($incidentType eq "Defect") {

foreach $field (@Man_Defect) { $entity->SetFieldRequirednessForCurrentAction($field, $CQPerlExt::CQ_MANDATORY)}

foreach $field (@Opt_Defect) { $entity->SetFieldRequirednessForCurrentAction($field, $CQPerlExt::CQ_OPTIONAL)}

} elsif ($incidentType eq "Issue") {

foreach $field (@Man_Issue) {$entity->SetFieldRequirednessForCurrentAction($field, $CQPerlExt::CQ_MANDATORY)}

foreach $field (@Opt_Issue) {$entity->SetFieldRequirednessForCurrentAction($field, $CQPerlExt::CQ_OPTIONAL)}

.....

Page 19: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

19CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Incident Record State Transition

Vs.

Incident RecordType = Defect

Submitted

Close

Closed

Resolve

Test

Duplicate

Defer

Decline

Submit Resubmit

Duplicate Deferred

Analyzed

Slotted

Approved

Opened

Resolved

Tested

Re-Open

Incident RecordType = Defect

Clone

Analyzed

Re-Open

Declined

Defer

Duplicate

In_Progress

Test In Progress

Re-Open

Close

Client Review

Open

Slot

This workflow is conditional – based on the Incident Type Code

Very hard to show a visual representation of it

Incident RecordType = Change Request

Submitted

Close

Closed

Submit

Duplicate DeferredDeclined

Analyze

Slotted

Approved

Open

Resolved

Tested

Incident RecordType = Change Request

Client Review

In_Progress

Analyzed

Duplicate

Submit Resubmit

Clone

Duplicate

Decline

Slot

Opened

Resolve

Re-Approve

Ready for Review

Approve Re-Review

Test

Page 20: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

20CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Stateful record type details (cont…) Work Request (Integrated with IBM® Rational® ClearCase® UCM®)

Easily created Basically a disposable record since there is no interaction during submit

Minimal workflow “Multiple owners”

More than one person can be working to resolve a defect or a change request, this allows each developer to be able to check out/in code and have it associated with the task (incident).

Captures all the change set information

Page 21: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

21CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Work Request State Transition

Submitted

Assign

Open

Resolve

Close

Closed

Duplicated

Reassign

Re-WorkOn

Assigned

Worked On

Resolved

Declined

Decline

Duplicate

Re-Submit

Page 22: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

22CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Creating Work Requests

Used to track the individual work for a larger item

Users create Work Requests from an action on the Incident record Makes sure the records are related to each other Doesn’t allow orphaned work requests out there

Allows the record to be created very quickly No information to enter since it is contained in the parent record Basically just telling the developer – OK, go check out the code for this project

Is used by the Business & System Analysts, Developers and Testers

Does not need to be associated with IBM® Rational® ClearCase® related changes

Page 23: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

23CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Relating Records

An Incident must be related to a Software Release record when the user takes the “Slotted” action

Incidents can be related to other Incidents, Software Releases or Work Requests Or a combination of all 3!

A Work Request can only be related to a single Incident

An Incident should only be related to a single Software Release We do not have this coded currently

Page 24: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

24CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Cloning

Executed via a button on the Related Records Tab

Is a PERL script that uses the Build Entity feature Copies the values from all fields in the existing record to the new record Relates the records to one another

If successful, tells user the entity was cloned and gives the new ID #

If unsuccessful, tells the user why

Page 25: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

25CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Archiving Attachments

Regains used space IBM® Rational® ClearQuest® Multisite® copies each attachment to each site Improves Performance on queries

Prevents changes from being made when they shouldn’t be

Automated PERL script uses API Moves any associated attachments to NAS space

Inserts a URL for each file into an “Attachment Log” field In case the file needs to be accessed

Adds a note to indicate the attachment has been removed

Page 26: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

26CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Page 27: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

27CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Sample Timelines & Cost

Approximately 2 FTEs for 1500 hours Majority of time is spent gathering requirements

Total Cost = hours * dollars/hour $300,000 = 3000 (hours) * $100

Conversion (from old schema) required data manipulation as some fields changed field types

Page 28: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

28CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Lessons Learned Development team needs to understand the benefits of the Software

Release record and integrated software tools, processes and project management discipline approach

Use standards where possible Re-use things whenever possible Avoid duplicating data, processes or code

Partner with an existing or establish a Governance Board for Software Tools and Processes

Ensure the tool administrators understand the vision, the business environment and constraints

Schedule requirements gathering sessions for several hours at a time Eliminates having to review what was discussed and decided at the last meeting

Practice the conversion – document every step, every command before the actual move

COMMUNICATE, COMMUNICATE, COMMUNICATE People are generally resistant to change, having a lot of communication will make your users feel more

comfortable with what is about to happen

Celebrate your successes!

Page 29: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

29CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

Page 30: © 2009 IBM Corporation CRMA46 IBM Rational Software Conference 2009 One Version of the Story: Using IBM ® Rational ® ClearQuest ® as an SDLC Management

IBM Rational Software Conference 2009

30CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool

© Copyright IBM Corporation 2009. All rights reserved. The information contained in these materials is provided for informational purposes only, and is provided AS IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, these materials. Nothing contained in these materials is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. References in these materials to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities referenced in these materials may change at any time at IBM’s sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature availability in any way. IBM, the IBM logo, Rational, the Rational logo, Telelogic, the Telelogic logo, and other IBM products and services are trademarks of the International Business Machines Corporation, in the United States, other countries or both. Other company, product, or service names may be trademarks or service marks of others.