What is software development life cycle?
Software development life cycle is a process of design, develop & test high quality software used in software industry. It consists detailed plan describing how to develop, maintain, replace and alter or enhance specific software. The life cycle defines a methodology for improving the quality of software and overall development process.
Aim of this process is to produce high quality systems that meet or exceed customer expectations, based on customer requirements, by delivering systems which move through each clearly defined phase, within scheduled time frames & cost estimates.
Phases of software development life cycle
The very first phase of the software development life cycle starts with requirement gathering. This is known as the planning stage.it is the most important phase of the entire software development life cycle from the perspective of project managers and stakeholders.
The planning stage answers questions such as:
· How the software will be used?
· What data will serve as the input of the software?
· What data will be the output given by the software?
· Who is going to use the software?
Planning for the quality assurance requirements and identification of the risk associated with the project is also done in the planning stage.
Once all the requirements are collected, it’s time to analyze those requirements for feasibility & validity. This process conducted with the help of “software requirement specification” document also known as “SRS” document. It includes everything which should be designed and developed during the project life cycle.
There are mainly 5 types of feasibilities checks:
· Economic: can we complete the project within the budget or not?
· Legal: can we handle this project as cyber law and other regulatory framework/compliances
· Operation feasibility: can we create operations which expected by the client?
· Technical: need to check whether the current computer system can support the software
· Schedule: decide that the project can be completed within the given schedule or not.
This stage includes the designing of requirement specified in the very 1st phase of software development life cycle. Ina addition to assisting in specifying hardware as well as system requirements, software design also helps in defining the overall software architecture.
There are two kinds of design documents developed in this phase:
High-Level Design (HLD)
- Brief description and name of each module
- An outline about the functionality of every module
- Interface relationship and dependencies between modules
- Database tables identified along with their key elements
- Complete architecture diagrams along with technology details
- Functional logic of the modules
- Database tables, which include type and size
- Complete detail of the interface
- Addresses all types of dependency issues
- Listing of error messages
- Complete input and outputs for every module
Also known as the deployment phase, the implementation phase is carried out right after the successful testing of the software product. It is simply delivering the software to the end user or installing it onto the customer’s system.
The 1st thing that takes place on the product is delivered to the customer is beta testing. All the bugs and enhancements are then reported to the developer team working on the project afterward.
5.Testing & integration
After software is complete, and it is deployed in the testing environment. The testing team starts testing the functionality of the entire system. This is done to verify that the entire application works according to the customer requirement.
During this phase, QA and testing team may find some bugs/defects which they communicate to developers. The development team fixes the bug and send back to QA for a re-test. This process continues until the software is bug-free, stable, and working according to the business needs of that system.
Various types of functional testing, such as acceptance testing, integration testing, and unit testing as well as the non-functional testing is carried out.
Once the system is deployed, and customers start using the development system, following 3 activities occur
· Bug fixing — bugs are reported because of some scenarios which are not tested at all
· Upgrade — upgrading the application to the newer versions of the software
· Enhancement — adding some new features into the existing software
Advantages of software development life cycle
· Ample documentation
· Comprehensive steps
· Ease of maintenance
· Effective deployment and design standards
· Evaluation of cost as well as completion targets
· Possibility to monitor full-scale projects
· Powerful control
· Precise user input
Disadvantages of software development life cycle
· Difficult to estimate costs and project overruns
· Inflexible to changes in requirements
· Increased development cost and development time
· Limited automation of document and standards
· Little parallelism
· The software is required to be thoroughly defined before beginning
· User input might be limited in some scenarios
Types of software development life cycle
The waterfall model was the 1st process model to be introduced. It is also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed before the next phase can begin and there is no overlapping in the phases.
The waterfall model is the earliest software development life cycle approach that was used for software development.
The waterfall model illustrates the software development process in a linear sequential flow. This means that any phase in the development process begins only if the previous phase is complete.
· All potential development issues are researchable and manageable in the design phase.
· Each stage of the model has a well-defined starting and ending point, making it easy to manage and monitor
· An easy and transparent testing process as the test scenarios are already detailed in the functional specification
· Needs and outcomes are clear
· Offers a greater degree of accurate for cost estimation once the requirements are completely defined
- One gets one what has planned. Hence, no surprises upon the completion
- Very easy to understand as technical documentation is an essential aspect of the initial requirements gathering stage
- Compared to iterative methodologies like the Agile model, takes much longer to make the final delivery
- Doesn’t take into account changes due to the business plans or market influences during the planning process
- Lacks flexibility as it is very rigid. This means that the model is incapable to cater to new developments or changes made in the requirements occurring after the original consultation
- Very difficult to conceptualize client needs in terms of a functional specification during the requirements phase
The spiral methodology is considered to be one of the most flexible software development life cycle models. Typically adopted for completing full-blown projects, the spiral model enables the project development teams to build highly customized product.
Spiral methodology passes through 4 phases repeatedly until the project is completed. This allows following multiple rounds of product refinement. The 4 phases followed by the spiral methodology are planning, risk analysis, engineering & evaluation.
· Able to accommodate new changes or functionality at a later stage of the development
· As the prototype build is done in small increments, cost estimation becomes easy
· Better risk management with repeated development
· Emphasizes on customer feedback
· Faster development & systematic addition of features
· Demands risk management expertise
· High risk of not meeting budget or schedule deadlines
· Impractical for small projects
· Much more documentation due to intermediate phases
Agile software development life cycle model is a combination of iterative and incremental process models with focus on process adaptability and customer satisfaction by rapid delivery of working software product. Agile methods break the product into small incremental builds. These builds are provided in iterations. Each iteration typically lasts from about one to three weeks.
At the end of the iteration, a working product is displayed to the customer and important stakeholders.
Agile model believes that every product needs to be handled differently and the existing methods need to be tailored to best suit the project requirements. In agile, the tasks are divided to time boxes to deliver specific features for release. The final build holds all the features required by the customer.
· Capable of accommodating new changes or enhancements occurring during the development phase without the budget constraint
· Engages projects managers and business stakeholders as well as get their feedback throughout the entire software development process
· Fast development and testing enable for recognizing existing gaps in the requirements or technologies being used. Hence, it is easy to find alternative pathways
· Helps development teams in identifying as well as addressing minor issued before they can evolve into bigger ones
· Saves a great amount of cost and time thanks to lesser documentation requirement
· Almost impossible to determine the effort estimation at the very beginning of the software development for full size and complex projects
· High risk probability when clients/end-users are unsure about requirements
· Necessitates experienced resources
· Put less emphasis on designing and documentation process
The V-model is a type of software development life cycle model where process executes in a sequential manner in V-shape. It also known as verification and validation model. It is based on the association of a testing phase for each corresponding development stage. Development of each step directly associated with the testing phases.
Similar to the waterfall model, each next stage of the V model begins only when the previous is completely done with.
· Ability to avoid the downward flow of defects
· An apt fit for small projects with easily understandable requirements
· Higher success chances
· Offer great ease and simplicity
· Proactive tracking of potential defects
· Saves a lot of time as planning and designing related to testing is done way before actual coding take place
· Even more rigid and less flexible than the waterfall model
· No early prototype creation is possible as the software is developed during the implementation phase
· Requirement and test documents need to be updated if any changes had to be made amid the software development
The iterative model is a particular implementation of software development life cycle that focuses on an initial, simplified implementation, which then progressively gains more complexity and broader feature set until the final system is complete. When discussing the iterative model, the concept of incremental development will also often be used liberally and interchangeably, which describes the incremental alterations made during the design and implementation of each new iteration.
Each phase or iteration of the iterative model produces a newer, better version of the software under development. A rinse and repeat approach is followed until the final software come into shape.
A popular example of the iterative model is the rational unified process a.k.a. RUP developed by IBM’s rational software division.
· It allows developers and testers into identify functional or design flaws at the earliest possible. Hence, corrective measures can be made in a limited budget
· Capacity to plan parallel development
· Cost effective to change the scope or requirements
· Each iteration is easy to manage
· Easily adapts to the ever-changing needs of the clients as well as the project
· Requires less time for documentation and gives more time for designing
· Suitable for agile organizations
· As not all requirements are gathered at the very beginning of the project, it is highly likely for system architecture or design issues to spring up
· Demands added management attention
· Each iteration is rigid
· Not suitable for smaller projects
· Requires comparatively number of resources
· Skill analysis requires highly skilled resources