The software development life cycle (SDLC) *describes the steps in a model for software development* throughout its life. It maps software creation from an idea to **requirements gathering and analysis** to **design**, **coding**, **testing**, and **rollout**. Once software is in production, it also includes user training, maintenance, and decommissioning at the end of the software package’s useful life. ![[SDLC.png]] ### Software Development Phases 1. The **planning phase** is where initial investigations into *whether the effort should occur are conducted*. This stage also looks at alternative solutions and high-level costs for each solution proposed. It results in a recommendation with a plan to move forward. 2. Once an effort has been deemed feasible, it will typically go through an **requirements definition** phase. In this phase customer input is sought to determine *what the desired functionality is*, what the current system or application currently does and what it doesn’t do, and what improvements are desired. Requirements may be ranked to determine which are most critical to the success of the project. 3. The **design phase** includes design for functionality, architecture, integration points and techniques, dataflows, business processes, and any other elements that require *design consideration*. 4. The actual *coding of the application* occurs during the **coding phase**. This phase may involve testing of parts of the software, including unit testing, the testing of small components individually to ensure they function properly. 5. Although some testing is likely to occur in the development phase, *formal testing with customers* or others outside of the development team occurs in the **testing phase**. Individual units or software components are integrated and then tested to ensure proper functionality. In addition, connections to outside services, data sources, and other integration may occur during this phase. During this phase user acceptance testing (UAT) occurs to ensure that the users of the software are satisfied with its functionality. 6. The important task of ensuring that the end *users are trained on the software* and that the software has entered general use occurs in the **training and transition phase**. This phase is sometimes called the acceptance, installation, and deployment phase. 7. Once a project reaches completion, the application or service will enter what is usually the longest phase: **operations and maintenance**. This phase includes *patching, updating, minor modifications, and other work that goes into daily support*. 8. The **decommissioning phase** occurs when a product or system reaches the end of its life. Although disposition is often ignored in the excitement of developing new products, it is an important phase for a number of reasons: *shutting down old products* can produce cost savings, replacing existing tools may require specific knowledge or additional effort, and data and systems may need to be preserved or properly disposed of. ### [[Deployment Environments]] ### [[DevSecOps and DevOps]]