Application Lifecycle Management (ALM) is an umbrella term that covers all aspects of software development and the work necessary to manage it after developers deploy it to production. From design and planning to development and deployment and maintenance and bug fixes, ALM ensures that applications function as intended and that developers can resolve problems quickly. The goal in ALM is customer satisfaction and assurance that software contains functionality defined by customer requirements.
Developing software is a process. Any delays during just one of the phases in the lifecycle can create delays in the entire process. An organization that builds software should be aware of every phase to prepare and hire the staff necessary to manage it.
Arguably the most important of all phases is the planning phase. A good plan will govern results and determine success. During this phase, project managers will collect information from stakeholders. These stakeholders could be internal employees who will use the software or external users who will be purchasing the software. Project managers could use surveys, questionnaires, and meetings to collect information and generate specifications for developers.
The planning phase will also decide if more infrastructure and staff resources are needed. The organization might need additional staff to manage the project, developers during the development phase, or infrastructure to host the application. It will also determine how the organization will maintain the software and the specific people responsible for that task.
Developers build and create software during the development phase. The application management lifecycle supports many methodologies such as Agile and Waterfall. It’s up to the developers to determine which method is best for them, but most teams work with Agile. Agile has several strategies to cut up the development phase into “sprints” where developers are assigned a particular feature in the software. Then they code it for a determined amount of time.
The way developers program software should ensure that they deliver the end product on time. Any mistakes could delay this phase, which will delay the entire project. Developers communicate with project managers to give them updates and status reports, and any end-user changes could delay the timeline.
Developers must test every application to ensure and produce a product that is as bug-free as possible. Testing should also include vulnerability scanning to ensure that common attacks cannot exploit software. In Agile environments, testing and development happen at the same time. Developers code their functionality into the codebase and then send changes to quality assurance (QA) for changes or approval.
Testing can be manual and automated. Static testing will run on the developer’s machine and analyze code as it’s developed, so developers get feedback immediately during development. Another common strategy is to compile code and send it to a staging server, where QA will test the application using scripts. Developers might test UI and other components manually.
Developers deploy code during the testing phase, but it still must be deployed to production when it’s finally finished and tested. Production is where the end-user can use the software, so software is only deployed to production when approved, tested for bugs and vulnerabilities, and load tested. Deployments can be automated or manual, depending on the environment.
With DevOps, deployment can be fully automated. The software is first deployed manually and tested as newly-created automation scripts mimic manual deployments to ensure automation is bug-free. During or before deployment, administrators configure servers for the software and provide infrastructure to run it. The type of infrastructure provisioned depends on the software. For example, software supporting external users might need storage, load balancers, intrusion detection, web services, and additional servers supplied before deployment.
Just because the software deployed successfully doesn’t mean the software doesn’t need any more attention. Bugs are often found even after QA. Developers must remediate some of these bugs quickly. Any features added after initial deployment must be deployed to production in the form of upgrades. Developers will also occasionally deploy patches to fix critical vulnerabilities and bugs. Customer service will receive calls from customers with difficulties and questions. They’ll complete all of this work in the maintenance phase.
Any work done to support an application after deployment in production is considered the maintenance phase. All software needs to be maintained to support customer requests and remediate any vulnerabilities and bugs. Future features added to the codebase would also be considered maintenance, including the additional infrastructure needed to support it.
It’s easy to get the application lifecycle management process confused with the Software Development Lifecycle (SDLC). The main difference between the two is that the ALM process involves every phase in development, including maintenance of the application after deployment. The software development lifecycle usually only involves development, bug fixing, and some maintenance. Still, it does not include retiring the application or the many steps required to build an application from start to finish. Some people use the terms interchangeably, but the ALM is a broader term, while the development lifecycle focuses more on coding.
Maintenance overhead generally depends on the efficiency of planning and development, so ALM is imperative for this phase. It also depends on the efficiency of QA to find bugs before they reach production. Software that supports thousands of users will likely have additional features added, unlike smaller applications that support fewer users where developers can include all of the features during development. Smaller applications still need feature requests, but they might not have the extensive overhead to support them.
ALM and SDLC overlap a lot, with the tools used for ALM also seeing use for SDLC in methodologies such as Agile and Waterfall. The tools used in ALM help control the flow of each phase and ensure everyone is on the same page with what tasks are on the agenda and the status and progression of the project.
A few tools standard in ALM are:
If your organization decides to build software for either internal or external users, the application lifecycle management phases will ensure that it’s made correctly and to specifications. It also ensures that you keep everyone involved, including DevOps and operations people who must support the hardware that runs the software. From planning to maintenance, ALM and ALM tools will help your next software development project run more smoothly.