Tuesday, 27 June 2017

Basics of Software Development Life Cycle (SDLC)

What is the Software Development Life Cycle?
The Software Development Life Cycle (SDLC) is a framework that defines activities performed throughout the software development process.
The six phases of the SDLC:
  1. Analysis. This is the first phase of any SDLC model. The project objective is determined during this phase. The client and company developing the software decide if they should keep the existing system as is, if changes are necessary, or if there is a need for new software. In the event that there is a need for new software, an estimate of resources (e.g., people, cost, etc.) is established during this phase. This information is then assembled into a project plan and submitted for management approval.
  1. Requirement Gathering. The stakeholders, system users, and developers meet during this phase to decide the requirements of the application they are building. The goal of this phase is for everyone to understand each software requirement and the scope of work. Questions that require answers during this phase include:
    • Who will use the system?
    • How will they use the system?
    • What will the input be for the system?
    • What will the output be for the system?
Next, a software requirement specification (SRS) document is created. This SRS document acts as the guidelines for the next phase.

  1. Design. Crafting a high-level design of the software build is the primary objective of the third SDLC phase. Decisions are made about hardware and software required to build the product, in addition to the system architecture. Engineers produce meta-data and data dictionaries, logical diagrams, data-flow diagrams, and pseudo codes (when applicable). A design specification document (DSD) records this information.
  1. Development. Within this phase, engineers code the software as per the established requirements and design. The front-end, backend, and the connection between the two are created during what is often the longest phase of the SDLC.
  1. Testing. The testing phase ensures that the software requirements are in place and that the software works as expected. In the event that a defect is identified, testers inform the developers. If the defect is valid, developers resolve it and create a new version of the software which then repeats the testing phase. The cycle continues until all defects are mitigated and the software is ready for deployment into the production environment.
  1. Deployment and Maintenance. Once there are no issues present within the software, it is deployed into the production environment. At this point, customers test the software (also known as beta testing). Any bugs identified within this phase go to the engineering team for resolution. The final deployment takes place once all bugs are resolved. Once the software moves into production, the maintenance team monitors the software’s performance and continuously evaluates it. If there are any issues in production, the team works to mitigate them immediately.
What are the top SDLC methodologies in use today?
The Waterfall Methodology:
Waterfall presents the oldest, simplest, and most structured SDLC methodology. Each phase depends on the outcome of the previous phase and runs sequentially.
Advantages of the Waterfall Methodology: This model provides discipline and gives a tangible output at the end of each phase. Once the scope is defined, establishing and managing a timeline is straightforward.
Disadvantages of the Waterfall Methodology: This model doesn’t work well when flexibility is a requirement. There is little room for change once a phase is deemed complete. Changes made in the scope can impact cost, time, and quality of the software. Additionally, if tasks aren’t carried out properly in each stage, or if new tasks require attention at a later stage, the entire project has a severe impact.
The Agile Methodology:
The Agile model is widely considered to be a realistic approach for development. It is an interactive approach in which the various phases operate in parallel. Most notably, Agile provides a working product quickly by breaking the product into cycles.
Advantages of the Agile Methodology: The Agile model emphasizes interaction as customers, developers, and testers coordinate throughout the project. Due to the model’s interactive nature, changes are easily brought into the process. It’s a transparent approach for tracing progress. Additionally, each iteration provides helpful feedback on the product.
Disadvantages of the Agile Methodology: Clear and thorough fundamental requirements about product direction are critical. If the fundamental requirements change often, planning becomes complicated and the project can go awry. Team members must be highly cross-skilled since core teams are often small. Team members must also be up-skilled on the chosen Agile framework.
Other SDLC models include the Incremental model, RAD model, V-shaped model, the iterative model, and the spiral model.
  • V model-‘Verification and Validation’ model- Just like the waterfall model, the V-Shaped life cycle is a sequential path of execution of processes. Each phase (project and requirements planning, product requirements and specification analysis, architecture or high-level design, detailed design, production, operation and maintenance, system and acceptance testing, integration and testing, unit testing and coding) must be completed before the next phase begins. Testing of the product is planned in parallel with a corresponding phase of development.
  • Incremental model– In incremental model the whole requirement is divided into various builds. Cycles are divided into smaller more easily managed modules. Each module passes through the requirements, design, implementation and testing Each subsequent release of the module adds function to the previous release. The process continues till the complete system is achieved.
  • RAD model– Rapid Application Development model is a type of incremental model where components or functions are developed in parallel as if they were mini projects. The development phases (requirements planning phase, user description phase, construction phase, and cutover phase) are time boxed, delivered and then assembled into a working prototype.
  • Iterative model– This model development begins by specifying and implementing just part of the software, which can then be reviewed in order to identify further requirements. This process is then repeated, producing a new version of the software for each cycle of the model.
  • Spiral model– is similar to the incremental model, with more emphasis placed on risk analysis. The spiral model has four phases: planning, risk analysis, engineering and evaluation. A software project repeatedly passes through these phases in iterations (called spirals in this model). In the risk analysis phase, a process is undertaken to identify risk and alternate solutions. A prototype is produced at the end of the risk analysis phase.