As you can see in Figure 1.1, the ALM cycle contains five stages:
- Plan
- Develop
- Test
- Deploy
- Maintain
The following sections will explain these five stages.
Plan
First, an application must be planned. Therefore, this is the first stage of the ALM process. This will include requirement gathering from all stakeholders to collect all their needs for the application to support their business cases in the best way possible. Business requirements are not the only requirements we have to take into consideration. Within this stage, gathering compliance and governance requirements is as important as gathering business requirements. Usually, we differentiate between functional and non-functional requirements, where business requirements are often functional and the others mentioned are often non-functional.
With all this input and requirements, a design of the application will be created.
Since the ALM process is a cycle and can repeat itself, it can support an Agile development approach. In this case, the requirements gathered in the Plan stage of one iteration can change the requirements and design of an earlier iteration.
Develop
After the plan for the application (or the next iteration) is completed, the team starts implementing it. The development team must break down given requirements into small pieces to be able to implement them.
Within this stage, the team could use different development approaches. The most known ones are either a Waterfall or an Agile approach. Since the whole ALM process is a circle and repeats itself, this would mean that the chosen development approach is a sub-approach.
Test
Usually, the Test stage and the Develop stage are very tightly related to each other and even overlap. Testers start their work of defining test cases and setting up test environments while the application is still in development. They send features back to development whenever they find parts that are not working as expected, which should happen in close communication between the test team and the development team.
In addition to the often-manual tests of dedicated test teams, it is recommended that the development team also creates unit tests as well as integration tests for the software they are writing. In addition to that, there might be the need for automated UI tests, performance tests, load tests, and a bunch of other tests.
The formal purpose of this stage is to verify that the created application meets the requirements defined in the planning stage of the ALM process. Until this is the case, the team will do mini-iterations between the Develop and Test stages.
Deploy
This stage defines the release of the product to production or the end user. There is no direct definition of how this stage should be done. It very much depends on the kind of software developed, the target audience, the prerequisites within the organization, and a lot of other factors.
Maintain
The last stage is to maintain your application, as the name says. It includes monitoring and managing the application. This stage is usually the longest in an ALM process.
As soon as an application is in this stage, it stays there until it gets retired, even though new iterations (a.k.a., new versions) are usually started as soon as one version goes to production and therefore enters the Maintain stage.