SDLC (Systems Development Life-Cycle) is used in information systems, systems engineering, and software engineering as a process of creating new or altering existing systems. The SDLC can be thought of as a concept that lies beneath a number of software development methodologies currently employed throughout industry. From these, the framework to create, plan, and control an information system flows which is also known as the software development process.
Overview of the SDLC
SDLC describes a process used by engineers and analysts to create and deploy all aspects of an information system. These include defining requirements, validation, training, and emphasizing ownership of the system. Whenever SDLC is employed, the goal is to create a system that meets the primary stakeholder (or owner’s) expectations. These include but are not limited to delivering the project within time and cost constraints. Factors taken into account are system deployment, ease of use, and minimization of errors when connecting to legacy system components likely created by different software vendors. To help manage the inherent complexity when designing Enterprise software, there have been several SDLC based models created such as the Waterfall, Spiral, and Agile methodologies.
An SDLC-based software engineering model can range between agile to sequential methods depending on the suitability of the method to the project or task at hand. Each of the methodologies has different levels of risk and benefits to balance within the scope of the project requirements, budget, and delivery timelines. Models such as the Waterfall focus on exact and complete planning suitable for large projects where Scrum focuses on lightweight process that allow for rapid changes throughout the software development life-cycle. Regardless of the method chosen, the SDLC does not equal fully the project life cycle or PLC. The SDLC focuses on the product requirements while the PLC includes all activities of the project (think marketing, sales, other business matters, etc).
According to Elliot & Strachan & Radford (2004), the SDLC originated in the 1960’s to help crate large businesses systems. The information systems of the day focused on heavy data processing and mathematical routines. Since its inception, there have been several systems development frameworks based on some or all of SDLC such as the SSADM (Structured Systems Analysis and Design Method) created for the UK Government Office of Commerce in the 1980s. Since then, the majority of life cycle approaches to system development have been created to fix a deficiency identified in traditional SDLC phases specific to the task at hand.
The SDLC framework consists of a series of phases (or steps) that are intended to be followed in sequence by software or system designers and developers. In each phase of the System Development Life Cycle, the results of the previous phase are used. The labeling or titles of the phases may vary depending on the corporate or development environment, but include planning, analysis, design, and implementation. The waterfall model is the oldest SDLC-based model created where the output of each stage of the process explicitly becomes the input of the next stage.
Project Planning – Determines the project’s goals and results in a high-level view of the potential project. A feasibility study may be undertaken as part of this phase.
Requirements Definition – Results in the creation of well-defined functions from the defined project goals. Takes a look at the ultimate end-user’s needs for the information system. In the Sashimi waterfall method, feedback can be provided back to project planners for goal modification if required.
Systems Design: Project features and operations are describe in detail to include technical specifications, use of UML (when required/suitable), process diagrams, and even prototype creation along with other required documentation.
Implementation/Development: One of the most costly phases of the SDLC for information systems. Shortfalls in Systems design or requirements definition can become costly in the phase if not accomplished satisfactorily.
Integration and testing: A common phase that is under-funded by many corporate entities. In this phase all of the project components are integrated and tested for errors and interoperability in a special test environment.
Acceptance and Deployment: Software is deployed to the customer and starts accomplishing the desired work.
Maintenance: The maintenance phase of the SDLC can become a project in and of itself. Future software upgrades, bug fixes, and regular maintenance are addressed during this stage which may or may not have a well-defined end state.
Strengths and Weaknesses of the SDLC
The strict Waterfall model is not suitable for most systems development life cycles in today’s development environment. The underlying concepts; however, find their way into the latest “Rapid” development methods throughout industry with the pure SDLC practice lending itself better to a structured development environment. Many software developers have started taking on the best practices from the SDLC for the respective project as a guide to effective systems development.
Perceived Strengths of SDLC
- Increased Control
- Ability to monitor large projects
- Detailed steps
- Well defined user input and documentation
- Development and design standards
Perceived Weaknesses of SDLC
- Results in an increase in development time.
- Potential for increased development cost.
- Rigidity. Systems must be defined up-front with potentially limited user input.
- Project overruns can occur if errors occur in early stages of the project resulting in rework.