Systems Development Life Cycle (SDLC)
Definition of Systems Development Life Cycle (SDLC)
The Systems Development Life Cycle is a process that involves conceptualizing, building, implementing, and improving hardware, software, or both. The System Development Life Cycle must take into consideration both the end user requirements and security concerns throughout all its phases. From banking to gaming, transportation to healthcare, the System Development Life Cycle is applicable to any field that requires computerized systems.
The systems development life cycle (SDLC) is a conceptual model used in project management that describes the stages involved in an information system development project, from an initial feasibility study through maintenance of the completed application. SDLC can apply to technical and non-technical systems. In most use cases, a system is an IT technology such as hardware and software. Project and program managers typically take part in SDLC, along with system and software engineers, development teams, and end-users. Every hardware or software system will go through a development process which can be thought of as an iterative process with multiple steps. SDLC is used to give a rigid structure and framework to define the phases and steps involved in the development of a system. SDLC is also an abbreviation for Synchronous Data Link Control and software development life cycle. The software development life cycle is a very similar process to the systems development life cycle. Still, it focuses exclusively on the development life cycle of software.
Overview of Systems Development Life Cycle (SDLC)
A systems development life cycle is composed of a number of clearly defined and distinct work phases, which are used by systems engineers and systems developers to plan for design, build, test, and deliver information systems. Like anything that is manufactured on an assembly line, an SDLC aims to produce high-quality systems that meet or exceed customer expectations, based on customer requirements, by delivering systems that move through each clearly defined phase within scheduled time frames and cost estimates. Computer systems are complex and often (especially with the recent rise of service-oriented architecture) link multiple traditional systems potentially supplied by different software vendors. To manage this level of complexity, a number of SDLC models or methodologies have been created, such as waterfall, spiral, Agile software development, rapid prototyping, incremental, and synchronize and stabilize.
SDLC can be described along a spectrum of agile to iterative to sequential methodologies. Agile methodologies, such as XP and Scrum, focus on lightweight processes which allow for rapid changes (without necessarily following the pattern of SDLC approach) along the development cycle. Iterative methodologies, such as Rational Unified Process and dynamic systems development method, focus on limited project scope and expanding or improving products by multiple iterations. Sequential or big-design-up-front (BDUF) models, such as waterfall, focus on complete and correct planning to guide large projects and risks to successful and predictable results. Other models, such as anamorphic development, tend to focus on a form of development that is guided by project scope and adaptive iterations of feature development.
In project management, a project can be defined with a project life cycle (PLC) and an SDLC, during which slightly different activities occur. According to Taylor (2004), "the project life cycle encompasses all the activities of the project, while the systems development life cycle focuses on realizing the product requirements."
SDLC is used during the development of an IT project; it describes the different stages involved in the project, from the drawing board, through the completion of the project.
The SDLC is not a methodology per se but rather a description of the phases in the life cycle of a software application. These phases (broadly speaking) are investigation, analysis, design, build, test, implementation, and maintenance and support. All software development methodologies (such as the more commonly known waterfall and scrum methodologies) follow the SDLC phases, but the method of doing that varies vastly between methodologies. In the Scrum methodology, for example, one could say a single user story goes through all the phases of the SDLC within a single two-week sprint. Contrast this to the waterfall methodology, as another example, where every business requirement (recorded in the analysis phase of the SDLC in a document called the Business Requirements Specification) is translated into feature/functional descriptions (recorded in the design phase in a document called the Functional Specification) which are then all built in one go as a collection of solution features typically over a period of three to nine months, or more. These methodologies are obviously quite different approaches, yet they both contain the SDLC phases in which a requirement is born, then travels through the life cycle phases ending in the final phase of maintenance and support, after which (typically) the whole life cycle starts again for a subsequent version of the software application.
Phases of the System-Development Life Cycle
Traditionally, the systems-development life cycle consisted of five stages. That has now increased to seven phases. Increasing the number of steps helped systems analysts to define clearer actions to achieve specific goals. Similar to a project life cycle (PLC), the SDLC uses a systems approach to describe a process. It is often used and followed when there is an IT or IS project under development. The SDLC highlights different stages (phrases or steps) of the development process. The life cycle approach is used so users can see and understand what activities are involved within a given step. It is also used to let them know that at any time, steps can be repeated or a previous step can be reworked when needing to modify or improve the system.
- Planning: This is the first phase in the systems development process. It identifies whether or not there is a need for a new system to achieve a business"s strategic objectives. This is a preliminary plan (or a feasibility study) for a company"s business initiative to acquire the resources to build on an infrastructure to modify or improve a service. The company might be trying to meet or exceed expectations for their employees, customers, and stakeholders too. The purpose of this step is to find out the scope of the problem and determine solutions. Resources, costs, time, benefits, and other items should be considered at this stage.
- Systems Analysis and Requirements: The second phase is where businesses will work on the source of their problem or the need for a change. In the event of a problem, possible solutions are submitted and analyzed to identify the best fit for the ultimate goal(s) of the project. This is where teams consider the functional requirements of the project or solution. It is also where system analysis takes place—or analyzing the needs of the end-users to ensure the new system can meet their expectations. Systems analysis is vital in determining what a business"s needs are, as well as how they can be met, who will be responsible for individual pieces of the project, and what sort of timeline should be expected. There are several tools businesses can use that are specific to the second phase. They include:
- CASE (Computer Aided Systems/Software Engineering)
- Requirements gathering
- Structured analysis
- Systems Design: The third phase describes, in detail, the necessary specifications, features, and operations that will satisfy the functional requirements of the proposed system which will be in place. This is the step for end users to discuss and determine their specific business information needs for the proposed system. It"s during this phase that they will consider the essential components (hardware and/or software), structure (networking capabilities), processing, and procedures for the system to accomplish its objectives.
- Development: The fourth phase is when the real work begins—in particular, when a programmer, network engineer, and/or database developer are brought on to do the major work on the project. This work includes using a flow chart to ensure that the process of the system is properly organized. The development phase marks the end of the initial section of the process. Additionally, this phase signifies the start of production. The development stage is also characterized by instillation and change. Focusing on training can be a huge benefit during this phase.
- Integration and Testing: The fifth phase involves systems integration and system testing (of programs and procedures)—normally carried out by a Quality Assurance (QA) professional—to determine if the proposed design meets the initial set of business goals. Testing may be repeated, specifically to check for errors, bugs, and interoperability. This testing will be performed until the end user finds it acceptable. Another part of this phase is verification and validation, both of which will help ensure the program"s successful completion.
- Implementation: The sixth phase is when the majority of the code for the program is written. Additionally, this phase involves the actual installation of the newly-developed system. This step puts the project into production by moving the data and components from the old system and placing them in the new system via a direct cutover. While this can be a risky (and complicated) move, the cutover typically happens during off-peak hours, thus minimizing the risk. Both system analysts and end-users should now see the realization of the project that has implemented changes.
- Operations and Maintenance: The seventh and final phase involves maintenance and regular required updates. This step is when end users can fine-tune the system, if they wish, to boost performance, add new capabilities, or meet additional user requirements.
Eighth Phase in the SDLC Process
In addition to the above seven phases, an eighth phase determining the Disposition of a System, must be added to the SDLC process, as highlighted in the figure below
Throughout the System Development Life Cycle, system owners must be cognizant of changes to the system. Since systems routinely experience changes over time to accommodate new requirements, new technologies, or new risks, they must be routinely analyzed with respect to the security posture. Minor changes typically have little impact on the security posture of a system. These changes include standard maintenance, adding or deleting users, applying standard security patches, or other routine activities. However, significant changes require an added level of attention and action. Changes, such as installing a new operating system, port modification, new hardware platforms, or changes to the security controls, should trigger a re-authorization of the system.
System Development Life Cycle Vs. Software Development Life Cycle
What is the difference between the system development life cycle and the software development life cycle? The system development life cycle involves end-to-end people, processes, and technology deployments, which include software, infrastructure, and change management. The software development life cycle focuses exclusively on software components, such as development planning, technical architecture, software quality testing, and the actual deployment of the software. Put simply, the system development life cycle is more holistic and comprehensive.
System Development Life Cycle (SDLC) Approaches
The Systems (or Software) Development Life Cycle (SDLC) is a domain of competency used in systems engineering, information systems, and software engineering to describe a process for planning, creating, testing, and deploying an information system. In this article, we would review the various paradigms of SDLC-based development approaches which have emerged in the discipline of Systems Analysis and Design.
There are basically three paradigms of Software Development Approaches
- The linear approaches: This takes specific activities and represents them as separate phases such as requirements specification, software, design, implementation, testing, and so on. After each stage is defined, it is `signed-off’, and development goes on to the following stage
- Iterative approaches: This approach interleaves the activities of specification, development & validation. An initial system is rapidly developed from very abstract specifications. This is then refined with specific inputs from the stakeholders to produce a system that satisfies the needs of the stakeholders.
- Component-based software development: This technique assumes that parts of the system already exist and the rest needs to be planned for and designed. The system development process focuses on integrating these parts rather than developing them from scratch. Components-based approaches break down the scope of the large system into modules that are generic and can be reused into other sections of the developed information system.
System Development Methodology
There are numerous SDLC methodologies available, and the real beauty in this sea of options lies in selecting the best System Development methodology for a unique project. Each system development methodology carries its characteristic set of pros and cons that must be weighed to assertively decide which one will yield the best results for an information system development project. According to Techopedia, “various SDLC models have been created and can be implemented, including Waterfall, Rapid Prototyping, Incremental, Spiral, Fountain, Build and Fix, Synchronize and Stabilize, and Rapid Application Development (RAD).” Next, we are going to list some of the most prominent SDLC methodologies available.
- Waterfall: Known by many as the traditional methodology, Waterfall is a sequential and linear flow used to develop a system software application. In Waterfall, the process is outlined by a series of finite stages, and each one must be fully completed before moving on to the next one. The Waterfall approach follows this order: requirements, design, execution, testing, and release.
- Rapid Application Development (RAD): It is an adaptive approach that puts less emphasis on planning and more emphasis on an adaptive process. Oftentimes, prototypes are used in RAD to substitute design specifications. RAD is considered one of the most popular SDLC models for software that is driven by user interface requirements. From its origin, RAD was created as a response to the plan-driven Waterfall methodology that designs and builds things almost as structured as done with a building. RAD is all about fast prototyping and iterative delivery that falls into the parental category of Agile.
- Prototyping: This methodology creates prototypes of the software application to simulate the functioning aspects of a desired final product. Prototyping is mainly used to visualize components of the software solution to ensure the final product meets customer requirements. There are several variants of prototyping, but they are mainly categorized into throwaway and evolutionary. Throwaway prototyping creates a model that will eventually be discarded, and evolutionary prototyping refers to a robust prototype that will be constantly refined to reach its final version.
- Spiral: The spiral methodology can be thought of as a combination of the Waterfall methodology and the prototyping methodology. It is typically the methodology of choice for large and complex projects because it uses the same stages as the Waterfall methodology but separates them into planning, risk assessment, and prototype building.
- Agile: The iterative and incremental methodology recognized for excellence, Agile is a framework that evolves through collaboration between teams. It is a dynamic and interactive methodology that works in sprints with a defined duration to produce lightweight deliverables that help reduce the time in which software is released. It advocates for adaptive planning, evolutionary development, early delivery, continuous improvement, and rapid and flexible responsiveness to changes.
- Iterative and Incremental: The iterative and incremental methodology is designed to overcome any fault or shortcoming of the Waterfall methodology. The iterative and incremental methodology begins with initial planning and ends with the deployment of the solution, with cyclic interaction in between. In essence, it develops a software application via iterative and repeated cycles that are performed incrementally so developers can learn from the development of previous portions of the software.
- V Model: This methodology is considered an extension of the Waterfall methodology, but instead of flowing down linearly, the steps are designed upward to form a V shape. In this methodology, the relationships between each phase of the development life cycle are associated with a testing phase. The horizontal and vertical axes display the time or project completeness (left to right) and abstraction level (coarsest-grain abstraction).
These methodologies can be combined to build a hybrid solution that better meets a specific project’s requirements. Usually, organizations rely on the expertise provided by System Analysts to decide and select the best methodology or combination of methodologies to use for a specific project. In the following section, we are going to explore the System Analyst role and how their valuable skill set has become a key component in the success of effective System Development Life Cycle projects.
Benefits and Disadvantages of a Structured and Well-Defined System Development Life Cycle
There are numerous benefits to deploying a system development life cycle that, include the ability to pre-plan and analyze structured phases and goals. The goal-oriented processes of SDLC are not limited to a one-size-fits-all methodology and can be adapted to meet changing needs. However, if well-defined for your business, you can:
- Have a clear view of the entire project, the personnel involved, staffing requirements, a defined timeline, and precise objectives to close each phase.
- Base costs and staffing decisions on concrete information and need.
- Provide verification, goals, and deliverables that meet design and development standards for each step of the project, developing extensive documentation throughout.
- Provide developers with a measure of control through the iterative, phased approach, which usually begins with an analysis of costs and timelines.
- Improve the quality of the final system with verification at each phase.
In these same areas, there are some who find disadvantages when following a structured SDLC. Some of the downfalls include:
- Many of the methods are considered inflexible, and some suffer from outdated processes.
- Since you base the plan on requirements and assumptions made well before the project’s deployment, many practitioners identify difficulty in responding to changing circumstances in the life cycle.
- Some consider the structured nature of SDLC to be time and cost prohibitive.
- Some teams find it too complex to estimate costs, are unable to define details early on in the project, and do not like rigidly defined requirements.
- Testing at the end of the life cycle is not favorable to all development teams. Many prefer to test throughout their process.
- The documentation involved in a structured SDLC approach can be overwhelming.
- Teams who prefer to move between stages quickly and even move back to a previous phase find the structured phase approach challenging.
- Defining Systems Development Life Cycle (SDLC)
- What is Systems Development Life Cycle (SDLC)?
- Overview of Systems Development Life Cycle (SDLC)
- The Seven Phases of the System-Development Life Cycle
- System Development Life Cycle Vs. Software Development Life Cycle
- System Development Life Cycle (SDLC) Approaches
- System Development Methodology
- Benefits and Disadvantages of a Structured and Well-Defined System Development Life Cycle