Application lifecycle management (ALM) is the people, tools, and processes that manage the life cycle of an application from conception to end of life.
ALM is made up of several disciplines that have often been separated under legacy development processes, such as a waterfall development method, including project management, requirements management, software development, testing and quality assurance, deployment, and maintenance.
Application lifecycle management supports agile and DevOps development approaches by integrating these disciplines together and enabling teams to collaborate more effectively for your organization..
Adopting ALM also leads to continuous delivery of software and updates with frequent releases, sometimes as often as several per day, as opposed to new releases only coming every few months or once a year.
Application lifecycle management provides a framework for software development while also helping you to manage your software over time. Following ALM practices uses a lightweight, pre-established plan and requirements to turn an idea into an application.
When approaching software development with ALM, you need to consider the whole lifespan of the application. Maintenance and future updates should be taken into account, including when the application should be retired and replaced.
By bringing these pieces together, ALM leads to faster deployments, improved visibility into your workflow, higher-quality products, and increased developer satisfaction.
ALM helps give visibility to the development process. Because the process is integrated, you can see what progress has been made, which steps still need to be completed, how long things are taking, which tests have been completed, and more.
Governance describes the decisions made about an application. When you begin the process of creating a new application, you’ll start with the initial idea for the app and also need to consider how it relates to your business needs and goals.
This contributes to the requirements for the new application, which need to be defined and agreed upon as part of the governance stage.
Resource management, data and security, and user access are additional components of application governance.
Standardization of these processes leads to the ability to automate governance. Automating these governance processes will speed application delivery.
After requirements for the application or update have been outlined and agreed to development can begin. Teams that follow the agile methodology for development may be developing and deploying as often as once, or even several times, each day.
Designing, building, testing, and deploying the application can all be considered part of the development phase.
Once the new application has been developed it will need to be tested and bugs will need to be resolved before moving forward into production.
For agile and DevOps teams, testing should occur simultaneously with development. Feedback should be passed back to the development team in a continuous manner.
Continuous integration should be part of the development process to keep these frequent updates from conflicting with each other.
The goal of the testing stage is to make sure that the requirements outlined by governance have been met and that the application works as it should before being released to users.
Operations and maintenance
After the tests are completed and the necessary bugs are fixed, the application can be deployed to users.
The operations and maintenance stage is what focuses ALM on the complete lifespan of an application. Ops doesn’t end once an application is deployed. Regular maintenance and updates need to be considered.
Retirement of an application or service should also be considered as part of maintenance. Teams should define at what point an application will no longer be supported or a newer version will become available.
ALM vs. SDLC
ALM is sometimes confused with the software development life cycle (SDLC) because they both deal with the process of software development. The main difference is that SDLC is primarily focused on the development phase, where ALM is concerned with the entire application life cycle, from concept to maintenance and eventually decommissioning, and continues after the application is developed.
SDLC can be considered part of application life cycle management, primarily during the development, testing, and deployment stages. ALM may include several development life cycles for a given application.
ALM tools essentially function as project management tools that help you bring people and processes together. Look for a tool that includes version control, the ability for teams to communicate in real time, requirements management features, estimation and project planning, source code management, and test management.
You may find all of the features you need in 1 tool, or you may need to integrate with additional tools—developer-specific tools, for example. The ALM tool you choose should also support your development process, whether it's agile, waterfall, DevOps, or something else.
Examples of ALM tools:
- Atlassian Jira
- IBM ALM solutions
- CA Agile Central
- Microsoft Azure DevOps Server
ALM supports a DevOps approach, which goes hand-in-hand with Linux® containers. Containers give your team the underlying technology needed for a cloud-native development style, and support a unified environment for development, delivery, integration, and automation.
And Kubernetes is the modern way to automate Linux container operations. Kubernetes helps you easily and efficiently manage clusters running Linux containers across public, private, or hybrid clouds.
Red Hat® OpenShift® is the enterprise-ready Kubernetes platform that offers development and operations teams a common platform and set of tools as a foundation for building, deploying, and managing containerized applications on any infrastructure so you can achieve your ALM goals.