DSP software can be developed using any of the standard software development methodologies, from sequential “waterfall” methods, to iterative “agile” methods and “extreme programming.” In our experience, there isn’t one unique development methodology that will work best for all projects. We will choose and tailor our development methodology to the specific needs of your digital signal processing application.
For projects with well-defined requirements, we recommend using a sequential methodology, where the following four stages are performed in order.
1. Requirements definition
This stage involves technical discussions between you and us to define the requirements of the product as clearly as possible. The output of this stage will be a Product Requirements Document (PRD). The length and depth of this document depends on the complexity of the project.
2. Design
On this stage we will prepare a Software Design Document (SDD), which will detail how we plan the DSP software to work internally, and how it will interact with your system. We will also specify how the software will be tested by us. We will submit the Software Design Document to you for approval.
For projects involving complex digital signal processing algorithms, we will simulate the algorithm in a high-level mathematical prototyping environment like Matlab as part of the design.
3. Implementation
Once the Software Design Document is approved, we will proceed to implement the software. Whenever possible we will divide the project into building blocks that can be developed and tested independently, then we will connect these building blocks into a final system. We will keep you informed of our progress with weekly status updates. We will perform continuous testing and code reviews during the implementation stage, to uncover and resolve defects early.
4. Test
We will perform a formal round of testing on the final DSP software, following the test plan detailed in the Software Design Document. We will document the test results in the Release Notes that will be delivered to you with the final software.
For digital signal processing projects where the requirements are not well defined or are changing rapidly, we recommend utilizing an iterative development methodology. We will go through a complete development cycle multiple times, reviewing and refining the requirements and the software at every iteration. During each development round we will perform the same four stages as in the sequential methodology, and produce working software. The software is evaluated and used to refine the requirements for the next development round. On the first round, the PRD and SDD will be short and vague, but will get progressively more detailed on subsequent rounds. The total number of rounds needed will vary from project to project.