Software Development Life Cycle Model (SDLC)
Software Development Life Cycle Model, also known as SDLC or Software Development Process, is base for all software development models. It covers all important phases through which a software passes from planning to deployment.
In this article, I will explain the basic software development life cycle model and all of its phases. I will discuss a few software development life cycle models with their advantages and disadvantages. I will also discuss a few scenarios.
If you are interested in reading a detailed article about software or types of software, you would like to read my article about What is software and its types? However, I will give an overview of all related concepts and try to cover everything briefly.
What is Software?
Software is a set of instructions, items or objects which performs a specified task on execution in a computer. Software operates on given data. It provides features and functions. These instructions, data and document explaining the use of the program are called Software.
Software is engineered. It doesn’t wear out. It is intangible. Software is complex. It is like an aging factory. Software is developed, not manufactured. If it is software, then what is a program? How you will distinguish between Software and Program.
What is Program?
A program is a set of instructions performing specified tasks on execution. However, it is different from software. Because a program does not own any documentation.
What is difference between software and a program?
Software is a broad term and the program is narrow. Software may consist of multiple programs whereas program consists of a set of instructions. A program can not be software, however, software can be a program. Software consists of programs, data structures, documentation, manuals, whereas a program only consists of instructions.
What is Software Engineering?
Software engineering is an engineering discipline that concerns all aspects of professional software production such as analysis, design, implementation and testing, aiming to develop high-quality software in a systematic and organised manner.
A software engineering method typically uses an appropriate:
- development process (e.g. Waterfall)
- techniques (e.g. Object-oriented analysis and design)
- notations (e.g. UML)
- case tools (e.g. Eclipse, Visual Paradigm)
Why Software Engineering is important?
Software engineering is important as more and more individuals and society rely on advanced software systems. We need to be able to produce reliable and trustworthy systems economically and quickly. Every industry is getting advanced and adopting the latest techniques like machine learning, artificial intelligence, automation, self-driven cars etc.
Our generation is getting habitual of software products. In short, most of us depend on software technology even in our daily life like setting alarm to wake up, IoT products to turn on or off smart electric products at home. Everyone seems to adopt smart systems. All these enhance the importance of Software Engineering.
What is Software Development Life Cycle Model?
Software Development Life Cycle Model is a framework consisting of phases or processes which are followed throughout development life of software. A software process is important for the success of any software project. There are multiple sized projects from mini to large. You may successfully complete mini-projects without adopting any software development life cycle model, but medium-sized and large-sized projects fail.
A Software Development Life Cycle Model (SDLC) commonly consists of the following phases or activities:
- System Concept Development
- Requirements Analysis
- Integration & Testing
- Operations & Maintenance
When we build a house we need house models when we build software we need software design models.
How does Software Development Life Cycle Model work?
Software Development Life Cycle Model describes the methodologies to be adopted for continuous improvement in quality and overall development lifecycle of software.
In this phase, a sponsor identifies the opportunity available or need of the software in the market. He creates the project proposal to get started by involving a software development team. Most of the websites, articles and books don’t mention the initiation phase as part of software development lifecycle model. However, naturally, software development process begins when a sponsor comes up with an idea.
System Concept Development
On the basis of created proposal, scope and boundaries of the required software system are defined. Software development team develops concept for feasibility of project, cost-benefit analysis is done and risk management plan is developed.
In this phase, project development and other planning documents are prepared. Resources, time and cost required are planned so that the solution can be achieved.
Requirements analysis phase involves analysis of user needs, what does a user expect from the system and how should the system work. User requirements document is prepared and feasibility of each requirement is analysed. A detailed functional and non-functional requirements document is prepared.
In this phase, each requirement is transformed into a detailed and complete system design document. This document will focus on complete delivery of required functionality.
In this phase, designs developed in the previous phase are converted into complete information system. It includes acquiring and installing systems environment, creating and testing databases, preparing test case procedures, preparing test files, coding, compiling, refining programs, performing test readiness review and procurement activities.
Integration and Testing
Integration and testing phase demonstrates that the developed system conforms to requirements as specified in the functional requirements document, accepted by quality assurance staff and users and produces test analysis reports.
Implementation phase involves preparation for implementation, implementation of the system into a production environment and resolution of the problems and bugs identified during integration of components of system and testing phase.
Operations & Maintenance
This phase describes tasks to operate and maintain information systems in a production environment. It includes post-implementation and in-process reviews.
This phase declares a project’s activities end. This emphasis on the proper preparation of data.