© 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
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?
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
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
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.
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®
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
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
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
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
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
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
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;}
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)
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)
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
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
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)}
.....
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
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
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
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
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
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
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
IBM Rational Software Conference 2009
26CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool
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
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!
IBM Rational Software Conference 2009
29CRMA46 - One Version of the Story: Using IBM(R) Rational(R) ClearQuest(R) as an SDLC Management Tool
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.
Top Related