SDLC

Model of the Systems Development Life Cycle with the Maintenance bubble highlighted. The **Systems Development Life Cycle (SDLC)**, or //Software Development Life Cycle// in and is the process of creating or altering systems, and the models and that people use to develop these systems. The concept generally refers to or In software engineering the SDLC concept underpins many kinds of These methodologies form the framework for planning and controlling the creation of an information system]: the

Overview
Systems Development Life Cycle (SDLC) is a logical process used by a to develop an includingand user (stakeholder) ownership. Any SDLC should result in a high quality system that meets or exceeds customer expectations, reaches completion within time and cost estimates, works effectively and efficiently in the current and planned and is inexpensive to maintain and cost-effective to enhance.] Computer systems are complex and often (especially with the recent rise of link multiple traditional systems potentially supplied by different software vendors. To manage this level of complexity, a number of systems development life cycle (SDLC) models have been createdbuild and fix"; and "synchronize and stabilizeSDLC models can be described along a spectrum of agile to iterative to sequential. such as andfocus on light-weight processes which allow for rapid changes along the development cycle. methodologies, such asand focus on limited project scopes and expanding or improving products by multiple iterations. Sequential or big-design-upfront (BDUF) models, such as focus on complete and correct planning to guide large projects and risks to successful and predictable resultsSome agile and iterative proponents confuse the term SDLC with sequential or "more traditional" processes; however, SDLC is an umbrella term for all methodologies for the design, implementation, and release of software.]] In a project can be defined both with a (PLC) and an SDLC, during which slightly different activities occur. According to Taylor (2004) "the project life cycle encompasses all the activities of the while the systems development life cycle focuses on realizing the product

History
The systems development lifecycle (SDLC) is a type of methodology used to describe the process for buildingintended to develop information systems in a very deliberate, structured and methodical way, reiterating each stage of theThe systems development life cycle, according to Elliott & Strachan & Radford (2004), "originated in the 1960s to develop large scale functional in an age of large scale Information systems activities revolved around heavyandSeveral systems development frameworks have been partly based on SDLC, such as the (SSADM) produced for thein the 1980s. Ever since, according to Elliott (2004), "the traditional life cycle approaches to systems development have been increasingly replaced with alternative approaches and frameworks, which attempted to overcome some of the inherent deficiencies of the traditional SDLC".]

Systems development phases
Systems Development Life Cycle (SDLC) adheres to important phases that are essential for developers, such as and are explained in the section below. 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 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. The SDLC can be divided into ten phases during which defined IT work products are created or modified. The tenth phase occurs when the system is disposed of and the task performed is either eliminated or transferred to other systems. The tasks and work products for each phase are described in subsequent chapters. Not every project will require that the phases be sequentially executed. However, the phases are interdependent. Depending upon the size and complexity of the project, phases may be combined or may overlap.]

 Initiation/planning
To generate a high-level view of the intended and determine the of the project. The is sometimes 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 or organizational, and technical. Furthermore, it is also used as a reference to keep the project on track and to evaluate the progress of the MIS team.] The MIS is also a complement of those phases. This phase is also called as analysis phase.

 Requirements gathering and analysis
The goal of is to determine where the problem is in an attempt to fix the system. This step involves the system in different pieces and drawing to analyze the situation, analyzing project goals, breaking down what needs to be created and attempting to engage users so that definitecan be defined. Requirements Gathering sometimes requires individuals/teams from client as well as service provider sides to get detailed and accurate requirements.

Design
In 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 orThe design stage takes as its initial input the requirements identified in the approved requirements document. 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
and subsystem 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
<span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">The code is tested at various levels inUnit, system and user acceptance testings 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. Iteration is not generally part of the but usually some occur at this stage. Types of testing: <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">The of the system includes changes and enhancements before the decommissioning or sunset of the system. 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.

<span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Management and control
<span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">SDLC Phases Related to Management Controls. 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. Each of the SDLC phase objectives are described in this section with key deliverables, a description of recommended tasks, and a summary of related control objectives for effective management. 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 (WBS) to capture and schedule the work necessary to complete 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. There are some key areas that must be defined in the WBS as part of the SDLC policy. The following diagram describes three key areas that will be addressed in the WBS in a manner established by the project manager.[9]

<span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;"> Work breakdown structure organization
<span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Work Breakdown Structure.] The upper section of the (WBS) should identify the major phases and milestones of the project in a summary fashion. In addition, the upper section should provide an overview of the full scope and timeline of the project and will be part of the initial project description effort leading to project approval. The middle section of the WBS is based on the seven Systems Development Life Cycle (SDLC) phases as a guide for WBS task development. The WBS elements should consist of milestones and “tasks” as opposed to “activities” and have a definitive period (usually two weeks or more). Each task must have a measurable output (e.g. document, decision, or analysis). A WBS task may rely on one or more activities and may require close coordination with other tasks, either internal or external to the project. Any part of the project needing support from contractors should have a (SOW) written to include the appropriate tasks from the SDLC phases. The development of a SOW does not occur during a specific phase of SDLC but is developed to include the work from the SDLC process that may be conducted by external resources such as contractors.]

<span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;"> Baselines in the SDLC
<span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Baselines are an important part of the Systems Development Life Cycle (SDLC). These baselines are established after four of the five phases of the SDLC and are critical to the iterative nature of the model ]. Each baseline is considered as a milestone in the SDLC.
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Functional Baseline: established after the conceptual design phase.
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Allocated Baseline: established after the preliminary design phase.
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Product Baseline: established after the detail design and development phase.
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Updated Product Baseline: established after the production construction phase.

<span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;"> Complementary to SDLC
<span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Complementary to Systems Development Life Cycle (SDLC) are:

<span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;"> Comparison of Methodologies (Post, & Anderson 2006)[11]||~ ||~ SDLC ||~ RAD ||~ Open Source ||~ Objects ||~ JAD ||~ Prototyping ||~ End User ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Joint Applications Design
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">(RAD)
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">(XP); extension of earlier work in Prototyping and RAD.
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Development
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Control || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Formal || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">MIS || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Weak || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Standards || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Joint || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">User || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">User ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Time Frame || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Long || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Short || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Medium || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Any || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Medium || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Short || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Short ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Users || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Many || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Few || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Few || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Varies || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Few || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">One or Two || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">One ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">MIS staff || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Many || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Few || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Hundreds || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Split || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Few || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">One or Two || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">None ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Transaction/DSS || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Transaction || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Both || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Both || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Both || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">DSS || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">DSS || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">DSS ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Interface || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Minimal || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Minimal || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Weak || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Windows || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Crucial || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Crucial || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Crucial ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Documentation and training || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Vital || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Limited || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Internal || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">In Objects || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Limited || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Weak || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">None ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Integrity and security || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Vital || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Vital || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Unknown || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">In Objects || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Limited || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Weak || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Weak ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Reusability || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Limited || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Some || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Maybe || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Vital || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Limited || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Weak || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">None ||

<span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;"> Strengths and weaknesses
<span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Few people in the modern computing world would use a strict for their Systems Development Life Cycle (SDLC) as many modern methodologies have superseded this thinking. Some will argue that the SDLC no longer applies to models like Agile computing, but it is still a term widely in use in Technology circles. The SDLC practice has advantages in traditional models of software development, that lends itself more to a structured environment. The disadvantages to using the SDLC methodology is when there is need for iterative development or (i.e. web development or e-commerce) where stakeholders need to review on a regular basis the software being designed. Instead of viewing SDLC from a strength or weakness perspective, it is far more important to take the best practices from the SDLC model and apply it to whatever may be most appropriate for the software being designed. A comparison of the strengths and weaknesses of SDLC: Strength and Weaknesses of SDLC [11]||~ Strengths ||~ Weaknesses || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">An alternative to the SDLC is ]], which combines prototyping, Joint Application Development and implementation of CASE tools. The advantages of RAD are speed, reduced development cost, and active user involvement in the development process. It should not be assumed that just because the waterfall model is the oldest original SDLC model that it is the most efficient system. At one time the model was beneficial mostly to the world of automating activities that were assigned to clerks and accountants. However, the world of technological evolution is demanding that systems have a greater functionality that would assist help desk technicians/administrators or information technology specialists/analysts
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Control. || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Increased development time. ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Monitor Large projects. || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Increased development cost. ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Detailed steps. || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Systems must be defined up front. ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Evaluate costs and completion targets. || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Rigidity. ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Documentation. || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Hard to estimate costs, project overruns. ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Well defined user input. || <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">User input is sometimes limited. ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Ease of maintenance. ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Development and design standards. ||
 * <span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">Tolerates changes in MIS staffing. ||

<span style="font-family: 'Comic Sans MS',cursive; font-size: 120%;">. In some cases, to extract the maximum output, the system should be re-engineered and spruced up. Once the ideal system is engineered or tuned, the development team studies the software requirement for the system.// This process is also known as **feasibility study**. In this phase, the development team visits the customer and studies their system. They investigate the need for possible software automation in the given system. By the end of the feasibility study, the team furnishes a document that holds the different **specific recommendations for the candidate system**. It also includes the personnel assignments, costs, project schedule, target dates etc…. The requirement gathering process is intensified and focussed specially on software. To understand the nature of the program(s) to be built, the system engineer or “Analyst” must understand the information domain for the software, as well as required function, behavior, performance and interfacing. The essential purpose of this phase is to find the need and to define the problem that needs to be solved.
 * 2. Software Requirement Analysis**
 * 3. System Analysis and Design**

In this phase, the software development process, the software’s overall structure and its nuances are defined. In terms of the client/server technology, the number of tiers needed for the package architecture, the database design, the data structure design etc… are all defined in this phase. A software development model is thus created. **Analysis and Design are very crucial** in the whole development cycle. Any glitch in the design phase could be **very expensive to solve in the later stage** of the software development. Much care is taken during this phase. The logical system of the product is developed in this phase. The design must be translated into a machine-readable form. The code generation step performs this task. If the design is performed in a detailed manner, code generation can be accomplished without much complication. Programming tools like **compilers, interpreters, debuggers** etc… are used to generate the code. Different high level programming languages like **C, C++, Pascal, Java** are used for coding. With respect to the type of application, the right programming language is chosen. Once the code is generated, the software program testing begins. Different testing methodologies are available to unravel the bugs that were committed during the previous phases. Different testing tools and methodologies are already available. Some companies build their own testing tools that are tailor made for their own development operations. The software will definitely undergo change once it is delivered to the customer. There can be many reasons for this change to occur. Change could happen because of some unexpected input values into the system. In addition, the changes in the system could directly affect the software operations. The software should be developed to accommodate changes that could happen during the post implementation period.
 * 4. Code Generation**
 * 5. Testing**
 * 6. Maintenance**