NEW TO SOFTWARE DEVELOPMENT?
While many of our customers have a great deal of experience with the processes involved
in developing a customized software solution, we often work with businesses who
are embarking on their first software development project. To those customers,
the prospect of creating a new application can often be daunting. We make
it our goal to communicate openly, and often, with all of our customers to be sure
that they are always comfortable with what's going on with their project.
If the process of developing custom software is new to you, please read below for
an overview.
The Development Lifecycle
In the software industry, we refer to the phases of a software project
as its
lifecycle. The key to a successful development
project is understanding the clear distinction between each of the phases and how
they relate to each other (this concept is so important that we named our company
after it!).
The lifecycle of a software application can be divided into the following phases:
Discovery
The discovery phase of a software development project focuses on determining
the customer's needs and formulating a plan for meeting those needs. During
the discovery phase, our staff will communicate with the customer through meetings,
e-mail correspondence and personnel interviews to better understand the scope of
the project. It is during this phase that project feasibility will be assessed
and a plan for moving into the design phase will be formulated. At the completion
of the discovery phase, the customer will receive a non-technical Vision/Scope document
that outlines our understanding of the work to be completed; this document gives
the customer assurance that we understand their business objectives and serves as
a framework for the other phases of the project.
Design
When the discovery phase is complete, our staff will begin the design phase
of the project. The focus of the design phase is taking the business objectives
outlined in the discovery phase and mapping them to a technical solution.
During this phase, our software architects will develop a "blueprint" of the project.
The customer will be active in this phase by helping to guide our architects to be
sure that our approach meets their needs and expectations. The customer will
be asked to provide feedback on various design elements, including working and "paper"
prototypes, data models, etc.
The software development process is iterative by nature -- when new requirements
are revealed in phases following the discovery phase, the development team must
cycle back through the previous phases and determine how the new discovery affects
the overall project. We ask customers to be very hands-on in the discovery
phase in order to help us identify all project requirements as early as possible.
This approach helps us to keep costs down and deliver projects on time.
Production
When a design specification has been completed, our staff will begin implementation.
It is during this phase that code is written, databases are designed, servers are
configured, etc. Like the other phases in the lifecycle, production is an
iterative process. If new discoveries are made in production, the previous
phases must be revisited to determine the impact of the discovery. Production
also includes "unit testing" -- we test pieces of the project independently from
the other pieces to help isolate flaws early in the process. At the end of
the production process, we perform "system testing" to ensure that the pieces function
together properly.
Deployment
The deployment phase of the development lifecycle involves "user acceptance"
testing, deployment configuration, and finally, product rollout. "User acceptance"
testing is a final "buy-in" process that customers are asked to perform to ensure
that the software works as expected before it is released. Deployment configuration
is also performed during this phase -- deployment configuration involves installing
the new software in its final, production environment. When the customer is
satisifed that the product is release-worthy and the deployment configuration
is performed, the first version of the software may be released.
Maintenance
One of the most frequently overlooked areas by organizations new to the concept of
custom software development is the role that ongoing maintenance plays in the life
of software. There will inevitably be problems that must be fixed, new features
that must be added, and changes and enhancements requested by users of the system.
Over the lifespan of an application, the majority of the cost of ownership of the
system is spent on system maintenance and enhancements.
Retirement
As they say, "nothing lasts forever." At some point, all applications
reach a stage in which their usefulness has expired, either due to changing business
environments or changes in the technology landscape. We strive to treat all
projects as building blocks, so that the maintenance phase of their lifecycle can
be maximized to produce the longest lifespan possible. When it's time for
our customers to retire an application, we'll be right there with them, able to
help guide them to a new solution that provides even more value to their business.