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
- major version
- minor version
- patches
- 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