SDLC

The SDLC is a planned and organized process that divides software development tasks into various phases. These phases help the team to build a product that adheres to the factors of scope, time, cost, and quality. It also helps the project manager to monitor and control project activities at each stage and perform risk analysis effectively.

Any traditional SDLC comprises the following basic, but critical, phases:

  • Requirement analysis: A software product exists to solve a problem for the customer. Understanding customer needs is hence essential to building one. Requirement analysis is the phase where this is achieved. This is the stage where we try to answer the question, what do we want to build and why?
    • We create formal documentation (for example, a Business Requirement Document (BRD)) with customer needs, wants, and wish lists.
    • We also identify the objectives, goals, risks, resources, and the technology being used, as well as its limitations.
    • We need to specify what is within and what is out of scope for the selected iteration or version of the software that has been committed to for the customer. Usually, a team of client managers, business analysts, and project managers work together to prepare the final version of the business requirement document. Once it's ready and approved, the team moves on to the designing phase.
  • Designing: Designing is done based on the requirement documents.
    • In this phase, the team prepares high-level and low-level design documents, to further narrow down the broad requirements
    • These documents help to establish a logical relationship between different components of the application, and define its architecture in detail, including a format, look and feel, and a UI mockup
    • Once everything is ready, it moves on to the team of developers to start with actual coding
  • Coding: The end of the designing phase kicks off the start of the coding phase, where developers start to build actual applications.
    • In this phase, developers convert every component, the logical relationships between them, and build the architecture as mentioned in the high-level and low-level documents. The main goal here is to generate an actual workable software product or service, as designed in the mockup.
    • Developers make sure to meet the customer requirements mentioned in the requirement documents.
    • Developers also perform unit testing, a method for testing  functions to get the desired results by passing different input parameters.
    • Once the code looks good and it's ready for the testers to verify, the developers deploy it in the test environment and make it available for the testers to start testing.
  • Testing: This is where testers verify the application to confirm that it meets customer requirements. The main goal is to determine whether the solution works for customer needs without any issues or defects.
    • As a part of the testing process, testers verify critical paths, verify all the necessary workflows, and perform happy path testing. However, they also try to break the application by passing invalid parameters in the form of negative testing.
    • Using different testing types, they confirm whether the product or service is acceptable to the user, and think from the end user's perspective when validating every single text field, checkbox, links, and buttons—in short, every single UI component of the application.
    • Testing the application under stress to see how it reacts under extreme conditions and how it performs by adding load to it are parts of performance testing. Once the software is thoroughly tested and confirmed, with the number of known defects, which are either in closed or deferred status, it's shipped to the end users.
  • Maintenance: This is where errors get reported or suggestions and/or enhancements get added by end users after realizing the product or service are implemented, as a part of the maintenance phase. It can also be a part of releasing or upgrading the current version of the software or service.
    • A dedicated team works on this phase, where team members interact with their clients or end users to get feedback, issues, or errors
    • They also provide documents to help customers learn how to use a software product or service, efficiently