1. Produce a low-end product to complete their PCR product line
2. Improve requirements specification and change request process
3. Improve software project management process with distributed teams
4. Recover from previous project involving poorly supervised outsourced development
1. Requirements engineering
2. Identify and implement improvements in requirement specification, change requests and project management.
The previous project in this product line almost died because of poor communication between the client and one outsource development vendor. The in-house software manager was fired but the company wanted to continue working with several of the outsource vendors. During the interviews Diane Pepetone, L’Monte’s requirements engineer, found that the product manager would be a champion of the project and was very supportive of suggested process improvements, especially the cross functional team approach.
At project startup, Ms. Pepetone gave a mini-tutorial introducing the best practices that she would be using including project chartering, use cases, cross-functional project team, co-ownership of requirements, requirements tracking to manage change requests and defining acceptance criteria for requirements and using them to generate test plans.
After setting up a cross-functional team, Ms. Pepetone facilitated requirements modeling workshops and introduced the use of two web-based groupware tools to strengthen communications and the ability to work together with a distributed team. One of the tools was projectBOT, a requirements tracking tool L’Monte built for the purpose. When high level requirements were defined and recorded in projectBOT, the team selected a ‘customer’ owner (usually from marketing or researchers) and a developer owner as co-owners of each requirement. The co-owners were responsible for the requirement through it’s life cycle and used the tracking tool to manage the requirement’s status, priority and any associated change requests or defects.
As team facilitator, Ms. Pepetone met with co-owners and the team to help them track progress, deal with unexpected developments, develop decision making procedures and manage risks.
Software with all specified functionality was completed two months ahead of schedule. Final modifications to the instrument were not completed, so the team reviewed change requests that were collected during beta testing and selected the most desirable features to include in the final product.
After the previous development effort which was a painful memory for everyone, project staff was very pleased with the process improvements, especially the cross functional project team and co-ownership of requirements which resulted in much better coordination between marketing and the development staff.
As the product manager put it, at the end of the previous project, everyone hated each other. At the end of this project, her comment on the final acceptance testing, “What an amazing feeling of accomplishment for every member on the team!”