Software Development Life Cycle (SDLC), also known as software development process is a complete and efficient process that is undertaken by companies in the software industry to design, develop and test software. The purpose of SDLC is to develop and launch a software that high in quality, reaches customer demands, is cost effective and most importantly is completed within the stipulated time. In fact, SDLC is a framework that assesses the tasks completed during the software development process.
Every software and its life cycle process have to meet the highly regarded international standard of ISO/IEC 12207. This standard focuses on completion of every process that is necessary for software development and maintenance.
A standard software development process consists of six development stages. The first stage is of Planning and Requirement Analysis followed by Defining Requirements. The third stage is of Designing of the Software followed by Building or Developing of the same Software. The fifth is Testing of the Software and the last is Deployment in the Market and its Maintenance.
SDLC has various models, also known as Software Development Process Models that are followed by different software companies during the software development process. Every model has its own list of steps that needs to be properly followed in order to reach ultimate success during the software development process. Some of the well-known SDLC models in the software industry are Waterfall Model, Spiral Model, Iterative Model and Big Bang Model. Other related procedures/models that are also commonly used are RAD Model, Prototyping Model, Agile Model and Rapid Application Development procedure.
The Waterfall Model and its sequential phases:
· Requirement Gathering and Analysis – the entire software requirements and specifications are created in this phase and stored in a requirement specification document(s).
· System Design – In the second phase, the requirement specification document is thoroughly studied and examined. On that basis, a precise systems design is developed. Thereafter the system design becomes the base on which specific hardware and software requirements are chosen/allotted and assists in designing the entire system architecture and its outline.
· Implementation – After the system design, the inputs achieved in the system design stage are used to develop a system. The system development commences by creating small programs called units. Each unit is sent for Unit Testing where its development and functionality is tried and tested.
· Integration and Testing – Once after the small programs/united are tried and tested from the Unit Testing then they are all accumulated to form one system. After the integration of all the units, the entire new system is sent for testing for any flaws and shortcomings.
· Deployment of System – After the entire process of testing is completed, the system is sent to launching. It is sent to the market for customer usage.
· Maintenance – After the launching when the system faces any issues, small patches are released periodically to resolve those issues. moreover, in order to increase the product value, certain new and better versions are also released that have combated the issues. This process of rectification in the client environment is called maintenance.
The important point to note is that until and unless a certain stage is completed, the model does not allow the moving to the next stage. No stage overlaps the other or coincides with the other. Therefore, the flow of stages is in a systemic and waterfall way, thus the name Waterfall Model.
The Iterative Model is ideally used in the following situations:
· When the requirements of the software system are mentioned, defined and understood.
· Even when the important aspects of the system and its requirements are defined, some functional aspects or advancements do modify and evolve with time.
· A time period is regulated to gauge market constraints.
· While working on a new project, new technology is being used and its facets learned.
· Skilled resources are generally not available and are only used on a contractual basis and that too for specific iterations.
· The highly vulnerable features and characteristics along with goals that may vary or change with time.
The self-explanatory term of the spiral is parts within phases through which a software project development passes through in iterations. It has four specific phases.
· Phase 1 – Identification – At the first stage, the product requirements of the business project are defined and written down in the baseline spiral. As the product matures with time, several other identifications are then carried out starting from system requirements to subsystem requirements to unit requirements. All this takes place in this phase.
In Phase 1, the system analyst is constantly in touch with the customer regarding the system requirement. This helps in better understanding for the analyst of the system and for the customer as to how their system would pan out. Once this phase is over, the product is sent over to identified market for deployment.
· Phase 2 – Design – Phase 1 is responsible for providing a conceptual design to the product. Once Phase 2 begins the products goes into other designs such as architectural design, logical design of the product and its modules, physical design and final design in the subsequent spirals.
· Phase 3 – Construct – Going by the name of the phase, it involves the constructing of the actual software in each spiral. After the first two phases where the product is identified and designed, respectively, a Proof of Concept (POC) is also developed in phase 3. It is then sent to the customer for feedback.
In the following spirals, once the requirements and design details of the customer are becoming clearer and clearer, a functional model of the software is produced with a specific version number. This is called build. These builds are then again sent to the customer for more detailed feedback.
· Phase 4 – Evaluation and Risk Analysis – This phase includes identifying, estimating and assessing the technical feasibility and management risks such as crossing the cost budget and schedule time. once the testing of the builds is completed, the customer is provided with the opportunity to assess the software and provide further feedback on it.
In the V-Model, the V stands for Verification and Validation. It is here that the execution of processes is done in a sequential V shape.
V-Model is actually a sequential model of the Waterfall Model and it is connected to the testing phase for each of the development stages. Meaning that every single phase of the software development cycle is directly linked to a testing phase. Only when a certain a phase is completed, is the next stage commenced, therefore, it is known as a highly disciplined and sophisticated model.
Big Bang Model
Only Big Bang Model is the only model in the entire SDLC where no systematic or specific process is followed. The software development in this model starts with financial and physical input and the outcome is the software. There is a possibility that the software may or may not be as per the demands of the customer.
Moreover, this model does not require any formal development or planning. The customer does not interact in this model neither does he/she have much idea about the planning and specs of the software. It is created and implemented without much analysis. This model is normally undertaken for small projects of small companies with small teams.
Agile Model is one of the earliest in the agile software development process and rose in popularity due to its flexible and adaptable nature. Some of the renowned Agile methods include Rational Unified Process from 1994, Scrum, Adaptive Software, Feature Driven Development, Dynamic Systems Development Method from 1995 and Extreme Programming and Crystal Clear from 1996. All these are now known as Agile methodologies after Agile had published it Agile Manifesto in 2001.
The Agile Manifesto is divided into four principles:
· Individuals & Interactions – In Agile Model, self-organization, motivation, co-location and pair programming are very important.
· Working Software – The best way of communication and understanding of requirements between the software analyst and the customer is a demo. Documentation has proved out to be not enough.
· Customer Collaboration – Continuous interaction and communication with the customer are vital as all the information cannot be accumulated in one go and that too at the start.
· Responding to Change – The essential aspect of Agile is its ability to quickly and efficiently respond to changes and subsequently continuous development.
The usual scenarios in a RAD Model are mentioned below:
· RAD is ideal in a situation where the software can be put into a model form and delivered in an incremental manner.
· RAD requires a high number of software designers.
· It requires high budget because of its automated code generating tools.
· RAD also requires a high number of domain experts with substantial business knowledge.
· It shall only be used when requirements changes can be endured and worked upon. More importantly, working samples can be provided to the customer for feedback in a span of 2 to 3 months.
Software Prototyping means building software application prototypes which show the functionality of the software which is under the development process. It may not display or hold the true logic of the original software.
Software Prototyping has gained popularity over time in the software development world as it allows the software analyst to understand customer requirements right at the start of the development and it’s business management system. It allows for essential feedback from the customer and therefore the software developer is well aware of the requirements of the customer.
Mentioned below are the steps that are taken when designing a software prototype:
· Step 1 – Basic Requirement Identification – In the first step, the basic requirements of a software are known such as that of the user interface. The strict and complex details of internal design, performance and security are not considered in this step.
· Step 2 – Developing the Initial Prototype – Step 2 involves the showing of development as per basic requirement and user interface. Also, known as the Initial Prototype. The displayed features are not necessarily working the same way as required and needs amendments.
· Step 3 – Prototype Review – The software prototype is sent to the customer for feedback. The feedback is then worked on and used for further development.
· Step 4- Review and Enhancement – This step goes on and on until the customer is completely satisfied with the prototype. After the review has been collected, it is discussed and the customer is also informed about the time, budget and technical feasibility of the implementation of the reviews.
This tutorial was informing about SDLC and its numerous models. It can be helpful in knowing the best SDLC Model that needs to be used by software designers for a particular software. It will also help them know the various steps and requirements of each model. As this tutorial has all the information on the old and new SDLC Models along with the pros and cons associated with each model.
Waterfall Model and V-Model are considered to be traditional and old SDLC models and belong to the sequential type. The sequential type models are the one that only allows the commencement of the other stage after the previous one is over. It is ideal for software that has very clear requirements from the customer and the requirements would not change during the course of completion.
Iterative Model and Spiral Model are relatively newer and have an accommodating nature. They are ideal for projects that do not have clear requirements and can also change as per market demands. Big Bang Model is suitable for only small or academic software.
Agile Model is the most renowned and most used model in the software industry. It encouraged the idea of fast software delivery to customers using the latest prototype approach. In the Agile Model, the project is divided into small iterations with specific features. It is also known for having a good customer interaction through communication and less reliance on documentation.
RAD and Software Prototype are the most modern of techniques that help in better understanding of customer requirements during the project cycle. These models encourage a good feedback from the customer after they have had an experience of it. this feedback is then used to better assemble the software.