Evolutionary Development
An evolutionary development approach is typically used to develop and implement
software at RAP, except for any commercial off-the-shelf (COTS) components
which, by definition, do not require software development. This approach has
been described by Steve McConnell¹ as the "best practice for software
development and implementation". According to McConnell, "evolutionary delivery
is a lifecycle model that straddles the ground between evolutionary prototyping
and staged delivery." Early versions of the system are presented to the customer
and the system is refined and enhanced based on customer feedback. The cycle
continues until development time runs out (schedule constraint) or funding for
development runs out (resource constraint).
There is a strong desire at RAP to use this approach since it is the most
beneficial approach to use for prototype-to-operational development efforts
typically used at RAP. Research and system development efforts that several
national labs are performing for the FAA, NASA, and U.S. military also use this
development methodology.
Software systems are often developed and implemented based solely on detailed
specifications and operational concept documents and only after the systems have
been delivered do users realize that the systems are not what they envisioned.
It is very difficult to determine the detailed preferences of customers and
exactly how a system will be used before it is placed before the users,
especially when potential users have a diverse set of tasks to perform. With
this in mind, a development (prototyping) environment is usually established at
RAP during the first year of a project. The development environment will
continue to be used during subsequent years to support ongoing developments,
enhancements, and demonstration activities.
During the time that the development environment is in place, users will gain
experience with the systems, displays, and products and be in a better position
to determine how the system will be incorporated into their operational
environment during subsequent phases of projects.
A graphical representation of the Evolutionary Delivery approach is provided
below.