IBM Rational software presentation template

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
jen.mcelroy@allstate.com
CRMA46
© 2009 IBM Corporation
IBM Rational Software Conference 2009
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?
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
2
IBM Rational Software Conference 2009
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
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
3
IBM Rational Software Conference 2009
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
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
4
IBM Rational Software Conference 2009
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.
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
5
IBM Rational Software Conference 2009
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®
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
6
IBM Rational Software Conference 2009
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
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
7
IBM Rational Software Conference 2009
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
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
8
IBM Rational Software Conference 2009
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
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
9
IBM Rational Software Conference 2009
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
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
10
IBM Rational Software Conference 2009
Stateless Record Types (examples)
Business Unit Name
record
Business Unit
Application
Server record
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
11
IBM Rational Software Conference 2009
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
- One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
 Other fun featuresCRMA46
- Cloning
Records, Archiving Attachments
Tool
12
IBM Rational Software Conference 2009
Sample Choice List Script
sub 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;
}
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
13
IBM Rational Software Conference 2009
Record Relationships
Software Release Record
(Parent)
Incident Record
(Child, Parent, or Sibling)
Work Request
(Child)
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
14
IBM Rational Software Conference 2009
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)
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
15
IBM Rational Software Conference 2009
Software Release Record State Transition
Resubmit
Submitted
Duplicate
Duplicate
Deferred
Declined
Defer
Assign
Decline
Assign
Work On
Worked On
Deploy
Deployed
Close
Closed
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
16
IBM Rational Software Conference 2009
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
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
17
IBM Rational Software Conference 2009
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)}
.....
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
18
IBM Rational Software Conference 2009
Incident Record State Transition
Incident Record
Incident Record Type = Change Request
Type = Defect
Incident Record
Type = Defect
 This workflow is conditional – based on the Incident Type Code
Incident Record
Type = Change Request
Clone
Clone
Submit
Submit
Resubmit
Resubmit
Submit
 Very hard to show a visual representation of it
Duplicate
Submitted
Duplicate
Deferred
Duplicate
Submitted
Declined
Declined
Deferred
Duplicate
Analyzed
Analyzed
Duplicate
Defer
Defer
Decline
Client
Review
Decline
Analyze
Duplicate
Analyzed
 Vs.
Slot
Ready
for Review
Client
Review
Approve
Re-Review
Approved
Approved
Re-Approve
Slot
Slotted
Slotted
Opened
Open
Open
Opened
Resolve
Resolve
Re-Open
Re-Open
Resolved
Resolved
Re-Open
Test
Test
Tested
Tested
In_Progress
In_Progress
Close
Close
Test In Progress
Closed
Close
Closed
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
19
IBM Rational Software Conference 2009
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
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
20
IBM Rational Software Conference 2009
Work Request State Transition
Re-Submit
Declined
Duplicated
Submitted
Duplicate
Assign
Reassign
Decline
Assigned
Open
Worked On
Re-WorkOn
Resolve
Resolved
Close
Closed
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
21
IBM Rational Software Conference 2009
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
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
22
IBM Rational Software Conference 2009
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
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
23
IBM Rational Software Conference 2009
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
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
24
IBM Rational Software Conference 2009
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
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
25
IBM Rational Software Conference 2009
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
26
IBM Rational Software Conference 2009
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
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
27
IBM Rational Software Conference 2009
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!
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
28
IBM Rational Software Conference 2009
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
29
IBM Rational Software Conference 2009
© 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.
CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management
Tool
30