Application Lifecycle Management (ALM) is the specification, design, development and testing of a software application. ALM covers the entire lifecycle from the idea conception, through to the development, testing, deployment, support and ultimately retirement of systems.
ALM tools provide a standardized environment for communication and collaboration between software development teams and related departments, such as test and operations. They also automate the process of software development and delivery.
Why It is Important?
In the past, before the Agile Manifesto was published and before organizations realized that their previous waterfall approach to software development was inefficient and prone to scope creep, cost overruns and missed deadlines, each of the disciplines that made up the overall software process was completely separate.
Once organizations realized how much more efficient they can be having integrated teams that collaboratively define the requirements, plan the releases and sprints, test the product during development and deploy the latest update in a seamless way, the old separate processes didn’t make sense. ALM is basically the fusing together of the disciplines concerned with all aspects of the software delivery process:
Instead of a set of business analysts working in a vacuum to define the vision and requirements, handing off the design to the developers, handing off the code to the testers, handing off the product to the IT support team to deploy and maintain, you now have a single ALM process spanning all these elements continuously delivering new features every X weeks. We now expect updates to our systems and apps continually rather than a major new release every 18 months.
Let’s now consider some of the components of application lifecycle management.
ALM tools should have functionality that helps you make sense of your requirements and ideally the tools should be adaptable to your methodology and processes rather than the other way around.
Some ALM tools support the capture and management of system use-cases as part of the requirements definition process. Use cases can be stored in the system along with their associated scenarios and links to the other requirements that the use case defines. Depending on your needs (do you have complicated multi-step processes or simple CRUD data entry needs) this may be an important feature.
Some ALM tools let you define and manage workflows that help orchestrate your processes:
If you are working in regulated or process driven industries this may be a critical feature, if you are working in a startup business that does not need heavy process management features then it will not be as important.
Estimation and Planning
ALM Tools typically provide functionality to help you estimate and plan your projects. Some tools are designed to manage traditional waterfall projects, some are designed for only agile development projects and some can handle both:
Depending on the level of planning you need, you may need an ALM tool that lets you estimate individual technical tasks that are then aggregated back against the original requirements that were specified:
If you have more complex review and oversight requirements, you may need to have workflow functionality that ensures all of the assigned tasks follow a specific set of steps with reviews and quality gates:
Although normally the actual act of developing and writing the code is not considered to be part of ALM itself, you usually need to have source code management functionality integrated closely within the ALM suite and most ALM tools will offer integrated source code management functionality:
Some ALM tools will provide proprietary source code management solutions, others will use industry-standard tools such as Git or Subversion. Ideally the ALM tool should provide flexibility to support different branching and merging models:
Ideally even though the code writing is not strictly part of the ALM suite itself, the best ALM tools on the market provide integration with the tools used by developers to actually write the code. For example, the Microsoft Visual Studio IDE has a plug-in architecture that lets ALM vendors provide plugins to manage work items:
The popular open-source Eclipse IDE has gone one step further with its Mylyn task based interface that lets developers connect to their ALM tool of choice and use the same user interface for all the different supported tools:
Testing and Quality Assurance
One of the key attributes that distinguishes ALM suites from mere project management tools or issue tracking systems is that they include the QA part of the software development process. At the very least they should offer basic test case management:
The ALM tool should let you create and manage your test cases in folders, with sorting and filtering capabilities. It should enable users to display different columns in their own customized view, and allow the manager to define custom properties and lists that can be used in the project.
Some ALM tools provide the ability to define specific test steps and parameters for the test cases, others may only offer a simple test case artifact.
If you need the ability to manage a larger QA team and/or have testers working in different geographies and timezones then you will also want the ALM tool to provide some kind of test suite or test set concept that lets you group test cases for assignment and tracking:
One area that some ALM suites will offer is support for automated testing. As applications become increasingly complex with user interfaces and published APIs to test, with the testing needs covering a wide variety of platforms and technologies (mobile, web, desktop) it is not feasible to manually test everything each time you release a new version or update.
So understanding your testing needs and which the ALM tool provides is critically important. Some tools provide the ability to connect to different testing tools to manage your automated testing:
Other ALM suites even include native test automation capabilities as either part of the core system or a fully-integrated add-on:
In either case, it is important to understand which types of application you need to test and make sure the ALM tool you choose either can handle that testing for you or at least integrates with tools that can.
Deployment and DevOps
Although the compilation and packaging of the software being developed is often outside of the scope of ALM tools themselves, most ALM tools will at the very least let you integrate with continuous integration (aka CI) servers such as Jenkins:
Depending on your needs, you should make sure that the ALM tool you choose can integrate with the different CI servers that your development teams and using and that the reporting within the ALM tool can fuse the information from other sources with the build information. That way you can see all of the changes in each build, which features have been added and which issues have been resolved.
Related to deployment is the concept of DevOps. DevOps is the blending of tasks performed by a company's application development and systems operations teams into a coherent whole. Previously your developers would need help from the IT group to provision different environments (development, test, staging, etc.) and test the application in stages in each environment.
Now with more applications being cloud hosted and release cycles measured in days not months you cannot develop and test in isolation. You will need to test new updates with real data in production-ready environments, DevOps is the key to making this a reality.
Making sure that you can see which code changes have made it into production and being able to tie customer issues with specific builds becomes increasingly important, so make sure the ALM tool you choose has the ability to perform this level of analysis and traceability.
Support and Maintenance
Sadly the most overlooked part of the software lifecycle is the support and maintenance of the product after it has been released. Traditionally this was done right at the end when the development team delivered the finished product to the support team and then washing their hands of the system until the next version was developed.
With the move to agile development, continuous delivery and DevOps, support is now an integral part of the process. Customer support is the feedback mechanism that guides the new user stories in the next sprint. So don’t forget to ensure that the ALM suite either has a customer support capability, or at the very least can integrate with other help desk or customer support tools.
Project and Portfolio Management
Since ALM tools provide such rich and powerful functionality, it is important to make sure that they also provide good tools and features for consuming the information and being able to report across the entire system with information summarized and fused together to allow decision making.
A common feature in many good ALM tools is the ability to display ‘dashboards’ or commonly accessed graphs and charts that cover the key project metrics:
In addition, if you need to manage larger programs composed of several different projects, each with their own requirements, features and milestones then you will need to make sure the ALM tool has Project Portfolio Management (PPM) functionality:
Traditionally PPM tools were a separate category, but increasingly ALM vendors are including PPM features in their core offerings. They can let you visualize the current status of your projects and in some of the more powerful examples, manage the dependencies and tasks across the different projects.
Collaboration and Communication
It is highly inefficient to rely on email, text messages or even worse, group meetings, to facilitate the communication of team members in real time. Information may be out of context and afterward, no reliable record of the interchange exists, leaving other team members in a vacuum with no good way to discover what is going on.
ALM tools should include an integrated instant-messenger that lets users collaborate and communicate in real-time regardless of geographic location, plus other asynchronous methods such as RSS feeds and email notifications.
Develop requirements and user-stories, then decompose into detailed tasks for resource tracking
Prioritize and schedule requirements for each release/iteration
Assign requirements, tasks and incidents using Agile planning board
Track bugs, enhancements, risks and issues linked to changes in your source code repository
Create, edit and execute test-cases
Map tests to requirements to track coverage
Create and assign test sets for test execution management
Record bugs linked to test steps for full test traceability
Manage manual and automated testing
Personalized dashboards and customizable reporting
Ability to attach documents, screenshots and URLs to all artifacts
Full audit history of all changes made in the system
Customizable graphs and reports in multiple formats (HTML, MS-Office and Adobe Acrobat).
PLM (Product Lifecycle Management) - Click Here
Source: Spira Team