Web Application Development
Prototyping is one of the most important aspects of our
development process. We consider the act of prototyping to be a
risk mitigation strategy. If approached correctly, we believe
that prototyping can reduce the risks in development. In
addition, by reducing risks we are often able to reduce project
costs.
Prototyping may be done in a number of ways and it may actually
employ more than one method over the course of development.
We may begin with hand drawn diagrams and flowcharts to
represent User Interface (UI) elements and business processes.
These drawings are then converted into HTML-based prototypes of
the UI that incorporate a minimal level of functionality.
Customer acceptance tests are then prepared to document the
required functionality. These tests are then validated against
the prototype, as well as the established business, user and
system requirements to ensure that the final system meets the
stated goals of the project.
We emphasize to clients that testing should begin early and
should be carried out continuously. Testing begins during
requirements analysis and prototyping when project managers work
with the customer to develop high-level Customer Acceptance
Tests that validate the business, user, and system requirements.
During development, unit tests ensure that individual,
functional packages of code at the lowest levels do what they
are designed to do. Integration testing ensures that all the
parts (i.e. functional packages of code) that make up a system
function together to meet the specified requirement.
Final Acceptance Testing validates the completed system against
the requirements as defined during the requirements analysis and
prototyping phase. When all of the final acceptance tests have
passed, the system should be ready for production.
Small releases provide positive results to clients in a timely
manner, adding value to their business processes as quickly as
possible.
Small releases also prevent the project from straying too far
from the intended goals before the direction can be corrected.
In this regard smaller releases can be considered a risk
mitigation strategy as well. The key to a small release approach
is to identify the individual subsystems that make up the larger
system and rank those subsystems by importance. The most
important pieces are then delivered first to add value quickly.
Pair programming is the most difficult to implement of all the
development processes identified in this article. While we do
not advocate pair programming in all instances, we do feel that
there is great value to be gained in many cases. Clients are
generally concerned about the development costs of a system. And
while the idea of having two developers working side-by-side on
the same piece of code may seem counterintuitive, cost savings
can be achieved due to shorter testing cycles and less rework as
a result of pair programming.
At the same time, managers see the use of two people on one task
to be a waste of valuable resources, which can be true if the
task is not of sufficient complexity. However, in those
situations where it fits, if quality is increased and testing
and rework reduced, then we believe the trade-offs are warranted.