Usually customer describes (formally or informally) the features to be
supported by the product. Basing on this information we:
- investigate related standards and common practices;
- check for missed features;
- investigate the existing product source code;
- prepare the project definition with formal requirements, references to
particular standards and estimations for subtasks.
Customer decides which requirements should be met and which subtasks should
be done and defines the calendar deadlines.
One part of the project team prepares the high level design document and/or
detailed design (usually set of C headers). The design may describe:
-
modules which implementation consists of and interface between them;
-
necessary changes in existing source code;
-
protocol state machine;
-
different possible approaches;
-
API;
-
management interface and managed objects.
Another part of team prepares test specifications. They are delivered to
customer as a set of .html files. The following testing is usually performed:
Customer is asked to specify desired test coverage before creation of the
test specifications.
Both product and tests are implemented on this stage. Usually night testing
is configured and reports are sent to customers every morning to let them
know about the progress.
The product is tested in the customer environment. Additional interoperability
testing may be performed at this stage.
The bug fixing is free during several months after project finish.
Implementation of additional features is performed as a new project.