Let me start by explaining the Software development cycle.
It involves four phases that help create a software application. These phases
can further broken down but on a higher level they can be classified into the
following:
- Requirements gathering
- Development
- Testing
- Deployment
Requirements
Gathering – Any information about a software application can be called
as requirements. Requirement gathering involves collecting information about
the software that is going to be built from the person who requested for it or
needs it. Sometimes it is not even a person who gives you this information. These
requirements can be functional, visual, technical, etc. It might just be
defined as a functionality that the software, for example, create a login
functionality with username and password.
Requirements can very extremely high-level like our example
or could be detailed if you are lucky. In either case, it’s up to the people
involved to understand the needs and provide viable solutions.
These requirements are usually in layman’s language and now need
to be converted into functional specs. This makes the development process
smoother. So what are functional specs exactly? In our example, to create a
login functionality, a functional spec gives you details about what should
happen when an incorrect password in submitted or what happens when a username
is not entered or what are acceptable values in these fields or default values,
if any. Functional specs give you specific details related to all the components
of the software application being developed.
Once all the requirements are gathered and converted into
functional specs, they can be handed over to the development phase.
Development
– Once the requirements and functional specs are handed over, the development
of the application begins. Functional specs gives the developers a detailed description
of all the functional components of the application. The development can be
done as a whole or modular, if the application is too large.
Testing –
The development phase is followed by the testing phase. This is where all the developed
application components are tested to verify functionality against the requirements
or functional specs. The testing can be modular or as a whole as well depending
on the development process.
Any functionality that does not reflect the requirements or
functional specs is an error. This error may be termed as a bug, ticket, issue,
defects, etc. Each organization may have its own terminology. Any error reported
in the testing phase have to be fixed/resolved before the application can be
deployed.
Deployment
– The actual process of releasing the software to the users is called as deployment.
Once the testing has been completed, the application is ready for deployment.
Deployment involves extensive planning and well-timed sequential execution of
elements. A deployment plan is prepared which details the various steps
involved in the deployment with specific responsibilities assigned. It also
consists of contingency plans, in case of a deployment error.