The
development life cycle of the software is being discussed in this chapter. The
project is all about the development of the software for the purposes of facial
recognition. The flow of the software, the modules as well s the sub-modules
suggest to consider SDLC (Software Development Lifecycle) in order to achieve
the said purpose. This framework will better assist the directions of the
current software.
It
can be said that SDLC needs to be followed brutally. It is a step-by-step
procedure in order to support the development of the software. It is also
termed as the software development process as it better helps to direct all the
project-related processes. Every phase of the SDLC is further sub-categorized
into certain steps. The more accurately this flow is followed, the more
effective is the completion of the software. The entire SDLC process is
classified into the phases as given:
Planning:
This phase is related to the plans related to the management of the entire
project. It help in the planning for the allocation of the resources, planning
for the capacity, decision-making for the project schedule, estimates related
to the costs and provisioning etc. It
tends to provide with the project plans, project schedules, cost estimates as
well as the procurement requirements.
Requirement
Analysis: For the purposes of software development, the analysis of the
requirements is performed in this phase.
Design
and prototyping: In this phase, work on the design and the architecture of the
software is started. It makes use of the established patterns for the
development of the software.
Software
Development: This phase provides with the developed software. This method can
either be carried out as agile methodology or as the single block-of-effort
(i.e., waterfall). It tries to provide with the software in the working form as
soon as possible. The testable, functional software is the output of the said
phase.
Testing:
It is considered to the most significant phase of SDLC. Without testing, it is
not possible to deliver quality software. The quality of the software is
measured by considering as given: quality of the code, unit testing,
integration testing, testing for checking the performance and the security
testing.
Deployment:
It is perceived to be a highly automated phase. The moment when the software is
ready it is then deployed.
Maintenance:
In order to ensure the proper operations of the software, the software is
monitored constantly. Bugs and defects discovered in Production must be
reported and responded to, which often feeds work back into the process.
SDLC
is of different types. The most relevant SDLC models for the said project work
are as given:
SDLC Comparison
SDLC
Model
|
Description
|
Advantages
|
Disadvantages
|
Waterfall
Model (Fig. 3.1)
|
The sequential
7 steps are used for this model. It is used effectively for the well-known
and clear requirements. They are less likely to be changed over the time.
|
Straightforward.
Simple
& easily understandable
Easily
controllable.
A
clear definition for the concepts is provided.
Well-documented
results and software processes.
Works
best for small-scale software development.
The
phases of this model follow the sequential flow for the completion of the
project one after another.
|
No
development for the next phase until the previous phase is completed
properly.
Unable
to support the lengthy and complex software development.
High
association of the risks for the changing requirements during the life cycle
of the project.
The
software which follows the regular updates does not suit for the waterfall
model.
|
Incremental
Model (Fig. 3.2)
|
This method
for the software development id built based on the waterfall model.
It focuses
more on the development of the single parts of the software.
Once a part
has been completed, it can then be used to identify more requirements of the
software.
|
It
tends to focus on producing the important functionality early.
Better
suggested for the long-term projects.
For
every increment to the model, it is better able to be used productively.
It
is easy to make changes to the requirements.
It
believes in the faster delivery of the product.
It
best suits the projects with the new and the latest technologies.
|
It is mandatory to pre-plan for each
increment.
It
is vital to know the requirements of the complete system in advance.
|
Agile Model
(Fig. 3.3)
|
The small and
fast incremental cycles better support the agile models. Every new cycle is
highly dependent on the functionality of the previous cycle.
|
Straightforward.
Simple
& easily understandable
Easily
controllable.
Supports
flexibility.
Have
the ability to works with both fixed or the changing requirements.
Rapid
development of the important functionality is better supported.
The
partial parts of the software can be produced effectively.
The
development of the multi-parts at the same time is supported by this model.
|
Less
supports the development of the complex software.
Risks
with areas such as maintainability.
|
Fig.:
SDLC Waterfall Model (Source: https://www.youtube.com/watch?v=LHcpEwvpb-s)
Fig. SDLC Iterative Incremental Model
(Source: https://www.javatpoint.com/software-engineering-iterative-model)
Fig.:
SDLC Agile Model (Source: https://ll-labs.readthedocs.io/en/latest/calm/sdlc.html)
Basics for the
selected Chosen SDLC along
with the evaluation
Initially, it was assumed that the
water model for the SDLC is ideal for the said project. It was perceived
because of the simplicity of the said model. But the current project comprises
of varying phases and the differing functionality. The use of the incremental
SDLC model is better suggested for the said software. It can be either the
agile model or the iterative incremental model. The final decision was made to
go forward by choosing the iterative incremental model. This model is better
suggested as it helps to document the software requirements along with the modules
and sub-modules more than the agile model. Based on this model, it was possible
to produce the partially functioning software at the completion of each
iteration.
As an example we can take the
addition of the functionality of the camera to the project modules. After the
completion of the iteration, this module helped to add the functionality of
saving photos and videos from the camera. The rapid development of the
functionality is possible with the use of iterative incremental model. The
current software comprises of different modules and the sub-modules which need
to be implemented and tested upon development. One of the significant reasons
for the choice of this software development model is the support for the use of
the latest and the advanced technologies. The other reasons include as given:
It
more focuses on producing the imperative functionality early.
More
suggested for the long-term projects.
For
every increment to the model, it is better able to be used productively.
It
is easy to make changes to the requirements.
It
believes in the faster delivery of the product.
It
best suits the projects with the new and the latest technologies.