System development life cycle
Introduction
System development life cycle (SDLC) is
simply the step by step highly structured process for developing of any
software product (Massey & Satao, 2012). It allows then project leaders to
supervise as well as configure the entire development process of any system or
software. There if the usage of the divide and conquer technique highly
applicable in many of the SDLC models. There is breaking of complex tasks into
smaller manageable components. Software or system developers employ SDLC to
analyze code, test and deploy a software system. There are several of the SDLC
models, but this paper will have a discussion of the seven step SDLC model and
the incremental model.
The
seven step SDLC
The model entails seven steps including
preliminary investigation, requirements analysis, system design, system coding,
system testing, system implementation and system maintenance (Shah, 2008). SDLC begins with a written request known as a
system request; that embodies the needs of the system under development, or it
describes the desired improvements by the management. A request entails the
creation of a system that meets the new business needs or the replacement of an
existing system that is no longer handling current requirements. We also call
this step as planning and it its major aim is to identify the nature and scope
of a problem or a business opportunity. The second step is the requirements
analysis that entails the analysis of the required functionality of the system
under development. It involves a fact-finding process to determine what the
intended system should do and the alternative techniques of solving the problem
at hand. It is the step where the management decides whether to develop the
system in-house, but a commercial package or make modifications to the existing
system.
Then the third step is the system
design, and it involves the development of blueprint that meets all the
requirements specified in the previous phase (Kumar et al., 2013). It
identifies all the required outputs, inputs, application programs, files, and
the manual procedures. The step might also include the design of the internal
as well as external controls to guarantee that system will have reliability,
accuracy, maintainability and security. What follows is the design document as
the system design specification and then presented to the management as well as
the users for the purpose of reviewing and approval. The fourth step if system
coding where there is the translating of the system requirements to a machine
readable format. The step is time-consuming, and it entails some rooms for
errors. The development team also carries out unit testing of the coding
process. After each step, the developers may carry out the demonstration of the
work done by the business analysts and enhancements may take place as per the
requirements of the analysts.
System testing is the fifth step of the
seven-step process of system development life cycle. It involves the migration of the application
to the testing environment and then carrying out different types of testing
such as integration testing, system testing, and acceptance testing. The user
acceptance testing is the final part of the testing process performed by the
end users to make sure that the developed system meets their expectations
(Craig & Basili, 2003). System
implementation is the sixth step, and it involves the installation of the system
and training of end users. It can be a full-blown implementation or the
performance of roll-out in stages right from the single branch then adding the
rest of the locations. Lastly, there is the maintenance phase that involves
making changes to the developed system so as to cope with the upcoming changes
in software, hardware and user demands.
The
incremental SDLC model
Many people view the incremental model
as the modification of the waterfall methodology phase (Munassar &
Govardhan, 2010). Its introduction was as a result of the increase in the size
of the software projects developed, and it subdivides the large projects into
smaller components and then it develops them incrementally. In the past, each
component had development through a linear process, passing through each step
in a sequential manner. The model involved the development of the components in
an overlapping version a then integrating them and testing the final system as
a whole. It provides a certain containing risk. If any one component runs into
trouble, the development of the other components can continue to have
development in an independent manner. One problem cannot hold up the whole
development process, unless the problem is universal, such as a faulty of the
underlying technology.
Another fashion of utilizing this model
is to develop the core software that contains many of the required
functionalities. There is then the release of the first increment to the users
and customers for evaluation. Additional functionalities and features can then
have development and delivery separately after their completion, and this
becomes the second release. Then there can be release three, four and so on.
Making use of the incremental model in this fashion offers a more akin approach
to an evolutionary software product development. The multiple releases of the
incremental model make it possible to make the evolution of the first release
in case it contains flaws, into an ideal solution via subsequent releases
(Craig & Basili, 2003).
Developing the project in that fashion
facilitates the evolutionary development of software and software management.
Many scholars advocate for the evolutionary software development, one of them
being Tom Gilb that wrote recently about the ‘evo’ technique (2004). The goals
of the project and the nature of the project is what determine the number of
incremental releases in this model. The development of each release is
independent though there is a link between the releases because future release
highly relies on the existing design and the code of the current release. It
utilizes the divide and conquers technique by dividing a large and complex
problem into parts. Such problems can intertwine, and this makes the decoupling
of the components into separately implementable components problematic. It will
need the developers to have an in-depth understanding of the problem, the usage
environment as well as the solutions to the problems (Rastogi, 2015).
The incremental development model for
systems or software takes place as successive releases with functionality
increasing. The actual users of the system provide feedbacks concerning each
release. The feedback from users is useful in deciding on the system
requirements as well as serving as an improvement for the next phase (Munassar
& Govardhan, 2010). It does not have the maintenance phase as each version
incorporates both the problem fixes and also new features. It may also
incorporate re-engineering; changing the design as well as the implementation
of the existing system functionality so as to have easier maintainability.
Getting early feedback is essential for developing a product that meets the
expectations of the users (Craig & Basili, 2003). It also reduces the
market risks and increases the quality of the final product.
Comparison
and contrast between the seven step SDLC model and the incremental model
·
Both of the seven step and the
incremental SDLC models have the aim of reducing the time and cost of the
system development.
·
The system developers in both cases have
to comprehend clearly the technology applied and the system requirements for
each stage.
·
Both the seven step SDLC model and the
incremental SDLC model define a systematic way of accomplishing the development
tasks and working during the development of the project.
·
With the seven step model, we decide at
the start on what we need to accomplish. The can also be the determination of
the staffing and the costs. It will be easy to calculate the IRR, ROI and the
expected values from the project. On the other hand, with the incremental
process the developers reserve the right to change their minds later. Because
this model puts a provision for future changes, we cannot calculate the ROI and
cannot predict values (Tynerblain.com, 2006).
·
With the incremental model, we can get
the nod for the ROI because the developers start to create the value earlier in
the system development. On the other hand, there is no creation of value early
in the development of the seven-step model, and so we cannot have ROI as early
as possible.
·
In the case of the seven step SDLC
model, the users of the software product can only preview the final
product. On the other hand, the users
can preview the software product from the early stages to the final in the case
of the incremental model.
Conclusion
SDLC process provides a guideline for the
system development (Shah, 2008). It defines the deliverables at each stage of
the development depending on which type of SDLC model one is deploying. The
seven step model is the default SDLC model and others freeze of expanding its
steps so as to make sure that there is the successful implementation of the
system depending on the requirements of the system under development.
References
Munassar,
N. & Govardhan, A. (2010). A comparison between five models of software
engineering. IJCSI international journal
of computer science issues, 7(5). Foundation series: Software process (waterfall process versus
incremental process). A comparative study of different software
development life cycle models in different scenarios. IJARCSMS, 1(3). (2003). Iterative
and Incremental Development: A Brief History.
Computer, 36(6), 47-56.
Stages of system development life cycle (SDLC).
Kumar,
N.et al. (2013). Evolving new software
development life cycle model SDLC-2013. IJSCE,
3(1). Software development life cycle models comparison, consequences. IJCSIT, 6(1), 168-172.
Comments
Post a Comment