For software developments of substantial size or complexity, our usual methods employ a classical "waterfall" type development approach, with modifications appropriate for the unique needs or each individual project.
Our approach is shares many fundamental approaches and principles with Oracle's former Custom Design Method and their earlier Case*Method approach. Like these approaches, ours places firm emphasis on data requirements documented using detailed data model diagrams. Data flow diagrams are also commonly used to document data flow into, through and out of the system. Elements of the ANSI/ISO-9001 quality assurance guidelines as applied to software development are also applied. User requirements are generally documented using "Use case" methods (examples provided within "analysis" stage link below). We feel that use case methods offer superior qualities in terms of the ability to obtain useful input and review from members of client staff. Later application design often employs an elaboration of these use cases to specify user interface mechanisms, etc.
Client staff are typically involved in informal review of development products throughout the Strategy, Analysis, and Design stages. Typically, client staff input and review constitutes between 10 and 20 percent of the total hours expended in these stages.
The involvement of client staff is intended to catch and correct planning errors at the earliest possible point to minimize overall development effort and expense. Many studies have shown that error corrections become substantially more expensive at later development stages - with costs often documented to increase by a factor of 10-20 when detection of an error is delayed from one development stage to the next. Additional studies have repeatedly documented that inspection-based reviews are one of the most cost-effective approaches for identifying errors.
Our experience is that this approach provides meaningful benefits, even on relatively small projects. We have not found abbreviated approaches to yield reliable benefit for clients.
In this approach, the development typically moves through several "phases":