SDLC & STLC basics
Tags: testing
Published: 2020-11-26 16:39:59

Q1: What is SDLC?
Q2: Need?
Q3: SDLC Phases?
Q4: Advantages?
Q5: Disadvantages?
Q6: What is STLC?
Q7: STLC Phases?

**What is SDLC**
-SDLC stands for Software Development Life Cycle, which is a process used by the software industry to design, develop, and maintain the quality of software.
-The SDLC aims to produce high-quality software that reaches customer expectations, with completion within times and lower cost.
- It consists of a detailed plan describing how to develop, maintain, replace as well as alter or enhance specific software.
-SDLC can be a never-ending process since there is always an upgrade or features to add in current software.
-outcome of each step is an income to the next stage

**Need**
-SDLC encourages the software development team to develop a software product in a disciplined and systematic way. 
-As the software product is developed in a team, it is necessary to have an ideal way to follow for successful completion of software development.

**SDLC Phases**
1- Planning and Requirement Analysis
2- Defining Requirements
3- Designing the Product Architecture
4- Developing the Product
5- Testing
6- Deployment
7- Operations and maintenance

**1- Planning and Requirement Analysis**
-identify the current problem.
-this stage can generally include factors like: resource allocation, project timeline, cost estimation, capacity planning etc.
-output of this stage includes project plans, schedules, project managers, staff members to work on the project, cost estimation etc.

**2- Defining Requirements**
-this phase gathers the client's requirements.
-the output of this phase in the waterfall model is usually a document that lists these requirements, whereas in the agile method, by contrast, may produce a backlog of tasks to be performed.

**3- Designing the Product Architecture**
-once the requirements are understood, software developer and architects can begin the designing of the software.
-the output of this phase includes the design document that lists the patterns and components selected for the project, code used by spike used as a starting point for the development

**4- Developing the Product**
-here the development of the product takes place.
-depending on the methodology, this phase may be conducted in time-boxed (agile) or may proceed as a single block of effort(waterfall). Regardless of methodology, development teams should produce working software as quickly as possible. And Business stakeholders should be engaged regularly, to ensure that their expectations are being met.
-the development itself contain 4 stages:
     4.1 Algorithm development
     4.2 Source code writing
     4.3 Compilation
     4.4 Testing and debugging
-the output of this phase is testable and functional software.

**5- Testing**
-this is where different testing techniques takes place.
-it is the most important part of the SDLC since it is impossible to deliver quality software without testing.
-all the code flaws missed during the development are detected here, documented, and passed back to the developers to fix.
-automating the tests ensure that tests are run regularly, and never skipped for expediency. they can be automated using Continuous Integration tools, like Codeship.
-the testing process repeats until all the critical issues are removed and software workflow is stable.
-the output of this phase is a functioning software, ready for deployment to a production environment.

**6- Deployment**
-it is ideally a highly automated phase.
-the software is deployed the instant it is ready.
-Application Release Automation (ARA) tools are used in medium and large-size enterprises to automate the deployment of applications to production environments
-the output of this phase is the release to Production of working software.

**7- Operations and maintenance**
-it is the last phase of SDLC, and "end of the beginning".
-the SDLC does not end here though, Software is monitored constantly to ensure proper operation.
-bugs and defects are reported and responded to if there's any, which possibly rerun some of the stages of the SDLC again such as testing.

**Advantages**
-encourages complete, accurate requirement
-documents big picture as well as details
-early identification of security vulnerabilities helps reduce costs to implement security controls and mitigation processes of vulnerabilities.

**Disadvantages**
-time-consuming
-difficult to document requirements for large systems

**What is STLC**
-it is an integral part of SDLC which deals only with the testing phase.
-we can call STLC as a subset of SDLC, and SDLC as a superset of STLC.
-provides a step-by-step process to ensure quality software
-the tester can analyze and define the scope of testing, entry and exit criteria and also the Test Cases, while the software is developing. It helps reduce the test cycle time.
-the testers are ready with test cases and start with execution, as soon as te development phase is over. It helps in finding bugs in the initial phases.

**STLC Phases**
-It has a total of 6 stages, but which phase to be run depends upon the nature of the software, time, resources allocated for the testing.
1. Requirement Analysis − the testing team starts high-level analysis concerning the AUT (Application under Test), When the requirements are ready and shared with the stakeholders
2. Test Planning − Test team plans the strategy and approach.
3. Test Case Designing − test cases are developed based on scope and criteria’s.
4. Test Environment Setup − When integrated environment is ready to validate the product.
5. Test Execution − Real-time validation of product and finding bugs.
6. Test Closure − Once testing is completed, matrix, reports, results are documented.

**Please comment if you have any feedback or suggestions**