# Presentation: 359846

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

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

## Objectives

- Provide a high-level overview of the U.S. Census Bureau software project management process.
- Demonstrate how some of the software project management process assets might be used on a Census 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

**Expected in 2005**

**Expected in 2006**

**Expected in 2005**

**Expected in 2006**

**Expected in 2005**

**Initial Release 2004**

**Initial Release 2003**

**Initial Release 2004**

**Notes:**
The Census Software Process is a corporate software process, which contains the definitions of processes that will guide all software project activities performed within Census.  

The Census Software process describes the activities that each software team is expected to perform when developing (or maintaining) Census Software Products.

The sub-processes of the CSP will include:
Software Sub Project Management
Requirements Management
Software Configuration Management
Software Quality Assurance
Software Testing
Software Design
Software Deployment
Software Coding

## 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?

- Waited for days on a file from someone only to find out that it was ready weeks ago?
- Found out on Monday that your branch was expected to deliver a document on Friday – last Friday?
- Wondered whether your project was on track?
*These may be due to issues in your software project management process**.*

## Purpose and Goals of Software Project Management

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

- 	**Purpose**:	To create _reasonable plans_ for performing software development & maintenance activities, and for managing software projects
- 		To enable groups to _take effective actions_ when the software project deviates significantly from plan.
- 	**Goals**:
- Develop estimates for the work to be performed.
- Establish the necessary commitments to execute the project.
- Define the work to be performed.
- Track and review the project accomplishments and results against documented estimates, commitments and plans.
- Adjust project plans based on actual accomplishments and results.

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

- Software project activities and commitments _shall_ be planned and documented.
- Affected groups and individuals _shall_ agree to their commitments related to the software project.
- Actual results and performance _shall_ be tracked against the software plans.
- When actual results and performance deviate significantly from the software plans, corrective actions _shall_ be taken and managed to closure.
- The affected groups and individuals _shall_ agree to changes to software commitments.
- Software estimates _should_ be documented for use in planning and tracking the software project, as well as for planning future similar projects.

## Process Elements

## What Does the Software Project Management Process Involve?

- U.S. Census Bureau
- Software Project Management
- Process Description

**What Does the Software Project 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

**Basic Workflow**

- Perform Risk Analysis

- Identify
- Software Tasks

- Initiate Project

**Project**
**Planning**
**Phase**

**Project Concept Phase**

- Risk
- Assessment

- Software Development Plan

- Software Project Charter

- Memoranda of Understanding

- Work Breakdown Structure

- Develop Estimates for
- Software Tasks

- Estimates & Assumptions

- Review Software Development Plan

- Software Development Plan

- Project Library

## Basic Workflow (continued)

**Basic Workflow ****(continued)**

**Project**
**Closeout**
**Phase**

**Project Implementation Phase**

- Issues Log

- Risk Register

- Monitor and Track Software Project

- Update Software Development Plan

- Software Project Status Reports

- Software Development Plan Updates

- Lessons Learned

- Software Project Archive

- Closeout Project

## Project Concept Phase

**Project Concept Phase**

## Step 1:	Initiate Software Project

**Step 1:****	****Initiate Software Project**

- Establish the project organization, management structure, and authority to execute the software project.

**Purpose**

**Identify Software Project Manager**

**Develop Software Project Charter**

**Define Project Scope**

**Coordinate Software Tasks with Other Project Groups**

**Setup Project Library for Project Management Documentation**

## Project Planning Phase

**Project Planning Phase**

## Step 2:	Identify Software Project Tasks

**Step 2:****	****Identify Software Project Tasks**

- To identify the tasks that must be performed in order to create the software product and associated deliverables.

**Purpose**

**Select Software Development Lifecycle**

**Identify Software Work Products**

**Identify Tasks to Develop Software Work Products**

**Establish Software Project Policies, Procedures & Standards**

## Step 3:	Develop Estimates for Software Project Tasks

**Step 3:****	****Develop Estimates for Software Project Tasks**

- To create a reasonable plan (including costs, time, resources and schedule) for developing and maintaining the software product and to ensure that the plan can be use to track the project’s progress during the Implementation Phase.

**Purpose**

**Establish Estimating Methodology**

**Estimate Level of Effort To Develop Each Software Work Product**

**Estimate Size of Each Software Work Product**

**Estimate Resource Spending Plan & Schedule Based on Estimates & Resources**

**Identify Resources to Develop Each Software Work Product**

**Coordinate Task Dependencies, Resources and Schedules with Other Groups**

## Step 4:	Perform Risk Analysis

**Step 4:****	****Perform Risk Analysis**

- Identify risks associated with the project and plan risk responses.

**Purpose**

**Identify Software Project Risks**

**Develop Mitigation Strategy & Contingency Plan for Each Risk**

**Determine Probability of Occurrence & Potential Impacts of Risks**

## Step 5:	Review Software Development Plan

**Step 5:****	****Review Software Development Plan**

- Document and communicate the activities that will be undertaken by the software project, and gain commitment from senior management to proceed as planned.

**Purpose**

**Review Software Development Plan with Software Project Team**

**Adjust Software Development Plan Based on Review Feedback**

**Review Software Development Plan with Senior Management & Other Project Managers**

**Make Software Development Plan Available in Project Library**

**Communicate Availability of Approved Software Development Plan**

## Implementation Phase

## Step 6:	Monitor & Track Software Project

**Step 6:****	****Monitor & Track Software Project**

- Determine if the project is on track and is meeting stated needs, and take corrective action when necessary.

**Purpose**

**Collect and Analyze Software Project Metrics Against Software Development Plan**

**Document Issues & Update Status of Issues in Issues Log**

**Assess Status of Risks & Record in Risk Register **

**Summarize Software Project Status Based on Metrics, Issues & Risks**

**Collect and Communicate Any Lessons Learned**

**Report Software Project Status to Senior Management, Other Project Managers and Software Team**

## Step 7:	Update Software Development Plan

**Step 7:****	****Update Software Development Plan**

- To keep the software development plan up-to-date so that it is meaningful to the software team and reflects the project’s true status.

**Purpose**

**Identify Deviations Between Software Project Status & Software Development Plan**

**Adjust Estimates for Software Tasks**
**(See Step 3)**

**Adjust Software Tasks **
**(See Step 2)**

**Re-Assess Risks**
**(See Step 4)**

**Review Software Development Plan Updates**
**(See Step 5)**

## Closeout Phase

## Step 8:	Closeout Project

**Step 8:****	****Closeout Project**

- To formally closeout the project, ensure data for future planning is preserved and to identify possible improvements to the project’s overall software process.

**Purpose**

**Identify Work Products Needed for Next Project Cycle**

**Create **
**(or Update) Historical Data for Planning Future Project Cycles**

**Identify Project Management Files Needed to Update Planning Data**

**Collect Remaining Lessons Learned**

**Archive Files & Data**

**Identify Improvements to Software Process for Future Project Cycles**

## Process Scenario

## Example from the Annual Social & Economic Supplement Project

**Intergroup Coordination Memorandum**
- Background
- Key Information Contained Within It
- Benefits
- Application to Software Project Management

## 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 is 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)
- Project Management Masters Certificate Program (PMMCP)
- Management Development Courses
- 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.