NWDC

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

Current loctn: about > methods > software > design

Design

"Measure twice, cut once."

The last 20-30 years of software engineering literature heavily emphasize the importance of "application design" during software development.  "Design" is the high-level plan for structure and interactions of components planned for the final system.

Despite this, many programmers have never used a high-level logical diagram, a logical data model, etc. - some of the most commonly employed design tools.

Our experience has been that a well-formulated design streamlines product construction.  Good design products reduce construction "rework" by ensuring that high-level logic and interactions are well planned before programming is started. The benefits during implementation typically match or exceed the additional costs associated with the design work.

Rigorous design efforts typically delay the onset of implementation work (programming, etc.) slightly, but result in:

Programmers frequently find that they have a more sure understanding of how components of the solution interact - this translates into cleaner, better structured programs. 

Typically, our product designs are generated using the products of system analysis as input.

Design products

Process

Involvement of client staff representatives begins to decrease in design stage. The development team typically spends more time on their own converting the business and user requirements of earlier work into a viable system design. Client staff may still be involved in reviews of interface mockups, questions about details accidentally overlooked in earlier requirements work, or in providing a user perspective about alternative approaches being considered.