Software Development

Software Development Lifecycle

  • Systematic process to develop high quality software
  • meet requirements
  • defined phases for deliverables
  • planning, design, and development
  • minimize development risk and costs

6 Phases

  • Planning
  • Design
  • Development
  • Testing
  • Deployment
  • Maintenance

Waterfall model

Waterfall assumed linear progression of phases

V Shape Model

assumes linear progression

  • Verification
    • Plan
    • System Design
    • Architecture Design
    • Module Design
  • Coding
  • Validation
    • Unit Testing
    • Integration Testing
    • System Testing
    • Acceptance Testing

Agile

Iterative Sprint wise development MVP is released after that

Planning

Gather Analyze Document Prioritize

Points to consider

  • Users
  • Purpose
  • Inputs/Outputs
  • Compliance - legal and regulatory
  • Risk Identification
  • Quality Assurance
  • Allocation of human and financial resources
  • Project Scheduling Document into SRS (Software Requirement Specification)

Design

Architecture and prototyping

Development

Testing

  • Unit
  • Integration
  • System
  • Acceptance

Deployment

UAT-User acceptance testing

Maintenance

Common Software Engineering Processes

  • Requirement Gathering
  • Design
  • Coding for quality
  • Testing
  • Releases
  • Documenting

Requirements Gathering

  • Functional
  • External/User Interface
  • System Features
  • Non functional

Coding for quality

  • Maintainability
  • Readability
  • Testability
  • Security

Releases

  • Alpha
  • Beta
  • GA - General Availability

Documenting

  • System Documentation - Generally for sdes
  • User Documentation

Requirements

  • SRS
  • URS
  • SysRS

SRS

  • 1st Part
    • Purpose (Who has access, how it should be used)
    • Scope (Software benefits, Goals, Objectives)
  • 2nd Part
    • Constraints (how the software must operate under given conditions)
    • Assumptions (required OS, hardware)
    • Dependencies (e.g. on other services or products or external apis)
  • Requirements
    • Functional - functions of software
    • External - users & interactions with other hardware or software
    • System features - functions of the system
    • Non functional - performance, safety, security, quality
  • functional - benchmarks, service level for performance
  • purpose and scope
  • constraints, assumptions and scope
  • requirements

URS

  • Describe business needs and end user expectations
  • User Stories
    • Who is the user
    • What is the function that needs to be performed
    • Why does the user want this functionality
  • Confirmed during UAT
  • Often Combined into the SRS

SysRS

  • Outline Requirements of the system
  • Broader than SRS
  • Contains:
    • System Capabilities
    • Interfaces and user characteristics
    • Policy
    • Regulations
    • Personnel
    • Performance
    • Security
    • System acceptance criteria
    • Hardware Expectations

Software Versioning

4 numbers usually

  1. major version
  2. minor version
  3. patches
  4. builds

Software Testing

  • Functional Testing
    • Black box testing (I/O -> O/P)
    • Usability
    • Accessibility
  • Non Functional Testing
    • Performance
    • Security
    • Scalability
    • Availability
  • Regression Testing
    • confirms new changes do not affect existing functionality Testing levels
  • Unit
  • Integration
  • System
  • Acceptance

Documentation

Product Documentation

related to product functionality

Requirements Documentation

Expected features etc

Design Documentation

Technical Documentation

Quality Assurance Documentation

User Documentation

Standard Operating Procedure

Process Documentation

related to how processes are implemented