Software Development Life Cycle

  • Software Development Life Cycle

    • The Software Development Life Cycle (SDLC) is a process used by the software industry to produce high-quality systems that meet or exceed the customer’s expectations. The SDLC looks to produce software that:

      • Works effectively (performs its task well).

      • Works efficiently (does not cost too much to operate).

      • Is inexpensive to maintain.

      • Is cost-effective to enhance.

      • Must be produced within time and cost estimates.

  • Software Development Life Cycle - Phases

    • Analysis

      • A - Business Analysis

      • B - Requirements Analysis

    • Design

    • Development / Coding

    • Testing

    • Deployment

    • Maintenance

  • First Family Home

    • In order to get a clearer understanding of the SDLC, we will look at what it takes to build a family home

    • There is a great deal of planning involved in building a home

  • Business Analysis

    • Identify the Current State – Where are we now

      • Understanding the current state allows us to identify the needs that need to be fulfilled by our project

      • What is the Current State

        • One bedroom apartment (we now have 2 kids).

        • Limited closet space.

        • High rent (more than a mortgage).

        • Small kitchen (would like more space).

        • One bathroom servicing 4 people.

        • No parking space.

        • No privacy.

        • No place for the kids to play.

        • Too many people in neighborhood.

  • Requirements Analysis

    • The second half of analysis is the Requirements Analysis or Requirements Gathering

    • Customer describes what they want and how they want it used

    • Failure in this stage will result in incomplete or mis-directed work in all following stages

    • Customers Will ask for What they WANT

      • We need to have a clear understanding of

        • What we want to have (desire to have – initial plans).

          • What we must have (absolutely necessary).

        What is just gravy (extra stuff – not expected enhancements).

  • Design

    • How do we build it

    • Architectural Blueprints are created with various considerations:

      • Hardware.

      • Software.

      • Service/Product Availability.

      • Service/Product Capacity.

      • Security.

      • Environmental Considerations.

    • High-Level Design vs. Low-Level Design

      • High-Level Design (HLD) - lists the functional aspects of the various modules, along with the final result

      • Low-Level Design (LLD) - details the logic and execution of each module in an HLD

  • Development/Coding

    • Now that we have a clear understanding of how the application is supposed to work, it is time for our team of programming experts to begin coding

    • Programming tools like compilers, interpreters, and language such as COBOL, C, C++, and Java are used for coding with respect to the type of application

  • Testing

    • Software Quality is best determined by how well the software meets the requirements

    • Difference between Unit Testing and Testing

      Testing and Unit Testing are two software development concepts that are often used interchangeably, but they are not the same thing.

      Testing is a process of verifying whether the software application meets the customer requirements and works as expected. It is performed on the entire software system, including all the integrated components. Testing is also known as System testing or End-to-End testing.

      Unit Testing, on the other hand, is a type of testing in which individual units or components of software are tested in isolation from the rest of the system. It is a white-box testing technique, which means that the tester has knowledge of the code and the internal structure of the software.

      Here are some of the key differences between Testing and Unit Testing:

      TestingUnit Testing

      Performs on the entire software system.

      Performs on individual units of code.

      Tests the software as a whole.

      Tests the functionality of each unit of code.

      Requires more resources and time.

      Requires fewer resources and time.

      Checks for integration issues.

      Does not check for integration issues.

      Can be done manually or automated.

      Automated testing is more widely used.

      In conclusion, Unit Testing and Testing are two distinct types of software testing that serve different purposes. While Testing focuses on the overall functionality of the software, Unit Testing checks the functionality of individual units of code. Both types of testing are important in ensuring the quality and reliability of software applications.

    • Validating Functionality

      • Know how your product/service will perform in a live environment prior to releasing it into the live environment

    • Other Types of Tests

      • Software Testing Ability

        • User Experience Testing

          • How easily can users utilize this functionality?

        • Functionality Testing

          • Does this app perform the work needed as designed?

        • Security Testing

          • Does this release meet the customer’s acceptable risk profile?

        • Load Testing

          • Will this service be able to support (x) number of users and maintain acceptable levels of performance?

        • Performance Testing

          • Will performance in a live environment meet the planned performance from the blueprint?

        • Compatibility Testing

          • What effect on the live environment will this service have once it is released?

            • Will any other live services be adversely impacted by this new introduction?

        • End-User Preparation/Training

          • End-users must be trained in how to interact with new systems prior to the new rollout

            • Not having users ready to interact with the new system is a major risk to a successful implementation

    • Deployment

      • Deployment moves the product/service into the “live” environment. Once deployed successfully, customers and users can be allowed to begin utilization of the functionality provided

      • Example

        • Once customers and users have access to the functionality in a live environment, any undiscovered issues will show up as incidents, directly affecting the customer/user experience

        • Incidents may cause customers to have a negative perception of both the service/product and of the organization providing the service/product

    • Maintenance

      • The Maintenance phase is an ongoing process, and includes:

        • Maintenance of Hardware/Software.

          • Updates.

          • Upgrades.

          • New Features

      • Home Improvements and Repair

        • A home is never completed. There are always repairs to be made. and because families change (e.g., kids grow up and go away to college or new kids are born), the home changes. We are always thinking of ways to make our home more valuable by making changes and additions

Last updated