NWDC

home   [about]   contact   downloads   links   pricing   reading list   salesforce   site map  

Current loctn: about > methods > software > software devel

Software Development Methods

General Advice

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 of 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:

Strategy
This work focuses on developing a complete understanding of the strategic, business-level needs the client expects to fulfill with the new system. Alternatively, the goal may be to develop an understanding of problems the client expects be resolved.

An additional explanation for those experienced with software requirements - this stage focuses primarily on documenting business requirements.
Analysis
This work focuses on a developing a complete, detailed understanding of the functions to be supported by the newly produced software, the data required to support those functions, the processes employed by the client to make use of the new system, security concerns, and steps required to migrate data from existing systems to the new system.

An additional explanation for those experienced with software requirements - this stage focuses primarily on documenting user requirements.
Design
This work focuses on developing a detailed conceptual outline of the new software system. This includes decisions about software platforms to be used for the new system (database software management systems, programming languages, etc.), network architecture, an outline of how software functions will be "modularized" and how software modules will interact with each other.

An additional explanation for those experienced with software requirements - this stage focuses primarily on documenting functional requirements.
Construction
This work focuses on construction of database structures, programming, documentation, and data migration tools.
Implementation
This work focuses on installation of the system, testing of system performance, and required revisions to software and documentation.