Application Life-cycle Management (ALM) is a rather new term indicating a clearer focus on coordinating the total life-cycle of developing a software product or solution beyond core software development tasks. Kaariainen and Valimaki (2009) has defined ALM as “the coordination of activities and the management of artifacts (e.g. requirements, source code, test cases) during the software product’s lifecycle”. Forrester Research [ibid.] has defined three important pillars of ALM:
- Traceability of relationship between artifacts like requirements, models, source code, build scripts and test cases etc.
- Automation of high-level processes, like building the system, various tests, deployment etc.
- Visibility into the progress of development efforts, enabling some control of various qualities of the process and the software product under development or maintenance.
Often it is wrongly perceived that any tool that performs a task within a project is an ALM tool. But actually the term ALM refers to the management of all the phases of the application lifecycle within a single tool. The main purpose of using ALM tools is to gain control over the entire project and govern it through all the phases.
An ideal ALM tool integrates data from the different stages of the software development process and offers functionalities such as:
- Multiple abstraction layers: It should offer an overview of the project status adapted to the needs of all the actors in the software development process.
- Requirements Management: It should support software engineers in the specification and storage of requirements, enabling the monitoring of their main characteristics such as completeness, consistency, unambiguity, obsolescence, traceability or verifiability.
- Design Management: Software design is controlled as long as the relationship among the designed artefacts is clearly defined. If changes are introduced in the design stage, the tool should highlight which relations will be comprised.
- Code Analysis: It should offer measures and reports about the code’s condition allowing to directly inspect the affected lines of code.
- Test Management: It should support test engineers in the elaboration, storage and monitoring of Test Cases, allowing them to trace test cases to requirements or design, to automate tests or to report test results
- Configuration, Release, Builds and Deployment Control: The tool should enable to manage the configuration of the tool under development, its releases, builds and deployments.
- Issue Tracking: It should include issue tracking functionality in order to monitor possible bugs, defects…
- Collaborative work: ALM tool should also use the efficiency of workflows and enhance the collaborative work between the team members.
Nowadays, integration between the different stages of a project is essential. Thereby controlling and monitoring all these phases, ALM tools provide quality support to all the people involved in a software development project.
U-QASAR argues that an ALM tool should cover the whole development life-cycle including Quality Assurance, a concept which is left apart by most of the commercial and non-commercial tools.