Introduction to SDLC • Systems Development Life Cycle (SDLC) adheres to important phases that are essential for developers, such as planning, analysis, design, testing and implementation, • There are several Systems Development Life Cycle Models in existence. • The oldest model, that was originally regarded as "the Systems Development Life Cycle" is the waterfall model: a sequence of stages in which the output of each stage becomes the input for the next. • These stages generally follow the same basic steps but many different waterfall methodologies give the steps different names and the number of steps seem to vary between 4 and 7. • There is no definitively correct Systems Development Life Cycle model, but the steps can be characterized and divided in several steps
Initiation/planning • To generate a high-level view of the intended project and determine the goals of the project. • The feasibility study is used to present the project to upper management in an attempt to gain funding. • Projects are typically evaluated in three areas of feasibility: economical, operational, and technical. • It is also used as a reference to keep the project on track and to evaluate the progress of the MIS team.
Requirements gathering and analysis • The goal of systems analysis is to determine where the problem is in an attempt to fix the system. • This step involves breaking down the system in different pieces and drawing diagrams to analyze the situation. • Analyze project goals, break down functions that need to be created, and attempt to engage users so that definite requirements can be defined. • Requirement Gathering requires individual/team from client as well as service provider side to get a detailed and accurate requirements.
Design • In systems design functions and operations are described in detail, including screen layouts, business rules, process diagrams and other documentation. • The output of this stage will describe the new system as a collection of modules or subsystems. • The design stage takes as its initial input the requirements identified in the approved requirements document (SRS). • For each requirement, a set of one or more design elements will be produced as a result of interviews, workshops, and/or prototype efforts. • Design elements describe the desired software features in detail, and generally include functional hierarchy diagrams, screen layout diagrams, tables of business rules, business process diagrams, pseudocode, and a complete entity-relationship diagram with a full data dictionary. • These design elements are intended to describe the software in sufficient detail that skilled programmers may develop the software with minimal additional input.
Build or coding • Modular and subsystem programming code will be accomplished during this stage. • Unit testing and module testing are done in this stage by the developers. • This stage is intermingled with the next in that individual modules will need testing before integration to the main project.
Testing • The code is tested at various levels in software testing. • Unit, system and user acceptance testing are often performed. • This is a grey area as many different opinions exist as to what the stages of testing are and how much if any iteration occurs. • Types of testing: • Data set testing. • Unit testing • System testing • Integration testing • Black box testing • White box testing • Module testing • Regression testing • Automation testing • User acceptance testing
Operations and maintenance • The deployment of the system includes changes and enhancements before the decommissioning or sunset of the system. • Maintaining the system is an important aspect of SDLC. As key personnel change positions in the organization, new changes will be implemented, which will require system updates
Management and control • The Systems Development Life Cycle (SDLC) phases serve as a programmatic guide to project activity and provide a flexible but consistent way to conduct projects to a depth matching the scope of the project. • It is critical for the project manager to establish and monitor control objectives during each SDLC phase while executing projects. • Control objectives help to provide a clear statement of the desired result or purpose and should be used throughout the entire SDLC process. • Control objectives can be grouped into major categories (Domains), and relate to the SDLC phases as shown in the figure.
To manage and control any SDLC initiative, each project will be required to establish some degree of a Work Breakdown Structure (WBS) to capture and schedule the work necessary to complete the project. • A work breakdown structure (WBS) in project management and systems engineering, is a tool used to define and group a project's discrete work elements (or tasks) in a way that helps organize and define the total work scope of the project • The WBS and all programmatic material should be kept in the “Project Description” section of the project notebook. • The WBS format is mostly left to the project manager to establish in a way that best describes the project work.
Strengths of SDLC • Control. • Monitor Large projects. • Detailed steps. • Evaluate costs and completion targets. • Documentation. • Well defined user input. • Ease of maintenance. • Development and design standards. • Tolerates changes in MIS staffing.
Weakness of SDLC • Increased development time. • Increased development cost. • Systems must be defined up front. • Rigidity. • Hard to estimate costs & project overruns. • User input is sometimes limited.
Waterfall Model • The waterfall model is a sequential software development process, in which progress is seen as flowing steadily downwards (like a waterfall) through the phases of Initiation, Analysis, Design (validation), Construction, Testing and maintenance • The first formal description of the waterfall model is often cited to be an article published in 1970 by Winston W. Royce (1929–1995).
Maintenance Waterfall Model
Disadvantages of the Waterfall Model. • As it is very important to gather all possible requirements during the Requirement Gathering and Analysis phase in order to properly design the system, not all requirements are received at once, the requirements from customer goes on getting added to the list even after the end of "Requirement Gathering and Analysis" phase, this affects the system development process and its success in negative aspects. • The problems with one phase are never solved completely during that phase and in fact many problems regarding a particular phase arise after the phase is signed off, this results in badly structured system as not all the problems (related to a phase) are solved during the same phase. • The project is not partitioned in phases in flexible way. • As the requirements of the customer goes on getting added to the list, not all the requirements are fulfilled, this results in development of almost unusable system. These requirements are then met in newer version of the system; this increases the cost of system development
Prototyping Model • Software prototyping, an activity during certain software development, is the creation of prototypes, i.e., incomplete versions of the software program being developed. • A prototype typically simulates only a few aspects of the features of the eventual program, and may be completely different from the eventual implementation. • The conventional purpose of a prototype is to allow users of the software to evaluate developers' proposals for the design of the eventual product by actually trying them out, rather than having to interpret and evaluate the design based on descriptions. • Prototyping can also be used by end users to describe and prove requirements that developers have not considered.
The process of prototyping involves the following steps • Identify basic requirements • Determine basic requirements including the input and output information desired. Details, such as security, can typically be ignored. • Develop Initial Prototype • The initial prototype is developed that includes only user interfaces. • Review • The customers, including end-users, examine the prototype and provide feedback on additions or changes. • Revise and Enhance the Prototype • Using the feedback both the specifications and the prototype can be improved. Negotiation about what is within the scope of the contract/product may be necessary. If changes are introduced then a repeat of steps #3 ands #4 may be needed
Software prototyping has many variants • Throwaway Prototyping: Throwaway or Rapid Prototyping refers to the creation of a model that will eventually be discarded rather than becoming part of the final delivered software. After preliminary requirements gathering is accomplished, a simple working model of the system is constructed to visually show the users what their requirements may look like when they are implemented into a finished system • The steps in this approach are: • Write preliminary requirements • Design the prototype • User experiences/uses the prototype, specifies new requirements. • Writing final requirements • Developing the real products.
Evolutionary Prototyping is quite different from Throwaway Prototyping. • The main goal when using Evolutionary Prototyping is to build a very robust prototype in a structured manner and constantly refine it. • "The reason for this is that the Evolutionary prototype, when built, forms the heart of the new system, and the improvements and further requirements will be built.” • Evolutionary Prototypes have an advantage over Throwaway Prototypes in that they are functional systems. Although they may not have all the features the users have planned, they may be used on an interim basis until the final system is delivered.
Spiral model • The spiral model was defined by Barry Boehm in his 1988 article "A Spiral Model of Software Development and Enhancement". This model was not the first model to discuss iterative development, but it was the first model to explain why the iteration matters. • As originally envisioned, the iterations were typically 6 months to 2 years long. Each phase starts with a design goal and ends with the client (who may be internal) reviewing the progress thus far. Analysis and engineering efforts are applied at each phase of the project, with an eye toward the end goal of the project.
Phases in "Spiral Model" • Plan: In this phase, the objectives, alternatives and constraints of the project are determined and are documented. The objectives and other specifications are fixed in order to decide which strategies/approaches to follow during the project life cycle. • Risk Analysis: This phase is the most important part of "Spiral Model". In this phase all possible (and available) alternatives, which can help in developing a cost effective project are analyzed and strategies are decided to use them. This phase has been added specially in order to identify and resolve all the possible risks in the project development. If risks indicate any kind of uncertainty in requirements, prototyping may be used to proceed with the available data and find out possible solution in order to deal with the potential changes in the requirements. • Engineering: In this phase, the actual development of the project is carried out. The output of this phase is passed through all the phases iteratively in order to obtain improvements in the same. • Customer Evaluation: In this phase, developed product is passed on to the customer in order to receive customer’s comments and suggestions which can help in identifying and resolving potential problems/errors in the software developed. This phase is very much similar to TESTING phase.