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:
- a much faster implementation phase
- major reductions in unexpected problems
- a more steady, predictable rate of progress
during programming
- enhanced ease of maintenance for final products
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
- Context Dataflow Diagram - dataflow diagram documenting the major information
flows into, through, and out of the system
- Elaborated Use Case Descriptions - use case descriptions elaborated
to specify exact mechanisms used for user interface elements, etc.
- Forms Navigation Model - flowchart outlining main navigation paths
provided to the user.
(form navigation model example 1
form navigation model example 2)
- Modularization Plan - outlines high-level
structure of the system. This
typically will include a description of user interface objects, their
functions, and their interactions.
(modularization plan example 1,
modularization plan example 2,
modularization plan example 3)
- Naming Conventions - outlines proposed system for constructing names
for files, tables, columns, etc. within the new system.
(naming conventions example)
- Physical Data Model Diagram - diagram outlining the proposed actual
storage of information in the selected software/hardware platform.
This will sometimes differ from the detailed data model developed in
analysis stage in order to take full advantage of features of the
selected software/hardware platform.
- Process Diagrams - (Typically used only for complex proceses) detailed
diagrams representing the logic flow and data movement of the process as supported
by the system.
(proposed process dataflow example)
- Selected Development Platform - describes final choice of software
database managemetnt system, programming languages,
computer hardware, etc.
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.