# Presentation: 253721

## U.S. Census BureauSoftware Configuration Management  Awareness Presentation

- Prepared by the U.S. Census Bureau’s Software Engineering Process Group

## Objectives

- Provide a high-level overview of the U.S. Census Bureau configuration management process.
- Demonstrate how some of the configuration management process assets might be used on a U.S.  Census Bureau project.

## Agenda

- Context and Background
- Process Elements
- Project Planning Phase
- Project Implementation Phase
- Process Scenario
- Getting Started
- Summary
- Questions

## Context and Background

## Census Software Processes

**Initial Release 2004**

**Expected in 2005**

**Expected in 2006**

**Expected in 2005**

**Expected in 2006**

**Initial Release 2003**

**Expected in 2005**

**Initial Release 2004**

## Relative Timing of Software Processes

**Concept**
**Phase**

**Implementation**
**Phase**

**Closeout**
**Phase**

**Requirements**

**Design**

**Quality Assurance**

**Project Management**

**Coding**

**Testing**

**Deployment**

**Configuration Management**

**Planning**
**Phase**

**Core Workflows**

**Supporting Workflows**

## Have You Ever Experienced This?

- Couldn’t find a copy of the file you needed?
- Sent the wrong file?
- Unintentionally overwritten a file?
- Couldn’t find the programs used to generate the data files from a previous year?
- Probably due to configuration management issues.

## Purpose and Goals of Configuration Management

- 	**Purpose**:	To establish and maintain the integrity of the products (and the documents that describe them) throughout a project’s development life-cycle.
- 	**Goals**:
- Plan configuration management activities.
- Identify work products.
- Make new revisions of work products available to affected groups and individuals when they have been approved.
- Make old revisions of work products available to affected groups and individuals.
- Control changes to work products.
- Keep affected groups and individuals informed of the status of each work product as well the content of each revision.

- Based on the Software Engineering Institute’s Capability Maturity Model for Software.

## U.S. Census Bureau IT Standard 24.0.0: Software Development and Maintenance

- Configuration management activities _shall_ be planned and documented.
- Configuration items _shall_ be identified, controlled and available.
- Changes to software work products _shall_ be controlled.
- Affected groups and individuals _should_ be informed of the status and content of software baselines.

## Process Elements

## What Does the Configuration Management Process Involve?

- U.S. Census Bureau
- Configuration Management Process Description

**What Does the Configuration Management Process Involve?**

**Notes:**
It involves 6 steps:
Initiate Project and Planning
Develop a Software Development Plan
Perform Risk Analysis
Review and Approve Plans
Monitor and Track Against Plan
Closeout the Project

## Basic Workflow

**Project**
**Implementation**
**Phase**

**Basic Workflow**

**Project Planning Phase**

- Configuration Management
- Library System

**Notes:**
Comments from 11/26 SCM PDT Meeting

Consist use of SCM vs CM – the group feels we should use SCM and explain in text somewhere in our process description the notion that many elements can be applied to CM also.
Deliverable Component vs. Product Component – Karen is ok with product component terminology but we may need to address the call out text for that bubble.  I changed the title but we need to discuss this more.
Added Establish sCCB bubble to slide 2

## Project Planning Phase

**Project Planning Phase**

## Step 1:	Plan Configuration Management Work

**Step 1:****	****Plan Configuration Management Work**

- The purpose of this process step is to establish a configuration management plan that will serve as the basis for performing configuration management activities throughout the life of a project.

**Purpose**

## Step 2:	Set-Up Configuration Management Environment

**Step 2:****	****Set-Up Configuration Management Environment**

- The purpose of this process step is to ensure that the groups responsible for executing the configuration management activities described by the project’s Configuration Management Plan have the ability to do so.

**Purpose**

## Implementation Phase

## Step 3:	Manage Configuration Items

**Retrieve Configuration Item from Configuration Management Library System**

**Store Configuration Item in Configuration Management Library System**

**Step 3:****	****Manage Configuration Items**

- The purpose of this process step is to control changes made to a configuration item.  This ensures that the appropriate revision of the configuration item is available when needed.

**Purpose**

## Step 4:	Manage Change Requests

**Step 4:****	****Manage Change Requests**

- The purpose of this process step is to: a) ensure that the impacts of implementing a requested change are assessed before the change is authorized; b) track the implementation status of change requests; and c) communicate the implementation status of the change requests and configuration items to all affected groups.

**Purpose**

**Notes:**
Updated this slide to include “Log Change Requests & Update Their Status” and “Report Status of Change Requests”

## Step 5:	Manage Release of Build Packages

**Step 5:****	****Manage Release of Build Packages**

- The purpose of this process step is to control the release of build packages, so that the status and content of each build package is known.

**Purpose**

**Notes:**
Removed test results and RTM as input, it’s covered in determine release readiness.

## Process Scenario #1

## Situation

- Project tasked with estimating a population.
- Required to deliver the following:
- A table of the estimated population broken down by age based on data from January.
- The programs used to generate the population data table(s).
- A document of the (approved) requirements used to develop the programs and subsequent data tables.
- NOTE:  Requirements on how information must be arranged on the data table and what algorithms will be used to derive the data will be documented in software requirements specifications documents.

## Identify Product Components

| Product Component | Configuration Items by Type |  |
| --- | --- | --- |
|  | Requirements | Source Code 
(Files Used to Build Product Component) |
| Estimating Program |  |  |
| Population  Data Table |  |  |
| Software Requirements Specification Document |  |  |

**Product Components **
**in Build**** ****Package**

**Identify Product Components**

**Product Component/Configuration Item List **
**in Configuration Management Plan**

## Identify Configuration Items

**Product Component/Configuration Item List **
**in Configuration Management Plan**

| Product Component | Configuration Items by Type |  |
| --- | --- | --- |
|  | Requirements | Source Code 
(Files Used to Build Product Component) |
| Estimating Program | Specification A | Edits.SAS
Weights.SAS
Calculator.SAS |
| Population  Data Table | Specification B | Estimating Program
January Input Data |
| Software Requirements Specification Document | Statement of Work
 | Specification A

Specification B |

*	**Edits.SAS*
*+**	**Weights.SAS*
_*+*__*	*__*Calculator.SAS*_
*	**Estimating Program*

*	**Estimating Program*
_*+*__*	*__*Jan. Input Data*_
*	**Pop. Data Table*

*	**Specification A*
_*+*__*	*__*Specification B*_
*	**Software Requirements Specification Document*

## Set-up the Work Environment

**Set-up the Work Environment**

**Product Component/Configuration Item List **
**in Configuration Management Plan**

| Product Component | Configuration Items by Type |  |
| --- | --- | --- |
|  | Requirements | Source Code 
(Files Used to Build Product Component) |
| Estimating Program | Software Requirements Specification A | Edits.SAS
Weights.SAS
Calculator.SAS |
| Population  Data Table | Software Requirements Specification B | Estimating Program
January Input Data Table  |
| Software Requirements Specification Document | Statement of Work
 | Software Requirements Specification A
Software Requirements Specification B |

**Source Code**
**Configuration Management Library**
**for the Estimating Program**

*Edits.SAS*
*Archive*

*Weights.SAS*
*Archive*

*Calculator.SAS*
*Archive*

## Tracking Requested Changes

**Tracking Requested Changes**

**Change Request Tracking Log**

| Change Request ID | Affected Product Components 
& Configuration Items | Change Request Status |
| --- | --- | --- |
| CR001 | Estimating Program
Edits.SAS
Calculator.SAS
Population Data Table | Approved |
| CR002 | Estimating Program
Weights.SAS
Population Data Table | Approved |
| CR003 | Estimating Program
Edits.SAS
Population Data Table | Deferred |
| CR004 | Estimating Program
Edits.SAS
Population Data Table | Rejected |
| CR005 | Estimating Program
Edits.SAS
Calculator
Population Data Table | Approved |
| CR006 | Estimating Program
Edits.SAS
Population Data Table | New |

| CR001:  Change maximum age to 110 years old. |
| --- |

**Change Request Form**

## Storing Configuration Items

**Storing Configuration Items**

**Change Request Tracking Log**

| Change Request ID | Affected Product Components 
& Configuration Items | Change Request Status |
| --- | --- | --- |
| CR001 | Estimating Program
Edits.SAS
Calculator.SAS
Population Data Table | Approved |
| CR002 | Estimating Program
Weights.SAS
Population Data Table | Approved |
| CR003 | Estimating Program
Edits.SAS
Population Data Table | Deferred |
| CR004 | Estimating Program
Edits.SAS
Population Data Table | Rejected |
| CR005 | Estimating Program
Edits.SAS
Calculator
Population Data Table | Approved |
| CR006 | Estimating Program
Edits.SAS
Population Data Table | New |

**Source Code **
**Configuration Management Library**
**for the Estimating Program**

- Change History:  Added REQ001

- Change History:	Added REQ002
- 	Added CR001

- Change History:  	Added CR005

- Rev 3

- Rev 1

- Rev 2

*Edits.SAS*
*Archive*

## Creating a Build Package

**Source Code **
**Configuration Management Library**
**for the Estimating Program**

- Added REQ001

- Added REQ002
- Added CR001

- Added CR005

- Rev 3

- Rev 1

- Rev 2

*Edits.SAS*
*Archive*

- Added CR004

- Rev 4

*Weights.SAS*
*Archive*

- Added CR002

- Added REQ002
- Added REQ001

- Rev 5

- Rev 3

- Rev 1

- Rev 2

- Rev 4

*Calculator.SAS*
*Archive*

- Added CR005

- Added CR001
- Added REQ001

- Rev 1

- Rev 2

- The Estimating Program Version 1.0.1 was created from:
- Edits.SAS (Rev 4)
- Weights.SAS (Rev 3)
- Calculator.SAS (Rev 2)
- Population Data Table Version 1.0.1 was created from:
- Estimating Program (Ver 1.0.1)
- January Input Data (Rev 3)
- This package reportedly contains the following requirements and change requests:
- REQ001, REQ002
- CR001,CR002,CR004,CR005

**Product Components **
**in Build Package #1**

**Release Notes for **
**Build Package #1**

## Auditing the Functional Configuration of a Build Package

**Auditing the Functional Configuration of a Build Package**

| Agreed Upon Req’ts     (Change Requests) | Script Expected to Cover Req’t (Change Request) | Does Script Exist & Cover Req’t or Change Request? | Test / Review Result | Req’t (Change Request) Satisfied? |
| --- | --- | --- | --- | --- |
| REQ001 | TS EDIT001
TS EDIT002
TS CALC 001 | YES
YES
YES | PASS
PASS
PASS | YES |
| REQ002 | TS CALC 001
TS CALC002
TS CALC003 | YES
YES
YES | PASS
PASS
FAIL | NO |
| CR001 | TS EDIT002
TS EDIT003
TS CALC002 | YES
YES
YES | PASS
PASS
PASS | YES |
| CR002 | TS WEIG001
TS WEIG002 | YES
YES | PASS
None | Unknown |
| CR005 | TS EDIT004 | NO | None | Unknown |

| Change Request ID | Affected Product Components 
& Configuration Items | Change Request Status |
| --- | --- | --- |
| CR001 | Estimating Program
Edits.SAS
Calculator.SAS
Population Data Table | Approved |

| Agreed Upon Requirements (Change Requests) | Associated Configuration Items |  |  |
| --- | --- | --- | --- |
|  | Requirements Documents | Test Scripts | Source Code  |
| CR001 | Software Requirements Specification A | TS EDIT002
TS EDIT003
TS CALC002 | Edits.SAS
Calculator.SAS |

| Purpose | Associated Req’ts and Change Requests | Test Scenarios |
| --- | --- | --- |
| To test calculations .... | REQ001
CR001 | ...
... |

| Build Package | PASS/ FAIL? |
| --- | --- |
| #1 | PASS |

## Auditing the Physical Configuration of a Build Package

| Product Component | Configuration Items | Approved Content | Actual Content | Missing or Unapproved Content |
| --- | --- | --- | --- | --- |
| Estimating Program | Edits.SAS | REQ001
REQ002
CR001

CR005 | REQ001
REQ002
CR001
CR004
CR005 | CR004 was not approved for implementation. |
|  | Weights.SAS | REQ001
REQ002
CR002 | REQ001
REQ002
CR002
Unknown | Contains unknown change in Rev 3. |
|  | Calculator.SAS | REQ001
CR001
CR005 | REQ001
CR001
CR005 | None |

**Auditing the Physical Configuration of a Build Package**

**Physical Audit Report of **
**Estimating Program in Build Package #1**

| Product Component | Configuration Items by Type |  |
| --- | --- | --- |
|  | Requirements | Source Code 
(Files Used to Build Product Component) |
| Estimating Program | Software Requirements Specification A | Edits.SAS
Weights.SAS
Calculator.SAS |

| Change Request ID | Affected Product Components 
& Configuration Items | Change Request Status |
| --- | --- | --- |
| CR001 | Estimating Program
Edits.SAS
Calculator.SAS
Population Data Table | Approved |

## Process Scenario #2

**DAY 1**

**DAY 3**

**DAY 0**

- REQ001
- REQ002
- REQ003

- No Req’ts Tested
- No Req’ts Implemented

- REQ001
- REQ002
- REQ003

- Rev 1

**DAY 2**

- No Req’ts Tested
- REQ001,003 Implemented
- REQ002 not implemented

- REQ001 REQ003

**Approved Change Requests on  Tracking Log**

**Req’ts Baseline**

**Configuration Management Audit Report**

**Edits.SAS Archive**

**Change Request Forms**

**DAY 6**

**DAY 8**

- REQ001
- REQ002
- REQ003
- CR001
- CR005

- CR001
- CR005

- Rev 1

**DAY 5**

- REQ001
- REQ002
- REQ003
- CR001
- CR0005
- CR002

- CR001
- CR005
- CR002

**DAY 7**

- Rev 1

- No Req’ts Tested
- REQ001,003 CR005 Implemented
- REQ002, CR001 not implemented
- REQ003 implemented, but no longer approved

- No Req’ts Tested
- REQ001, CR001,CR005 Implemented
- REQ002 not implemented
- CR001 removed REQ003

- Rev 2

- REQ001 REQ003

- CR005

- REQ001 REQ003

**CR005**:	Change maximum age to 120 years

**CR002**: 	Divide estimate into 5 age groups

**CR001**: 	Remove REQ003

**...**

- Rev 2

- CR005

- Rev 3

- CR001

**CR002**: 	Divide estimate into 5 age groups

**...**

**HOLD**

**...**

**Approved Change Requests on  Tracking Log**

**Req’ts Baseline**

**Configuration Management Audit Report**

**Edits.SAS Archive**

**Change Request Forms**

## If A Build Package Is Created on Day 8 ...

**Approved Change Requests on  Tracking Log**

**Req’ts Baseline**

**Edits.SAS Archive**

**Configuration Management Audit Report**

- REQ001
- REQ002
- REQ003
- CR001
- CR005
- CR002

- CR001
- CR005
- CR002

- No Req’ts Tested
- REQ001, CR001,CR005 Implemented
- REQ002 not implemented
- CR001 removed REQ003

**... ****what **_**requirements**_** are part of the **_**current requirements baseline**_**?**
**... ****what **_**requirements**_** are part of the **_**build baseline**_**?**
**... ****what **_**source code files**_** are part of the **_**build baseline**_**?**

**Release Notes**

- This package was created from Edits.SAS Rev 3, which included:
- REQ001
- CR005
- CR001

- Rev 1

- REQ006

**Weights.SAS Archive**

*Revision used to create product*

## Getting Started

*“**A journey of a thousand miles begins with a single step.” *
- Lau-Tzu

## Must I Do It All?

**Sub-Process Descriptions**

**Examples**

**Templates**

**Metric Data**

**Quickcards**

**Guidelines**

**Lessons Learned**

**Awareness Presentations**

## Expectations

- All projects are expected to adhere to the U.S. Census Bureau’s Software Development and Maintenance Policy and corresponding standard
- Stricter policies and standards may apply in your area
- Develop a plan for implementing
- Not necessarily all at once
- Be able to show progress to your management
- Use the Census Software Process assets as guidance
- Tailor to your project
- Provide feedback to your Census Software Engineering Process Group (SEPG) representative

## Steps for Implementing Process Changes

**I**nitiate
- Determine where you will begin your improvement effort – personal, intra-team or inter-team?
- Communicate with those who are willing and able to help you succeed.
**D**iagnose
- What problems are you experiencing?
- What can you do better?
- What are causing those problems?
**E**stablish
- Develop an action plan to implement 1-2 key changes
- Inform others of your action plan
**A**ct
- Implement changes
- Track progress against your action plan
**L**earn / Leverage
- Leverage what you’ve learned from implementing your changes with others

- Based on the Software Engineering Institute’s IDEAL Model.

## Where Can We Find More Help?

**Where Can We Find More Help?**

## Groups That Can Provide Support

- Co-workers
- Supervisors & Affected Groups
- Software Engineering Process Group (SEPG)
- Division Champions
- Software & Standards Management Branch (SSMB) in the Systems Support Division (SSD)

**Notes:**
Co-workers
Typically have the most knowledge about the organization and process currently in place.

Supervisors & Affected Groups
Have vested interested in seeing that you succeed.
Can champion changes.

Software Engineering Process Group (SEPG)
Has representatives from each directorate (and most divisions).
Involved in the creation and update of the Census software processes and related process assets.
Can direct you to others who face similar or related challenges.
Can answer questions regarding the software processes.

Software Systems Division (SSD)/Software & Standards Management Branch (SSMB)
Chairs the SEPG and can direct you to your SEPG representative.
Provides support via the Census Software Process Improvement (CSPI) Program.

## Training Opportunities

- Census Software Process Improvement (CSPI) Program
- Monthly SEPG Brown Bag Seminars
- Annual Census SEPG Conference
- CSP Support Initiatives
- Future Mentoring Program *(in coordination with Human Resources Division)*
- Career Resource Center (CRC)
- Using & Interpreting the Capability Maturity Model *(in coordination with the CSPI Program)*

## Summary

- Adhere to U.S. Census Bureau policies and standards.
- Use the Process Asset Library (PAL) available on the intranet to jump start your software process improvement efforts. (_[http://cww2.census.gov/it/ssd/cspi/pal.asp](http://cww2.census.gov/it/ssd/cspi/pal.asp)__)_
- Tailor the process assets to your project needs.
- Involve affected groups and individuals in your improvement efforts.
- Share what you’ve learned.