Network Signature's Seven Step approach to succesful software development
|
Specification I
|
The specification is
the blueprint, the
master score, the grand plan. Through a short,
iterative process, Network Signature identifies
the exact requirements of the client, and produces
a detailed specification and a conceptual project plan.
|
Architecture and Algorithms
|
Often overlooked, this
step combines the required operating environment
and performance with the desired functionality,
and breaks the specification down into a set of
individual components and their interdependencies.
|
Specification II
|
Particular milestones
are defined, a selection of review meetings,
according to client requirements, are scheduled,
and a detailed project plan is produced.
|
Development
|
The components are
developed in accordance with the project plan and
overall architecture, and tested.
Irrespective of implementation language, Network
Signature deploys a modular, iterative development
process, whereby separate components of the total
solution are developed, refined, and tested
individually.
This is in fact the essence of object oriented
design and development, and is at the core of
Network Signature's design philosophy.
The testing itself employs a combination of several
methods, including:
- Dress Rehearsal, whereby code-level debuggers
are used to step through every line of the
code, and all corner cases are forced
- Bulk Automated Testing, whereby test data
(simulated or real) is fed to the individual
components, and output/behaviour verified
to be correct
- Formal Verification, whereby correct
behaviour is verified using formal,
mathematical methods (this methodology
was originally described by David Gries in
his book "The Science of Programming")
Irrespective of method, any discrepancies are
fed back to the appropriate earlier stage,
and revised specifications and/or code developed.
At the same time, performance-critical sections of
the code are analysed at machine code level, and
all run-time logging, tracing, and debugging
functionality is verified.
|
Integration
|
This is where the
wings meet the fuselage and we take it for a spin.
Another step often overlooked (it is a purely practical
consideration), this is where many software
projects start to falter, and sometimes meet
an early demise. However exact the specification is,
and however careful and precise the development has
been, integration is a critical step, and requires
end-to-end understanding of all aspects of
client requirements, the actual code, and its
working environment.
|
Code review and audit
|
Often implemented informally,
code review is one of the most important aspects
of quality assurance, but, because of its informal
nature, is often passed over. The fact is that
quality is built into things, it isn't tested
into them. And yet, practically all quality
assurance schemes emphasise testing, in the blindest
sense, as the preferred quality control mechanism.
While it is true that testing can verify operation
within certain parameters, software and the
environments in which it is expected to operate
are very complex, and frequently cannot be verified
using blind testing. Code review addresses this
issue by subjecting the software to an intelligent
review and detailed inspection, primarily at the source
code level, but also at the specification and
architecture levels.
|
Commissioning
|
The software is delivered
to the client, followed by client's acceptance testing.
Where necessary, documentation and training is
developed jointly with the client, in accordance
with client's requirements. Frequently, however,
the specification effectively serves as a manual.
|
|