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

Popular Posts