Collaborative Application Lifecycle Management
Collaborative Application Lifecycle Management
Mats Gthe Carolyn Pampino Philip Monson Khurram Nizami Katur Patel Brianna M. Smith Nail Yuce
ibm.com/redbooks
International Technical Support Organization Collaborative Application Lifecycle Management with IBM Rational Products December 2008
SG24-7622-00
Note: Before using this information and the product it supports, read the information in Notices on page xi.
First Edition (December 2008) This edition applies to IBM Rational Build Forge Enterprise Edition 7.1, Rational ClearCase 7.1, Rational ClearQuest 7.1, Rational RequisitePro 7.1, Rational Quality Manager 1.0, Rational Requirements Composer 7.1, Rational Software Analyzer 7.0, and Rational Team Concert 1.0.
Copyright International Business Machines Corporation 2008. All rights reserved. Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
Contents
Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi Trademarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii The team that wrote this book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv Become a published author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Part A. Collaborative Application Lifecycle Management defined . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Chapter 1. Introduction to Application Lifecycle Management and this book . . . . . . . 3 1.1 The scope of Application Lifecycle Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1.1 People, process, information, and tools that drive the life cycle . . . . . . . . . . . . . . . 4 1.1.2 The scope of this book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Using this book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2.1 Goals and objectives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2.2 How this book is organized . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2.3 Target audience and chapters of interest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Chapter 2. Collaborative Application Lifecycle Management . . . . . . . . . . . . . . . . . . . . 2.1 Understanding Collaborative Application Lifecycle Management . . . . . . . . . . . . . . . . . 2.1.1 Changes in the ALM market . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 A CALM blueprint to streamline software delivery . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Life-cycle collaboration and management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Success indicators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Cycles of activity in the development organization . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Scaling agile methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4 Aligning work assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.5 Being requirements driven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.6 Striving for build clarity and quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 3. A scenario for CALM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 A story telling a tale of integrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Story objectives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2 The context for the story . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 The project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 The software delivery team . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 A team of teams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2 The solution team leads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 The agile development team. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.4 The solution testing team . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 The approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Phases and iterations for establishing cadence . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2 Frequent builds to drive clarity and quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.3 Testing to drive quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.4 Lean governance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 A story told act by act: Completing an iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.1 Act 1: Responding to a change request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.2 Act 2: Collaborative development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 16 16 24 30 30 35 38 44 45 46 47 48 49 49 49 50 51 53 54 55 55 56 57 57 58 58 60 61
iii
3.5.3 Act 3: Enterprise integration builds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.4 Act 4: Managing quality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.5 Act 5: Delivering the solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6 Life-cycle collaboration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1 Life-cycle assets in this CALM scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.2 Agility at Scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7 Reference architecture and configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.1 An enterprise CALM solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.2 Product integrations for this scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.3 Supporting distributed teams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63 64 65 66 66 67 69 70 72 73
Part B. Act 1: Responding to a change request. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Chapter 4. The team responds to a requirement change . . . . . . . . . . . . . . . . . . . . . . . 79 4.1 Introduction to change management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.1.1 The changing change management market . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.1.2 The changing requirements definition and management market . . . . . . . . . . . . . 83 4.1.3 Collaborative development blueprint and change management . . . . . . . . . . . . . . 88 4.1.4 Requirements definition and management blueprint. . . . . . . . . . . . . . . . . . . . . . . 93 4.2 A reference scenario for responding to a change request . . . . . . . . . . . . . . . . . . . . . 105 4.2.1 The actors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.2.2 The workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.2.3 Bob submits a request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 4.2.4 Patricia updates the project iteration plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 4.2.5 Marco updates the development iteration plan . . . . . . . . . . . . . . . . . . . . . . . . . . 109 4.2.6 Tammy updates the solution test plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 4.2.7 Patricia confirms the project iteration plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 4.2.8 Bob defines and manages the requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 4.3 Considerations in change management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.3.1 Analyzing and prioritizing requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.3.2 Sizing requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 4.3.3 Rational Team Concert for stakeholder requests . . . . . . . . . . . . . . . . . . . . . . . . 114 Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 5.1 Act 1: Responding to a change request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 5.2 Rational RequisitePro and Rational Requirements Composer . . . . . . . . . . . . . . . . . . 117 5.3 Rational ClearQuest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 5.4 Jazz interoperability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.4.1 ClearQuest Connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.4.2 ClearCase Connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 5.5 Managing a change request with Rational RequisitePro and Rational ClearQuest . . 124 5.5.1 Bob submits a request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 5.5.2 Patricia updates the project iteration plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 5.5.3 Marco updates the development iteration plan . . . . . . . . . . . . . . . . . . . . . . . . . . 135 5.5.4 Tammy updates the solution test plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 5.5.5 Patricia confirms the project iteration plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 5.5.6 Bob defines and manages the requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 5.6 Life-cycle collaboration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 5.7 Planning and measuring success in change management . . . . . . . . . . . . . . . . . . . . . 177 5.7.1 Reporting with ClearQuest ALM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 5.7.2 Reporting with the Business Intelligence Reporting Tool . . . . . . . . . . . . . . . . . . 178 5.7.3 Reporting team health with Rational ClearQuest and BIRT . . . . . . . . . . . . . . . . 182
iv
5.8 Reference architecture and configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.8.1 Fitting into the enterprise ALM solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.8.2 Configuring Rational RequisitePro and Rational Requirements Composer . . . . 5.8.3 Configuring Rational ClearQuest and the ALM schema . . . . . . . . . . . . . . . . . . . 5.9 Problem determination and known workarounds . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.9.1 General techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.9.2 Troubleshooting Rational ClearQuest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.9.3 Troubleshooting Rational RequisitePro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Part C. Act 2: Collaborative development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Chapter 6. An agile team implements a change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 Introduction to collaborative development. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 The changing collaborative development market . . . . . . . . . . . . . . . . . . . . . . . . 6.1.2 Collaborative development blueprint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 A reference scenario for collaborative development . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.1 The actors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.2 The workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.3 Marco monitors component health . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.4 Al identifies an asset the team can use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.5 Marco and Diedrie do just enough design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.6 Diedrie develops, builds, and tests her changes. . . . . . . . . . . . . . . . . . . . . . . . . 6.2.7 Diedrie delivers her changes and builds the component . . . . . . . . . . . . . . . . . . 6.3 Considerations in collaborative development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 Lifecycle solution for small teams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.2 Collaborative development with UCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.3 Collaborative asset management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 7. Rational Team Concert for collaborative development. . . . . . . . . . . . . . . 7.1 Act 2: Collaborative development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Overview of Rational Team Concert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3 Rational Team Concert for agile development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.1 Marco monitors component health . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.2 Al identifies an asset that the team can reuse . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.3 Diedrie, Marco, and Al do just enough design. . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.4 Diedrie develops, builds, and tests her changes. . . . . . . . . . . . . . . . . . . . . . . . . 7.3.5 Diedrie delivers her changes and builds the component . . . . . . . . . . . . . . . . . . 7.4 Life-cycle collaboration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5 Planning and measuring success in collaborative development . . . . . . . . . . . . . . . . . 7.5.1 Measuring success with Rational Team Concert . . . . . . . . . . . . . . . . . . . . . . . . 7.5.2 Reporting team health with Rational Team Concert . . . . . . . . . . . . . . . . . . . . . . 7.5.3 Measuring success by role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6 Reference architecture and configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6.1 Fitting into the enterprise ALM solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6.2 How the products are configured for this scenario . . . . . . . . . . . . . . . . . . . . . . . 213 214 214 217 221 222 222 223 224 225 226 226 227 227 228 229 231 232 232 246 247 256 263 272 281 286 288 288 292 298 301 301 305
Part D. Act 3: Enterprise integration builds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 Chapter 8. The release engineer conducts the integration build . . . . . . . . . . . . . . . . 8.1 Introduction to enterprise build management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.1 The changing enterprise build management market. . . . . . . . . . . . . . . . . . . . . . 8.1.2 Enterprise build management blueprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2 A reference scenario for enterprise build management . . . . . . . . . . . . . . . . . . . . . . . 8.2.1 The actors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 316 316 318 325 327
Contents
8.2.2 The workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.3 Rebecca inspects the integration build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.4 Rebecca runs the integration build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3 Considerations in enterprise build management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.1 Managing the build artifacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.2 Managing quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.3 Building clarity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.4 Running static analysis during the build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.5 Automating deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 9. Rational Build Forge for enterprise integration build . . . . . . . . . . . . . . . . 9.1 Act 3: Enterprise integration build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2 Rational Build Forge Enterprise Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.1 Process automation framework. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.2 Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.3 Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.4 Schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.5 Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.6 Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.7 Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3 Using Rational Build Forge for an enterprise integration build . . . . . . . . . . . . . . . . . . 9.3.1 Rebecca inspects the build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3.2 Rebecca runs the integration build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.4 Life-cycle collaboration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.5 Measuring success . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.6 Reference architecture and configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.6.1 Fitting into the enterprise ALM solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.6.2 How Rational Build Forge is configured for this scenario . . . . . . . . . . . . . . . . . . 9.7 Problem determination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
327 328 328 329 329 330 331 332 336 341 342 342 343 345 349 350 351 352 356 357 358 359 375 376 379 379 380 385
Part E. Act 4: Managing quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 Chapter 10. The solution test team manages quality . . . . . . . . . . . . . . . . . . . . . . . . . 10.1 Introduction to managing quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1.1 The changing test market . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1.2 Quality management blueprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2 A reference scenario for managing quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.1 The actors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.2 The workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.3 Tammy monitors quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.4 Tanuj constructs tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.5 Tammy prepares the test lab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.6 The team executes the tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.7 Tammy monitors quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3 Considerations in quality management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1 Automated testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.2 Automated scanning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.3 Approaches to iterations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.4 Many test phases on the path to production . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 390 390 391 397 398 399 400 400 401 401 401 401 402 403 404 407
vi
Chapter 11. Rational Quality Manager for managing quality . . . . . . . . . . . . . . . . . . . 11.1 Act 4: Managing quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Rational Quality Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Rational Functional Tester . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4 Rational AppScan Tester Edition for Rational Quality Manager . . . . . . . . . . . . . . . . 11.5 Rational Quality Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.5.1 Tammy monitors quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.5.2 Tanuj constructs the tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.5.3 Tammy configures the test lab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.5.4 The team executes the tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.5.5 Monitoring quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.6 Life-cycle collaboration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.6.1 Managing quality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.6.2 Requirements-driven testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.7 Planning and measuring success in quality management . . . . . . . . . . . . . . . . . . . . 11.8 Reference architecture and configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.8.1 Fitting into the enterprise ALM solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.8.2 How the products are configured for this scenario . . . . . . . . . . . . . . . . . . . . . . 11.9 Problem determination and known workarounds . . . . . . . . . . . . . . . . . . . . . . . . . . .
409 410 410 424 425 425 425 430 441 444 455 463 465 467 467 470 470 471 477
Part F. Act 5: Delivering the solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 Chapter 12. The team delivers the solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.1 Introduction to software delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.1.1 The changing of software delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2 Reference scenario for solution delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.1 The actors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.2 The workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.3 The team moves to the end game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.4 The team leads assess their exit criteria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.5 Rebecca publishes the release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2.6 Marco conducts a retrospective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.3 Considerations in solution delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.3.1 Transitioning to production . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.3.2 Delivering to operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapter 13. The Rational ALM solution for solution delivery . . . . . . . . . . . . . . . . . . . 13.1 Act 5: Delivering the solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2 The Rational ALM solution and solution delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.1 Rational ClearQuest and solution delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2.2 Rational Team Concert, Rational Quality Manager, and solution delivery . . . . 13.2.3 Rational Build Forge and Solution Delivery. . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.3 The Rational ALM solution for solution delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.3.1 The team moves to the end-game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.3.2 The team leads assess their exit criteria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.3.3 Rebecca publishes the release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.3.4 Marco conducts a retrospective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.4 Life-cycle collaboration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.5 Reference architecture and configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.5.1 Fitting into the enterprise ALM solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.5.2 How the products are configured for this scenario . . . . . . . . . . . . . . . . . . . . . . 481 482 482 483 484 485 485 486 487 488 488 488 489 495 496 497 497 497 497 498 499 504 511 517 519 520 520 521
Contents
vii
Part G. Measuring team success in Application Lifecycle Management . . . . . . . . . . . . . . . . . . . . . . 531 Chapter 14. Delivering and measuring success in Application Lifecycle Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533 14.1 Introduction to measuring success . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 14.2 Process understanding and implementation: Improving project success with predictability and repeatability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 14.2.1 Process specifications: Implementing your process in software delivery . . . . . 535 14.2.2 Process descriptions: Team understanding of the enacted process. . . . . . . . . 543 14.3 Using metrics and measurements effectively to drive team success . . . . . . . . . . . . 545 14.3.1 Selecting the right metrics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 14.3.2 Agile estimation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 14.4 Using dashboards for decision making . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 14.5 Using retrospectives to capture lessons learned and make adjustments . . . . . . . . . 553 Appendix A. Principles for Collaborative Application Lifecycle Management . . . . . Philosophical principles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Development is not an island unto itself . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Software solutions are the product of many conversations. . . . . . . . . . . . . . . . . . . . . . Solutions are rarely sunset; they are refined and maintained for years . . . . . . . . . . . . Many cycles are ripe for automation and recommendation . . . . . . . . . . . . . . . . . . . . . Simplicity first . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Technical principles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Focus on the teams ability to produce a release of software . . . . . . . . . . . . . . . . . . . . Use multiple repositories. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Processes link roles and access multiple repositories . . . . . . . . . . . . . . . . . . . . . . . . . Automate repetitive tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Link people and the assets they access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Appendix B. Configuring interoperability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring the ClearQuest ALM schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ClearQuest and the ALM schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the ALM schema and sample database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Adding packages for the ALM schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring ClearQuest ALM schema for interoperability . . . . . . . . . . . . . . . . . . . . . . . . . Adding packages for interoperability to the ALM schema . . . . . . . . . . . . . . . . . . . . . . . Configuring ClearQuest ALM system-wide settings for interoperability . . . . . . . . . . . . Configuring users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring filter queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring the ClearQuest Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring Jazz repositories for interoperability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring users and licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuring and deploying synchronization rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Practices for using ALM interoperability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Extended ALM interoperability configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Extended ClearQuest ALM configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Extended Jazz configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 558 558 558 559 560 560 561 561 561 562 562 563 565 566 566 566 567 569 569 571 577 578 581 583 584 585 604 610 610 614
Appendix C. Rational Build Forge adapter templates . . . . . . . . . . . . . . . . . . . . . . . . . 623 Appendix D. Code review rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rule categories and subcategories reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architectural discovery patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Design Patterns rule category. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 628 630 630
viii
Object-oriented Patterns rule category . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 Structural Patterns rule category. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 System Patterns rule category . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 Related publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IBM Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Online resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How to get Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Help from IBM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635 635 635 636 636
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
Contents
ix
Notices
This information was developed for products and services offered in the U.S.A. IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service. IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to: IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A. The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you. This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice. Any references in this information to non-IBM Web sites are provided for convenience only and do not in any manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of the materials for this IBM product and use of those Web sites is at your own risk. IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you. Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental. COPYRIGHT LICENSE: This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs.
xi
Trademarks
IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol ( or ), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml The following terms are trademarks of the International Business Machines Corporation in the United States, other countries, or both:
AppScan Build Forge ClearCase ClearQuest DB2 developerWorks IBM Jazz Lotus Notes Lotus Notes Policy Tester Rational Rose Rational Team Concert Rational Unified Process Rational Redbooks Redbooks (logo) RequisitePro Requisite RUP S/390 System i System z Tivoli WebSphere z/OS
The following terms are trademarks of other companies: ITIL is a registered trademark, and a registered community trademark of the Office of Government Commerce, and is registered in the U.S. Patent and Trademark Office. Snapshot, and the NetApp logo are trademarks or registered trademarks of NetApp, Inc. in the U.S. and other countries. SUSE, the Novell logo, and the N logo are registered trademarks of Novell, Inc. in the United States and other countries. Oracle, JD Edwards, PeopleSoft, Siebel, and TopLink are registered trademarks of Oracle Corporation and/or its affiliates. SAP, and SAP logos are trademarks or registered trademarks of SAP AG in Germany and in several other countries. J2EE, J2SE, Java, Javadoc, JDBC, Streamline, Sun, and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. Internet Explorer, Microsoft, Windows Vista, Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both. Intel, Intel logo, Intel Inside, Intel Inside logo, Intel Centrino, Intel Centrino logo, Celeron, Intel Xeon, Intel SpeedStep, Itanium, and Pentium are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. UNIX is a registered trademark of The Open Group in the United States and other countries. Linux is a trademark of Linus Torvalds in the United States, other countries, or both. Other company, product, or service names may be trademarks or service marks of others.
xii
Preface
Holistic, Collaborative, Community-based, End-to-End Management of all Developed Software Assets (HCCEEMDSA) is not as succinct a term as Application Lifecycle Management (ALM), but it might be a better way to describe what ALM means. Numerous vendors and analysts have made several attempts to define ALM. Inevitably, ALM either describes the technical details of individual assets all working well together across an entire development life cycle, or it proposes a higher level of manager-oriented benefits that one never seems to obtain. In the end, ALM is the ability for a development team (the key being a team, not an individual) to continuously be able to answer a set of hard questions, such as the following questions, regardless of your location, position, or project: How are my teams in India, Brazil, and San Jose progressing against the project plan? Can we enforce a development process that spans across my life-cycle activities? What requirements and defect fixes are implemented in this build? Have we implemented all requirements with sufficient quality? How do I best organize and trace my assets so that I can respond to a regulatory audit? Successful IT organizations are finding that the complex ALM implementations they have attempted over the years are brittle in their touch points and tend to be focused on individual vendor solutions. For example, software is the result of many ever-changing conversations, across disparate teams and geographies. It is almost humorous to think that we believed that those brittle integrations might endure as those conversations became more rapid across multiple languages, time zones, technologies, and iterations. New technologies, such as XML and Web 2.0, offer flexible new capabilities that make robust, long-lasting ALM integrations possible. Meanwhile, community-based development models that were borrowed from the best open-source projects can help ensure that ALM solutions are not single-vendor focused. To distinguish these capabilities from those of the past, we call this new capability Collaborative Application Lifecycle Management (CALM). Regardless, of your definition, or the questions for which you need answers, CALM is quickly becoming a strategic necessity in todays business-driven world. The Internet has changed everything, making software business critical. Teams in business, development, and operations must collaborate in an unprecedented way to provide high-impact software and services to their customers. Gone are the days of one tool per role with many silos per organization. Teams must access each others work to be successful. With the advent of the agile and Extreme Programming development methodologies, individuals are performing more than one traditional role. In this evermore competitive world, companies do not have the time, nor the budget for specialists. Individuals must become collaborators to be effective, and teams must have transparency to work well together. For instance, successful, distributed development requires a high level of collaboration and governed process so that teams do not overspend time and resource on micromanaging training, handoffs, and deliveries. Regulatory bodies around the world continue to force development organizations to provide traceability details about artifacts throughout their application teams, not just from a single development silo. Organizations are pinched for resources and hardware. The ability to reuse assets, share resources, and have a common model for integrating functionality becomes critical to staying competitive. Therefore, coordinating these development life-cycle activities and managing the relationships between development artifacts is a mandate for success.
xiii
In this IBM Redbooks publication, we examine Collaborative Application Lifecycle Management from the inside out by leveraging these state-of-the-art capabilities. We define a blueprint for CALM and provide details about the handoffs that occur in an iteration of a sample software development project. We provide a reference scenario and architecture that characterizes proof points for CALM business value. We offer a deployment model for IT organizations that are looking to evolve toward a successful, proven CALM model. The definitions, handoffs, and solutions that are described in this Redbooks publication are vendor neutral. However, we concentrate on products that are developed and delivered by the IBM Rational brand in order to show a reference architecture. Mike ORourke, Vice President, Rational Software Development
The team from left to right: Katur Patel, Mats Gthe, Brianna Smith, Khurram Nizami, Nail Yuce, Phil Monson, and Carolyn Pampino
Mats Gthe is a Solution Architect on the Rational Cross-Product Green Threads team. He is co-leading the Green Threads on Geographically Distributed Application Lifecycle Management. Mats joined Rational in 1991 and has held various positions, which include development manager for Rational Rose development in Sweden and Rational technical sales and service manager on the Ericsson Corporate Account team and in the Nordic region. Mats has a doctorate (PhD.) in physics from Uppsala University and is based in Kista, Sweden.
xiv
Carolyn Pampino is a Solution Architect on the Rational cross-product Green Threads team. She co-leads the geographically distributed Application Lifecycle Management green thread and was a co-lead for this Redbooks publication. Carolyn joined Rational in 2002 and has held various positions that influence brand strategy. These positions include serving as product manager for the Rational ClearQuest 7.1 ALM solution, transition manager for the Rational Build Forge acquisition, product manager for identifying and driving integration strategies with the Tivoli portfolio, and product manager for launching the Rational Professional Bundle. Prior to IBM, Carolyn was Director of Product Management, Development, and Competitive Intelligence at BroadVision, Inc. Prior to BroadVision, she was a Director of Development at Interleaf and contributed to the acquisition of Interleaf by BroadVision. Carolyn received her degree with University Honors from Carnegie-Mellon University. Philip Monson is a Business Development Project Leader for the ITSO. Phil has been with Lotus and IBM for 18 years, joining the company when the early versions of Lotus Notes were rolled out for internal use. He has served in management, technical, and consulting roles in the IT, Sales, and Development organizations. Khurram Nizami is responsible for worldwide enablement of Rational products. His expertise is in helping customers and IBM by applying practical solutions to challenges faced by the software delivery community today. Khurrams specialty and area of interest is Geographically Distributed Development (GDD). Prior to working for IBM, he was a manager for Cap Gemini Ernst & Young in the Systems Development and Integration practice, where he was a project manager and technical lead for a number of global software delivery projects. Khurram holds a Master of Science degree in Management of Technology from the University of Minnesota and is a PMI-certified Project Management Professional. Katur Patel is a Staff Software Engineer at for IBM Rational Software. He has held positions in the server technology group, working with TSO/E and Java on S/390, and was a developer in the 300mm Fab Test Solutions Center. He supported Rational ClearQuest as a technical support engineer before moving to his current role in the Customer Advocacy Group for the same product. As a Customer Advocacy Group engineer, Katur has developed expertise with the Rational ClearQuest schema design and integration with Rational Test Manager, MultiSite, and Web applications. He holds a Master of Science degree in Computer Science and a Graduate Certificate in Human Computer Interaction from Tufts University in Medford, Massachusetts. Brianna M. Smith has worked with Rational and IBM for nine years in various capacities as a Staff Software Engineer for the Requirements Customer Advocacy Group and a Delivery Engagement Manager. She has developed expertise in the Requirements Definition and Management discipline as it integrates across the CALM. She has aided organizations both within and outside IBM in end-to-end requirements process transformation and leveraged Rational tools to support these engagements. Brianna has also aided the RequisitePro product group in creating Rational RequisitePro project templates to support the Rational Unified Process (RUP), and Business Modeling Integration. Nail Yuce is a Rational Advisory Accredited IT Specialist in Turkey. He has been working for Rational for over four years. He has focused on Rational products, particularly Rational Software Architect, Rational Application Developer, Rational Build Forge, Rational ClearCase, Rational ClearQuest, Rational Performance Tester, and Rational Functional Tester. He has also worked with them in Proof of Concept, Proof of Technology, and support at customer sites in Turkey. He has a degree in Computer Science and Engineering from the University of Hacettepe, in Ankara, Turkey.
Preface
xv
Thanks to Scott Ambler, Practice Leader Agile Development, for IBM Rational Canada, for his contributions to this project. We also thank the following members of the IBM Software Group for their contributions to this book: Bruce Baron, Marketing Manager - Rational Project and Portfolio Management Douglas Bush, Information Developer, Requirements Management David Colasurdo, Senior Development Manager, Rational Quality Manager Dwayne Dreakford, Product Manager - Requirements Definition and Management Tim Feeney, TechWorks Practice Lead - Change & Release Management Carlos Ferreira, Rational Asset Manager Product Manager Richard Forziati, Staff Software Engineer Kevin Haaland, Jazz Project Development Lead Bryan Hogan, Software Developer, Rational Enterprise Tools Chris Kau, Lead Architect Lotus Workforce Management Mathieu Lapensee, Software Quality Advisor Grant Larsen, Senior Technical Staff Member - Chief Architect Asset Management Mario Maldari, RequisitePro Composer System Test Lead Brian Massey, Product Manager, Automated Software Quality Gili Mendel, Senior Technical Staff Member - Application Architect Elizabeth Miller, Senior Engineering Manager, Jazz Interop Daniel Moul, IBM Rational Offering Management Douglas Mueller, Manager, Rational Automated Software Quality Products Lynn Mueller, Senior Consultant, IBM Certified Executive IT Specialist Bob Myers, Rational Internal Deployment Architect Chibuzo Obi, Rational Engineering Services Tools Stuart W. Poulin, Customer/Partner Engagement Leader, Rational Enterprise Tools Sreedhar Rella, ClearQuest Software Developer Michael Saylor, Software Architect, Rational Software Configuration Management Nirav Sheth, Software Developer, Rational Software Configuration Management Dominique Simoneau-Ritchie, Software Developer, Java Paul Tasillo, Rational Test Lab Manager Chief Designer John Vasta, Team lead, ClearQuest Connectors Rick Weaver, Senior Manager, Rational Cross Product Green Threads Carol Yutkowitz, Senior Software Engineer, IBM Jazz Development Team
xvi
Comments welcome
Your comments are important to us! We want our books to be as helpful as possible. Send us your comments about this book or other IBM Redbooks in one of the following ways: Use the online Contact us review Redbooks form found at: ibm.com/redbooks Send your comments in an e-mail to: [email protected] Mail your comments to: IBM Corporation, International Technical Support Organization Dept. HYTD Mail Station P099 2455 South Road Poughkeepsie, NY 12601-5400
Preface
xvii
xviii
Part A
Part
Chapter 1.
1.1.1 People, process, information, and tools that drive the life cycle
In todays world, teams of people distributed around the world must collaborate on producing sophisticated business-critical applications in compressed time frames, while, in some cases, adhering to government regulations. The need to streamline a teams efficiency and govern without impeding progress is greater than at any point in the history of software development. Products must be introduced to market to respond to a changing competitive landscape, and Web sites must be updated constantly to remain fresh and interesting. The life span of software applications has shortened, and demand has dramatically increased. Software development teams must produce meaningful and competitive products at an unprecedented rate. In this environment, teams can no longer act in silos where one team throws a solution over the wall for the next team to integrate, test, or deploy. Nor can the disciplines of software development be treated as silos where one team member only manages requirements, while another only develops the source code or only tests the software. Business demands software that meets the needs of the user. Operations teams must know how to manage these applications and respond to problems. Business analysts are more involved in the development process. Architects need to understand the architectural principles, patterns, and requirements set forth by the enterprise architecture. Developers must understand the stakeholders needs, the business processes, design, and reuse assets, as well as implement and test the system. Testers are closely aligned with business analysts to ensure high quality, customer-driven software applications. As a result, teams that develop internal IT systems and Internet applications take a much different approach to software development by using techniques for agile development, mock-ups, fast paced iterations, and increased interactions with stakeholders. Software development teams must be aware of and respond to customer demands. In addition, teams no longer have the luxury of 18- to 24-month development cycles where every detail is deeply analyzed and designed. Waterfall approaches to software development have given way to agile approaches with short iterations. Built-in feedback loops are necessary for producing software for the target users. ALM is the vehicle that not only brings these disciplines and team members together, it drives the transparency of their progress and governs how the team works. Todays software development teams cannot function without it. At the heart of ALM lies a coordinated set of contributions between team members. This coordination involves people, process, information, and tools with the underlying aspects of transparency and shared responsibility for success. Within this context, teams are self-configuring. The simplest view of this definition, as illustrated in Figure 1-1 on page 5, involves a series of contributions between team members. While this might be an overly simplified view, it gets to the heart of the matter: What one team member produces, another team member consumes. Understanding these dependencies helps a project team to
organize their efforts, streamline their ability to produce software, and produce a healthy software development environment.
People
Process
Collaborator
Produces
Collaborator
References
Information
Tools
Collaborator
Figure 1-1 The coordination of people, process, information, and tools in ALM
If we agree that at the heart of ALM lies a coordinated set of handoffs between team members, then the importance of the key fundamentals becomes abundantly clear: People collaborate. Teams self-organize. Collaboration between team members is critical to successful contributions. Many times one team member has work to complete that requires referencing or reusing the work of another team member. By collaborating, team members gain better insight and understanding into how to approach completing or refining their own work, and the entire team stays current. Collaboration, however, requires trust, and trust develops through experience. Teams that self-organize leverage their trust to build a culture where they can flourish. In this environment, collaboration comes naturally. Process facilitates the flow of events or timing of what work is completed when. A group of musicians does not play their instruments all at once. Rather, their parts are orchestrated so that the combination of events produces a melody. Process enactment provides the cue to each team member of when it is time to play their part. Plans organize the scope of work to be addressed and by whom. A concert does not involve all work being performed at once. Rather a concert program is defined with an ordered set of songs to produce the most effective overall experience, and all musicians work from the same program. In software development, iterations set the cadence. Plans are used to scope the level of effort and to determine what work will be completed when, with a focus on achieving a specific goal or goals. However, project planning is a continuous effort that depends on transparency and involves evaluating the current situation and making course corrections. Therefore, transparency into real-time performance of the team is for creating plans to respond to current events. Transparency leads to health when the lead and team respond to current events by balancing the workload or changing the plan accordingly. A skeleton plan can, in some cases, come from the top down, but the reality comes from the bottom
up as each team member assumes ownership and contributes their talent to filling out the plan. Information is shared in repositories. Repositories for storing the teams assets are shared across the team. It does not do any good for a team member to produce a critical piece of information and store it on their personal computer. Nor does it do any good to store that information in a repository to which other team members do not have access. Tools are specific to the users task. A team member who produces a rich requirements storyboard is different from the developer who produces the source code to implement the story. Each user requires a tool that suits their need. These basics can be confusing when the word life cycle is brought into the picture. After all, the team, the process, and what constitutes the beginning and end of the life cycle inherently drive a level of detail that differs from project to project and organization to organization. These details can be determined only when the boundaries and context for the life cycle are well understood. Herein lies the challenge. The definition of the life cycle depends on the nature and the context of its use. For example, application lifecycle is sometimes used inter-changeably with software development lifecycle (SDLC), whose acronym can also be defined as systems development lifecycle. As new business needs, technologies, and approaches have surfaced, the needs and expectations in the ALM market have changed. Recently the term IT Lifecycle Management entered the market to describe the alignment of business, development, and IT operations. In IT Lifecycle Management, the cycle begins with business needs and extends to the operations team monitoring an application in production. Some use the term Application Lifecycle Management to define this same IT cycle. Product Lifecycle Management addresses the complexities that are involved in managing physical products that contain software in addition to the physical parts that comprise the product. Portfolio management, enterprise architecture, and governance have also broadened the scope of the software development market with needs specific to each domain. With our view of software development expanding to include these new domains, some boundaries must be put in place to create a meaningful book. Regardless of the size of definition of the life cycle, the fundamental need for a coordinated set of handoffs between team members remains the same.
Inception
Iteration 0
Initial Project Scope
Elaboration
Iteration 1
Drive out technical risk
Construction
Iteration Iteration Iteration Iteration 2 3
Demo and obtain feedback
Transition
Iteration Iteration
Stabilization test
Production
Iteration
Monitor and manage
Accumulated Requests
Even within a single iteration, it is easy to get lost in the details of requirements management, change management, asset management collaborative development, build management, and quality management. Therefore, we selected a scenario that touches on each of these disciplines in the simplest of terms, with the intent of highlighting the relationships across disciplines, rather than highlighting the details within a single discipline. For example, rather than provide details about every aspect of change management, we demonstrate how a single change request impacts the activity of the rest of the team, from iteration planning, requirements definition, asset reuse, development, build, and quality management to final delivery. Our exploration of each discipline is enough to highlight the interaction points across the disciplines. The intent of this book is to show how ALM helps to streamline a teams ability to produce a release of software by examining a single iteration. By limiting the scope of the discussion, you can focus on the core value, rather than become lost or overwhelmed by the complexities that are involved in every discipline that participates in the life cycle. Clearly every organization defines the cycle differently. Different vocabularies are used. Some organizations apply more process, while others are more lenient. Some use sophisticated asset management techniques to perform impact analysis, where others reuse assets in an ad hoc manner. Some use agile techniques, while others follow traditional development patterns. It is impossible to cover every aspect of the application lifecycle. To produce this book, we have limited the scope of the discussion to a single path through an iteration, which is referred to as the scenario throughout the remainder of this book.
Figure 1-3 uses heavy black ellipses to indicate how a single change request impacts each of the software disciplines.
Development
Integration Build
Integration Build
Test Highest priority Work items Initial Project Scope Iteration Work-items Tasks Develop and Build
Deliver
Bill of Materials
Accumulated Requests
Validates
Requirements
Quality Management
Requests
Plan
Requests
Iteration
Figure 1-3 shows the following sequence of actions: 1. On the far left, the product owner prioritizes the accumulated requests for the new project. The dark black circle represents the request that we trace through the iteration. 2. The requests are added to the project stack as work items and prioritized. 3. The highest priority work items are added to the iteration plan. In this case, the request of interest is the highest priority and, therefore, at the top of the stack. 4. One work item requires work from several areas to be completed: a. Detailed requirements are provided to clarify the request. b. The development team collaborates on understanding the requirements, discovers a reusable asset, and then develops, tests, and delivers the source code to the integration build. c. The integration build integrates the changes of several component teams into a single solution build. The bill of materials lists the changes that are delivered in the build. a. The test team manages the quality of the integrated solution. The test plan includes the requirement or requirements that must be verified. Test cases are written to satisfy the requirement or requirements. These test cases are executed against a build running in a specific hardware configuration. The test results are evaluated. 5. A defect is submitted and treated as a new request. If the team plans to fix the defect in the current iteration, the defect is added to the iteration work-item stack, as illustrated in Figure 1-3. Defects that will be fixed in a future iteration are added to the project stack or a future iteration plan. Otherwise, the defect is added to the stack of accumulated requests to be addressed in a future project. 8
Collaborative Application Lifecycle Management with IBM Rational Products
Review
6. At the end of an iteration, the team meets the acceptance criteria and delivers a working solution. Subsequent iterations build on the functionality until the final solution is delivered. The choice of tools to implement the scenario largely depends on the size of the team, the existing tools investment, development processes, and the complexity of the solution under development. As shown in Figure 1-4, the team size can range from a small startup team to an interconnected team of teams in a global enterprise.
High Ceremony System of Projects Project Complexity
Low Ceremony
Independent Projects
The set of tools that is selected to support the reference scenario supports an interconnected team of teams in a global enterprise, where project complexity and process ceremony tend toward the high side. Figure 1-5 shows the products that are used in the reference scenario.
IBM Rational RequisitePro IBM Rational Requirements Composer
Manage requirements
Create sketch
Link to requirements
Plan tests IBM Rational Quality Manager with work item Test integration build WatchFire AppScan integrated
QM
Submit defect
The reference scenario shown in Figure 1-5 uses the following products: The project manager uses Rational ClearQuest 7.1.0.0 and a new ALM Schema with integrations to Rational Team Concert 1.0 and Rational Quality Manager 8.0.0.0. Rational ClearQuest is used as an information hub in this scenario and is the repository where new requests are submitted. The product owner uses Rational Requirements Composer 7.1.0.0 to define and illustrate storyboard requirements. The product owner also uses Rational RequisitePro 7.1.0.0 to manage and trace requirements. The requirements in RequisitePro are linked back to Rational ClearQuest to establish a traceability link between the request, the work, and the detailed requirements. The solution architect uses Rational Asset Manager 7.1.0.1 to discover and reuse an existing asset. The agile development team uses this asset as a base for the source code that is required to develop the change request. An agile development team uses Rational Team Concert to develop, unit test, and build the software component. Rational Team Concert is integrated with ClearQuest and ClearCase. An integration with Rational Asset Manager is also provided, although it is not shown in Figure 1-5. The release engineer uses IBM Rational Build Forge Enterprise Edition 7.1.0.0 with adapters to IBM Rational ClearCase, ClearQuest, and Rational Software Analyzer 7.0.0.0 to automate the entire build process. Rational ClearCase uses the ClearCase Connector to Rational Team Concert and manages the source for the entire solution. Rational
10
ClearCase manages the solution source code. Source code from Rational Team Concert is copied to Rational ClearCase by using the ClearCase Connector. Rational Quality Manager with integrations to ClearQuest, RequisitePro, and Rational AppScan (version to be determined (TBD)) is used by the test team to plan, manage, construct, execute, and analyze the testing effort. The following products are referenced, but no detailed information is provided: Rational Functional Tester 8.0.0.0 Rational Performance Tester 8.0.0.0 Rational Services Tester 8.0.0.0 Rational Policy Tester (version TBD)
It is our hope and intention to cover a scenario that the majority of you can relate to, with full knowledge that we are unable to cover every case.
11
Act
The business owner submits a request for the current iteration. The impacted team leads update their plans, and Patricia updates the solution iteration plan.
2.4 Diedrie develops, builds, and tests her changes 2.5 Diedrie conducts a team build and delivers for integration build
Scene
The agile team develops, validates and builds the required changes to their component in the solution. The component is delivered to the solution integration.
Al Solution Architect
Diedrie Developer
Each part of this book corresponds to one of the acts in the storyboard. The following parts provide a synopsis of each of the acts as illustrated in Figure 1-6: Part B, Act 1: Responding to a change request on page 77 Part C, Act 2: Collaborative development on page 211 Part D, Act 3: Enterprise integration builds on page 313 Part E, Act 4: Managing quality on page 387 Part F, Act 5: Delivering the solution on page 479 Each of these parts comprises two chapters. The first chapter in Parts B through F, which we refer to as the about chapter, introduces the discipline or disciplines that come into play in the act. It discusses the current market forces and presents a blueprint for that discipline. The reference scenario is introduced along with additional considerations for that discipline. The second chapter in Parts B through F, which we refer to as the using chapter, describes the tools that are used, followed by a set of instructions for using the tool to complete the scenario. As stated earlier, ALM is all about the handoffs that occur across the disciplines. Therefore, a summary section called Lifecycle collaboration is provided to help you understand the assets that are created in the act and how they relate to assets that are referenced in the other acts. We also provide sections on measuring success and problem determination.
12
Project managers or team leads who have ownership in the delivery of complete application solutions, or components into larger solution, will find value in understanding the overall scenario provided in this book. The book clarifies the needs and benefits within ALM that can help to identify areas of improvement across a team. It also addresses the typical patterns in adopting ALM principles. Tool administrators who have ownership of the deployment and maintenance of development
platforms will find the reference architecture and problem determination sections of value. The book clarifies the deployment best practices and configurations. It also enumerates alternative approaches and suggestions on trouble resolution. Individuals who specialize in a specific discipline, such as requirements management, development, release engineering, and testing, and who seek an understanding of how their discipline fits into overall project effort will find value in a specific part of this book. This book can also be a source for inspiration and reference for senior line of business and development managers for deepening their understanding of ALM and the capabilities that it can unlock in the IT organization. We consider this book an important guide for teams who are maturing their approaches to software delivery, by stepping up from source code management to change, quality, and release management. We also consider this book to be an important complement to information about the Jazz products by illustrating how a team already on the Rational Delivery Platform, including Rational ClearCase and ClearQuest, can adopt Rational Team Concert. To learn more about the Jazz products, see the following Web site: http://jazz.net To further facilitate the reading of the book, we provide a role-based guide in Table 1-1 on page 14, based on the key shown in Figure 1-7, to the sections of interest to those of you who perform a specific role. We use the smaller icon, which is shown in the lower right corner in Figure 1-7 in the role map in Table 1-1 on page 14, to indicate the topics of interest.
Figure 1-7 A guide to the topics of interest in the about and using chapters in Parts B to F
13
The first chapter of each part (the about chapter) is indicated in light blue (upper half of the map). It includes a square for the Introduction and bueprint section and a square for the Scenario and considerations section. The second chapter of each part (the using chapter) is indicated in dark blue (lower half of the map). It includes a square for the Using the solution section and a square for the Configuring and troubleshooting the solution section. For each role, the icon demonstrates which chapter (indicated by light or dark blue) and which topics (indicated by a left or right square) are suggested reading material. For example, the small icon on the right in Figure 1-7 suggests that the Introduction and blueprint section in the About chapter is of interest. The topics of less interest are shaded in light gray. Table 1-1 provides a map for each role to the suggested sections of interest. Refer back to this table to help you understand how the content of each chapter applies to your role.
Table 1-1 Suggested reading by role Role Part A
Introduction
Part B
Change management
Part C
Collaborative development
Part D
Enterprise iIntegration
Part E
Quality management
Part F
Delivery
CxO
Product owners
Project lead
Architect
Developers
Release engineers
Testers
Tool administrators
14
Chapter 2.
15
16
software development team. While this approach was successful at broadening the definition of the software development team, a side-effect of this role-based approach led to silos of capability. As such, development managers invested in the best-of-breed solution for their particular discipline. Then the shift occurred. The Internet blossomed, and software became a household norm. It was no longer restricted to the few who had access. Software was everywhere. Schools, healthcare facilities, nonprofit organizations, households, and others all had access to the Internet. In addition to critical IT applications, software proliferated into common household devices, mobile phones, appliances, machines, and complex systems. Software has become a part of daily life, and as such is driving revenue for the business. The connectivity provided by the Internet has had a direct impact on business-to-business and business-to-consumer transactions and processes. This has driven a quantum leap on software demands to automate, implement, integrate, and manage these new business processes. The demand to realize these processes, required for the competitiveness in the new online economy, has created a fundamental shift in the business context for creating software. The context for conducting business has changed in several dimensions: The focus is on business outcomes. The business, development, and operations teams must now collaborate to produce and manage software solutions that will keep them competitive in a global market that is open and active 24 hours a day, every day of the week. The software services provided by the IT organization must align with business needs while conforming to a larger IT strategy. The development team provides the service to the business. Distributed development is commonplace. Teams are distributed across many geographic regions, from people who work from home offices to offshore and outsource partners. Additionally leadership is also distributed with organizationally distributed teams. Co-location is rare, and team distribution is the now the norm. Teams must learn new strategies for working across geographic boundaries. For example, some teams have learned to follow the sun, where work completed by a team in one time zone is handed off to team members in the next time zone, where there are several hours left to the work day. An example of the extended work day is where the work starts in China, is handed to India, is then given to the eastern United States, is sent next to the western United States, and starts again in China. In each transition, several hours are added to the work day. This is an extreme case, but in some situations, such time-zone crossing activities, when used wisely, can considerably decrease the time to market. Platforms and application families or suites are the norm. ALM solutions have evolved from point products to application suites, and many companies have invested in these suites. Intellectual property is managed by these repositories. ALM solutions must work with these existing repositories while introducing new approaches to managing the software assets. In addition, strategies for software development governance and enterprise architectures place additional emphasis on cross-repository integration and sharing. Packaged applications and existing application integration are the norm. Solutions must be produced and deployed quickly. The days of home-grown solutions are quickly vanishing. While software solutions might be driving revenue, software is not necessarily a core competency of the business developing that software. For example, a pharmaceutical company is interested in investing in and developing solutions that are pharmaceutically related such as developing a new drug or medical device. The product is the drug or medical device, not the software that helps get them
17
there. Therefore, enterprises are increasingly reaching for packaged applications that can be configured and deployed quickly without having a vast team of developers writing thousands of lines of code. Audit and compliance are business imperatives. Regulatory compliance issues impact many enterprises around the world. Teams must understand which regulations, if any, they must comply with before digging into the details of knowing what it means to be compliant. When understood, proper measures can be put in place to ensure that software development practices do not result in regulatory penalties. Regulatory compliance is a reality that requires organizations to govern how they run their business with an unprecedented audit trail. Organizations must have policies and be able to prove that the policies are enforced. For development organizations, this means that they must be able to prove what changes went into a release of software, how it was tested and with what result, how it was built, and where it was deployed. They might even be asked to reproduce a version of software that was deployed several years ago. It is no longer good enough to provide a tool for each role. Now the assets created by the team must be traceable with each new release.
Figure 2-1. It is no longer good enough for a development team to throw the solution over the wall to the testers. Instead businesses seek to continually align software initiatives with business imperatives. At the same time, the competitive landscape demands business agility, and business agility in turn demands software development agility.
Continuous portfolio and Application Lifecycle Management aligned with business imperatives
FOCUS
Team productivity via change, quality, and release management Design and construction
Cross organizational process and project management with an emphasis on collaboration and asset utilization
Software delivery
Resource availability
Software "Supply Chains"
SCOPE
Figure 2-1 Business goals evolving toward the ALM of the portfolio
Software development, in effect, provides a service to the business. Successfully executing software development projects that are aligned with business imperatives provides a competitive advantage in the global marketplace. Todays software delivery challenges are mounting as the number of projects increases and the applications become more complex.
Greater challenges
While the business seeks to improve efficiency or a competitive advantage, the challenges imposed on the development team are difficult to overcome. Teams are confronted with awareness, organizational, functional, geographic, and technological barriers.
Awareness barriers
Perhaps the biggest challenge in developing software is awareness. Each discipline has its own set of tools and repositories for managing their assets. As such, it is difficult for teams to collaborate and align their efforts. Yet information about the project, the teams, and the build is critical to successfully manage the solution through the life cycle: Project awareness With project teams distributed around the world, collecting project metrics is extremely difficult. The rate of change requires the management of multiple releases and immediate re-tooling to support fixing a high priority defect in the production system. Tracking the work of all of the individuals on the team who are distributed around the world and working on concurrent multiple releases is critical to your success, yet ripe for chaos and lack of clarity. Team awareness Amidst this chaos, individual team members must learn to effectively change context as they move from one project to another, or from release to release. Individual team members need awareness about the team they are joining and its culture, policies, and
Chapter 2. Collaborative Application Lifecycle Management
19
best practices. They also need to know how to configure their environment for the project, how to share changes, and how the team as a whole is progressing. In essence, individuals need awareness on how they can fit in and contribute to the teams success. Build awareness The build has a tendency to be a black box. Knowing what is planned for the next build ensures that testers are ready with test cases and test scripts when the build arrives. Also it important that the team has awareness in regard to the changes that have been implemented in the build and the defects that have been fixed. This awareness helps the test team to target their test efforts to create and use meaningful test cases. When builds fail, the team must understand the context of the failure to quickly and efficiently resolve the problem.
Organizational barriers
Unfortunately organizational boundaries tend to prevent teams from collaborating as freely as they need to be successful. False boundaries tend to prevent cross-team visibility and interaction. Embedded organizational cultures, politics, and a lack of management support can impede progress. Teams must overcome these organizational barriers to produce successful solutions.
Functional barriers
Software development starts with a focus on individual roles and practitioners. As a result, there is a wide variety of tools for each discipline. As each discipline in the organization grows, tool and vendor choices are made that best serve the needs of that discipline. Managers who are responsible for the ALM solution are faced with the complex task of integrating multiple teams using different tools from multiple vendors.
Geographical barriers
With teams distributed around the world, multiple barriers come into play. Team members must collaborate to complete their work. They must have access to the work of the other team members. Wide area networks (WANs) with high bandwidth in all geographic locations are a must. Even if these barriers are overcome, team members must adjust to understanding how and when to communicate with each other and gain respect for each others cultures.
Technology barriers
Service-oriented architectures (SOAs) demand a new approach to software development with a whole new skill set. Organizations are faced with the challenge of retraining personnel, which can be costly and time consuming. With this transition in coding practices, combined with the offshoring and outsourcing of development efforts, a wide range of coding practices and techniques is introduced. Managers are confronted with the need to institute coding best practices and source code analysis to ensure a level of consistency in the source code. As enterprises seek to develop and implement enterprise architectures, the need for consistency across business units becomes an imperative. Having multiple teams implement the same type of service in slightly different ways is not only time consuming and inefficient, it can lead to stakeholder confusion. Users who are confronted with the multiple approaches might perceive the enterprise as being disjointed. Such perceptions can lead to a loss of business. Establishing consistency and reuse across solutions is an important barrier to overcome.
20
business and IT operations together. Service level agreements (SLAs) are made to ensure that the software will be available to serve the business needs. Additionally the development teams and operations teams must be aware of each others needs. The development teams must understand the operational constraints of the solution they are producing. They must also know the details of the solution that can help the operations team more successfully monitor and manage the solution. The business, development and operations teams must collaborate to remain competitive. Figure 2-2 provides the building blocks for this discussion based on an IT organization. Software is developed for users and in the context of a business: Business owners request new solutions from the IT organization. IT strategy, development, and operations serve the business by producing and managing software solutions.
The Business
IT Strategy
Development
Users
IT Operations
Figure 2-2 Software development in the context of the business, strategy, and operations
21
As shown in Figure 2-3, product owners focus on their customers needs and driving new revenue. This figure also shows consumers of the software who are often referred to as users or stakeholders. The users of the system want to complete specific tasks in the most simple, convenient, and efficient manner. A user who buys a product from a Web site has a goal of locating, purchasing, and receiving the item that they purchase. Errors, inconveniences, or flaws are reported to the product owner who is responsible for that line of business.
The Business
Proposals, Requirements
Requests
Users
Figure 2-3 Users making requests of the business and the business owner creating proposals
The user requests are captured by the business owner. These requests and market assessments contribute to the creation of new business strategies. The business owners look for new revenue opportunities and create proposals for how software solutions can improve their revenue. This side wants to deliver value to the business. The result is the creation of a proposal (business case) for a new or upgraded business system. This occurs in the line of business. However collaboration with members of the IT team can take place. As illustrated in Figure 2-4, the proposal is sent to a board that manages the portfolio. Here, the projects proposed by the lines of business are compared and evaluated. Proposals are reviewed against the rest of the portfolio and examined in the context of the enterprise architecture. The approved proposal that contains the approved set of requirements, along with the guidance or constraints of the enterprise architecture, are provided to a development team that is tasked with implementing a solution.
The Business
Proposals, Requirements
IT Strategy
Figure 2-4 Proposals evaluated in context of the portfolio and the enterprise architecture
22
In Figure 2-5, funded projects move into development, where the software is designed, implemented, and tested. The development, business, and operations teams come to agreement on a set of software requirements and acceptance criteria, which relate back to the initial business proposal that was created by the line of business. Iterations involving design, implementation, and testing take place until a release candidate is deemed ready for operations. These iterations include requirements elaboration, design, development, and testing.
The Business
Proposals, Requirements
IT Strategy
Requests
Development
Status
Solution Build
Defects
Feedback loops ensure continuous improvement. For example, a defect found during testing is sent back to development where it is fixed, and a new build is delivered to the test organization. Throughout this process, status reports and metrics are used to govern the release and to compare the project against the rest of the portfolio. When the solution team has implemented and tested all of the requirements, a release candidate is given to operations.
23
A release candidate transitions through multiple test environments, such as integration, system, security, performance, and acceptance testing, before being approved for production. In Figure 2-6, the line between quality management and transition is a gradient of ownership between development and operations from one enterprise to the next. At some point, however, the readiness of the release candidate is approved, and the solution is deployed into production. The IT Information Library defines the release management process for managing the deployment of large releases.
The Business
Proposals, Requirements
IT Strategy
Requests
Development
Status
Solution Build
Defects
Users
IT Operations
Release Candidate
Release
After the solution is rolled into production, it is monitored and managed by the operations team. Problems found by operations are reported, prioritized, and assessed. The IT Information Library defines the change management process for handling a request for change. The IT life cycle continues with SLAs, and capacity plans are negotiated between operations and the line of business. Given this view of the IT life cycle, the scope of this book resides in the development domain, which is highlighted in green in Figure 2-6. Portfolio management, enterprise architecture, and IT operations are not within the scope of this book. Figure 2-6 illustrates two major organizations in an enterprise. The disciplines of change and requirements management, analysis and design, collaborative development, build and release management, and quality management are all contained within the development organization.
24
their work. The Lifecycle Service Integration layer provides the platform for integrating the entire team and the various repositories.
Enterprise Architecture
Business value
Discipline-specific pluggable modules Deep functionality Eclipse and Web UI based on need
Discipline-Specific Modules
Architecture Management and Reuse Requirements Management and Definition Collaborative Development Enterprise Build Management Quality Management
Team Member
Managers
25
It is one thing to have an accurate read on one project, but it is quite another to see accurate information across multiple projects that leverage many repositories for storing data. This birds-eye view of software development helps managers to more accurately identify which projects are succeeding from those that need additional attention. As businesses seek to streamline their development organizations and manage entire portfolios, a common reporting platform across the enterprise is critical to successful planning, execution, and governance of software development projects. Enterprises need to deploy a consistent set of reports and dashboards that measure project health and status. Such a reporting platform should leverage industry standard data access and storage methods and be extensible to include third-party data, business intelligence, and reporting tools.
Discipline-specific modules
In this new world of CALM, there is still a need for targeted functionality. The difference is that these modules plug into an integration platform, so that the assets produced by one team member can be consumed by another. In Eclipse, there are views that contain the discipline-specific user interfaces. By changing a view in Eclipse, you have access to an entirely new set of functions. In a similar vein, the management of assets requires pluggable modules for each of the disciplines. Each module provides the functionality that is needed to perform that discipline. A team can pick and choose from the modules that they want to deploy for their projects.
Requirements management
The discipline of requirements management begins after the business has documented and prioritized the direction and business needs of the solution. The business provides a project proposal that captures the vision, stakeholder goals, and business plan for the solution. On the development team, the analyst uses the proposal to define the requirements in a form that the development team can act on. Where the business details the need, the analyst defines what the solution must do. In some cases, as in this book, the business owner and the analyst roles are performed by the same person. On agile teams, the product owner and developers often collaborate on analyst-related activities. The analyst uses a battery of techniques to drive to the next level of detail for the development team, from business process models with predefined key performance indicators, to sketches, storyboards, keywords, process flows, and diagrams. Rich text and images live side by side to help analysts convey their needs by using a rich and detailed vocabulary. The analyst works closely with the business to ensure that the detail they are providing meets the initial intention of the business owner. Those details that have been confirmed by stakeholders are then organized, managed, and tracked as requirements. Requirements are assessed to ensure completion, accuracy, and traceability. 26
Collaborative Application Lifecycle Management with IBM Rational Products
Analysts must be able to enrich requirements with sketches, storyboards, and business process flows; to manage requirements over time and across the life cycle; and to collaborate with the business stakeholders to ensure that they capture the right requirement.
Collaborative development
Software is the result of countless conversations. Development has become a team sport where teams of developers, often geographically distributed, develop great software in concert. Co-located or geographically distributed team members require a new set of collaborative development principles and tools. A key capability in collaborative development is to open information to external contributors. Product owners, analysts, program office, and other cross-organizational stakeholders need easy access to project information to provide timely input. Development teams need a central repository that supports their geographic distribution. Source code, work item management for iteration planning, and build management are all important aspects of collaborative development. Teams need insight into the project status to enable them to respond to change and track project health.
Quality management
Quality management is a shared discipline across the organization, where the development team (developers and testers alike) seeks to understand the business and delivers what the business needs. With quality management, every team member contributes to the quality of the release. The business owner tests the requirements with their stakeholders. Architects test the architecture against the requirements and the operational constraints. The developers test their change to the code before delivering their changes. The release engineering team conducts build verification tests to confirm the quality of the build before staging it for the test team. The test team conducts manual, functional, performance, security, and services tests against the solution to validate that the implementation against the requirements. The solution leads test the release against a set of exit criteria prior to approving it for operations.
27
Storing test assets on a file system is no longer acceptable. As the name quality management implies, all test assets must be managed in a meaningful and constructive manner. The test effort itself involves planning the effort, constructing the test cases that were planned, and executing test cases against a build that has been deployed in the test lab. Testers also own a set of test servers in a test lab. Knowing which servers are in the lab, which are available, and how they are currently configured is a critical element of the test effort. Analyzing the results of the effort and identifying strategies for improvement are also involved. By having the assets managed and by executing against a plan, the test team can streamline their work, reduce redundant efforts, analyze the results, and track and report their progress.
28
solutions are key to the success of how an organization approaches their governance efforts. Software development governance solutions should also be enactable within the development environment to enable broad adoption of the solutions within the governed organization. The effectiveness of software development governance is ultimately measured in the incremental value experienced by the business that has been bolstered by the software that is being produced with the governed development process. Enterprise architecture is a methodology to organize business processes and IT infrastructure as a way to reflect an organizations operational model. Enterprise architects play a key role in organizing and aligning IT investments with business strategy. The practice of enterprise architecture has also evolved into a broad category of activities that are designed to understand, optimize, and communicate the structure and relationships between various business entities and elements. Included in these practices are business architecture, performance management, organizational structure, and process architecture. Actionable enterprise architecture is a focus on using enterprise architectures to effectively drive solution implementation across an organization and improve business performance and productivity.
Business
Operations
Enterprise Architecture
Align IT architecture and technology with business strategy Describe, optimize, and communicate architectural models (for example, business, data, applications, and deployment) and their relationships across an organization Streamline delivery of solutions through actionable enterprise architectures
29
Collaborative Application Lifecycle Management The coordination of development activities to produce software applications The life-cycle management of assets and their relationships
Success Indicators Collaboration Connect stakeholders and contributors Distribution Connect software delivery chain Traceability Manage dependencies and impact Automation Improve performance, compliance, and quality
Collaboration
The collaborator is the new role. While each discipline has a set of best practices and common approaches, CALM focuses on the synchronization of the entire team and the handoffs that occur across domains. These integration points facilitate a streamlined development process, or when they are missing, create friction and chaos among the team members. With CALM, it is not satisfactory for a team member to work in a vacuum, solely focused on completing their own tasks. Rather, CALM demands collaboration across team members. By having all team members aware of what the others are doing, choices can be made that best facilitate the progress of the whole. Members of a soccer team must collaborate to move the ball down the field, or to prevent the opposition from scoring. If each team member acted alone without regard for the other players on the field, their chances for success are reduced dramatically. To improve their chances o f winning, they synchronize their moves to respond to 30
Collaborative Application Lifecycle Management with IBM Rational Products
the current situation on the field. All team members must be adept in all of the skills required to play the game. Similarly, software development is a team sport. Being successful in software development does not mean that you act alone as an analyst, developer, and tester with total disregard for the others. Today, the best team members are the collaborators. Collaborators work with each other and respond to the current situation on the project. The agilists were the first to discover this new power of collaboration. Now everyone realizes the need. Software solutions are the product of many conversations. Team members must be able to interact in many ways as shown in the following examples: Team awareness enables teams to know who is online so that they can have a discussion. Instant messaging enables team members to instantly communicate regardless of their geographic location. The system tracks the users and whether they are online, thus enabling others to right-click a user name wherever it appears and begin an instant message session. An example is a developer who collaborates with a tester over a defect. With RSS Feeds, team members can subscribe to and be notified about events that occur within the repository. Users can subscribe to an artifact and receive notification when someone has made changes, or users can subscribe to the build process or other system level events to receive updated notifications. Ratings enable teams to rate the quality or value of a managed resource, thus providing a community view of the perceived value. Poorly rated assets can be improved upon, while highly rated assets are used more often, thus improving the overall quality of the shared assets. Tagging enable individuals to tag resources and search on those tags. This frees individuals from relying solely on queries or predefined attributes. Users can tag names that are meaningful to their current work or classification system, thus making it easier to locate assets at the time they are needed. A CALM solution must support people regardless of who they are and where they are. It must also support their conversations and the assets that they create as a result of these conversations.
Distribution
The support for flexible and agile business sourcing decisions requires a global enterprise CALM platform to integrate distributed roles, teams, workflows, and repositories into a responsive software delivery chain. Geographically distributed teams are the norm in software development today. Whether team members are in different offices in the same country or different countries, are working from home, or are a trusted third-party provider, development teams are rarely co-located. A CALM solution must take this into consideration by providing high-speed WAN access to all members. Additionally, the rise of outsourcing work to third-party providers introduces the need for high security standards on the repositories housing the intellectual property. Access to, and visibility of assets within, the repositories must be controlled. Not only are the teams distributed, but the systems that manage the assets are also distributed throughout the enterprise. There is a natural tension between the need for a consolidated repository versus supporting existing investments in role-specific repositories. Fundamental to both of these needs is a critical demand to harness the chaos and complexity inherent in managing the life cycle for software solutions. Many customers view having a repository to manage all of the assets that are created during the software development
Chapter 2. Collaborative Application Lifecycle Management
31
process as a means to this end. However, they have already invested in point solutions across multiple vendors. A CALM solution must connect the people wherever they are located with the assets that they need regardless of where those assets are stored.
Traceability
Traceability involves including links to other resources both internal and external to the repository. The Internet has made the value of linking pages of information obvious. In software development, the ability to link to related resources becomes a fundamental need in completing daily tasks. For example, in writing a test case, a tester must be able to view the requirement that the test will validate. The ability to click a link to the requirement in the context of the task streamlines and simplifies their ability to complete the test case. Traceability also involves being able to traverse the relationships between resources in a system. For example, having traceable artifacts enables an analyst to ask the system to show how many test cases are written for a specific requirement. Another example is to understand how many defects exist for a specific requirement, such as a use case, feature, or enhancement request. Traceability also enables a team to respond to a regulatory compliance audit. By having traceable resources, a team can more easily respond to the auditors questions regarding the number of changes that went into a release, how the changes tested, and the results of the testing. Traceability streamlines our ability to access resources in context of the work that we are attempting to complete. It also enables us to understand the relationships and dependencies between assets.
Automation
By definition, CALM involves managing a cycle. However, it is more interesting to note that there are cycles within cycles for a single software project. Some of the tasks that are completed by the team are creative in nature and require our attention and skill to resolve. Other tasks, however, are noncreative and repetitive. These noncreative tasks are ripe for automation. Test automation is a prime example and has been around for many years. Many other forms of automation can be applied to streamline the life cycle. For example, build automation clearly brings enormous value to team members by extending the definition of conducting the build to automating the preparation of the build system, applying baselines to source control systems, conducting the build, running build verification tests, and packaging and staging the distribution archive for the test team. Kicking off the build can now include the full process thanks to automation. Automation can also include scanning such as conducting static analysis on the source code. A static analysis scan can be conducted by developers prior to delivering their changes, or it can be added to the build process prior to compilation. This type of analysis improves the quality of the code, ensures consistency across the code base, and makes static analysis a normal operating procedure. Security and compliance scans can be run against a running application to consistently test the application against a predefined set of criteria. These scans work in a manner similar to virus scanning applications on a home PC. The definition files are created and maintained by the vendor. Organizations that use the scanning software keep their definition files up to date and then run scans against their applications. The scanning software produces the result of the scan, and identified problems can be resolved before releasing the application into production. 32
Collaborative Application Lifecycle Management with IBM Rational Products
Security scans test against a known set of tactics that are used by hackers. By using this type of automation, an enterprise can identify potential threats and close them prior to going to production. Compliance scans work in a similar manner, but test against certain regulations. The organization chooses the regulation with which they must comply and run the scanning solution against their application. The scan identifies areas of noncompliance, thus enabling the team to respond to potential violations. A CALM solution must facilitate the ability to automate noncreative, repetitive tasks, while capturing the results of the automated process in a meaningful and traceable manner.
Continuous improvement
If CALM seeks to streamline the effectiveness of a software development team, then this team must continually seek areas of improvement. Continuous planning, integration, and testing are three important strategies to take into consideration.
33
acting on ideas and implementing the improvements, teams trend toward healthy interactions and higher quality deliveries. For more information about retrospectives, see the following Web site developed by Norm Kerth: http://www.retrospectives.com
Integration
Continuous integration can occur at several levels, including the developer, team build, and solution build levels. As a best practice, developers implement, build, and test their changes before delivering the changes back to the team source code repository. Continuous integration starts with the developers. This best practice can be improved upon. In many cases, the build scripts or build environment that are used by each developer can differ from the build system, which can lead to problems when the developers deliver their changes. For example, what is built in their sandbox environment suddenly breaks when it is built in the team build environment. To prevent these errors from happening, teams can use a preflight build strategy. In doing so, the developers conduct sandbox builds that use the same environment and build scripts as the team build. Such solutions as Rational Build Forge simplify the preflight build process and ensure that a consistent build environment is used by all members of the team. Increasing the frequency of the team builds ensures that errors are found early. Some teams employ a continuous build strategy, where every source code delivery triggers a team build. For small teams, continuous build strategies ensure high quality builds and encourage a culture of clean source code delivery. For larger teams, with many developers delivering changes, continuous builds might become too difficult manage. In this case, nightly builds are more appropriate and serve to ensure that all of the deliveries from that day can build without error. In larger enterprises, where solutions comprise multiple components, each being delivered by a different component team, integration builds become an important part of the continuous improvement strategy. Leaving the integration build for the end of the development cycle can leave the solution team open to last-minute fire drills to fix integration errors. Employing a continuous integration build strategy is in the same spirit of continuous team builds, but at a higher level. Because integration builds bring together multiple components, they occur less frequently than the component build. A weekly integration build helps the team to identify errors early, and the impacted component team can respond while the changes are still fresh in their minds.
Testing
It is no longer acceptable to reserve testing for the final weeks of the project. Rather, responsive teams integrate testing throughout the development cycle as indicated by the following types of testing. Continuous testing naturally contributes to continuous improvements in software quality. Developer testing Testing is interjected throughout the cycle. Developers are responsible for testing their changes in their sandbox. JUnit tests4 are the norm for developers. Many agile teams take this one step further with test-driven development (TDD). Build verification testing Build engineers inject build verification tests into the automated build systems. Conducting the build no longer means compiling. Rather, build automation systems now include building the solution, running build verification tests, gathering the results, staging the
4
http://www.junit.org/
34
build, and publishing the results of the build. Build health is a key performance indicator for the team. A build that does not pass build verification tests provides an indicator to the developers that they need to implement changes to improve the health of the build, while also warning the testers that the build might not be suitable to deploy to the test lab. A build that passes build verification tests is most likely suitable for testing. Test planning Test planning becomes a critical part of continuous improvement. By creating and executing against a test plan, the teams can begin to measure their performance. Test plans can be used to define the level of developer, build, and system testing that the team will perform for the project. Test plans can even be defined on an iteration-by-iteration basis. A test plan can be used to define which requirements will be tested. For each requirement, a set of test cases is defined and developed. These test cases are then executed against a build of the solution. At each point, the team can measure progress. With a managed test plan, the teams can ask and answer the following questions: How many requirements do not have test cases? How many test scripts need to be written? How many tests are left to execute? By asking these questions, the team can continually measure progress and adjust the efforts accordingly. Teams that develop iteratively include testing as part of the iteration plan. Every iteration involves developer, build verification, functional, integration, and system verification testing. Testers are involved in multiple phases of testing, from functional and integration testing to system, performance, and security testing.
Inception
Iteration 0
Initial Project Scope
Elaboration
Iteration 1
Drive out technical risk
Construction
Iteration Iteration Iteration Iteration 2 3
Demo and obtain feedback
Transition
Iteration Iteration
Stabilization test
Production
Iteration
Monitor and manage
Accumulated Requests
Unacceptable Defects
http://www-306.ibm.com/software/awdtools/rup/ http://www.enterpriseunifiedprocess.com/
35
We summarize of each of the phases as they relate to this book as follows. For more in-depth detail about each of these phases, consult the Rational Unified Process at the following Web address: http://www-01.ibm.com/software/awdtools/rup/ In the Inception phase, the team leads and product owner come to agreement on a set of requests to define the initial scope of the project. In addition, an initial architectural vision is created, and an assessment of the project team, tools, and environment is completed. For this book, the team in the reference scenario has already completed this phase. The Elaboration phase focuses on driving out technical risk by producing an end-to-end demonstration of the solution to prove and refine the architecture. Feature details are not addressed, but rather a skeleton of the system is completed to prove feasibility and identify areas of technical risk. This phase has also been completed by the team in the reference scenario. The Construction phase involves one or more iterations that focus on completing the functionality. Each iteration involves planning, design, development, build, and testing. agile teams advocate multiple two- to four-week iterations, while more traditional teams might only have one iteration. This book highlights a single iteration in the Construction phase. After the acceptance criteria has been met, the solution moves into the Transition phase for stabilization testing. Unacceptable defects found in this phase cause the solution to go back to the Construction phase where the defect is fixed. The release candidate is then sent back to the Transition phase for stabilization testing until all expected tests have passed. This book ends in the Construction phase just as the handoff is about to occur. The verified solution is then released into the Production phase where it is monitored and managed. Requests and defects found in the Production phase are added to the accumulated request stack for triage. Some requests are addressed immediately with a patch sent to production. Other requests stay in the stack until the next version is funded and the cycle begins again. This book does not address the activities that occur during the Production phase. A deeper look at the development life cycle reveals cycles within cycles of activity. Each iteration of the Construction phase includes a defined set of activities. We assert that by examining the handoffs that occur in a single iteration of a development project, the value of CALM is understood well enough to scale to a larger life cycle. Figure 2-11 on page 37 provides an overview of the kinds of activities that are involved in a single construction iteration that are driven by a set of requests.
36
Development
Integration Build
Test
Deliver
Develop and Build Iteration Workitems Staged Build Tasks Implements Deployed to Tests Next Iteration
Accumulated Requests
Validates
Project Work
Triage
Server Requests
Requests
Iteration
Figure 2-11 shows the following sequence of actions: 1. A project starts by choosing from a backlog of accumulated requests. These requests are added to the project backlog as work items. 2. The highest priority work items are added to an iteration plan, which includes the analysis, development, and testing efforts. 3. Some requests require additional detail. This requirement detail is provided by whomever is best suited for the task, such as the product owner or a developer. These requirements are used by both the development and test teams. For agile teams these requirements are captured as tests. Other teams capture the detail in a set of requirements. 4. The development team uses the requirements to write tests (test-driven development in agile terms). Then a developer develops the solution, builds, and tests the code in a sandbox. In agile terms, this concept is called confirmatory testing. When the tests pass, the change set is delivered to the team build. After the team build has met a predefined level of quality, the changes are delivered to the integration build. 5. The integration build collects source changes from each of the smaller component teams to produce an integrated build of the full solution. The integration build is staged and then deployed to the test servers. 6. Meanwhile, the testing team has been executing against a test plan by constructing test cases and test scripts to validate the high-level scenarios, the requests, and the requirements of the solution and to investigate potential scenarios that neither the development nor the business stakeholder teams considered. While the development team focuses on low-level, confirmatory tests, the testing team focuses on customer acceptance testing, feature or exploratory testing, performance testing, security testing, policy testing, and regression testing. These tests are executed against a build on a server, and the results of the tests are validated.
Chapter 2. Collaborative Application Lifecycle Management
Review
Plan
37
7. Defects are added to the request backlog where it is triaged and either added to the work-item stack or postponed and placed on the accumulated request backlog. Defects that are added to the work-item stack are treated like requirements and resolved by the developers by using test-driven development. When looking at an iteration from a birds-eye view, the dependencies and relationships across the disciplines become clearer. A single request can drive work that involves analysts, architects, developers, release engineers, testers, and project leaders all working toward the common goal of satisfying a single request.
38
Existing processes Many organizations have an existing culture and processes for software development. These processes must be taken into consideration by introducing new agile techniques into the existing approach rather than attempting to overthrow them.
Compliance requirement
Low risk Critical, Audited
Enterprise discipline
Project focus Enterprise focus
Geographical distribution
Co-located Global
Agile Development
Application complexity
Simple, single platform Complex, multi-platform
Team size
Under 10 developers Hundreds of developers
Degree of governance
Informal Formal
The good news is that IBM Rational has been helping customers deal with these types of complexity issues for over a decade and can apply their lessons to help you transition to this complex agile environment.
Relativity of agility
The need for processes and enabling technology changes as the development environment increases in complexity. Complexity can occur in a variety of dimensions. For the purposes of understanding how to apply agile development in the enterprise, the challenges are mapped into two broad categories: Challenges related to organizational issues Challenges related to technical and regulatory factors
Scott Ambler, IBM Software Group, Rational, Practice Leader Agile Development and Per Kroll, Chief Architect - Rational Expertise Development & Innovation (REDI), Project Lead: Eclipse Process Framework
39
In Figure 2-13, the lower left corner represents the least overall project complexity, while the upper right corner represents the greatest overall picture of project complexity.
Organizational Drivers
Team Size Geographical Distribution Organization Distribution Entrenched process, people, policy
Mature or existing projects 50 or more developers Complex, multi-platform applications Distributed teams Need for scalability, reproducibility, and traceability Maturing projects Multi-platform Growing in complexity Remote or offshore work Greater need for coordination and handoffs
Small team New projects Simple application Co-located Minimal need for documentation
Agile development started with small, co-located teams of about six developers, working on new projects to produce a simple application. This is represented in the lower left corner of Figure 2-13. In this situation, the organizational, technical, and regulatory drivers are simple. Geographic and organizational distribution is not an issue. The team is free to self-organize. Also compliance and governance drivers are not a consideration. Mid-size teams are more likely to have some degree of geographic or organizational distribution and entrenched or conflicting processes. Application complexity is growing as indicated by the need to add more team members. Having more team members who are geographically or organizationally distributed creates a need for more coordination and handoffs between team members. Applications with increased complexity, such as multiplatform support, are likely to require additional testing that is performed by a team of testers. These applications also require test servers to be configured and managed in a test environment. Additionally, its more likely that the application is important, and thus more attention must be paid to analysis, architecture, and staging of multiple test environments leading up to the final deployment into production. The larger the team is, the more complexity it faces in organizational, technical, and regulatory drivers. The situations faced by the mid-size team are amplified on the larger team. To manage the number of trade-offs, disparate approaches, and miscommunications, best practices are put in place and enforced across the team. Cultural awareness becomes an important skill to maintain healthy information exchange and motivation among team members. Compliance with regulatory and governance policies creates a need to document and comply with policies and processes. Yet information produced by the team can be spread across multiple data sources, creating a challenge to effectively managing an audit.
Scott Ambler, IBM Software Group, Rational, Practice Leader Agile Development
40
The criticality and complexity of the application also increases. The test environments increase in complexity along with the need for a dedicated test team to catch critical defects before the application is deployed. The test environments leading to production become more complex, and the testing strategies for each of the environments increases in sophistication with the addition of performance, security, and policy testing. Careful attention must be paid to analysis and architecture issues such as recovery, fault tolerance, capacity planning, and SLA compliance. Enterprise architecture principles and patterns also come into play. In mid- to large-sized teams, classic agile strategies must be evaluated against, and some times combined with, traditional approaches to create an approach that best suits the unique needs of the team or project. For example, attempting to hold a stand-up morning meeting with people distributed around the world suddenly seems silly for a large-sized team. However, combining frequent and short time-boxed iterations with dedicated testing efforts can yield tremendous gains. The traditional phased-based approach of the RUP can become more agile by blending fast-paced, just enough iterations into each of the phases.
Organizational Drivers
Team Size Geographical Distribution Organization Distribution Entrenched process, people, policy
Smaller teams (under 10) with low organizational or technical complexity can self-organize and choose the tools they want to use on their project. A team of this size can agree to a set of principles and practices that describe how to work together and use the tools. Any
9
Scott Ambler, IBM Software Group, Rational, Practice Leader Agile Development
41
modifications to the tools, principles, or processes can be discussed among the team members easily and quickly. Open source or introductory level commercial tools might be enough to get the job done and fit into the budget of a small team, provided that there is no serious complexity that the team faces. Some degree of complexity can be enough to render these tools inadequate. For example, a small team that is developing a product that requires approval by the U.S. Food and Drug Administration (FDA) requires more documentation and traceability across the assets than most open source tools can offer. A small team that needs to work across organizations, geographically distributed teams, or with external vendors might find these tools inadequate in meeting their scalability requirements. Finally, offshore development might tip the scale toward choosing a more robust set of tools. Best-of-breed tools can make sense when there is a coordinated effort and more than one project. The need for deeper capability increases, and each team adopts a best-of-breed tool for their discipline. The need to communicate more is rising, while the ability to simply modify the process on the fly is reduced. To avoid redundancy and improve awareness across the team, the team might find that they need to document some of the ways they work and that establishing best practices can be beneficial. A focus on integration occurs as the complexity and team size increases. At this point, the team is large enough that likely multiple managers are in place. As a result, communication becomes more difficult as each team pushes to meet its own priorities, goals, and deadlines. Tools that are immediately integrated and automation strategies begin to look appealing. Understanding and adhering to agreed processes become a necessary part of coordinating their work. In the most complex cases, multiple complexity variables and a large team size drive a need for an end-to-end tool and an auditable, reproducible process. These teams might be dealing with multiple projects with different requirements, complex systems running on multiple platforms, and advanced quality assurance, security and performance test requirements. Compliance or governance policies mandate that processes exist, are recorded, and are adhered to which can be proven with consistent reporting. At this level, the need to trace requirements to deployment rises to the foreground along with the need to reproduce an application at any point in time.
42
Organizational Drivers
Team Size Geographical Distribution Organization Distribution Entrenched process, people, policy
Un al on i t Ra eW ps cli ay dP ifie
s es roc
By providing a process framework that consists of many processes and practices, the Rational Unified Process covers the broadest range in the team-size to complexity continuum. Teams can choose a process definition that is close to their needs. All versions of RUP advocate iterative development, continuous integration, stakeholder involvement, and collaboration. The more agile variants include guidance for test-driven development, pair programming, and just enough documentation while the more advanced variants address distributed development, SOA, systems engineering, and compliance. The key for adopting RUP in an agile fashion is to adopt just enough by modifying what is provided or removing what you do not need.
Constant collaboration
The product owner, project manager, and team leads conduct frequent communication with stakeholders to understand their needs, communicate progress, and ask questions. Team members are encouraged to collaborate regardless of their geographic location. Placing tools to facilitate collaboration in the hands of the team members improves their effectiveness and encourages constant collaboration.
Iterative development
Many enterprises have not adopted iterative development, and yet it must be proven as an effective tool for managing risk and achieving user acceptance more easily. Iterations help teams to work out areas of risk while developing a story that can be told with the software by
10
Scott Ambler, IBM Software Group, Rational, Practice Leader Agile Development and Per Kroll, Chief Architect - Rational Expertise Development & Innovation (REDI), Project Lead: Eclipse Process Framework
43
the end of the iteration. This story is then shared with the stakeholders through demonstration of the working software. The stakeholders can then respond to early versions of the software by making course corrections much easier to accomplish. With iterative development, the project cadence is set by the leads, but the bottoms-up planning is provided by the individuals. The component teams are allowed to self-organize, provided that they work within the cadence that is set by the project leads. Team leads constantly seek to improve the teams health and efficiency by load balancing and rapid response to change.
44
In the context of CALM, this best practice includes the following actions: Understanding the impact of a change to the current plan, knowing that the change can impact analysis, design, development, release engineering, and testing Ensuring that all teams can absorb the change and deliver the release on time Rolling individual team plans into a cohesive project plan Assessing the projects health throughout the cycle and making adjustments to work assignments as needed Ensuring that all requirements have been implemented with expected quality before releasing the software to stakeholders The alignment of work occurs throughout this book. However, it is most apparent in Act 1 of the story, which is covered in Part B, Act 1: Responding to a change request on page 77.
45
46
Chapter 3.
47
48
49
The Solution
Account Opening
Credit Check
A component
Figure 3-1 The many components of tehe Account Opening solution
The team has grown by acquisitions and outsourcing. The enterprise has accelerated time-to-market for a launch in the European market by acquiring the skills and technologies of a smaller European company. The enterprise has also increased team capacity through a third-party provider based in another country. The team is globally distributed: New development of the second release (Rel2) is delivered from a team that consists of the corporate headquarter team, the acquired team, and the third-party provider. Maintenance of the first release (Rel1Maint) is delivered by the third-party provider. The team has traditionally used the IBM Rational Unified Process (RUP), but is intrigued by the notion of process enactment that comes with IBM Rational Team Concert and the Rational ClearQuest ALM schema. Because this is new, they decided to start small and slowly add a process as the teams became accustomed to using it. As such, they have adopted the Open Unified Process (OpenUP). This enterprise uses a global delivery platform from IBM. They have already invested in and are using the Rational team-based products such as IBM Rational ClearCase, ClearQuest, and RequisitePro. In addition, they have begun to introduce and adopt the newer products from Rational such as IBM Rational Asset Manager, Rational Build Forge, RequisitePro Composer, Rational Team Concert, Rational Quality Manager, Rational AppScan, and Rational Software Analyzer. Some teams stay on existing platforms and deliver into the global delivery platform that governs the solution delivery, while other teams adopt newer products. This heterogeneous mix of products will remain in the enterprise for years to come, but with a shift toward the newer products where appropriate.
50
Bob is the product owner. He cares about managing his business and bringing value to his
users and stakeholders.
Patricia is the project leader (or project coach). She is responsible for coordinating the efforts of this team of teams. Al is the solution architect. He works with the development and test teams to ensure that a
consistent architectural approach is used and understood.
Tammy is the test lead. She has a globally distributed quality team. Her team is responsible for conducting solution testing, or investigative testing in agile terms. Rebecca is the release engineer who oversees the solution integration builds, providing
global build support to the team.
Marco manages an agile development team. He understands the need to fit into the solution project plan, but seeks to maintain the agile approaches that have made his team successful. Diedrie is the developer who implements a change request in the scenario. Tanuj is the tester who is responsible for ensuring the quality of the solution.
51
Other Geography
Al Solution Architect
Teammates
Other Geography
Third-party Provider
Diedrie Developer
Teammates
Tanuj Tester
Teammates
The enterprise is adopting agile techniques where appropriate, while also acknowledging that some agile techniques do not apply to their situation. Because this is a large team working with agile techniques within the enterprise, we call this Agility at Scale. Additional detail is provided in 3.6.2, Agility at Scale on page 67.
52
Al Solution Architect
Teammates
We manage a team of teams that is distributed around the world. We are delivering an upgrade to the account opening application.
Figure 3-3 Corporate-based team leads
Bob is the product owner. He cares about managing his business and bringing value to his
users and stakeholders. As the product owner, working in an agile environment, he works closely with the development team, has ownership over the requirement priorities, and facilitates discussions between the development team and their stakeholders.
Patricia is the project leader (or project coach). She is responsible for coordinating the efforts of this team of teams. As each team produces its iteration plan, Patricia incorporates the plans into the overall project iteration plan. She collaborates with the teams to establish the pace of the iterations (how many iterations for the project and how long each will last). It is her job to ensure that all teams (development and solution test) are working toward the same iteration goals and that the work is aligned across the teams. Tammy is the test lead. She has a globally distributed quality team. Her team is responsible for conducting solution testing or investigative testing. This includes functional, performance, and security testing at the solution level. This does not include confirmatory testing, such as JUnit, or component-level testing, which is the responsibility of each of the development teams. Tammys team conducts solution testing as part of each iteration. Her team does a new solution build each week, thus providing an early feedback loop to the development team. She also provides a globally distributed test environment for the project and has ownership of a group of servers in the test lab. Al is the solution architect. Al works with the development and test leads to ensure the
team works from a consistent architectural approach. He provides insight into the iteration plans by identifying the architecturally significant tasks for each iteration. He collaborates with the developers as they design their implementations. He also seeks to reuse existing assets wherever possible to ensure consistency in approach and implementation.
Rebecca is the release engineer who oversees the solution integration builds, providing
global build support to the team. She sets the delivery, build, and release policies within
Chapter 3. A scenario for CALM
53
the project. While each component team is responsible for successfully building their component, Rebecca must bring all of the components together into a solution build. To bring agility into this enterprise solution, Rebecca produces a weekly solution build. This build enables the team to diagnose solution build problems as soon as they occur and enables Tammys team to test the solution build more often.
Teammates are those additional team members, such as the project management office, support personnel, additional testers, and development teams based in the corporate office who also contribute to the project. Their work is not highlighted in this scenario.
Diedrie Developer
Teammates
We develop, build, and test a component called Credit Check. We are based in another country.
Figure 3-4 The smaller agile team who owns the Credit Check component
Marco manages an agile development team. He understands the need to fit into the solution project plan, but seeks to maintain the agile approaches that have made his team successful. His team is self-organized and uses more frequent iterations than the rest of the project team. Marco still conducts daily stand-up meetings with his team and employs test-driven development techniques on his component. He is also a developer. Diedrie is the developer who implements a change request in the scenario. She is a generalizing specialist on Marcos team who designs and implements changes and oversees the component builds.1 Teammates are those developers on the team whose activities are similar to Diedries.
See Generalizing Specialists: Improving Your IT Career Skills by Scott Ambler at the following Web address: http://www.agilemodeling.com/essays/generalizingSpecialists.htm
54
Third-party Provider
Tanuj Tester
Teammates
Tanuj is the tester. He is responsible for creating the test cases and test scripts for ensuring the quality of the solution. He also executes the tests and analyzes the results. He logs defects when needed. Tanuj and his teammates employ a full battery of tests including manual, functional, and performance tests. Teammates are those many other testers who conduct activities similar to Tanuj. Some of these teammates are based in the third-party company with Tanuj. Others are based at the headquarters with Tammy.
For the purposes of this scenario, we highlight the interactions between Tammy and Tanuj.
55
Inception
Iteration 1
Elaboration
Iteration 1 Iteration 1
Construction
Iteration 2
Transition
Iteration 1
Unacceptable Defects
Figure 3-6 OpenUP phases with time-boxed iterations
Prior to the Inception phase, Bob, the product owner, developed a proposal for an upgrade to the Account Opening project, which was reviewed and funded. He collaborated with Al, the solution architect, and Patricia, the project manager, to solidify his proposal and build his business case. When his proposal was approved, an initial project team was created, and they began the Inception phase for the project. During the Inception phase, Bob, Patricia, and Al collaborated to initiate the project. Bob prioritized and refined the requirements. Al developed a technical approach and outlined the architecture. He and Patricia collaborated to develop an estimated project plan that included team sizes, skill sets, and software and hardware needs. They collaborated with other development leads and test leads to contribute to and confirm the plans. They took the approach of doing just enough to put their plans in place and completed the phase in less than one week. The goal of this phase was to drive out business risk. During the Elaboration phase, more team members were added to the project, and the team quickly refined the requirements and architecture. A prototype of the system was developed and tested by a small team to prove the architecture. The prototype was demonstrated to Bob and additional stakeholders to verify the approach and obtain additional feedback and direction. This phase lasted three weeks. The goal of this phase was to drive out technical risk. During the Construction phase, the full development team was brought into the project to develop the solution. Feedback from the Elaboration phase was shared with the team, and requirements were reviewed, refined, and prioritized. The team agreed to run four-week iterations. This point is where the scenario begins. When the Construction phase is complete, the team will hand the solution to the operations team for the roll out into production. During the Transition phase, the operations team will conduct additional tests such as performance, security, and user-acceptance testing. If unacceptable defects are found, the solution is sent back to the Construction phase to be fixed. This loop continues until the solution is rolled into production.
56
The Production phase (not pictured in Figure 3-6 on page 56) continues until a new version is released. Until then, the solution is monitored, managed, and maintained with hot fixes and patches.
Account Opening
Diedrie
Continuous Builds
Nightly Builds
Daily Builds
Figure 3-7 Team builds occurring daily, with integration builds occurring weekly
57
plan, which enables the test team to be focused on which tests to run in each integration build. The last week of every iteration is dedicated to fixing defects. Figure 3-8 illustrates the system testing that is done.
Iteration 2 Week 2
SVT W1
SVT W2
SVT W3
SVT W1
Each act builds on the previous act, but can be read independently of the others. Therefore, you can jump directly to the part that is of interest to you. The life-cycle assets that are produced and consumed by each act can be highlighted in context of how they are used by the characters. Figure 3-9 illustrates the five major acts in the scenario. Each act has several scenes as indicated by the numbered boxes. The story starts with Act 1, where Bob submits a request for the iteration, followed by the development (Act 2), integration build (Act 3), testing (Act 4), and the delivery of the solution at the end of a four-week iteration (Act 5). Each part of this book corresponds to one of the acts in the storyboard.
1.6 Bob defines and manages the requirements 1.2 Patricia updates the project iteration plan 1.5 Patricia confirms the project iteration plan
5.2 Patricia approves the release 5.1 Patricia monitors solution health
Project Lead
2 Develop Component (2 week iterations) 2.1 Marco monitors component health 2.2 Al identifies an asset the team can reuse
Development Lead
Component Team
Solution Architect
Developer
3 Integration Build 3.1 Rebecca responds to a failed integration build 3.2 Rebecca runs the integration builds
4 Manage Quality 4.1 Tammy configures the test lab 4.2 Tanuj constructs the tests 4.3 Tanuj executes the tests 5.3 Rebecca packages and publishes the release
Solution Team
Release Engineer
Tester
Figure 3-9 Geographically Distributed Application Lifecycle Management scenario used by this book
The following subsections provide a synopsis of each of the acts shown in Figure 3-9 and provides a pointer to the part of the book that details that act: Part B, Act 1: Responding to a change request on page 77 Part C, Act 2: Collaborative development on page 211 Part D, Act 3: Enterprise integration builds on page 313 Part E, Act 4: Managing quality on page 387 Part F, Act 5: Delivering the solution on page 479 The team has already completed the Inception and Elaboration phases and is now in the final iteration of the Construction phase.
59
The product owner submits a request for the current iteration. The team determines that it can be contained in the current iteration plan. The impacted team leads update their plans, and Patricia confirms the solution iteration plan.
1.3 Marco updates the development iteration plan Marco Development Lead 1.4 Tammy updates the solution test plan 1.6 Bob defines and manages the requirements Tammy Test Lead
As shown in Figure 3-10, these goals are expressed in the following scenes: 1. Bob submits a request. Bob, the product owner, submits a request, setting it to the highest priority and assigning it to the current iteration. In the request, he references the user interface (UI) standards that the enterprise uses for all of its customer-facing applications. He creates a task for Patricia and her team to size his request. 2. Patricia plans the project iteration. Patricia assigns work to Bob to detail the requirement, Marco to implement it, and Tammy to ensure that the request is tested per the requirements that Bob provides. This work is linked back to the original request for traceability. 3. Marco updates the iteration plan. Marco leads the agile development team. He conducts an iteration planning session with his team where the work item to implement Bobs new request comes up for discussion. They contact Al, the architect who identifies a reusable asset for UI branding. They agree 60
Collaborative Application Lifecycle Management with IBM Rational Products
to explore its use for the implementation. Marco assigns the branding work to Diedrie for implementation in this iteration. 4. Tammy updates the solution test plan. Tammy receives a work item from Patricia and updates her test plan. She creates a test case and adds it to her test plan. Tammy notices that Al is suggesting a reusable asset. She looks at the asset and discovers a set of tests that are to be used when implementing this asset. Tammy updates the test plan and assigns the testing to Tanuj. Finally, she confirms the availability of the required test lab servers. 5. Bob defines and manages the requirements. Bob receives a work assignment from Patricia to provide additional detail to his request. He creates a sketch and a requirement to illustrate what he wants. He claims his work complete and links his requirements to his work item. 6. Patricia confirms the project iteration plan. Patricia reviews the task assignment to see how Marco, Tammy, and Bob are progressing on their work items. We explore the following concepts in this act: The bridge between the business and development team via a request How a request drives changes to development and test plans that are managed in separate repositories How a request is elaborated with additional detail How Bob can clearly communicate his requirements by providing a sketch See Part B, Act 1: Responding to a change request on page 77, for a full elaboration of this act.
61
The agile team develops, validates and builds the required changes to their component in the solution. The component is delivered to the solution integration.
2.5 Diedrie conducts a team build and delivers for integration build
Al Solution Architect
Diedrie Developer
As shown in Figure 3-11, these goals are expressed in the following scenes: 1. Monitor component health. Marco conducts daily stand-up meetings to adjust the work for the day. Diedrie and Marco collaborate on the design of Bobs request and ask Al to guide them on reusable assets for application branding. Diedrie and Marco examine the asset and perform just enough analysis and design in an experimental development environment. 2. Al identifies an asset the team can reuse and shares it with the team. 3. Diedrie and Marco do just enough design. The team practices test-driven development, and Diedrie develops her test cases before writing the code. 4. Diedrie develops, builds, and tests her changes on her local machine. Then she makes the required updates to the build and build verification test scripts and runs a private build. She delivers her changes and monitors the teams continuous build. 5. Diedrie conducts a team build and delivers to the integration build. With a successful build, she delivers her changes to the integration stream. We explore the following concepts in this act: Asset reuse Test-driven development Development team collaboration See Part C, Act 2: Collaborative development on page 211, for a full elaboration of this act.
62
The delivered changes are integrated, built, and verified. The release engineer is monitoring the build process.
As shown in Figure 3-12, these goals are expressed in the following scenes: 1. Rebecca responds to a failed build. Rebecca monitors the range of build projects that she is responsible for. She is notified that the weekly Account Opening integration build failed. She inspects the build and resolves the problem. 2. Rebecca runs the enterprise build. Rebecca runs a new Account Opening integration build, including the latest changes. She has automated the complete build process, which includes the creation of baselines, an application build, build verification tests, build staging, and build announcements. The build processes are scheduled to run weekly. She also has the option to manually request builds on demand. The output builds are automatically posted and announced for team consumption, the build verification test results are added, and a report of whats in is generated. The availability and staging location is included in release notifications. The build is successful and is announced to the team.
63
We explore the following concepts in this act: Resolving a build failure Integration with Rational ClearCase for source code control, baselining, and staging the completed build Integration with Rational ClearQuest to establish baseline and build records that provide information about the build to the Rational ClearQuest users Integration with Rational Software Analyzer to perform static code analysis Automated notifications of build success or failure See Part D, Act 3: Enterprise integration builds on page 313, for a full elaboration of this act.
The stability and quality of the solution integration builds are tested by the globally distributed quality team.
As shown in Figure 3-13, these goals are expressed in the following scenes: Tammy monitors quality by ensuring that her test plan is up to date with the latest requirements from Bob. Tanuj constructs the test cases, test scripts, and test execution records that are needed to sufficiently test the change. Tammy deploys the build to the test lab and notifies the team that the servers are ready for testing. 64
Collaborative Application Lifecycle Management with IBM Rational Products
The team executes the tests. Tanuj executes the tests to validate that Bobs request has been developed as requested and finds a defect. He collaborates with Diedrie to close the defect. Tammy executes a security scan and evaluates the results. Tammy confirms that all tests have been executed and reviews the quality metrics. We explore the concept of quality management in this act. See Part E, Act 4: Managing quality on page 387, for a full elaboration of this act.
As shown in Figure 3-14, these goals are expressed in the following scenes: The team moves into the end game. The team leads assess the exit criteria. Rebecca publishes the release. Marco conducts a retrospective.
65
The following concepts are explored in this act: Governing the release to restrict source code changes Assessing and approving a release Packaging and publishing a release for re-use by external stakeholders. Continual improvement See Part F, Act 5: Delivering the solution on page 479, for a full elaboration of this act.
ALM Request
[Enhancement] Associated Related Artifact
ALM Task
[Define Requirement]
CQ:Requirement
Requirement
ALM Task
[Develop Architecture]
Build Project
Runs
Stream Snapshot
Built from
Job
Produces
ALM Task
[Implement]
Work Item
Included
Build
ALM Activity
[Implement] Included Includes
Build
JUnit files
Deployed to
ALM Baseline
BT Build
ALM Task
[Test]
Executed against
Test Plan
Figure 3-15 Life-cycle assets that are created or referenced in the storyboard
66
In Act 1, the ALMRequest [Enhancement] asset is created, which drives four ALMTasks: [Develop the architecture] for the solution architect that appears as a task in Rational ClearQuest [Implement] for the development team that appears as a work item in Rational Team Concert. The work item is added to an iteration plan. [Test] for the test team that is added to the test plan. [Define the requirements] for the product owner who creates a sketch that is linked to a requirement, which in turn, is linked to the ALMActivity. In Act 2, Marco and his team work with the following items: A reusable asset is located and added to the developers workspace. The work item is implemented by a change set that contains a set of files. The change set is delivered to the team build. Upon verification of a healthy build, the change set is delivered to the Unified Change Management (UCM) integration stream. In Act 3, the Rational Build Forge project automates the following tasks: Creates a UCM view for the source code Runs code analysis against the source and produces a report Produces the build and checks the distribution archive into Rational ClearCase Creates a BTBuild and ALMBaseline record in Rational ClearQuest Creates a bill of materials The project uses worker machines, which provide a solution environment with abstracted variables, a schedule, and a code rule set (used by Code Analysis). In Act 4, Tammy and her team work with the following assets: The test plan is linked to requirements in RequisitePro. A build is deployed to a managed server in the lab. Test cases are updated with detail including an association with the imported requirements from RequisitePro. A test script is written and associated with the test case. Test execution work items are generated for multiple browser configurations. Test results exist for each test execution record. A defect is associated with a line in the test execution. In Act 5, the release delivery is supported by the following assets: Approvals are given by the project leadership team members. Notes from retrospectives are created by the project teams. Release packages are created and submitted as request assets.
67
Because this is a large team, which includes a team of teams, not all agile practices make sense. In this section, we discuss the agile practices that have been adopted by the enterprise team, which are displayed in the callouts in Figure 3-16.
1 Respond to Change 1.1 submits a request Bob isBob actively engaged in interations owning RR Solution Team
Product Owner
1.6 Bob defines & manages the requirements 1.2 Patricia updates the
Bottoms-up planning. Four-week project iterations and two-week component team iterations. Using OpenUP, govern by using load-balancing and rapid response to change.
Project Lead
Patricia coordinates Project Iteration the plan leadership team and supports frequent collaboration with 1.5 Patricia confirms the stakeholders project iteration plan
Development Lead
plan
Component Team
2 Develop Component (2 week iterations) Marco leads a co-located team, self organized with local plan, build and test 2.2 Al identifies an asset 2.3 Dierdrie and Marco do ownership. Using daily stand-ups, justthe team can reuse just enough design enough design, continuous builds and Solution 1.3 Marco updates the Delivers test driven development. to Architect development central integration iteration and validation. 2.4 Dierdrie develops, builds and tests her changes
Developer
1.4 Tammy updates the Centralized test management solution test plan and distributed test servers.
Test Lead
3 Integration Build 3.1 Rebecca responds to a failed integration build 3.2 Rebecca runs the integration builds
4 Manage Quality 4.1 Tammy configures the test lab 5.3 Rebecca packages and publishes the release
Solution Team
Iterative development
Patricia has set the cadence for the project at four-week iterations. Within each of these iterations, the team prioritizes requirements, does just enough design, implements and tests the team builds, builds the entire solution, and tests the solution. Patricia works with all of the teams on a frequent basis to assess the teams health and ability to deliver the iteration. Modifications to the plan occur rapidly with little ceremony to maintain a realistic view of the iteration. Patricia has frequent contact with the stakeholders to review progress and receive feedback on their direction. The component teams are allowed to self-organize provided that they work within the project framework. In this storyboard, the acquired team, which is led by Marco, has decided to work in two-week iterations.
68
69
Corporate
Requirements Composer and RequisitePro ClearQuest
Recently Acquired
Team Concert
Asset Manager
Reusable assets
Build Forge ClearCase /UCM
Components Streams
Third-party Provider
Quality Manager
Test resources US IN
Repository
The developer
The developer uses Rational Team Concert to develop, unit test, and build the software component.
70
The architect
The architect uses the following applications: Rational Asset Manager to identify a reusable asset Rational ClearQuest to size a request and help the team determine whether they can contain the request in the iteration
The tester
The tester uses Rational Quality Manager to construct and execute tests. In addition, the following products are referenced, but no detailed information is provided: Rational Functional Tester Rational Performance Tester Rational Services Tester
71
72
Rational Build Forge, Rational ClearQuest, Rational ClearCase, and Rational Software Analyzer
Rational Build Forge is used to conduct the integration builds. It uses the Rational ClearCase adapter to collect the latest source, baseline the source, and check the packaged build back into source control for staging. Rational Build Forge also integrates with Rational ClearQuest to create build and baseline records that are used to identify the build status, the baseline name, and delivered activities between baselines. Rational Software Analyzer is integrated to run static analysis on the source code prior to compilation.
73
In the context of this book scenario, it is reasonable to make the following assumptions regarding the deployment of an enterprise-sized collaborative development platform for the Account Opening project: The Account Opening project depends on the teams and team members in multiple geographies. The team of teams is distributed over multiple development sites and over multiple continents. Larger core sites in the enterprise form hubs that serve a region of development sites with collaborative development platform services. The Account Opening project teams use two or more hubs that serve its geographic regions respectively. Team members are mobile, from time to time, and require remote access from home or from other temporary non-office locations. The project depends on external service providers, for example in the test team, that from their external site connect remotely and securely to the Account Opening project repositories. When deploying a collaborative development platform (Figure 3-18 on page 75) for the geographically distributed Account Opening project, the following considerations apply: The Requirements repository is deployed as a central service to one of the core sites. It is advised that the site is chosen, so that the repository is co-located with business and application stakeholders. It is also advised that application stakeholders use a requisite Web client to access requirements artifacts. If the integration with Rational ClearQuest is used, mastership of the requirements records must be kept at the core site that hosts the requirements repository. The integration of Rational RequisitePro and Rational ClearQuest does not update records that are mastered remotely. The Rational ClearQuest and Rational ClearCase repositories are deployed to all core sites with a component development team. Rational ClearQuest or Rational ClearCase Multisite are used to replicate information across the sites. Mastership of Rational ClearQuest ALM artifacts is automatically set and managed by the Owner field on the ALM records. This implies that ALM Request records stay with Bob because he is the owner. The ALM Task records stays with Patricia, and the ALM Activity records are remastered to the replica for the owner of the activity. Other ALM records that are related to project ALM Work Configurations stay at the site of the project administrator. Some project component teams, for example the CreditCheck team, use Rational Team Concert. For those teams, a Jazz server is deployed. To establish interoperability between the Rational ClearQuest clan, a ClearQuest Gateway server is deployed at one of the core sites and co-located with one of the Rational ClearQuest MultiSite replicas. In Rational Team Concert 1.0, the Rational ClearQuest Connector supports one gateway per clan. The deployment location of the Jazz server is not required to be co-located with the Rational ClearQuest clan or the ClearQuest Gateway. In our scenario, the Jazz server is managed by the CreditCheck team. It is advised to consider mastership and set up Rational Team Concert users in Rational ClearQuest with the appropriate mastership properties. The Rational ClearQuest query that is used to select the records to be synchronized with Rational Team Concert should also be configured with a filter that prevents records with remote mastership to be synchronized. A project area and team areas for each component team are deployed to the Jazz server. Multiple projects can share a Jazz server that then serve multiple project areas. Each component team manages their team area for their component.
74
Some component teams, such as the CreditCheck team, might have local build services. Other teams rely on the central build services in the Account Opening project that is run by the release engineer, Rebecca. Component teams can also decide to integrate with the central build service, but take ownership of all aspects on managing and monitoring the component builds.
Rational RequisitePro and Rational Requirements Composer Rational ClearCase Rational ClearQuest Multisite
Task Requirement Sketch Request Activity
Task Activity
Figure 3-18 View of the collaborative development platform deployed to support the Account Opening project
75
76
Part B
Part
77
78
Chapter 4.
79
80
team demonstrates what work went into a change, how it was implemented, built, and tested. Coordinating the work that is related to a single change request not only improves the teams ability to deliver high quality iterations, but can also help in responding to regulatory audits. It is clear that todays software development teams must take a shared responsibility in the project success. Additionally, agile methods underscore the importance that team members participate in many roles crossing the traditional discipline silos. Disparate tools, often separated by disciplines, are no longer enough. People and work cross the traditional boundaries of software development disciplines. A single team member might need access to the requirements definition, the models, source code, build, and test cases. As such, the team member might need to collaborate with the team members who produced these assets. The role of change management along with CALM is to link the people, information, and tools by using a streamlined and iteration-specific process. The change is understood and tracked across team members, disciplines, repositories, and geographies. To do so, teams need insight into the project status to enable them to respond to change and track project health. All of these factors require development teams to communicate and monitor progress throughout the development life cycle and to work together to find solutions that deliver effective software shipped on time and on budget. To succeed at this orchestration of workflows, teams, and assets, a CALM solution relies upon the following success indicators as underpinnings to effectively develop a release of software, as discussed in 2.2.1, Success indicators on page 30. Collaborative change management takes a central role in contributing to successful CALM. Collaboration Team members must collaborate when submitting, analyzing, elaborating, triage sizing, planning, and delivering change requests. The emphasis here is on the team. A change typically impacts more than one discipline, and as such, all disciplines are taken into account when addressing a change request. By doing so, a team is better equipped to orchestrate the work in delivering committed changes with sufficient functionality and quality. Traceability Team members must ensure that the results of their changes are traceable to the originating request and ensure that the build delivers the changes. An understanding of the delivered changes helps the test team to efficiently and thoroughly target their testing effort. These activities connect the requirements definition, enterprise build, and change management workflows. Distribution Teams that are distributed must ensure a close connection to the software delivery chain that integrates their changes into versions of the solution. These teams are likely to use separate repositories to organize assets. It is critical that these assets are linked and the teams distribution does not break traceability. Automation Teams can improve their performance and the quality of delivered applications by automating parts of the change management workflow and by automating the management of application life-cycle assets. Traceability adds significant value to the governance aspects of change management, but requires consistency and discipline to maintain. By automating the creation and maintenance of asset traceability, the team can more effectively apply change management and leverage its value. Many of the change processes can also be seamlessly integrated into team collaboration to alleviate the burden of maintaining traceability across change assets.
81
Continuous improvement Teams seek strategies to continuously improve the change process. Conducting retrospectives at the end of each iteration and adopting lessons learned will aid in process improvements and reduce friction.
82
Inception
Elaboration
Construction
Transition
Misunderstood or badly communicated requirements are a key risk factor in GDD projects. In a 24x7 globally competitive market, the stakes involved in getting it right are higher than they have ever been. However, teams can no longer risk analysis paralysis. The go-to-market time is faster than in the past and requires organizations to collaborate with their stakeholders and obtain constant feedback and iterative refinement of assets. Therefore, organizations are looking for ways to improve the requirements process by finding a balance for what is enough to get started on prototyping and then using feedback loops to gain greater clarity as the project progresses. This desire to expedite the requirements process often calls for leveraging different types of techniques to improve the communication and definition of requirements. The article Examining the Big Requirements Up Front (BRUF) Approach describes issues that occur during requirements management, the importance of writing just enough detail early in the requirements process, and collaborating with stakeholders to obtain feedback. You can find the article on the Web at the following address: http://www.agilemodeling.com/essays/examiningBRUF.htm Inputs to requirements come in many forms such as business process sketches with predefined key performance indicators, application sketches, storyboards, process flows, and
83
diagrams. These assets are important because they aid in the translation of business goals and objectives to requirements. Rich text and images live side by side to help analysts convey information by using a rich and detailed language. Requirements definition and management tooling must be adaptive to these changing techniques. Solution teams no longer center their requirements processes solely around the management of requirement information. It is no longer sufficient to capture and track requirements across the life cycle. Organizations realize the value in capturing the right requirements at the appropriate level of detail that is useful for the current phase of the software development life cycle. Involving a larger set of business oriented stakeholders to be involved in the requirements definition process is crucial. The need to align business and IT is bringing definition techniques front and center as a key element to the requirements process.
84
requirements do not address business problems. Or worse, the software might never meet the needs of the user due to a lack of understanding. To meet the needs of users, the business analysts must be empowered to capture and communicate their ideas to the development team. Improved collaboration is crucial across the software development life cycle regardless if it is between the customer and IT or within the solution team. All stakeholders in the project must be on the same page and have a common vision. The team must design a system that satisfies the request. The developers must implement the same vision that the architect defined. Certainly the test team must test from the same set of requirements to confirm that the implementation meets the original need. Without this common vision, the solution team cannot build something that addresses the business problem. Process rigor depends upon the type of project. Software development projects and processes come in all sizes. There is not a one-size-fits-all approach. Some projects are amenable to agile techniques, but more rigorous requirement processes can be adapted where required for other projects. The agile method places rigor through continuous feedback between stakeholders and the team, collaboration, and requirements iteration, where traditional attempts to obtain rigor are through process-driven approaches. CALM tools must be flexible and allow for various organization types to be effective regardless of whether the organization is using agile, iterative, or waterfall development methods. There is the desire to improve effectiveness of distributed teams. Teams are not always co-located. If teammates are not in the same building, it becomes more crucial to provide tools that support collaboration and clear articulation of the requirements. Organizations are moving away from a silo role-based approach in the software development processes and moving toward activity-driven functions. Traditional role lines are blurring. Team members are wearing more than one hat and performing many activities across the software development life cycle such as requirements elicitation, definition, and design techniques. In a software development market with two- to four-month project schedules, a silo approach is ineffective due to wasted time in transitioning information between roles. Expertise in a single discipline is no longer the norm. Effective teams collaborate in the requirements process and share information of the requirement assets. The collaborator is the new role. In agile development, these persons are referred to as generalizing specialists as referenced in the article Generalizing Specialists: Improving Your IT Career Skills at the following Web address: http://www.agilemodeling.com/essays/generalizingSpecialists.htm
85
Continuous collaboration using assets across a life cycle to deliver the solution
Stakeholder Tester
Use Requirements to Implement Solution Iteration Planning
Problem to be solved
Visual Model
Analyst
The requirements process begins with the definition of a need by a stakeholder. The stakeholder has the opportunity to convey their business problem by using the language and vocabulary of the business and its customers. Requirements definition and management activities ensure that the business can capture and communicate their ideas to the solution team, and at the same time, the solution team can learn the nuances and expectations of their customer. This is the point where the business meets development. It is in the stakeholders best interest to clearly articulate the need, and having the tools that capture the rich detail and nature of the request facilitates that goal. The stakeholders request is reviewed to assess if it aligns with the business goals and strategy for the project team. If the request aligns with the strategy and can be contained within a given iteration, the request is added to the iteration plan. See Work management and iteration planning on page 89. The iteration plan contains a list of items that must be resolved. Members of the solution team collaborate with their peers (project manager, developers, analysts, and so on) as part of the planning process. As part of the planning process, activities are created and executed upon for a given iteration. Each person on the solution team plays a critical role or roles in implementing the solution. Information defined by the stakeholder is used to complete activities across multiple software disciplines. These activities can include additional elicitation techniques to provide a context for the request when the request does not provide the full picture that is required to implement a solution. In this case, the business analyst contributes to the effort by providing context around the statement that is expressed by the stakeholder. Context is provided in the form of a business process or application sketches, storyboards, models, and other rich text content. These kinds of activities allow an organization to capture the details of the business that might not be included in the request. Requirements content evolves through these efforts. It is a critical point as the business and solution team come together to create a common vision 86
for the solution to be developed. Need statements are shared and discussed to ensure a common understanding, and as such, they provide the foundation for the requirements process. The team then creates a solution to address these need statements. The analyst then organizes and manages the requirements. Management of the requirements includes capturing important requirement descriptors such as priority, release, origin, and others. Additionally, pertinent traceability information for related requirements can also be captured. Other team members who work with the analyst use the requirements to complete their activities. An architect reviews the requirements and defines how an application will be implemented to solve the stakeholder request. This information can be captured in the form of design. Developers use the requirement and design information from previous activities to implement the solution. The developer now has an understanding of the following concerns: The business need and problem What is expected to address that need Potential designs or constraints that impact the implementation of the requirement The design information can be newly defined or used from an existing asset. The solution should address the original need, no more or no less, and be as simple as possible to resolve the need. The tester also uses the requirements. Requirements identify what should be tested. Their testing confirms that the implementation meets the original stakeholder request. Functional verification testing is an important form of testing. Test cases link to requirements. With this traceability, a test team can determine test coverage (how many requirements without test cases). Additionally testers can capture how many tests have been executed for a given requirement. Some industries, such as the pharmaceutical industry, require that each requirement has one or more tests. Test organizations might conduct different types of testing. Some organizations perform functional verification test (FVT) and system verification test (SVT). In other cases, a combination of FVT or SVT and JUnit tests are performed. Regardless of the testing process performed, the tests that are conducted will use requirements assets. The test plans that are created align the functions in the system that must be tested. If a team is adopting a user story or use-case driven approach, the scenario information that is captured helps identify test-case information. Test coverage is verified by reviewing the requirements. A test team can verify all function points, and scenarios are tested in a system.
A football analogy
Software development is a team sport. The business goal or objective in this case is to win or to score more goals than the other team. The acceptable requirements, then, should always support those goals. If not, the project manager throws them out. Requests are the assets that are triaged, sized, and planned. The requirements add detail to a request. Requests are the plays that the solution team executes upon. Requirements tell what each player must do in that play (for example, run long, sweep right, or sweep left). The project manager is the captain who assesses the situation on the field. This person must evaluate the development situation. The project manager must coordinate and work with the team so that they are adaptive and able to address change as they encounter it. The project manager depends on the team to identify what items they can contain within a given iteration. The development iteration is like the football game (referred to as soccer in the U.S.). The cadence of the iteration is like managing the clock on the field. The project manager and
Chapter 4. The team responds to a requirement change
87
team must identify the length of the iteration and which requirements can be contained within a given iteration. The project manager and team work together to execute delivery of the appropriate requirements across several iterations. The successful delivery of a function within a given iteration allows an organization to meet the end game goals that are defined in the iteration plans. The end result is providing a solution that meets the stakeholders needs on time and on budget. Continuing with the sports analogy, in team sports, everyone must work together and play their part to win. Development organizations are no different than a sports team. The development organization must understand the vision of the project and work together to execute that vision. The team must work together and understand actions that must be done to succeed. The team must use information that is available to them and effectively adapt to change, to avoid chaos and friction within the team. If everyone works on different requests, there is chaos. The team must work from the same set of stakeholder requests. The requirements provide detail, while the original request provides the context. The request is implemented and tested by using the requirements as validation and verification points. The software development life cycle is like a football game. A football team is not steadfast in all the plays it will execute up front. A set of potential plays are identified before the game. However as the game evolves different plays are executed depending upon the situation. Plays are adjusted as the game unfolds. Development organizations are similar to a football team. They must be effective to adapt to changing needs of their stakeholders in the form of requirements by using a change request. Additionally, development organizations must be adept to the changing industry and changing project. Development teams that practice iterative development, agile techniques, or both are effective at adapting to changing needs. They break the development life cycle into measurable chunks or iterations, much like a football game is broken into halves. The development team is adaptive to change in that they manage requests into various iterations. Additionally requirements are adapted as more information is gleaned. Organizations that are more waterfall in nature are often bound by decisions made early in the project. These organizations are not as effective to easily address change as the project unfolds. When viewed from the perspective of this sports analogy, you can make the association that waterfall requirements analysis is similar to a coach selecting a set of plays before the game and sticking to them. Changing the game plan is more measured in that the requirement change is controlled through a change request process.
Collaborative Development
Business value
Focus on development team productivity Enables distributed development Flexible support for development processes Manage change in the application life cycle
Build Management
Define builds Continuous integration Remote build server Bridges
Team Health
Transparent development Team central RSS/Atom Feeds Instant messaging Process enforcement and customization Dashboards Reports Role-based permissions
Contributor
Team Collaboration
View iteration plans and validate deliverable time lines Create, update, query, and view disposition of development tasks Overview of the resource utilization View personalized dashboards
89
Iteration planning, estimation, and progress tracking are centered on items of work. An iteration plan is created by fitting top-priority work items within the time-boxed iteration. Work items can be organized by themes, plan items, and stories. Change requests are handled as work items. Each request represents a work item that must be triaged by the team. Estimation techniques are used to plan the stack of work items, but the estimates have an acceptable uncertainty due to the lack of detail at the project and iteration inception. This iteration planning is repeated for each iteration within a release.
90
delivered. The tight collaboration between stakeholders and development team is key in collaborative development. The categorization of requests provides an indication of which team is impacted. That team reviews the request and determines if and when it can be addressed. If the request will be addressed in a particular project, a work item is created for that project and associated with the request, as discussed in the next section. Anyone who is looking at a request can see which work items are needed to fulfill it. Anyone who is looking at a work item can see which request it is intended to complete. A request has a defined life cycle that governs its workflow. For example, a request can be approved, withdrawn, or rejected. When in the rejected or withdrawn state, stakeholders can decide to re-open the request. The Rational ALM solution, which implements the collaborative development blueprint, uses various repository objects to realize change management. In the ClearQuest ALM solution, a new record type, called ALMRequest, maps to a request. Also, a family of record types, called ALMTasks and ALMActivity, map to work items. The Rational Team Concert environment uses work item.
91
The ability to track what work is assigned and completed for each request helps the project teams assess their progress and determine if an additional request can be absorbed into an iteration.
Assessing results
While the request describes the identified need and is owned by any stakeholder on the project, work items track the work that is assigned and must be completed in order to resolve the request. This allows you to compare the number of requests to the number of committed work. This also allows project managers to see how much work is involved in each request and how much of the work is completed or outstanding. Additionally, there are times when a single request may impact more than one project, or iteration. This separation of requests for work and the commitment to do work allows each impacted project to manage the work as it relates to satisfying the request in that specific project context. The capability to align work, as part of iteration planning and tracking, is essential as the completion of a request. Hence a request is not completed until all work, in the form of tasks and activities, or work items, are complete. The team is done when all work related to the committed requests is complete. Work can be assigned to iterations of the project. This allows the project team to balance their workload across iterations. Health metrics, in the form of dashboards, team centrals, reports, or queries, can be created to see how the work is distributed across the team. This insight helps the project manager to spread the workload evenly across the team members and avoid critical path situations. Charts also help the project manager ensure that all work is assigned.
92
Portfolio Management
Bus.Process Management
Collaborative Development
Quality Management
Align business and IT Deliver the right requirement Manage change and prioritize requirements
Business value
Plan
Analyst
Clearly articulate requirements Perform analysis activities Align to portfolio Define requirements management strategy Prioritize
Define
Elicit requests Obtain context for requirements Validate, detail, define, and document
Organize
Identify trace relationships Verify requirements Impact, gap, and coverage analysis Iterative refinement Address change
Evaluate
Obtain measurements for project health Perform retrospectives
Contributor
Focused collaboration Clearer communication Validate content Verify status of business request
Collaboration
Shared view of problem definition and proposed solution Express requirements via simplified techniques Involve stakeholder in reviews
The requirements definition focuses on the elicitation techniques that are used for capturing high level requirements and how more detailed requirements are derived from those statements. Requirements management focuses on how requirements content is used throughout the software development process. Requirements assets are organized in a central repository and leveraged by the solution team throughout the CALM life cycle. Requirements definition and management includes the following components: manage, plan, define, organize, and evaluate. A CALM solution should allow for a repository to define, manage, and organize the requirements effort. See Figure 4-4 for detail. The product owner and team can review and ensure that the stakeholders need is resolved by an implemented requirement. Analysts and stakeholders have the ability to obtain a better understanding of the business through the capture of storyboards and process models. This information supplements the need and provides context. The requirements become drivers for project planning activities. By having all of the requirement assets at their fingertips, the solution team can leverage the requirements.
93
The development, test, and documentation organizations leverage requirements content as a foundation to support architecture and development, test, and documentation activities.
Plan
As mentioned earlier, requirements are an important part of the project planning activities. Planning activities can be separated into two areas: Alignment to a portfolio or business goals Defining a requirements management strategy Both of these planning activities use requirements as inputs to planning decisions. However, the activities performed within them are different. All aspects of project planning is not discussed here. For more information, see Assigning and aligning work on page 91.
94
Regardless of the organizational type, ALM tooling and processes should support portfolio planning activities. Here are some questions to consider for requirements planning: As a stakeholder or customer, you are concerned with the following information and anticipate that planning activities should provide this information: What are the requirements or set of requirements that implement your request? That is, has it been considered in scope for an iteration? What is the business priority of your request? In which iteration or major release will your request implemented? If your request has been considered in scope for an iteration, what is the requirement that will implement your request? As a project lead, you are concerned with the following information and anticipate that planning activities should provide this information: What is the given status of the backlog? That is, is the request in the backlog considered in scope for an iteration? Do any of the requests require reprioritization and validation with the customer or stakeholder for the iteration? Which requirements must be removed from the current release to accommodate these higher priority requirements? Do you need to obtain additional information from anyone to set context on the requirements? Is the request mapping to themes for the iteration? Additionally, are requirements mapping to themes as well? Do you need to work with anyone to address risks and define mitigation strategies? Are any items blocking progress? Who will collaborate from a pair-programming perspective to achieve continued progress? What is the quality of the iteration thus far? That is, are the requirements that are implemented and coded passing? Is there more work that needs to be completed? As a team member, you are concerned with the following information and anticipate that planning activities should provide this information: What is the backlog of requests that must be reviewed so that your team can help provide guidance of what might be contained in an iteration? What are the themes for the release so that you can help identify requests in the backlog that map to a theme? What is the list of work items that you must complete and by when? What additional information is available regarding this work item? What is the request that initiated this work item? What requirements information provides context for the request?
Do any items require your input? Are there blocking issues that require mitigation in order to address a requirement for an iteration?
95
Prioritizing
Identifying the importance of requirements is key to the requirements process. Prioritization of the requirements aids in project planning activities to be completed in later portions of the software development life cycle. Prioritization helps a solution team assess which functional elements must be in a release, where other functions might be nice to have.
Define
As mentioned earlier, understanding the needs of stakeholders and their business process is critical in the requirements process. Different types of activities can be performed for elicitation and definition. A CALM solution should support these activities.
96
Eliciting requests
Requests allow a development organization to understand stakeholder needs. They are a fundamental piece of the requirements process because they provide an understanding of the business problem that must be solved.
Requirements Definition
Integrated Requirements Definition and Management
Focuses on elicitation techniques to drive an understanding of the business. Offers various techniques to elicit, discover, and specify requirements. Validates thoughts to aid in the definition of better requirements.
Requirements Definition
Requests (The need) Business objectives Business processes Rich text documents
Glossary
Collaboratively elicit, capture, elaborate, discuss, and review requirements by using a variety of techniques, fostered by best-practice guidance Storyboards and application sketches
Use cases
Other techniques
Prototypes
Requirements in Management
Searches and filters on requirements attributes Traceability between related requirements and other artifacts Impact and coverage analysis
97
The fundamental components to the requirements definition process are explained as follows: Rich text documents
Rich text documents can be used throughout the requirements elicitation process. For
example, an analyst might conduct interviews to obtain a better understanding of the customers business. Information obtained from the interviews is key to providing context for defining requirements. Business processes Understanding the business is a key element to the requirements process. A good understanding of business processes is important for building the right systems. Capturing a current or as-is business process and later evaluating it to define a future or to-be business process allows teams to define requirements that support the to-be process. The to-be process, in turn, supports the business goals and objectives. More value is added to the solution if information is captured about peoples roles and responsibilities, as well as definitions of what items are handled by the business as a basis for building the system. Business objectives A business objective is a need that must be satisfied by the business. Business objectives describe the desired value and are used to plan and manage the activities of the business. All requirements should support at least one business objective. Glossary Creating a glossary and capturing terms helps provide an understanding of industry specific terms and so on. These terms are important for the requirements process, so that all stakeholders involved in the development process can understand the relevant terms. Prototypes
Storyboards are a sequence of sketches or wire frames that define scenarios based on a series of tasks. They allow for multiple threads and depend on the path that the user takes through the system. Application sketches provide a high level view of a specific scenario. Both provide a visual context of a GUI.
Other techniques The capture of written process descriptions and transference into business flow diagrams is helpful in the requirements process. Textual transformation to a process flow diagram provides a visual representation of the information. Use case A use case is a sequence of events that provides an observable result to an actor. Use cases are helpful because they provide a story or scenario. They capture the functional requirements of a system. Further detail requirements This information is derived from a stakeholders needs. Often times more detailed requirements, such as business rules and nonfunctional requirements, provide pertinent supplemental detail that supports higher-level requirements defined earlier in the requirements definition and management process.
98
Considerations
The following questions and comments are a subset of probable questions and comments to consider as a result of the definition process: Are the need statement and business problem understood? If they are not understood, what kind of elicitation and definition activities might occur to drive an understanding of the business (sketches, storyboards, and so on). Has the request been validated? Is there an agreement on the priority of the request? Have supplemental detailed requirements been captured to augment higher level requirements as needed?
Organize
Often the focus in requirements processes in the past has been on the management aspects of requirements. Requirements are captured, organized, and traced to requirements and other assets in the software development life cycle. Traceability relationships often have become behavioral where teams define relationships just to have them. This type of activity, if not measured, can become burdensome to some organizations and not necessarily provide value. The true intention of setting traceability is to provide an understanding of requirement relationships and potential impacts for change. Bob, the analyst manager, defines the following feature-level requirements that have other requirements that are traced to them: 1...n use cases that development will implement, which trace back to the feature 1...n test cases that test teams will validate Any change at the feature level creates a suspect link down the chain, so that development and test can react to the change and update assets. Suspect links identify requirement trace relationships that are impacted from a requirement change. If a requirement changes on either side of the trace, the relationship is marked suspect. It is not enough just to have traceability without a defined process to monitor and address the change. Otherwise, the trace relationships and change impacts are not worth much. Teams must build a process around trace relationships that are identified. Stakeholders downstream must monitor for change and react. Other types of organizational approaches entail capturing many types or kinds of requirements. Details can be depicted through technical decomposition of requirements. As mentioned in 4.1.4, Requirements definition and management blueprint on page 93, organizations should identify enough detail for the kinds of requirements that are captured, the trace relationships that are set to provide value to the stakeholder, and other persons who are involved in the requirements process. Organizations that adopt agile and lean approaches focus only on those activities that provide value to the customer. If traceability relationships do not provide value to the customer, these teams might choose to implement minimal traceability. A CALM solution should be flexible enough to support detailed process-centric approaches to organizing requirements to more Agility-at-Scale-oriented processes. In the sections that follow, we describe different activities that occur during the management of requirements. These activities help in the refinement of requirements as a solution team
Chapter 4. The team responds to a requirement change
99
has a better understanding of requirements. The management activities help provide a clearer perspective of the objective. The intention to perform these activities is to make the requirements more consumable across the software development life cycle. These components, as illustrated in Figure 4-6, describe management activities and include attributes, traceability, and impact and coverage analysis.
Requirements Management
Integrated Requirements Definition and Management
Provides a common understanding of requirements between stakeholders and development Categorizes requirement information Addresses change
Requirements Definition
Requests (The need) Business objectives Business processes Rich text documents
Glossary
Collaboratively elicit, capture, elaborate, discuss, and review requirements by using a variety of techniques, fostered by best-practice guidance Storyboards and application sketches
Use cases
Other techniques
Prototypes
Requirements in Management
Maintain consistency of project Traceability between related requirements and other artifacts Impact and coverage analysis
Feature Requirement 4
The ALM solution should identify That there is a change that might impact traced requirements. In this example a change to a stakeholder request Can impact how the feature is delivered to implement the request.
Figure 4-7 Traceability and impact analysis
101
Gap analysis information is also helpful as team members are able to discover missing relationships where anticipated. If gaps exist, there is potential scope creep. In the example in Figure 4-8, there is a feature requirement that is not traced to a stakeholder request. It is more important than ever to control scope creep with lean development and limited resources to deliver solutions.
Feature Requirement 4
The ALM solution should identify that there are traceability gaps for requirements. In this example, there is a feature that is not related to a stakeholder request. This missing trace relationship might be indicative of scope creep.
Figure 4-8 Traceability and gap analysis
102
Coverage analysis is also helpful for teams. Information should be usable across the software development life cycle. Coverage analysis identifies how assets are related to one another across disciplines. For example, in Figure 4-9, the feature requirements are leveraged in a test plan, identifying the function that will be tested.
Feature Requirement 4
Cross discipline traceability between test and requirements identifying test coverage
Requirement Assets
Test Plan Test Case Test Case Test Case Test Case
Figure 4-9 Traceability and coverage analysis
Test Assets
Iterative refinement
As the solution team gains further understanding of how to build a solution, the requirements will become more detailed. Abstraction of the requirements naturally occurs as the context for the requirements is obtained.
Accommodating change
Requirements definition and management is impacted by change, just like other disciplines. Change is inevitable in the requirements life cycle. It is important to note how teams address change and incorporate it into their requirements process. This section highlights information about change management and its relationship with requirements. Organizations must identify a change management strategy for requirements and ensure that the tooling that they use supports those changes. Change requests should be reviewed just like any other type of request. A change request is something that changes the scope for requirements after the scope has been agreed upon. The change request must be reviewed to assess if it makes sense to incorporate the change. When reviewing the change request, it is important to determine the type of request. The kind of change request might have a different impact upon the requirements process. If the change is simply a document change for a type of formal deliverable, the process to implement the change is likely less stringent.
103
Another type of change can be a content type of change. A content change is something that can simply change the language that is used to express a requirement. A potential example is the requirement text must be rephrased to be better understood. For example, the original requirement indicates provide a fast search mechanism. The rephrased requirement states provide the ability to search on customer information and provide a result set within 5 seconds. The last type of change is a functional change. A functional change is something that impacts the scope of requirement content to be delivered in a solution. The functional change might entail the addition of a new requirement or removal of a requirement to an iteration. Often times when changes are incorporated, concessions must be made in order to include higher priority requirements and descope lower priority requirements.
Considerations
The following questions and comments are a subset of probable questions and comments to consider as a result of the organization process: Categorize requirements to help in project planning activities and to help provide supplemental information about the requirement. Consider the type of metrics that must be captured about requirements for planning activities. Depending on the requirements process followed, identify key trace relationships for different types of requirements. Use traceability as needed as part of the verification process to ensure implemented requirement resolve original need statement. Use impact analysis to help define how requirement change may impact other requirements, or potentially project planning activities. Identify requirement gaps to ensure that neither of the following conditions exist: Missing requirements where requirements should be defined Scope creep, new requirements added late in life cycle without identifying the impacts Only requirements that address original need statements should be included. Perform coverage analysis for use requirements in other portions such as the test life cycle to ensure that requirements are tested. Identify a change request process and ensure that tools support the process. Obtain an understanding of which requirements will be impacted before implementing the change.
Evaluate
Identifying the results of a project is important to the requirements process. A solution team is considered effective if the correct solution is delivered on time and on budget. Performing this task is always a challenge, and there is always room for improvement. Lessons learned might be applied to project planning activities for future projects.
Obtaining measurements for project health As part of the assessment process, metrics capture is important. Metrics capture is described
in more detail in Chapter 14, Delivering and measuring success in Application Lifecycle Management on page 533. As part of the project startup or planning activities, organizations must identify the kind of measurements that are important in regard to the software development process.
Performing retrospectives
The same holds true for capturing information about project health. This type of information can also be used for retrospectives. Metric information and project health details can help project teams improve upon their requirements process, so that they are more effective. 104
Collaborative Application Lifecycle Management with IBM Rational Products
The product owner submits a request for the current iteration. The team determines that it can be contained in the current iteration plan. The impacted team leads update their plans, and Patricia confirms the solution iteration plan.
1.3 Marco updates the development iteration plan Marco Development Lead 1.4 Tammy updates the solution test plan 1.6 Bob defines and manages the requirements Tammy Test Lead
The requirements definition and management story begins with the product owner. This scenario begins when Bob reviews the iteration plan and realizes that the user interface branding is not included in the iteration. A new request is entered for the UI branding. This act includes the following scenes: Bob submits a request. Patricia updates the project iteration plan. Marco updates the development iteration plan. Tammy updates the solution test plan. Patricia confirms the project iteration plan. Bob defines and manages the requirements.
105
Bob is the name of the product owner. He cares about managing his business and bringing
value to his users and stakeholders. As the business application owner, working in an agile environment, he works closely with the development team and has ownership over the requirements priorities. Additionally, he ensures that the request information has appropriate detail so that it can be implemented. He wears more than one hat, however, in this story. He also performs analysis activities in the requirements process. As an analyst, he performs elicitation techniques such as application sketches business process definition, and storyboards, to provide context for requirements. He also refines and manages requirements as needed.
Patricia is the name of the project leader. She is responsible for coordinating the efforts of this team of teams. As each team produces its iteration plan, Patricia incorporates the plans into the overall project iteration plan. She works with Al to establish the pace of the iterations (how many iterations for the project and how long each will last). Her job ensures that all teams (development and solution test) are working toward the same iteration goals and that the work is aligned across the teams. Al is the name of the solution architect. He works with the development and test leads to
ensure that the team works from a consistent architectural approach. He provides insight into the iteration plans by identifying the architectural significant tasks for each iteration. He also seeks to reuse existing assets wherever possible to ensure consistency in approach and implementation.
Marco leads an agile development team. He understands the need to fit into Patricias project plan, but seeks to maintain the agile approaches that have made his team successful. His team is self-organized and uses more frequent iterations than the rest of the project team. Marco still conducts daily stand-up meetings with his team and employs test-driven development techniques on his component. Tammy is the name of the test lead. Her team is responsible for conducting solution testing, which includes functional, performance, and security testing at the solution level. The testing does not include JUnit or component level testing, which is the responsibility of each team. Tammys team conducts solution testing as part of the iteration. They take a new solution build each week, thus providing an early feedback loop to the development team, when there are defects at the solution level.
106
5. Patricia confirms the iteration plan to indicate the updates from the component team. 6. Bob defines and manages the requirements that are related to the request. Figure 4-11 displays the activities that occur in Act 1: Respond to change.
Respond to Change
1.3 Marco updates the development iteration plan 1.4 Tammy updates the solution test plan
Bob Product Owner Patricia Project Manager
Develop Resolve
Test Resolve
1.5
Resolve request
Confirm plan
Monitor solution
Figure 4-11 The flow of steps for Act 1: Responding to a change request
107
108
The workflow in this scene captures how Patricia performs the following tasks: Triages a requested change for the next iteration Plans work for a request by creating and assigning tasks to her team The sizing of requests is explained in 4.3.2, Sizing requests on page 113.
109
The workflow in this scene captures how Tammy performs the following tasks: Updates the iteration test plan and assigns tests that are related to Bobs request Allocates the required test servers to execute her test plan
110
111
Plan
Review work
Define
Manage
Complete work
Resolve request
Figure 4-12 The flow of steps for defining and managing the requirements
112
The end goal is to identify a prioritized list of requests that are taken forward for the iteration. This prioritized list may be identified as the backlog if following agile practices. This list should be pruned for requests to implement for upcoming iterations. Review and reprioritization of these items can occur in later activities as the requirement or development team refines the request into requirements. This list is used, is reviewed, and is fluid as the team is required to respond to change.
113
114
Chapter 5.
115
5.7, Planning and measuring success in change management on page 177 5.8, Reference architecture and configuration on page 186 5.9, Problem determination and known workarounds on page 203 Role-based guide: To understand how the content in this chapter applies to your role, see the role-based guide in Table 1-1 on page 14. The key for this table is shown in Figure 1-7 on page 13.
The product owner submits a request for the current iteration. The team determines that it can be contained in the current iteration plan. The impacted team leads update their plans, and Patricia confirms the solution iteration plan.
1.3 Marco updates the development iteration plan Marco Development Lead 1.4 Tammy updates the solution test plan 1.6 Bob defines and manages the requirements Tammy Test Lead
This act contains the following scenes: Bob submits a request. Patricia updates the project iteration plan. Marco updates the development iteration plan. Tammy updates the solution test plan. Bob defines and manages the requirements. Patricia confirms the project iteration plan. The following IBM Rational products are used in this act: IBM Rational RequisitePro 7.1.0.0 IBM Rational Requirements Composer 7.1.0.0 IBM Rational ClearQuest 7.1.0.0 IBM Rational Quality Manager 8.0 beta
116
In addition, the following products were integrated: Rational RequisitePro and Rational Requirements Composer for requirements management and storyboarding Rational RequisitePro and Rational ClearQuest for traceability between change requests and requirements Rational ClearQuest and Rational Team Concert and Rational Quality Manager for team interoperability in a geographically distributed environment
Rational RequisitePro
Rational RequisitePro is a full featured, flexible, and integrated requirements management tool. Requirements management is key to a projects success. Rational RequisitePro is a requirements management solution that aids teams in organizing their requirements. It provides collaboration capabilities to help ensure accurate communication and management of requirements as they evolve. Additionally, requirements can be categorized by using attribute functions in order to define prioritization of requirements, for example. The Extensibility Interface API is included and allows access to requirement information outside of the context of the tooling. As a result, Rational RequisitePro can be extended by using this API to extract information from the database or import information from external sources or applications into Rational RequisitePro. Rational RequisitePro offers the following key advantages among others: The ability to capture, track, manage, and analyze different types of requirements Dynamic integration between the Microsoft Word application and a requirements database The requirement content stored in the database aids teams in organizing, prioritizing, and tracking project requirements, which is something that the Word application alone cannot do well. The ability to specify who is authorized to modify requirements, attributes, and documents In-depth traceability and coverage analysis
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
117
Understanding of the impact of changing requirements Support for distributed team members by the Web Integratable with marketplace-leading life-cycle tools including solutions for business modeling, defect and change tracking, visual modeling, automated testing, configuration management, and process guidelines These integration points help support the entire software development team and the software development process.
118
In addition, databases can be multi-sited to share data across a wide area network (WAN). An API is included to all scripted access to database information. Rational ClearQuest offers the following key advantages among others: ALM package for managing a teams work in the context of secure and role-based projects Real-time reporting and process enforcement to improve project visibility and control Automated workflows and e-mail notifications to enhance team communication and coordination Access control, electronic signatures, repeatable processes, and audit trails to simplify compliance management Web interface for easy access from virtually anywhere Integration with requirements, development, build, test, deployment, and portfolio management tools for simplifying rapid response to change The highly customizable architecture of Rational ClearQuest makes it an ideal tool for any organization to adapt their existing process.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
119
Submitter
Submits request for Triages requests Assigns tasks to projects change (Validates the release) Change performed in the context of
Test Lead
Ensures quality
Team Lead
Assigns activities to complete tasks
Tester
Tests changes in baselines
Developer
Works on activities Develops and delivers changes
Release Engineer
Integrates and builds the delivered changes Creates baselines
The ALM schema provides a set of records with relationships that help teams manage software development projects. The ALM schemas principle role is to help teams manage the work that is involved in delivering software projects. It provides useful building blocks and a framework that facilitates custom configurations to fit into every enterprise. There are three essential concepts to understand when working with the ALM schema in ClearQuest: Projects provide the context for managing work that is created by the team members. Users are granted access to projects through security policies, and their actions are defined by their role. Managing work is enabled in the form of requests, tasks, and activities. The definition of activities and tasks is driven by process definitions, which can change from project team to project team. System-wide settings can be defined for projects and managing work. These settings allow for reuse and consistent classification across multiple projects. They can adapt to the enterprise. These settings typically involve a one-time setup or minor changes as the teams grow and evolve with their use of the system. (ClearQuest administrators start here.) In the reference scenario, we mainly work with requests, tasks, and activities that are used to manage work in the context of an existing project. As shown in Figure 5-4 on page 121, all work starts with a request. Requests are planned and implemented with tasks, and tasks are completed by using activities. When all activities are complete, the task is complete. When the tasks are complete, the request is complete.
120
Problem Information
Initiate Request
Submit Request
Process Request
Create Task
Process Task
Complete Activities Create Activities
Process Activities
Figure 5-4 The flow of request, task, and activity records
A request contains a petition to the team to make a change and includes information that is related to where and how the request was found. It is related to a category that provides further classification for identifying where the need was found, for example, a product, feature, component, or service. The request type identifies the nature of the request, for example enhancement, defect, or feature. However, the request can be expanded to cover any type of request for work. By using RUP as an example, you can create a request to initiate an iteration. A request is owned by the submitter and contains references to all tasks that are associated with it. The tasks contain information about where the request will be fixed. A task represents the work that is needed by a team to complete their part of the request. A task contains all information that is related to where the request will be addressed. It is owned by someone on the project team and represents an aggregation of work spread across multiple team members. In addition, tasks contain references to all activities that are required to complete the task and refer back to the request that it is intended to fulfill. Lastly, an activity is owned by an individual contributor on the project team and represents a single unit of work. It refers back to the task that it helps to complete and can be enabled for Unified Change Management (UCM). More information: For more information and core concepts about setting up Rational ClearQuest and the ALM schema, see the IBM developerWorks three-part series of articles for Application lifecycle management with ClearQuest 7.1.0.0. You can find these articles on the Web at the following addressees: Part 1 http://ltsbwass001.sby.ibm.com/cms/developerworks/rational/library/edge/08/m ar08/pampino-pierce/index.html Part 2 http://www.ibm.com/developerworks/rational/library/edge/08/apr08/pampino-pie rce/index.html Part 3 http://www.ibm.com/developerworks/rational/library/edge/08/may08/pampino-pie rce/index.html
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
121
122
Rational ClearQuest
Request Task Task Project Iteration Task Work item (Task) Project area Iteration Change set Work item
A second case of interoperability is the assignment of work. This case occurs when the activities of a task are assigned to the team members for completion. In the case of one or more team members that use Rational Team Concert, synchronized work items are created in their repositories for each assigned activity. An example of this case is Diedrie being assigned the activity to review the outcome of Als refinement of the architecture, which is required to support Bobs UI branding request. In such a scenario, Patricia, or Al, creates an activity or type of Review, and assigns the activity to Diedrie. The activity is created as a synchronized work item in Rational Team Concert. The new work assignment is in Diedries plan and the iteration. See Figure 5-6.
Rational ClearQuest
Request Task
(Develop Architecture)
(Refine Architecture)
Activity Activity
(Review)
Project Iteration
Work item
(Activity)
The scenario in this chapter demonstrates how the team uses the ClearQuest ALM solution and Rational Team Concert to achieve alignment of work. The ClearQuest Connector for Rational Team Concert is an integrated part of the scenario to connect the teams and their repositories. In Part C, Act 2: Collaborative development on page 211, the scenario turns its focus to collaborative development by using Rational Team Concert and how the ClearQuest Connector supports project health tracking.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
123
Before projects can use the ClearQuest Connector, they must be configured in the Rational ClearQuest and Rational Team Concert environments, which involves configuring the following items: The Rational ClearQuest schema with a ClearQuest Connector package for Rational Team Concert The ClearQuest Connector Gateway and Jazz server for Rational Team Concert Synchronization rules in Rational Team Concert Optionally: The work configurations in Rational ClearQuest and the Rational Team Concert team area process To configure the ClearQuest Connector for Rational Team Concert, see Appendix B, Configuring interoperability on page 565.
5.5 Managing a change request with Rational RequisitePro and Rational ClearQuest
Synopsis: Act 1 of the story exemplifies how the team responds to a new change request that has been submitted by Bob, the product owner. This request is submitted by using ClearQuest ALM, and assets are created to represent planned work, in the form of tasks and activities, which need to be assigned to and worked on by various members of the organization. Patricia, the project manager, uses Rational ClearQuest to triage these assets to Al, the architect; Marco, one of the component leads; and Tammy, the test lead. Additionally, Bob uses Rational RequisitePro and Rational Requirements Composer to do additional requirements definition work and storyboarding. Each team member works on their respective assets and keeps Patricia updated on their progress. In this section, we follow the referenced scenario to see how the Rational ALM solution is used by various members of the enterprise organization in their daily tasks while working on release two of the Account Opening application and the Credit Check project.
124
The workflow in Figure 5-7 shows the following actions: Bob submits a request. Patricia updates the project iteration plan. Marco updates the development iteration plan. Tammy updates the solution test plan. Bob defines and manages the requirements. Patricia confirms the project iteration plan. Act 1 is also described in 4.2, A reference scenario for responding to a change request on page 105.
Respond to Change
1.3 Marco updates the development iteration plan 1.4 Tammy updates the solution test plan
Bob Product Owner Patricia Project Manager
Develop Resolve
Test Resolve
1.5
Resolve request
Confirm plan
Monitor solution
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
125
In Act 1, the team creates several new artifacts and establishes traceability to support the life-cycle collaboration. Figure 5-8 shows the life-cycle collaboration artifacts that are established in this act.
Found in
ALM Project
[AO_Rel2]
ALM Phase
[Construction]
ALM Iteration
[02] Assigned to CQI
Sketch
Related Artifact
ALM Request
[Enhancement]
Associated
CQ:Requirement
Requirement
ALM Task
[Size] Tasks
ALM Activity
[Size] External Connection
Work Item
[Activity]
ALM Task
[Detail Requirement]
ALM Task
[Develop Architecture]
Iteration Plan
Planned For
ALM Activity
[Review] External Connection
Work Item
[Activity]
ALM Task
[Implement] External Connection
Work Item
[Task]
ALM Task
[Test] External Connection
Test Plan
Test Case
A A A
Figure 5-8 Life-cycle collaboration artifacts established in Act 1: Responding to a change request
The following artifacts, which are created in this act, span multiple products. For each artifact, we include the type and the tool in which they are created. ALM Project (Rational ClearQuest): The AO_Rel2 project on which the team is working. ALM Phase (Rational ClearQuest): The Construction development phase in the Open Unified Process (OpenUP) development process that is used by the project. ALM Iteration (Rational ClearQuest): The Construction 02 iteration that the team is currently planning. ALM Request (Rational ClearQuest): The release requirements for the project. Requests take the form or defects and enhancements. ALM Task (Rational ClearQuest): The committed work, planned for an iteration, to deliver a part of a request. ALM Activities (Rational ClearQuest): Work managed as UCM activities or Rational Team Concert work items. Work Item (Rational Team Concert): Work planned for an iteration and monitored in Rational Team Concert. Iteration Plan (Rational Team Concert): Contained work for an iteration. Work item (Rational Quality Manager): Test work planned and monitored in Rational Quality Manager. 126
Collaborative Application Lifecycle Management with IBM Rational Products
Test Plan (Rational Quality Manager): Test plans in Rational Quality Manager. Test Case (Rational Quality Manager): Test cases in Rational Quality Manager Requirement (Rational RequisitePro): Managed requirements that define and elaborate on stakeholder requests. Requirement (Rational ClearQuest): Record supporting traceability between ALM assets and Rational RequisitePro. Sketch (Rational Requirements Composer): Asset that provides requirements definitions and elaboration. Reusable Asset (Rational Asset Manager): Managed asset for reuse by a development organization, for example.
Respond to Change
1.3 Marco updates the development iteration plan 1.4 Tammy updates the solution test plan
Bob Product Owner Patricia Project Manager
Develop Resolve
Test Resolve
1.5
Resolve request
Confirm plan
Monitor solution
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
127
ALM Project
[AO_Rel2]
ALM Phase
[Construction]
ALM Iteration
[02] Assigned to CQI
Sketch
Related Artifact
ALM Request
[Enhancement]
Associated
CQ:Requirement
Requirement
ALM Task
[Size] Tasks
ALM Activity
[Size] External Connection
Work Item
[Activity]
ALM Task
[Detail Requirement]
ALM Task
[Develop Architecture]
Iteration Plan
Planned For
ALM Activity
[Review] External Connection
Work Item
[Activity]
ALM Task
[Implement] External Connection
Work Item
[Task]
ALM Task
[Test] External Connection
Test Plan
Test Case
A A A
128
4. He completes all mandatory and optional fields: a. For Category, he chooses AccountOpening. The Project field is automatically populated with AO_Rel2. Tip: ALMCategory records can optionally identify a current project for that category. In this scenario, the AccountOpening category record identifies AO_Rel2 as its current project. When submitting a request, selecting the AccountOpening value for the Category field populates the Project Found In field with the current project from the ALMCategory record. Setting the current project on the category reduces the amount of information needed by a submitter and reduces the number clicks for submitting a request. b. For Type, he chooses Enhancement. c. For Severity, he chooses Sev1 - Critical. Tip: The packages also provide hooks that provide choice list hooks for other fields on the record such as Type and Severity. The items in the choice list are derived from the project in the Project Found In field. These lists are blank until a Project Found In field is identified on the record. This allows project teams to use different values without having to modify the Rational ClearQuest schema. These configurations are defined in the ClearQuest ALM work configurations that are discussed in 5.8.3, Configuring Rational ClearQuest and the ALM schema on page 194. d. For Owner, he chooses Bob. e. Optional: He switches to the Project tab and adds Patricia to the Notify List. f. He clicks OK to save the record.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
129
Upon saving this ALMRequest record, Bob is done providing his release requirements to the project team. We now switch to Patricia, the project manager, in the reference scenario.
130
This scene involves the following tasks: Updating the project iteration plan Assigning work Figure 5-12 highlights the workflow.
Respond to Change
1.3 Marco updates the development iteration plan 1.4 Tammy updates the solution test plan
Bob Product Owner Patricia Project Manager
Develop Resolve
Test Resolve
1.5
Resolve request
Confirm plan
Monitor solution
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
131
ALM Project
[AO_Rel2]
ALM Phase
[Construction]
ALM Iteration
[02] Assigned to CQI
Sketch
Related Artifact
ALM Request
[Enhancement]
Associated
CQ:Requirement
Requirement
ALM Task
[Size] Tasks
ALM Activity
[Size] External Connection
Work Item
[Activity]
ALM Task
[Detail Requirement]
ALM Task
[Develop Architecture]
Iteration Plan
Planned For
ALM Activity
[Review] External Connection
Work Item
[Activity]
ALM Task
[Implement] External Connection
Work Item
[Task]
ALM Task
[Test] External Connection
Test Plan
Test Case
A A A
132
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
133
To assign the test task, Patricia performs the following steps: 1. She double-clicks the newly created ALMTask record of type Test from the Tasks field to open it for viewing. 2. She clicks the Modify button on the record form to put the ALMTask record in a modifiable state and completes all mandatory and optional fields: a. a. b. c. In the Description field, she adds optional instructions for the test planning. For Priority, she chooses Prio1 - Urgent. For Owner, she chooses Tammy. For phase and iteration, she chooses Construction and 02.
3. She clicks the Apply button to save her changes. The Define Requirements and Develop Architecture tasks have already been assigned to Bob and Al as part of the default role in the OpenUP and project work configurations. Patricia can optionally open the records and provide additional documentation, or set notification, to Bob and Al in their task records.
134
4. She clicks OK to save the changes. Upon completion of assigning the ALMTask records, Patricia has completed the triage process, and each member of the team can begin to do iteration planning. Both Marco and Tammy are notified that they have new work assigned to them as news feeds or e-mail, or by using the query capabilities in their respective tools.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
135
Respond to Change
1.3 Marco updates the development iteration plan 1.4 Tammy updates the solution test plan
Bob Product Owner Patricia Project Manager
Develop Resolve
Test Resolve
1.5
Resolve request
Confirm plan
Monitor solution
136
Found in
ALM Project
[AO_Rel2]
ALM Phase
[Construction]
ALM Iteration
[02] Assigned to CQI
Sketch
Related Artifact
ALM Request
[Enhancement]
Associated
CQ:Requirement
Requirement
ALM Task
[Size] Tasks
ALM Activity
[Size] External Connection
Work Item
[Activity]
ALM Task
[Detail Requirement]
ALM Task
[Develop Architecture]
Iteration Plan
Planned For
ALM Activity
[Review] External Connection
Work Item
[Activity]
ALM Task
[Implement] External Connection
Work Item
[Task]
ALM Task
[Test] External Connection
Test Plan
Test Case
A A A
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
137
4. In the Work Item editor: a. He clicks the Planned For list for the work item and selects the Construction Iteration C2B value. b. He clicks the Priority list for the work item and selects the Medium value. c. He clicks Owner and assigns the work item to Diedrie. d. He creates an entry in the Discussions field to document the triage decision and to provide guidance to Diedrie. 5. He clicks the Save button to apply the changes to the work item.
Figure 5-17 Marco triaging and assigning the UI branding work item to Diedrie
These steps exemplify one way to assign work to a team member. Other options are to drag work items in the iteration plan or to right-click a work item and select Assign to Owner. For information about additional tasks that Marco and his team must do and the artifacts that are created, see 7.3, Rational Team Concert for agile development on page 246.
138
Respond to Change
1.3 Marco updates the development iteration plan 1.4 Tammy updates the solution test plan
Bob Product Owner Patricia Project Manager
Develop Resolve
Test Resolve
1.5
Resolve request
Confirm plan
Monitor solution
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
139
Found in
ALM Project
[AO_Rel2]
ALM Phase
[Construction]
ALM Iteration
[02] Assigned to CQI
Sketch
Related Artifact
ALM Request
[Enhancement]
Associated
CQ:Requirement
Requirement
ALM Task
[Size] Tasks
ALM Activity
[Size] External Connection
Work Item
[Activity]
ALM Task
[Detail Requirement]
ALM Task
[Develop Architecture]
Iteration Plan
Planned For
ALM Activity
[Review] External Connection
Work Item
[Activity]
ALM Task
[Implement] External Connection
Work Item
[Task]
ALM Task
[Test] External Connection
Test Plan
Test Case
A A A
140
3. She clicks the 101: Corporate UI Branding task to review and edit its contents, which are shown in Figure 5-21.
Figure 5-22 Running the My Test Plans query Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
141
A query runs to locate all of Tammys test plans. Then a new tab is added to Tammys workspace with the list of available test plans. 2. She clicks the Account Opening test plan to open it. At this point, she has little information other than a new enhancement request is added to the iteration. Her goal is to ensure that it will be tested by adding placeholders to the test plan. 3. She adds and assigns a test case to the test plan. a. In the Test Plan Table of Contents, she clicks Test Cases (Figure 5-23).
Figure 5-23 Test Cases menu item in the Test Plan Table of Contents
142
b. Tammy clicks the Add Test Case button as highlighted in Figure 5-24. The test cases included in this test plan are visible.
c. In the New Test Case window, Tammy enters the following details to capture the test case. Figure 5-25 shows the original version of this window before she enters the details. i. For Name, she types UI Corporate Branding. ii. For Description, she pastes the description from the task that Patricia assigned into the Description field. iii. For Weight, she enters 1. iv. For Owner, she selects Tanuj. v. For Theme, she selects Branding. vi. For Category, she selects Credit Check. vii. For Function, she selects Login. She clicks Save to create the test case.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
143
The window closes, and the test case is added to the plan. Note that the test case is listed in plain text and is not a link. 4. She saves the test plan by clicking the Save button in the upper right corner of the Test Plan tab. The new test case becomes a linked item in the test plan. Note: In Act 4, Tammy updates the requirements in the test plan by linking to the requirements that Bob creates at the end of this act. She also creates a link between the requirement and the test case that she just created. 5. Tammy updates the exit criteria to ensure that the team does not release the software without implementing and testing this change. a. She clicks the Account Opening Test Plan tab to view the test plan. b. In the Table of Contents, she clicks Exit Criteria (Figure 5-26). The exit criteria for this plan is now visible. c. She clicks the Add Row button in the Exit Criteria user interface, which is highlighted with red square on the right side in Figure 5-26.
d. For Exit Criteria, she enters the following values: i. In the row that is added with the text preselected, Tammy types 100% user interface using corporate branding. ii. In the Current Value field, she types Pending requirements. iii. She leaves the Status field set as Not Started. e. Tammy clicks the Save button on the test plan. Tammy now has the following exit criteria in her test plan: 144 100% of all Priority 1 Defects fixed 100% requirements test coverage 100% user interface using the corporate branding
Exit Criteria comes into play later in the scenario as Tammy monitors quality in 11.5.5, Monitoring quality on page 455, and in the final act when the team determines that the iteration is complete in 13.3.2, The team leads assess their exit criteria on page 504. The new request adds additional work for her team. Therefore, Tammy reviews the estimate that she has provided for this iteration: 1. While viewing the Account Opening test plan, in Table of Contents, Tammy clicks Test Estimation (Figure 5-27).
The new request is a simple user interface test to confirm that the correct branding elements are used. This single request requires that the test team perform the following actions: Create the test cases. Determine how many test execution work items to run. Execute the test execution items. Evaluate the results and manage defects. Possibly update the test environments that are required for testing. For example, a new request might require adding another browser version to the testing matrix.
Tammy is using person hours to track the test effort and sees that her test architect has already sized this test effort. With a team of six people working on a four-week iteration, they estimate that they can have a total of 720 person hours (6 people x 30 hours a week x 4 weeks). Tammy and her team use 30 hours instead of 40 hours in their estimate to allow for 10 hours a week to account for e-mail, meetings, and other tasks outside of the test effort. The planning estimate is currently 120 person hours. This estimates 20 hours per person for a six person team. Tammy includes test planning and test-case construction as part of the planning effort. The execution effort is currently 600 person hours, which estimates 100 hours per person over the course of the four-week iteration. 2. Taking all of this into account, Tammy adds two hours to the Planning Effort field by changing the value to 122. 3. Tammy adds two hours to the Execution Effort field by changing the value to 602. These estimates push the sizing effort beyond their target by a small amount. Tammy decides that the team can absorb this small change. Had the request required a larger amount of
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
145
work, Tammy would have to reconfigure her plan to accommodate the request or work with the Patricia, Marco, and the other development leads to manage the scope of the iteration.
d. She clicks Save. 3. She click Test Objectives and reviews them. She realizes the shared objective of a re-branded UI. She repeats the steps from the Business Objectives section of the test plan. 4. She clicks Quality Objectives and reviews the Quality Objectives section of the test plan. a. She clicks Quality Objectives in the Table of Contents for the test plan. b. She decides to add the re-branded UI as a quality goal. She clicks the Add Row button and types a new quality goal of 100% of user interface complies with corporate brand as shown in Figure 5-29 on page 147.
146
c. She clicks Save on the test plan. 5. She skips Reviews and Approvals since there are none for this test plan, and she skips Requirements because she just reviewed them. 6. Tammy confirms her execution environments by clicking Test Environments in the Table of Contents. In the Test Environments pane, she can add platforms such as browsers, databases, operating systems, and other items. This list is then used to generate test configurations for use in test execution. a. She reviews the contents of the Platform Coverage tab (Figure 5-30). She uses the Platform Coverage tab to create a nonbinding list of platforms that she intends to cover.
Figure 5-30 Platform coverage planned by using the Environments section in the test plan
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
147
b. In reviewing the list, Tammy decides to update the browsers to use for testing the Web interface. She clicks the Add Platforms to be covered button, which is represented by the pencil icon. c. In the Available Environment Options window (Figure 5-31): i. From the Environment Types list, she chooses Browsers. The window updates with a list of available browsers. ii. From the Available list, she selects Safari 3.0 and clicks the > button to move her choice to the Selected list. iii. She clicks OK. The platform coverage has now been updated. When the team creates test execution work items, this new browser version is taken into account.
148
7. She clicks the Test Environments tab and clicks the Generate Test Environments button which is highlighted in Figure 5-32 to generate the test environments for this iteration. The Test Environments tab describes the actual combinations of attributes that will be used for testing. The test environments are associated with an actual test execution.
a. In the Generate Test Environment wizard (Figure 5-33), for Step 1, Tammy selects all of the options. For Coverage, she selects All - All permutations and then clicks Next.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
149
b. For Step 2 (Figure 5-34), in which the wizard displays a list of test environments based on the platform support characteristics defined in the test plan, Tammy changes Group by to Browsers and views the list of test environments by browser type. c. Tammy selects each of the test environments that she plans to use in this iteration by clicking the check box next to each configuration. Then she clicks Finish.
150
The test environments are now added to Tammys test plan, some of which are shown in Figure 5-35. She can use Group by to group the environments by type, such as by Browser, Application Server, CPU, and so forth.
Note: In this scenario, Tammy generated the test environments. This approach makes sense if you are just getting started with Rational Quality Manager or you know that the test environments do not yet exist in the system. An alternative is to add existing environments into the plan. To add existing test environments to a test plan: 1. In an open test plan, click Test Environments. 2. Click the Add Existing Test Environments icon. 3. In the window that opens, select one or several test environments and click OK. Tammy is done reviewing and updating her test plan. Next she decides to confirm that the lab resources are reserved for this test effort.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
151
1. From the Lab Management menu, Tammy selects Create Request (Figure 5-36).
Figure 5-36 Choosing New Request from the Lab Management menu
2. On the Create Request page (Figure 5-37 on page 153): a. In the Summary field, she types a descriptive heading, such as Macintosh running Safari needed. This field is required. The rest of the fields on the Create Request page are optional. b. In the Priority field, for Priority (of the request), she selects Normal. c. In the Respond by field, shes sets the date to be one week from now. This is the time by which she needs a response from the lab manager about this request. d. In the Reservation section, she provides the start and end dates and times for which she needs the lab resource. For example, she wants this resource for the last two weeks of the current iteration. e. In the Comments field, she types a detailed description of the lab resource request. In this case, she is requesting a new configuration, which includes an Apple Macintosh computer running Safari as the client, which is connected to a server configuration that involves an application server and a database. f. In the Lab Resources section, she can enter a new lab resource description or select one from the test environments.
152
g. Because Tammy created test environments in Updating the solution test plan on page 141, she can now use the environments to request a lab resource by clicking the Add from Test Environment button, which is highlighted in Figure 5-38.
Figure 5-38 Adding a Lab Resource description from existing test environments
i. In the Select Test Environments window (Figure 5-39), Tammy selects one more environments, and chooses OK.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
153
The environments with all of their attributes are added in the Lab Resources section of the request. ii. Tammy removes any unneeded attributes, such as Application Server, from the request by clicking the red X next to the attribute. Since this is a client machine, her plan is to request a single client running Mac OS 10.5 and three browser types: Microsoft Internet Explorer, Apple Safari, and Mozilla Firefox. iii. She clicks the Add Criteria button next to Operating System (Figure 5-40).
iv. In the Select Attribute window (Figure 5-41), she selects Installed Software and clicks the Add button twice.
v. She selects the browser version for each of the Installed Software criteria. Her final request lists an operating system and three criteria for installed software (Figure 5-42).
154
h. When she is satisfied, she clicks Submit to send her request to the lab manager. Alternatively, she can do one of the following steps: To save the request as a draft without submitting it, she can click Save. To clear the form, she can click Reset. To cancel the request, she can click Cancel.
The request appears in her dashboard under My Requests. It is also listed when she selects All Requests from the Lab Management menu in the left panel. Behind the scenes (not covered in this book), Larry the lab manager prepares the configuration for Tammy and notifies her when it is available.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
155
Patricia runs her Project Requests query and confirms that all tasks are assigned to the team and that no team is rejecting work activities.
Figure 5-43 Patricia confirming the requests that have work planned in the current project
Patricia runs her Current Iteration query and confirms that all tasks are planned by the teams and align with the project plan. She notices that the CreditCheck team has de-prioritized Bobs UI branding request (Figure 5-44 on page 157). The work has been set as medium priority, with a due date at the end of the Construction 02 iteration. This makes Patricia concerned. She opens the activity to discuss the plan with Marco and his team. To align the plans, Patricia does the following actions: 1. She opens the UI Branding Activity that is assigned to Diedrie. 2. She clicks the Notes tab and reads the discussions. She confirms that the team is planning to complete this work in the C2B iteration and that the priority of the change has been misinterpreted. 3. She adds a new discussion entry and requests that this work is moved to the C2A iteration and underscores that Bob regards this as a high priority for the release. She saves the changes to the record.
156
As shown in Figure 5-44, Patricia confirms the alignment of the project plan and the team iteration plans. She identifies the late planned delivery of the Corporate UI Branding activity and collaborates with Marco to align the plans.
Figure 5-44 Patricia confirming the alignment of the project plan and the team iteration plans
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
157
Marco and Diedrie receive an event notification of the changes to the UI branding work item, and the team discusses Patricias view of the case (Figure 5-45). Marco and Diedrie update the Work Item priority, Planned For, and Due Date properties to align the iteration plan.
Figure 5-45 Patricia, Marco, and Diedrie collaborating on the alignment of the iteration plan
158
Plan
Review work
Define
Manage
Complete work
Resolve request
Found in
ALM Project
[AO_Rel2]
ALM Phase
[Construction]
ALM Iteration
[02] Assigned to CQI
Sketch
Related Artifact
ALM Request
[Enhancement]
Associated
CQ:Requirement
Requirement
ALM Task
[Size] Tasks
ALM Activity
[Size] External Connection
Work Item
[Activity]
ALM Task
[Detail Requirement]
ALM Task
[Develop Architecture]
Iteration Plan
Planned For
ALM Activity
[Review] External Connection
Work Item
[Activity]
ALM Task
[Implement] External Connection
Work Item
[Task]
ALM Task
[Test] External Connection
Test Plan
Test Case
A A A
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
159
160
4. In the Create Requirement pane, he creates a requirement by selecting STRQ: Stakeholder Request (Figure 5-49). Then he clicks Create.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
161
5. In the Requirement Properties pane (Figure 5-50), he provides a short description of the request in the Name field and a more detailed description in the description field of the need statement.
6. He clicks the Attributes tab and provides pertinent attribute information such as Priority. Although the request provides the need statement and business problem, it does not provide enough detail for a team to leverage the requirement information to implement the request. As a result, Bob decides that it is pertinent to conduct additional requirements definition activities in Rational Requirements Composer. The artifacts that he generates help him manage requirements in Rational RequisitePro later.
162
1. Bob marks the logo emblem on the sketch as a requirement (Figure 5-51).
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
163
2. He selects the element to mark as a requirement and chooses Mark as Requirement (Figure 5-52).
164
3. In the Mark As Requirement window (Figure 5-53), he provides a link description and name and chooses the type of requirement. He selects the attributes and clicks OK to create the requirement.
After the requirement is created, it is marked with an indicator that a requirement is present for that portion of the sketch.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
165
4. Bob informs his peers that he has created a new sketch and requests feedback to ensure that the logo change will address the UI branding requirement: a. With the logo selected, he requests feedback on the comment (Figure 5-54).
166
The comment is displayed in the list of comments for that sketch (Figure 5-55).
b. Peer respond to the comment as necessary and then close the comment thread by selecting the Resolve option.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
167
1. Bob selects the requirement, which is named UI Rebrand, right-clicks, and selects selects the Manage requirements option (Figure 5-56). Choose Add Requirement to RequisitePro.
168
2. In the Create Requirements in RequisitePro - Select Requirements window (Figure 5-57), he selects the requirement to manage, which is the UI re-brand in this example, and clicks Next.
3. In the Project Login window (Figure 5-58), he logs in to the RequisitePro project and clicks Finish to complete the manage process.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
169
4. In the Select a RequisitePro Package window (Figure 5-59), he chooses the appropriate Rational RequisitePro package to define the requirement. In this example, a Feature requirement is created. Bob selects the System Features and Vision package and then clicks Finish.
5. In the Results window (Figure 5-60), which indicates that a requirement has been created, he clicks OK.
170
6. Bob reviews the requirement (Figure 5-61) to ensure that it is created in the System Features and Vision package. The requirement is read only because it contains rich text, and the Location field defines that it is referenced from a Rational Requirements Composer requirement.
Figure 5-61 RequisitePro requirement created from managed Rational Requirements Composer requirement
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
171
1. Bob provides information to help categorize the requirement. This information can help with project planning and so on. He clicks the Attribute tab and categorizes the requirements by using attribute information (Figure 5-62).
2. Bob traces a feature requirement back to the stakeholder request. He clicks the Traceability tab to set pertinent trace relationships (Figure 5-63). As mentioned previously, as technical refinement of requirements occurs, pertinent traceability information is defined.
172
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
173
3. He logs in to Rational ClearQuest in the window that opens. He provides the login and password and selects the appropriate schema and database. The Rational ClearQuest unique ID for the requirement is now shown (Figure 5-65).
The requirement can then be linked to the Rational ClearQuest Define Requirements activity as explained in the following section.
174
After the requirement is associated with the activity, it is listed on the Requirements tab as shown in Figure 5-66.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
175
The association can also be reviewed by using Rational RequisitePro. Figure 5-67 shows the traceability association in Rational RequisitePro.
After saving the record Bobs work is complete. He can now transition the record into a Complete state by using the complete action and add any additional notes to the record for Patricia and the rest of his team: 1. Bob clicks the Complete button. 2. He provides any necessary information or notes to the description. 3. He clicks the Submit button to save the changes.
176
ALM Task (Rational ClearQuest) ALM Activities (Rational ClearQuest) Work Item (Rational Team Concert) Iteration Plan (Rational Team Concert) Work item (Rational Quality Manager) Test Plan (Rational Quality Manager) Test Case (Rational Quality Manager) Exit Criteria (Rational Quality Manager) Test Environment (Rational Quality Manager) Lab Request (Rational Quality Manager) Requirement (Rational RequisitePro) Requirement (Rational ClearQuest) Sketch (Rational Requirements Composer)
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
177
178
reporting within their local client is important. Local access to report authoring and execution within their software delivery environment allows them to create adhoc reports to answer tactical questions. Rational ClearQuest provides BIRT Designer within the Rational ClearQuest Eclipse client, which gives these team members a flexible reporting solution to meet their needs. Additionally, stakeholders that may not operate within Eclipse also need access to reports. Rational ClearQuest provides an enterprise reporting server where reports can be executed and displayed via a standard Internet browser to meet these stakeholder needs. Also, customers can embed Rational ClearQuest BIRT reports into their applications by using the BIRT API. This increases the ability for the organization to use Rational ClearQuest reports in various contexts throughout the organization.
Figure 5-68 Report design with the Rational ClearQuest client for Eclipse
Switching to the BIRT RCP Designer places you in the BIRT perspective, allowing you to create new reports, libraries, or templates (Figure 5-69).
Figure 5-69 Reports, report libraries, report templates created with the Rational ClearQuest BIRT client
The fundamental building blocks of a report with BIRT are data sources and data sets. BIRT accesses the Rational ClearQuest databases by using the Rational ClearQuest-provided Open Data Access (ODA) model. By using this method of access to Rational ClearQuest instead of directly providing access to the databases via JDBC or SQL, the Rational ClearQuest security model is preserved and you do not have to provide database IDs and passwords freely to anyone who needs to develop reports.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
179
Data sources essentially map to Rational ClearQuest user databases (Figure 5-70). These are the databases that Rational ClearQuest uses to store change data.
Figure 5-70 Rational ClearQuest data sources to preserve the Rational ClearQuest security model
Data sets are analogous to Rational ClearQuest built-in queries. You must create Rational ClearQuest queries for the data sets that you will use in your BIRT reports (Figure 5-71).
Figure 5-71 Creating Rational ClearQuest queries for each Rational ClearQuest data set you will use
180
After you create your data sources and data sets, they become a part of the arsenal of data that you can use to create reports. Your data palette can include multiple data sources and data sets, with which you can create powerful, complex reports that pull data from multiple Rational ClearQuest user databases and queries (Figure 5-72).
Figure 5-72 Data sources and data sets, fundamental building blocks for reports
The report designer (Figure 5-73) provides drag-and-drop controls to make it easy to create a rich variety of reports. This feature greatly simplifies and accelerates the design and development process for reporting, making it possible to generate adhoc reports to get tactical answers without a significant investment of time or effort.
Figure 5-73 Report palette for dragging reporting elements for fast report creation
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
181
One of the most powerful enterprise reporting capabilities with Rational ClearQuest BIRT is the focus on reuse that is built into the product. Report libraries can be created to store common reporting elements such as data sources and data sets (Figure 5-74).
Figure 5-74 Libraries making reuse simple and powerful across the enterprise
Additionally, report templates provide the ability to save common report designs so that they can be easily used and reused with different data sources or data sets. Report templates provide the power to create reporting formats and styles that meet the specific needs of various stakeholders. You can then repeatedly use the templates to provide various report data in a consistent style and format that meets the needs of your stakeholders.
182
Measuring flow can help you demonstrate performance against service-level agreements (SLAs). It can also help you measure the impact of changes to your change management process (Figure 5-75).
Managing iterations
As discussed in Creating ALMTask records for iteration planning on page 133, ClearQuest ALM allows tasks can be assigned to iterations of a project. By doing this, the project team can balance their workload across iterations. Additionally, charts, such as the one in Figure 5-76 on page 184, can be created to see how the work is distributed across the team. This insight helps project managers, such as Patricia, to spread the workload evenly across the team members and avoid critical path situations. Such charts also help the project manager to ensure that all work is assigned. In Figure 5-76, there are five tasks in the No value column. No value means that they are not assigned and can act as a trigger to the project manager that some work is slipping through the cracks. Also note that the Construction phase is evenly balanced across each team member, while the workload shifts in the Transition phase as expected. By running charts such as this, project managers can govern their project more effectively, ensure that all work is assigned and everyone is active, and prevent overwhelming individual team members with too much work.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
183
184
To understand the rate of incoming and closed requests, Patricia can also monitor a chart that shows the count of open versus closed requests in the current project. See 5.5.2, Patricia updates the project iteration plan on page 130, which exemplifies the actions that Patricia takes when acting on new requests.
Managing tasks
In her role as project manager, Patricia must periodically measure the progress and health of the project iteration. The component development leads also monitor health, but with a focus on their areas of responsibilities. Patricia must also validate the teams progressions of the roll-up of tasks into the requests that are committed for the current iteration. Patricia must monitor the following key situations and metrics, among others: Identify tasks that are not planned for execution by the owning team. Identify tasks that are slipping or are not worked on and progressing to Active state. Identify tasks with all completed activities that should transition to a Completed state. Identify requests with all completed tasks that should transition to a Completed state. Identify tasks that are impacted by change to requests, for example, withdrawing planned work that relates to requests that are being rejected or withdrawn. It is a best practice to configure the commonly used queries in the Public or Private queries folders. Roles that manage multiple projects or iterations can organize the specific queries in subfolders as exemplified in 5.7.1, Reporting with ClearQuest ALM on page 177. The state and progress of a request, a task, and activities are monitored by using the general queries and applying filters on a project, phase, and iteration. As shown in Figure 5-78, additional information, such as the state of contained items, can be retrieved by expanding items in the query.
Unaligned work
During project iteration planning, Patricia must validate that all component and functional teams are planning to complete all assigned work within the scope of the iteration. By running a query that selects all tasks that are assigned to the current iteration, and comparing the Iteration field, she can identify any work that is not aligned with her project iteration plan. In 5.5.5, Patricia confirms the project iteration plan on page 155, we illustrate the actions that Patricia takes when ensuring the alignment of work.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
185
Scenario considerations
As shown in Figure 5-79, Rational Requirements Composer, Rational RequisitePro, and Rational ClearQuest play an integral role in the success of the scenario.
Corporate
Rational Requirements Composer and Rational RequisitePro Rational ClearQuest
Recently Acquired
Team Concert
Sketches and so on
Requirements
Reusable assets
Rational Build Forge Rational ClearCase/UCM
Components Streams
Third-party Provider
Quality Manager
Test resources US IN
Repository
Requirements information provides a foundation for other software development activities that occur later in the life cycle. Rational RequisitePro provides a mechanism for managing requirements across the life cycle. Information regarding the original request that Bob captured in Rational ClearQuest is available in Rational RequisitePro. Basic information from the original need statement captured in Rational ClearQuest is available in Rational RequisitePro. Often there is not enough detail to implement the request. As a result, further requirements definition activities must occur. These elicitation activities provide additional information so that a requirement 186
Collaborative Application Lifecycle Management with IBM Rational Products
can be detailed. The elicitation type activities are captured in Rational Requirements Composer. Artifacts that are captured in Rational Requirements Composer help drive the requirements definition process. Requirements content can be flushed out through activities to generate business process sketches, use cases, interface flows, sketches, and storyboards regarding the UI branding for Account Opening as shown in Figure 5-80.
described in
3 Use cases
The Rational Requirements Composer UI branding storyboard linked to the managed requirement in Rational RequisitePro. The detailed requirement information is available for reference to the solution and component team across the life cycle. This information can be used by Marcos component team in Rational Team Concert by using the ClearQuest Connector. Additionally, the requirements information can be used by Tammy in Rational Quality Manager to aid in the generation of test plans and test cases by using the Rational Quality Manager and Rational Team Concert integration.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
187
EU
Rational Team Composer
Components Streams
Test equipment US EU IN
Figure 5-81 Rational ClearQuest acting as a central hub for team interoperability
In this sample setup, the Rational ClearQuest Web components are hosted on a server in the U.S. The back-end database server is also hosted on a machine in the U.S. Both servers must be on their own dedicated machines for optimal performance. Bob, the product owner, connects to Rational ClearQuest by using the Web interface, while Patricia, the project manager, uses the Eclipse interface that is installed locally on her computer. Both clients can provide parity in a majority of tasks that either user will use in their day-to-day activities. In the reference scenario, Rational ClearQuest MultiSite was not used, but the Rational ClearQuest database can be in a replicated environment based on the team structure. Rational RequisitePro integration to Rational ClearQuest remains the same as in a multisite environment. This is true provided that the Rational RequisitePro project is properly shared by using Universal Naming Convention (UNC) paths over the network and remote Rational ClearQuest clients can connect to this network share and communicate with the Rational RequisitePro databases. Rational ClearQuest record mastership remains at the site where the Rational RequisitePro project is registered to the Rational ClearQuest database.
188
Requirement information is synchronized later from the local replica to the remote replica by using normal Rational ClearQuest MultiSite synchronization. The Rational ClearCase/UCM integration also operates in a multisite environment. For more information regarding the integration, see the Redbooks publication Software Configuration Management: A Clear Case for IBM Rational ClearCase and ClearQuest UCM, SG24-6399. This Redbooks publication also explains how to do parallel development in geographically distributed locations by using Rational ClearCase and Rational ClearQuest MultiSite and includes detailed procedures for planning and implementing MultiSite for a UCM environment.
Rational RequisitePro
Rational RequisitePro projects are created from Rational RequisitePro project templates. A project template is a boilerplate that identifies the logical organizational structure of the project, the metadata. That is, it identifies the kinds of requirements that will be captured in the project, views, security, and so on. The type of project template that is chosen depends on the requirements methodology that is followed by the team. In our example, we use the Agility at Scale for our requirements methodology. Just enough requirement information is captured to provide the team a foundation by which to build or implement the solution. Based on our flow, we capture the following types of requirements in Rational RequisitePro: Stakeholder request These requests reflect the initial need statement and business problems that are defined by the stakeholder. Feature requirement This type of requirement is an externally observable service that is provided by the system that directly fulfills a stakeholder need. Agile approach: If you are following more of an agile approach, the need statement requires a bit of refinement. The next level of detail is captured as a user story. Use case A use case captures requirements as a sequence of actions that a system performs that yields an observable result of value to those interacting with the system. Agile approach: If you are following more of an agile approach, use cases are used sparingly and only to provide additional detail to a user story where insufficient. Some of the scenario-type steps might be flushed out during test driven development with JUnit testing. Supplementary requirements (supporting requirements) These requirements define necessary system quality attributes, such as performance, usability, and reliability, and global functional requirements that are not captured in behavioral requirements artifacts such as use cases.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
189
Agile approach: If you are following more of an agile approach, supporting requirements are used sparingly and only to identify nonfunctional requirements that cannot be described in the context of a user story.
190
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
191
2. Click the Administration tab and click Edit Connection to enter the Rational RequisitPro connection information (Figure 5-84).
192
3. In the Edit RequisitePro Connection window (Figure 5-85): a. In the Server URL field, type the URL for RequisiteWeb in the following format: http://<server_name>/ReqWeb The URL is case sensitive. Therefore, you must enter it accordingly.
b. For Project, click Browse to navigate to the Rational RequisitePro project. c. Navigate to the project directory for the project and select the project name to access the project. d. After you selecting and it is displayed in the project list box (Figure 5-86), click OK.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
193
e. Provide a user name and a password for the project. Then click Next. f. In the window that lists the packages in the Rational RequisitePro project, select a package that you want to use as the default selection when managing or importing requirements. g. Click Finish to save the connection information. After you complete these steps, the Rational Requirements Composer and Rational RequisitePro project are integrated and requirements can now be managed between the two applications.
194
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
195
The JazzInterop package is added to the ALM schema and associated with the ALM types by using the Rational ClearQuest Designer tool. The details about the configuration, see Adding packages for the ALM schema on page 567.
196
com.ibm.rational.clearquest.CQALM.ALMResolutionCodeLabel This is a helper rule to synchronize the ResolutionCode reference field. com.ibm.rational.clearquest.CQALM.Attachments This rule manages the creation and synchronization of attachments in the Rational ClearQuest and Rational Team Concert products. com.ibm.rational.clearquest.CQALM.users This rule manages the creation of new contributors in Rational Team Concert from user records in Rational ClearQuest. For details about the ALM schema additions, see Configuring and deploying synchronization rules on page 585.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
197
After all the packages are applied, check the schema to make the necessary changes to complete the Rational RequisitePro and Rational ClearQuest integration: 1. Open each record type that has the Rational RequisitePro package applied and browse to the field listing section in the designer. 2. Find the field called Requirements_List, which the package added, and for Back Reference (Figure 5-88), add a reference to the field that points back to the requirement record type. In this case, the Back Reference is called ALMRequests_List. 3. Repeat this process for each record type that the RequisitePro package added.
After all back references are added, you can optionally choose to add the newly added back reference fields to the requirements record form as shown in Figure 5-89.
198
The Rational Administration Wizard must be executed as explained in the remainder of this section.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
199
An administration machine with Rational Administrator, Rational RequisitePro, and Rational ClearQuest must be installed to complete the following required steps: 1. Open Rational Administrator and select the desired project. Right-click the project and select RequisitePro-ClearQuest Integration. 2. In the RequisitePro-ClearQuest Integration Wizard window (Figure 5-91), type the Administrator user ID and Password and click Next.
3. In the Enter Web URL window (Figure 5-92), type the RequisitePro Web URL and ClearQuest Web URL and click Next.
Figure 5-92 RequisitePro-ClearQuest Integration Wizard configuration - Enter Web URL window
200
4. In the next window, configure the associations by selecting Add for the Action column and then completing the following parameters as shown in Figure 5-93 and Figure 5-94: For Requirement Type, type FEAT. For Attribute, type Request. For Project, specify the project name. For RecordType, type ALMRequest. For Requirements List, type the name of the Reference field to Requirements record type. For Back Reference, type the name of the Back Reference field from Requirements to ALMRequest. Click Next to complete the configuration. Figure 5-93 shows the initial parameters.
Figure 5-94 shows the parameters that are displayed after scrolling to the right.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
201
After the association is complete, the Rational Administrator window (Figure 5-95) opens and shows details of the Rational ClearQuest database and Rational RequisitePro project, which are integrated.
202
4. Expand the Feeds item and double-click the newly created feed to run it. The reader should display the feed as shown in Figure 5-96.
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
203
The use of self-help resources and support generated content is another way to reduce the time to solve a problem. Visit IBM Rational supports Web site at the following address to search for content on specific products and problems: http://www.ibm.com/software/rational/support
Performance
The ALM schema is optimally designed to work with the new Web interface. However, should performance issues arise, see the IBM developerWorks article IBM Rational general schema design performance for more advice about best practices when working the Rational ClearQuest schema design. You can find the article at the following address: http://www.ibm.com/developerworks/rational/library/07/0717_patel/index.html
204
Based on the type of error, there are different techniques that you can use to troubleshoot the issue further. For ALM, specifically parent child links and reference records are used frequently to maintain a hierarchy for project work.
ratl_diagnostics is a table that can be added to your Rational ClearQuest user database and causes trace information to be generated for any client machine that is connecting to this database. The table is read when the Rational ClearQuest client is launched and writes logging information to a trace file as specified in the table. This option is good when you are unsure about which client is causing the problem and cannot readily reproduce the problem for any single client machine.
Important: Be advised that this option can cause a lot of overhead because every client that accesses the database will generate trace information, which can quickly grow in size based on transaction load. To create the table, use the PDSQL utility that is in the \<install dir>\ClearQuest directory of your administration machine and run the SQL commands in Example 5-1 to generate the required tables.
Example 5-1 SQL script to generate the ratl_diagnostic table
drop table ratl_diagnostics; create table ratl_diagnostics ( diag_name SQL_VARCHAR(16), diag_value SQL_VARCHAR(255)); After the table is created, use the SQL commands in Example 5-2 to populate them with the necessary values.
Example 5-2 SQL statements to insert diagnostic information for tracing
insert into ratl_diagnostics (diag_name,diag_value) values ('Trace',SQL') insert into ratl_diagnostics (diag_name,diag_value) values ('Output','ODS') To update an existing trace: update ratl_diagnostics set diag_value = 'SQL=2' where diag_name = 'Trace To turn all tracing off: update ratl_diagnostics set diag_value = '' where diag_name = 'Output To troubleshoot the most common types of problems, use the trace keys in Example 5-3. For a full listing of trace keys and their meanings, contact IBM Rational Technical Support.
Example 5-3 Trace keys for troubleshooting Rational ClearQuest
TRACE = SQL=2;THROW;DB_CONNECT=2;SESSION;EDIT;RESULTSET;API;VBASIC;PERL;PACKAGES
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
205
An environment variable can also be set up on individual client machines for problem determination. You can set variables for either Windows or UNIX to help generate diagnostic logs. On Windows, you set the variables as shown in Example 5-4, which generates the output to c:\trace.log.
Example 5-4 Variables on Windows
set CQ_DIAG_TRACE=Throw;Db_Connect=2;SQL=2;API set CQ_DIAG_REPORT=MESSAGE_INFO=0x70B set CQ_DIAG_OUTPUT=c:\trace.log On UNIX, you can set the variables as shown in Example 5-5, which generates the output in file trace.log.
Example 5-5 Variables on UNIX
Finally diagnostic tracing can be done by using the Windows registry of the client machine where the problem occurs. As shown in Example 5-6 you can add the following registry key to your client system to generate trace output. Be advised to back up your registry before you attempt to make any modifications.
Example 5-6 Rational ClearQuest registry keys to enable trace output
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Rational Software\ClearQuest\Diagnostic] "Trace"="SQL=2;THROW;DB_CONNECT=2;SESSION;EDIT;RESULTSET;API;VBASIC;PERL;PACKAGES" "Report"="MESSAGE_INFO=0X70B;DIAG_FLAGS=-1" "Output"="C:\\temp\\cq_diagnotics.log"
206
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
207
208
Chapter 5. Rational ClearQuest, Requirements Composer, and RequisitePro to manage stakeholder requests
209
210
Part C
Part
211
212
Chapter 6.
213
Shared measurements allow transparency to plans, work, and results, so that teams can
configure their targets and track health based on real-time metrics.
Shared assets avoid duplication of effort and benefit reuse by seamless access to assets and team members.
By using shared practices, teams can form practices and ensure consistency by right-sized process enactment. By ensuring continuous improvement, teams can improve practices in small steps. 214
Collaborative Application Lifecycle Management with IBM Rational Products
215
Adopting some form of the agile method is no longer a question of if but more a question of how and when. Teams are exploring which method makes the most sense for a particular project given the people and circumstances surrounding the project.
Facilitated
Catalog Knowledge management Business intelligence Publish guidelines Review webmaster Business and technical roles Evangelist Some guidelines
Governed
SOA/services Broker
Planned
Asset planning Enterprise architecture
Asset reviews, change control, certification, policies, and impact analysis Business analyst Other technical roles J2EE, .Net Policy enforced architecture
Platform and architecture reviews Lines of business managers or CTOs Enterprise architect
Domain-specific architectures Reference architecture Designed for reuse Patterns Frameworks Domain-specific asset libraries
Controlled and federated repositories Re-engineering and harvesting tools Open source tools
216
The enterprise might have several asset management adoption points under way across various teams or groups to address their respective issues.
Collaborative Development
Focus on development team productivity Enables distributed development Flexible support for development processes Manage change in the application life cycle
Business value
Build Management
Define builds Continuous integration Remote build server Bridges
Team Health
Transparent development Team central RSS/Atom feeds Instant messaging Process enforcement and customization Dashboards Reports Role-based permissions
Contributor
Team Collaboration
View iteration plans and validate deliverable time lines Create, update, query, and view disposition of development tasks Overview of the resource utilization View personalized dashboards
217
Collaborative development is enabled in Rational Team Concert, which is built on the Jazz platform. The Jazz platform is a scalable, extensible team collaboration platform for integrating work across the phases of the development life cycle. The Jazz platform helps teams build software more effectively while making the software development activity more productive and enjoyable. The Jazz platform provides real-time collaboration that is delivered in context. Accurate project health information is drawn directly from actual work, rather than from time-consuming progress reports. Traceability and auditability are automated by managing all artifacts and their inter-relationships across the life cycle. Instant messaging and other types of collaboration are integrated to support communication and presence awareness, and RSS feeds enable everyone to be informed of all events. The Jazz platform is built on Eclipse and other open technologies and serves as a foundation for the Rational Software Delivery Platform. In addition, the Jazz products are open to the IBM partner ecosystem to extend the platform. The Jazz platform also supports Agility-at-Scale development practices to larger distributed teams as discussed in 2.2.3, Scaling agile methods on page 38. Agile development works particularly well for smaller, co-located teams. Rational Team Concert, which is built on the Jazz platform, provides a centralized platform for such teams. The transparency and visibility that Jazz provides, and the interoperability with enterprise-level change management, means that the advantages of agile methods can be extended to larger, distributed teams in an enterprise. Rational Team Concert for IBM System z and System i extend the core capabilities for Collaborative Development to IBM z/OS and IBM i development.
218
By the seamless integration of planning and change management in Rational Team Concert, teams can benefit from significant tool automation of the agile collaborative development principles. In Rational Team Concert, the tasks on the project plan are the same as the actual living tasks that the owners are working against. This alleviates the burden of project plan updates from project manager and gives everyone full real-time transparency into the actual progress of tasks against the plan. The change management process and the management of work items are tightly interlinked and need to be configured to fit the process that is adopted by the development team. The Jazz platform provides process enactment that makes work items aware of the development process. By using Rational Team Concert, teams can deploy ready-to-use development processes, such as Open Unified Process (OpenUP) or The Eclipse Way, or customize the Work Item information model, workflow, and process to fit a specific change management process.
Build management
Build management is more than just a compile of a project. Build management involves the entire process of assembling, compiling, verifying, and packaging a solution: The right version of the source code must be collected into the build area. The application is compiled for one or more operating systems. Build verification tests are run. The code is statically and dynamically analyzed. The build results are captured and staged. The entire process must leave an audit trail. The team depending on the build must be notified of its availability and state. Not at the least, the metrics that are related to build health trends must be collected and made available to the team. Build management also includes the capability for individual team members to extend the project compilation capabilities in Eclipse with Personal Builds by using the software configuration management (SCM) and build capabilities. With personal builds, developers can run the build integration process in their personal sandbox and validate code stability prior to delivering the changes to integration with the risk of breaking or destabilizing the team build. The team build capabilities in Rational Team Concert are based on the Jazz platforms support for the automation, monitoring, and notification of the team builds. The capabilities support a model for representing the teams build definitions, build engines, build results, and build notifications. The model is designed to support teams by using a range of different build technologies and is configured by teach team to fit their build process requirements. Team build in Rational Team Concert can be configured to run locally to the repository or distributed by using dedicated build clients. Builds can also be integrated into Rational Build Forge to leverage a central enterprise build function.
Team health
The team health capabilities in Rational Team Concert are based on the Jazz platforms support for transparency, seamless, and effortless access to assets, notification, reporting, and monitoring capabilities. Team health capabilities enable self-organized agile teams to respond effectively and rapidly to project challenges and changing project needs. With the transparency of collaborative development by using Rational Team Concert, teams can view the real-time plans and commitments that their team is working on. Notifications keep team members updated on changes that are related to their work. In-context collaboration, instant messaging, and collaborative asset traceability make it easy for teams to share and re-balance work assignments.
Chapter 6. An agile team implements a change
219
To ensure team success, teams need effortless access to metrics, queries, and reports. By integrating health indicators into the various views of the tools, team members and team roles have continuous team health updates at their fingertips. Dashboards provide team-wide information about the health of the project or on individual component teams. Both teams and individuals can configure dashboards by using important health metrics as needed by role or life-cycle phase. Views provided in Rational Team Concert, such as TeamCentral and MyWork, bring the generic dashboard and team transparency capabilities to the fingertips of the practitioner by providing effortless and continuous access to team events and work schedules.
Asset management
Asset management involves the process of planning, developing, governing, and using assets throughout their entire life cycle and across the enterprise. It includes the ability to ensure that assets have the following capabilities: Can be quickly found to avoid duplication costs Can be consistently reviewed in an efficient manner to ensure usability and alignment with business and technical strategic direction Comply with policies such as the usage of open source assets Can effectively be brokered between producers and consumers Are properly funded based on usage Rational Asset Manager provides a published asset management repository for technical and business assets. It uses the Reusable Asset Specification to achieve the following goals: Allow you to define, create, and modify assets Provide asset type specific search and governance Measure asset reuse in development Handle any kind of asset such as applications, business processes, business rules, components, patterns, services, frameworks, templates, and other user-defined asset types
220
As such, asset management is more than just a published wiki or Web server of components that teams can use. The primary benefit that it provides is to reduce software development, operations and maintenance costs by improving quality by facilitating the reuse of approved and proven assets. In addition, asset management facilitates asset usage and traceability by integrating with other IBM Rational, WebSphere, Tivoli software development tools, as well as your own tools.
2.4 Diedrie develops, builds, and tests her changes 2.5 Diedrie conducts a team build and delivers for integration build
The agile team develops, validates, and builds the required changes to their component in the solution. The component is delivered to the solution integration.
Al Solution Architect
Diedrie Developer
Figure 6-3 In Act 2, the component team develops and delivers requested UI branding changes
221
Marco is the development lead in the component team that is responsible for the delivery and quality of the Credit Check Component in the Account Opening project. As part of the agile team, he takes a leadership role in the architecture and implementation of the component. He works collaboratively with his team and with Bob, Al, and Tammy to ensure that the teams collectively deliver on the expected release requirements, design principles, and solution quality. Diedrie is one of the developers on the component team. As an agile developer, her responsibilities span the end-to-end changes from design to test and delivery. She is also supervising the continuous component builds and weekly component deliveries. She implements the UI branding changes that Bob requested in the CreditCheck component. Al is the software architect for the Account Opening solution, as well as for other solutions
within the enterprise. Marco and Diedrie collaborate with Al and request his guidance on reusing the corporate assets for UI branding.
222
Al Software Architect
Diedrie Developer
2.5 Diedrie conducts a team build and delivers for the integration build
Search Collaborate
Reuse Design
Review Deliver
Build Validate
Deliver
Accept
Monitor
Monitor
223
224
225
227
Create sketch Submit ALM request plan iteration with ALM task and ALM activities
Manage requirement
Alternate UCM workflow Plan tests With work item Submit defect
Figure 6-5 UCM workflows used by the teams in the Account Opening project
The details of the UCM workflows are covered briefly in this section as an alternative tool configuration for agile or traditional teams using collaborative development.
228
Part 2 of our scenario can also be configured by using Rational ClearCase or Rational ClearQuest with UCM. The following considerations apply: Component teams that use Rational ClearCase or Rational ClearQuest with UCM can use the central Rational ClearCase or Rational ClearQuest repositories, or use Rational ClearCase or Rational ClearQuest MultiSite for repository replication. The ClearQuest ALM schema has specifically been designed to fully support Rational ClearQuest MultiSite. Several considerations apply to how the component team structures their artifacts in ClearQuest ALM. Component teams can have individual iteration schedules or multiple depending projects, or need to individually configure the development process and workflow, which is advised, to create their own ALM project. Component teams are advised to create separate child projects that link to the parent project. In the scenario in this book, each component team links to the parent Account Opening project by using using ClearQuest ALM. Project parent-child relationships are managed on the Project tab of ALM Projects. To create a new child project with a copy of the parent work configurations and iteration plans, use the Project Wizard. Component teams that use UCM use UCM-enabled ALM Activity records to schedule, track, and deliver work. UCM Change Sets are associated with the ALM Activities. ALM baselines are associated with BT Build records to track delivered UCM, which enables ALM Activities. The state changes on ALM Activities propagate to tracking of ALM Tasks and ALM Request for Component and project leads for project health tracking.
Asset reviews and approvals Assets migrate through multiple states with reviews and sign-offs by various teams and individuals. Subscriptions/notifications Asset producers, consumers, and other interested parties are notified of the assets state through out its life cycle. Rating Discussion forums Access rights Impact analysis Policy compliance Consumers and other interested parties declare their view on the asset. Searchable discussions on the assets and their usage experience. Controlling access to the assets. Understanding impacted teams, projects, and individuals. Automates review processes of assets to avoid costly risks.
229
Collaboration crosses the boundaries of the development organization into the operations teams. As the asset is approved, it can be published into runtime repositories such as WebSphere Service Registry and Repository (WSRR) and Tivoli Change and Configuration Management Database (CCMDB), providing bi-directional navigation and cross-organizational collaboration (Figure 6-6).
IBM Rational RequisitePro IBM Rational Requirements Composer
Manage Requirements
Create Sketch
Link to requirements
IBM Rational Quality Manager Plan tests with work item Test integration build WatchFire AppScan integrated
Submit defect
230
Chapter 7.
231
2.4 Diedrie develops, builds, and tests her changes 2.5 Diedrie conducts a team build and delivers for the integration build
The agile team develops, validates, and builds the required changes to their component in the solution. The component is delivered to the solution integration.
Al Solution Architect
Diedrie Developer
This act, as shown in Figure 7-1, consists of the following scenes: Marco monitors component health. Al identifies an asset that the team can reuse. Diedrie and Marco do just enough design. Diedrie develops, builds, and tests her changes. Diedrie conducts a team build and delivers for an integration build. Rational Team Concert 1.0 is used in this act. It is integrated into the following products: Rational ClearQuest 7.1 and the ClearQuest ALM schema to do enterprise-level change management This integration uses the ClearQuest Connector in Rational Team Concert. Rational ClearCase 7.1 to do delivery to the solution integration This integration uses the ClearCase Connector in Rational Team Concert.
232
Supports team collaboration across co-located and globally distributed teams Establishes and maintains traceability and audit trails, and automates bookkeeping so that teams are accountable Integrates into Eclipse for developers and provides Web access for external contributors Makes collaborative development more enjoyable
Collaborative Development
Application Lifecycle Management Distributed development Agile development processes Focus on team productivity
Business value
Web based UI Knows application domain Talks business language
Team Collaboration
View iteration plans and validate deliverable time lines Create, update, query, and view disposition of development tasks Overview of the resource utilization** View personalized dashboards**
Contributor
Build Management
Define builds Continuous integration Remote build server Build Forge integration *
Team Health
Transparent development Team central RSS/Atom feeds Instant messaging Process enforcement and customization Dashboards** Reports** Role base permissions **
Rational Team Concert supports and provides seamlessly integrated workflows, both for the application life-cycle assets managed by the Jazz repository, but also to assets managed by external repositories that are seamlessly integrated into the Jazz platform. The following ALM domains are supported by Rational Team Concert (Figure 7-2): Source code management Work items management, including agile iteration planning Build management Team health and collaboration Rational Team Concert provide integration into Eclipse for developers, and Web access to team collaboration capabilities for external contributors who require easy tool access with minimal setup.
233
making the software development activity more agile, productive, and enjoyable. Jazz is built on Eclipse and other open technologies. It serves as a foundation for the Rational Software Delivery Platform and for a partner ecosystem to extend the platform. The Jazz platform provides real-time collaboration that is delivered in context. This enables teams to work more closely, effectively, and transparently. Team members can conduct discussions and easily include development artifacts into the discussion, or persist the discussion as an integral part of the artifact. The Jazz platform also supports simple artifact exchange and collaboration between developers by using higher value assets, such as complete change sets, as compared to the previous more time consuming exchange of source code files or mail with code snippets. Instant messaging and other types of collaboration are integrated to support communication and presence awareness, and RSS feeds enable everybody to be informed of events important to the team or to the individual. With the Jazz platform, live project health information can be drawn directly from actual work, rather than from time-consuming progress reports. Traceability and auditability are automated by managing all artifacts and their inter-relationships across the life cycle. The Jazz platform also supports Agility-at-Scale development practices to larger distributed teams as discussed in 2.2.3, Scaling agile methods on page 38, and in 6.1.1, The changing collaborative development market on page 214. Agile development works particularly well for smaller co-located teams. For larger distributed teams, Rational Team Concert provides a collaborative centralized development platform that enables the Agility-at-Scale method. The transparency and visibility that the Jazz platform provides, and the interoperability with enterprise-level change management, means that the advantages of agile methods and Rational Team Concert can be extended to larger and distributed teams in the enterprise. Rational Team Concert for IBM System z and System i extends the core capabilities for collaborative development to IBM z/OS and IBM i development.
234
Jazz.net
Detailed information about the Jazz platform and Rational Team Concert is beyond the scope of this book. You can find more information, particularly about the following topics, at the following Web site: http://jazz.net Access to the Jazz open commercial software development project Access to online help information about the Rational Team Concert product Technical in-depth material about the Jazz platform Access to the global Jazz community Guidance about Rational Team Concert deployment and configuration practices Samples
Process
Team Areas
AccountOpening CreditCheck
The following structures are used for project and team management in Rational Team Concert: Project A project area provides definition for the project deliverables, team structure, process, and schedule. Team A team area manages team membership, roles assignments, and team artifacts. Category Categories group work items by the various components or functional areas of the project and are associated with a team area. Team process A process is the collection of roles, practices, rules, and guidelines that are used to organize and control the flow of work. The Jazz platform is process aware, and the rules of process behavior validate preconditions and provide follow-up actions. A process can also define project reports, queries, and work item types.
Chapter 7. Rational Team Concert for collaborative development
235
The CreditCheck Team Area that brings development team together on collaborative development in Rational Team Concert is shown in Figure 7-4. Some key Team Area properties are highlighted in the figure. For example, the Team Artifacts and Team Central views provide transparency to team health, the team members and their assigned roles, and the iteration structure with the current iteration plan that is selected.
Agile planning
Agile planning principles dictate that just enough and live planning are to be conducted in order to effectively deliver working software to stakeholders. Teams should not sidetrack with the production of expansive project plans in separate tools or documentation that does not contribute to project delivery. Planning must be directly tied to project execution to become an enabler to the team members and not a burden. This principle applies both at the team level and agile iteration planning, as well as the self-configuring scheduling of work done by each team member. In collaborative development, planning is an activity that involves the entire team, not only the project manager. The team consumes the release requirements and drives out the scope of the iteration by using stories or themes. The plan realization of the stories becomes live tasks for the team members. Each team member takes ownership of these tasks, or work items,
236
and configures their schedule and work estimations. This collaborative effort makes the teams self-configure their plans. By the seamless integration of the planning and the change management in Rational Team Concert, teams can benefit from significant tool automation of the agile collaborative development principles. In Rational Team Concert, the tasks of the project plan are the same as the actual living tasks that the owners are working against. This method alleviates the burden of project plan updates from the project manager and gives everyone full real-time transparency into the actual progress of tasks against the plan. The following artifacts are used for agile planning in Rational Team Concert (see Figure 7-4 on page 236): Development line A development line represents an area of activity within a project that typically has its own objectives, deliverables, team, process, and schedule. Project intervals or phases are defined within a development line and are expressed as a hierarchy of iterations. Iteration
Iterations are defined within a development line and are expressed as a hierarchy of project intervals. Iteration plans are used to express the details of an iteration in terms of work items.
Work item A work item is a representation of the tasks and issues that a team needs to address during the development cycle. Work items are key for iteration planning and indicators of the health of the project.
Work items
Work items enable team members to easily see and track work that is assigned to them and defects that are submitted against the components for which they are responsible. The team can use work items to plan development work for milestones and obtain metrics that indicate the progress made toward the project development and quality goals. Figure 7-5 on page 238 shows an example of a work item in Rational Team Concert. This figure also shows the UI Branding work item that is assigned to Diedrie. Some key work item properties are highlighted, such as the work item type, the iteration plan specifying when work is scheduled, the traceability to other life-cycle collaboration artifacts, and the discussions with other team members.
237
Work items in Rational Team Concert are a generic concept that captures multiple change request types. For example, Rational Team Concert ships with the following types: Story Risk Task Enhancement Defect The available set of work item types is defined in the development process. The default set of work items is provided by the process template that is chosen at project area creation time. Additional work item types can also be extended by editing the process definition. Each work item type has a state transition model that defines the states that the work item represents and the actions that users take to move the work item from one state to another. A typical state transition model provides a path from a state of New, to In progress, to Verified, and to Closed. Just as work items are seamlessly integrated with iteration planning, they also integrate with the other key ALM workflows. That is configuration management, build management, and reporting.
238
Work item integration with configuration management enables change sets to be associated with a work item and to capture the traceability from a request to the delivery of the resulting change. Furthermore, work item integration with build management enables the tracking of the work that was completed and delivered into a build, the builds that contain the work item, and the build that the work item is reported against. From the build item, it is also possible to create a new defect and associate the work item with the build. All of these capabilities are key enablers for quality teams in configuring and executing their test plans. Finally, the capability to report on work item metrics gives the team a wide range of opportunities to characterize and act on project health.
239
Figure 7-6 shows the AO_Rel2 Integration stream, which governs code changes for the next release that the component team is working on. This figure shows such key stream concepts as the streams that are used by the team, the SCM component contained in the stream, the Eclipse projects contained per SCM component, and the history of change sets that are delivered to the stream.
Team build
The build management capabilities in Rational Team Concert are based on the Jazz platform support for the automation, monitoring, and notification of the teams builds. These capabilities support a model that represents the teams build definitions, build engines, and build results. The model is designed to support teams by using a range of different build technologies and is configured by each team to fit their build process requirements. The following artifacts are used for build management: Build engine A build engine represents a build system that runs on a build server. Build definition The build definition contains the details on the build and defines a particular build, such as a weekly project-wide integration build.
240
Build script The build.xml script performs the build and is referenced by the build definition. Build result The build result represents the outputs from a particular run that might contain, for example, compilation, build validation tests, code analysis, and release asset creation. Figure 7-7 shows the integration build definition that is used by the Credit Check team. This figure shows such key build concepts as the build definitions and build engines that are used by the team, the AO_Rel2 build definition, and the history of the build results for the AO_Rel2 integration and the build validation runs.
Figure 7-7 Build definition used by the Credit Check team for continuous component integration and validation
The team build capability in Rational Team Concert can be integrated with Enterprise Build solutions by using Rational Build Forge.
Process awareness
The team process capabilities help teams to consistently deploy and execute the processes that they have agreed upon. The team process does not define the process. It is process neutral. However, it maintains a constant presence of the process in Rational Team Concert and encourages or enforces the processes that the team has adopted.
241
The team process is chosen when a new project is defined. Rational Team Concert includes both sample and production processes, such as the Open Unified Process (OpenUp) and Eclipse Way processes, that can be deployed as is or customized to suit the needs of a project. The team process governs all activities, artifacts, artifact relationships, and operations that are pursued inside the associated project area. A process is defined by a process specification and an iteration structure. Both are stored in the project area. The process specification describes the roles that team members can play and the process rules that apply to each role within the several iterations. Rational Team Concert components and capabilities are process enabled. A process-enabled tool component is one that is designed to play well in a world where a process known to the system governs the work that is being done. For example, the Eclipse Way process enforcement does not allow the following actions to occur: Delivery of code with compilation errors Delivery of a source file without a copyright notice Work item creation without an assigned category (filed against) Delivery of a change set without an associated work item or comment The process specification also defines which of the core process rules on the Jazz platform can further be customized. Figure 7-8 on page 243 shows an example of process awareness in Rational Team Concert. The highlighted section exemplifies several process breakages, such as an attempt to deliver code with compilation errors or an attempt to deliver a change set without a work item associated. This figure also exemplifies how Rational Team Concert provides guidance on the root cause of the process violation, as well as Quick Fix options to proceed.
242
Team collaboration
Rational Team Concert provides several core team collaboration capabilities that are built into the Jazz platform to support the agile principles of collaborative development. Team collaboration includes the following capabilities among others: Transparency and team awareness Rational Team Concert brings teams together and encourages team responsibility and personal accountability. The collective effort and workload of the entire team is an overall theme of most tool views and allows awareness the teams workload and the personal workload of each team member. The Team Central view gives transparency to the status and recent events from the team progress. The My Work views give awareness of the personal schedule and current priorities. Dashboards and other real-time views The Web Dashboard and Team Central view are two examples of a customizable real-time view of what is happening in the project. It provides a transparent view into the work of the entire project team. It also enables transparency and collaboration for external team contributors. Notifications The tool components in Rational Team Concert support event notification where team members can subscribe to changes in specific items, but also to more general event
Chapter 7. Rational Team Concert for collaborative development
243
types. Notification enables the team to more quickly react and, therefore, streamlines the development workflows. The events also let team members make constant updates without interrupting their ongoing work. Contextual collaboration Collaboration with team members, regardless of their geographic location, is a key success factor for distributed development. In addition, the ability to persist a discussion in context of the topic of the discussion is key for teams to record discussions for later reference by others on the team. This capability is highly important for agile teams to re-balance workload and for distributed teams to share work cross geographic boundaries. Presence awareness Rational Team Concert supports integration with instant messaging and provides access to other team members at their fingertips. The seamless integration allows references to artifacts, such as work items or change set references, to be easily included in a chat as clickable links. Figure 7-9 shows an example of the team collaboration capabilities in Rational Team Concert. The highlighted section exemplifies the in-context discussion threads of a work item, the integrated chat view, and a fly-in notification that contains team events, such as Marcos new instant message.
244
Artifact traceability
In this section, we introduce the artifact traceability capabilities in Rational Team Concert. Rational Team Concert provides a seamless experience where traceability across the application lifecycle is provided and managed by the Jazz platform. Because this is a core capability of the platform, we can only take a few examples of how this surfaces in the Rational Team Concert user interface. Work items are the entry point for multiple traceability links as in the following examples: To the iteration for which the work is planned To related artifacts To a change set that contain the implementation of the change To external repositories that hold the original source of the defect or enhancement To approvals that are required to deliver the change for component or solution integration Rational Team Concert creates and manages most of the traceability in the background as the developer conducts the regular collaborative development workflows. The artifact traceability capabilities are embedded in the Rational Team Concert user interface, as shown in Figure 7-5 on page 238 and in Figure 7-10, where the traceability links surface as clickable links the UI Branding work item.
245
Al Software Architect
Diedrie Developer
2.5 Diedrie conducts a team build and delivers for the integration build
Search Collaborate
Reuse Design
Review Deliver
Build Validate
Deliver
Accept
Monitor
Monitor
246
The usage of Rational Team Concert in Act 2 creates several new artifacts and establishes traceability to support the life-cycle collaboration. Figure 7-12 shows the life-cycle collaboration artifacts that are established at the end of this act. See 7.4, Life-cycle collaboration on page 286, which describe the assets and relationships in Figure 7-12 in greater detail.
Found in
ALM Project
[AO_Rel2]
ALM Phase
[Construction]
Sketch
Related Artifact
Related Artifact
ALM Iteration
[02] Assigned to
Requirement
CQI
ALM Request
[Enhancement]
Associated
CQ:Requirement
CC Workspace Workspace
Flow Target
Tasks
ALM Task
[Size]
ALM Task
[Implement]
Work Item
[Task]
Change Set
Build
ALM Task
[Develop Architecture] Included
Reusable asset
A A A Created in Current Act Referenced Supporting
Assets
247
248
Figure 7-13 shows an example of the Rational Team Concert Dashboard. We describe how the team uses these metrics in 7.5, Planning and measuring success in collaborative development on page 288.
Figure 7-13 Rational Team Concert Dashboard for daily stand-up meetings to access project health indicators
249
Figure 7-14 shows an example of the AO_Rel2 Construction C2A iteration plan that is used by the team.
Figure 7-14 Rational Team Concert iteration plan for daily stand-up meetings to access planned work items
250
Iteration plans in Rational Team Concert consolidate the plan information into plan health indicators for the entire team and for each individual team member. Figure 7-15 shows the details of such a plan. The health indicator shows how much of the available time for the iteration has been scheduled (horizontal bar) and the percentage of the work that has been estimated (vertical bar). These two health metrics are good indicators for work balancing, overcommit, and plan quality. Over time, the comparison of estimated and actual work can be used in retrospective to improve the planning capabilities of the team.
As shown between Figure 7-14 on page 250 and Figure 7-15, Diedrie and the team still have some iteration planning to complete. For example, Diedrie has estimated 75% of her work, and the remaining 25% is adding risk and lowering the quality of the plan. She is also overcommitted by 12 hours of work. At the stand-up meeting, Marco requests that everyone in the team must complete their plans by the end of the day. At the stand-up meeting, Diedrie announces that she will start working on the UI Branding work item of all CreditCheck Web forms, which is selected in Figure 7-14 on page 250. She intends to spend the day prototyping the changes and report the status tomorrow with a better understanding on any new design patterns to be used by the team. She intends to sync up with Al, the solution architect, regarding possible asset reuse. Diedrie also lets the team know that she is overbooked and asks that others on the team see which work items can be rebalanced. The team triages the new incoming defects and decides who should take ownership. One of the team members commits to look at work item 45. Marco assigns ownership by dragging the work item in the plan to the new owner. Marco can also assign work items by right-clicking the work item and selecting the Assign To Owner option. At the end of the stand-up meeting, the team starts to discuss the new Web browser service release that was just made available. The team must update the build and test machines, and Marco adds a new task in the plan for someone to pick up.
251
To add a new work item task to the plan, Marco performs the following actions: 1. Marco right-clicks the unassigned role in the plan. Alternatively, he can choose a team member to assign the new work item to. Then he selects Add Work Item Task as shown in Figure 7-16. 2. He uses in-place editing to enter a work item summary and description. 3. He clicks the clock icon and selects 1 hour from the menu. 4. He click Save on the iteration plan document to save the changes to the iteration plan.
Figure 7-16 Marco adding new work items to the iteration plan
252
Figure 7-17 The iteration plan shown in the Rational Team Concert Web UI
253
Figure 7-18 Team Central view used by Marco to keep component health indicators at his fingertips
254
Figure 7-19 shows Diedries current My Work view, which shows the following concepts: Diedrie has new work assigned to her that she must schedule into her plan for work. Her current plan is to start working on the Corporate UI Branding today. She also has a few items for the iteration that she still must estimate. To record her estimations on a Work Item, Diedrie performs the following actions: 1. Diedrie selects the work item. 2. She clicks the clock icon on the work item and selects an assessment of hours, days, or weeks. To rearrange her work schedule, Diedrie drags the item to a new position in the work item stack. The higher up in the stack she places the item, the sooner she intends to address the work. Diedrie can also plan work for today, tomorrow, or later. To make such a change, she drops the work item in the desired section. For scheduling new items, from the Inbox, she drags the item to the proper stack location. Diedrie now intends to finalize her iteration planning: 1. Diedrie drags the two new items from the Inbox to the section for next week. 2. She provides estimates for her remaining items. 3. She decides to pick up the new work item on installing the new Web browser version. She drags the work item from the iteration plan to her My Work view section for today. In doing so, she assigns the work to herself and plans to do it today. 4. To complete her planning, she clicks the Save icon on the view toolbar.
Figure 7-19 Diedries My Work view for viewing, planning, and scheduling her work items
255
Al Software Architect
Diedrie Developer
2.5 Diedrie conducts a team build and delivers for the integration build
Search Collaborate
Reuse Design
Review Deliver
Build Validate
Deliver
Accept
Monitor
Monitor
256
Figure 7-21 show the life-cycle asset and relationships that are impacted in this scene.
Found in
ALM Project
[AO_Rel2]
ALM Phase
[Construction]
Sketch
Related Artifact
Related Artifact
ALM Iteration
[02] Assigned to
Requirement
CQI
ALM Request
[Enhancement] Tasks
Associated
CQ:Requirement
CC Workspace Workspace
Flow Target
ALM Task
[Size]
ALM Task
[Implement]
Work Item
[Task]
Change Set
Build
ALM Task
[Develop Architecture] Included
Reusable asset
A Created in Current Act
Assets
A A
Referenced Supporting
Figure 7-21 Diedrie establishing traceability from the work item to the reusable component in Rational Asset Manager
257
In our scenario, Al uses the Rational Asset Manager Web UI, while Diedrie uses Eclipse integration in her Rational Team Concert development environment.
258
3. He clicks the Search for Assets tab along the top and enters a keyword search for Rebrand.
259
4. From the list of assets that is returned on the search, Al opens the Rebrand Application Solution asset and finds that a related asset, the Rebrand UI Component asset, seems applicable to Diedries request. Al clicks its link and browses this related asset to see its details (Figure 7-23).
Figure 7-23 The Rebrand UI Component asset found in the Rational Asset Manager repository
5. Because Al wants to tag the assets that he has found for later reference, he opens the Tags window and adds a rebrand_solution tag keyword.
260
6. Al decides that its time to share his findings with Diedrie and Marco and to discuss the feasibility of the reuse component. He opens the Asset Detail Tools view and chooses e-mail to send a notification (Figure 7-24).
261
4. She adds a traceability link to the reusable asset by clicking the Add button and selecting Add Related Artifact (Figure 7-25). She names the link Rebrand Application Solution and pastes the URL to the asset in Rational Asset Manager. 5. She clicks the Save button to save the changes to the work item.
Figure 7-25 Diedrie capturing traceability links to the team collaboration on reuse
262
Al Software Architect
Diedrie Developer
2.5 Diedrie conducts a team build and delivers for the integration build
Search Collaborate
Reuse Design
Review Deliver
Build Validate
Deliver
Accept
Monitor
Monitor
263
Figure 7-27 show the lifecycle asset and relationships that are impacted in this scene.
Found in
ALM Project
[AO_Rel2]
ALM Phase
[Construction]
Sketch
Related Artifact
Related Artifact
ALM Iteration
[02] Assigned to
Requirement
CQI
ALM Request
[Enhancement] Tasks
Associated
CQ:Requirement
CC Workspace Workspace
Flow Target
ALM Task
[Size]
ALM Task
[Implement]
Work Item
[Task]
Change Set
Build
ALM Task
[Develop Architecture] Included
Reusable asset
A Created in Current Act
Assets
A A
Referenced Supporting
Figure 7-27 Diedrie using traceability from the Work Item to the artifacts containing supplementary information
264
Diedrie starts working on the UI Branding work item: 1. Diedrie opens the UI Branding work item from her My Work view. 2. She changes the state of the work item from Triage to Start Working as shown in Figure 7-28.
Figure 7-28 In the My Work view, Diedrie choosing the UI Branding work item and Start Working
265
work for an upcoming iteration, to a defect fix in a stream that contains work for an urgent hot-fix release. Diedrie needs a workspace that is derived from the latest stabile baseline. By getting a recent baseline, she minimizes the need to merge changes from the rest of the team when she finally delivers the resolved work to integration. To create a new workspace, Diedrie performs the following actions: 1. Diedrie opens the Team Artifacts view. 2. She expands the Streams node and selects the stream that she wants a workspace created from. She right-clicks the com.ibm.ao.creditcheck.integration.ao_rel2 stream and chooses New Repository Workspace. 3. Because Diedrie wants the latest baseline and all components in the stream, she clicks Finish and has the workspace created and loaded into her local workspace. 4. On the are rare occasions when she might want a subset of the components or another history version, she clicks Next and makes additional choices. After the new workspace is loaded into Eclipse, all projects start to rebuild.
266
4. She double-clicks the Rebrand Application Solution asset to open the Details page (Figure 7-30).
Figure 7-30 Diedrie browsing the details of the Rebrand Application Solution asset
267
268
Figure 7-32 Diedrie using the Pending Changes view and Compare Editor to view file changes in her change set
Figure 7-33 Diedrie sharing her design prototype (contained as a change set) with Marco in a chat
269
Marco is working on an urgent change in the application when he receives Diedries instant message. He can choose two alternative approaches to review Diedries changes. The brief review approach involves browsing the changes in the Change Set Explorer and reviewing the code changes. The in-depth review approach (Figure 7-34) involves accepting Diedries changes into Marcos workspace so that he can view and run the code.
Figure 7-34 Marco performing an in-depth review of Diedries changes and accepts her change set into his workspace
To use the Change Explorer, Marco does the following actions: 1. Marco right-clicks the change set or change sets and selects Open. 2. In the Change Explorer, he browses the code changes. 3. He opens the Compare Editor to see the code-level changes side-by-side with the original code. To accept changes into his workspace, Marco does the following actions: 1. Marco opens the Pending Changes view and browses for outgoing changes. 2. He right-clicks the change sets and chooses Suspend. 3. He opens Diedries change set, right-clicks, and chooses Accept, which applies Diedries changes to his workspace. 4. He views and runs Diedries changes. 5. When Marco is done with validating Diedries changes, he resumes his previous work by right-clicking his suspended change set and selecting Resume.
270
Both Marco and Al confirm that the design of the changes looks acceptable. To add an in-context discussion entry in the work items, Marco performs the following steps: 1. He opens the Chat view with the instant message from Diedrie and clicks the link to the UI Branding work item. 2. In the work item, Marco clicks the Add Comment button and enters a discussion entry for Diedrie. He save the changes to the work item. 3. Diedrie and all other subscribers to the work item receive a notification that the work item was updated. Diedrie clicks the notification and opens the work item to read Marcos entry (Figure 7-35).
Figure 7-35 Marco discussing his review of the changes in context of the work item
For further validation from the stakeholder, Diedrie brings Bob into the discussion and runs a demonstration of the updated UI form. Bob confirms that the corporate brand design and manner of use are now correct.
271
272
Al Software Architect
Diedrie Developer
2.5 Diedrie conducts a team build and delivers for the integration build
Search Collaborate
Reuse Design
Review Deliver
Build Validate
Deliver
Accept
Monitor
Monitor
Figure 7-37 shows the life-cycle asset and relationships that are impacted in this scene.
Found in
ALM Project
[AO_Rel2]
ALM Phase
[Construction]
Sketch
Related Artifact
Related Artifact
ALM Iteration
[02] Assigned to
Requirement
CQI
ALM Request
[Enhancement] Tasks
Associated
CQ:Requirement
CC Workspace Workspace
Flow Target
ALM Task
[Size]
ALM Task
[Implement]
Work Item
[Task]
Change Set
Build
ALM Task
[Develop Architecture] Included
Reusable asset
A Created in Current Act
Assets
A A
Referenced Supporting
Figure 7-37 Traceability established from source code changes in the workspace to the change set and work item that Diedrie is working on
273
Figure 7-38 Diedrie practicing TDD and running her JUnit test cases to validate her changes
274
Because Diedrie has updated her Java code and JUnit test projects, Eclipse manages her files in her local workspace. As previously discussed, Rational Team Concert seamlessly performs the housekeeping of changes to the workspaces and establishes traceability between work items and the induced changes. The changes made by Diedrie to the Java code and JUnit test are visible in the Pending Changes view. Figure 7-39 shows the assembly of change set, associated work items, and drill-down into source code changes for individual files.
Figure 7-39 The changes made by Diedrie associated and prepared to be delivered and resolved with the Corporate UI Branding work item
275
4. To resolve such conflicts, she chooses Open in Compare Editor to view and merge the changes manually.
Figure 7-40 Diedrie identifying and resolving incoming changes to her workspace
276
3. In the Request Build window: a. Diedrie expands the Build Options and selects the Personal Build option. b. Optional: She selects the workspace to build from as shown in Figure 7-41. c. She clicks Submit to run the build.
Figure 7-41 Diedrie directing a personal build to be run on her local workspace
277
Diedrie waits for the build to complete. She monitors the status in the Builds view. After the build is completed, she opens the Build result to access the build log (Figure 7-42).
Figure 7-42 Diedrie viewing the result log of her personal build
278
Rational Team Concert streamlines team processes by adding review items to the work item. To submit a Change Set that is associated with a work item for review, Diedrie performs the following steps: 1. Diedrie opens the Pending Changes view and browses for the outgoing change set. 2. Before sharing the change set with others, Diedrie right-clicks the change set and chooses Complete. 3. She right-clicks the change set and chooses Submit for review. 4. Optional: Diedrie selects the Suspend change sets option to put further work on hold until the review is completed. This depends on her plans to start work on the next scheduled work item while the review is ongoing. 5. She clicks Add to add a reviewer or reviewers. For example, Diedrie adds Marco as her reviewer. 6. She adds a short summary as a comment to the review. 7. She clicks Finish to submit the review.
Marco receives his review notification and completes the following steps: 1. He opens the Pending Changes view and browses for current change sets in the workspace. 2. He opens the review request. The request is hosted in the UI Branding work item that contains the change set or change sets to be reviewed.
279
Whether the code duplicates any code that already exists and if there are opportunities to share more code Whether there are any especially long or confusing methods that should be broken up Whether there are any red flags from a performance perspective Whether there is a cleaner, simpler, or faster way to do the implementation Whether the use of exceptions is appropriate Whether the code follows established project conventions Whether sufficient unit tests were delivered along with the new code
280
After the review is completed, Diedrie receives a notification that the changes have been approved. She can now resume her suspended change set or change sets and proceed with the delivery to the integration stream.
Al Software Architect
Diedrie Developer
2.5 Diedrie conducts a team build and delivers for the integration build
Search Collaborate
Reuse Design
Review Deliver
Build Validate
Deliver
Accept
Monitor
Monitor
Figure 7-45 Diedrie delivering her changes to the integration stream and monitoring the build
281
Figure 7-46 show the life-cycle asset and relationships that are impacted in this scene.
Found in
ALM Project
[AO_Rel2]
ALM Phase
[Construction]
Sketch
Related Artifact
Related Artifact
ALM Iteration
[02] Assigned to
Requirement
CQI
ALM Request
[Enhancement] Tasks
Associated
CQ:Requirement
CC Workspace Workspace
Flow Target
ALM Task
[Size]
ALM Task
[Implement]
Work Item
[Task]
Change Set
Build
ALM Task
[Develop Architecture] Included
Reusable asset
A Created in Current Act
Assets
A A
Referenced Supporting
Figure 7-46 Traceability established from the build to the change set or change sets and work item included in the snapshot created by the build
Managing the stream with flow targets Rational Team Concert uses a concept of flow targets to manage the stream from which
changes are accepted and delivered. In this chapter, we have not discussed the use of flow targets but simply flowing to and from the CreditCheck component integration stream. By default, the flow target is set when creating a workspace. The flow target setting is easily viewed in Rational Team Concert. In the Pending Changes view, the name of the workspace is preceded with a hyphen enclosed in angle brackets (<->) and the current flow target. Figure 7-40 on page 276 shows that Diedries workspace is flowing with the com.ibm.ao.creditcheck.integration.ao_rel2 integration stream. The Workspace Editor view also has a section for viewing and managing the flow target or flow targets of a workspace as shown in Figure 7-47 on page 283. Diedrie intends to deliver her UI Branding work item to the integration stream so that no flow target changes are required. However, later when she delivers to the Solution Integration stream, she must use flow targets for activity.
282
Figure 7-47 Using the Workspace Editor to manage the flow target or flow targets
283
284
285
6. She delivers the new baseline to the ClearCase Synchronized Integration Stream. 7. She removes the repository workspace.
ALM Project
[AO_Rel2]
ALM Phase
[Construction]
Sketch
Related Artifact
Related Artifact
ALM Iteration
[02] Assigned to
Requirement
CQI
ALM Request
[Enhancement] Tasks
Associated
CQ:Requirement
CC Workspace Workspace
Flow Target
ALM Task
[Size]
ALM Task
[Implement]
Work Item
[Task]
Change Set
Build
ALM Task
[Develop Architecture] Included
Reusable asset
A Created in Current Act
Assets
A A
Referenced Supporting
286
Work items
The work items are key drivers for the scenario. The work items carry the following ALM information: Provide traceability to the iteration plan for the team and hence to the responsibilities and schedule for the assigned team member Provide traceability to the work assignment committed by the component team and to the ALMActivity and ALMTask that govern the solution iteration plan Provide traceability to ALMRequest for stakeholder needs Provide traceability to the change sets that contain the code changes resolving the work item Contain the approvals that govern delivery and quality of change in the software supply chain Become traceable from stream, baseline, and snapshot histories Become traceable from build results that enumerate the change sets included in the build By collecting metrics on work items, significant insight can be achieved on project and iteration health. See 7.5.1, Measuring success with Rational Team Concert on page 288, which elaborates on the success metrics based on work items.
Change sets
Change sets form containers for source code changes that are delivered as an atomic unit. Change sets can live in isolation, but from an ALM perspective they have the following characteristics: Provide traceability to the changes resolving a work item Become the unit of delivery between workspaces and streams, for example integration streams Become traceable from snapshots and builds to the change sets that are included in a build The capability in Rational Team Concert to exchange and collaborate on change sets is key to the collaborative development capabilities. Examples of such collaboration is demonstrated in Diedrie collaborates and validates her design on page 269.
Workspaces
The workspace is not a persistable ALM asset but plays an important role for hosting and collaboration on change sets. The ability to manage change sets by applying and discarding them from workspaces is key to the collaborative development capabilities.
Streams
Streams are key to manage change for a version of a solution, such as a release. Streams provide traceability to the history of the following items: Delivered changes sets Baselines and snapshots
Chapter 7. Rational Team Concert for collaborative development
287
Snapshot
The snapshot item provides traceability to the version of files in a set of components at a given time, such as at the time of a build.
Builds
The build items are key drivers for the scenario. They provide traceability to the following ALM information: The snapshot taken at the time of the build The new work items and changes sets that are delivered into the build The artifacts constructed by the build The build result and build logs
Agile planning
Agile planning principles dictate that just enough planning is conducted in order to deliver working software to stakeholders. Teams should not be burdened with the production of expansive project plans or documentation that does not contribute to project delivery. Planning must be directly tied to project execution. In agile planning, the team is given the requirements or work stack to be delivered in the iteration by the product owner. The agile plan is captured in Rational Team Concert as an iteration plan. Given this release scope, the team self-configures the following items: Capture of the stories that present the customer value view of the requirements Elaboration of the work that is involved in supporting the stories Work assignments and ownership Enumeration of perceived risks Agile planning also empowers the entire project team to actively estimate the time they need to complete assigned tasks. This improves the accuracy and reliability in the iteration plan. The churn that frequently occurs in planning, replanning, and re-estimating that causes many projects to fail is frequently caused by incorrect or unrealistic estimates that were dictated taking a top-down approach with project deadlines. The estimates are provided in Rational Team Concert as detailed attributes on work items. The estimates are rolled up to parent items, such as the total for each team member, to estimate work for a composite task, or to the entire team iteration. Estimations provide a
288
measurement of the quality of planning for an iteration based on how much of the work assigned to the iteration has been estimated. This gives the team a basis for understanding whether the work allocated for the iteration can realistically be completed.
Team transparency
Transparency is a fundamental quality on a truly agile team that is empowered with self-direction in order to respond effectively and rapidly to project challenges and changing project needs. Transparency enables teams to pull tasks as needed rather than to only have tasks that are pushed to them by their manager. The triage and direction provided by the development lead still remain essential to ensure that the project remains focused on delivery commitments, but with transparency and self-direction. Workload balancing is a key example of team transparency benefits. In a traditional model, the project manager regularly assesses the workload of the project team and assigns work based on his perception of available team capacity. This approach has drawbacks as it shifts focus of work to individuals rather than the productivity and success of the team. That is, team members define their individual work rather than the team working against a particular milestone. Further, a lack of project transparency and whole team focus encourages project teams and work owners to hide challenges and issues they are facing, working on them in isolation in order to avoid criticism or negative perception. This limits the overall productivity and potential of the collective project team. Project rebalancing can also become bottlenecked by the project manager. Without transparency and a team success culture, project challenges and changes in project work are not addressed until the project manager can reorchestrate the project team. Complete workload transparency creates trust among team members because it allows the truth to be known that everyone is working hard toward project delivery by way of team workload visibility. It also encourages team members to take responsibility for their role in the team and hold each other accountable for the collective success of the team. Project transparency eliminates excuses for unproductive behavior. Project transparency also improves the overall quality of project planning, scheduling, and estimation. This is especially true for geographically and organizationally distributed teams where work estimates might be far more subjective or prone to distortion. Rational Team Concert provides a completely transparent team environment that encourages team success. As workloads change, it makes transparent the areas where help is needed and provides team members with the ability quickly jump in and pair to complete work items. Rational Team Concert brings together team responsibility with personal accountability enabling teams to be responsive to the changing needs of the project. Rational Team Concert reinforces the agile manifesto principle: Responding to change over following a plan. Examples of supporting team transparency are shown in the following figures: Figure 7-13 on page 249, which shows the team Web Dashboard Figure 7-17 on page 253, which shows the team iteration plan in the Web view Figure 7-18 on page 254, which shows the Team Central view
289
In Rational Team Concert, the project plan and work items are fully integrated. Hence the tasks in the project plan are the same assets as the work items that the team is working against. The tasks on the project plan are the same as the actual work items that the team is working against. This alleviates the burden of project plan synchronization for progress reporting for the entire team. The following metrics are examples of what is collected from the iteration plan: Iteration and team workload and balance Risk level from unestimated work Work closure rate Examples of iteration plans are shown in Figure 7-14 on page 250 and Figure 7-15 on page 251.
290
291
292
In Rational Team Concert, the Blocking report (Figure 7-50) plots all open work items with the blocker severity over time. If an iteration is specified, only those work items planned for that iteration are shown. By using the Blocking report, teams can watch for a high or increasing number of blocking work items close to the end of an iteration, which can indicate that the iteration end date is in danger.
Figure 7-50 Report on open blocking work items from the Jazz project
293
294
295
296
The build trend, as shown in Figure 7-54, can help answer important questions about the team. For example, it lets the development teams know how well their parallel development and integration efforts are going. It gives the testers an early sense for the stability of the application. It gives the project manager a read on whether the project rhythm is effective. With Rational Team Concert, the development team and testing team are always in close contact on the assets that are most important to both of them, especially working and not working software. For the testing team, the build result provides an immediate view into the working and not working components of the application. It orients them on the new changes that were added into the latest build, giving them the vital information they need for their testing. It also enables them to collaborate and communicate directly with the owners who implemented specific changes and orients them on the delivery team that is responsible for various parts of the application.
297
298
By adding a new My Queries section to Team Central, and dropping the query into the new section, Diedrie has quick and easy access to her favorite queries as shown in Figure 7-55.
Figure 7-55 Quick and easy access to minimized views and favorite queries for monitoring Diedries success
299
For additional information and examples about measuring team success, see the Development section of the Jazz.net Web site (sign-on required): https://jazz.net/jazz/web/projects/Jazz%20Project#action=com.ibm.team.dashboard.vi ewDashboard
300
The Jazz team measures their success based on the following factors: Jazz development plan health Jazz development event logs Risks Cross-team expectations Cross-team adoptions The Jazz development plans are the collection of individual component iteration plans that form the composite project development plan. The Jazz Development Dashboard is configured to show project status for the current iteration, drill-down overview pages for each iteration, and drill-down into the individual iteration plan documents. The Jazz development event logs are the events notifications from the life-cycle assets, filtered by the relevance of the project health. The Jazz risks are used to enumerate and track perceived project risks. The risks are used to draw the teams attention to areas of concern. The list of risks is reviewed daily with the team leads and the leadership team. The risks are captured as work items tagged with the keyword pmc_risk. The cross-team expectations and cross-team adoptions are common cross-team directions to which each component team is expected to conform. The dashboard surfaces these directions, draws the attention to any new expectations, and unifies the team vision and execution. The Jazz team also tracks the following finer granular metrics: The build health is tracked by trending information about build success versus failure and the number of test cases run on each build. Build health is also tracked by ranking the most frequent JUnit test case failures. These metrics indicate the health of the code base, the coverage of the tests, and any areas of frequent instability.
Open defects are tracked by several views including themes, team, testing, and trends.
Each view provides health information about, for example, the stability of a new tool capability, the delivered quality of each component, or the success of the project quality team. For information and examples about measuring project success, see the Development section of Jazz.net Web site (sign-on required) at the following address: https://jazz.net/jazz/web/projects/Jazz%20Project#action=com.ibm.team.dashboard.vi ewDashboard
301
change, and build integration. Figure 7-57 highlights the part with the enterprise ALM solution that is discussed in this chapter.
Corporate
Rational Requirements Composer and RequisitePro Rational ClearQuest
Recently Acquired
Rational Team Concert
Sketches and so on
Requirements
Reusable assets
Rational Build Forge Rational ClearCase /UCM
Components Streams
Third-party provider
Rational Quality Manager
Test resources US IN
Repository
Figure 7-57 Rational Team Concert as one part of the enterprise ALM solution
302
In the scenario described in this book, open source middleware was used. Rational Team Concert was deployed to a single Windows 2003 server, which runs the Jazz platform, Jabber, Tomcat, and Derby servers. The server also runs the build engine as described in Configuring team builds on page 309. A deeper description of the Jazz architecture is provided in the Jazz Platform Technical Overview on the Jazz.net Web site at the following address (sign-on required): https://jazz.net/learn/LearnItem.jsp?href=content/docs/platform-overview/index.html
303
Figure 7-59 shows the reference architecture for deploying the ClearQuest Connector with Rational Team Concert and Rational ClearQuest. We recommend that you co-locate the deployment of the ClearQuest Gateway and the Rational ClearQuest repository server because a LAN connection is required to achieve production quality performance. It is possible to co-deploy the ClearQuest Gateway and the Rational ClearQuest repository to a single server, but there might be performance implications. Rational Team Concert server can be deployed remotely from the ClearQuest Gateway by using a WAN connection.
WAN
WAN
LAN
Figure 7-59 Deployment reference architecture for Rational Team Concert interoperability
304
To use ClearCase Synchronized Streams, you must deploy one host with both a Rational Team Concert client and a Rational ClearCase client that supports dynamic views. This host supports the initial import and subsequent synchronization operations. Co-locate this view server host with the Rational ClearCase repository to achieve the required Rational ClearCase dynamic view performance over a LAN connection. Also, schedule synchronization to occur at regular intervals, such as nightly, during periods of low Rational ClearCase activity. The ClearCase Workspace owner monitors synchronization results in case merges are required or errors are reported, as described in Diedrie delivers daily changes for solution integration on page 285.
Figure 7-60 Configuring team member information Chapter 7. Rational Team Concert for collaborative development
305
The scenario configuration did not require any configuration of additional work item types or changes to the default work item state workflows. Such configurations are made in the Project Area Process Configuration. To modify the process, open the project area, select the Process Configuration tab, and browse the Project Configuration section as shown in Figure 7-61.
306
In this scenario, four iterations, C1A, C1B, C2A, and C2B, were created as shown in Figure 7-62. When creating a new iteration, make sure to assign unique identifiers for each iteration. Rational Team Concert can also be configured to manage multiple development lines. This scenario mainly focuses on the AO_Rel2 release. However, Figure 7-62 also shows the AO_Rel1Maint development line that the Credit Check team participates in for maintaining the currently deployed application.
For each iteration, a new iteration plan must be created. To create a new plan: 1. Expand the Plans section in the Team Area or in the Team Artifacts view. 2. Expand the iteration, right-click, and select New Iteration Plan (Figure 7-63).
307
Each stream contains a set of Credit Check SCM components (Figure 7-64). These components can be architectural parts of the Credit Check component, versioned artifacts, such as build scripts, or staging areas for release engineering. Rational Team Concert is an Eclipse Team provider, and Eclipse projects are, when shared, added to an SCM component. To add an Eclipse project to an SCM component: 1. Select the Eclipse project, right-click, and select Team Share Project. 2. In the Share Project wizard, choose the Jazz Source Control repository type, select an SCM Component in a repository workspace, and click Finish to add the project to the component.
Figure 7-64 Account Opening and Credit Check streams in Rational Team Concert
308
4. Select the Rational Team Concert project area to connect to, which is the location of the new repository workspace, and the team area to own the stream. 5. Type a new ClearCase Synchronized Stream name. 6. Click Finish.
309
To configure the build engine: 1. In Rational Team Concert, create a new build engine item: a. b. c. d. e. Open the Team Artifacts view. Browse to the Builds section. Right-click the Builds item and choose New Build Engine. Give the build engine a name, for example com.ibm.ao.creditcheck.buildengine. Click Save to persist the changes to the new build engine.
2. On the build machine, create a new command file, for example buildengine.startup.bat. 3. Edit the command file and add the command to start the build engine: jbe -repository http://localhost:9080/jazz -engineId com.ibm.creditcheck.build.engine -userId build -pass "" -sleeptime 1 Note: The command example assumes that the build engine is running on the Jazz server, called com.ibm.creditcheck.build.engine, and is run by the user build that has a blank password. 4. Save and run the file to start the build engine.
310
311
312
Part D
Part
313
314
Chapter 8.
315
316
In this new world, building a solution entails many dynamics and dimensions: Application complexity is increasing, and with it, the processes and scripts for building that solution also increase. Solutions are made of many components that come from many sources. Some of these components are reused across multiple solutions and might be compiled for different operating systems. Some integration builds are highly complex with the need to spread the load across multiple worker machines in a server pool. With this added complexity comes a heightened need for build clarity and quality. Build clarity defines the features and defects that are implemented in a build. Understanding what is in the build helps the testers determine what to test. Build quality provides an indicator of the build stability. Release engineers are under increasing pressure to run build verification tests against the build before staging to the test team. The frequency of builds impacts the teams approach to integration build management, from continuous, nightly, scheduled or on-demand builds. Frequency also impacts the development and testing teams if the builds cannot be produced fast enough. The reason for conducting the build influences the approach. The reason might simply be a nightly build. Another reason might be to re-create a solution that was released three years ago. The build scripts and build environment must be recreated along with locating the source code and test cases. Knowing why the build occurred and where the results were staged are crucial to knowing how that build can be used. The life cycle of build artifacts requires promotion levels, which are determined within the project domain and nature and specifies its maturity in this context. Compliance requirements require that you have a process in place and can prove that you use it. It also requires that you can recreate a build from any given point in time. Keeping build scripts on one persons personal computer is no longer sufficient. Instead the management of the build information must be centralized and accessible by many members of the team. Geographical distribution is the norm in large enterprises, and the build management solution must support that distribution. The build servers might be in a completely different geography than the source code. The staging servers might also be in another geographic location. The build solution must be able to reach across these boundaries without suffering in performance. Organization distribution, such as outsourcing and partnerships with third-party providers, requires the organization to have control over what these trusted partners can or cannot do on their networks. For example, an organization might want to allow their trusted third-party users to run a build, but not edit the scripts that produce the build. The degree of governance required impacts whether the release engineering team needs to generate reports and metrics regarding the builds. Some organizations require reports regarding build success and failure, build server performance and so forth. As you can see, the build is not simply an act of compiling. Enterprise build management requires the coordination of disciplines such as source code management, change management, and quality management. Often there is a large margin for error when one function hands off a deliverable to another. Team members within each discipline generally operate somewhat autonomously relative to the other disciplines, in the sense that their focus is on their core competency, not on the linkage between their work and the overall process of building the product. As a result, sometimes one team might not know what another team is doing when the time comes to build the product. Against these challenges, realizing and implementing an enterprise build management system and fulfilling the needs for audit and compliance are almost impossible without using an enterprise build framework. Yet amidst this rapid change of pace, many build management systems are essentially homegrown and maintained by resident experts. These systems have evolved over time to
317
the point where few knowledgeable experts know how to use them. Teams often automate their integration build processes through scripting. However, these script-driven systems rarely scale across the increasingly large, complex, and distributed environments that characterize modern software development. Often each task operates independently requiring wait times to be built in and properly coordinated. Multiple approaches to building these wait times are taken, and most often these are manually built in and estimated. In this kind of scenario, if one step takes longer than anticipated, the entire build can break. The lack of a consistent, repeatable process can lead to difficulties in reproducing builds. This is particularly true in cases where processes are not adequately documented, so that knowledge about them resides with just one or a few people. Sorting everything out in the context of broken builds can thus be inefficient. Build results are difficult to interpret, and much time is spent chasing down errors. A broken nightly build can easily mean that the test team will sit idle the next day, losing precious testing time, while the development and build teams troubleshoot the errors. Likewise, script-driven build management systems cannot make optimal use of build server resources, because often activities are hard coded to run on specific systems. In the same way, hard-coded scripts make it more difficult for processes to shift, so that work can be shared or reallocated across distributed teams. Project risk increases inordinately if a key team member who knows how to work the build system leaves the project. It is not hard to see the general need for improvement in the integration build process. Simply put, home-grown build management systems are not fit for the challenges that are involved in enterprise integration builds.
Debugging the failure can be a long and arduous process. Worse, the entire build must start again from the beginning before a good build is available. It is time to move away from manual processes or hard-coded scripts and begin to automate the processes that commonly exist within in the assembly line of software development. Decouple the build process from the hardware that runs it. The ability to abstract and define the environments independent of the process frees the team to focus on enhancing and streamlining the process. In this approach, only one process is maintained rather than one process for each hardware and operating system combination. Drive quality management into the build. With a centralized build system, developers and release engineers share the same build process and worker machines for producing the builds. We call this a preflight build. By using the same build process and work machines as the centralized build team, developers are protected from introducing a build-breaking problem due to compiler or build-script mismatches. Additionally developers can catch build problems before delivering their changes. By automating quality management activities, such as static analysis and build verification, tests can take place at every build, thus capturing quality issues early in the development cycle. Build, deploy, and test. Each new build must be deployed to the test servers before the testers can begin. Managing this cycle of builds and deployments through the test environments can be highly complex and error prone. The ability to automate the build process and track each build and deployment through the test cycle accelerates the software delivery cycle. It also provides much needed process and compliance traceability and audit trails. Provide traceability and audit trails to comply with regulatory audits. Capture a full audit trail that can be used to explain what occurred in any build or to recreate a previously completed build. The results of the build must be managed to ensure that the test team is testing from the proper build. Often file systems are full of build results, and it is left to tribal knowledge as to which is the appropriate build to use for testing. Software development is a process that involves many people, and the business must absorb the costs of when these resources are idle due to an error or failed build. To understand the requirements of a software assembly line, IBM Rational has produced the enterprise build management blueprint as shown in Figure 8-2 on page 320.
319
Collaborative Development
Quality Management
Business value
Construct
Release Engineer
Automate complex processes Decouple process from hardware Integrate external systems Streamline performance Retain process knowledge in projects and libraries Step-by-step commands Environments Configurations Worker machines Administration Security
Integrate
Adapters simplify integrations to existing tools Command line Scripts (new or existing) API calls
Execute
Live execution status Step-by-step status Sequential or parallel execution Restart at point of failure Schedule
Analyze
Bill of materials Performance reports Custom reports Custom queries Job history, logs, and audit trail Capture output and apply meaning using filters
320
719
600 516
609
GO
500 Megabytes
481 422
400
363 328
0 1 2 3 4 5 6 Number of Running App Servers System configuration Linux: IBM X-Series 335, 2x 3.2 GHz Intel Xeon, 8.00 GB RAM, Suse Enterprise Linux 9 SP3
1.
Provision Build System
2.
Extract Source Code
3.
Scan/Analyze Source Code
4.
Build Source Code
5.
Package Build Rsults
6.
Provision Test System
7.
Deploy Build Results
8.
Execute Tests
Virtual Images
Virtual Images
Construct
Does your organization have a build master, and is that person the only one, or one of a few, who know how to conduct the build? If that person is not available, is your team capable of running the build? The knowledge of how products and applications are built and delivered to your customers is a precious corporate asset. Typically, this knowledge resides in the minds of a few individuals who can leave your organization. Should this occur, this loss will complicate their replacements ability to take over and render your business vulnerable. On this level, seeking reproducibility involves knowledge retention with the following goals: Protect important development knowledge. Reflect the entire application assembly process from source code through to deployment. Retain comprehensive process data in a secure centralized knowledge base. The most crucial part of enterprise build management is constructing the process that will reflect the needs of the development, release engineering, and test teams. This information must captured in a centralized knowledge base that can be shared, viewed, and refined by the key stakeholders. Each build is represented by a project, and each project has a set of steps that must succeed for the build to be considered complete. The process breakdown structure can be scripted into steps. Most teams already have scripts in place such as Make or Ant. An enterprise build management solution must allow a team to reuse existing scripts. Large and unwieldy scripts can be broken into discrete steps that become more manageable and easier to diagnose. The needs and requirements for the whole process should be determined precisely to deduce the environment variables, configurations, and server needs. When this knowledge is captured in a meaningful and constructive manner, inconsistencies and contradictions can be eliminated. The result leads to a standard, reproducible, and consistent process flow and knowledge for the build, release, and deployment.
321
Environments
You have one build machine and one script. The only way to build an application is to use that script and that build machine, which can create bottlenecks, risk, and a single point of failure. Depending on a single build machine is fraught with risk. Instead, the process must be designed to abstract out environment specific variables, thus enabling a single build process that can be used in many environments. In doing so, you ensure that the same process is used and that a change in the process is applied to all environments. By decoupling your build process from the hardware that runs it, you can future proof your build process. Some organizations must support applications that run on a wide variety of hardware and operating system combinations. When build scripts are written for every environment, the problem can be solved. However, the risk of conducting the build in a consistent manner is lost. If the build script changes, it is easy to lose track of which systems have the updated script. The key is to separate the process for conducting a build from the environment on which it will run. Over time, the hardware will change, but the build process itself will not. Additionally any change to the process is completed once, and that process is used across multiple environments. Having a system that helps you to create and manage multiple environments for a single application frees your build process from its hardware. As new operating systems are released, new environments are created and managed. The effort spent on reusability by using environment variables and virtual servers and configurations provides a great advantage to compact the project and mitigate the maintenance work as well as increase understandability.
Worker machines
The use of pools of servers can decrease the amount of time required to complete a build. To speed the build process, Rational Build Forge manages a pool of servers. Build and release management requires scalable runs. When your frequency of build increases, you can add new build servers just by defining them in the build and release tool with flexible selection parameters. The optimization of the selection should be left to the tool itself. Worker machines and their configurations are maintained together within the tool without having any inconsistency. For example, you must patch the system that you deployed three years ago, but do you know how to build it? The auditors are coming in next week, and you must quickly start documenting the build process. Reproducibility comes into play on several dimensions. The first dimension involves time. Can your team reproduce a problem in a system that was built a year ago or perhaps six months ago? If a high profile customer requires a patch to a system that has since been revised several times, are you able to deliver?
322
These considerations allow better standardization and quality. Fine-grained security capabilities are essential for a successful and reliable enterprise build management solution.
Integrate
A perennial challenge in creating higher quality software faster is the need to balance speed and efficiency with adherence to a consistent, reliable, and structured approach. Whether the mission is development, testing, or code control, teams do not want constraints on how they operate, particularly in their choice of tools. Efficiency within each discipline is paramount. An enterprise build management solution must ensure the following objectives: Preserve developments freedom of choice. Allow for process standardization without the political warfare of which tool to use for a step in the process. Use readily available integrations with source control, testing, defect tracking, and packaging contribute to rapid implementation. Customize integrations to fit your processes and adapt to changing needs and tools over time. Provide a self-documenting system with accurate, ongoing documentation of release contents, and a bill of materials for communication and compliance. When seen from the wider perspective of the organization as a whole, optimizing efficiency might entail additional structure. Many software artifacts that are managed by different servers and tools, take part in build and release management. For this reason, the tool that you are using for build and release management should be able to support every kind of integration: Command line Scripting API calls Adapters or connectors Integration with existing tools, such as IBM Rational ClearCase and ClearQuest, for change management and the reuse of existing scripts, such as ANT, is a fundamental aspect in the enterprise build management blueprint.
Execute
In a software development environment where agile development, continuous builds, and frequent testing are mantras, it becomes perfectly clear that the build process must be automated and efficient. By building early and often, teams can reduce the amount of time in the cycle of finding, fixing, and verifying a defect. Using a process engine that allows for sequential and parallel tasks adds additional efficiency to the overall process. For example, with Rational, builds that once took over 24 hours were reduced to approximately three hours. This massive reduction in build time resulted in an immediate improvement in quality. The ability to find, fix, and verify defects dramatically improved as the time required to build the solution was reduced. When the build projects are constructed and integrated with the existing systems, the automated process can be run. Executing the process should be as simple as clicking a Run button. During execution, live execution status and step execution details provide real-time feedback on the status of the build. The progress of the build is tracked on a centralized and Web-based dashboard. Should the build fail, the exact step is highlighted on the dashboard. Builds can take many hours to complete. A failure in the middle or toward the end of the build can be costly. The ability to repair and restart a build from the point of failure saves the team
323
countless hours in waiting for the build to complete. The problem can be diagnosed, and the build can be started from the point of failure. During execution, the efficiency and performance of the process can be examined. It is here where opportunities to create threads for parallel execution, instead of sequential execution, become more evident. There are times when only a portion of the build process needs running. The solution should provide a way to disable (or enable) specified steps with each run. This makes testing and debugging easier by allowing the release engineer to focus on a specific section of the process without waiting for the entire process to run. Last but not least teams, the build must run like clock work. Therefore, flexible scheduling for running the build is critical to creating the software delivery assembly line.
Analyze
What good is the build if you do not know what is in it? Having a detailed bill of materials that lists the changes that went into the build helps bring clarity into the contents of the build. This clarity helps the test team to target their test efforts on areas that are ready for testing. It also reduces the possibility of not testing a function due to lack of visibility. The bill of materials also provides a key piece of information to a compliance auditor when the auditor asks what changes went into the build. This bill of materials must be automatically produced each time the build is run. Within the project steps, filters and patterns must be used to interpret the output of each step for reporting or decision making purposes. For example, there are times when the build integrates with a third-party application to automate a step in the build. The results that are returned from the application might be vague or come in a vocabulary that makes sense to that application. An automation framework must provide a means of interpreting the result to indicate whether the step has passed of failed. For example, when running a static analysis tool, a threshold or policy can be set to determine the quality of the source code. While the scan itself might complete successfully, enough errors are found to indicate a quality failure. By providing the ability to filter this result, the automation framework can catch this type of quality failure and indicate that the step has failed due to a lack of quality in code. Custom query reports provide insight into the build results over time. A team can analyze their success or failure rate in terms of the enterprise integration build and thus seek strategies to improve their success rates. For example, how often does the build break and how long does it take to fix? With this insight a team can employ strategies to improve their results. Ready-to-use performance reports provide an indication on whether the build time can be improved. Teams can seek strategies, such as identifying steps that can run in parallel or steps that can be spread across multiple worker machines to optimize the build time. Automation is powerful, but can be dangerous if the steps are not logged. Enterprise build management solutions must capture everything that occurred as part of the automated process, from project history, a bill of materials for each job, and a full audit trail of what occurred. Consider, for example, the issue of regulatory compliance. Many businesses in industries, such as financial services and health care, are under significant pressure to document what they do during software development projects. Documentation takes time and requires communication, potentially reducing efficiency. But the risk of sanctions can be significant to the company overall. Can your team produce documentation that describes exactly how it built a product that was released a year ago? Can it reproduce that product during a compliance audit? Likewise, can
324
it reproduce the build and release environment itself, which includes the operating systems, libraries, server memory configurations, and so forth? For audit and compliancy or monitoring reasons, you must have a detailed job history and full audit trail administration. By abstracting out the build process in a repeatable automation, the steps taken to produce the build become visible to anyone who might need to inspect it. By automating the procedure, you can prove to auditors that you have a process and that it is enforced. By managing build projects in a centralized build system, your organization can retain information about prior builds that allows the auditor to look into the past (Figure 8-4).
Development
Application
Pre-Prod
Where these
Tests Executable
Of this
Release
Implemented these
Requirements
on this
Environment
Changes
In this
Approval
325
Integration Build
Diedrie
Continuous Builds
Nightly Builds
Daily Builds
In this part, we describe Act 3 of the reference scenario, which is illustrated in Figure 8-6. This act contains the following scenes: Rebecca responds to a failed build. Rebecca runs the integration build. This act might appear simple with only two scenes. However, Rebecca has a sophisticated build process that she has automated. While her scenes in the storyboard might be limited, the build automation process is expansive.
3 Integration Build 3.1 Rebecca responds to a failed integration build 3.2 Rebecca runs the integration builds
The individual team builds are integrated into a single solution build for testing.
Release Engineer
326
Diedrie Developer
2.5 Diedrie conducts a team build and delivers for the integration build
Build Validate
Deliver
Inspect failure
Run
Announce
Monitor
Resolve
Monitor
The act starts with Rebecca inspecting the build and resolving a build failure. Then, she starts the build and monitors the result. While the build is running, several important tasks are automated: The script gathers the sources and prepares the build environment. Static analysis is run against the source code base. The solution is compiled. Verification tests are run.
327
The solution is packaged into a distribution archive. The solution is published. Publishing the solution involves staging the distribution archive, archiving and baselining the build project, and creating records in Rational ClearQuest to publish the build result and baseline information. The act ends with Rebecca notifying the team of the build result.
328
329
When using Rational ClearQuest, Unified Change Management (UCM), and Rational Build Forge, the UCM activities that are delivered with each build can be automatically captured and communicated to the team in Rational ClearQuest. This helps the test team know which defects to verify with the new build. Teams can also identify which tests have been run against the build. Additionally, when defects are found, they can reference the build record to indicate which build contains the defect.
analysis also makes the development organization more productive. Rather than concentrating on the code review and analysis, teams can focus on value-added corrective actions that progress the project toward high quality, working software. Ideally, build-level code review and analysis should complement developer- or desktop-level code review and analysis. Developer-level code review and analysis are important because they catch weaknesses in individual contributors code before they are advanced and integrated into the composite application. Code review at the developer- or desktop-level ensures that corrections can be made early when they are easy to identify and implement. Rational Software Analyzer provides both developer-level and desktop-level build and integration level-code review and analysis. With this capability, you benefit from organizational code quality management and developer-level code quality and best practices execution.
331
Also log filters in Rational Build Forge have a crucial importance in build clarity. By using them, we can determine success or failure or decide a conditional behavior, such as chaining to other projects. Log filters can be used to recognize any pattern in an output and can be useful in preparing a bill-of-materials section for our builds. For more information about log filters, see Log filters on page 348.
332
Build Server
Request Reply
6
RSAR Enterprise
5
Report Results
Development Manager
3
Server
Server
Invokes Scan
6
Build Manager
Source Code Repository
1 2
IDE
2 Code is checked in to
Automated code scanning, not dependent on individuals or location; adhere to IT compliance standards
Code scan initiated as part of the overall build process; automated approach is more pro
active than reactive
Generated reports enabling management or executive view into compliance related issues Long-running analysis can be scheduled to run overnight or off-hours
Figure 8-8 Build Forge and IBM Rational Software Analyzer working together for automated code analysis
You can schedule Rational Software Analyzer to run as frequently as you need in conjunction with your automated build schedule. For example, you might decide that analysis should be executed for every release build or that analysis should take place for every build. Implementing automated code review into your build process is easy with Rational Software Analyzer and Rational Build Forge. Rational Software Analyzer includes a Rational Build Forge adapter that allows you to easily integrate code review and analysis into any Rational Build Forge project. When an analysis project is run as a part of your build process, Rational Software Analyzer creates an analysis report and includes a link to the report in the build log of Rational Build Forge. Analysis reports are saved on the Rational Software Analyzer server and are accessible from any standard Web browser. Rational Software Analyzer also includes the results of the analysis in the build log. When deciding how frequently you should do code analysis, ask yourself the following questions: Will a software architect or development lead be available to respond to discoveries at the regularly scheduled intervals? Is sufficient time allocated between analysis runs to respond to discovered discrepancies? How can we adequately address code review and analysis into our development rhythm without being counter productive? If your code review cycles are too frequent, you will create more frequent context switching, which can result in unproductive development cycles.
Chapter 8. The release engineer conducts the integration build
333
Results from Rational Software Analyzer can be reviewed at status meetings, and key stakeholders can decide on the required corrective actions to achieve acceptable quality levels.
334
Selecting analysis rules Rules are the smallest building blocks of a code analysis configuration in Rational Software
Analyzer. Rules are grouped by domain, type, and category. For example, the rule Avoid calling finalize() except in the finally block of the finalize method lives in the Java Code Review domain and type under the Performance\Memory category and subcategory as shown in Figure 8-9.
Figure 8-9 Code review rules organized by domain, type, and category
335
Rational Software Analyzer provides a large set of rules across a broad array of categories. When creating an analysis configuration, it is best to select a small set of logically related rules, which has the following benefits: Returns results faster for optimal performance Produces a smaller and more manageable set of analysis results that take less time to evaluate The ability to fix analysis results faster, which translates to better quality code in less time
336
337
A deployer must choose a build to deploy to the test servers, run a set of verification tests, and notify the rest of the test team that they can begin testing.
Deploy
Deploy
Deploy
Deploy
Deploy
Performance and Security Test
Deploy
Analyze
Function Test
Acceptance Test
Production
The life cycle is actually numerous iterations that can happen quickly. Deployment happens over and over again, just by different people for different reasons. Testing happens over and over again, changing in focus as you near production.
Development
Operations
Figure 8-11 Deployment occurring repeatedly until the final deployment into production
After all, the servers, middleware, and application must be configured properly for the application to run, and the results of the build process (the software application) must be moved to the test servers and configured for testing. By taking advantage of deployment to test, a development team can gain knowledge in the details of deploying the application. Additionally, as a release candidate moves toward production, the solution is deployed through the various test environments of function, integration, system, performance, security, and user acceptance testing. In this case, the build is the same, but the underlying server configurations and the type of tests performed will change. Moving from one test environment to the next involves an act of deployment.
338
Also the developers, build engineers, and deployers are each impacted by the need to deploy to a test server of some kind. If each of these servers is configured differently (which is most likely and common), how can you guarantee quality? A developer might claim that it works on their machine, which is a common claim. Sometimes it works because the developers server is configured differently than the test teams server. This configuration information is highly valuable across all roles on the development team. Additionally, this same configuration information must be communicated to the operations team for the deployment into production to be successful. How we do ensure that these complex configurations match? Many organizations rely on highly skilled IT professionals to configure the servers, middleware, and applications. Not only are these repetitive tasks, but the configurations are complex enough that a simple oversight can lead to errors in testing or production. It is an inefficient use of IT resources and an expensive choice, because some of the best employees are needed to perform this critical function. IBM Tivoli Provisioning Manager automates the provisioning of servers. Just as Rational Build Forge provides a flexible framework for automating the build process, Tivoli Provisioning Manager provides a framework for automating the provisioning of servers from bare metal to the top of the software stack. The bottom line is that, not only is manual configuration of servers expensive, it can be error prone. Adopting strategies for automating the provisioning of servers becomes a core best practice. In doing so, the scripts that are used to build a server used in production can be reused to build the server in the test lab.
Automating deployment
When viewed from this perspective, the repetitive nature of deployment becomes obvious, and the opportunity for automation surfaces. Rational Build Forge provides an automation framework that can address part of this need. For simple applications, you can create a Rational Build Forge project that uses File Transfer Protocol (FTP) to transport the application and a set of scripts to install it on the host machine. For more complex applications, Rational Build Forge can be used to call Tivoli Provisioning Manager to do the deployment. Tivoli Provisioning Manager provides an automation framework that targets the provisioning of servers from bare metal through the application layers and even to the network and firewall settings. Rational Build Forge is integrated with Rational ClearCase to extract the latest of version of the source code. Rational Build Forge features build auditing capabilities that enable you to keep bills of materials for your builds and to access and reproduce previous build artifacts as needed. Additionally, use Rational Build Forge to check the build results back into Rational ClearCase, and to create build and deployment records in Rational ClearQuest. Automating deployment as shown in Figure 8-12 on page 340 involves the following approach: Use Rational ClearCase to version control your source code, build scripts, and build results. When used with Rational ClearQuest, leverage UCM to manage team activities. By using Rational Build Forge, you can create a build process that retrieves the distribution archive from Rational ClearCase. This assumes that the archive was previously checked in by an automated build process as demonstrated in the reference scenario in this book.
339
Use Rational ClearQuest to track builds and deployments through your test environments. The reference scenario demonstrates how you can automate the creation of an ALMBaseline and BTBuild record in Rational ClearQuest. You can also implement a process for managing the deployment of your release through your test environments by using a Rational ClearQuest deployment record. A Rational ClearQuest deployment record enables you to track the set of build artifacts that you want to deploy through a link to a Rational ClearCase deployment unit. You can use Rational Build Forge to automatically create the deployment unit and manage it in Rational ClearCase. The deployment unit can then be used by Tivoli Provisioning Manager to deploy the build results to the test server. This integration automates your deployment process for your specific servers. Your Rational Build Forge project includes a call to Tivoli Provisioning Manager, which then conducts the deployment. When Tivoli Provisioning Manager has completed its work, the result is reported back to the step in the Rational Build Forge project.
Figure 8-12 Automating the deployment step by using Rational Build Forge
IBM TechWorks provides a Proof-of-Technology hands-on workshop called Discovering Build and Deployment Automation with IBM Rational and Tivoli Solutions that demonstrates this capability. IBM customers can contact their sales representative to arrange to enroll in the Proof-of-Technology workshop. The session is offered free of charge. IBM employees can access this Proof-of-Technology workshop from the IBM TechWorks Web site.
340
Chapter 9.
341
Delivered changes are integrated, built, and verified. The release engineer is monitoring the build process.
This act has the following scenes: Rebecca responds to a failed build. Rebecca runs the integration build. The following IBM Rational products are used in this act: IBM Rational Build Forge Enterprise Edition With integrations to Rational ClearCase, Rational ClearQuest, and Rational Software Analyzer
342
System Overview
BUILD/RELEASE FRAMEWORK
Management Console
Centralized Web-based, Collaborative Distributed Access, Role-Based Security
IDE Plug-ins
Developer Self-Service, Role-Based Security
Workflow
Control
Acceleration
Notification
Scheduling
Log Analysis
Tracking
Reporting
Process Automation
Development
Source Control
Product Build
Quality Assurance
Package
Release
Scripting IDEs RAD Eclipse Visual .NET Languages Java C C++ C# And so on Source Control ClearCase StarTeam Perforce CVS PVCS VSS Synergy Subversion And so on
Python, VB script, Batch, Perl, KSH Change Mgmt ClearQuest Remedy ChangeMan DevTrack Bugzilla And so on Build Tools ClearMake Ant NAnt Make GNUMake NMake Open Source And so on Test Tools TestManager Performance Functional Robot LoadRunner TestDirector WinRunner Junit And so on Release Tools Tivoli WebSphere WebLogic WIS And so on
Platforms
All stakeholders in a team can run easily and effectively run the automation by using the Rational Build Forge integrated development environment (IDE) plug-in or the Rational Build Forge Management Console. The results of each automation job is captured in a detailed bill of materials. The Rational Build Forge framework also ensures that all processes are run consistently by the team members who have been given access to do so.
343
Rational Build Forge also offers the following benefits: Reports success or failure through e-mail, RSS feeds, and on a Web-based dashboard Stores attempted commands and the resulting output or error messages in logs Can schedule the project for repeated runs, guaranteeing that the standard process is executed the same way, every time, and occurs as often as needed Figure 9-3 shows the Rational Build Forge ecosystem, which includes the following components: The Rational Build Forge core components, which consist of the engine, management console, and services layer with a quick report, are used to manage, automate, and report on the automation projects. A pool of worker machines is used to execute the automation jobs. The system can find available server resources at run time, rather than relying on the availability of a single machine. Client access is available via a Web-based console or IDE plug-in for use by developers. Architecturally, Rational Build Forge has a three-tiered structure: The Management Console The Build Forge Engine Build Forge Agents
Database
Execute Command
User Registry Application Server Build Forge Perl API Build Forge IDE Plug-ins Development Environment Visual Studio Eclipse
Worker Machines
Build Forge Agent
Agent
Server
Agent Server
Server
Agent
Server Server
Perl Script
Agent
Agent
Server
Agent
Server
Agent
Server Server
344
The Management Console provides a user interface to the system. It is a Web-based PHP application that runs on an Apache HTTP server. Through it, you can organize steps into projects and manage the server resources and environment variables that those steps need. Step: A step is a sequence of one or more commands for a specific purpose in Rational Build Forge. The Build Forge Engine acts on instructions that were entered from the Management Console. It uses information that is stored in the database to communicate with agents, execute project tasks, and perform notifications. It also stores comprehensive project information and tracks each run of a project. User and system actions are stored in it, so that auditing and reporting data can be extracted and analyzed. Build Forge agents are deployed on each server where the project must run a command. The agent is a compact small binary that performs the following tasks: Listens for commands from the Build Forge Engine Executes the commands Sends results from the commands back to the Build Forge Engine
9.2.2 Projects
Each automation is defined and organized by a project. You use the Projects module to create new projects and edit or view existing projects (Figure 9-4). Projects are executable sets of steps, with their own environment group and server properties.
Projects module Add a new project Edit project properties Run project Project list New project view
345
To change project-level properties (Figure 9-5), select Projects. Then click the icon next to the desired projects name. The name of the project is used to refer to the project in lists and in the database. The project name is used to construct the project directory when the project is executed. Tip: With the Rational Build Forge system, you can use any characters in the project name. Since a project can contain steps that run on different operating systems, avoid using special characters and symbols that can cause problems on those operating systems. A project contains a wealth of information. Some of the information is captured in a set of steps. Other information is captured on a set of tabs: Project details Tags Registers In this section, we provide information about the Project Details and Tags tabs.
The Access property is the access group that is allowed to view and use the project. The Access property is used along with permissions to determine what a user can do. For example, to launch a job, you must be a member of the access group that is specified for the project, and you must be a member of a group that has the Execute Jobs permission. Rational Build Forge has detailed permissions that enable you to differentiate the levels of control. For example, you can permit a developer to run a project but restrict the ability to edit the project.
346
The Max Threads property is the maximum number of parallel processes that the project is allowed to launch. Use this field to keep a project that uses an optimized number of system resources. Each thread-enabled step and any inline projects (which themselves might launch thread-enabled steps) can result in parallel processes, but all of those processes are counted against the maximum for the parent project. The system stops launching new parallel processes when it reaches the Max Threads value and waits until the number of parallel processes for the project drops below the Max Threads value before continuing. You modify this property to optimize performance. The Run Limit property sets the maximum number of jobs of the project that are allowed at one time. If you launch a project, but the currently active jobs already equal the limit, the new job stays in the Waiting queue until one or more of the jobs completes. If a schedule attempts to launch a project when the number of running projects equals the run limit, the system does not launch a new job at all. Also, projects that are launched via an inline chain are not considered instances of the original project and do not count toward its run limit. Each project must be assigned to a class, which assigns global properties to groups of projects. A class defines the interval at which Management Console and data are removed for a project run. For additional flexibility, a project might be executed when the purge process is executed. The Selector property is the name of the selector to use when choosing a server for the project. The system uses this selector as the default for any steps within the project that do not specify their own selectors. If a selector is not specified, the project is added to the Libraries module instead of the Projects module. Library projects use the selector of the calling project. The Environment property is an environment to apply after the server environment and before the step environment. The Start Notify, Pass Notify, Fail Notify properties direct the system to send notification e-mails on project start, pass, or fail, by selecting an access group in one or all of these fields. Many times a label is needed to identify the job that run. The Tag Format property on the Tags panel (Figure 9-6) uses plain text and tag variable references to provide such an identifier for the project.
You select the Sticky check box to force all the steps of the project that use the default project server to stay on the same server and to wait for it to become available if it is busy. Steps within a project can run on different servers if their selectors allow it. However, you might want all or most of the steps of a project to run on the same server, whether you specify that server in advance. Note: In the reference scenario, Rebecca manages the AccountOpening project in Rational Build Forge.
Chapter 9. Rational Build Forge for enterprise integration build
347
Log filters
You use log filters (Figure 9-7) to change the success criteria for a step. By using log filters, you can evaluate step output and set step results to Fail, Pass, or Warn based on the contents of the step output. This gives you the ability to closely control the criteria that is used to determine step success or failure. If filtering is not set up, Rational Build Forge determines the success or failure of any step command by its exit status, where 0 is success and 1 is failure.
Select Log Filter to edit Pattern list actions Edit Log Filter Pattern properties
For example, some commands always return an exit status of 0. A reporting command, such as net use, prints a list of mapped network drives. The command always succeeds, even if the list does not contain the desired drive. Using a filter set, you can parse step output to look for a specific drive and mark the step as successful if it is found. Log filters can contain one or more filter patterns. Each filter pattern is associated with an action and optionally an access group for notification. To use the log filter, you must assign the log filter to a project step by using the step Result property. When you assign a log filter to a step, the filter patterns in the log filter are run on the step output whenever the project runs. When you assign a log filter to a step, the step result that is
348
set by the log filter overrides all other criteria for determining the success or failure of the step. This includes the exit status for the step commands or any step properties. For example, if the step run time exceeds the time that is specified by the step Timeout property, the step stops. But its status is not considered a failure unless its associated log filter action causes it to be set to Fail.
Filter patterns
A filter pattern defines the character string or expression that you want to match in the step output. Each filter pattern that you create is associated with a single filter action. Both filter patterns and actions are defined in filter log sets. The ability to include multiple filter patterns in a log filter and apply it to output from a single step allows you to use multiple search criteria without constructing complex expressions (Figure 9-7 on page 348). Note: Rebecca uses a filter pattern in the first step of the AccountOpening project. See How Rebecca defined the project steps on page 364 for information about her use case.
Classes
A class is a group of jobs. Each job must be a member of only one class. You can use classes to set up types of jobs and apply behavior to each type globally. A job gets its default class from the properties of its project, but you can manually choose a different class for a job when you launch it by selecting Jobs Start page.
9.2.3 Jobs
The Jobs module provides a list of executed projects that you can use to view project outcomes. Use the Jobs module to launch projects, view the results of earlier runs, and get information about currently running projects. The Jobs module has the following tabs: The All tab lists all projects regardless of job status: completed, running, archived, or locked. Use the All tab to locate a project if its status is unknown. Projects that are listed on the All tab are displayed in the following order: a. Currently running jobs b. All other jobs in order of date and time completed, with the most recently completed job listed first Click a project to display information about the project. The Completed tab lists finished jobs whose logs and data you have permission to view. The Running tab lists projects that are currently running on any of the servers known to the Management Console. Use the Running tab to view projects that are in process. The system lists jobs on the Running tab until they have completed. After that, it lists them on the Completed tab. The Archived tab in lists information about project runs whose file data has been deleted, but about which the database retains console data. Use the Archived tab to view information about jobs that have been purged. Note: In the reference scenario, Rebecca responds to a job that failed to complete. Upon resolving the error, she restarts the job.
349
9.2.4 Schedule
After you create a project, you can schedule it to run at a future time or at regular, repeated intervals (Figure 9-8).
Schedule module Calender view Selected schedule Data set for schedule
For example, you can set up a project to run every hour or every day as shown in Example 9-1. Project defaults, such as Selector, Environment, and Class, can be modified for a projects schedule. When adding a schedule, an icon appears in the Calendar view. The number displays the number of schedules that are set for that day. Hover over the number in the Calendar view to see what is scheduled, and hover over the Schedule to view the schedule configuration. When many schedules exist, use the Schedule Filter to view the projects for which you want to view schedules
Example 9-1 Scheduling Jobs
Run project every day except weekends, at 4:30 pm and .11:30 pm. Minutes 30 Hours 16,23 Dates Months Days 1-5 When the system has computed the next run time for the project, it displays it in the Next Run column. The system displays a dynamic calendar on the Schedules page, as well as the form displayed when modifying a schedule. The calendar shows the number of projects that are
350
scheduled for a given day, for two months (the current and upcoming months). You can hover over individual days to see the names and schedule parameters of all the projects scheduled for a given day. If you have more than one project scheduled, the system displays a list so that you can filter the calendar display by project. You can disable a schedule temporarily or configure it to run once. Note: In the reference scenario, Rebecca has scheduled this project to run weekly.
9.2.5 Environments
With the Rational Build Forge system, you can manage environment variables separately from the projects and servers to which they apply. You use the Environments module to create and edit environments that can be applied to servers, projects, and steps (Figure 9-9). This paradigm provides a great deal of flexibility in creating the environment for any particular command: You can create environments that contain environment variables. You can use the .include command to nest environments together. You can assign one environment to each server, one to each project, and one to each step within a project. Environments are a powerful feature that allows projects to have broader applicability. Step behavior is not hardcoded and can be varied easily by changing the value of relevant environment variables. Also using environment variables is highly recommended for increasing easy maintainability.
351
Before the system executes a step, it applies all the relevant environments for the step to create the step environment. It evaluates the server, project, and step environments, in that order, which has the following ramifications: The step gets the environment variables for the server on which it runs. Project variables can override server variables, and step variables can override project variables. The last value set wins.You can use variable actions to change this behavior. When the system starts a job, it copies the project environment variables to a database record that is set aside for the job, and refers to this job environment thereafter when getting project default values. If the user modifies the starting values of any project variables when the user starts the job, those values are recorded in the job record. Note: In the reference scenario, Rebecca has defined a number of variables by using the Environment feature. See How Rebecca used the environment variables on page 372.
9.2.6 Servers
A server is a logical reference to a physical host that the Management Console uses to execute projects or steps. Rational Build Forge provides a user interface for managing servers (Figure 9-10). The server maps to a physical machine through its definition, allowing dynamic allocation of physical resources, without requiring modification of individual projects. The ability to dynamically allocate server resources provides key benefits such as fault tolerance and optimal hardware utilization. To be used as a server host, a machine must have an agent installed, and it must be configured in the Management Console.
Servers module Servers detail list Servers element list Add new server
352
Note: In the reference scenario, Rebecca resolves her build problem by adding another server to her pool. See 9.3.1, Rebecca inspects the build on page 358, for instructions on how to add a server.
Selectors
By using server selectors, you can describe the kind of server that a project or step should use by listing desired properties and values. When you apply a selector to a project or step, the system uses the selector to determine which servers are valid choices for the task and then selects an available server from the valid ones. You can also use selectors to be specific, such as choosing a specific server by name. To manage selectors, choose Servers Selectors to view the Selectors page (Figure 9-11).
A selector is a list of properties that describe the desired server. If you want to select servers based on properties that you define, first create the appropriate collector properties. See Collectors on page 354 for more information about collectors. If a selector does not find a server that matches its property list, then the project or step fails and the system creates a build note. Note: This feature is highlighted in 9.3.1, Rebecca inspects the build on page 358. The project fails because the system cannot locate an available server based on its selector.
353
Collectors
Instead of choosing servers directly, you can set up data to describe the right kind of server for a project or step. You create collectors to attach properties to servers, and those properties are stored as the servers manifest. A collector is an object that defines the set of properties that the system collects from or assigns to a server. The collector assigned to a server is like a blueprint for the servers manifest. The Collectors section of the Servers module, shown in Figure 9-12, lists the available collectors. By using this section, you can create new collectors. A collector consists of a series of properties that are assigned to any server that uses the collector. However, the specific values of the properties can vary from server to server, because a collector is a set of instructions for collecting data. Server manifests allow the system to choose the right server for a project or step dynamically, based on the current situation.
Consider this simple example. You create a selector named Mercury, which selects servers whose BF_NAME is equal to Mercury. When you run the project, the system selects the server named Mercury. Because this property is unique, the system always chooses the same server, and if that server is not available, the project fails for lack of an available server. Here is a better example. You create a collector named Stats that collects RAM, the number of processors, and hard-disk space available. You assign the collector to several servers, one named Mercury (with 512 MB RAM), one named Mars (with 1 GB RAM), and one named Jupiter (3 GB RAM). Then you create two selectors named MuchRam (selects servers with at least 2 GB RAM) and NotMuchRam (selects servers with at least 256 MB RAM). Finally you create two projects, each of which uses one of these selectors. 354
Collaborative Application Lifecycle Management with IBM Rational Products
When you run the projects, the system chooses the server Jupiter for the project that uses the MuchRam selector, because it is the only one that matches. The project that uses the NotMuchRam selector might end up with any of the available servers. Later you add a server, Neptune (2 GB RAM), to the system. The next time you run a project that uses the MuchRam selector, the system might choose either Neptune or Jupiter. If Jupiter is down for some reason, the system uses Neptune, because it is the only one left that fits the selector.
Manifests
A manifest is a list of the properties for a specific server. Where a collector specifies a property, such as memory size or Perl version as something to collect or assign, a manifest stores the result of the collection operation. That is, a manifest for a server is the set of values that the Management Console collects from or assigns to that server and stores as a record in the database. When it chooses a server for a project or a step, the system compares a selector against its set of manifests and chooses a matching server. You can view the manifests for your servers in the Servers module by selecting the server name and clicking the Manifest tab. You cannot directly change the manifest for a server. Instead, you must edit the collector assigned to the server or assign a different collector to the server. The collector defines the kinds of properties that the system assigns to a server or attempts to collect from it. The manifest is the resulting set of property values. Figure 9-13 on page 356 illustrates the relationship between servers, selectors, collectors, and manifests. This structure has crucial importance in the following capabilities of Rational Build Forge: Repeatability for consistent usage of systems and tools based on project system and tool requirements Abstraction so that projects and steps are not tied to specific physical systems Dynamic server management, which allows dynamic additions and removals of physical systems Scalability Improved resource utilization Fault tolerance
355
Collector
Defines properties to collect, for example: Operating system Java version CPU load
Server authentication
You use server authentication to associate login credentials to a server. You can use the same credentials for many servers and update the credentials globally, by managing a set of server authentications. Server authentication stores a login name and password as a single named object that you can associate with one or several servers. Use the Server Authentication page to create and edit server authentications. You can force the system to use your Management Console login credentials instead of the server authentication that is assigned to the server, by using a special environment variable. To override the normal authentication, add a variable named _USE_BFCREDS, with a value of 1, to an environment used by your project or step. If you add the variable to the project environment, the system uses the override on every step in the project. When the system attempts to run a step whose environment contains _USE_BFCREDS=1, the system uses the console login credentials of the user who started the project to execute the steps command. Having separate server authentication is highly recommended to prevent an unprivileged user from performing tasks in Rational Build Forge as a privileged user without needing the credentials.
9.2.7 Libraries
The reference scenario does not use a library, but it is good to know that you can use libraries to modularize common steps into a reusable unit. The Libraries module (Figure 9-34 on page 384) displays library projects. When a project does not have a selector specified, it appears in the Libraries.
356
Diedrie Developer
2.5 Diedrie conducts a team build and delivers for the integration build
Build Validate
Deliver
Inspect failure
Run
Announce
Monitor
Resolve
Monitor
The act starts with Rebecca inspecting and resolving a build failure. Then she starts the build and monitors the result. While the build is running, the following important tasks are automated: The script gathers the sources and prepares the build environment. Static analysis is run against the source code base. The solution is compiled. Verification tests are run. The solution is packaged into a distribution archive. The solution is published. This task involves staging the distribution archive, archiving and baselining the build project, and creating records in Rational ClearQuest to publish the build result and baseline information. This act ends with Rebecca notifying the team of the build result.
357
3. Rebecca adds a new build server by defining it in the Build Forge Server Module: a. She clicks Servers Add Server to open the Server module (Figure 9-10 on page 352). b. In the Name field, she types Build Server 2. c. In the Host field, she types the host information. d. She verifies that C:\buildarea is in the Path field. e. From the Authentication box, she chooses the proper authentication definition. f. She can still choose Build Server 1 Collector as a Collector from the box. Alternatively, she can define a new collector. If she decides to have a separate new collector, she must add a new rule that recognizes the new server to the Selector.
358
g. She clicks Selector Add Selector Variable. Then she chooses BF_NAME as the name and == as the operator. She also types Build Server 2 as the value. h. From the Access box, she selects Build Engineer. Now Rebecca is ready to run the build project again, which is explained in the following section.
359
3. On the next page (Figure 9-17), she ensures that the environment variable values are correct. She clicks the Execute button at the top of the page to run the build. The build starts when the state of the execution transitions from Waiting to Running.
360
As each step executes, the result column indicates the Pass/Fail status of the step as shown in Figure 9-18. 4. During the monitoring of execution, Rebecca can click any step name to drill down into any of the steps to display more detail about what Rational Build Forge is doing. If she thinks something is wrong, she can cancel the step running by clicking the Cancel icon.
361
5. Because the build succeeds this time, Rebecca examines the bill of materials (Figure 9-19). She expands Source Changes to display the version or versions of Rational ClearCase source controlled elements that were included in the build. The bill of materials includes the differences between the version that is used in the build and its previous version.
Rational Build Forge generates a bill of materials after each project run. The bill of materials contains information about the steps in the run and the changes to files that resulted from it. The bill of materials can be provided to consumers of the project run, such as the quality assurance department, for help in understanding the contents of a new build. It can also serve as an audit solution for your build and release process.
362
With the bill of materials, you can easily include other relevant information as in the following examples: A complete list of all files in the baseline used for this build The differences between this build and the last build (date/date, time/time, and label/label) Modified views that the process execution is based upon A list of all defects that were included in the process run These extensive tracking mechanisms make the Rational Build Forge system a valuable tool for documenting processes, providing an audit trail to assist with regulatory compliance requirements. With the bill of materials, you achieve the following benefits: Reduced time spent reading log data, with a lesser chance of errors being undetected, which increases quality Quick diagnosis of build output and location of items of interest Great reduction in time spent analyzing builds and troubleshooting errors Faster build turnarounds, greater productivity, and faster time to market Better support to monitor systems and aid in compliance With the bill of materials, you get complete documentation of a builds contents. It can include the build results, notes, environments, lists of build files, and code changes. This information can be used to compare and summarize the state of builds across the enterprise. The system generates a bill of materials for each build automatically. In Rebeccas build, regardless of the result, success or failure, she has a related e-mail notification that informs her of the build result in accordance with our scenario. If any failure is indicated, she can either see the details in the bill of materials or click Step Logs (Figure 9-20).
363
cleartool mount ${SOURCE_VOB} 2. Define the baseline format. As we discussed earlier, naming conventions are important for a continuous build integration. The BASELINE name is defined as the component name and Rational Build Forge tag, which increases by 1 for each run. Naming conventions are crucial for reuse and continuous build integration at all levels of software development (such as versioning, component, streams, and so on) in addition to baselines as shown in Example 9-3.
Example 9-3 Defining the baseline format
.bset env "BASELINE=${COMPONENT}_$BF_TAG" 3. Create a build view. It is a best practice to create and use a view before you produce a build or release as shown in Example 9-4.
Example 9-4 Creating a build view
cleartool mkview -snapshot -tag "${PROJECT_NAME}_$BF_TAG" -tcomment "${PROJECT_NAME} Build" -stream ${STREAM_NAME}@$PROJECT_VOB -vws $VIEW_STG\${PROJECT_NAME}_$BF_TAG.vws $BF_SERVER_ROOT\${PROJECT_NAME}_$BF_TAG 4. Update the build view. In Example 9-5, Rational Build Forge loads the files from the VOB server locally to the view target directory that was created in a previous step.
Example 9-5 Updating the build view
cleartool update -add_loadrules com.ibm.ao\accountopening\creditapplication cleartool update -add_loadrules com.ibm.ao\accountopening\ratlbankreleases 5. Create the Rational ClearCase baseline. We create the baseline as shown in Example 9-6 on page 365 by means of ClearCase adapter. See 9.6.2, How Rational Build Forge is configured for this scenario on page 380. A ClearCase adapter fails if no changes have been made. It is similar to a linked adapter for continuous integration. Basically, if a new baseline cannot be created (because no additional changes have been made since the last source baseline), then the step fails and the project stops.
364
.source "CC Interface" ByBaseline 6. Perform Rational Software Analyzer checks. For reliability and assurance of quality, static analysis must be applied to all software artifacts. In Example 9-7, Rebecca uses Rational Software Analyzer to implement the code-level static analysis, as discussed in Code review and analysis on page 330. Figure 9-21 shows the results of using Rational Software Analyzer. Note: Rational Software Analyzer results include a URL link to the report server of Rational Software Analyzer (Figure 9-21).
Example 9-7 Rational Software Analyzer checks
eclipse.exe -data C:\src\RatlBankWeb -application com.ibm.rsaz.analysis.commandline.AnalyzeApplication -rulefile c:\src\rules.dat -exportdirectory c:\results -verbose
365
7. Perform code-level static analysis. As shown in Example 9-8, Rebecca verifies the quality with ant static analysis.
Example 9-8 Code-level static analysis
ant checkstyle 8. Ensure a Clean Environment section. It is best practice to have a Clean Environment section in build or release projects to avoid interference with other runs and builds as shown in Example 9-9. A build or release should be performed in a clean and controlled environment. The clean environment ensures that a base can be reused for all builds and releases. You might prefer to have a Clean Environment section just before getting the source files, but it is really a matter of approach.
Example 9-9 Clean Environment
ant clean 9. Compile the application. Example 9-10 shows how we compile the code.
Example 9-10 Compiling the application
ant compile 10.Execute unit tests. To ensure the quality of the build, automate the test steps or a section in the build or release projects as a best practice. In Example 9-11, the code is tested against JUnit scripts after the compile.
Example 9-11 Executing unit tests
ant junit-all 11.Create a distribution archive. When the build artifacts are produced, they must be placed in a target directory for distribution and future reuse. In Example 9-12, we create a binary distribution of the build to the target directory.
Example 9-12 Creating a distribution archive
ant dist 12.Check in the distribution archive. The distribution is packaged and checked in Rational ClearCase in Example 9-13 from the distribution directory.
Example 9-13 Check-in of the distribution archive
cleartool setact $STAGING_ACTIVITY clearfsimport RatlBankWeb.war ..\..\..\..\${PROJECT_NAME}_$BF_TAG\RatlBankReleases\web\dist\ cleartool co -nc ..\..\..\..\${PROJECT_NAME}_$BF_TAG\RatlBankReleases\web\build.xml copy ..\build.xml ..\..\..\..\${PROJECT_NAME}_$BF_TAG\RatlBankReleases\web\.
366
cleartool ci -nc -identical ..\..\..\..\${PROJECT_NAME}_$BF_TAG\RatlBankReleases\web\build.xml cleartool co -nc ..\..\..\..\${PROJECT_NAME}_$BF_TAG\RatlBankReleases\web\default.properties copy ..\default.properties ..\..\..\..\${PROJECT_NAME}_$BF_TAG\RatlBankReleases\web\. cleartool ci -nc -identical ..\..\..\..\${PROJECT_NAME}_$BF_TAG\RatlBankReleases\web\default.properties cleartool setact -none 13.Export the Rational Build Forge project. Even though the Rational Build Forge project is in Rational ClearCase source control, as a best practice, the project that we run should be exported to the target project directory, in case it is needed for audit or other reasons as shown in Example 9-14. Otherwise Rebecca must trace the version of the build or release project for each run by time stamp.
Example 9-14 Exporting the Build Forge project
.export ${PROJECT_NAME}_$BF_TAG/$PROJECT_DIR/dist/project.xml 14.Promote the Rational ClearCase baseline. Add a label to the delivery baseline in order to reflect a higher degree of stability. In Example 9-15, the promotion level is set with the baseline name and the project VOB name.
Example 9-15 Promoting the Rational ClearCase baseline
cleartool chbl -level BUILT ${BASELINE}@$PROJECT_VOB 15.Create the deployment baseline. The baseline is created in Rational ClearCase as shown in Example 9-16.
Example 9-16 Creating the deployment baseline
cleartool mkbl -nc -identical ${BF_TAG}_deploy 16.Create an ALMBaseline record in Rational ClearQuest. Example 9-17 integrates the build project with a new record in ClearQuest ALM called the ALMBaseline record. The step runs a Perl script that is provided by the ClearQuest ALM package. The script creates the baseline record and determines which activities were delivered between baselines. The list of activities is added to the ALMBaseline record. The URL link of the build job is also placed in the build record, in case any team member needs to see the job details.
Example 9-17 Creating the ALMBaseline record in Rational ClearQuest
ratlperl create_baseline_record.pl -user ${CQAL_USER} -pw "${CQALM_PASS}" -dbname ${CQALM_DBNAME} -dbset ${CQALM_DBSET} -pvob ${CQALM_PVOB} -ucmstream ${CQALM_STREAM} -baseline "${BF_TAG}_deploy" -projectid ${CQALM_PROJECT_ID} -logfile "${CQALM_LOGFILE}_${BF_TAG}.txt" -url "http://9.34.119.61:82/fullcontrol/index.php?mod=jobs&action=edit&bf_id=${BF_ID }"
367
You can see the details of the baseline record created in Figure 9-22 and Figure 9-23 on page 369.
368
17.Create the Rational ClearQuest BTBuild record. The build project also creates a BTBuild record in the ClearQuest ALM package. The step runs a Perl script that is provided by the ClearQuest ALM package. The script populates the required information on the ALM tab and creates a reference to the ALMBaseline record that was created in the previous step. Example 9-18 shows how this is performed and some of the environment variables that are defined for this project by using the Environments module.
Example 9-18 Creating a Rational ClearQuest BTBuild record
ratlperl create_build_record.pl -user ${CQALM_USER} -pw "${CQALM_PASS}" -dbname ${CQALM_DBNAME} -dbset ${CQALM_DBSET} -pvob ${PVOB_LABEL} -baseline "${BF_TAG}_deploy" -build "Integration_${BF_TAG}" -buildstatus "Passed" -buildtype "Integration" -projectid ${CQALM_PROJECT_ID} -logfile "${CQALM_LOGFILE}_${BF_TAG}.txt" -url "http://9.34.119.61:82/fullcontrol/index.php?mod=jobs&action=edit&bf_id=${BF_ID }
369
In Figure 9-24, you can see Build Web URL property that is set by this step. Team members can reach the build job execution details by clicking the URL from ClearQuest ALM.
Figure 9-24 Build Details tab showing the BTBuild record created in ClearQuest ALM
370
The ClearQuest ALM package also extends the BTBuild record by adding an ALM tab to the record. Figure 9-25 shows the details of the ALM properties of the build record that was created.
Figure 9-25 ALM properties showing the BTBuild record created in ClearQuest ALM
At the end of each project run or each step, Rational Build Forge notifies the group selected in the build project in the project level or in step level according to the need. In the AccountOpening build project, Rebecca is notified on failure only. On success, Al, Tammy, Patricia, Rebecca, and Marco are all notified according to our scenario. Create user groups in Rational Build Forge to enable the best distribution of notifications and to ensure that the right notification is assigned to the right step or project.
371
ANT_HOME=C:\Views\javatools_int\JavaTools\ant JAVA_HOME=C:\j2sdk1.4.2_10 PATH=$JAVA_HOME\bin;$ANT_HOME\bin VIEW_STG=//qvmw061/ccstg_c/views PROJECT_NAME=AccountOpening PROJECT_DIR=com.ibm.ao\accountopening\creditapplication\RatlBankWebPROJECT_VOB=\co m.ibm.ao_pvob SOURCE_VOB=\com.ibm.ao CCSERVER=Build Server 1 VIEW=administrator_ao_rel2_int COMPONENT=accountopening BASELINE_TYPE=Incremental VOB_PATH=com.ibm.ao\accountopening\creditapplication\RatlBankWeb STREAM_NAME=ao_rel2_integration CQALM_PROJECT_ID=almio00000005 PVOB_LABEL=com.ibm.ao_pvob CQALM_LOGFILE=C:\Temp\CreateBaseline CQALM_STREAM=ao_rel2_integration CQALM_PVOB=\com.ibm.ao_pvob .......
372
373
Figure 9-27 Relationships between the BTBuild, ALMBaseline, and ALMProject records in Rational ClearQuest
374
UCM Stream
UCM Baseline(s)
Built from
ALM Task
[Develop Architecture]
Build Project
Runs
ALM Task
[Test] External Connection Included Included
UCM View
Built from Produces
Job
ALM Task
[Implement]
Work Item
[Task]
Build
BOM
ALM Activity
[Implement] Included
JUnit files
Includes
ALM Baseline
A Created in Current Act
A A
Referenced Supporting
BT Build
Figure 9-28 Life-cycle assets involved in this enterprise integration build scenario
The assets that are created in this act are indicated in white. The assets that are leveraged by this act are indicated in blue. This scenario includes the following life-cycle assets: Job (when the project is executed and its result) Bill of materials and Code Analysis report UCM baseline Build and the UCM stream ALMBaseline record in ClearQuest ALM ALMBuild record in ClearQuest ALM Build project, which refers to the AccountOpening project, which defines all information that pertains to this automation. Environment, which establishes the environment variables used for this project. Worker machines, which are a set of machines that are used by the automation, which are defined by servers, collectors, and selectors. Schedule, which determines when to run the job. Code rule set used by Rational Software Analyzer
375
When you click the Report tab in the upper right of the main pane to display reports about your system (Figure 9-30), you can choose from the following reports: Home Performance Analyze Queries Quick Report
376
Home
The reporting Home module shows the same report as the Performance module. It shows the last job time for each project and data on the total number of jobs and how many jobs passed, failed, or passed with warnings. Click a project name in the list to display the project performance detail page, which graphs run times for all the jobs of the project.
Performance
The Performance module shows the last job time for each project and data on the total number of jobs and how many jobs passed, failed, or passed with warnings. Click a project name in the list to display the project performance detail page, which graphs run times for all the jobs of the project. Performance reports give you an overall idea for all runs. If you need more detailed information for your build project, you can run Analyze Reports or Queries Reports instead.
Analyze
The Analyze module displays information about the run times and numbers of passing or failing jobs for each project. Click an individual project name to display additional information. When you do, the system displays a comparison of the time that is required to perform each step in different runs and on different servers. The system displays the probability of encountering the longest and shortest run times for each step.
Queries
You can run the following reports from the Queries module: Identify the project selectors and step servers for each project. Click the Run button to display a list of projects and their steps. For each project, the system lists the selector. For each step, the server lists all the servers that the step has ever used in a job. Identify the current manifest for each server. Choose whether to include BF_ properties in the report. With this report, you can also compare the manifests for your servers. Build results historic data. With this report, you can select a range of dates. Then the report displays the jobs in that range, showing the number of passing and failing jobs for each project that had a job in the range. A selected date starts at midnight (00:00) on that date. Therefore, to specify a days data, select that day for the beginning and the next day for the end. See Server and Selector utilization historic data. Use this option to view server usage over time. Locate a file based on its MD5 value. You can search through all completed jobs for a file if you have the MD5 value for the file. You can get an MD5 value from the bill of materials for a job, by running a .scan command.
Quick Report
Quick Report is a licensed option in the Rational Build Forge system. It appears and functions only if you have installed the license key for Quick Report. The installation includes a Tomcat server running on port 8080. Therefore, the Management Console should not be set to run on 8080.
377
You also have other options to manage the selected report: Use Edit to edit the report in the same way as you create a new report. Remember to save the report after you edit it. Use Delete to delete the report.
378
You can add more filters to the list or delete them. You can limit output by selecting Limit output to and providing a value for rows. This option can be helpful when running tests on designs for large reports. Click Next. 8. Run the report. It is displayed in the panel. The following options are available: Save this Report Design Type a name and click Save. The report is displayed in the list of reports. HTML Download the report output in HTML format. You are prompted for a location. Cancel Exit this report and go back to the wizard.
Recently acquired
Rational ClearQuest Rational Team Concert
Sketches, and so on
Requirements
Reusable assets
Rational Build Forge Rational ClearCase/UCM
Components Streams
Third-party provider
Rational Quality Manager
Test resources US IN
Repository
379
Server Participation
Rational ClearCase Server
Integration Servers
Rational ClearQuest Server Rational Software Analayzer Server Getting activities, creating ClearQuest ALM record, creating a build record Software Static Analysis
Mounting sources, creating views baselining, setting promotion level, creating distribution and check in, creating a deployment baseline
Performing the build, release, deployment; compiling, optimizing, and executing unit tests; creating all the artifacts and related results or outputs; and so on
Build Server 1
Build Servers
Build Server 2
380
You can directly use the cleartool command in the project steps to have connectivity with Rational ClearCase or you can use the Rational Build Forge ClearCase adapter. For ClearQuest and ClearQuest ALM, you can use Perl scripts or Java directly in your commands or the Rational Build Forge ClearQuest Adapter. For Rational Software Analyzer, you can use the adapter that comes with Rational Software Analyzer with installation, or you can directly use Rational Software Analyzer API in Rational Build Forge. If you prefer to use the adapter for Rational Software Analyzer, it already has a bill of materials section in it. Therefore, reporting is much easier than using the API. If you use the API, you must use additional .bom commands to create the bill of materials section in the job steps or you must look at the target export directory. Adapters in Rational Build Forge are crucial for connectivity. In this book, we used Rational ClearCase, Rational ClearQuest, and Rational Software Analyzer adapters as examples.
Adapters An adapter is an interface to an external application. Adapters allow a Rational Build Forge
project to exchange information with an external application to accomplish a goal. For example, this might involve checking to see if there are source code changes in a source code management (SCM) system. If there are changes, the adapter annotates the bill of materials with source code change information. If there are no changes, the step aborts the remainder of the execution. This feature is especially helpful for those running continuous integration, because it avoids unnecessary re-builds of the project. An adapter is a mechanism that encapsulates actions that integrate with an external system and reports information to the bill of materials. Adapters are the crucial bit of functionality that allows Rational Build Forge to represent multiple branches from a single bit of input. Without adapters, you only use the regular steps in Rational Build Forge, which function much in the same way as a makefile. The steps execute something on a client machine, and output is returned, a binary action. That is the basic kind of integration that is easy to set up in Rational Build Forge. More than integration, it allows a rudimentary branching logic and looping ability. An adapter is an instance of an adapter template (Figure 9-33 on page 382), but you can also create your own adapter from scratch without using any adapter template as long as you obey the tags that are described in the Rational Build Forge Help file. When you create an adapter, you assign it a unique name and associate it with a template. The template is an XML file. The XML file contains application commands to gather information, instructions for analyzing information, and format details for displaying results in the Bill of Materials report. The templates that are provided by Rational Build Forge are designed to be used without modification. However, you can modify templates or use templates as a model for creating a new adapter template. The adapter templates are installed in the <bf-install>\interface directory.
381
Add a new adapter Adapter instance list Adapter name Adapter instance type Adapter instance template
The adapter requires environment variables to execute application commands. In the adapter templates, environment variables are listed in the <env> elements in the <template> section of the XML file. For example, for the ClearCaseBaseline adapter, the following environment variables are listed in the ClearCaseBaseline.xml file: <template> <!-- Template section. These variables are parsed out of the final XML.Use the following syntax to help identify the variables that are needed to run this interface if you are integrating it during a regular Build Forge step:- <env name="VIEW" value="my_adapter_view" /> <env name="VOB_PATH" value="\adapterVob" /> <env name="CCSERVER" value="BFServerName" /> </template> Environment variables: In Rational Build Forge, environment variables are stored in environments. Before creating an adapter, create an environment for application environment variables.
382
Most adapter templates send e-mail notification to users. For example, when the ClearCaseByDate adapter executes, it sends a pass e-mail notification to users who changed source code files. If no files were changed, it sends a fail e-mail notification. The Rational Build Forge product provides adapter templates for the all kinds of applications as listed in Appendix C, Rational Build Forge adapter templates on page 623. The templates for Rational ClearCase and Rational ClearQuest do not require a separate license key, but other application templates are licensed through the Rational Build Forge Adapter Toolkit. Adapters are an important part to the functionality of Rational Build Forge. Implementing your own adapters to fit your workflow needs is the key to increasing connectivity with other tools.
Projects The Pass/Fail Chain property selects the project that is executed when the project build
processor fails. By setting a pass/fail chain at the project level, you can invoke separate actions based on the pass/fail status of the project. This capability is similar to setting pass/fail actions at the step level within a project. At the project level, the pass/fail actions are triggered by the project run status that is not the step status. You can link projects together by using a feature called chaining. You can use this feature to maintain frequently used groups of steps separately from projects that depend on them. Other uses include executing automated test and deployment projects upon completion of certain steps. Chaining can also be used to clean up files that are no longer needed by development teams, by assigning a project to be run at the completion of a job of a specific class.
Tag Sync is used to synchronize the tag variables for two projects. Select the project whose tag variable you want to synchronize with the current project. When two projects are
383
synchronized, their variables are drawn from the same pool, so that when they run in sequence, one project gets the value 1, the next gets the value 2, and so on.
Libraries
You can use libraries to modularize common steps into a reusable unit. This reusability makes libraries an important component for streamlining the creation of new projects. Rather than creating the same set of steps over again, you define a library that projects can call. Use care when making changes in libraries, because if the library changes, all projects that use it also change. The Libraries module (Figure 9-34) shows library projects. When a project does not have a selector specified, it is displayed in the Libraries module. These projects absorb the selector of any project that calls them. They are typically called by other projects through inline chains or pass/fail chains. Libraries are run from Project Step Chains or Inlines. A library inherits the environment from the parent project. From the Libraries module, you can view, edit, create, or launch library projects. You can execute a library project by itself, but you must specify a selector when you do so. You can change a library project into a normal project by editing the project and choosing a selector for it. When you save a library project with a selector, it becomes an ordinary project, disappearing from the Libraries list. Aside from the lack of a selector, libraries are treated just like any other project.
384
Selectors
A selector contains a list of property/value pairs called variables. For each variable, you can specify a value and a comparison. For example, you can specify a property CompilerVersion = 1.1 to select only servers that have that property, but you can also specify CompilerVersion >= 1.1 to select servers with versions 1.1, 1.3, 2, and 2.0. Selectors support numeric and string comparison operations: A variable can be required or optional. When multiple servers match the required variables, the system chooses the one that matches the most optional variables. You can repeat optional variables in a selector, to increase the score of a server that matches them. For example, you might require MEM_TOTAL> = 1 GB but repeat MEM_TOTAL >= 2 GB three times to bias the system to choose servers with memory of at least 2 GB. See the following list of actions for details about how the system makes its choice. You can use the .include statement to add environment variables from another selector. The .include statement references an environment. If duplicate variables are in environments, the system counts each instance of the variables when it assigns scores to servers. The system chooses a server by using the following sequence of actions: 1. It compiles a list of the servers that contain all the required variables in the selector. 2. It rates each server, granting the server a point for each optional variable that it matches. If the selector contains more than one copy of the same variable, the extra copies grant extra points to servers that match them. The system assigns one extra point to the server with the lowest BF_LOADRATIO value. 3. It chooses the server that received the most points.
System-level failures
System-level failures originate in the operating system, network, database, or tool level. For example, if you do not have a Build Forge Agent running on the target server that the build steps use, the build project fails at the concerned step. If your network connection is not available for that instance for a particular target server for any reason, the result is the same. Also the tools that you command from Rational Build Forge should be up and running during the execution of build. Before the build engineer asks the team to do any task to fix a failure, the engineer must be certain that the issue is not related to system-level failure.
385
Project-level failures
Project-level failures are the most valuable and most appreciated ones, because they are the only ones that indicate if something is wrong with the build or release. For example, if the test scripts in our build project have errors, the project is failed by Rational Build Forge. When any filter pattern results in a failure, the project is also flagged as failed. Conditional failures are also project-level failures. If the conditions that we set for the build project are not fulfilled as discussed in Selectors on page 353, Rational Build Forge generates a timeout failure after a certain period of time that is defined by build engineer in the project. For instance, in our selection of the AccountOpening build project, we require a maximum of two actively running build projects at a time on the defined Build Server 1. Therefore, if we have more than two executions of a build when we run the third project, then Rational Build Forge waits for the defined timeout period and lets the build project fail.
386
Part E
Part
387
388
10
Chapter 10.
389
Organizational, environmental, and cultural impacts in the software development life cycle
Business Analysts
Developers
Testers
Business Management Testers work with business analysts and security officers to establish requirements and validate user demands to achieve business and production objectives
The market focus has moved from testing to quality management and is now trending toward business-driven quality management. The move to quality management involves understanding and delivering what the business needs. Quality management is a shared 390
Collaborative Application Lifecycle Management with IBM Rational Products
discipline across the organization, where the development team (developers and testers alike) seek to understand the business and deliver what the business needs. Traditional testing made sure that the software did what the developers said it would do. Quality and business management moves the focus to ensure that the team delivers software that the business has defined. Rather than placing the development and testing organizations at odds, quality management creates a common goal between the teams. The goal is to have a common understanding of the user requirements and use these requirements to validate the developed application. The move to quality management has the business analysts, test and development teams closely working together. Achieving customer satisfaction is the focus of all organizations.
Analyst Deployer
Security and compliance validation
Enabling infrastructure
Modeler
Visual model
Tester
Even the build system contributes to quality management through the automation of manual tasks and the running of build verification tests. Quality management can also involve monitoring the team build in a continuous build scenario to ensure. at delivery time. that developer changes have not broken the team build. To have a successful build is not enough in a quality management initiative. Automated build systems include build verification testing to provide insight into the quality of the build. Obvious errors can be fixed early by the
391
development team, leaving the test team to focus on running system-wide tests that might uncover the not-so-obvious defects with the system. The test team is where we traditionally look for quality management, and with the shift toward quality management, their role is expanded. Test plans that were once overlooked or ignored now form a type of contract back to the business by stating what the business expects. Test teams have a battery of testing techniques to increase the quality of the application, from traditional manual testing, to automated functional and performance testing. Security and compliance tools are used to scan a running application by using a predefined set of criteria to catch vulnerabilities. Service-oriented architecture (SOA) quality management is an important aspect of service lifecycle management. It is one that reflects the need to address multiple aspects of service quality across multiple SOA service implementations. To address the needs of the quality management market, IBM Rational has produced and delivered on a quality management blueprint (Figure 10-3).
Quality Management
Test Management
Control the planning and ongoing status of the test project Responsible for effective execution of test and resources
Defects
Project status Talks the business language Knows the application domain Thousands of users Web-based UI Leverage data
QA Team
Improve team efficiency Develops automated tests Hundreds of users Deep tool/ programming language knowledge Talks the technology language
Test Planning
Specify test type Project requirements Platforms Team roles Test cases Quality exit criteria Schedules
Test Construction
Build test scripts Create manual tests Specify the test environment
Test Execution
Execute UI test Execute Report real-time progress Create log files
Test Analysis
Examine test results Recommend actions Code scanning Error analysis Run-time analysis
Test management
Quality management starts with test management. Test management coordinates the disciplines of test planning, test construction, test lab setup, test execution, and test analysis. A test management system provides a repository for managing and organizing the test effort. By placing all assets in the test management system, the testing team has a clearer indicator of their progress and a common repository for managing and sharing test cases and scripts. Requirements are linked to test plans and test cases, test cases are managed in the context of a test plan, and test scripts are placed under version control. Test execution is tracked for the project, and defects are reported. In addition, tests can be created and reused across multiple projects, and reports become much easier to create and manage.
392
Test planning
Before the shift in quality, the emphasis was on delivering test cases. Now, the focus has shifted to targeting which test cases to run to meet business expectations. In quality management, the test effort revolves around the test plan. Instead of writing a test plan in a document or spreadsheet, the test plan is managed by the quality management system. Test management organizes the test plans, cases, scripts, and execution results, thus giving the entire team clarity into the plan and progress of the testing effort. During test planning the team is established and roles are defined. The project requirements and exit criteria are identified. Test types, such as functional or performance tests, are planned and scheduled, and the platforms are determined. Test plans also align test cases with the business requirements. In addition, the test plan provides the team with something to measure against, because it provides insight into what needs to be done and how the team is progressing against the plan. The test plan states what the business expects, communicates how the team plans to meet them, and helps teams to determine when they are done. In the new paradigm, the team is done when the exit criteria for the test plan has been met. The test plan can range from a simple statement or grow into a comprehensive testing strategy. Every project is different, and thus, the test plans from project to project differ to adapt to the needs of the team. There are fundamental components to a test plan that are worth considering for every software development project. The components, as illustrated in Figure 10-4, are test cases, builds, reports, strategy, quality process, requirements, test schedule, and test Environment. Each project can use as few or as many as makes sense for the situation.
Requirements
Test plan
Builds
Reports
Figure 10-4 The test plan at the heart and soul of quality management Chapter 10. The solution test team manages quality
393
The test plan contains the following components: Requirements Requirements are added to the test plan to help the test team focus their efforts and understand exactly what is expected of the solution. By bringing the requirements into the test plan, the test team moves closer to working with the business to ensure that the application meets the business needs. Testers can review each requirement and build the test cases for each of the requirements. This gives the team insight into their requirements coverage by having direct links between requirements and test cases. Test schedules The test schedule gives clarity into what is expected when. Clearly you cannot test everything all at once. Therefore, the test schedule plans the testing over time. Test environment The test environment defines what systems and software are needed to test the software application. By defining the environments early, the test team can determine if new hardware or software is needed. Having an inventory of the lab assets and how they are configured is crucial to the success of the test team. The ability to automatically discover the current configuration of a lab resource streamlines the teams ability to locate a server and deploy a build. As part of the test plan, servers can be reserved by the team. When reserved, the team can configure machines with the appropriate software stack while waiting for a build from the development team. Additionally, consideration is given to the environments that will be used for integration, system, performance and user acceptance testing. Test cases Test cases are written to verify that the requirements have been implemented as expected. By linking test cases back to requirements, the test team has much greater visibility into the testing progress. For example, the number of test cases per requirement and across all requirements provides an indicator to the size of the effort. As test scripts are written, the team has an indicator of progress against the plan. Finally, as tests are executed, the team has insight into the testing progress and the quality of the solution. Builds Test execution cannot happen without a build. Knowing when the builds are available and what has changed in the build helps the test team to decide when to deploy a new build into the lab. Teams that run build verification tests also have insight into the quality of the build before spending precious time deploying it into the lab. Additionally, linking test results and defects with a specific build helps teams to reduce the time for problem resolution. When a defect is tied to a specific build, the developer can more easily recreate the defect as reported by the tester. Reports Reports are generated against the plan. Without a plan, the reports that a team can produce are limited. However, with a plan, the reports become much clearer. The team can now generate reports that tell them the following information and more: How many requirements have test cases How many requirements have been tested How many test cases have been implemented How many test cases have been run
Additionally, trend reports can be generated to gain insight into the reality of reaching the plan. For example, are the number of requirements being added to the project trending up or down? Understanding the direction that the defect rate is trending provides insight into the overall quality.
394
Strategy Strategy gives insight into the scope and approach to the testing effort. The team decides items such as how much of a test plan will they develop, the level of testing that will be executed (JUnit, build verification testing, system verification testing), how many test environments to use, the process for advancing a build through the environments of integration, system, user acceptance test, and so forth. The strategy defines how the team will ensure that the solution aligns with the business objectives. The strategy creates the definition of when quality is achieved in terms of the business objectives. Quality process The quality process brings clarity to the process that is used for testing. The teams agree on the process for defect reporting, whether test plan and test cases will be reviewed and approved by senior members of the team, and so forth. Each team and each project might take a different approach to applying test plans. Some examples include creating a test plan for the entire release, for each iteration, for each test type (functional, performance, and so on), for each test environment such as integration, system, and user acceptance test. Agile teams can create test plans that align with the story for the iteration, and the definition of the story affects the test plan. A test plan can even include developer unit testing and build verification testing. It is not expected that all of these components come into play on every project. Rather, consideration of each of these areas helps a team to determine their strategy and approach to each project.
Test construction
During construction, the test cases are defined and developed. The work that is completed in the Construction phase comes from the test plan. During test planning, test cases are identified. During the Construction phase, the test cases are developed. All tests are managed by the quality management system. Manual tests are core to the system rather than written in separate documents and stored on a file system. Automated tests can be created by using any tool, and the resultant scripts are managed by the system. A common challenge for testers is to build a test matrix to determine what tests to run against a series of test environments. During test planning, the test environments are identified. During construction, these environments are used to define test executions. The quality management system should help to simplify this task by using the environments that are defined in the test plan to guide the tester in choosing the test configurations, where each choice is stored in the system as work item for execution. These execution work items indicate which tests need to be run and serve as an indicator of progress. As tests are used and refined, all changes go back into the system so that all team members benefit from the updated tests. Tests can be shared and reused across multiple projects, thus reducing redundancy and improving a teams performance. Because the test cases are managed by the quality management system, and associated with a test plan, the team can measure progress against the plan. For example, the test lead can ask the following questions: Do I have test cases for all of the requirements or for all of the test types? How many test scripts are written and how many are left to write for this iteration? How many execution items exist for this test case? Do all test cases have test executions?
395
These types of questions give the test lead additional information for measuring the teams progress. By planning the test cases, there is now a means to measure how many are written and how many need to be executed. In doing so, the test team has visibility into the size of the testing effort.
Test execution
After a build is deployed on the test servers, test execution can be begin. But how does the tester know what tests to run? This information is stored in the test plan. The tester can reference the plan and determine which tests are supposed to be run. User interface tests, functional tests, performance tests, and security and compliance scans are run. However each of these test types are executed with a specific test execution engine. The quality management platform coordinates the test execution effort and provides the means to plug-in a wide variety of test execution engines. For example, functional tests are a common source for automated testing. By recording a series of events against a software solution, a tester can save time and ensure that the same test is run against every build or iteration. Functional testing ensures the system functions as expected. In a similar manner, performance tests involve running a series of tests while simulating a specified number of users who are using the system. Performance tests can be designed to simulate a wide range of user activity over a period time. Such testing helps the team to identify performance bottlenecks prior to going to production. In addition, SOAs introduce a new level of complexity for testers because of the nature of composite applications. Composite applications are composed of many services that are often developed and deployed independently by separate development teams on different schedules, which creates unique challenges in ensuring a high level of quality throughout the development cycle. Security and compliance tools are used to scan a running application by using a predefined set of criteria. Security scans test against a known set of tactics that are used by hackers, while compliance scans test compliance to a specified regulation. These scans work in a
396
manner similar to virus scanning applications on a home PC. The definition files are created and maintained by the vendor. Organizations that use the scanning software keep their definition files up to date and run scans against their applications. The scan identifies potential problems thus enabling the team to respond during the testing phase. By using this type of automation, an enterprise can consistently identify potential threats and close them prior to going to production. With test execution built into the quality management system, groups of tests can be selected and run against a system without human intervention. The testers monitor the result of the automated tests as they are run, but are free to develop additional test scripts while the automated tests run. For example, in some organizations, performance tests have grown in sophistication where they run for several days with thousands of virtual users fully stress the application. With integrations to test execution engines, the results of the test effort are captured in the quality management platform, enabling progress to be reported against the test plan. Teams have insight into which tests have been executed and with what result.
Test analysis
Continuous improvement applies to every discipline and every step in the life cycle. Test analysis implies that teams seek to improve their test strategy, test plans, test cases, and test execution. The quality management must provide a full set of reports to analyze the test teams progress and performance. The test plan and progress are evaluated, and action is recommended to improve quality. Test teams can begin to analyze the quality by asking questions such as: Which test cases am I using the most often? and Which are not being used? The heavily used test cases are candidates for automation. The test cases that are not used might expose a gap in the test effort or might indicate excess that is no longer needed. By analyzing the answers to these questions, test leads can take the appropriate action to improve their test coverage. Many times test teams find problems that should have been found much earlier in the cycle. Test analysis encourages teams to continually seek improvement to avoid similar problems in future releases.
397
In Chapter 8, The release engineer conducts the integration build on page 315, the release engineer, Rebecca, conducted the integration build, which brought together changes from multiple teams including the team that is described in Part C, Act 2: Collaborative development on page 211. The build is automated and includes source code analysis and build verification testing. The build is staged and published for the test team.
The stability and quality of the solution integration builds are tested by the globally distributed quality team.
Figure 10-5 Act 4 illustrating how the team tests the solution
The quality management story continues with the test team. After her test plan was updated, Tammy assigned a test case to Tanuj. While the development team is implementing the change, Tanuj is able to construct the tests. However, he needs a running application to execute his tests. This scenario begins immediately after Tammy updated the plan in Part B, Act 1: Responding to a change request on page 77, and then pauses while the development team implements the change. It resumes again with Tammy when the weekly integration build is announced.
Tammy is the name of the test manager. She has a global quality team distributed over multiple sites. Her team is responsible for conducting solution testing, which includes functional, performance, and security testing at the solution level. The testing does not include JUnit or component level testing, which is the responsibility of each of the development teams. Tammys team conducts solution testing as part of the iteration. They take a new solution build each week, thus providing an early feedback loop to the development team when there are defects at the solution level. She also provides a globally distributed test environment for the project. She is the gatekeeper and owns staging. Tanuj is the name of the tester. He is responsible for creating the test cases and test scripts. He also executes the tests and analyzes the results. He logs defects when needed. Tanuj and his teammates employ a full battery of tests including manual, functional, performance, and security tests.
398
Diedrie is the developer who implemented the change request that Tanuj is testing. She takes
great pride in her work and is astute in fixing defects. In this part of the scenario, Diedrie and Tanuj collaborate on resolving a defect in Diedries solution.
Quality Management
4.1, 4.5 Tammy monitors quality
Import requirement
Approve quality
Execute tests
Figure 10-6 The flow of steps for the Act 4: Manage quality
399
This act includes the following scenes: Tammy monitors quality. At the end of Act 1, Bob detailed the requirements. In this act, Tammy creates a link to the requirements in her test plan. She associates the test case and the requirement. Tanuj constructs tests. Tanuj updates the test case that Tammy created. He creates a manual test script for the test case. Using the environments defined in the test plan, he determines the test configurations that are needed to fully test the requirement and creates execution work items for each test to execute. Tammy prepares the test lab. Tammy confirms that she has reserved the needed test configurations. She submits a request to have the integration build deployed to the test lab. The team tests the solution. Tanuj executes his manual tests. Tammy runs a security scan. They both evaluate their results. Tammy monitors quality. Tammy evaluates the exit criteria. Tammy confirms testing is complete and the solution has met its quality goals.
400
401
Performance testing
Performance testing is another critical type of testing to take into consideration. There are multiple approaches to performance testing. In some organizations, the development team (developers and testers) perform the performance tests. In other organizations, performance testing occurs as a critical test prior to production deployment. Performance tests are established to determine how well the system performs under various circumstances such as having a large number of users perform the same action on the system at the same time or over long periods of time. A series of tests are created that mimic user behavior, involving common user paths in a lab that either mimics or is scaled-down version of the production environment. The purpose is to ensure that the solution tested against the same hardware and software configuration as the final production environment. The testing includes a set of virtual users that are configured to run through a series of tests. In many cases, these users are defined to mimic users from multiple geographies by using the system. By running performance tests prior to going to production, the team reduces the chances of down time due to customer load. It also gives the team the opportunity to optimize performance and identify potential bottlenecks before the users do. Rational Quality Manager can be used to manage and execute the scripts from performance testing tools. An adapter is provided to execute Rational Performance Tester scripts. In the reference scenario, Tammy runs an automated security scan. The execution of a performance test occurs in a similar manner. See the Rational Performance Testing page for a complete list of performance testing products, including Rational Performance Tester and its extensions for SAP, Siebel, SIP, Citrix Presentation Server, and SOA Quality: http://www-306.ibm.com/software/rational/offerings/quality/performance.html
402
403
Rational Web site compliance solutions include IBM Rational Policy Tester, which automates Web site privacy, quality, and accessibility reviews to help identify issues impacting compliance and site effectiveness. The Policy Tester family includes the following products: Rational Policy Tester Accessibility Edition, which helps ensure the accessibility of Web sites to all users, including those who access sites by using assistive devices Rational Policy Tester Privacy Edition, which uncovers and reports online privacy oversights that might expose the organization to undue risk Rational Policy Tester Quality Edition, which automates the scanning, analysis, and reporting for online privacy, quality, and accessibility compliance
Static analysis
Scanning source code is an important aspect of an overall quality management program. Developers can run source analysis during development, release engineers can incorporate it into the build, or a final scan might take place prior to release. The Rational Software Analyzer product is designed to analyze code and report any areas where a set of selected rules have been broken. These rules can take almost any form including basic code review, code complexity, or detection of common code patterns and anti-patterns. Rational Software Analyzer provides the following benefits: Software development teams can consistently catch potential software defects in real time earlier in the software development life cycle. Project team leads can more effectively manage governance and compliance IT objectives through a customizable reporting framework. It automates code reviews and incorporates static analysis into the existing software prebuild process across the life cycle, empowering teams to deliver more value. With a common static analysis framework, you can create a customizable and consistent workflow for all forms of static analysis rules within a single session. Rational Software Analyzer ships in two editions: one for the developer and one for the enterprise: Rational Software Analyzer Developer Edition is a standalone Eclipse-based tool that targets developers. As the develop code, developers can quickly run the analyzer tools to detect early problems in their code before it is delivered to the code management system. The Rational Software Analyzer Enterprise Edition runs as a central service and can be integrated with Rational Build Forge or any other build management system to perform regular analysis of the source code in a project. The tool plays a part in the ALM and governance processes within the enterprise. The Enterprise Edition can generate refined analysis reports for both developers and others in the enterprise.
404
Iteration 1
Iteration 2
Iteration 3
Fix Defects
This approach includes the following benefits among others: Developers gain insight into defects soon after developing the source code. The code is still fresh in their minds, and they can more easily get to the root cause. Testers and project managers gain insight into the solution health much sooner in the cycle. The feedback loop for the user perspective begins early in the project and can continue to be finessed as the team progresses through their iterations. The testing team is more engaged in the product development and improvement. Earlier access to the system allows the team to become more familiar with the features and expectations of the solution. With the testers aligning closer to the business, this helps to shorten the feedback loop from the business, thus giving the entire team a better gauge to measure themselves against. Questions or disputes about expected behavior can be resolved early in the cycle, and if need be, stakeholders can be contacted to gain insight into the resolution. Any time that there is a change in approach, there is likely going to be a downside: By system testing after each iteration, the test team must also become more agile. The builds are produced more often and must be deployed to test servers. Test cases and test scripts must be ready in time for the iteration, and it is likely that they will be re-written many times as the team learns more about the system iteration after iteration. The test effort for the iteration must align with the stories and requirements implemented by the development team. The scope for each test effort becomes narrower and more
Chapter 10. The solution test team manages quality
405
targeted. To accomplish this, the teams need to communicate often, and the test team must have insight into the development iteration plans and user stories. The test iteration lasts as long as the development iteration. After all, when the development iteration ends, there is a new build available for testing. And if testing of the previous iteration is not complete, it sits idle, causing a landslide effect for the rest of the project. The last iteration must focus on fixing defects, which few developers enjoy doing, but at least time is finally dedicated to the task.
Iteration 2 Week 2
SVT W1
SVT W2
SVT W3
SVT W1
As seen in Figure 10-8, the same offset between development and system testing occurs. However this time, the cycle is much shorter and integrated into the iteration. After the first weeks integration build is ready, the test team begins testing. Defects are reported and fixed in the same week. The next weeks integration build contain the fixes along with new features. The last week of the iteration is dedicated to defect fixing. This approach requires more discipline and communication between the teams and fundamentally requires that the imaginary wall between development and test is removed. All members of the team are expected to respond to changes as they occur. The test team is tightly aligned with the development team, and both teams are aligned with the business needs. Together they move through each iteration developing, testing and confirming user stories intent on delivering what the business needs. The pros and cons to this approach are similar to those in Testing at the end of an iteration on page 405, but somewhat amplified. The defect cycle is extremely short, the test scope is extremely focused, and all members of the team produce assets that are likely to be revised and improved upon in the next iteration.
406
Deploy
Deploy
Deploy
Deploy
Deploy
Performance and Security Test
Deploy
Analyze
Function Test
Acceptance Test
Production
The life cycle is actually numerous iterations that can happen quickly. Deployment happens over and over again, by different people for different reasons. Testing happens over and over again, changing in focus as you near production.
Development
Figure 10-9 Managing quality at all levels of deployment
Operations
As illustrated in Figure 10-9, testing is completed by developers, by release engineering, and then by more formal test phases of function, performance, and acceptance testing. As an integration build becomes more stable, it is promoted to the next level of testing, until it is accepted and approved for production. Every organization differs in the names and definitions of these test phases. Figure 10-10 on page 408 provides a representative set of test environments and their definition, which are explained as follows: Unit testing is lowest level of granularity and typically occurs in a developers sandbox or during build verification testing. Function testing confirms that components of the solution function as expected. A component must pass the function test before being promoted to an integration test. Integration testing combines components into groups, where the cross-component function is confirmed to work as expected. When the group of components passes the integration test, it is promoted to a system test, performance test, or both.
407
System testing, performance testing, and security scans are sometimes performed in parallel. At this point, the application is reasonably stable and ready for more intensive testing. The tests and server configuration are the most sophisticated, and where possible, the server configuration either mimics or is a scaled-down version of the production configuration: A system test exercises the system the way a user might. A performance test analyzes the systems ability to respond to increased user load and transaction volume over an extended period of time. Performance testing is used to identify possible bottlenecks and to fine-tune the performance. Security and compliance scans are run against the system during this time to seek possible security holes and incomplete regulatory compliance. An acceptance test involves the stakeholders acceptance of the solution. The acceptance criteria is reviewed and confirmed complete.
System Test Exercising the complete system in the way a user would Performance Test Analyzing or testing performance characteristics, stress, load, longevity, volume, and tuning
Acceptance Test Business customer acceptance. Security and access controls can be used.
Sandbox
Increased complexity
408
11
Chapter 11.
409
The stability and quality of the solution integration builds are tested by the globally distributed quality team.
The act has the following scenes: Tammy monitors quality. Tanuj constructs the tests. Tammy prepares the test lab. The team executes the tests. The following Rational products are used in this act: Rational Quality Manager 8.0 Rational Functional Tester 8.0 Rational AppScan Tester Edition for Rational Quality Manager 5.6
410
The Rational Quality Manager product provides the following features: A collaborative Web-based quality management solution A central repository for test planning, construction, deployment, and execution The ability to align the test effort with project requirements Quantifiable metrics for project tracking and decision making Keyword-driven manual test authoring and execution Rational Quality Manager works for simple test management needs and yet is sophisticated enough to scale to larger teams that share test assets across multiple releases of software. Just about every item managed by the system can be assigned to a team member. A test plan can be broken down into sections and assigned to different owners. Test case and test script construction can be assigned and tracked to gauge the level of effort and progress in building the tests. Test execution can be assigned and tracked through the execution results. Test lab requests can be used for configuring test servers. This assignment of work in all aspects of the test effort helps the team to ensure that all of the expected work is completed. It also gives them insight into their progress against the work effort. Earlier we defined the software quality management blueprint as including test management, test planning, test construction, lab management, test execution, and analysis. Rational Quality Manager implements this blueprint.
Dashboard
Rational Quality Manager comes with a customizable dashboard on the home page. Dashboards can be created for each project managed. Upon first use of the dashboard, a welcome viewlet (Figure 11-2 on page 412) instructs users on how to customize it. Additional viewlets are provided that can be changed to fit each users needs.
411
Users can add or remove viewlets as needed by clicking the Add Viewlet link on the home page. As shown in Figure 11-3, a wide variety of viewlets are provided that are ready to use. It is simply a matter of selecting a viewlet and clicking the Add viewlet button.
412
After the viewlets are added to the dashboard, you simply drag them to a location on the page. Tabs can be added to the dashboard to organize viewlets.
Requirements
The testing effort is often linked directly to validating the software requirements. Therefore, Rational Quality Manager provides a means for linking to requirements from an external repository, such as IBM Rational RequisitePro, or for storing requirements directly in the database. The requirements menu (Figure 11-4) is used to import or locate existing requirements. These requirements can be linked to test plans or test cases.
Planning
The Planning menu (Figure 11-5) is used to create and manage test plans. New test plans can be created, and existing plans can be modified from this menu. Additionally test plans can be imported into the system or exported for sharing with external stakeholders.
A test plan is used to organize the test effort. Some teams create a single test plan for the entire project. Others create a test plan for each iteration or for each test environment such as integration test, system test, and performance test. Yet others use test plans for each test type such as functional, performance, and security tests. Figure 11-6 on page 414 shows a set of test plans where each test plan targeted for each release of the Account Opening solution.
413
The test plan is divided into multiple sections as shown in the Table of Contents in Figure 11-7. A team can decide which of these sections to use for each testing effort. Additionally each section can be assigned to a different team member by creating a Work Item for that section. In the upcoming scenario, some, but not all of these sections are used by the Account Opening team.
Figure 11-7 A test plan with sections listed in the Table of Contents
414
By using the test plan in Rational Quality Manager, you can perform the following tasks: Set up a review and approval process so that you can track completed and outstanding reviews. Import project requirements from external requirements management tools and associate these requirements with test cases. You can then run reports to track those requirements that are not yet covered. For teams that do not use external requirements management tools, you can add requirements directly to the test plan and still run the same reports. Save a read-only snapshot of a test plan or test case at any point in time. Later, you can make a copy of the snapshot and use it as the basis for a new test plan or test case. Attach existing documents, such as previous test plans, schedules, and other supporting material, by using the Attachments section. Copy portions of existing documents into test plan sections. Certain sections of the test plan include a rich text editor that you can use much as you might use any word processing document. If you have content in external documents that you want to reuse, copy the content into the appropriate test plan section. Create test cases and associate them with the test plan. Because test cases can also be associated with various kinds of test scripts, you can manage your test cases and test scripts within the test plan. List the various environments supported and tested by the test plan. You can add various platforms such as browsers, databases, operating systems, and other items. This list is then used to generate test configurations. Estimate the overall test planning and test execution effort. Define schedules for each test iteration. Define business objectives, test objectives, quality goals, and entrance and exit criteria. The list of sections can be modified by clicking the Manage Sections button. Additionally Test Plan templates can be created to define the set of sections to use in the test plan. You can start with one of the templates and modify it as needed. If there are sections in the test plan that you do not use, you can remove them. If the section names do not match what you are accustomed to, you can change them to something more familiar. If there are missing sections that you want to add to the test plan, you can create your own test plan sections and add them to the template. This flexibility makes the test plan suitable for both agile and formal test teams and for teams that perform different kinds of testing, such as functional regression testing, performance testing, system verification testing, globalization testing, and so on.
Construction
The Construction menu (Figure 11-8 on page 416) is used to work with test cases, scripts, suites, and data. New tests can be created, and existing tests can be located for modification. Test execution records can also be created from this menu. Additionally existing cases and scripts can be imported and managed by Rational Quality Manager. Each of these items, managed by the database, can be assigned to specific owners, tracked, and reused across multiple software releases.
415
A test case defines the characteristics for an individual test. Clicking the Create Test Case tab opens the test case creation user interface. The Test Case Table of Contents shown in Figure 11-9 provides sections with additional detail that describes the test case. Similar to the test plan, teams can decide which sections to use and can modify the list of available sections by clicking the Manage Sections button. For example, a test case can reference one or more test scripts, or has pre- and post-conditions defined, with expected results. Requirements can be associated with test cases to help the tester ensure requirement coverage as part of the test creation process. Test Case templates can be created to define the set of sections for use by the team.
416
A test script defines the steps that are involved in conducting the test. A test script can be a manual or automated test, or a combination. Manual test scripts are defined directly in Rational Quality Manager by using a rich text editor to detail each step as shown in Figure 11-10.
Test scripts can be written in context of the test case, or they can be created separately and later linked to the test case. This provides flexibility in work flow while also encouraging the reuse of existing test scripts. Test suites can be created to group a set of related test cases. Test suites provide a list of related test cases, and a single test case can be included in more than one test suite. A new test suite is created by using the Create Test Suite menu item in the Construction menu. Figure 11-11 on page 418 shows the user interface for adding existing test cases to a new test suite.
417
Existing test suites are located or modified from the Execution menu. Figure 11-12 shows the result of running the Execution All Test Suites.
418
A single test case can be run on different environments. For example, in a Web user interface, different browsers can be tested. The test case is the same, but the environment is different. Therefore, an execution record is created to run the test case in each environment. In the previous example, an execution record is created for each browser that must be supported. As test cases are being constructed, the execution records can be created and assigned to team members. Test execution records are creating by using a menu item on the Construction menu. The Execution menu is used to locate and run existing test execution records.
Lab Management
Lab machines and virtual images are a critical resource in the testing effort. Rational Quality Manager has an optional add-on that helps a team to manage lab resources. When installed, an additional menu for Lab Management is added to the menu bar. A lab manager uses the menu shown in Figure 11-13 to manage the lab resources.
419
Machines can be added or imported into the lab management system. Characteristics of the machine, such as its hardware, software, and operating system, can be captured and stored in this system as shown in Figure 11-14. In a similar manner, virtual images can be recorded by the system. These recordings provide the team with an inventory of lab machines and virtual images to choose from by using the All Lab Resources, Find Lab Resource, or Advanced Search menu items.
Lab resources can be allocated across test teams by using resource groups. A resource group is associated with a team area, and machines are added to the resource group. This creates a pool of machines that are specific to the members of the team area that is specified in the resource group. Testers can use the lab management menu to reserve resources and submit requests to have a server configured with a specific environment or build. Test environments define the machine characteristics, operating systems, and software needed for specific test functions. For example, a simple environment defines an x86 machine running a Microsoft Windows Vista operating system with Firefox 3.0 installed. More complex environments can also be defined, such as a three-tiered Web application
420
configuration with a Web server, application server, and databases each running on different machines or virtual images. Defining environments simplifies the request process by enabling testers to choose predefined environments or define a new one. When defined, environments can be used to locate available resources that match the description in the test environment.
Test execution
In test construction, test cases are turned into execution records that are owned by members of the test team. Execution records are measured and tracked from the Execution menu (Figure 11-15).
Executed tests have results and a result history. Queries can be run to view execution records or executed results. Figure 11-16 shows the list of records that are returned by choosing the My Test Execution Records menu item from the Execution menu.
421
One or more records can be selected from the list and executed by clicking the green Play button on the toolbar. The script execution user interface is displayed, which is shown in Figure 11-17. For manual tests, each step of the test is performed by the tester and updated with a status. Step through the execution, one statement at a time, and click the Apply verdict icon after you perform it in the application that you are testing. Possible verdicts include Passed, Blocked, Failed, and Inconclusive.
Figure 11-17 Script execution with Verdict choice to apply to each step
422
To view the Execution results, choose My Execution Results or All Execution Results from the Execution menu. The system returns the set of results in a list that can be quickly scanned. By clicking the State link, you see detailed information about the execution result, which includes information such as the verdict, and the environment on which the test was run, as shown in Figure 11-18.
For automated test scripts, adapters can be added to an execution engine. Test scripts from automated software testing tools can be linked to test cases and managed by the system. When it is time for execution, the test script can be launched from Rational Quality Manager and run by the automated test tool, with the results captured and managed by Rational Quality Manager. You can run automated test scripts for the following types of tests: Functional tests by using tools such as Rational Functional Tester or Rational Robot Security tests by using Rational AppScan Tester Edition for Rational Quality Manager Performance tests by using Rational Performance Tester Service tests by using test scripts that are created with Rational Service Tester for SOA Quality Adapters can be written to integrate additional automated test tools.
423
The reports are grouped by function, such as defects, execution, summary, scorecard, and so forth. Further reports can be created by clicking the Create Report menu item.
424
425
5. In Step 1 of the Import Requirements wizard (Figure 11-21): a. For Source, she chooses RequisitePro. b. She types a host name. c. She clicks Next.
6. In Step 2 of the Import Requirements wizard (Figure 11-22): a. For Project, she chooses the ALM - Account Opening Project. b. She types her Rational RequisitePro User ID and Password to log in to the repository. Important: In Rational Quality Manager 8.0 beta, we had to enable security on the Rational RequisitePro project and ensure that the user name had a password assigned. c. She clicks Next.
426
7. In Step 3 of the Import Requirements wizard (Figure 11-23): a. She changes the requirement Type to Feature. b. She selects the check box next to the UI Branding requirement in the list. c. She clicks the Import button.
427
The requirements are added to the Requirements section of the test plan as shown in Figure 11-24 and are now available for others to reference in test plans or test cases. d. Tammy clicks Save to save the test plan.
Tip: The user interface uses the word Import for requirements. However, the requirements are not imported into Rational Quality Manager. Instead, URL links are created in Rational Quality Manager that reference the requirement that is managed in Rational RequisitePro.
428
3. When the test case editor opens, Tammy clicks the Requirements menu item in the Test Case Table of Contents (Figure 11-25). In doing so, she provides information about the requirements that are associated with this test case. Because this is a new test case, no requirements are found. 4. She clicks the Associate Requirements button, which is highlighted in Figure 11-25.
5. In the Associate Requirement panel, from the list of available requirements, she clicks the check box next to the UI Corporate Branding requirement (Figure 11-26). She has the option to select one or more requirements. However, in this case, she only needs this new requirement that Bob provided.
Figure 11-26 Selecting the requirements to associate with the test case
429
6. She clicks OK 7. She Saves the test plan. Tip: When linking to requirements that are managed by Rational RequisitePro, Rational Quality Manager marks the requirements as suspect when they change in Rational RequisitePro. This gives testers a visual indication to review the requirements and ensure that the test cases are still valid.
430
1. In Rational Quality Manager, Tanuj logs in and views his dashboard (Figure 11-27), where he sees the new tasks that are assigned to him by Tammy. His tasks are all related to a test case called UI Corporate Branding.
2. He selects Construction My Test Cases. 3. In the results list, he selects the UI Corporate Branding test case from the list to view it. 4. He clicks Summary in the Table of Contents for the test case to review the summary and familiarize himself with this test case. 5. He clicks the Requirements tab to review the associated requirements for this test case. 6. He clicks the Name link for the associated requirement, and the Rational RequisitePro Web client launches either in another browser tab or browser window depending on how the browser is configured. 7. He selects the Account Opening project in the Project field, and enters his Rational RequisitePro login user name and password. He then clicks Login.
431
8. He reviews the requirement properties (Figure 11-28). Then in the Location field of the requirement properties, he clicks the link Composer:UI Rebrand.
432
9. After Rational Requirements Composer launches and opens the sketch that Bob created in Act 1 (Figure 11-29), he reviews the detail of the requirement and can now define the expected result for his test case. He closes Requirements Composer and returns to Rational Quality Manager. Note: Tanuj uses the rich client that is installed on his desktop. While this book was being written, a Web client for Rational Requirements Composer was under development, but was not available for inclusion in this book.
10.He clicks Expected Results in the Table of Contents, and adds additional information about the expected result for the test case. In this example, he can cite corporate guidelines or provide examples of properly re-branded Web pages as a comparison. He can also refer to the sketch that is provided by Bob. 11.He clicks Test Case Design to provide information about the test case. For this test case, he provides a description that includes the need to ensure that the UI complies with the corporate brand, and that because the elements are visual, this is a manual test. 12.He clicks Save to capture his changes to the test case. At this point, he decides that this single test case will cover Bobs requirement. 13.Tanuj reviews the tasks that are listed in the My Tasks viewlet on his dashboard. He selects the task that is related to completing the test case design and clicks to open it.
433
14.As shown in Figure 11-30, he changes the state to Resolve and clicks Save.
434
3. In the New Test Scripts window (Figure 11-32): a. b. c. d. He types a Name and Description. He leaves Type set to Manual. For Owner, he selects himself. He clicks OK.
435
The window closes, and the test script is created and linked to the test case. He clicks Save to save the test case. The test script is now a clickable link in the test case, as shown in Figure 11-33.
Tanuj can now begin writing the test script: 1. He clicks the link for the UI Corporate Branding test script, and the test script editor opens (Figure 11-34 on page 437). 2. Tanuj chooses to reuse an automated test as Keyword in this script. He drags the AO_Login script from the Keyword view to the first step of his script (Figure 11-34). Tip: A keyword is any statement or group of statements that you can reuse in other test scripts. Many tasks in testing are composed of a sequence of steps, for example, logging in to a page. A simple task can be saved as a keyword. That keyword can be used in other scripts to create the full test script. A team can build a library of keywords to streamline the writing of test scripts while ensuring consistency for frequent tasks. Additionally, manual keywords become candidates for automation, thus helping a team to move from manual testing to a mix of manual and automated tests. As seen in this example, Tanuj constructs a manual test that contains an automated login script. While this is a simple case, it is representative of using a keyword automation as part of a larger manual test. 3. Tanuj clicks the text Click to add in the bottom left corner of the editor, which adds a step in the test and places his cursor in the text edit field. Tanuj types the second step of the test script and presses Enter.
436
4. After another line is added to the test script, Tanuj types the second step in the test. He continues this procedure until hes added all steps of the step as shown in Figure 11-34.
5. He sets two of the steps to be verification points by clicking the Execution step icon, which is to the right of the step number. A menu is displayed as shown in Figure 11-35. Execution Step is the action that you want the tester to perform when running the script, for example, Start the application. Verification Point asks questions about the application that you are testing, for example, Did the User Login window open? Reporting Step is a higher-level verification point. It also asks questions, but the answers require higher visibility and often are included in reports. Reporting steps might summarize the result of several verification points, for example, Were you able to log in?
437
6. He chooses Verification Point for steps 4 and 5. The icon changes to a blue check mark. 7. Tanuj clicks Save on the test script.
438
6. For Coverage, he selects the desired level to All Permutations. He uses this setting and the Advanced Properties setting to fine-tune the execution work items that will be generated. Coverage includes the following options: The Minimal option ensures that each selected attribute is covered at least once, with no attempt to cover specific combinations of attributes. For example, if you select one attribute from three of the columns, three execution work items are created, ensuring that each selected attribute is covered at least once. The Medium - pair-wise interaction option ensures that each combination of paired attributes is covered at least once. The Large - three-way interaction option ensures that each three-way combination of attributes is covered at least once. The All - all permutations option ensures that all combinations of attributes are covered at least once. Tanuj has no need for Advanced Properties in this case. In more complex scenarios, Advanced Properties are used to display a window with following three tabs: On the Exclusions tab, he can specify the attribute combinations to explicitly exclude, for example, the Safari browser running on Windows XP. On the Inclusions tab, he can specify the attribute combinations to always include, for example, Windows Internet Explorer 7.x running on Windows XP. On the Weightings tab, he can to set the weight or importance of each attribute relative to the other values for that attribute.
Chapter 11. Rational Quality Manager for managing quality
439
For example, he can assign greater weight to Windows XP than SUSE Linux to ensure that at the least Windows XP is tested. 7. He clicks Next. The wizard creates a preview of the Generated Test Environments from which the execution work items will be generated. Figure 11-37 shows the environments that are presented to Tanuj. 8. He selects the configurations that he wants to keep and clicks Next.
9. After the wizard creates a preview of the generated execution work items, he selects the execution work items that he wants to keep.
440
10.From the Group By list (Figure 11-38), he groups the generated test execution records by selecting Test Case and then clicks Finish. The wizard generates the test execution records according to the criteria he has selected.
11.He clicks Save on the test case. The execution records are now ready to be run. If necessary, he can also change their ownership and reassign them to new iterations. At this point, Tanuj has completed all of his planning and construction work. He updated the test case that Tammy assigned to him in Act 1, wrote the associated test script, and created the execution work items to test all permutations of the browser test environments. When the build with Bobs change is ready, he is ready to execute his tests.
441
Figure 11-39 A news feed configured to view Build Forge server messages
3. She clicks the URL that opens the Build Forge Administration Messages window. Important: Clicking the link might open the Rational Build Forge user interface in the same browser window, losing the Rational Quality Manager user interface. Click the browsers Back button to return to Rational Quality Manager. 4. Tammy locates the integration build in the messages window and clicks the job link. From here, she can inspect any of the build steps, such as the step named Execute unit tests. 5. She can click the Bill of Materials menu to inspect the Job Steps or Step Manifests. 6. Satisfied, she deploys the build to the test servers. 442
Collaborative Application Lifecycle Management with IBM Rational Products
Tip: See Chapter 9, Rational Build Forge for enterprise integration build on page 341, for information and images regarding the Rational Build Forge job results.
Figure 11-40 Tammy deploying the build by using a predefined deployment automation
Tammy performs the following steps: 1. Tammy selects Lab Management All Automations. The list of available automations is returned. 2. She selects the Deploy AO Integration Build automation. 3. She chooses an available machine from the list of Available Machines for Automations. 4. She provides a value for InstallDir. 5. She provides a value for the Build ID of the build that she just inspected in Rational Build Forge. 6. She clicks Run, which is represented by the green arrow in the upper right corner, and tracks the status as the automation runs.
443
When the automation is complete, Tammy executes a smoke test test suite against the new test environment. Assuming that all tests pass, Tammy notifies the team that the environment is ready for testing. Tip: In this scenario, Tammy deploys the build by using an existing automation. An alternative approach is to send a request to a lab manager.
444
4. He performs an automated keyword test. When the system prompts Tanuj to select the adapter for running this automated test, he selects the check box next to RFT, which is the Functional Tester adapter in this example, that is running on his test server. Then he clicks OK (Figure 11-42).
As the automated test execution occurs, a progress window is displayed similar to the example in Figure 11-43.
When the test execution is complete, the result field for the first step is updated to indicate the verdict. From this point, the rest of the test involves manual testing.
445
5. He steps through the execution one statement at a time. As he completes each step, he selects a Verdict from the list and clicks Apply to assign a verdict to the step. Figure 11-44 shows a Verdict of Failed applied to Step 5 in the manual test. The following verdicts are possible: Passed Blocked Failed Inconclusive
Figure 11-44 Manual script execution showing a failed step and associated defect
6. In step 5 in his test script, he notices that the logo for the EU Account form is placed differently from the US form. To submit a defect, Tanuj clicks the Show Defects icon on the toolbar and chooses Add New Defect shown in Figure 11-45.
Figure 11-45 Adding and associating a defect with a line in a test execution
446
7. In the Defects View form (Figure 11-46): a. For Type, he keeps the setting Defect. b. For Severity, he selects Normal. c. For Filed Against, he chooses Account Opening. d. In the Tags box, he adds Credit_check. e. For Owned by, he selects Diedrie. f. For Priority, he selects Medium. g. For Due Date, he sets it to equal the last day of the iteration. h. For Description, he provides meaningful text. i. He clicks the Links Tab and click Brows to add an attachment. Then he chooses a .jpg file from his file system. Earlier he made a window capture of both forms by placing them side by side to identify the difference. j. When he is satisfied with the information, he clicks Save.
8. He sets the Verdict to Failed for this step. When the verdict on the last step of the test is set, the Test execution is complete. 9. From the Execution Result tab that is displayed, Tanuj reviews the results and does not make any changes. If necessary, he can modify the verdict and the weight distribution from the execution results. After he makes an edit, he must click Save to save any changes.
447
In addition Tanuj can add comments or attachments: To add an optional comment to one or several statements: a. From the toolbar, he clicks the Show Comments icon, and the Comments View is displayed. b. He types the comment in the Write Comments field. c. He clicks the X in the upper right corner of the view to close it. The comments icon displays within each statement that has a comment. To add an optional attachment to one or several statements, for example, he can create a window capture of the application under test and attach it to the statement. To attach a file to a statement: a. From the toolbar, he clicks the Show Attachments icon, and the Attachments View is displayed. b. He browses to the file, and clicks Open. c. He clicks the X in the upper right corner of the view to close it. The attachment icon displays within each statement that has an attachment. Restriction: The defect report that is created in this scenario is stored in Rational Quality Manager. Diedrie needs some form of notification to fix and resolve the defect. One approach is for her to have a license for Rational Quality Manager. She can log in to the Rational Quality Manager user interface to work with defects that are reported by the test team. Another approach is to use the ClearQuest Connector to create a record in Rational ClearQuest, which then synchronizes to Rationa Team Concert. For this to work, the ClearQuest Connector must be configured to work with the Rational ClearQuest defect record. At the time of writing this book, the ClearQuest Connector did not work with ClearQuest Application Lifecycle Management (ALM) record types. The restriction occurs when a record must be created in Rational ClearQuest by the connector. Note that synchronization works when records are created in Rational ClearQuest and pushed to Rational Team Concert or Rational Quality Manager, as documented in this book.
448
c. For Type, she selects Rational AppScan Tester Edition, which populates the test script with information specific to performing security tests, as shown in Figure 11-47. d. For Template, she selects one to use for the creation of the security scan. For this scan, she selects the Altoro Mutual template, which has been preconfigured with the URL and login information of the system under test. e. For Verdict Strategy, she keeps the default setting of Severity Threshold, which is Medium. This setting means that the test execution will pass only if no Medium or High severity issues are found by the security scan. f. She clicks the Create Scan link to create an associated security scan in Rational AppScan Tester Edition. Depending on Tammys browser settings, either a new tab or a browser window opens where she can edit the scan.
449
3. Tammy reviews the scan in Rational AppScan Tester Edition (Figure 11-48): a. For URLs to be scanned, she confirms the URL for the system under test. b. For Test Policy, she confirms the one to use during the scan. The test policy is a predefined set of security tests that the scan executes. c. She determines that she has no need to edit the scan. She closes the window or tab to return to Rational Quality Manager.
4. She clicks Test Scripts to review the test scripts that are associated with the test case. 5. She clicks the AppScan Security Scan test script to view it and confirm that it is correct. To execute the security scan, Tammy does the following steps from within the open test case: 1. She clicks Test Execution Records. 2. She checks the security execution item and clicks Execute. The security scan runs against the system under test while reporting progress and pages that are scanned on the Script Execution tab (Figure 11-49). 3. Tammy clicks View detailed statistics in Rational AppScan Tester Edition.
451
4. She views the information about the scan while it is running in Rational AppScan Tester Edition on the Progress tab as shown in Figure 11-50. When she is done reviewing the detailed statistics, she closes the window or tab to return to Rational Quality Manager.
After the execution is complete, Tammy does the following steps to review the results and log a defect: 1. She clicks Close and show results. 2. On the Execution Result tab (Figure 11-51 on page 453), Tammy notices that the result is Failed and reviews the number of issues that were found to see that both Medium and High severity issues were found. 3. She clicks the View in Rational AppScan Tester Edition link to view the detailed reports.
452
4. Tammy reviews the issues and decides to log a defect for a high severity cross-site scripting vulnerability that was found on the login page.
453
5. As shown in Figure 11-52, she selects the issue. For Action, she verifies that the Submit Rational Quality Manager option is selected and clicks Apply.
Figure 11-52 Rational AppScan Tester Edition test script execution results
6. When a link to the defect is added to the Work Item column, she clicks the link to review the created defect. 7. Tammy notices that the Severity field is set to Major and the Tags field contains the term appscan. Because the Owner field is unassigned, she sets it to the developer who is responsible for security. She also sets the Priority to High.
454
8. She looks at the Discussion header and clicks the attachment name to view the attachment that was automatically created to help the developer resolve the security vulnerability. The attachment includes information about the risk, a fix recommendation, and information about different variants of this issue (Figure 11-53).
9. She closes the tab or window that contains the attachment to return to the defect. 10.When she is satisfied with the information, she clicks Save.
455
456
Each of these tabs are populated with viewlets that are available with Rational Quality Manager. Figure 11-55 shows an example of some of the viewlets that are available for monitoring quality.
In addition, when using Rational Test Lab Manager, viewlets are available for managing Lab Resources, shown in Figure 11-56.
Figure 11-56 Rational Test Lab Manager provides viewlets for managing lab resources
Tammy uses a combination of viewlets, reports, and exit criteria to determine when the iteration is complete. This is a combination that confirms that all planned work is completed, all requirements have been validated, and defects have been fixed to the agreed upon level. In her case, all Priority 1 defects have been closed. Satisfied with the quality of iteration, Tammy communicates the news to her team and the team leads.
457
As shown by the choice of queries, she can create a variety of viewlets that provide real-time transparent information regarding the work items on her team. She can click any of the work items to modify them, such as assigning the unassigned work items, or reassigning work to other team members to balance the load. She also runs the Tester Report by using TER Count, which is in the Execution folder of the Reports to monitor test execution records (TER) per tester. She uses the Test Case Review report, under the Test Case folder, to see the status (draft, review) of all test cases in her test plan. By doing this, she can ensure that all test cases are completed for the solution. She can also run the Test Cases by Defect report to see which test cases are impacted by defects.
Monitoring quality
Tammy uses a combination of her dashboard and reports to measure quality and execution status. For Tammy, it is important to measure quality by tracking when the team meets the exit criteria. As you might recall, in 5.5.4, Tammy updates the solution test plan on page 139, Tammy defined the exit criteria as follows: 100% of all priority 1 defects fixed 100% requirements test coverage 100% user interface using the corporate branding To monitor quality, she created three viewlets on her dashboard that provide information for the criteria. 458
Collaborative Application Lifecycle Management with IBM Rational Products
Figure 11-58 A custom query to find all unresolved, high priority defects
2. She clicks the Home tab to view the dashboard and used the following steps to add the viewlet: a. She clicks Add Viewlet b. She scrolls to the Quality Management section, selects Workitems Viewlet, and clicks Add viewlet. c. After the viewlet is added to the dashboard, she clicks the X above add viewlet to close it.
459
d. In the new viewlet, she clicks the downward arrow to expose the menu options, and selects Edit Settings (Figure 11-59).
e. After the viewlet opens with the settings available for editing, she clicks the Edit button next to the Query field. f. In the window that opens and lists the available queries (Figure 11-60), in the Personal Queries folder, she selects the query that she just created. In this case, she selects High Priority Defects. Then she clicks OK.
g. In the viewlet: i. She clicks the Appearance tab. ii. She clears the Use computed title check box. iii. In the Title field, she types a title, High Priority Defects, for the viewlet. iv. She clicks Save and the editor closes. The query runs showing all unresolved, high priority defects.
Requirements coverage
Rational Quality Manager provides real-time information about the status of requirements coverage. An important function of any test team is to validate that the working software meets the requirements. Tammy uses the Requirements Test Coverage and Requirements Status by Execution reports to ensure completeness in testing as one of her exit criteria.
460
Tammy uses a viewlet that is configured to display the Requirements Test Coverage report. To add this viewlet she does the following steps: 1. Tammy clicks the Home tab to view the dashboard. 2. She adds the viewlet: a. She clicks Add Viewlet. b. She scrolls to the Quality Management section, selects Requirement Coverage Status, and clicks Add viewlet. The viewlet is added to the dashboard. c. She clicks the X above the Add viewlet button to close it. d. In the new viewlet, she clicks the downward arrow and selects Edit Settings. The viewlet opens with the settings available for editing. e. She sets the Test Plan to the appropriate test plan, which is AO_Rel2 in this case. f. In the viewlet, she clicks the Appearance tab to modify any settings or change the title. She deselects the Use computed title check box. g. On the Scope tab, no changes are needed. h. She click Save and the editor closes. The requirements coverage report is now available. The Requirements Test Coverage report provides a pie chart that shows her the ratio of requirements that are covered and not covered (Figure 11-61).
She can click the Covered section of the pie chart to view the details of all requirements that are covered by test cases. More importantly, she clicks the Not Covered section to view all requirements that are not covered by test cases, which is also shown in Figure 11-61. She clicks the requirement to open it, and from there, can create and assign a test case to a team member to ensure that it is covered. By monitoring this report, Tammy can see when the team has created test cases for all requirements. She uses this report in combination with the Test Execution status reports to monitor when all tests have been executed. In particular, the Tester Using TER count report helps Tammy to see the number of test executions per tester along with a view of the unfinished test executions per tester. By seeing this information, she gains insight into the workload across the team so that she can reassign work.
461
As test cases are created, the Branding theme is selected, which makes it easier to identify related test cases. To create a test suite that uses this theme, Tammy completed the following steps: 1. She selects Construction Create Test Suite. 2. For Name, she types UI re-branding tests and types a Description. Then she clicks Save. 3. From the Table of Contents, she clicks Test Cases. 4. She clicks the green plus sign to add a test case. 5. In the Add Test Case window, for Group by, she selects Theme, which re-orders the test cases by themes. All of the test cases with the Branding theme are now grouped. 6. She clicks the check box next to the Branding theme, which automatically selects all test cases with that theme (Figure 11-62), and clicks OK.
Tammy can now use the test suite to monitor the progress of all tests that are related to the UI branding. The test suite provides a grouping mechanism for a set of test cases. At a glance, she can see which test cases have test scripts. She can also view the execution results to determine the quality of the effort.
462
Trend reports
Last Tammy uses trend reports to get an indication of how the quality is trending. Two reports in particular give her insight into the completeness of the test effort: The Defect Arrival and Resolution report provides an indication of the rate of defects that are found versus those that are fixed. She watches to see a decline in the arrival rate and eventually a leveling or decline in the resolution rate. The Execution Trend report (Figure 11-63) helps to estimate the actual test execution progress against the projected progress. It demonstrates what test case execution work is complete, how much work is left, and whether progress is being made as expected.
Figure 11-63 Execution trends comparing planned versus actual execution status
463
Sketch
Related Artifact
Staged to
UCM Stream
ALM Request
[Enhancement]
CQ:Requirement
Associated
Requirement
Job BOM
ALM Task
[Detail Requirement]
ALM Task
[Develop Architecture]
Build
ALM Task
[Test]
Test Script
Deployed to
ALM Task
[Implement]
Test Plan
ALM Activity
[Implement] Includes
Test Result
Defect
ALM Baseline
BT Build
A Created in Current Act
A A
Referenced Supporting
The following assets are created in this act: The test plan is linked to requirements in Rational RequisitePro. A build is deployed to a managed resource in the lab. Test cases are updated with detail and include an association with the linked requirements from Rational RequisitePro. A test script is written and associated with the test case. Test execution records are generated for multiple browser configurations. Test results exist for each test execution record. A defect is associated with a line in the test execution. The following assets are also referenced by this act: Test plan Build and the Unified Change Management (UCM) stream that stages it, which was created by Rebecca in Act 3 Bill of materials from the integration build, which was created by Rebecca in Act 3 Requirement and sketch created in Act 1, which is used to verify the expected result of the test case
464
Development
Architect/Developer
Tester
Test Practitioner/Tester Measure progress against the plan.
Production
Production/Deployment Manager When the project meets exit criteria, it is ready to ship. Test Plan Service Levels
Requirement Management Test cases link to the requirements in the project. Requirement Definition Build verification tests indicate the quality level of the build Changes in the last build indicate the function that is available to test.
Design /Model
Build
Test Cases
Final Image
APARs RFEs
Business Use Cases Use business use cases to build test assets
Test Results
Product Limitations Use the information that was learned in the project test to help my users (usage notes and so on).
Iteration planning
Quality management starts by including the test effort in each iteration. By conducting integration tests in every iteration, the team can drive out defects with each iteration, which prevents the defects from piling up into an unmanageable list by the end of the project. Testing in each iteration also gives the test team more time to learn and work with the solution. This additional test time allows for increased test execution over the course of the project and increases the chances of driving down defects. Additionally as the team becomes more familiar with the functionality, the test cases can become more detailed and sophisticated. Tammy the test lead is involved in planning the iterations. The test team has insight into the planned requirements and development effort, which enables Tammy to respond with a more meaningful and targeted test plan for each iteration.
Test planning
Test planning provides the heart beat for the test effort. While it might seem like additional work when beginning the project, having a plan in place saves significant time over the life of the project, whether you have a big, small, agile, or traditional plan. The test plan is worth the investment to ensure that the team is working toward a common goal. By creating and managing a test plan, Tammy and the rest of the team can measure their progress against the 465
plan. Tammy has produced a test plan for each iteration. She also created test plans for each of the test environments (system test, acceptance test) at the end of the project. The test plans include links to the requirements that will be implemented, thus enabling the team to ensure that there are test cases for every requirement. This also gives the test team direct access to the content and intent of each of the requirements, thus improving the quality of the test cases. Tammys plan includes exit criteria. By gaining agreement on the exit criteria, Tammy can determine when the team has completed the work. She can now measure and report against the exit criteria. All team leads can be aware of and measure the project against the exit criteria. This gives the project team and the business assurance over the quality of the release. Tammys test plan is managed by the test management system. By managing it in a database, all requirements and test cases can be linked to the plan. This makes the act of measuring progress much easier, as the system provides reports for specified metrics.
Developer testing
As we saw in Chapter 6, An agile team implements a change on page 213, Diedrie builds the source code with her changes in her local sandbox. This ensures that the source code works in her sandbox and reduces the chances of breaking the build. Diedrie also runs unit tests against her changes before she delivers her source code. This initial set of testing catches the obvious defects before the source code is shared with the rest of the team.
466
Lab management
Tammy and the rest of the team have a catalog of servers that are available for use. They manage the configurations and make requests to a lab manager to prepare the servers based on the environments that they have defined. This ensures a consistent approach toward lab reservation, reduces conflicts over server usage and helps the team to optimize server utilization.
Quality monitoring
By managing these assets in a centralized repository, reports are easily generated to provide insight on progress. Additionally, the team established exit criteria for the iteration, which is used to determine when they have achieved the expected quality. During a retrospective at the end of the project, Tammy can analyze the usage rates of the tests and test servers. This analysis helps her to continuously improve her testing effort.
467
Choosing the View Reports menu item opens the set of predefined reports (Figure 11-67) that ship with the product.
As shown in Figure 11-67, these reports are categorized into folders as follows: The Defects folder shows information and trends about defects, such as defect arrival versus resolution. The Execution folder provides the execution status of plans, machines, owners, trends, and defects. The Lab Manager folder provides information about lab usage, requests, and reservations, The Requirements folder contains the requirements coverage reports for test coverage information about your plan requirements. The Scorecard folder includes summary information that shows the status of test cases, test executions, and defects.
468
The Summary folder includes individual summary reports such as Execution by Test Schedule and Tester Report using Weight. The Test case folder contains test case reports to list test cases by plan, configuration, or team. In addition, you can create your own reports that are tailored to your needs. In the following sections, we highlight some of the report types that are available.
Trend reports
Use trend reports to gain insight on the direction that you are trending. For example, a trend report that shows the defect arrival rate slowing might indicate a sign that the solution is becoming stable. The Execution Trend report provides insight into the number of test executions that are performed by the team against the plan, which can indicate whether the schedule is a risk or on target.
Execution status
Tammy can obtain the execution status of plans, machines, owners, trends, and defects by clicking Reports View Reports. She also uses viewlets on her dashboard to view the Execution Trend Report and Live Execution Status. Click the report that you want to run, and select the parameters. Execution status reports by plan, owner, and machine display charts with data that is divided into six color-coded categories. All of these reports use the same status outcomes. The following reports, among others, are of interest to Tammy: The Execution Status per Tester report lists the status of execution work items by their testers or owners. You can select more than one plan to see the status of execution work items by owners across multiple plans. Click a section of the graph to view the execution work items that are associated with a particular status for that owner. The Execution and Defects by Owner report displays both the defects and the execution work items for each owner of a test plan. Click the ID number of an execution work item or a defect to open it.
Requirements coverage
Ensuring that all requirements are tested is an important task for the test team. Rational Quality Manager allows testers to link to requirements in Rational RequisitePro or create requirements directly in Rational Quality Manager. These requirements can then be associated with a test plan. By associating them with the test plan, the test manager can organize all requirements that will be validated by that plan. A report is provided to allow a test manager to see all requirements that are associated with a plan. Additionally each requirement should have at least one test case written to validate it. Test cases have test scripts and one or more test execution records with results. A report is provided so that test managers can ensure that all requirements in plan have a test case.
Lab management
The lab management reports provide insight into the utilization of lab resources. This insight helps a team optimize their use of machines by seeing which machines are under or over utilized. The following reports are among those of interest: The Lab Resource Utilization report shows the average daily usage of a group of machines. You can also specify a time period to see the utilization rate during that period. This report can be based on a group of resources or for the entire lab.
469
The Machine Free Time Rate report shows how much time each machine is idle. This is report is in the form of a bar chart with a threshold marker. You can specify a threshold, which highlights when you go under the threshold, indicating that the machine is too idle. The Request Response Time report shows the average response time per request to see how the lab managers are responding.
Corporate
Rational Requirements Composer and Rational RequisitePro
Recently acquired
Rational ClearQuest Rational Team Concert
Sketches and so on
Requirements
Reusable assets
Rational Build Forge Rational ClearCase/UCM
Components Streams
Third-party provider
Rational Quality Manager
Test resources US IN
Repository
Figure 11-68 Rational Team Concert as one part of the enterprise ALM solution
470
471
To modify user accounts, click Jazz User Administration. User accounts were created for each of the actors in the scenario. When creating an Rational Quality Manager user account, you choose the type of client license to give each user. Tammy and Tanuj were given Rational Quality Manager - Tester licenses, which gives them read access to all capabilities and write access to all capabilities unless otherwise restricted by role-based process permissions. In addition, Tammy was given the Repository Permission of JazzAdmin, while Tanuj was given the Jazz User permission. Marco, Diedrie, Patricia, Bob, and Al were given Rational Quality Manager - Viewer licenses to give them read access to all capabilities unless otherwise restricted by role-based process permissions. In addition, they were given Jazz User Repository Permission. User accounts in Rational Quality Manager can be personalized in the same manner as described for Rational Team concert in Configuring project and team areas on page 305. To configure the project area, click Jazz Project Administration. A team area, named
Account_Opening, was created for the test team. A team area called Lab Managers was
created for users that manage the test lab. This configuration assumes a separation between the testers and the lab administrators. Restriction: Rational Quality Manager supports one, default project area with multiple team areas. The Administration user interface does provide the ability to create new project areas. However, these areas are not supported. Only the default project area with multiple team areas is supported. In practice, additional team areas can be created to separate the test teams functions. For example, if a test team focuses on a particular area of the solution, a team area can be created for them. The team members were configured by using the roles that are available with the default Rational Quality Manager process. Tammy is assigned the test lead role, while Tanuj is assigned the tester role. The scenario configuration did not require any configuration of additional work item types or changes to the default work item state workflows.
472
In summary, to integrate with Rational RequisitePro: 1. Install Rational RequisitePro 7.1 and configure a RequisiteWeb server. Restriction: To obtain this version of Rational RequisitePro, you must register for the RequisitePro 7.1 beta program. 2. Create a Rational RequisitePro 7.1 project, and add one or more users to the project. 3. Add requirements to the project. 4. Import the requirements into a test plan in Rational Quality Manager. 5. Associate each requirement with a test case. When using Rational Quality Manager, you can establish which Rational RequisitePro host to use by modifying the system properties (Figure 11-70): 1. Log in as a user who has administrative privileges. 2. Click Admin System Properties. 3. On the System Properties tab (Figure 11-70): a. b. c. d. From the list box on the left, click RequisitePro Host Properties. Click the green Add Connection (plus sign) icon. Type the host name and port number of the Rational RequisitePro server. Click Save Connections (floppy disk) icon.
473
script, you must associate it with a test case. You can then generate an execution work item for that test case and execute it, which is identical to the way that you use scripts of other types. To incorporate functional tests into your workflow, you must meet the following requirements: The Rational Quality Manager Web client and server must be running. A functional test product (either Rational Functional Tester or Rational Robot) and the corresponding adapter for Rational Quality Manager must be installed on the same machine. The adapter must be running. It is not necessary for the functional test product to be running when an execution work item referencing a functional test script is executed.
Adapter installation
The installation files (RFTRQMAdapter.zip and RobotRQMAdapter.zip) for the adapters are located in the adapters subfolder in a typical Quality Manager installation. To install an adapter: 1. Download the compressed file to a machine where the functional test product is installed. 2. Extract the contents of the compressed file. 3. Edit the configuration file as needed.
474
Figure 11-72 Adding a Rational Build Forge RSS feed to Rational Quality Manager
To view the news: When you see a URL in the news viewlet, click the URL to open the Rational Build Forge messages window. Click the plus sign in the lower right corner of the viewlet to see a read only view of the headlines.
475
cd "C:\JazzBeta2\jazz\server" server.shutdown.bat Call a deployment script, as shown in Example 11-2, to set the directory to the location of the script and then call the script with parameters set.
Example 11-2 Calling a deployment script
cd "C:\RTLMDeploy" RTLMDeploy_auto.jar -u C:\JazzBeta2 -w C:\wget -auto -n Start a server by changing to the appropriate directory and running a batch file to start the server as shown in Example 11-3.
Example 11-3 Changing the directory and starting the server
476
477
478
Part F
Part
479
480
12
Chapter 12.
481
482
IBM Rational ALM release management capabilities are seamlessly extended from the development, test, and build environments that support the CALM development cycles. This effectively bridges to the publishing and deployment cycles of the ALM life cycle (Figure 12-1).
Figure 12-1 Build and release cycles integrating seamlessly into the ALM cycles
Packaging
Software organizations tie together the transition of applications between building, packaging, and deployment of the release. Often deployments are managed in an over the wall fashion. To realize a build and release management solution that meets the expectations of agile and business-driven development, the transition workflows must be streamlined. The extraction and packaging of the application component from the source control repositories must be automated as should the movement of the packages across solution staging repositories, teams, organizations, machines, and groups. The deployment can be an intermediate drop zone or final deployment environment.
483
When the team agrees that the iteration exit criteria has been met, Patricia approves the release. While the teams conduct retrospective to continuously improve their practices, Rebecca publishes the iteration release and submits it to the reuse repository in Rational Asset Manager (Figure 12-2).
5.2 The team leads assess the exit criteria 5.4 Marco conducts a retrospective
Figure 12-2 Act 5: The team completes the iteration and delivers the solution
Patricia is the project leader. She is responsible for coordinating the plans and execution of the project and its team of teams. During the end of the iterations, she validates that the project is ready to close down for release and starts to tighten the process and reporting so that nothing is slipping through the cracks. She moves the team into the end-game process. Marco is the development lead in the Credit Check component team. He is responsible for the delivery and quality of one of the solution components, and he enforces the end-game process within his agile team. For the iteration release, Marco approves the component delivery after the exit criteria for the iteration is met by his team. Tammy is the test lead. She has a globally distributed quality team that is responsible for conducting solution testing or investigative testing. She is monitoring the test plan and the quality exit criteria for the iteration release and approves the release from a quality perspective. Rebecca is the release engineer who oversees the solution integration builds and provides
global build support to the project teams. She is also responsible for packaging, publishing, and announcing the iteration release.
484
485
The workflow in this scene captures how Patricia and Marco complete the following tasks: Assess project health and decide to move the project to the end-game practices Enforce the end-game practices Use approvals to manage change deliveries
486
487
488
Release Candidate
Inception Iteration
Elaboration Iteration
Construction Iteration 1
SVT
SVT
Security / Compliance
Unacceptable Defects
Who owns this phase of testing depends on the organization. Theres a gradient of ownership that varies from enterprise to enterprise. In some organizations, the test team might own the performance tests, while the operations team owns security, compliance, and user acceptance testing. In other organizations, the operations team might own all of these activities. Ownership is not the key point, however. The important note is that a handoff occurs, and at some point, new people will conduct tests on the solution that the development team knows thoroughly. Sharing the knowledge of known defects and sharing test cases, scripts, and configurations can help the teams test more efficiently. Most importantly, the team must ensure that the same build that was tested by the test team is the one that is deployed into production.
489
for asset metadata. Additional metadata is required for integrating with tools and other repositories such as Tivoli CCMDB. RAS provides a structure for unique asset identification and metadata extension. The combination provides the basis for managing references between Rational Asset Manager and Tivoli CCMDB. By using RAS in Rational Asset Manager, the enterprise can configure multiple asset types to meet their particular needs. Examples of asset types include applications, components, services, word templates, and release packages (Figure 12-5).
They key point here is that regardless of the asset type configuration in Rational Asset Manager, the synchronization can still work with Tivoli CCMDB. In addition to the asset metadata, such as ID, which is used to create a reference between Rational Asset Manager and Tivoli CCMDB, other metadata elements, such as classification, are synchronized between Rational Asset Manager and Tivoli CCMDB. Figure 12-6 illustrates a sample of the asset metadata.
Tivoli CCMDB
Access control Classification synchronize Configuration item metadata
Asset
Classification
Reusable Asset Specification Overview Name, Description, ID, Version, S tate Classification Descriptors Solution Artifact name, artifact ID and version, artifact reference Related assets Relationship type, asset ID and version
Measurements
490
Synchronizing asset classification and metadata reduces administrative overhead, simplifies developer use, and enables the solution to the challenges introduced earlier. The user communities and content managed by Rational Asset Manager and Tivoli CCMDB are rather different. Each of the communities for Rational Asset Manager and Tivoli CCMDB has many sources of content and information that they manage. Many assets have nothing to do with configuration items, and not every configuration item should be associated with an asset. However, several artifacts can be of interest to both user communities. Even with selecting a subset of the assets and configuration items in the repository, a many-to-many connection point is produced that adds to the complexity of tracing relationships and getting the information that IT needs to run its business. Figure 12-7 illustrates this concept.
Tivoli Products
Incident
Rational ClearCase
EAR
Tivoli CCMDB
Data Center 1
EAR
Rational ClearQuest
EAR CI
Data Center N
CVS
Third-party 1
Subversion
Sample scenarios What development teams address the incident? With a new version of the component EAR, what locations are affected?
Figure 12-7 Providing traceable asset information to IT operations
Third-party N
There are several levels of integration for these references that are impacted by the volatility of the references that are stored in each of the repositories. The metadata is federated across the repositories to provide community-relevant views and context. In some cases, this is achieved by physically replicating information, while in other cases, links are used to allow users to navigate from one repository to the other. For any artifact that is replicated between the repositories, the repositories declare whether they have the master copy or the cached copy. Different communities require different governance and authorization models. Often in a development context, a rather coarse grained workgroup model is used to facilitate collaboration where any member of a workgroup can perform the same operations on an artifact once in the scope of the workgroup. However, governance requirements for CIs often imply a much more fine-grained and restrictive model for who can perform which tasks on specific artifacts. Rather than trying to unify these authorization models, we introduce
491
bridging roles in each community that are authorized to make content from one environment available in another environment.
The enterprise must determine what to connect across the repositories. In general, we recommend against connecting all possible dots, as shown in Figure 12-8. It is not reasonable to consider connecting all possible Rational Asset Manager assets for all asset types, to all possible CIs in the CCMDB. A more reasonable approach is to identify the cross-repository scenarios that are relevant to the enterprise. Then identify the assets and CI relationships that are needed to support those scenarios, selecting a subset of the assets and CI relationships that should be managed (Figure 12-8).
Rational Asset Manager Tivoli CCMDB
The Rational Asset Manager and CCMDB integration is focused on establishing the core plumbing to address the challenges that we identified earlier. This integration includes the following major capabilities: Determine the appropriate Rational Asset Manager assets and CCMDB CI linkages to create. Create the linkages between the Rational Asset Manager assets and CCMDB CIs. Keep linkages fresh. Discover and navigate linkages across repositories. Rational Asset Manager v7.1 provides an integration module so that Rational Asset Manager can be configured as a physical DSL repository in Tivoli Release Process Manager. The integration module allows the browsing of assets in Rational Asset Manager from the DSL application of the Tivoli Release Process Manager. The release manager can browse for software assets in Rational Asset Manager that are ready for deployment and can import those assets as software configuration items into the CCMDB. CIs are created and added to the DSL catalog. The operating status of these CIs can then be controlled in the normal way in the CCMDB and Tivoli Release Process Manager. When the software CIs are ready for production deployment, the operating status can be changed to Ready, for example, when the testing phase is complete and the release manager approves the package for deployment. Software CIs in the Ready status can be added as source CIs for deployment tasks in Tivoli Release Process Manager. Tivoli Release Process Manager then manages the deployment of these CIs to the target resources through a combination of manual and automated steps. An alternate path is to export this information from Rational Asset Manager by using the discovery library adapter (DLA), creating an International Development Markup Language (IDML) book that can be imported by using IBM Tivoli Application Dependency Discovery into the CCMDB.
492
The integration between Rational Asset Manager and CCMDB also works in the other direction. You can automatically create assets in Rational Asset Manager from existing CIs in CCMDB. When Rational Asset Manager creates an asset from a CCMDB CI, it is stored as a remote asset. The remote asset contains a link to the CI in the CCMDB, and similarly the user can navigate to the asset in Rational Asset Manager from the CI in CCMDB. Remote assets in the Rational Asset Manager repository retain much of the metadata from the CCMDB CI. They are also given the asset type of Configuration Item and the category of CCMDB, which can be used as search filters to more quickly search for remote assets in the Rational Asset Manager repository.
493
494
13
Chapter 13.
495
5.2 The team leads assess the exit criteria 5.4 Marco conducts a retrospective
Figure 13-1 Act 5: The team completes the iteration and delivers the solution
This act, as shown in Figure 13-1, consist of the following scenes: Patricia moves the team into the iteration end game. The project team leads assess their iteration exit criteria and approve the release. Rebecca publishes the release. Marco conducts a retrospective with his team. The following Rational products are used in this act: Rational ClearQuest 7.1 Rational Team Concert 1.0
496
13.2.2 Rational Team Concert, Rational Quality Manager, and solution delivery
Both Rational Team Concert and Rational Quality Manager provide key capabilities to the development and test teams in answering the most critical question: When are done? With Rational Team Concert, development teams track their progress and health by using the iteration plan. This plan indicates the remaining work and its estimates to complete the iteration. Tests place emphasize the test plan to enable a team to track their progress against the quality objectives of that plan. In both cases, the customizable dashboard is a key component for the teams to track their trends and plans. Dashboards can be created for each project, iteration, view of interest, or team member. During the end game of an iteration, it is key to focus the team on remaining work while controlling the rate of change that is delivered to the iteration. Rational Team Concert contains key capabilities to enact team processes, such as reviews, to manage change and deliveries during the end game.
497
Enterprise reporting for documenting delivery events Integration with existing development and deployment technologies so that teams can leverage existing tool investments and integrations
498
The solution delivery in Act 5 updates several assets and establishes traceability to support the life-cycle collaboration and tracking. Figure 13-3 show the life-cycle assets that are updated at the end of this act. See 13.4, Life-cycle collaboration on page 519, which describe the updates to the artifacts and relationships in detail.
ALM Project
ALM Task
[Implement]
ALM Activity
[Implement]
Build
BOM
ALM Activity
[Approve ALMrelease] Activity [Approve ALMrelease] Activity [Approve release]
Work Item
[Activity]
ALM Task
[Retrospective]
A A
Referenced Supporting
Work Item
[Activity]
499
Figure 13-4 show the life-cycle assets and relationship updates in the end game.
500
Figure 13-5 Enforcing the end-game by setting the Stabilization phase as current
By selecting Stabilization, Marco enforces the end-game policies to the team. The policies are set for the entire project or per team area. In Configuring Rational Team Concert for solution delivery on page 525, we discuss how to configure the Rational Team Concert process to enforce end-game reviews and approvals as part of the delivery process.
501
Figure 13-6 Marco giving the required approval to deliver a work item during the end game
Diedrie receives the notification that the enhancement has been approved for delivery. She now proceeds with her regular workflow to deliver her changes to the component integration stream, as discussed in Diedrie delivers her changes for integration on page 282.
502
3. On the work item, she clicks the Approvals tab. She clicks the State column on her entry in the Approvals section and selects Approved (Figure 13-7).
Figure 13-7 Patricia giving the required approval to deliver changes for the final release of the application
503
504
To review the iteration plan, Marco performs the following actions: 1. He browses the Team Artifacts view, navigates to AccountOpening Plans Construction Iteration C2B, and selects the CreditCheck C2B iteration plan. 2. He clicks the Charts tab to see a visual view of the work item closure rate for the iteration. 3. He clicks the Planned Items tab, and uses the sidebar control to configure the view. He excludes Resolved items. For Group by, selects Folder, and for Sorts by, selects Severity and Priority. 4. He works from the bottom up and collaborates with the work-item owners to validate progress, estimates, and opportunities for pushing work to the next iteration.
505
Figure 13-8 Marco configuring Team Central to track the exit criteria
Marco also ensures that the rest of the team can monitor the exit criteria in the Component Team Dashboard. To configure a dashboard for monitoring the exit criteria, Marco completes the following actions: 1. He opens the Account Opening Project Area and clicks the Process Configuration tab. 2. He browses the Configuration section for Project Configuration Configuration Data Work Item Predefined Queries. 3. He clicks the Add button in the Predefined Queries section to add the new C2B Blocking | Critical query. 4. He clicks Save to save and deploy the changes. 5. He browses to the Web UI by opening the Team Artifacts view, right-clicking the AccountOpening project area, and choosing Open Web UI for Project. 6. In the AccountOpening dashboard, he clicks the Add New tab. On the new tab, from the command menu, he chooses Rename. He names the new tab Exit criteria. 7. He clicks Add Viewlet and configures the new viewlet by selecting Development Work Item Queries. He configures the viewlet to contain the exit criteria queries that are configured in the previous section.
506
workflows. Patricia can track the approvals by monitoring the completion of the activities in ClearQuest. With the final release date approaching, Rebecca is building releases that become candidates for the final release version, and Tammy is completing her test plan to validate the release candidates. Patricia consults her leadership team on their exit criteria, and the team decides to declare the latest build a candidate for release. Patricia submits the approval records for the teams, as discussed in Patricia approves the release on page 508. Marco receives a notification of a pending task work item to approve for the release candidate. To approve the release candidate, Marco performs the following actions: 1. Marco opens the work item that is assigned to him by Patricia. 2. He click the Approvals tab, adds a new approval item, adds himself as an approver, and chooses the approved state. 3. He changes the state of the work item to Completed and saves the work item. The updated work items are synchronized with Rational ClearQuest, and Patricia can view the completed approval by Marco.
507
Tammy is monitoring the list of quality exit criteria for the iteration release: 100% of the P1 defects fixed by development teams 100% of the Requirements covered with test cases Achieved quality objectives of all enhancements Tammy also monitors the trends for the following items: Build validation test stability Code coverage of executing test cases Failures in functional test Application load performance For the steps to configure the queries and reports on quality, see 11.5.5, Monitoring quality on page 455.
Patricia assesses the project iteration plan and her exit criteria
Patricia is using the project iteration plan in Rational ClearQuest to review remaining work for the iteration. She also collaborates with her teams clean up of the iteration plan and moves work to next iteration.
508
Patricia validates the remaining work by querying for the following items: Reviewing all tasks that are planned for this iteration, but have not been closed Defects that are of blocking or critical severity She uses Rational ClearQuest collaboration, in context of the ALMTask, to run the discussions with the owner. This helps in tracking and for other stakeholders to understand. To exit the iteration and release the application iteration, she must perform the following tasks: Complete all requests that are planned for the iteration. Complete all tasks that are planned for the iteration. Pass the quality exit criteria. Pass all component exit criteria. Patricia uses the Project Requests and Current Iteration queries to validate the state of the requests and tasks that are planned for the iteration. See 5.5.5, Patricia confirms the project iteration plan on page 155, for details about the ClearQuest ALM queries.
509
4. She opens the first activity, assigns it to Marco, and saves the changes. This activity instructs Marco to approve the component for the AO_Rel2 Construction 2 iteration. She proceeds with the other activities and assigns them to the other component and practice leads. Patricia can now track the completion of the team approvals. After all team leads complete their activities, Patricia can proceed and make the final approval for the application as shown in Figure 13-9. 5. She opens the Approve release ALMTask and updates the state to Complete. She proceeds and sets the resolution code to Approved. She then clicks OK to save the record. 6. Because Rebecca has been added to the notifications list, she receives an e-mail notification that the release has been approved. Rebecca proceeds and begins the work to package and publish the release.
510
511
To run an integration, Rebecca performs the following activities: 1. Rebecca executes the Rational Build Forge project for packaging the Account Opening project. This project integrates with the development repositories that are used by the project: a. b. c. d. e. f. She collects the build identification from Rational ClearQuest. She collect the distribution archives from Rational ClearCase. She collects additional release documentation from Rational ClearCase. She packages the release archives. She delivers the release archives to the reuse repository. She announces the availability of the delivery by using Rational Build Forge notification capabilities.
2. Sets the release date and confirms the availability in Rational Asset Manager. 3. She publishes the asset to the IBM Tivoli Change and Configuration Management Database (CCMDB) for use by the operations team. 4. In Rational Build Forge, Rebecca selects the appropriate build project for the end of the iteration (or milestone). The Rational Build Forge Ant scripts generate the release packages and communicate with Rational Asset Manager, submitting the build assets and their relationships. In Rational Asset Manager, Rebecca finds the milestone asset and declares it to be released. Following the asset relationship to the build asset, she selects one or more software images and publishes them to the CCMDB as illustrated in Figure 13-10.
BuildForge
BuildForge Project
ANT
Create assets and relationships Account Opening Product Declare milestone/iteration complete Account Opening M2 Account Implementation Asset Publish software image to CCMDB
Figure 13-10 Overview of Rational Build Forge, Rational Asset Manager, and the CCMDB
5. Rational Build Forge creates the Account Opening software packages and submits them to Rational Asset Manager through the Rational Asset Manager/Ant integration. The Rational Build Forge project creates a build asset in Rational Asset Manager and connects it to the Milestone asset.
512
6. In Rational Asset Manager, Rebecca searches the milestone asset for the Account Opening project as shown in Figure 13-11. She selects the Account Opening M2 milestone asset.
513
7. Rebecca declares the milestone or iteration to be released by setting a release date on it as shown in Figure 13-12.
514
8. By using the Related Assets section (shown in Figure 13-12 on page 514), Rebecca traverses the asset relationship to the Acct Implementation Asset, which was produced from the Rational Build Forge project (Figure 13-13). 9. Rebecca clicks the Publish to CCMDB link (shown in Figure 13-13) to publish the asset for the milestone to the CCMDB, which is used by the operations team to manage and track changes to the operations environment. An important aspect of managing the operations environment includes maintaining links to all software that is deployed. By managing the assets in Rational Asset Manager and linking to the CCMDB, the operations team always has access to the software versions that were deployed into production.
Figure 13-13 Automatically populating Rational Asset Manager with Rational Build Forge
515
10.After Rational Asset Manager and CCMDB synchronize, the relationships can be graphically viewed as shown in Figure 13-14. The Acct Implementation Asset has a relationship to a CCMDB proxy asset called Acct IMPLEMENTATION ASSET-1012. Rebecca examines the asset details on that proxy asset by selecting View Asset Details.
Figure 13-14 Relationships synchronized between Rational Asset Manager and CCMDB
11.Rebecca examines the CCMDB proxy asset and clicks the Link to CCMDB (Figure 13-15).
516
12.In the Web page opened by the CCMDB that shows the details of the asset that Rebecca just published (Figure 13-16), Rebecca examines the CCMDB configured item of the Acct Implementation Asset, which is now ready to be deployed.
Rebeccas work is done, and the final asset is now ready for deployment by the operations team.
517
The workflow in this scene captures how Marco completes the following tasks: Uses the dashboard to support a retrospective Submits a retrospective to the team repository
Retrospectives
Retrospectives are a practice that is performed by agile teams that want to continuously improve their way of working by looking back and learning by experience. This practice is captured as one of the principles of the agile manifesto, which states:1 At regular intervals, the team reflects on how to become more effective, and then tunes and adjusts its behavior accordingly. Every organization adopts a way to make retrospectives productive within their teams, but a few structural techniques support the collaboration. Define and scope the timeframe of the discussion to the latest iteration. Identify major achievements by the team. Learn what practices went well and which did not go well. Agree on the practices to adjust to do well more often and on those to avoid that did not do well.
518
Adjusted practices Other areas 4. Save the work item changes. As discussed in the following section, Patricia can manage the retrospectives across the teams by using Rational ClearQuest as an alternative approach. Such an approach implies that Marco gets a work item assigned to him through ClearQuest Connector synchronization.
519
ALM Project
ALM Task
[Implement]
ALM Activity
[Implement]
Build
BOM
ALM Activity
[Approve ALMrelease] Activity [Approve ALMrelease] Activity [Approve release]
Work Item
[Activity]
ALM Task
[Retrospective]
A A A
Work Item
[Activity]
520
Corporate
Rational Requirements Composer and RequisitePro
Recently Acquired
Rational ClearQuest Rational Team Concert
Sketches and so on
Requirements
Reusable assets
Rational Build Forge Rational ClearCase/UCM
Components Streams
Third-party provider
Rational Quality Manager
Test resources US IN
Repository
Figure 13-18 Rational ALM solution components contributing to the solution delivery
521
2. Create a new ALMResolutionCode record by selecting File New ALMResolutionCode: a. For ALMRecordType, select ALMActivity. b. For ResolutionCodeLabel, select Approved. c. Click OK to save the record. 3. Create another ALMResolutionCode record, but for ALMRecordType, select ALMType. Click OK to save the record. 4. Create a new ALMTypeLabel record by selecting File New ALMTypeRecord: a. Enter the name Approve release and type an optional description. b. Click OK to save the record. 5. Create a new ALMType record by selecting File New ALMType: a. b. c. d. In the ALMRecordType field, select ALMType. For TypeIndicator, select Type. For Type Label, select Approve release. Enter an optional description and click OK to save the record.
6. Create another ALMType, but for the ALMRecordType field, select ALMActivity. 7. Create a new ALMWorkConfiguration record by selecting File New ALMWorkConfiguration: a. b. c. d. e. a. b. c. d. Select the project to deploy this workflow to, for example AO_Rel2. For the Record Type field, select ALMActivity. For the Type Label, select Approve release. For the ALMRoles, select Any Role in the same project as previously chosen. Click OK to save the record. For the Record Type field, select ALMTask. For the Type Label, select Approve release. For the ALMRoles, select Project Manager. In the Primary Children Types section: i. Click the ... button. ii. Select the Approve release line and double-click to add the selection. iii. Click OK to close the window. e. Repeat the previous step and add Approve release to the Secondary Children Type list. Scroll the query result list and open the record with ALMType ALMRequest Start Iteration Type. f. Click OK to save the record.
522
9. Run the query Find Work Configuration by Project (Figure 13-20 on page 524): a. In the Dynamic Filters window, select the project to which you are adding the approval workflow and click OK to run the query. b. Scroll the search results and locate the ALMRequest Start Iteration Type record. c. Click Modify. d. In the Primary Children Types section, add the Approve release task. Click OK to save the Work Configuration record.
523
Figure 13-20 Adding the new Approve release work configuration to the Start Iteration workflow
The new workflow is now ready to be used. When starting a new iteration, by creating a Start Iteration, the new approval task is added and pending for the completion of the iteration. We discuss the approval workflow in Patricia approves the release on page 508.
524
4. Create a new ALMWorkConfiguration record with the following characteristics: Type is ALMActivity. TypeLabel is Retrospective. ALMRoles is AllRole. 5. Create a new ALMWorkConfiguration record with the following characteristics: Type is ALMTask. TypeLabel is Retrospective. ALMRoles is AllRole. Add Retrospective and Primary and Secondary Children Types. 6. Run the query Find Work Configuration by Project. Locate the ALMRequest Start Iteration Type record. Select the Modify command. 7. Run the query Find Work Configuration by Project: a. In the Dynamic Filters window, select the project to which you are adding the approval workflow and click OK to run the query. b. Scroll the search result and locate the ALMRequest Start Iteration Type record. c. Edit the Primary Children Types section, and add the Retrospective task. d. Click OK to save the Work Configuration record. For the retrospective workflow, no resolution code is required. To resolve a retrospective, simply use the code Completed. The ClearQuest Connector integrates the Retrospective workflow across Rational ClearQuest and Rational Team Concert. New retrospectives are assigned to teams by using Rational Team Concert and Rational Quality Manager. Notes and conclusions from completed retrospectives synchronize to Rational ClearQuest for consolidation by Patricia and her leadership team as discussed in Rational ClearQuest in retrospectives on page 519.
525
To configure the process specification for approvals: 1. In Rational Team Concert, open the Project Area, for example, AccountOpening, and click the Process Configuration tab. 2. Expand the Configuration section and locate the iteration where you want to add process enforcement rules, for example Team Configuration Development Lines Main Development Construction Construction Iteration C2 Stabilization Operation Behavior. See Figure 13-21. Note: The path to the Operation Behavior element depends on the structure of the iteration that is used in your project.
Figure 13-21 Adding Operational Behavior to the Stabilization phase to enforce end-game approvals
3. In the Operation Behavior section, scroll the list of Operations and locate the section Source Control Deliver (client). Select the cell in the Everyone column. 4. In the Preconditions, click Add. In the Add Preconditions window (shown at left in Figure 13-22 on page 527), select Require work item approval from the list and click OK. 5. Make sure that the new Require work item approval item is selected in the Preconditions section. Then click Add in the Required Approvals section.
526
6. In the New Required Approval window (shown at right in Figure 13-21), for Type, select Approval and select and increment the approvals that are required per role for a work item delivery, for example a single project manager. 7. Optional: Add another required approval. For Type, select Review that is to be done by one or more developers or architects.
8. Click Save in the Project Area to save the process changes and deploy the new operational behavior to the team. Note: The new operational behavior is only active during the selected iteration phase. To deploy the approval process to other iterations and phases, repeat the steps in this task to each required iteration.
527
5. In the Team Artifact view, open your target project area and click the Process Configuration Source tab. 6. Depending of the level of retrospective process functionality that you need, you can complete one or more of the following steps. Copy the complete XML sections from the process template into your process definition. In the process-specification project-configuration data configuration-data section for com.ibm.team.workitem.configuration.workItemTypes, copy the source definition of the Retrospective type section. Paste the XLM section into the corresponding location in your target process definition. In the process-specification project-configuration data configuration-data section for com.ibm.team.workitem.configuration.workflow, copy the source definition of the com.ibm.team.workitem.retrospectiveWorkflow workflowDefinition section. Paste the XLM section into the corresponding location in your target process definition. In the process-specification project-configuration data configuration-data section for com.ibm.team.workitem.configuration.workflowBinding, copy the source definition of the com.ibm.team.workitem.workItemType.retrospective query section. Paste the XLM section into the corresponding location in your target process definition. In the process-specification project-configuration data configuration-data section for com.ibm.team.workitem.editor.configuration.presentations, copy the source definition of the com.ibm.team.workitem.editor.retrospective editor section. Paste the XLM section into the corresponding location in your target process definition. In the process-specification project-configuration data configuration-data section for com.ibm.team.workitem.editor.configuration.presentations, copy the com.ibm.team.workitem.tab.retroOverview tab section and the com.ibm.team.workitem.section.RetroDetails section. In the process-specification project-configuration data configuration-data section for com.ibm.team.workitem.editor.configuration.workitemTypeEditorIdBinding, copy the source definition of the com.ibm.team.workitem.editor.retrospective workitemTypeEditorIdBinding section. Paste the XLM section into the corresponding location in your target process definition. Optionally, in the process-specification project-configuration data configuration-data section for com.ibm.team.workitem.configuration.queries, copy the source definition of the All Retrospectives workItemCategoryBinding section. Paste the XLM section into the corresponding location in your target process definition. 7. Test the process configuration extension by creating a new work item.
528
The type Retrospective is now displayed in the list and in the editor as shown in Figure 13-23.
529
530
Part G
Part
531
532
14
Chapter 14.
533
14.2 Process understanding and implementation: Improving project success with predictability and repeatability
Process refers to the collection of practices, rules, guidelines, and conventions that are used
to organize a teams work. A teams process is the sum total of the that ways the team has decided (or evolved) to do things. An organizations software delivery process is usually defined in two ways: a process description and process implementation. The process
534
description is the documented process, where the process specification implements the documented process in the tools and software delivery environment that the organization uses. Small teams tend to have little documented process and a lightweight implementation of the process. These types of small teams are usually located in a single location and organization and change infrequently. They know how to work together successfully from experience and have a common set of previous project experiences to draw upon. As the teams grow and change more frequently, the process and implementation are defined more formally in order to enable new and distributed team members. For example, the team might start to document common team processes such as the workflow for different change requests or the branching and promotion rules for their software configuration management. Larger or more complex organizations and projects might find that they need to document and implement their process more formally in order to be successful in software delivery. As processes become more formalized in an organization, project teams might also find that they become restrictive and nonconducive to projects. Therefore, it is important that processes provide the project manager and leads with control to customize the process definition and implementation to fit the needs of their project. This enables the organization to continue to enforce necessary process mandates, such as regulatory compliance requirements, and still give project owners the ability to adjust to changing project requirements.
535
Process template
Project area
Users {1..n}
Process settings
Builds Plans
Project artifacts
Requirements
Streams
Work items
Figure 14-1 Defining a process specification by customizing a process template for the project
The iteration structure defines the existing development lines and the break down of the development lines into iterations. It also defines which iteration is the current iteration for each development line, as illustrated in Figure 14-2.
Figure 14-2 The process adapting to the changing needs of the project as work progresses
536
The majority of modern software development processes and methods today follow an iterative software development approach. Rational Team Concert provides a number of ready-to-use process templates that implement these industry processes. For example, Rational Team Concert includes Open Unified Process (OpenUP), Eclipse Way, and an example process that are ready to use. Rational Team Concert also makes it easy to customize or redesign these processes to fit your organizations way of doing things by using the process templates as a starting point. The process template library makes it easy to create and share new or customized processes. For example, the Scrum process implementation is available in IBM developerWorks at the following address:
http://www.ibm.com/developerworks/rational/library/08/0701_ellingsworth/index.html?ca=drs-
Your process controls can be customized for each project iteration. Different lines of development might have different active controls based on the process rules that are defined for that iteration as illustrated in Figure 14-3.
Figure 14-3 The process for two separate lines of development with varying process control based on their needs
The process specification describes the roles team that members can play and the process rules that apply to each role across the project iterations. This specification allows you to govern the project development process while providing the team with the flexibility that they need to deliver their work (Figure 14-4 on page 538). For example, as your project progresses to completion and enters the final iteration before shipment, you can issue a code freeze and you might want greater control over work that is performed on the product.
537
Figure 14-4 Specifying process rules based on the users role by iteration in Rational Team Concert
The process specification also defines which of the process rules can further be customized.
Figure 14-5 Prepackaged process templates - Eclipse Way and OpenUP in Rational Team Concert
538
When you create users for your project, you define a process role for them. Recall that with Rational Team Concert, you can configure your process behavior based on the user role (Figure 14-6). Every user in Rational Team Concert can have one or more user roles.
Figure 14-6 Process roles to modify the actions a user can take based on the projects selected process
539
The process template includes everything that you need to institute the process on your project. For example, the risk work item workflow and description detailed in OpenUP (Figure 14-7) are enacted by the process specification for OpenUP in Rational Team Concert.
Figure 14-7 Implementing the risk work item workflow process in Rational Team Concert
Rational Team Concert goes one step further by enabling you to enforce the project rules that you have defined for your project. In doing so, it helps to prevent team members from accidentally overstepping defined project rules and to improve the overall health and success of the project.
540
For example, you might institute a rule that all project team members must run JUnit tests before they deliver their changes to the team work area. When a project team member tries to deliver their changes without first successfully unit testing their code with JUnit, the team advisor steps in and ensures that the process is followed. Additionally, Rational Team Concert provides a quick fix to the problem by providing a link to run the local JUnit tests (Figure 14-8).
Figure 14-8 Team Advisor in Rational Team Concert preventing a process rule from being broken
Clearly, all projects are not the same, and you must have flexibility to institute the rules that matter based on your project needs. Additionally, as your project progresses or your needs change, your process also must change with you.
541
For example, you might find the need for rapid sharing of project changes with little to no approval or review in the beginning of your project and later. As your project or milestone nears completion, you might find that you need new changes reviewed before they are delivered to the team area (Figure 14-9).
Figure 14-9 Team Advisor in Rational Team Concert preventing delivery of a change set without prior approval
When you enforce a process, it is critically important that you do not block or slow the progress of project work unnecessarily. The difference between process enactment and simple process enforcement is that process enactment provides you with contextual guidance to resolve a process misstep. Process enactment in Rational Team Concert does not force team members into a rigid mold, but rather it advises them about process missteps and provides advice about potential resolutions.
542
With the enforcement of the change set approval before promotion requirement, Rational Team Concert provides a direct link to submit the change set for review (Figure 14-10). It aligns the team member with the process rules that are in effect and provides them with guidance when there is a misstep.
Figure 14-10 Direct links from Rational Team Concert to resolve process mis-steps and realign with the process
All aspects of a software development and delivery process are not executable. Process enactment must be supported with textual descriptions in order to establish team understanding of the process.
543
procedures for new and changing team members. For larger teams or complex projects, the process can be represented formally, outlining the best practices and standards that the organization has wholly adopted and are expected to be implemented on every project. Process descriptions must be modular and consumable in pieces. Having smaller chunks makes them more reusable (Figure 14-11) and easier to customize for individual projects. For example, the OpenUP is organized at a top level by disciplines, work products, roles, and the life-cycle process (Figure 14-12). These form the base hierarchy and are further organized into folders or categories, making the process descriptions easy to navigate and use. Further, the relationships between the process elements are maintained. For example, you can navigate from a work product, such as a Requirements Management Plan, to the roles that work with the work product such as the Business Analyst. This helps everyone understand how their work is interrelated and used by other team members. Organizational expectations should be that the defined process fits to the project, not vice versa.
High
Reusability
Figure 14-12 Organization of processes and best practices into easily separable chunks by using the OpenUP and the Eclipse process framework
Your process description should go hand in hand with your process implementation. The greatest risk to a lack of process adoption is too much overhead or effort that is required by a project team to follow it. Making the implementation of the process simple and a normal part of software delivery makes the adoption of the process consumable by project teams without threatening individual project goals. For example, the OpenUP description details the workflow for the Risk Work Item. This process description is implemented by the OpenUP template in Rational Team Concerts in the form of the Risk Work Item and the associated workflow. As a result, Rational Team
544
Concert makes the association and connection between the described and defined process in the process description and the implemented process enacted by the Rational team.
Figure 14-13 The OpenUP/Basic Web-based process description supplementing the project team with the details of the implemented process
545
Metrics and measurements have a life cycle, and project teams must regularly consider the ongoing value of a metric or measurement. Completed projects can help your organization determine which metrics provide the greatest benefit. These projects should be reused, and those that are not benefiting the organization should be reevaluated.
Figure 14-14 A work item type for capturing user stories in Rational Team Concert
546
Defining the user stories is a customer-centric activity, and your users or customers should be highly involved in this process. As a general rule, define stories that are small enough to be consumable and estimatable, for example, approximately 8 to 16 hours of work per story. After the complete set of stories is defined, it is are ranked in priority order in the product backlog (Figure 14-15).
Figure 14-15 Prioritizing user stories with your customers after they are defined
After the stories are ranked, the development team responsible for delivering the stories must meet to size the stories.
547
development team because software delivery involves more than writing the code. Other team members such as quality assurance, project management, release engineering, systems or service management, legal, marketing, and business subject matter experts (SMEs) should be involved. Figure 14-16 shows an example of estimating stories in Rational Team Concert.
Estimating effort
After a prioritized, estimated, elaborated product backlog of stories is established, the project team pulls stories from the product backlog into the sprint backlog. The sprint backlog is the iteration plan for the sprint. In general, a sprint can be likened to an iteration. User stories are pulled from the product backlog and planned for the sprint by adding them to the sprint backlog (Figure 14-17).
Figure 14-17 Stories taken from the product backlog and added to the sprint backlog
548
After the stories are added to the current sprint, they are then further elaborated with the tasks that are required to implement them. The tasks are initially estimated and assigned to team members (Figure 14-18).
Figure 14-18 Task estimates for stories established for each story by the assigned team member
Agile estimation of effort translates the point estimations that the team has defined for stories to a time-based unit such as days or hours. These time estimates remain imprecise until they are assigned to a team member and the team member actively manages the time estimate. The estimating activity is primarily done individually because each persons estimates for effort will be different. Estimation of effort happens after individual team members have either been assigned work or sign up to take on a new work item. The reason estimation happens after work assignment is because time estimates for completing work items vary depending on the team member that is assigned the work as in the following examples: Diedre (Work item: Fix logo on home page, 3 points) Work Estimate: 1 hour Marco (Work item: Resolve performance issue in logging service, 30 points) Work Estimate: 24 actual hours Traditional estimating and sizing are imprecise because they draw conclusions on the general amount of effort that is required to complete a task rather than their specific teams effort to complete a task. Agile estimation promotes an agile team by allowing team members to more freely work and adjust to the changing project dynamics rather than be locked into a rigid, difficult-to-change project plan. Agile estimation makes project scheduling more accurate, and as a consequence, more dynamic (Figure 14-19 on page 550). Agile estimation allows team members to truly take ownership of a work item. Each team member provides the effort estimate because this person is naturally the best one to gauge it and their estimate matters most. Team members should be encouraged to regularly review their work item estimates and adjust them judiciously. When you make an estimation, which is a responsibility that the whole team shares, the credibility and accuracy of the iteration plan increases significantly.
549
Figure 14-19 Agile estimating, planning for the team to actively manage work estimates in the project
550
Marcos team may be best suited to take on the additional work and still deliver the work that is planned for the next iteration. Figure 14-20 shows an example of a Team Velocity report.
Figure 14-20 The Team Velocity report showing how the team is performing against their planned performance
551
552
Measurements in dashboards should be visible to the entire team in a meaningful way and empower team members to act on them (Figure 14-22).
Figure 14-22 A dashboard displaying key project health reports that everyone on the team understands
553
Retrospectives give the team a chance to look back at a completed iteration and reflect on what worked well and what did not work so well. Retrospectives allow teams to absorb and express quantitative results of the project in a more natural form. They allow the team to get a sense for the project. These lessons learned can help them decide what changes to the process, if any, are necessary (Figure 14-23). During a retrospective meeting, it is important to facilitate a constructive session rather than a synopsis of past events. Focus the team on what actions can be taken to better handle similar challenges proactively in the future.
Figure 14-23 Capturing team conclusions and ways forward for project milestones by using retrospectives
554
Retrospectives can be captured in the iteration plan or in a work item or change request (Figure 14-24). Capturing retrospectives in a work item allows the team to use the product collaboration features. For example, with Rational Team Concert, the discussion and subscription work item features can be used to enable project team members to easily contribute to the retrospective. This enables a geographically distributed team to provide their input without the challenges of coordinating a real-time meeting. Team leads and team members can gather their thoughts and provide quality input on the retrospective and have a record of the entire teams feedback.
Figure 14-24 Retrospectives captured in work items or change requests to facilitate collaboration
555
556
Appendix A.
557
Philosophical principles
In this section, we present a set of philosophical principles to consider when evaluating or designing a CALM solution.
How can I more easily share the documents that others keep requesting? Who else has an artifact of interest to the work that I am attempting to complete? Who else is interested in this topic? Are there any experts I can consult? The following basic rules involve these networks of people and artifacts: People collaborate to share information and exchange ideas in the context of their current project, using a wide array of techniques such as shared bookmarks, blogs, wikis, communities, webcasts, and demo videos. People produce artifacts by using a wide array of tools. In the end, the tool itself is not important. The artifact that contains the data (and versions thereof) is what is managed. Some people and artifacts are extremely useful, an others are not. Ratings help others on the team understand the importance and value of the artifacts that are produced by the community. They can also indicate the people that provide helpful information. In the context of a conversation, a user might reference, share, or want to find artifacts that are related to the discussion. Providing URLs, shared bookmarks, or both facilitates the sharing. A change to one artifact impacts other artifacts and, therefore, the people who use them. Team members must be aware of the impact of these changes. For example, a change to a requirement might trickle all the way through design, implementation, build scripts, test cases, and scripts, causing massive rework by the entire team. If any member of the team is not aware of such a change, the project might fail to meet the business expectation. Additionally, allowing the owner of an artifact to understand the potential impact to other team members before making the change can help them manage their changes more effectively. The relationships between people and artifacts are fundamental to developing deployable software.
Solutions are rarely sunset; they are refined and maintained for years
Development tools vendors often design products to support teams that create green field implementations. The reality is that almost 75% of the IT budget is spent on managing existing applications. A CALM solution at its heart must support existing investments in software solutions. By this, it must be extremely easy to recreate a past release of the solution or to discover which version is currently running in production. Therefore, all artifacts should be treated as investments. By this we mean, that all artifacts that are created during the development of a solution should be managed and versioned in context of that solution. This goes well beyond the traditional definition of managing source code, to encompass managing the relationships between requirements, designs, models, source code, unit tests, build and deployment scripts, test plans, configurations, test cases, and results. It also involves capturing the initial business goals and objectives, along with capturing information about the operations infrastructure and transferring knowledge to the operations team for managing and monitoring. These artifacts need to stay in place but also move forward. To recreate past releases, and to adhere to regulatory requirements, the state of all of the artifacts at the end of the release must be captured and maintained. The baseline that is captured must include more than just source code. It must also include all other artifacts that contribute to the definition and history of the release, such as the requirements, test cases, test results, and so forth. To that end, capturing a baseline of all resources in the project (team members, groups, roles in addition to the artifacts) might be equally important.
Appendix A. Principles for Collaborative Application Lifecycle Management
559
At the same time, these artifacts must be reused and modified to apply to the next release of the solution. For example, the set of requirements for one release must be validated again by using the same test cases in the next release to ensure that there are no regressions. Team members and the roles they play, along with the processes they use, might also move forward. Additionally, some artifacts can be valuable enough to package into an asset that can be reused by anyone with access to it. The ability to package and promote assets, and reuse existing assets, increases the value of the artifacts, while increasing the efficiency of the IT team. As more solutions become assembled from parts of other solutions, this need for asset reuse is only expected to increase.
Simplicity first
It is easy to grow from something simple, but it is difficult to simplify something that is complex. Existing Application Lifecycle Management (ALM) solutions grow by taking existing discipline-specific tools and creating loose integrations between them. To look at it another way, each of these discipline-specific tools are already complex within their discipline. To attempt integrations simply results in increased complexity. When team members focus on a single discipline, it is extremely easy to delve deeper into that domain. However, in doing so, rather than thinking of the simplest case, teams risk building mountains of nuance until the solution is no longer usable by the people who need it the most. Rather than thinking in terms of the individual disciplines, team members must think about the entire team and how they interact and rely on each others work. The team can set its sights on best practices for software development teams. These team-based best practices lead to better understand the relationships between people and the artifacts they produce, thus allowing the team to provide a high-value innovative solution, rather than an overly complex system full of subtle nuance. The reality is that every enterprise approaches software development differently. Attempting to handle every case is an 560
Collaborative Application Lifecycle Management with IBM Rational Products
enormous and risk-filled challenge. However, by adopting core best practices as guidelines, the team can stay focused on achieving the goal of delivering a software release.
Technical principles
In this section, we provide a set of technical principles to consider when evaluating or designing a CALM solution.
561
562
563
564
Appendix B.
Configuring interoperability
In this appendix, we provide additional details a bout configuring interoperability in the Rational Application Lifecycle Management solution (ALM) by using Rational ClearQuest, Rational Team Concert, and Rational Quality Manager. In particular, we examine the configuration of the Rational ClearQuest ALM schema, the ClearQuest Connector Gateway, and the ClearQuest Connector Synchronization rules. The use of ALM interoperability integrates work assignment and iteration planning workflows across a team on the ClearQuest ALM solution and teams by using the Jazz platform tools or Rational Team Concert and Rational Quality Manager. This appendix includes the following sections: Configuring the ClearQuest ALM schema on page 566 Configuring ClearQuest ALM schema for interoperability on page 569 Configuring Jazz repositories for interoperability on page 583 Practices for using ALM interoperability on page 604 Extended ALM interoperability configuration on page 610
565
567
Path: The path that used in the previous commands might be different depending on the Rational ClearQuest installation directory.
Adding a package
To apply the ALM packages to a schema: 1. Open the ClearQuest Designer. 2. Browse the ClearQuest Schema Repository Explorer view for the schema to be modified, for example, ALM. Open the schema by logging in as an administrator. 3. Select the latest schema version (Figure B-1), and choose Revision Control Check Out.
4. Select Packages Apply Package. 5. In the Package Wizard, browse and select for the package version to apply. Click Next. 6. On the Apply Packages to Record Types page, optionally select the records types to which to apply the package. The ALM packages do not need to be applied to any record types. Click Finish. 7. Select Team Check In to validate and check in the changes to the schema. The ALMProject and ALMWork packages are now ready to be used by Rational ClearQuest.
568
Note: The exact order of the files is given in the schemas.ini file and completes the successful import of all CSV files in the [ALM] section. Each line in the INI file represents one import of a record type and the file to import from. For example, the first line of sampledata1=records,ALMAdmin,sample_alm_admin.csv imports ALMAdmin records from the sample_alm_admin.csv file. 3. Select Start Rational ClearQuest Import Tool. 4. In the import tool, select the schema connection to use for the import. Log into the database as administrator. 5. On the first page, select the record type to be imported. The record name, for example, ALMAdmin, is given in the INI file. 6. On the second page, browse to the CSV file to import from, for example \sample_db_files\sample_alm_admin.csv. The file name is given in the CSV file. Also, provide a path to a new temporary log file, for example c:\temp\import.log. 7. On the third page, click Next. 8. In the window that opens that prompts you for a field name to store unique identifiers, click No. 9. On the next page, click Next. 10.Click Finish to start the import. 11.Monitor the import summary error log.
569
570
5. In the Apply Package to Record Types window (Figure B-2), from the packages list, select a package, for example, JazzInterop, and select the desired record types from the list. Click Finish.
6. Select Team Check In to validate and check in the changes to the schema.
571
It is also possible to extend the process definitions in Rational Team Concert and Rational Quality Manager. This alternate configuration is described in Extended Jazz configurations on page 614.
Adding priorities
ALM records of type ALMTypeLabel are used to define the enumeration values for the ALMTask Property field. A set of new priority values is required to match the Rational Team Concert and Rational Quality Manager priorities (Figure B-3). The following ALMTypeLabel types should be added: High Medium Low Unassigned
Figure B-3 Extending the system-wide settings with a new priority label for high priorities
572
Note: The Types list in the Figure B-3 is empty upon creation of the label. The list contains references to type instances that reference the label, for example, the High Priority type created in the following task. ALM records of type ALMType are used to define the actual enumeration instance taking the name from the ALMTypeLabel. New ALMType records are required to be created for the High, Medium, Low, and Unassigned priorities (Figure B-4). The following new ALMType records should be added with the following fields: High ALMRecordType: ALMTask TypeLabel: High TypeIndicator: Priority Medium ALMRecordType: ALMTask TypeLabel: Medium TypeIndicator: Priority Low ALMRecordType: ALMTask TypeLabel: Low TypeIndicator: Priority Unassigned ALMRecordType: ALMTask TypeLabel: Unassigned TypeIndicator: Priority
Figure B-4 System-wide settings extended with a new high priority value
573
Figure B-5 Extending the system-wide settings with a new Resolution Code Label
574
New ALMResolutionCode records for ALMTasks with the following names and settings: Fixed Upstream ALMRecordType: ALMTask ResolutionCodeLabel: Fixed Upstream ALMRecordType: ALMTask ResolutionCodeLabel: Invalid ALMRecordType: ALMTask ResolutionCodeLabel: Remind ALMRecordType: ALMTask ResolutionCodeLabel: Wont Fix ALMRecordType: ALMTask ResolutionCodeLabel: Works for me ALMRecordType: ALMTask ResolutionCodeLabel: Later ALMRecordType: ALMTask ResolutionCodeLabel: Unresolved
Invalid
Remind
Wont Fix
Works for me
Later
Unresolved
New ALMResolutionCode records for ALMActivities with the following names and settings: Fixed Upstream ALMRecordType: ALMActivity ResolutionCodeLabel: Fixed Upstream ALMRecordType: ALMActivity ResolutionCodeLabel: Invalid ALMRecordType: ALMActivity ResolutionCodeLabel: Remind ALMRecordType: ALMActivity ResolutionCodeLabel: Wont Fix ALMRecordType: ALMActivity ResolutionCodeLabel: Works for me ALMRecordType: ALMActivity ResolutionCodeLabel: Later
Invalid
Remind
Wont Fix
Works for me
Later
575
Note: Each ALM record type must define its individual Resolution Codes values. ClearQuest interoperability synchronizes both ALMTasks and ALMActivities to Jazz Work Items. The extended Resolution Codes values are required for both ALM types. Figure B-6 shows a new resolution code added for ALMTasks.
Figure B-6 System-wide settings extended with a new Fixed Upstream resolution value
576
Configuring users
Interoperability between Rational ClearQuest, Rational Team Concert, and Rational Quality Manager requires that users who are assigned work or are participating in discussions have user records in these repositories. Users in Rational ClearQuest must be added manually. Users in Rational Team Concert and Rational Quality Manager can be created using a synchronization rule for the ClearQuest Connector. The ALMTask and ALMActivity records, participating in synchronization with Work Items, are selected by the ClearQuest Gateway by using specified selection queries. The filter parameters for the selection queries often use ClearQuest groups to identify records to be synchronized. For example, a ClearQuest group can be used to identify a team that is using Rational Team Concert or Rational Quality Manager as their prime development or test environment. When adding Rational Team Concert users to Rational ClearQuest, consider creating a group that can be used for such user identification. Note that all users in this group must be mastered at the same site where the ClearQuest Gateway is located if MultiSite is used. The ClearQuest ALM solution uses role-based workflows. New users are assigned project roles by using the project record.
577
578
Both teams have user groups, AO_Regional and AO_Test, defined in Rational ClearQuest. Basing filter queries on these groups makes the maintenance simpler and more stabile to team member changes. Note: The scenario in this book does not separate the test management repositories that are used by the enterprise test team and the external third-party solution testing team. By using filter queries based on ClearQuest groups, projects and categories can be effectively used to synchronize the desired subset of ALM assets to a third-party contributor. Based on the filter requirements, the following filter queries were configured. Also, see Figure B-7 on page 580. Filter queries for the CreditCheck component team: Owner.groups = AO_Regional (optional) Project.Name = AO_Rel2 (optional) Project.Category = CreditCheck Filter queries for the Account Opening test team: Owner.groups = AO_Testers and AO_3rd_Party Optional: Project.Name = AO_Rel2 Tip: The use of record IDs, rather than name fields, provides a more robust configuration that is resilient to name changes.
579
d. Right-click Project and select Use Project. e. Right-click Project.Category and select Group Project with Project.Category. f. Right-click the top most filter and select Or. Then click Next. g. Click the plus icon next to the Or grouping to expand the filter list. Then click the Owner.groups filter (Figure B-7). h. In the Define Filters pane, click the Values button. i. Select the appropriate groups with members of the team that will use Rational Team Concert and click OK. j. Repeat steps h and i for the two additional filters of Project and Project.Category and click Next. k. Optional: Select any display fields, although they are ignored by the connector. Click Finish.
Figure B-7 Rational ClearQuest query for Rational Team Concert Interop Synchronization
4. Repeat the first three steps to create a new query named CreditCheck.ALMActivity in the AccountOpening query folder. Base the query on the ALMActivity record type, and use the same query filter definition. 5. Proceed and create Test.ALMTask and Test.ALMActivity filter queries in the Quality Manager query folder. For the Owner.groups filter, select the values AO_Testers and AO_3rd_Party as group names. Tip: Before proceeding, run your new query to validate that the return result set contains all, but only, the ALM Activity records that you want to synchronize with Rational Team Concert.
580
581
Optional: Creating optional Rational Team Concert and Rational Query Manager users in the ClearQuest Gateway
The outgoing synchronization processes in Rational Team Concert and Rational Quality Manager logs into the ClearQuest Gateway for synchronization. By default, the Rational Team Concert and Rational Quality Manager servers use the ADMIN account. Optionally, you can create one or more users in the ClearQuest Gateway for the Rational Team Concert and Rational Quality Manager server logins. To create additional users in ClearQuest Gateway: 1. Open the tomcat-users.xml file from the IBM\ClearQuestConnector\gateway\tomcat\conf directory. 2. Add or edit the user definitions as follows: <user username="rtc" password="rct" roles="CQConnector" /> <user username="rqm" password="rqm" roles="CQConnector" /> 3. Save the file and restart the ClearQuest Connector server. Attention: Secure passwords should be provided when configuring new ClearQuest Gateway users.
582
com.ibm.rational.interop.pollingPeriod=10 cq.dbSetDbName=CQALM/SAMPL cq.userid=cqconnector cq.password=cqconnector com.ibm.team.uris=https://cqconnector:cqconnector@localhost:9443/jazz;https://c qconnector:cqconnector@localhost:9444/jazz cq.queryTreeRoot=Public Queries/CQConnector 4. Save the changes.
583
5. Save the new user. 6. Open the tomcat-users.xml file from the IBM\JazzTeamServer\server\tomcat\conf directory and validate that cqconnector is defined. If this user is not defined, add a new user definition: <user username="cqconnector" password="cqconnector" fullName="cqconnector" roles="JazzUsers"/> Note: Secure passwords should be provided when configuring the new cqconnector user. 7. Save the file 8. Open a Command Prompt window.
584
9. Run the repotools.bat command from the IBM\JazzTeamServer\server directory to encrypt passwords: repotools -convertTomcatUsers tomcatUsersPath=tomcat/conf/tomcat-users.xml 10.Rename the file from tomcat-users.xml.converted to tomcat-users.xml.
585
also specify the type of extended transformation that is provided by synchronization managers on the ClearQuest Gateway. The main synchronization in this example is made with ALMTasks and ALMActivities synchronized with Work Items. New ALMTasks and ALMActivities that are created as part of the iteration planning are created in the connected Jazz repositories. Note that new Work Items created in Rational Team Concert or Rational Quality Manager are not synchronized to Rational ClearQuest. Such items are considered local to the component or practice team. The synchronization uses a simple mapping of types. By default, ALMTasks are synchronized as Work Items of type Task. ALMActivities are synchronized as Work Items of type Defect. A synchronization rule is defined for each record. Synchronization of the record fields requires additional helper rules. A more generic type of mapping for ALMActivities to a Activity Work Items type is possible as an alternate configuration. Configuring and deploying synchronization rules entails the following tasks: Creating new repository connections Creating new or import existing synchronization rules Configuring the Jazz server interoperability properties Enabling interoperability permissions The Rational Team Concert client is required to configure new repository connections to Jazz repositories and to configure synchronization rules. Administrators of Rational Team Concert and Rational Quality Manager servers require the Rational Team Concert client to perform the configuration steps. For further documentation and instructions about creating synchronization rules, see the following Web site or the Rational Team Concert and Rational Quality Manager help system provided with the product: http://jazz.net
586
6. Click OK to save the changes. 7. Repeat steps 4 on page 586 through 6 to create external repository connections to additional repositories. In the example in this book, we configured connections to both the Rational Team Concert and Rational Quality Manager repositories. Give each connection a unique name. Figure B-10 shows an example of creating an external repository connection.
587
To import an existing synchronization rule: 1. In the Synchronization Rules view, select the Project Area name, for example, AccountOpening, and select Import Synchronization Rules. 2. Select the Use existing external repository connection option and click Finish. 3. Browse the file system for synchronization rules to import. Select one or more synchronization rules and click Open to import. 4. Expand the project area folder and open the imported synchronization rules in the Synchronization Rules view. 5. Optional: Edit the Name field to match the ClearQuest name of your dbset, for example com.ibm.rational.clearquest.myALM.ALMTask. 6. Click the Save button to save the changes. Attention: Only new synchronization rules can be imported. If the synchronization rule name already exists for your external connection, then import is not allowed. Use care when deleting and re-importing synchronization rules because this might corrupt your repository data. Deleting a synchronization rule deletes all of the connector information for all items that used that synchronization rule and all connected items become disconnected. For practices on how to update an existing synchronization rule, see Importing existing synchronization rules on page 587.
588
Figure B-10 shows the synchronization rule editor in Rational Team Concert.
com.ibm.rational.clearquest.CQALM.ALMTypeLabel
The com.ibm.rational.clearquest.CQALM.ALMTypeLabel helper synchronization rule synchronizes Priority reference fields. Table B-1 lists the synchronization rule properties for ALMTypeLabel.
Table B-1 ALMTypeLabel synchronization rule properties Synchronization rule property Item type Item type qualifier Item manager External repository External manager External type <none> CQALM ClearQuest Manager (non-user records) ALMTypeLabel - com.ibm.rational.clearquest Property value <none>
589
Table B-2 lists the synchronization rule property mappings for ALMTypeLabel.
Table B-2 ALMTypeLabel synchronization rule property mappings Item ID Item property I/O Ext ID X Element property Name
com.ibm.rational.clearquest.CQALM.ALMResolutionCodeLabel
The com.ibm.rational.clearquest.CQALM.ALMResolutionCodeLabel helper synchronization rule synchronizes ResolutionCodeLabel reference fields. Table B-3 lists the synchronization rule properties for ALMResolutionCodeLabel.
Table B-3 ALMResolutionCodeLabel synchronization rule properties Synchronization rule property Item type Item type qualifier Item manager External repository External manager External type <none> CQALM ClearQuest Manager (non-user records) ALMResolutionCodeLabel com.ibm.rational.clearquest Property value <none>
Table B-4 lists the synchronization rule property mappings for ALMResolutionCodeLabel.
Table B-4 ALMResolutionCodeLabel synchronization rule property mappings ID Item property I/O ID X Element property Name
com.ibm.rational.clearquest.CQALM.users
The com.ibm.rational.clearquest.CQALM.users synchronization rule synchronizes user records in Rational ClearQuest with contributors in Rational Team Concert. Table B-5 lists the synchronization rule properties for CQALM.users.
Table B-5 CQALM.users synchronization rule properties Synchronization rule property Item type Item type qualifier Item manager External repository External manager External type Contributor manager CQALM ClearQuest Manager (user records) users - com.ibm.rational.clearquest.CQALM Property value Contributor
590
Table B-6 lists the synchronization rule property mappings for CQALM.users.
Table B-6 CQALM.users synchronization rule property mappings ID Item property EmailAddress Name X UserId I/O in in in X ID Element property email fullname login_name
com.ibm.rational.clearquest.CQALM.Attachment
The com.ibm.rational.clearquest.CQALM.Attachment synchronization rule synchronizes record attachments in Rational ClearQuest records with Work Item attachments in Rational Team Concert. Attachments can be applied to record types by using the ClearQuest Attachments package. The ALM schema has attachments that are already configured. The Attachments synchronization rule is invoked from other rules that mapping ClearQuest records with Work Item types, for example ALMActivity. Table B-7 lists the synchronization rule properties for CQALM.Attachments.
Table B-7 CQALM.Attachments synchronization rule properties Synchronization rule property Item type Item type qualifier Item manager External repository External manager External type Work Item Attachments Manager CQALM ClearQuest Manager (non-user records) attachments com.ibm.rational.clearquest.CQALM Property value Attachment
Table B-8 lists the synchronization rule property mappings for CQALM.Attachments.
Table B-8 CQALM.Attachment synchronization rule property mappings ID Item property Content Name I/O In/Out In ID Element property Content file-name
591
com.ibm.rational.clearquest.CQALM.ALMActivity
The com.ibm.rational.clearquest.CQALM.ALMActivity synchronization rule synchronizes ALMActivities records in ClearQuest with Work Items in Rational Team Concert. Table B-9 lists the synchronization rule properties for ALMActivity.
Table B-9 ALMActivity synchronization rule properties Synchronization rule property Item type Item type qualifier Item manager External repository External manager External type Property value WorkItem - com.ibm.team.workitem Defect a Work Item Manager CQALM ClearQuest Manager (non-user records) ALMActivity - com.ibm.rational.clearquest.CQALM
a. An alternate configuration can be used to map ALMActivities to Work Items of type Activity. See Adding an Activity Work Item type on page 617.
Important: When multiple Rational ClearQuest record types are mapped to Work Items, the Item type qualifier synchronization property is required to be unequally set for each synchronization rule. For ALMActivity synchronizations, the Item type qualifier must be set to Defect. For additional configuration considerations using an Activity type, see Adding an Activity Work Item type on page 617. Table B-10 lists the synchronization rule property mappings for ALMActivity.
Table B-10 com.ibm.rational.clearquest.CQALM.ALMActivity synchronization rule property mappings ID Item property I/O ID Element property Priority ResolutionCode Project Category Type modifiedBy Attachments Comments Description Filed Against Owned By Parent Related Resolution In/Out In/Out In/Out In In/Out In In Out Attachments Notes_Log Description Project.Category.Name Owner Task ActivitiesRelated ResolutionSummary
592
ID
ID
a. An alternate configuration can be used to map the ALMActivity type to a Work Item Subtype property. b. An alternate configuration can be used to map ALMActivities to Work Items of type Activity.
com.ibm.rational.clearquest.CQALM.ALMTypeLabel
<none>
com.ibm.rational.clearquest.CQALM.ALMResolutionCod eLabel
<none>
Value transformer
com.ibm.rational.clearquest.CQALM.ALMProject
<none>
593
com.ibm.rational.clearquest.CQALM.ALMCategory
<none>
com.ibm.rational.clearquest.CQALM.ALMTypeLabel
<none>
com.ibm.rational.clearquest.CQALM.Attachment
Work Item Attachments Transformer
594
com.ibm.rational.clearquest.CQALM.users
Work Item Comments Transformer
595
596
Note: An alternate configuration can be used to map the ALMActivity type to a Work Item Subtype property.
597
Note: An alternate configuration can be used to map ALMActivities to Work Items of type Activity.
com.ibm.rational.clearquest.CQALM.ALMTask
The com.ibm.rational.clearquest.CQALM.ALMTask synchronization rule synchronizes ALMTask records in ClearQuest with Work Items in Rational Team Concert. Table B-32 lists the synchronization rule properties for ALMTask.
Table B-32 ALMTask synchronization rule properties Synchronization rule property Item type Item type qualifier Item manager External repository External manager External type Property value WorkItem - com.ibm.team.workitem Task Work Item Manager CQALM <your schema connection> ClearQuest Manager (non-user records) ALMTask - com.ibm.rational.clearquest.CQALM
598
Important: When multiple ClearQuest record types are mapped to Work Items, the Item type qualifier synchronization property must be unique for each synchronization rule. For ALMTask synchronizations, the Item type qualifier must be set to Task. For additional configuration considerations, see Adding a new Type category on page 621. Table B-33 lists the property mappings for ALMTask.
Table B-33 com.ibm.rational.clearquest.CQALM.ALMTask synchronization rule property mappings ID Item property I/O ID Element property Category Project Type Priority ResolutionCode modifiedBy Attachments Comments Description Filed Against Owned By Priority Related Resolution Resolution Status Tags a Summary Type In/Out In/Out In/Out In In/Out In/Out In Out Out Out In In/Out In Attachments Notes_Log Description Project.Category.Name Owner Priority.Name TasksRelated ResolutionCode.Name ResolutionSummary State Type.Name Headline
a. An alternate configuration can be used to map the ALMType type to a Work Item Subtype property.
com.ibm.rational.clearquest.CQALM.ALMCategory
<none>
599
com.ibm.rational.clearquest.CQALM.ALMProject
<none>
com.ibm.rational.clearquest.CQALM.ALMTypeLabel
<none>
com.ibm.rational.clearquest.CQALM.ALMTypeLabel
<none>
com.ibm.rational.clearquest.CQALM.ALMResolutionCod eLabel
<none>
Value transformer
600
com.ibm.rational.clearquest.CQALM.Attachment
Work Item Attachments Transformer
com.ibm.rational.clearquest.CQALM.users
Work Item Comments Transformer
601
602
Note: An alternate configuration can be used to map the ALMTask type to a Work Item Subtype property.
603
604
Tip: Additional log traces from the Jazz server can be configured by editing the log4j.properties file in the \JazzTeamServer\server directory. Add the following line: log4j.logger.com.ibm.team.interop=DEBUG
Setting permissions
The process configuration in Rational Team Concert and Rational Quality Manager specifies the actions that are permitted for each role. A user can perform all actions granted to any of their assigned roles. All users in a repository have the Everyone role.
605
When configuring ALM interoperability, validate that the user roles that have responsibilities to administer remote connections, and synchronization rules have the appropriate permissions enabled. See Figure B-12.
To enable project-wide permissions to manage synchronization rules: 1. Select the Process Configuration tab in the AccountOpening Project Area and expand Project Configuration Permissions. 2. In the Permissions view, select Everyone. Validate the Item Connectors, and select the appropriate permissions for the project-wide settings. 3. Select other team roles and set the appropriate Item Connectors permissions.
606
4. Expand Team Configuration Permissions. 5. Repeat steps 2 on page 606 and 3 on page 606 to modify the permissions for team areas to establish connections and synchronization. See Figure B-13.
607
Be aware that the ClearQuest Connector must complete both incoming and outgoing synchronization to establish a stabile state. Modifying records during the synchronization often results in a conflict state. Do not modify items that are in a state of Pending outgoing. See Figure B-14.
608
6. To re-run synchronization, click the Retry Incoming Synchronization or Retry Outgoing Synchronization button, for INCOMMING_ERROR or OUTGOING_ERROR respectively. See Figure B-15.
After the synchronization succeeds, the item is removed from the Synchronization Status view. Tip: Synchronization can be disabled for items by select Stop Synchronizing. Use this function only after considering the implications of breaking the synchronization between the Rational ClearQuest and Rational Team Concert items.
609
items that are configured for synchronization, but those items are not connected to any external objects. To update a new version of a synchronization rule, practice using the Import button in the upper right area of the synchronization rule editor (Figure B-16).
610
5. Add new fields to ALMTask: a. Select Record Types ALMTask Fields, right-click and select New Field. b. In the New Field window, enter the following values: Field name: RTCPlannedFor Type: Short String Field name: RTCEstimate with a Type of Short String Field name: RTCDueDate with a Type of Date
6. Add a Perl Value Change hook for RTCPlannedFor: a. With Record Types ALMTask Fields selected, locate the ValueChanged cell for the RTCPlannedFor field. Select the cell and choose Scripts Perl. b. Enter the script code as shown in Example B-2 into the script editor.
Example: B-2 rtcplannedfor_ValueChanged hook
sub rtcplannedfor_ValueChanged { my($fieldname) = @_; # $fieldname as string scalar # record type name is ALMTask # field name is RTCPlannedFor $session->OutputDebugString("\nEntering RTCPlannedFor value changed hook\n"); my $RTCPlannedFor = $entity->GetFieldValue("$fieldname")->GetValue(); $session->OutputDebugString("\nRTCPlannedFor value is $RTCPlannedFor\n"); my @PhaseIterLBL = split(/\//, $RTCPlannedFor); if ($#PhaseIterLBL == 1) { $session->OutputDebugString("\nSetting PhaseLabel: $PhaseIterLBL[0] and IterationLabel: $PhaseIterLBL[1] on ALMTask\n"); my $failure=$entity->SetFieldValue("PhaseLabel","$PhaseIterLBL[0]"); my $failure=$entity->SetFieldValue("IterationLabel","$PhaseIterLBL[1]"); } } 7. Add a new base action for ALMTask record type: a. Select Record Types ALMTask States and Actions Actions, right-click and select New Action. b. In the New Action window, for Name, type SetRTCPlannedFor, and for Type, select BASE. Click Finish. c. In the Record Actions editor, click the SetRTCPlannedFor or Validation cell and select SCRIPTS Add to add a Perl script.
611
d. In the script editor, enter &ALMTask_SetRTCPlannedFor; as highlighted in Example B-3. Example B-3 shows how the hook code looks after you add the single statement.
Example: B-3 ALMTask_Validation hook
sub almtask_Validation { my($actionname, $actiontype) = @_; my $result; # $actionname as string scalar # $actiontype as long scalar # $result as string scalar # action is SetRTCPlannedFor # record type name is ALMTask &ALMTask_SetRTCPlannedFor; return $result; } 8. Add a new global script: a. Select Global Scripts Perl, right-click and select New Script. b. Enter the script name as ALMTask_SetRTCPlannedFor. c. Right-click and select Open Script. d. Enter the script code from Example B-4 into the script editor.
Example: B-4 ALMTask_SetRTCPlannedFor script
sub ALMTask_SetRTCPlannedFor { my $PhaseLBL = $entity->GetFieldValue("PhaseLabel")->GetValue(); my $IterationLBL = $entity->GetFieldValue("IterationLabel")->GetValue(); if ($PhaseLBL && $IterationLBL) { my $failure=$entity->SetFieldValue("RTCPlannedFor","$PhaseLBL/$IterationLBL"); } } e. Change the scripting language by selecting ALM Version, right-clicking, and selecting Properties. In the Properties view, select Windows or UNIX scripting and choose PERL. Note: Users who use Basic on Windows instead of Perl should provide a similar hook in Basic. 9. Select File Save to save the changes. 10.Select ALM Version, right-click and select Revision Control Check-In.
612
3. In the Define Property Mapping window, set the values as provided in Table B-54.
Table B-54 com.ibm.rational.clearquest.CQALM.ALMTask synchronization rule property mappings ID Item property Planned For Estimate Due Date I/O In/Out Out Out ID Element property RTCPlannedFor RTCEstimate RTCDueDate
4. Click OK to add the new mapping. 5. Complete the Mapping details section by using the values that are provided in Table B-55 and Table B-56.
Table B-55 Planned For synchronization rule properties Synchronization rule property Reference synchronization rule Value transformer <none> Property value
Table B-56 Planned For property value mappings Item value Inception Iteration I1 Elaboration Iteration E1 Construction Iteration C1 Transition Iteration T1 External value Inception/I1 Elaboration/E1 Construction/C1 Transition/T1
Note: The mapping values used in Table B-56 are valid when using OpenUP. If other processes are used in the ClearQuest ALM solution, or in Rational Team Concert and Rational Quality Manager, the values must be edited. 6. Click Save to save and deploy the updated synchronization rule.
613
3. Define the property mappings for Estimate and Due Dates. The values are provided in Table B-57 on page 614, Table B-58, and Table B-59.
Table B-57 Property mappings added to the ALMActivity synchronization rule ID Item property Estimate Due Date I/O Out Out ID Element property RTCEstimate RTCDueDate
Table B-58 Estimate synchronization rule properties - Estimate Synchronization rule property Reference synchronization rule Value transformer Timestamp/Days Transformer Property value
Table B-59 Estimate synchronization rule properties - DueDate Synchronization rule property Reference synchronization rule Value transformer Timestamp/Days Transformer Property value
614
5. In sequence, select each Priority enumeration value, click Edit, and rename the priority values as indicated in the following list and shown in Figure B-17: For High, type a name of P1 - Urgent. For Medium, type a name of P2 - Important. For Unassigned, type a name of P3 - Moderate. For Low, type a name of P4 - Low.
6. From the Default Literal list, choose P3 - Moderate. 7. Click the Save button to save and deploy the changes. Important: The ClearQuest Connector synchronization rules require a literal match between Priority enumerations in Rational ClearQuest, Rational Team Concert, and Rational Quality Manager.
Figure B-17 Modifying Priority labels in Rational Team Concert to define a consistent classification across the integrated ALM solution
615
ALMResolutionCodeLabels
The ClearQuest ALM solution and the Jazz process definitions both contribute with unique resolution codes. The following resolution codes are provided by the ClearQuest ALM: Complete Duplicate Fixed Rejected Unreproducible Works as Designed To modify the resolution codes in Rational Team Concert: 1. Click the Process Configuration tab in the AccountOpening Project Area (Figure B-18). 2. Expand Project Configuration Configuration Data Work Items Workflows. 3. Modify the Resolutions list, by choosing Remove and Edit to create a match between the available resolution codes in ClearQuest ALMResolutionCodeLables and the Resolutions in the Jazz process configuration. 4. Click Save to save and deploy the changes.
616
617
Figure B-19 shows the new Activity types that are added to the process specification.
Figure B-19 Adding a new Activity work item type to the process configuration
618
Figure B-20 shows the new Subtype attribute that is added to the Work Item editor presentation.
Figure B-20 Adding the Subtype attribute to the Work Item editor presentation
619
Figure B-21 Modifying the ALMActivity Synchronization Rule to map the Type.Name property to the new Subtype property
Make the following changes to the com.ibm.rational.clearquest.CQALM.ALMActivity synchronization rule: 1. 2. 3. 4. 5. 6. 7. Open the com.ibm.rational.clearquest.CQALM.ALMActivity synchronization rule. Select the mapping of the Tags item property and the Type.Name external property. Replace the Tags item property with the new Subtype item property. Select the mapping of the Type item property. In the Value Mappings list, select defect mapping and click Change. In the Define Value Mapping window, replace defect with the activity value. Click OK. Click Save to save the changes to the synchronization rule.
Make the following changes to the com.ibm.rational.clearquest.CQALM.ALMType synchronization rule: 1. 2. 3. 4. Open the com.ibm.rational.clearquest.CQALM.ALMType synchronization rule. Select the mapping of the Tags item property and the Type.Name external property. Replace the Tags item property with the new Subtype item property. Click Save to save the changes to the synchronization rule.
620
621
In some cases, it is beneficial to create groups of Work Item types, organized by Work Item Type Categories, and map a Rational ClearQuest record type to such a type category. Note that a single work item type can only be a part of one category. To create a new Type Category for a Task, while keeping a Defect, Enhancement, and Activity type in the default Work Item category: 1. Open the Select the AccountOpening Project Area and click the Process Configuration tab. 2. Add a Type category: a. Expand Project Configuration Configuration Data Work Items Types and Attributes. b. In the Work Items Types section, select the Task type and click Remove. c. In the Types and Attributes view, click the Add button to create a new Type Category. d. Enter a new Type Category Id, for example com.ibm.team.workitem.workItemType.task. Then click OK. e. With the new type category selected, in the Work Item Types section, click Add. Enter the name Task, select the task.gif icon, and click OK. f. In the Permitted Actions section, expand Work Items Save Work Items Create a work item Create a work item of a specific type. Validate that permissions are granted for a new Activity work item to be created and modified (Figure B-22 on page 621). g. Click Save to save and deploy the new permissions. 3. Add a workflow for the new Type Category: a. b. c. d. Expand Project Configuration Configuration Data Work Items Workflows. Select the Default workflow and click the Duplicate button. Type a new workflow ID, for example taskWorkflow, and click OK. Edit the name of the new workflow, for example Task Workflow.
4. Add a workflow binding: a. Expand Project Configuration Configuration Data Work Items Workflow Bindings. b. From the Type Category list, select the com.ibm.team.workitem.workItemType.task category. c. From the Workflow list, select the taskWorkflow. 5. Click Save to save and deploy the changes to the process configuration. To use the new type category in a synchronization rule, open the synchronization rule editor and choose the new type category in the Item type qualifier property. Save the changes to the synchronization rule.
622
Appendix C.
Table C-1 Rational Build Forge adapter templates Adapter template name ClearCaseBaseline.xml Description Scans a directory in a Rational ClearCase view. Writes branch and version information reported by Rational ClearCase to the Bill of Materials report. Creates a new baseline from the contents of a Rational ClearCase view. Compares the new baseline and the baseline from the previous adapter execution to identify change activity. For each change activity, writes the activity, files changed, user, date, comments, and version to the Bill of Materials report. For each changed file, writes change details (from the diff command output) to the Bill of Materials report. Type Source
ClearCaseByBaselineActivities.xml
Source
623
Description Creates a new baseline from the contents of a Rational ClearCase view. Compares the new baseline and the baseline from the previous adapter execution to identify changed files. For each changed file, writes the file name, version, date, user, and comments to the Bill of Materials report. For each changed file, writes change details (from diff command output) to the Bill of Materials report. Queries a Rational ClearCase view for changes between two dates. The default dates are the current time stamp and the time stamp of the previous adapter execution. For each changed file, writes the file name, version, date, user, and comments to the Bill of Materials report. For each changed file, writes change details (from the diff command output) to the Bill of Materials report. Creates and applies a new label to the contents of a Rational ClearCase view. Compares the new label and the label from the previous adapter execution to identify changed files. For each changed file, writes the file name, version, date, user, and comments to the Bill of Materials report. For each changed file, writes change details (from the diff command output) to the Bill of Materials report. Finds Rational ClearQuest defect records that are associated with a list of Rational ClearCase activities. For each defect record that is found, it adds job information to resolve the defect record within Rational ClearQuest if the Rational ClearQuest status allows it to be resolved. Writes the files that are associated with Rational ClearCase activity IDs and the Rational ClearQuest defect status to the Bill of Materials report. Queries a Rational ClearCase view for changes between two dates. The default dates are the current time stamp and the time stamp of the previous adapter execution. For each changed file, looks for a CrmRequest hyperlink attribute that identifies a Rational ClearQuest change ID. Attempts to resolve the change ID by adding job information to resolve the defect record in Rational ClearQuest if the Rational ClearQuest status allows it to be resolved. For each changed file, writes the file name, defect ID, defect status, and any Rational ClearQuest errors to the Bill of Materials report. Scans a CVS directory on a Rational Build Forge agent looking for changed files. Writes the changed file name, status, working version, repository version, and sticky tag to the Bill of Materials report. Queries a CVS view for changes between two dates. The default dates are the current time stamp and the time stamp of the previous adapter execution. Writes the change type, date, user name, version, and file name to the Bill of Materials report. For each changed file, writes change details (from the diff command output) to the Bill of Materials report.
Type Source
ClearCaseByDate.xml
Source
ClearCaseByLabel.xml
Source
ClearQuestCaseByActivity.xml
Defect
ClearQuestCaseByDate.xml
Defect
CVSv1Baseline.xml
Source
CVSv1ByDate.xml
Source
624
Description Applies a new tag to a CVS module. Compares the differences between the newly tagged module and a module that is tagged during the previous adapter execution. Writes the file name, revision, state, date, time, change author, and commit comments to the Bill of Materials report. For each changed file, writes change details (from the diff command output) to the Bill of Materials report. Queries a CVS view for changes between two dates. The default dates are the current time stamp and the time stamp of the previous adapter execution. Writes the change type, date, user name, version, and file name to the Bill of Materials report. For each changed file, writes change details (from the diff command output) to the Bill of Materials report. Queries a perforce client for changes that occurred since the adapter execution. Writes the change, date, time, user, perforce client, and comments to the Bill of Materials report. Writes change details (from the diff command output) to the Bill of Materials report. Queries a perforce client for changes that occurred since the last repository revision. Writes the change, date, time, user, perforce client, and comments to the Bill of Materials report. Writes change details (from the diff command output) to the Bill of Materials report. Queries a folder to determine if any of its subfolders exceed a specified threshold size. For each subfolder, writes the folder size, owner, and last modified date to the Bill of Materials report. Writes to the Bill of Materials report a list of subfolders that exceeded the threshold size. Queries the folder for a StarTeam view to gather information about files. Writes the file name, status, revision, and branch to the Bill of Materials report. Uses the StarTeam API to query a StarTeam view to identify changes between the current date and the previous adapter execution. Writes the changed files and directories, user, version, date, and change comments to the Bill of Materials report. Writes change details (from the diff command output) to the Bill of Materials report. Queries subversion for repository changes that occurred between a past date and the current date. Writes the change type, revision, user, file or directory, and change date to the Bill of Materials report. Writes the file name, status, revision, and branch to the Bill of Materials report.
Type Source
CVSv2ByDate.xml
Source
PerforceByDate.xml
Source
PerforceByRev.xml
Source
Quota.xml
Source
StarTeamBaseline.xml
Source
StarTeamByDate.xml
Source
SubversionByDate.xml
Source
625
Description Queries subversion for changes to a repository that occurred between the current revision and an earlier revision. For each change, writes the revision, user, change type, file or directory path, and change date to the Bill of Materials report. Writes change details (from the diff command output) to the Bill of Materials report. Queries a visual source safe directory for changes between an earlier date and the current date. Writes change information for projects and files, which includes the project or file, version, user, date, time, project activity, file project and action information, to the Bill of Materials report. Writes change details (from the diff command output) to the Bill of Materials report.
Type Source
VSSByDate.xml
Source
626
Appendix D.
627
628
Subcategory
Description Contains rules that validate code for compliance with J2SE best practices for Java development
Abstract Window Toolkit (AWT) Casting Clonable Comparison Conditional Constructors Declaration Exceptions Initialization Loop Null Portability Reflection Serialization Statement Switch Threads J2SE security J2SE security Naming Conflicts
Contains rules that detect issues that are related to using the AWT library Contains rules that detect issues that are related to casting and coercion Contains rules that detect issues that are related to object cloning Contains rules that detect issues that are related to comparing objects and testing object equality Contains rules that detect issues that are related to the usage of conditionals Contains rules that detect issues that are related to defining and implementing constructors Contains rules that detect issues that are related to declaring constants, variables, and fields Contains rules that detect issues that are related to exception handling Contains rules that detect issues that are related to the initialization of primitives and objects Contains rules that detect issues that are related to using loops Contains rules that detect issues that are related to using null Contains rules that detect issues that are related to portability Contains rules that detect issues that are related to using reflection Contains rules that detect issues that are related to serialization Contains rules that detect general issues in statements Contains rules that detect issues that are related to using switch statements Contains rules that detect issues that are related to using threads Contains rules that validate compliance with Java security standards Contains rules that validate compliance with Java security standards in a J2SE perspective Contains rules for naming conventions for elements in Java source code Contains rules to ensure that elements are named consistently in Java source code
629
Category Performance
Subcategory
Description Contains rules that enforce suggestions for improving performance and reducing the memory footprint in Java applications
Contains rules that detect performance issues that are related to memory usage Contains rules that detect potential performance issues that are related to profiling activities Contains rules that suggest ways to improve the speed of Java code execution Contains rules that locate APIs that do not belong in Java code Contains rules that locate APIs that do not belong in Java code Contains rules that locate APIs that do not belong in Java code
630
Purpose The Factory method pattern defines an interface for creating objects without knowing the class of the object it creates. Each Factory method pattern can define the class to be instantiated based on the input parameters and specifics of the situation. The architectural discovery algorithm identifies this pattern as consisting of a Creator class, Concrete Creator subclass, Product interface, and Concrete Product object. The Creator class specifies the interface for creating a product. The Concrete Creator subclass implements this interface by instantiating a Concrete Product object. The Marker pattern declares a semantic attribute of a class. The architectural discovery algorithm identifies the Marker pattern as a single empty interface without methods or constants. The Observer/Observable pattern communicates the changes in the state of an object to other system objects. The architectural discovery algorithm identifies this pattern as consisting of Observer and Observable. The Observable class maintains a list of Observer classes that it notifies when a state change occurs. The Singleton pattern ensures that a class allows only one object instance. The architectural discovery algorithm identifies the Singleton pattern as a class with a private constructor and a public static field or method that provides global access to the instance of a Singleton class. The Utility pattern models a stateless utility function. The architectural discovery algorithm identifies Utility as a class with a private constructor that contains only static methods. The Visitor pattern performs specific operations on the elements of an object structure. The Visitor pattern allows additional operations without changing the classes of the elements on which they operate. The architectural discovery algorithm identifies the Visitor pattern as consisting of Visitor class, Concrete Visitor subclass, Element (optional) class, and Concrete Element subclass. The Visitor pattern is an interface that declares the Visit operation for every element. The Concrete Visitor subclass implements the Visitor interface and acts on each Concrete Element subclass.
Marker
Observer/Observable
Singleton
Utility
Visitor
631
632
Purpose A Package global breakable pattern is a structural antipattern for a package that has many global dependencies. Such a package carries excessive responsibility and usually contains several components with many global dependencies. A Package global butterfly pattern is a structural pattern for a package that has many global dependents. Changes to a global butterfly often have a significant impact on the rest of the system. For this reason, a global butterfly package should only consist of either basic system interfaces or utility classes. A Package global hub pattern is a structural antipattern for a package that has many immediate dependencies. Such a package carries globally excessive responsibility and serves as a utility or commonly used package. The package usually contains many components that have several global dependencies and dependents. A Package global hub pattern breaks the reusability of modules and makes the code difficult to understand and maintain. A Package local breakable pattern is a structural antipattern for a package that has many immediate dependencies. Such a package carries excessive responsibility. The package usually contains a large number of components or several components with many immediate dependencies. A Package local breakable pattern makes the code difficult to understand, maintain, and reuse. A Package local butterfly pattern is a structural pattern for a package that has many immediate dependents. Such a package serves as a utility or commonly used package. A Package local hub pattern is a structural antipattern for a package that has many immediate dependencies and dependents. Such a package carries excessive responsibility and also serves as a utility or commonly used package. The package usually contains many components that can have many immediate dependencies. Hubs make the code difficult to understand, maintain, and reuse. Hubs also make the code fragile and unstable.
633
634
Related publications
The publications listed in this section are considered particularly suitable for a more detailed discussion of the topics covered in this book.
IBM Redbooks
For information about ordering these publications, see How to get Redbooks on page 636. Note that some of the documents referenced here may be available in softcopy only. Application Lifecycle Management with SCLM on System z, SG24-7592 Global Development and Delivery in Practice: Experiences of the IBM Rational India Lab, SG24-7424 Software Configuration Management: A Clear Case for IBM Rational ClearCase and ClearQuest UCM, SG24-6399
Online resources
These Web sites are also relevant as further information sources: Jazz http://jazz.net The Eclipse Way (presentation) http://www.eclipsecon.org/2005/presentations/econ2005-eclipse-way.pdf Rational Unified Process http://www-306.ibm.com/software/awdtools/rup/ JUnit http://www.junit.org/ The Enterprise Unified Process http://www.enterpriseunifiedprocess.com/ Generalizing Specialists: Improving Your IT Career Skills http://www.agilemodeling.com/essays/generalizingSpecialists.htm Examining the Big Requirements Up Front (BRUF) Approach http://www.agilemodeling.com/essays/examiningBRUF.htm Open Unified Process (OpenUP) http://www.eclipse.org/epf/ OpenUP http://epf.eclipse.org/wikis/openup/ Application lifecycle management with ClearQuest 7.1.0.0: Part I http://ltsbwass001.sby.ibm.com/cms/developerworks/rational/library/edge/08/mar0 8/pampino-pierce/index.html
Copyright IBM Corp. 2008. All rights reserved.
635
Business Intelligence Reporting Tool (BIRT) Eclipse project http://www.eclipse.org/birt/phoenix IBM Rational ClearQuest general schema design performance http://www.ibm.com/developerworks/rational/library/07/0717_patel/index.html Rational technical resources and best practices for the Rational software platform from IBM developerWorks http://www.ibm.com/developerworks/rational Jazz Platform Technical Overview (sign-on required) https://jazz.net/learn/LearnItem.jsp?href=content/docs/platform-overview/index. html Manifesto for Agile Software Development http://agilemanifesto.org How to use the Scrum project management method with IBM Rational Team Concert and the Jazz platform http://www.ibm.com/developerworks/rational/library/08/0701_ellingsworth/index.h tml?ca=drs-
636
Index
Symbols
.bom command 381 .include statement 385 .scan command 377 .source command 335, 383 asset synchronization 578 fundamentals 5 market changes 16 people, process, information, tools 4 process formality 534 scope 4 synchronization rules 196 ALM activity 229, 519, 574 ALM interoperability 565, 604 ClearQuest Connector 604 configuration of Rational ClearQuest 195 configuration, extended 610 extended configurations 610 Rational Quality Manager 614 ALM packages adding 567 applying to a schema 568 installation 567 ALM Packages for Rational ClearQuest 119, 194, 567 ALM property 371 ALM record 571 ALM schema 509, 565566 adding packages 569 ClearQuest Schema Repository Explorer view 610 performance 204 Rational ClearQuest 188 sample database 566 ALM Task 229 ALMActivity record 570 creating for reviews 135 ALMBaseline record 67, 367 ALMCategory record 129 ALMRequest asset 67 ALMRequest record 91 submitting 127128 triaging 132 ALMTask record 72, 506, 570, 598 iteration planning 133 opening 160 ALMType record 573 ALMTypeLabel record 570 analysis 330 domain 333 rules 334 scope 334 source code 404 type 333 Analyze module 377 application complexity 38 application integration 17 application lifecycle 6 Application Lifecycle Management (ALM) 3, 16, 214, 328, 369, 387, 404, 426, 497, 533, 565 asset synchronization 578 fundamentals 5
A
access property 346 Account Opening project 49, 228, 300, 359, 426, 487, 511 area 500, 606 collaborative development platform 74 community 487, 511 release 228 repositories 74 run details 4 350 software package 512 solution 50, 222 solution asset 487, 511 team 414 UI branding 187 Act 1: Responding to a change request 60, 77 Act 2: Collaborative development 61, 211 Act 3: Enterprise integration builds 63, 313 Act 4: Managing quality 64, 387 Act 5: Delivering the solution 65, 479 actionable enterprise architecture 29 activities 91, 120121 linked requirement 174 activity cycles 35 actors 106, 222, 327, 398, 484 adapter 380381 installation 474 template 381, 623 administration 322 agile approach 189 agile development 38 changes toward 215 complexity changes 41 estimation 546 generalizing specialists 85 planning 236 points to estimate the amount of project work 547 Rational Team Concert 246 scaling 38 small teams 44, 69 agile development team 54 manager 51 products used 10 Agility at Scale 52, 67 approaches to 43 agility relativity 39 ALM (Application Lifecycle Management) 3, 16, 214, 328, 369, 387, 404, 426, 497, 533, 565 Copyright IBM Corp. 2008. All rights reserved.
637
market changes 16 people, process, information, tools 4 process formality 534 scope 4 synchronization rules 196 application suites 17 approvals ALM configuration 521 OpenUp 195 architect 71 architectural discovery algorithm 630 analysis 630 patterns 630 Architectural Discovery for Java domain 630 architectural patterns 26 architecture management and reuse 26 artifacts change request 126 traceability 245 assembly line 318 asset browsing in Rational Team Concert 266 import in Rational Team Concert 267 shared 214 asset management 220 changes toward 216 Assign To Owner option 251 audit 18, 38 audit trail 219, 316, 342, 466 authentication box 358 automated build process 332 automated code review analysis, build process 332 reference scenario 335 automated functional tests, configuration 473 automated repetitive tasks 562 automated scans 403 automated testing 402 automation 32, 81 for lab management 476 automation script 327 in-depth view 327 awareness barriers 19
B
baseline 239 records 64 Big Requirements Up Front (BRUF) approach 83 bill of materials 331 Bill of Materials report 623 bill-of-materials section 332 BIRT (Business Intelligence Reporting Tool) 178 Designer 179 Rational ClearQuest report 179 reporting 178 team health 182 BIRT Designer 179 blockers 292 Blocking report 293
blocking tasks 292 blueprint CALM 24 collaborative development 217 enterprise build management 318 enterprise software development 28 requirements definition and management 93 bottlenecks, change management 182 bottom-up approach 58 bridging roles 492 BRUF (Big Requirements Up Front) approach 83 BTBuild record 67, 339, 369 build artifacts 329 automation 330, 466 awareness 20 clarity 317, 331 quality 46 definitions 240, 310 deployment 443 failure, resolution of 64 inspection 442 management 219, 316 quality 317 records 64 result 219, 226, 241, 328, 357 static analysis 332 success, failure notification 64 test automation framework 483 trend 296 build engine 240, 309 Rational Team Concert 309 build process 63 automated code review 332 static analysis 332 build script 226, 322, 342 extending with Jazz Build Ant tasks 311 build server 317, 358, 442 build verification testing 34 build.xml script 241 business context 16 Business Intelligence Reporting Tool (BIRT) 178 Designer 179 Rational ClearQuest report 179 reporting 178 reporting team health 182 business objectives 98 test plan 146 business outcomes 17 business process 4, 17, 98, 220
C
cadence 33 CALM (Collaborative Application Lifecycle Management) 1516 best practices 30 build clarity and quality 46 discipline, life-cycle service integration 28 Rational Team Concert 228 reference scenario 47
638
requirements 85 requirements driven 45 solution 58, 558 collaboration 81 success indicators 30 team member interaction 48 third-party solutions 28 CALM blueprint 24 discipline-specific modules 26 enterprise architecture, software development governance 28 IBM and the partner ecosystem 28 project health and dashboard 25 CCMDB (Change and Configuration Management Database) 489490, 512, 561 central repository 27, 93, 411 chaining 383 change accommodation 103 approval for work items 280 detail 623 requirements, prioritizing 96 Change and Configuration Management Database (CCMDB) 489490, 512, 561 change management 77, 80, 82, 218, 317, 323 bottlenecks 182 centralized data repository 118 collaborative development blueprint 88 considerations 112 flow measurement 182 governance aspects 81 market 80 planning, measuring success 177 process 24 Rational Team Concert 219 workflows in collaborative development 82 change request 60, 77, 79, 103, 116, 399, 465, 535, 555 developer 51 life-cycle collaboration artifacts 126 management of 90 Rational ClearQuest 124 Rational RequisitePro 124 responding to 105 submitted 108 change set 217218, 226, 239, 332, 502 change sets review of 279 charts 178 CI (configuration items) 489 relationship 492 clarity, building 331 class 347, 349 ClearCase Connector 122, 124, 285 configuration 308 Rational Team Concert 72 ClearCase Synchronized Streams 124, 288 configuration 308 ClearCaseSnapshot adapter template 383 ClearQuest ALM 227, 566 query 509
record 574 record type 448, 578 reporting 177 system-wide settings 568 ClearQuest ALM configurations, extended 610 ClearQuest ALM schema 72, 229, 566, 569 configuration 194, 566 configuration for OpenUp 195 essential concepts 120 ClearQuest ALM schema for interoperability 195, 570 configuration 569 system-wide settings 571 ClearQuest ALM solution 119, 194, 228, 497, 511, 565566 ALMRequest 91 ClearQuest Connector 122, 448, 477, 521, 565, 581 ALM interoperability 604 configuration 124, 309 Jazz platform-based repositories 72 synchronization rule 577 work assignment 123 ClearQuest Connector Gateway configuration 196 ClearQuest Gateway 196, 577, 581 connection 586 dedicated user 582 log traces 604 Rational Query Manager users 582 Rational Team Concert 582 server 74, 581 server use 583 synchronization managers 196, 586 user 582 users 582 ClearQuest Manager 589 cleartool command 381 client logging 206 closed loop process 173 code analysis 64, 226, 330 code analysis and review planning 333 analysis domain and type 333 analysis rules 334 scope of analysis 334 code review 218, 279, 330, 404, 627 request 278 scenario 335 collaboration 5, 30, 43, 81, 88, 92 code review and analysis standards 335 reusable assets 261 Collaborative Application Lifecycle Management (CALM) 1516 best practices 30 build clarity and quality 46 discipline life-cycle service integration 28 Rational Team Concert 228 reference scenario 47 requirements 85 requirements driven 45 solution 58, 558 collaboration 81
Index
639
success indicators 30 team member interaction 48 third-party solutions 28 collaborative asset management 229 collaborative development 27, 61, 211, 213214 change management workflows 82 changes toward 214 changing market 214 considerations 227 core capabilities 218 life-cycle collaboration 286 market trends 214 planning, measuring success 288 Rational Team Concert 217 reference scenario 213, 221 Unified Change Management (UCM) 228 collaborative development blueprint 217 change management 88 team health 178 collector 354 community 258 competitive advantage 18 complexity choice of process 42 choice of tools 41 compliance 18, 38 scans 396, 403 compliance scans 403 component 239 health monitoring 253 component team 51, 211, 213, 222, 327, 483, 486, 500 compound reports 178 configuration ALM for approvals 521 ALM for retrospectives 524 automated functional tests 473 ClearCase Connector 308 ClearCase Synchronized Streams 308 data 506 Rational Team Concert 471 section 506 synchronization rules 585 configuration items (CI) 489 relationship 492 confirmatory testing 37 connectors 122 construct 321 Construction phase 36, 56, 395, 415, 483 final iteration 58 iteration 7 content change 104 continuous improvement 33, 82, 214 contributors in Rational Team Concert 587 core site 73 coverage analysis 101, 103 cqconnector user 581, 584 Rational ClearQuest 582 Rational Quality Manager 582 Rational Team Concert 582 cqconnector.properties 578
cross-organizational stakeholders 220 crosstabs 178 cross-team adoptions 301 cross-team expectations 301 customer 95
D
dashboard 411, 551 Data Security Standards (DSS) 403 decision making 551 Defect Arrival and Resolution report 463 definition process 99 definitive media library 489 definitive software library (DSL) 489 delivery 117, 483 operations 489 solution integration 285 work item 283 deployment 483 automating 336, 338 challenge 337 Rational Quality Manager 471 Rational Team Concert 302 synchronization rules 585 deployment record Rational ClearQuest 339 deployment record in Rational ClearQuest 338 Description field 373 design patterns rule category 630 detailing 99 developer 70 change request 51 testing 34, 466 development activity cycles 35 costs 18 cycle, iteration 36 efficiency 18 iteration plan 109 lead 70, 222, 333, 484 line 237 managers 13 organization 230, 331, 482 process 4, 214, 219, 500 OpenUP 58 team 214, 337, 343, 391, 402, 471, 482, 497498, 547548, 558 challenges 19 diagnostics core tracing 205 diff command output 623 discipline-specific modules 26 discovery library adapter (DLA) 492 distributed development 17 changes toward 215 distributed teams 73 distribution 31, 81 archive 328, 357, 512 DLA (discovery library adapter) 492 documentation 99 documents 178
640
download link 487, 511 DSL (definitive software library) 489 DSS (Data Security Standards) 403
E
effort estimation 548 Elaboration phase 36 element property mapping settings 593 e-mail notification 383 end game 485, 499 enterprise build 63 build management 27, 316 integration 318, 341 solution team 51 enterprise ALM solution 186, 301, 379, 470, 520 reference architecture 186 software configuration 186 enterprise architecture 4, 22, 558 architectural patterns 26 software development governance 28 enterprise build management changing market 316 considerations 329 reference scenario 325 enterprise build management blueprint 318 enterprise integration build 63, 313, 357 enterprise software development blueprint 28 environment property 347 environment variable 321, 356 environments 322, 351 section in test plan 147 evaluation 104 Execution 418 execution record 419 status 469 steps 434 Execution and Defects by Owner report 469 Execution results 423 Execution Status per Tester report 469 Execution Trend report 463, 469 existing processes 39 exit criteria 393, 415, 482, 498 assessment 486, 504 component delivery 484 teams progress 462 test plan 141, 393 extended ALM interoperability configuration 610 extended ClearQuest ALM configurations 610 External Repository Connection 586
feature requirement 189 feedback 33 File Transfer Protocol (FTP) 338 filter patterns 348349 queries 578 flow 182 flow target 282 football analogy 87 frequent integration tests 330, 466 FTP (File Transfer Protocol) 338 functional barriers 20 functional change 104 functional test 57, 396, 402, 423, 474, 507 automated 402 functional verification test (FVT) 87 FVT (functional verification test) 87
G
gap analysis 101 GDD (Geographically Distributed Development) 82, 118 generalizing specialists 85 geographical barriers 20 Geographically Distributed Development (GDD) 82, 118 glossary 98 going live 336 governance, internal mandates 38 green-thread technique 48
H
health monitoring 253 Home module 377
I
IBM and partner ecosystem 28 IBM TechWorks 339 IDE (integrated development environment) 344 impact analysis 101 implementation task assigning 133 Import Synchronization Rules 588 improvement, continuous 33, 82, 214 Inception phase 36 integrated development environment (IDE) 344 integration 34 build 44, 57, 69, 315, 387, 396, 410 module 492 Rational Build Forge 311 Rational Build Forge source adapters 383 Rational ClearQuest and RequisitePro 199 Rational Team Concert and Rational ClearCase 304 stream 69, 226, 325, 466 testing 44, 69 internal governance mandates 38 interoperability adding packages to ALM schema 569 ClearQuest ALM schema 195 system-wide settings 571
F
Fail Notify property 347 failed build 63 failure project level 386 system level 385 unmaintained project 386
Index
641
Jazz repositories 583 Rational RequisitePro 197 investigative testing 57 IT Information Library (ITIL), change management process 24 IT Lifecycle Management 6 Item type qualifier 589 qualifier property 622 qualifier sync property 592 iteration 35, 56, 237 approaches 404 burndown, timeboxing scope of work 294 completion 58 Construction phase 7 development cycle 36 incorporating testing 406 management 183 testing at end 405 testing at the end 405 tracking a single request 8 iteration plan 60, 220221, 236, 306, 486, 497, 504, 548, 610 Rational Team Concert 249, 504 updating for work item 137 updating the project plan 108 Iteration Plan view 289 iteration planning 8889, 218, 465, 497, 565 ALMTask record creation 133 iteration release 484, 498, 504 candidate 487, 511 new release package 487 quality exit criteria 486 team 495 iterative development 43, 68, 215, 405, 538 iterative process 56 iterative refinement 103 ITIL (IT Information Library), change management process 24
K
keyword 436 known workarounds for stakeholder requests 203
L
lab management 419, 467, 469 automation configuration 476 lab resource 419 confirmation 151 streamline 394 Lab Resource Utilization report 469 labels in Rational Team Concert 614 leadership team 485, 499 lean governance 58 lessons learned, retrospectives 553 letters 178 libraries 356, 384 libraries module 384 licenses, user 584 life-cycle asset 375, 464, 499 in scenario 66 life-cycle collaboration 66, 375, 463, 499, 519 change request 126 collaborative development 286 management 30 perspective 331 stakeholder requests 176 life-cycle service integration 28 life-cycle solution for small teams 227 lists 178 log filter 332, 348 filter patterns 348
M
Machine Free Time Rate report 470 manifest 355 manual test 395, 411, 417, 433, 436 script 417 Max Threads property 347 measure of success 376 by role 298 project lead 300 Rational Team Concert 288 measurements for project health 104 measurements, shared 214 measuring success 534 metrics capture 104 metrics, measurements driving team success 545 mobility 73 monitor quality 455, 458 multiple approach 318, 402 multiple project 228, 392, 566 consistent classification 566 My Test Execution Records 421 My Work view 254
J
Java Architectural Discovery 333 Java Data Flow Analysis 333 Java Software Metrics 333 Java source code 287 Jazz Build Ant to extend build scripts 311 Jazz platform 13, 92, 217, 233 configurations, extended 614 development plans 301 interoperability 122, 196 repositories 72, 196, 578 repositories for interoperability 583 risks 301 Jazz server 74, 584 Jazz.net 235 JazzInterop package 570 configuration 195 Jobs module 349 JUnit source code 287 JUnit test 34, 87, 226, 541
N
Name field 358, 579
642
need statement 87 needs definition 96 news feed, Rational Build Forge 475 non-user record 589 Notes 5.1 package 569570
O
Object Management Group (OMG) 489 object-oriented patterns rule category 631 ODA (Open Data Access) model 179 OMG (Object Management Group) 489 Open Data Access (ODA) model 179 Open Unified Process (OpenUP) 527, 538, 562, 583 phases 83 sizing, approvals, retrospectives 195 OpenUP 527, 538, 562, 583 configuration in ClearQuest ALM schema 195 phases 83 sizing, approvals, retrospectives 195 operations, delivery to 489 organization, requirements 99 organizational barriers 20 organizational productivity 18 organizational type 95
P
packages for interoperability to ALM schema 569 pair-programming perspective 95 Pass Notify property 347 Pass/Fail Chain property 383 Payment Card Industry Data Security Standards (PSI DSS) 403 performance ALM schema 204 module 377 Rational RequisitePro 208 Rational RequisitePro Web 208 performance test 393, 423, 488 performance testing 402 personal build 276 phases 35, 56 planning 33 activities 94 success in collaborative development 288 success in quality management 467 plans 5 platform suites 17 points, agile sizing 547 portfolio alignment 94 practices 604 shared 214 preflight build 319 prioritization of change requirements 96 problem determination 385, 477 stakeholder request 203 process 5 awareness 241 configuration in Rational Team Concert, Rational Quality Manager 605
linking roles and accessing multiple repositories 562 understanding and implementation, project success with predictability and repeatability 534 process automation framework 320, 343 process definition 528, 531, 535, 562, 572 process description, team understanding of the enacted process 543 process enactment 214, 535, 542 Rational Team Concert 536, 542 process role 539 process specification 525, 535, 618 process implementation in software delivery 535 process-enabled tool component 242 Product Lifecycle Management 6 product list 71 product owner 51, 68, 70, 220 products used 10 production environment 336, 402, 483 scaled-down version 402 Production phase 36 program office 220 project 49, 383 Account Opening 49 areas 305 Rational Team Concert 579 awareness 19 complexity 40 execution 117 health measurements 104 iteration 60 module 345, 359 rework 117 templates in Rational RequisitePro 189 velocity, aligning team capacity to project work 550 project health and dashboard 25 project iteration plan 61 confirmation 110 Rational ClearQuest 508 updating 108, 130 project leader 51, 95 collaboration on code review and analysis standards 335 project manager 13, 70, 219, 502, 521, 535, 562 products used 10 project plan 219, 549, 562 Project Starter template 190 project success 534 project team 322, 404, 466, 485, 496, 531, 535, 558, 578 continuous process improvement 609 iteration retrospective 519 member 541, 555, 577 process consumable 544 project-level failures 386 property mapping 590 setting 594 property value 355, 589 proposal evaluation 22 prototypes 98 PSI DSS (Payment Card Industry Data Security Standards) 403
Index
643
Q
quality 18 baseline from initial code review 335 monitoring 467 objectives 147 quality goal 218, 400, 415, 486, 507 quality management 27, 64, 317, 330, 387, 389390, 411, 465 additional considerations 401 considerations 401 planning, measuring success 467 problem determination 477 reference scenario 389, 397 workarounds 477 quality management blueprint 391 quality manager 335, 409, 497, 565 test plan 473 queries module 377 Quick Report 377
R
RAS (Reusable Asset Specification) 489 Rational ALM solution 82 retrospectives 518 solution delivery 497498 Rational AppScan 73, 403 Rational AppScan Tester Edition 410, 477 Rational Quality Manager 425 test script 425 Rational Asset Manager 220, 257, 483, 487, 511512 asset type configuration 490 asset types 490 release date 514 reuse repository 484 Rational Build Forge 73, 219, 328, 332, 335, 342343, 442, 497, 623 account 475 adapter 333, 379 adapter templates 623 Adaptor Toolkit 383, 623 Administration Messages window 442 agent 385, 624 bill of materials 331 build auditing capabilities 338 build process 333 core component 344 CQALM_PASS environment variable 386 ecosystem 344 e-mail notification group 335 Engine 344 Engine act 345 enterprise integration build 357 framework 343 Help 381 IDE 343 integration 311 job 443 log filter 332 management 343
messages window 475 news feed 475 problem determination 385 project 333, 367, 476, 512 repository 379 RSS feed 475 sample report 376 scenario configuration 380 server module 358 solution delivery 497 source adapter 383 integration 383 specific purpose 345 system 331, 351 task automation 67 user interface 442 Rational CALM solutions 82 Rational ClearCase 73, 323, 329, 342, 511 adapters 380 baseline 364 deployment unit 339 integration with Rational Team Concert 304 repositories 196 server 379 source code 328 synchronization 309 view 623 workspace 304 Rational ClearQuest 7273, 118, 328, 342, 471, 495496, 562, 565566 adapters 380 advantages 119 ALM artifacts 74 ALM Packages 119, 194 ALM schema 188, 566 ALM schema for interoperability 195 BIRT report 179 change request 124 ClearQuest Connectors to Jazz platform-based repositories 72 closed loop process 173 configuration for ALM interoperability 195 cqconnector user 582 deployment record 338339 diagnostics core tracing 205 feed setup for queries 202 following actions 521 group 577 integration considerations with Rational RequisitePro 209 integration with Rational RequisitePro 199 project iteration plan 508 queries 565 record 570 reporting team health 182 requirement creation 173 retrospectives 519 solution delivery 497, 521 stakeholder requests 115 system-wide settings 120
644
troubleshooting 204 Eclipse client 204 packages 204 Web client 204 Rational ClearQuest Eclipse client 179 Rational ClearQuest MultiSite configuration 569 replicas 74 Rational ClearQuest Test Manager 471 Rational development team 48 Rational Functional Tester 11, 424 8.0 410 adapter 475 adapter window 474 automated test script 402 Rational Performance Tester 11 Rational Policy Tester 11, 403 Rational Quality Manager 73, 402, 410, 423, 425, 471, 497, 562, 565 ALM interoperability 614 corresponding adapter 474 cqconnector user 582 dashboard 411, 456 deployment 471 manual test 444 Rational AppScan Tester Edition 410, 425 test script 425 Rational ClearQuest Test Manager 471 reports 457 solution delivery 497 test asset 473 tool usage 470 user accounts 472 Rational Requirements Composer 72, 117118 configuration 189 definition techniques 162 integration points with Rational RequisitePro 191 Project Starter template 190 sketching technique 162 stakeholder requests 115 template 190 usage model 187 Rational RequisitePro 72, 117 advantages 117 change request 124 close loop process 173 configuration 189 integration 472 considerations with Rational ClearQuest 209 points with Rational Requirements Composer 191 with Rational ClearQuest 199 interoperability 197 project templates 189 Rational ClearQuest requirement creation 173 requirements 189 refinement 171 stakeholder requests 115 troubleshooting 206 client logging 206
performance considerations 208 usage model 187 Rational RequisitePro Web 208 performance considerations 208 Rational RequisiteWeb 208 Rational Services Tester 11 Rational Software Analyzer 64, 73, 328, 331332, 342, 365, 404 7.0.0.0 71 adapter 380381 API 381 code analysis and review planning 333 result 365 server 333 static analysis on source code 73 Rational Team Concert 214, 218, 448, 471, 496, 536, 555, 562, 565 agile development 246 browsing assets 266 build engine 309 CALM 228 change management 219 ClearCase Connector 72 ClearQuest Gateway 582 collaborative development 217 corresponding labels 614 cqconnector user 582 deployment 302 feed setup for ClearQuest queries 202 following actions 500 importing assets 267 integration with Rational ClearCase 304 iteration plan 249, 504 Jazz platform 92 key configurations 471 measuring success 288 new contributors 587 outgoing synchronization processes 582 overview 232 priority labels 615 process configuration 605 process enactment 536, 542 project areas 579 record synchronization 570 resolution codes 616 retrospective editor 529 retrospectives 518 solution delivery 497, 525 source changes 72 source code management capabilities 218 stakeholder requests 114 synchronization rule editor 589 synchronized work items 570 Team Advisor 541 team area 605 team health 292 team health capabilities 219 work item 570 WorkItem attachments 591 Rational Team Concert Web 252
Index
645
Rational Test Lab Manager 457 Rational Unified Process (RUP) 36, 488, 562 phases 83 traditional phased-based approach 41 ratl_diagnostics table 205 read-only snapshot of test plan 415 real-time meeting 555 record synchronization 570 record type 329, 374, 566 Redbooks Web site Contact us xvii reference architecture and configuration 301, 379, 470, 520 reference scenario 11, 47, 59, 221, 325326, 347, 402, 465, 471, 481 architecture and configuration 69 automated code review and analysis 335 collaborative development 221 development process 58 enterprise build management 325 life-cycle assets 66 product integrations 72 product list 71 products used 10 project 49 quality management 397 responding to change request 105 software delivery team 50 solution delivery 483 team approach 55 team of teams 51 reference synchronization rule 593 regulatory compliance 18 release archive 487, 512 release assets 487 release delivery 67 release engineer 51, 71, 313, 315, 398, 484 products used 10 release package 487, 511 release page 487, 511 release process 342, 376 remote site 73 repetitive tasks, automated 562 reporting Business Intelligence Reporting Tool (BIRT) 178 ClearQuest ALM 177 team health in Rational Team Concert 292 reports 424 analysis results 336 Business Intelligence Reporting Tool (BIRT) 178 creation 378 existing 378 repositories 489 accessing multiple 562 Account Opening project 74 central 27, 93, 118 Jazz for interoperability 583 schema 567 separate 61, 81 shared 6
Request Response Time report 470 request type 121 requests 60, 97, 120 analysis and prioritization 112 change 108 code review 278 management 184 sizing 113 submitting 127 tracking through an iteration 8 work review 140 requirements 61, 413 CALM 85 CALM driven 45 context 97 coverage 460, 469 definition and management 111 development 84 linking to activity 174 organization 99 supplementary 189 technical refinement 171 testing 467 verification 101 requirements change 79 actors 106 workflow 106 requirements definition 4, 77, 79, 84, 94, 117, 158 changing market 83 requirements definition and management blueprint 93 requirements management 26, 84, 94, 158, 167 Big Requirements Up Front (BRUF) 83 changing market 83 strategy 96 resolution code 510, 525, 566 Rational Team Concert 616 work item 574 resource groups 420 response to change request 60 results assessment 92 retrospective editor in Rational Team Concert 529 retrospectives 33, 104, 518 ALM configuration 524 lessons learned 553 OpenUP 195 Rational ALM solution 518 Rational ClearQuest 519 Rational Team Concert 518 work items 527 reusable asset 26, 61, 220, 467, 483 collaboration 261 searching for 258 Reusable Asset Specification (RAS) 489 reviews ALMActivity record 135 test plan 146 rich text documents 98 role map 13 rule categories and subcategories reference 628 rules 334
646
Run Limit property 347 RUP 36, 488, 562 phases 83 traditional phased-based approach 41
S
sample database 72, 566567 vendor database option 567 sandbox environment 34 scaling agile methods 38 scaling to a heterogeneous platform 234 scans automated 403 security and compliance 403 static analysis 404 schedule 350 scheduling work 254 schema repository 567 scope of analysis 334 SDLC (software development lifecycle) 6 manual and mundane processes 560 security 322 security scans 396, 400, 403, 425, 450 security test 423 selector 353, 385 Selector property 347 senior line of business managers 13 server 352 authentication 356 manifest 355 server.shutdown.bat command 583 server.startup.bat command 583 service test 423 shared assets 214 shared dashboards 551 shared measurements 214 shared practices 214 shared repositories 6 shared vocabulary 214 simplicity first 560 single iteration 407 sizing OpenUP 195 project work 547 sketching 162 snapshot 239, 288 software delivery 13, 81, 214, 316, 481482, 534 CALM blueprint 24 increased business demands 482 normal course 535 normal part 544 process specifications 535 team 50 software development 4, 21, 221, 318, 364, 393, 533, 558 assembly line 319 software development lifecycle (SDLC) 6 manual and mundane processes 560 software solution 217, 396, 558 existing investments 559
solution architect 51 products used 10 solution delivery 65, 479, 495 additional considerations 488 considerations 488 Rational ALM 498 Rational ALM solution 497498 Rational Build Forge 497 Rational ClearQuest 497, 521 Rational Quality Manager 497 Rational Team Concert 497, 525 reference scenario 483 solution integration 221, 327, 484, 504 accepting changes 286 delivery 285 solution team 405 leads 53 solution test plan 61 updating 109, 139, 141 solution test team 55, 389 source code 4, 217, 316, 329, 390, 466, 559, 627 entire application assembly process 321 Rational ClearCase 328 Rational Team Concert changes 72 management capabilities 218 regular analysis 404 right version 219 static analysis 73 source code (Java and JUnit) 287 source code control 64 source code management 218 source configuration management 239, 307 sprint backlog 548 Sprint Burndown report 294 sprint burndown, timeboxing scope of work 294 stabilization testing 36 staff productivity 18 stakeholder requests 189 definition 160 known workarounds 203 problem determination 203 Rational ClearQuest 115 Rational Requirements Composer 115 Rational RequisitePro 115 Rational Team Concert 114 stakeholders 22, 95, 214, 321, 343, 488, 504 communication 117 cross-organizational 220 Start Notify property 347 static analysis 319, 324, 357, 404, 466 during the build 332 static code analysis 64 step 345 story context 49 product list 71 project 49 storyboard 12, 98, 387, 465 actors 106
Index
647
objectives 49 stream 239 structural antipattern 632 structural patterns rule category 632 submitted change request 108 success measure collaborative development 288 quality management 467 success, measurement of 376 by role 298 project lead 300 Rational Team Concert 288 supporting requirements 189 SVT (system verification test) 87 syncengine.startup.bat script 309 synchronization outgoing 605 Rational ClearCase 309 synchronization managers, ClearQuest Gateway 196 synchronization process in Rational Team Concert 582 synchronization rule editor Rational Team Concert 589 synchronization rules 196, 577, 582, 588, 609 ClearQuest Connector 577 configuration and deployment 585 file system 588 property 582 system patterns rule category 633 system test 405, 413, 466 system verification test (SVT) 87 system-level failures 385 systems development lifecycle 6 system-wide settings 120, 566, 572 ClearQuest ALM 568 configuration properties 571
T
Tag Format property 347 Tag Sync 383 tasks 120121 closing 155 management 185 updating 155 TDD (test-driven development) 34, 37, 226 team approach in scenario 55 awareness 19 distributed 73 distribution 38 globally distributed 50 size 9, 38 success, metrics and measurements 545 transparency 289 Team Advisor Rational Team Concert 541 team area 305, 420, 501, 542, 605 disable outgoing synchronization 605 Rational Team Concert 1.0 605 team build 240, 309 Team Central view 290
Team Central, component health 253 team collaboration 243 with team contributors 220 team health 33, 88, 92, 217, 219, 456, 507 assessment 458 collaborative development blueprint 178 Rational Team Concert 219, 292 reporting with Rational ClearQuest and BIRT 182 team leads 13, 53 team member 95, 214, 317, 367, 391, 395, 414, 504, 540, 555, 558 in-context discussions 570 interaction 48 weak communication environment 386 team of teams 51 Team Velocity report 295 technical principles 561 technology barriers 20 TechWorks 339 test analysis 397, 424 asset in Rational Quality Manager 473 changing market 390 execution 401, 444 management 392 quality 57 resources 442 tools 396 test case 61, 224, 317, 392, 413, 415416, 489, 502, 558 associated requirements 431 clickable link 436 code coverage 486 execution environments 438 execution work item 474 expected result 464 test plan 143 test script 444 test construction 395 execution 467 test effort 324, 392393, 410411 test environment 319, 337, 393, 413, 483, 577 test suite 444 test execution 396, 411 record 415, 438 test lab 396, 410, 488 setup 396 test lead 51, 71, 395, 471, 484 test plan 61, 397, 400, 410, 428, 484, 497, 559 business objectives 146 environments section 147 exit criteria 141, 393 quality manager 473 quality objectives 147 read-only snapshot 415 requirements section 428 review 146 sections 415 test case 143 test scripts 415 test planning 35, 392393, 411, 465
648
test script 228, 386, 397, 411, 415, 417, 436 manual test script 400 test case 444 test server 319, 387, 396, 411 test suite 417, 558 test team 55, 317, 387, 392, 410, 486, 502, 562 important function 460 important task 469 products used 11 test-driven development (TDD) 34, 37, 226 tester 51, 71 testing 34 automated 402 confirmatory 37 end of an iteration 405 functional 402 incorporated into the iteration 406 integration 44 performance 402 stabilization 36 testing effort 81, 331, 393, 413, 561 testing team 325, 397 integrated solution 325 third-party provider 317 time stamp 624 time to market 18 Tivoli Change and Configuration Management Database (CCMDB) 489490, 512, 561 Tivoli Provisioning Manager 338339 tool administrators 13 tools 6 usage in Rational Quality Manager 470 top-down approach 58 trace relationships 100 traceability 32, 81, 100 Transition phase 36, 56, 483, 499 transition to production 488 transparency 33, 88, 92 trend reports 463, 469 troubleshooting Rational ClearQuest 204 Rational RequisitePro 206
green thread 48 user accounts Rational Quality Manager 472 user interface (UI) 221, 345, 416, 566, 628 users configuration 577 licenses 584
V
validation 99 result 226 test 226 value transformer 593 variables 385 vendor database option 567 verification point 434 verification test 219, 316, 357, 391, 466 verification testing 330, 466 versioned object base (VOB) 364 viewlet 411, 506 VOB (versioned object base) 364 vocabulary, shared 214
W
Web client 431 Web dashboard 291 Web interface 220, 471 Web-based dashboard 27, 344 WebSphere Service Registry and Repository (WSRR) 230 work effort 411 review of request 140 scheduling 254 unaligned 185 work assignment 61, 225, 458, 549, 562, 565 alignment 44, 91 ClearQuest Connector 123 work configuration 509, 577 primary owner 577 work item 217, 219, 237, 414, 458, 501, 525, 546, 549, 555, 586 approving changes 280 delivery and resolution of 283 disable outgoing synchronization 605 in progress 264 management 88 management and planning 218 outgoing synchronization 605 Rational Team Concert 570 resolution codes 574 type retrospective 527 updating iteration plan 137 work management 89 practices 90 workarounds 477 worker machines 322 workflow 215, 222, 327, 397, 399, 482, 497, 535, 622 change request 127
U
UCM (Unified Change Management) 67, 121, 227, 330, 374 UI (user interface) 221, 345, 416, 566, 628 UI branding 60, 105, 127, 187, 221, 483 corporate assets 222 UI change 226 design pattern 226 UI form 225 unaligned work 185 Unified Change Management (UCM) 121, 227, 330, 374 collaborative development 228 view 67 unit test 57, 70, 226, 325, 366, 397, 442, 559 unmaintained project failures 386 usage model 187 use case 98, 189, 349, 538
Index
649
requirement change 106 solution delivery 485 WorkItem attachment 591 workspace 239, 287 creation 265 WSRR (WebSphere Service Registry and Repository) 230
X
XLM section 528
650
Back cover
An IBM blueprint for Collaborative Application Lifecycle Management Green-thread reference scenario showing the Agility-at-Scale approach IBM Jazz products incorporated into an enterprise solution
In this IBM Redbooks publication, we provide a blueprint for Collaborative Application Lifecycle Management (CALM) and show how the new IBM Rational products support this evolving market. Driven by the business demands of global software delivery, many large organizations are seeking guidance in how to incorporate agile methods. In this book, we provide a reference scenario and tool architectures for deploying the new IBM Rational products into an existing enterprise environment. We also provide a set of blueprints that define each of the key disciplines in the development life cycle to help you understand the domain and how the Rational products support the need of that discipline. Our primary focus is to highlight the value of CALM by providing a user view of the solution that is used to support a distributed enterprise development team that incorporates aspects of the Agility-at-Scale approach. While most Redbooks publications provide details about a single product, this book provides a green-thread reference scenario that details one end-to-end path through an iteration of a software development project. The scenario demonstrates a reference architecture for an enterprise that uses the new Rational Jazz technology-based products along with the existing Rational team products. The scenario includes Rational Build Forge Enterprise Edition, Rational ClearCase, Rational ClearQuest, and Rational RequisitePro, and introduces Rational Quality Manager, Rational Requirements Composer, Rational Software Analyzer, and Rational Team Concert.