SDLC

 

SOFTWARE DEVELOPMENT LIFE CYCLE 

SDLC is a process that creates a structure of development of software. There are different phases within SDLC, and each phase has its various activities. It makes the development team able to design, create, and deliver a high-quality product.

SDLC describes various phases of software development and the order of execution of phases. Each phase requires deliverable from the previous phase in a life cycle of software development. Requirements are translated into design, design into development and development into testing; after testing, it is given to the client.

Let's see all the phases in detail:

Different phases of the software development cycle

  1. Requirement Phase
  2. Design Phase
  3. Build /Development Phase
  4. Testing Phase
  5. Deployment/ Deliver Phase
  6. Maintenance
REQUIRMENT PHASE

This is the most crucial phase of the software development life cycle for the developing team as well as for the project manager. During this phase, the client states requirements, specifications, expectations, and any other special requirement related to the product or software. All these are gathered by the business manager or project manager or analyst of the service providing company.

The requirement includes how the product will be used and who will use the product to determine the load of operations. All information gathered from this phase is critical to developing the product as per the customer requirements.

DESIGN PHASE

The design phase includes a detailed analysis of new software according to the requirement phase. This is the high priority phase in the development life cycle of a system because the logical designing of the system is converted into physical designing. The output of the requirement phase is a collection of things that are required, and the design phase gives the way to accomplish these requirements. The decision of all required essential tools such as programming language like Java, .NET, PHP, a database like Oracle, MySQL, a combination of hardware and software to provide a platform on which software can run without any problem is taken in this phase.

There are several techniques and tools, such as data flow diagrams, flowcharts, decision tables, and decision trees, Data dictionary, and the structured dictionary are used for describing the system design.

BUILD / DEVELOPMENT PHASE

After the successful completion of the requirement and design phase, the next step is to implement the design into the development of a software system. In this phase, work is divided into small units, and coding starts by the team of developers according to the design discussed in the previous phase and according to the requirements of the client discussed in requirement phase to produce the desired result.

Front-end developers develop easy and attractive GUI and necessary interfaces to interact with back-end operations and back-end developers do back-end coding according to the required operations. All is done according to the procedure and guidelines demonstrated by the project manager.

Since this is the coding phase, it takes the longest time and more focused approach for the developer in the software development life cycle.

TESTING PHASE

Testing is the last step of completing a software system. In this phase, after getting the developed GUI and back-end combination, it is tested against the requirements stated in the requirement phase. Testing determines whether the software is actually giving the result as per the requirements addressed in the requirement phase or not. The Development team makes a test plan to start the test. This test plan includes all types of essential testing such as integration testing, unit testing, acceptance testing, and system testing. Non-functional testing is also done in this phase.

If there are any defects in the software or it is not working as per expectations, then the testing team gives information to the development team in detail about the issue. If it is a valid defect or worth to sort out, it will be fixed, and the development team replaces it with the new one, and it also needs to be verified.

DELIVER PHASE

When software testing is completed with a satisfying result, and there are no remaining issues in the working of the software, it is delivered to the customer for their use.

As soon as customers receive the product, they are recommended first to do the beta testing. In beta testing, customer can require any changes which are not present in the software but mentioned in the requirement document or any other GUI changes to make it more user-friendly. Besides this, if any type of defect is encountered while a customer using the software; it will be informed to the development team of that particular software to sort out the problem. If it is a severe issue, then the development team solves it in a short time; otherwise, if it is less severe, then it will wait for the next version.

After the solution of all types of bugs and changes, the software finally deployed to the end-user.

MAINTENANCE PHASE

The maintenance phase is the last and long-lasting phase of SDLC because it is the process which continues until the software's life cycle comes to an end. When a customer starts using software, then actual problems start to occur, and at that time there's a need to solve these problems. This phase also includes making changes in hardware and software to maintain its operational effectiveness like to improve its performance, enhance security features and according to customer's requirements with upcoming time. This process to take care of product time to time is called maintenance.

"So, all these are six phases of software development life cycle (SDLC) under which the process of development of software takes place. All are compulsory phases without any one of the development cannot be possible because development continues for the lifetime of software with maintenance phase".


SDLC MODEL

The software development models are those several process or approaches which are being selected for the development of project based on the project's objectives. To accomplish various purposes, we have many development life cycle models. And these models identify the multiple phases of the process. Picking up the correct model for developing the software application is very important because it will explain the what, where, and when of our planned testing.

Here, are various software development models or methodologies:

  • Waterfall Model
  • Iterative Model
  • Spiral model
  • Verification and validation Model
  • Prototype Model
  • Hybrid Model
  • Agile Model 
WATERFALL  MODEL 

It is the first sequential-linear model because the output of the one stage is the input of the next stage. It is simple and easy to understand, which is used for a small project. The various phases of the waterfall model are as follows:

  • Requirement analysis
        All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification document.
  • Implementation
        With inputs from the system design, the system is first developed in small programs called units, which are integrated in the next phase. Each unit is developed and tested for its functionality, which is referred to as Unit Testing. 
  • Design
        The requirement specifications from first phase are studied in this phase and the system design is prepared. This system design helps in specifying hardware and system requirements and helps in defining the overall system architecture.
  • Coding
  • Testing
        All the units developed in the implementation phase are integrated into a system after testing of each unit. Post integration the entire system is tested for any faults and failures.
  • Installation
        Once the functional and non-functional testing is done; the product is deployed in the customer environment or released into the market.
  • Maintenance
       There are some issues which come up in the client environment. To fix those issues, patches are released. Also, to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment.

Advantages of waterfall model
  • Simple and east to understand and easy to use 
  • phases are completed at a time.
  • Work well for small project when required are clear
  • process and result are well document 
Advantages of waterfall model
  • High amount of risk and uncertainty 
  • Poor model for long and on going project.
  • Cannot accurate requirement changes in requirements.
ITERATIVE MODEL 

In the Iterative model, iterative process starts with a simple implementation of a small set of software requirements and iteratively enhances the evolving versions until the complete system is implemented and ready to be deployed.

Advantages of Iterative model:

  • Some working functionalities can be developed quickly and early in the life cycle.

  • Results are obtained early and periodically.

  • Parallel development can be planned.

  • Progress can be measured.

  • Less costly to change the scope/requirements.

  • Testing and debugging during smaller iteration is easy.

  • Risk analysis is better.

  • It supports changing requirements.

  • Better suited for large projects.

  • During the life cycle, software is produced early which facilitates customer evaluation and feedback.

Disadvantages of Iterative model:

  • More resources may be required.

  • More management attention is required.

  • Not suitable for smaller projects

  • Management complexity is more.

  • Highly skilled resources are required for risk analysis.


RAPID APPLICATION DEVELOPMENT ( RID ) MODEL

In RAD Model a big project will be divided into modules and every module will be considered as a
mini project. A separate team will be scheduled to implement all SDLC activities for these modules
simultaneously. Once all modules are implemented this modules will be combine and deliver to the
customer.
 RAD Module is so expensive model because it requires huge resource, so it is recommended when there is short time for developing a project.

SPIRAL MODEL 

It is the best suites model for a medium level project. It is also called the Cyclic and Iteration model. Whenever the modules are dependent on each other, we go for this model. And here, we develop application model wise and then handed over to the customer. The different stages of the spiral model are as follows:

Planning:

        It includes estimating the cost, schedule and resources for the iteration. It also involves understanding the system requirements for continuous communication between the system analyst and the customer.

Risk Analysis:

     Identification of potential risk is done while risk mitigation strategy is planned and finalized.

Development & Testing:

    It includes testing, coding and deploying software at the customer site.

Evaluation:

    Evaluation of software by the customer. Also, includes identifying and monitoring risks such as cost overrun.

Advantages of Spiral Model:

  • Additional functionality or changes can be done at a later stage.

  • Cost estimation becomes easy as the prototype building is done in small fragments.

  • Continuous or repeated development helps in risk management.

  • Development is fast and features are added in a systematic way.

Disadvantages of Spiral Model: 

  • Spiral model works for only large projects.

  • Risk is high.

  • Risk of not meeting the schedule or budget.

  • Documentation is more as it has intermediate phases.


PROTOTYPE MODEL 

From the time when customer rejection was more in the earlier model, we go for this model as customer rejection is less. And also, it allows us to prepare a sample (prototype) in the early stage of the process, which we can show to the client and get their approval and start working on the original project. This model refers to the action of creating the prototype of the application.

VERIFICATION AND VALIDATION MODEL 

It is an extended version of the waterfall model. It will implement in two phases wherein the first phase, we will perform the verification process, and when the application is ready, we will perform the validation process. In this model, the implementation happens in the V shape, which means that the verification process done under downward flow and the validation process complete in the upward flow.

Verification:

It involves static analysis technique (review) done without executing code. It is the process of evaluation of the product development phase to find whether specified requirements meet.

Validation:  

It involves dynamic analysis technique (functional, non-functional), testing done by executing code. Validation is the process to evaluate the software after the completion of the development phase to determine whether software meets the customer expectations and requirements.

Design Phase:

Requirement Analysis: 

    This phase contains detailed communication with the customer to understand their requirements and expectations. This stage is known as Requirement Gathering.

System Design:  

      This phase contains the system design and the complete hardware and communication setup for developing product.

Architectural Design: 

     System design is broken down further into modules taking up different functionalities. The data transfer and communication between the internal modules and with the outside world (other systems) is clearly understood.

Module Design: 

     In this phase the system breaks down into small modules. The detailed design of modules is specified, also known as Low-Level Design (LLD).

Advantages of V-Model:

  • This is a highly disciplined model and Phases are completed one at a time.

  • V-Model is used for small projects where project requirements are clear.

  • Simple and easy to understand and use.

Disadvantages of V-Model:

  • High risk and uncertainty.

  • It is not a good for complex projects.

  • It does not easily handle concurrent(parallel) events.

HYBRID MODEL 

The hybrid model is used when we need to acquire the properties of two models in the single model. This model is suitable for small, medium, and large projects because it is easy to apply, understand.

The combination of the two models could be as follows:

  • V and prototype
  • Spiral and Prototype

AGILE MODEL 

SCRUM

    SCRUM is an agile development method which concentrates specifically on how to manage tasks within a team-based development environment. Basically, Scrum is derived from activity that occurs during a rugby match. Scrum believes in empowering the development team and advocates working in small teams (say- 7 to 9 members). Agile and Scrum consist of three roles, and their responsibilities are explained as follows:

PROCESS FLOW OF SCRUM METHOLODOGIES 

Process flow of scrum testing is as follows:

  • Each iteration of a scrum is known as Sprint
  • Product backlog is a list where all details are entered to get the end-product
  • During each Sprint, top user stories of Product backlog are selected and turned into Sprint backlog
  • Team works on the defined sprint backlog
  • Team checks for the daily work
  • At the end of the sprint, team delivers product functionality
EXTREM PROGRAMMING (XP)

Extreme Programming technique is very helpful when there is constantly changing demands or requirements from the customers or when they are not sure about the functionality of the system. It advocates frequent "releases" of the product in short development cycles, which inherently improves the productivity of the system and also introduces a checkpoint where any customer requirements can be easily implemented. The XP develops software keeping customer in the target.


Extreme Programming

    Business requirements are gathered in terms of stories. All those stories are stored in a place called the parking lot.

    In this type of methodology, releases are based on the shorter cycles called Iterations with span of 14 days time period. Each iteration includes phases like coding, unit testing and system testing where at each phase some minor or major functionality will be built in the application.

PHACES OF EXTREM PROGRAMMING 

There are 6 phases available in Agile XP method, and those are explained as follows:

PLANNING 

  • Identification of stakeholders and sponsors
  • Infrastructure Requirements
  • Security related information and gathering
  • Service Level Agreements and its conditions
ANALYSIS 
  • Capturing of Stories in Parking lot
  • Prioritize stories in Parking lot
  • Scrubbing of stories for estimation
  • Define Iteration SPAN(Time)
  • Resource planning for both Development and QA teams
DESIGN
  • Break down of tasks
  • Test Scenario preparation for each task
  • Regression Automation Framework
EXECUTION 
  • Coding
  • Unit Testing
  • Execution of Manual test scenarios
  • Defect Report generation
  • Conversion of Manual to Automation regression test cases
  • Mid Iteration review
  • End of Iteration review
WRAPPING 
  • Small Releases
  • Regression Testing
  • Demos and reviews
  • Develop new stories based on the need
  • Process Improvements based on end of iteration review comments
CLOSURE
  • Pilot Launch
  • Training
  • Production Launch
  • SLA Guarantee assurance
  • Review SOA strategy
  • Production Support

    There are two storyboards available to track the work on a daily basis, and those are listed below for reference.

  • Story Cardboard
    • This is a traditional way of collecting all the stories in a board in the form of stick notes to track daily XP activities. As this manual activity involves more effort and time, it is better to switch to an online form.

  • Online Storyboard
    • Online tool Storyboard can be used to store the stories. Several teams can use it for different purposes.
CRYSTAL METHODOLOGIES 

Crystal Methodology is based on three concepts

  1. Chartering: Various activities involved in this phase are creating a development team, performing a preliminary feasibility analysis, developing an initial plan and fine-tuning the development methodology
  2. Cyclic delivery: The main development phase consists of two or more delivery cycles, during which the
    1. Team updates and refines the release plan
    2. Implements a subset of the requirements through one or more program test integrate iterations
    3. Integrated product is delivered to real users
    4. Review of the project plan and adopted development methodology
  3. Wrap Up: The activities performed in this phase are deployment into the user environment, post- deployment reviews and reflections are performed.
DYNAMIC SOFTWARE DEVELOPMENT METHOD (DSDM)

DSDM is a Rapid Application Development (RAD) approach to software development and provides an agile project delivery framework. The important aspect of DSDM is that the users are required to be involved actively, and the teams are given the power to make decisions. Frequent delivery of product becomes the active focus with DSDM. The techniques used in DSDM are

  1. Time Boxing
  2. Moscow Rules
  3. Prototyping

The DSDM project consists of 7 phases

  1. Pre-project
  2. Feasibility Study
  3. Business Study
  4. Functional Model Iteration
  5. Design and build Iteration
  6. Implementation
  7. Post-project
FEATURE DRIVEN DEVELOPMENT (FDD)

This method is focused around "designing & building" features. Unlike other Agile methods in software engineering, FDD describes very specific and short phases of work that has to be accomplished separately per feature. It includes domain walkthrough, design inspection, promote to build, code inspection and design. FDD develops product keeping following things in the target

  1. Domain object Modeling
  2. Development by feature
  3. Component/ Class Ownership
  4. Feature Teams
  5. Inspections
  6. Configuration Management
  7. Regular Builds
  8. Visibility of progress and results
LEAN SOFTWARE DEVELOPMENT 

Lean software development method is based on the principle "Just in time production". It aims at increasing speed of software development and decreasing cost. Lean development can be summarized in seven steps.

  1. Eliminating Waste
  2. Amplifying learning
  3. Defer commitment (deciding as late as possible)
  4. Early delivery
  5. Empowering the team
  6. Building Integrity
  7. Optimize the whole
AGILE MATRICS

Metrics that can be collected for effective usage of Agile is:

  • Drag Factor
    • Effort in hours which do not contribute to sprint goal
    • Drag factor can be improved by reducing number of shared resources, reducing the amount of non-contributing work
    • New estimates can be increased by percentage of drag factor -New estimate = (Old estimate + drag factor)
  • Velocity
    • Amount of backlog(user stories) converted to shippable functionality of sprint
  • No of Unit Tests added
  • Time interval taken to complete daily build
  • Bugs detected in an iteration or in previous iterations
  • Production defect leakage