Software Development Life Cycle
Published: 2024-04-22 03:46:11

---
Within software development there lies a methodology for traversing through the stages of development. Each step plays a vital role to ensure good-quality software. These roles specify tasks that need to be performed, at different stages, by software developers or engineers. The ultimate goes is to ensure the  roduct meets the expectations held by the customer and is within the overall budget. Prior knowledge of each stage and what each one demands is important when undergoing the software evelopment process.

**How Many Phases are in the SDLC?**

In my research I have learned that an alternative name for this process is the [Systems Development Life Cycle](https://en.wikipedia.org/wiki/Systems_development_life_cycle).
This concept is based on the potential combination of software and hardware configurations. Now, it isn't always as such; a system can also be comprised of only software or of only hardware. Defined into a six stages: "requirement analysis, design, development and testing, implementation, documentation, and evaluation". I would take it a bit further and say there are actually seven stages due to the potential 'clutter' of too many important stages that I consider valid enough to give each one it's own stage to check off the list, but this is my own opinion. Although the stages remain the same and can still be composed of six, I will have each step listed separately for ease of navigation.

## Phases

Below I plan to display each of the [phases](https://www.geeksforgeeks.org/software-development-life-cycle-sdlc/): Planning, Requirement Analysis, Design, Development, Testing, Implementation(Deployment), and of course, Maintenance. I will also state the current stage that [DevSecOps](https://www.ibm.com/topics/devsecops#:~:text=DevSecOps%2C%20which%20is%20short%20for,%2C%20testing%2C%20delivery%20and%20deployment.) would be involved in the development process.

![SDLC](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nu52xkq4crnysar14arf.png)



  **Planning**

The first stage of the life cycle is the identification of difficulties that the software to be created will resolve. This also includes creating a 'check-list' of tasks you plan to complete to reach goals and the ways it will meet the customer's or stakeholder's demands.

- <u>_DeVSecOps:_</u>
  Identification of potential security requirements and review of potential threats and vulnerabilities.

  **Requirement Analysis**

The second step of the starting process is to take in the analysis from the client and begin designing the features of the solutions for the problems they presented during the planning process.

  **Design**

The design phase is when you begin to structure the technical details of the product. Taking the information gathered during the requirement analysis and reconstruct them into a structured design document, focusing heavily on the technical aspects. This includes prototypes, user interfaces, sketches, screen designs, etc.

- <u>_DeVSecOps:_</u>
  The application of security design principles and the creation of a structured design document including threat modeling, risk analysis, access control, and encryption

  **Development**

The [development](https://www.mtu.edu/it/security/policies-procedures-guidelines/information-security-program/system-development-lifecycle/#:~:text=The%20Development%20phase%20consists%20of,testing%20of%20the%20IT%20system.) phase is when you take all that you have been brainstorming and documenting and translating it into system components. This is critical for the preparation of integration and testing individual elements for usability.

- <u>_DeVSecOps:_</u>
  The use and integration of tools like firewalls, security 
  settings, and access controls and procedures for testing to 
  prevent regressions and maintain quality with each release.

  **Testing**

The testing phase begins after the software has been built and deployed to a testing environment. This is when developers evaluate all defects and bugs within the software and confirms that it meets quality standards with functional testing, unit-testing, scalability and speed under different conditions, security testing for vulnerabilities, usability testing, and acceptance testing.

-<u>_DeVSecOps:_</u>
  Conducting code reviews for compliance with security standards.
  Running security tests like penetration testing, static 
  application security testing, and interactive application 
  security testing.

 **Implementation/Deployment**

Considered as the final stage of the software development life cycle. The final stage where all checks have passed and the final product is delivered to the client in a live production environment.

- <u>_DeVSecOps:_</u>
  Addressing any security concerns that may impact the live 
  production system. Focusing on logging change activities and 
  potential configuration variations between the production 
  environment and deployment settings.

  **Maintenance**

Now, I know I said the deployment was the final stage and that still remains to be true, but, like most things, maintenance is an ongoing, continuous thing when prolonging quality products. This commitment to quality, and performance, requires levels of upkeep such as updating software with new features, as demands change over time, rectifying bugs and issues.

- <u>_DeVSecOps:_</u>
  Continuously monitoring products for threats and vulnerabilities and maintaining up-to-date software with security patches.

In conclusion each stage plays a critical role when producing quality software for clients or really for anyone that may require it. During my adventure into software engineering I find how fascinating each and every topic can be and how important each category relates to what I, and others, do every day. In the future I plan to cover the Software Development Life Cycle Models and how they relate to everything I covered.