A software development process is a structure imposed on the development of a software product. Synonyms include software life cycle and software process. There are several models for such processes, each describing approaches to a variety of tasks or activities that take place during the process.
Software Development Process
A software development process is a structure
imposed on the development of a software product. Synonyms include software
life cycle and software process.
There are several models for such processes, each describing approaches to a
variety of tasks or activities that take place during the process.
Software development activities include
Requirements analysis
Design
Implementation
Verification and
Maintenance
The activities of the software development
process are represented in the waterfall model. There are several other models
to represent this process.
Requirements Analysis
The important task in creating a software
product is extracting the requirements or requirements analysis. Customers
typically have an abstract idea of what they want as an end result, but not
what software should do. Incomplete, ambiguous, or even contradictory
requirements are recognized by skilled and experienced software engineers at
this point. Frequently demonstrating live code may help reduce the risk that
the requirements are incorrect.
Once the general requirements are gleaned from
the client, an analysis of the scope of the development should be determined
and clearly stated. This is often called a scope document. Certain
functionality may be out of scope of the project as a function of cost or as a
result of unclear requirements at the start of development. If the development
is done externally, this document can be considered a legal document so that if
there are ever disputes, any ambiguity of what was promised to the client can
be clarified.
Design
Domain Analysis is often the first step in
attempting to design a new piece of software, whether it be an addition to an
existing software, a new application, a new subsystem or a whole new system.
Assuming that the developers (including the analysts) are not sufficiently
knowledgeable in the subject area of the new software, the first task is to
investigate the so-called “domain” of the software.
The more knowledgeable they are about the
domain already, the less work required. Another objective of this work is to
make the analysts, who will later try to elicit and gather the requirements
from the area experts, speak with them in the domain’s own terminology, facilitating
a better understanding of what is being said by these experts. As a result, a
system design specification precisely describing the software can be arrived
at.
Implementation, Testing and Documenting
Implementation is the part of the process where
software developers actually program the code for the project.
Software testing is an integral and important
part of the software development process. This part of the process ensures that
bugs are recognized as early as possible.
Documenting the internal design of software for
the purpose of future maintenance and enhancement is done throughout
development. This may also include the authoring of an API, be it external or
internal.
Deployment and Maintenance
Deployment starts after the code is appropriately
tested, is approved for release and sold or otherwise distributed into a
production environment.
Software Training and Support is important
because a large percentage of software projects fail because the developers
fail to realize that it doesn’t matter how much time and planning a development
team puts into creating software if nobody in an organization ends up using it.
People are often resistant to change and avoid venturing into an unfamiliar
area, so as a part of the deployment phase, it is very important to have
training classes for new clients of your software.
Maintenance and enhancing software to cope with
newly discovered problems or new requirements can take far more time than the
initial development of the software. It may be necessary to add code that does
not fit the original design to correct an unforeseen problem or it may be that
a customer is requesting more functionality and code can be added to
accommodate their requests. It is during this phase that customer calls come in
and you see whether your testing was extensive enough to uncover the problems
before customers do.
Bug Tracking System tools are often deployed at
this stage of the process to allow development teams to interface with
customer/field teams testing the software to identify any real or perceived
issues. These software tools, both open source and commercially licensed,
provide a customizable process to acquire, review, acknowledge, and respond to
reported issues.