(to do: fix formatting)
Software Development Checklists
The documents listed below contain checklists for various phases within the lifecycle of a project. While they do tend to correspond to specific, familiar project phases, this shouldn't imply a particular favoured methodology. The point is that when any of these phases can be considered to be completed, these checklists might be useful to help ensure that some things have not been neglected.
The checklists are not intended to be a strict, proscriptive description of all things that must be done in the development lifecycle - they are a list of things we feel should at least be considered.
Main Processes:
Project Inception
Requirements
Technical Specification
Project Planning
Development Process
Deployment
Supporting Tasks:
The following tasks can occur at any particular time within the Project Lifecycle (none completed yet)
Checklist: Requirements
This is one of the main checklists. It's a framework so that we can be sure that things have not been missed in the requirements. This checklist should be referred to before requirements are signed off.
Checklist: Technical Specification
These are the things which should be considered whenever the Technical Specification for a project is considered finished (or indeed possibly at other review points).
Checklist: Project Planning
These items should be considered toward the end of the process of project planning (the estimation process could usefully have its own "Task Checklist").
Has testing been included?
If so, will this result in a set of programmatic tests which can be run by QA?
Has documentation been included?
Checklist: Development Process
The actual Development Process is obviously one of the largest parts of the project cycle - essentially it runs from when code is first begun until a release candidate is prepared for acceptance testing. As such, this process might go on while other phases are going on at the same time. It's probably worth taking a look at this list at various points in the development phase, although it is really intended to be reviewed at the end, as with the other checklists.
Have tests been written?
What is test coverage?
Has application documentation been completed?
Has user documentation been completed?
Has trouble-shooting documentation been completed?
these can be done during Acceptance Testing - should include these in Deployment (really project completion) checklist too
Checklist: Deployment
This checklist is somewhat different from the other Checklists included here. Whereas, the others are intended to be things that should be remembered before a particular phase is considered complete, this is much more of a step-by-step procedural for a deployment.
Document this release (in Deployment Log, or FogBugz Fix-For, or...)
Inform Ops & Fix Target Release date
Agree Deployment strategy with Ops
Standard deployment strategy is to deploy to a single server taken out of load-balancing; this server is checked; assuming no problems are seen, deploy to all servers.
Prepare Release Candidate (code, and deployment method documentation)
Check diff of Release Candidate against Live Code-base
Agree candidate deployment dates with Stakeholders (avoiding other deployments)
Agree firm deployment date with Ops
Disseminate deployment date as appropriate
Should FM Ops be informed (presumption is not, but should be considered)
Are Ops prepared to support new release?
Is final load testing required?
Create Deployment Fogbugz Case (basing information on what's needed for Change Control)
Assign Deployment Fogbugz to Livesite Team
Contact Livesite (in person or by phone)
Shortly before deployment, Ops should send out Change Control
Perform deployment assume deploy to one server, check, then deploy to all servers
Inform Search Team of deployment, and ensure release is checked
Babysit application for a bedding-in period
Inform stakeholders
Search Team, BBC, 2008