Software Development Life Cycle Models
Software Testing Part 2

๐ Hi, I'm Garvit, an IT Undergraduate. I'm passionate about expanding my knowledge in the field of Computer Science.
๐ป Computer Science Skills and the topics I write blogs on
โ Proficient in Linux.
โ Git/GitHub for version control.
โ Networking Fundamentals.
โ Proficient in Java, C and Python.
โ Object-Oriented Programming in Java.
โ Data Structures & Algorithms in Java.
โ MERN Stack Web Development.
โ System Design.
โ Bash scripting and automation.
โ Python for Scripting, Mini Projects.
โ Cyber Warfare & Ethical Hacking.
โ Cloud Computing.
โ Distributed Computing, Parallel Computing, Real Time Systems, Virtualization.
โ DevOps - Docker, Kubernetes
โ Operating Systems.
โ Software Testing.
โ Databases - SQL, NoSQL and more...
6 Phases of a Software Project
- Requirements gathering and analysis
- Planning
- Design
- Development or Coding
- Testing
- Deployment and maintenance
Requirement Gathering & Analysis
- The specific requirements of the software to be built are gathered and documented.
- A product marketing team within a software product organisation specifies the requirements of multiple potential customers.
- It is important to ensure that the right requirements are captured at every stage.
- The requirements get documented in the form of a System Requirements Specification(SRS) document. This document acts as the bridge between the customer and the designers who build the product.
Planning
- To come up with schedule, scope, resource requirements for a release.
- A plan explains how the requirements will be met and by which time.
- It needs to take into account what requirements will and will not be met for the current release, decide on the scope of the project, look at resource availability, and come out with a set of milestones and a release date.
- Planning is done for both development and testing. At the end of this stage, both the documents of project plan and test plan are released.
Design
- Figure out how to satisfy the requirements laid out in the SRS document.
- The design phase produces a representation that will be used by the next phase of development. It serves two purposes.
- First, it should be possible to verify that all the requirements are satisfied.
- Second, it should give sufficient information for the development phase to proceed with the coding and implementation of the system.
- Design is split into two parts - High Level Design and Low Level Design.
- The design stage produces the System Design Description(SDD) document that will be used by development teams to produce the programs that implement the design using code.
Development or Coding
- Design acts as the blueprint for actual coding to begin.
- Programs are coded in the chosen programming language.
- It produces the software that meets the requirements the design was meant to satisfy.
- Product documentation is created in this phase.
Testing
- As the programs are coded, they are also tested consistently.
- After coding is nearing completion, the product is subjected to testing.
- Testing is the process of exercising the software product in pre-defined ways to check if the behaviour is the same as the expectations.
- Defects, as many as possible, are identified and removed before shipping the product.
Deployment & Maintenance
- After the testing, the product is given to customers who deploy it in their environments.
- This is where discrepancies can arise between the actual behaviour of the product and what was expected. Such discrepancies could end up as product defects, which need to be corrected.
- The product now enters the maintenance phase, where the product is maintained or changed to satisfy the changes that arise from customer expectations, environmental changes etc.
- Maintenance is made up of 3 components - Corrective maintenance, Adaptive maintenance, Preventive maintenance
- Corrective maintenance is about fixing customer-repoted problems.
- Adaptive maintenance can be like making the software run on a newer version of an operating system.
- Preventive maintenance is about changing the code to avoid a potential security hole that is not covered by the operating system.
Conclusion
You can read other articles written by me through these links.
Software Testing Series
1. Fundamental Principles of Software Testing
2. Software Development Life Cycle Models
3. Quality Assurance vs Quality Control
4. Testing Verification vs Testing Validation
5. Process & Life Cycle Models For Testing Phases
6. White Box Testing
7. Black Box Testing
8. Integration Testing
9. System Testing
10. Regression Testing
11. Performance Testing
12. Ad Hoc Testing
13. Checklist & Template For Test Plan & Management
14. Software Test Automation
Operating System Series
1. Introduction & Types of OS
2. Process States & Lifecycle
3. System Calls
4. User Mode vs Kernel Mode
5. CPU Process Scheduling
6. Process Synchronization
7. Deadlocks
8. Memory Management
9. Disk Management & Scheduling
10. File System in OS
11. Protection & Security
System Design Series
Introduction To Parallel Computing
Deep Dive Into Virtualization
Insights Into Distributed Computing
Cloud Computing Series
1. Cloud Service Models
2. Cloud Deployment Models
3. Cloud Security
4. Cloud Architecture
5. Cloud Storage
6. Networking In The Cloud
7. Cloud Cost Management
8. DevOps In Cloud & CI/CD
9. Serverless Computing
10. Container Orchestration
11. Cloud Migration
12. Cloud Monitoring & Management
13. Edge Computing In Cloud
14. Machine Learning In Cloud
Computer Networking Series
1. Computer Networking Fundamentals
2. OSI Model
3. TCP/IP Model : Application Layer
4. TCP/IP Model : Transport Layer
5. TCP/IP Model : Network Layer
6. TCP/IP Model : Data Link Layer
Version Control Series
1. Complete Guide to Git Commands
2. Create & Merge Pull Requests
3. Making Open Source Contributions
Linux
Complete Guide to Linux Commands
Thanks For Reading! ๐
Garvit Singh




