Software Development Life Cycle
Learning Objectives
- You know of the software development life cycle.
- You know of the common steps in the software development life cycle.
While software engineering is a discipline focused on building software, software development is a process that starts with an idea and results with a maintained product. The steps in the process are often discussed as a whole as the software development life cycle.
The steps typically include at least requirements analysis, application design, implementation, testing, deployment, and maintenance, which briefly are as follows.
-
In requirements analysis, the team works with the customer to understand the problem that the software is intended to solve. During this process, the team creates a set of requirements that describe the software’s functionality. The requirements are often written in a natural language in some structured format, using e.g. use cases or user stories, and can also include non-functional requirements, such as requirements related to performance, security, and usability.
-
In application design, the team creates a design for the software that will implement the requirements. The design can be written in a natural language, and can also include diagrams and other visualizations. The design is often created in multiple steps, starting with a high-level design that describes the overall structure of the software, and then moving to a low-level design that describes the details of the software’s components.
-
In implementation, the team writes the actual code that implements the design.
-
In testing, the team verifies that the software works as intended. This can include unit testing, integration testing, and system testing, as well as acceptance testing.
-
In deployment, the team makes the software available to the customer. This can include installing the software on the customer’s computers, or making the software available on the Internet.
-
In maintenance, the team fixes bugs and adds new features to the software. This can include both planned maintenance, such as adding new features, and unplanned maintenance, such as fixing bugs.
Although the steps are discussed linearly above, most software development is iterative, meaning that the team goes through the steps multiple times. For example, the team might first gather key requirements, and design and implement a proof-of-concept system that can be used to verify that the team and the client share an understanding of the software. Similarly, for example, testing and implementation tasks can be done in parallal, or even so that the team always writes tests first before writing the implementation code.
Deciding how to follow the steps in the software development life cycle is often done by selecting a software process model that acts as a framework for work. The next chapter, Software Process Models, briefly discusses a range of software process models.