What is Software Development Life Cycle?
SDLC (Software Development Life Cycle) is the process of developing software through business needs, analysis, design, implementation, and Release and maintenance.
Software Development Life Cycle is a systematic approach to developing software applications. It is a process followed by software developers, and Software Testing is an integral part of Software Development.
ISO/IEC 12207 is an international standard for software life-cycle processes, it defines all the tasks required for developing and maintaining software.
Phases of Software Development Life Cycle:
These phases may vary from one organization to another, but the purpose is almost all same, that is "Develop and Maintain Quality Software",
1. Requirement Gathering
2. Analysis
3. Design
4. Coding/Development
5. Testing
6. Deployment & Maintenance
Note: It is General Software Development Life Cycle, we have various SDLC Models in the IT Industry, Waterfall Model, V Model, Spiral Model, and Agile Development Models, etc. The Software Development process varies from one SDLC Model to another.
1. Requirement Gathering
Requirement Gathering is the most important phase in the software development life cycle, Business Analyst collects the requirements from the Customer/Client as per the client's business needs and documents the requirements in the Business Requirement Specification, and provides the same to Development Team.
Note: Document name may vary from one organization to another, Some examples are Customer Requirement Specification (CRS), Business Requirement Document (BRD), etc.
Suppose Our Planned Software is not intended for a single customer and the software product for multiple customers then Business Analyst or Business Team collects Requirements from the Market and also evaluate Other similar products in the Market
The key role in this phase is Business Analyst and the Outcome of the phase is “Business Requirement Specification”
2. Analysis
Once the Requirement Gathering is done the next step is to define and document the product requirements and get them approved by the customer. This is done through SRS (Software Requirement Specification) document. SRS consists of all the product requirements to be designed and developed during the project life cycle.
Key people involved in this phase are the Project Manager, Business Analyst, and Senior members of the Team. The outcome of this phase is Software Requirement Specification.
3. Design
In the Design phase Senior Developers and Architects, they give the architecture of the software product to be developed. It has two steps one is HLD (High-Level Design) or Global Design and another is LLD (Low-Level Design) or Detailed Design,
High-Level Design (HLD) is the overall system design, which covers the system architecture and database design. It describes the relationship between various modules and functions of the system.
Low-Level Design (LLD) is the detailed system design, covers how each and every feature in the product should work and how every component should work.
The outcome of this phase is High-Level Document and Low-Level Document which works as an input to the next phase Coding…
4. Coding/Development
Developers (seniors, juniors, fresher) involved in this phase, this is the phase where we start building the software and start writing the code for the product.
The outcome of this phase is Source Code Document (SCD) and the developed product.
5. Testing
Once the software is complete then it is deployed in the testing environment. The testing team starts testing (either test the software manually or using automated test tools depends on the process defined in STLC).
Testing is done to verify that the entire application works according to the customer's requirement.
During this phase, the Testing team may find defects which they communicate to developers, the development team fixes the defect and send it back to Testing for a re-test. This process continues until the software is Stable, and working according to the business needs of that system.
6. Deployment & Maintenance
After successful testing, the product is delivered (deployed to the customer for their use), Deployment is done by the Deployment/Implementation engineers and Once when the customers start using the developed system then the actual problems will come up and needs to be solved from time to time.
Fixing the issues found by the customer comes in the maintenance phase. 100% testing is not possible – because, the way testers test the product is different from the way customers use the product. Maintenance should be done as per SLA (Service Level Agreement).
https://youtu.be/cj83pDB2_tI
SDLC Models
There are various software development life cycle models defined and designed which are followed during the software development process.
SDLC models are also referred to as "Software Development Process Models". Each process model follows a Series of steps unique to its type to ensure success in the process of software development.
Important and Popular SDLC models in the industry are:
I. Waterfall Model
II. V - Model
III. Iterative Model
IV. Spiral Model
V. Agile Development Models
I. Waterfall Development Model
Overview:
The waterfall development model was launched in the 1970s. It is a framework for software development in which development proceeds sequentially through a series of phases, starting with Business requirements, Software Requirements analysis, and planning to develop a software product, release, and maintenance.
In this model each phase has specific deliverables, after completion of a phase/stage, next stage will begin. One stage output is input for the next stage.
A number of variants of this model exist, with each one quoting slightly different labels for the various stages. In general, however, the model may be considered as having six distinct phases, described below:
1. Requirements Gathering:
This first step is also the most important because it involves gathering information about what the customer needs and defining, in the clearest possible terms, the problem that the product is expected to solve.
2. System Requirements:
In this phase, Business Requirements are converted into Software Requirements.
[caption id="attachment_816" align="aligncenter" width="455"] Phases pf Waterfall Model.[/caption]
3. Design:
In this phase, Global and Detailed design can be produced based on Software Requirements.
4. Coding:
This step consists of actually constructing the product as per the design specification(s) developed in the previous step. Typically, this step is performed by a development team consisting of programmers, interface designers and other specialists, using tools such as compilers, debuggers, interpreters and media editors. The output of this step is one or more product components, built according to a pre-defined coding standard and debugged, tested and integrated to satisfy the system architecture requirements.
5. Testing:
In this stage, the System will be tested by testers, if they find any mismatch they report defects. Developers /Programmers fix the defects and then testers close defects by performing confirmation testing (Regression Testing).
6. Release & Maintenance:
The release team (consists of a few developers, testers, and tech-support people, etc…) install the software in a Customer environment and they consider the below factors;
Correct & Complete installation
User Management
Services Management
Coexistence with other software
Handling of Input & Output devices
Handling of secondary storage devices
Etc…
The maintenance team processes Customer issues based on service agreements.
Three Types of Software maintenance:
a. Modifications
b. Migration
c. Retirement
Advantages of Waterfall Model :
i. Simple and easy to use
ii. Easy to manage due to the rigidity of the model- each phase has specific deliverables and a review process.
iii. Phases are processed and completed one at a time.
iv. Works well for smaller projects where requirements are very well understood.
Disadvantages of Waterfall Model :
i. No working software is produced until late during the life cycle
ii. High amount of risk and uncertainty
iii. Poor model for complex and object-oriented projects.
iv. Poor model for long and ongoing projects
v. Poor Model where requirements are at a moderate to high risk of changing.
II. V Model
Overview:
A framework to describe the software development life cycle activities from requirements specification to maintenance.
The V-model illustrates how testing activities can be integrated into each phase of the software development life cycle.
V Model was inaugurated in order to avoid drawbacks in the Waterfall model and its main focus on multiple stages of testing.
Multiple stages of Testing avoids defects multiplication.
Quality:
Quality: Meeting Customer Requirements and expectations.
Software Quality:
• Meet Customer Requirements (Functionality)
• Meet Customer Expectations (Performance, Usability, portability etc…)
• Cost to purchase a license
• Time to release
Note: First two factors are Technical, last two factors are Non-Technical.
Quality Assurance (QA):
Defining, Monitoring, and Optimizing the process is called Quality Assurance, it is part of Quality Management and is Prevention oriented.
Quality Control (QC)
Checking the System (Final Outcome) with respect to Requirements is called Quality Control and it is Detection oriented.
Verification:
Testing Quality work products (Documentation such as Test Plan, Test Cases Etc…) by performing Reviews and conducting the meeting, etc… and it is Static
Validation
Testing the Working Software based on its requirements and it is Dynamic.
[caption id="attachment_819" align="alignnone" width="1024"] Phases of V-shaped model.[/caption]
Description of V Model:
It is Verification & Validation model, known as V Model, in this model all development phases can be integrated with Testing phases.
It is considered to be an extension of the Waterfall model. This is because just like the waterfall model, it’s a well-structured method in which the different phases progress in a sequential or linear way. That means each phase begins only after the completion of the previous phase.
Development Phases Integration with Testing Phases
1. User Requirements Vs Acceptance Testing
Business Analyst category people gather requirements and document the requirements, after documentation Reviews, Meetings like verifications will take place in order get correct & Complete Requirements.
End Uses derive Acceptance Test cases from User Requirements.
2. Software Requirements Vs System Testing
Development Manager/Tech Manager converts User Requirements as Software Requirements and Reviews, Meetings like verification methods will be performed on Software Requirements, after Verification Project manager provides Approval.
Independent testers generate test cases from Software Requirements in order to perform System Testing
3. Global Design Vs Integration Testing
System Architect / senior developer creates Global design, Informal Review/ Walkthrough / Technical Review / Inspection like Verification methods will be applied on Design documents.
Developers perform Integration Testing based on Software Global Design.
4. Detailed Design Vs Unit / Component Testing
Developers perform Unit /Component Testing based on Software Detailed Design.
Advantages of the V Model:
• Tester role will take place in the requirement phase itself
• Multiple stages of Testing available so that Defects multiplication can be reduced.
• Can be used for any type of requirements
• Due to Multiple stages of Testing and Multiple team's involvement Quality can be improved.
• The V Model Supports a wide range of development methodologies such as Structured and Object-oriented systems development.
• The V Model supports tailoring.
Disadvantages of the V Model:
• It an expensive model than the Waterfall model, needs a lot of resources, budget, and time.
• Co-ordination and Maintenance are difficult.
• Adoption of changes in Requirements and Adding New Requirements at the middle of the process is difficult.
• It needs an established process for proper implementation.
III. Spiral Model
The spiral model is also known as the spiral lifecycle model. This development of the model combines the features of the prototyping model and the waterfall model. In spiral model, we can easily adjust the software development with the required changes. The prototypes which are created in every stage enable us to roll back only a few steps. This model is favored for large, expensive, and complicated projects. It is a circular view of the software lifecycle.
Overview
The spiral model was first defined in an article by Barry Boehm in 1986. This spiral model is based on experience with large government software projects. The goal was to provide a model with greater flexibility that could better serve these types of projects.
Spiral-Model Software Development Life Cycle
In this cycle, each passes through the spiral model consists of the Planning, Risk Analysis, Engineering, and Evaluation phase.
[caption id="attachment_822" align="alignnone" width="1024"] Phases of Spiral Model.[/caption]
1. Planning:
In this phase, the new system requirements are gathered and defined after a comprehensive system study of the various business processes. This usually involves interviewing internal and external users, preparation of detailed flow diagrams showing the process or processes for which going to be developed, the inputs and outputs in terms of how the data is to be recorded/ entered and the form in which the results are to be presented.
2. Risk Analysis Phase:
In this phase to identify risk and alternate solutions, a process is followed. The process includes addressing the factors that may risk the successful completion of the entire project development including alternative strategies and constraints. The issues pertaining to the possibility of the development if not meeting, for example, user requirements, reporting requirements or the capability of the development team or the compatibility and functionality of the hardware with software. To undertake development, the Risk analysis and suggested solutions to mitigate and eliminate the Risks would thus become a part of the finalized strategy. A prototype is produced at the end of the risk analysis phase.
3. Engineering Phase:
In this phase, the software is produced along with coding and testing at the end of the phase. After preparation of prototype tested against benchmarks based on customer expectations and evaluated risks to verify the various aspects of the development. Until customer satisfaction is achieved before the development of the next phase of the product, refinements and rectifications of the prototype are undertaken.
4. Evaluation Phase:
In this phase, the final system is thoroughly evaluated and tested based on the refined prototype. The evaluation phase allows the customer to evaluate the output of the project to date before the project continues to the next spiral. Routine maintenance is carried out on a continuing basis to prevent large-scale failures and to minimize downtime.
Advantages of Spiral Model
• It is a good model for large and complex projects.
• It reduces problems at all levels with direct consideration of risks.
• In this phase, the software is produced early in the software life cycle.
Disadvantages of Spiral Model
• It can be a costly model to use.
• When the risk analysis is carried out, it needs highly specific expertise which may not be available all the time.
• The project's success is highly dependent on the risk analysis phase.
• It is applicable only to large-scale systems and doesn’t work well for smaller projects because of the cost of evaluating risk.
IV. Agile Development Model
The term Agile means ‘moving quickly.’ Agile process itself is a software development process by small teams, in a short time frame, and involving system users as well as developers. This agile process is an iterative approach in which customer satisfaction is at highest priority as the customer has direct involvement in evaluating the software. An Agile approach focuses on adaptability and response time to changing requirements.
Overview
The definition for agile software development evolved in the mid-1990s. It helps in adaptive planning, iterative development, and time boxing. It is a theoretical framework that promotes foreseen interactions throughout the development cycle.
Agile Model Phases
The agile process follows the software development life cycle which includes requirements gathering, analysis, design, coding, testing and delivers partially implemented software and waits for the customer feedback. In the whole process, customer satisfaction is at highest priority with faster development time. The following diagram depicts the software development life cycle of Agile Process.
The Agile process requires less planning and it divides the tasks into small increments. This process is meant for short term projects with an effort of team work that follows the software development life cycle. Software development life cycle includes the following phases
1.Requirements gathering,
2.Analysis,
3.Design,
4.Coding,
5.Testing,
6.Maintenance.
[caption id="attachment_825" align="alignnone" width="296"] Agile Development Methodologies.[/caption]
The involvement of software team management with customers reduces the risks associated with the software. This agile process is an iterative process in which changes can be made according to customer satisfaction.
The Agile system development life cycle model begins with the initial elicitation of requirements in order to conceptualize the system. Once the system concept is formed, requirements are estimated and prioritized in order to plan the development iterations. Within each iteration, requirements continue to evolve and are used in brief model storming sessions in order to design the functionality required to meet requirements allocated to the iteration. When the system model is developed/modified, the coding is initiated/continued using a test-driven approach. Once the functionality for the iteration is tested successfully, refactoring takes place. Refactoring is a disciplined technique for altering the structure of an existing code base without altering functionality. When refactoring is completed and functionality is confirmed, the code is deployed internally, completing the iteration.
If plans include deploying the code beyond the development iteration, the code is then deployed externally. Eventually, all iterations are completed, resulting in a system with full functionality that is accepted by stakeholders because it meets allocated requirements.
There are several methodologies through which we can implement Agile Projects. The agile methods are focused on different aspects of the software development life cycle. Some focus on the practices (extreme programming, pair programming), while others focus on managing the software projects (the scrum approach).
The three methodologies which are most widely used in industry are:
1. Extreme Programming (XP):
XP is the most successful method of developing agile software because of its focus on customer satisfaction. XP requires maximum customer interaction to develop the software. It divides the entire software development life cycle into several short development cycles. It welcomes and incorporates changes or requirements from the customers at any phase of the development life cycle.
2. Scrum:
Scrum is another popular method of agile development through which productivity becomes very high. It is basically based on incremental software development process. In scrum method the entire development cycle is divided into a series of iteration where each iteration is called as a sprint. Maximum duration of a sprint is 30 days.
3. Feature Driven Development (FDD):
FDD is one of the agile development methods. The key advantage of this method is to design the domain of the software to be produced before development.
Advantages of Agile Model
• Adaptive to the changing environment.
• Agile helps to speed up the SDLC phases and bypasses process steps that add little value to the project.
• Engages the stakeholders continuously so that the new requirements are gathered faster and there is no scope for guesswork by the teams.
• Saves cost, time, and efforts by following iterative incremental work delivery and thereby identifying deviations early.
• Least documentation.
• Provides the end result of a higher quality of the software delivered and a highly satisfied customer.
Disadvantages of Agile Model
• Time consuming and wastage of resources because of the constant change of requirements.
• More helpful for management than developer.
• Only senior developers are in a better position to take the decisions necessary for the agile type of development.
• Once teams become bigger, agile methodologies begin to fail, as they don’t scale to large teams, or teams spread across geographies.
• If the projects are large then it becomes difficult to judge the efforts and the time required for the project in the software development life cycle.
Software Testing (Manual and Automated) Tutorials
1. Manual Testing Tutorial (Document/Text)
Manual Testing Tutorial (Document/Text)
2. Selenium Tutorial (Document/Text)
3. UFT/QTP Tutorial (Document/Text)
4. Apache JMeter Tutorial (Document/Text)
Apache JMeter Tutorial (Video)
5. SQL Tutorial (Document/Text)
SQL Step by Step Tutorial – Full Course for Beginners (Video)
6. Java Tutorial (Document/Text)
7. Python Tutorial (Document/Text)
No comments:
Post a Comment