Application lifecycle management (ALM) is a practice used for the development of computer software applications. This isn't solely management of the source code that is then compiled into a software program, but every aspect of development from the moment of concept to the point when the application is deemed no longer feasible for further development. With this practice, ALM is a means to bridge the goals that a business or organization has for a particular piece of software, the creation or implementation of that software, and the software's maintenance. ALM, then, is an effective in improving production, collaboration and quality across a development project's lifetime.
The process is typically broken down into three major aims, each with overlapping responsibilities. The primary, and most prevalent practice throughout the entire application of the lifecycle management process, is governance. From the moment of conception, everything in the ALM process is managed and tracked. Each component of the lifecycle, including the design, the developers, the software code itself, falls under the responsibility of governance.
Governance handles all of the organization of these elements, as well as the analysis and reporting generated from every step in the process. This helps the business to make sound decisions on further development efforts such as cost comparisons to various aspects of the lifecycle in order to improve on the overall process. The data metrics obtained during the application lifecycle management through its governance are also important in determining whether further development is warranted, or the software project should be scrapped for another effort.
The second primary aspect of ALM, development, is where all of the proverbial wrench-spinning takes place. This is also where application lifecycle management can become confused with the software development lifecycle (SDLC), which in itself contains additional levels of complexity. ALM, though, includes SDLC as a critical component. The development aspect takes care of the requirements, design, coding and and testing of the software. This is also where much of the maintenance happens, such as new full versions, bug fixes and minor releases.
Then there are the daily operations. Once the software has reached a state in which it can successfully be deployed, in that it meets all of the requirements and design specifications and has passed initial testing for quality, it is fit for release. Operations picks up the application lifecycle management role here, by preparing the software for deployment. This can involve any marketing and sales as may be necessary and setting up a support environment for assisting customers.