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.
Application Lifecycle Management (ALM) is really an umbrella term that covers several different disciplines that traditionally were considered separate, including project management, requirements management, development, testing and quality assurance (QA) as well as customer support and IT service delivery:
So in essence, 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.
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.
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:
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.
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.
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.
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.
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.
So in summary, when considering different ALM platforms and suites, you should look for systems that can provide the following key ALM features:
In the manufacturing industry, product lifecycle management (PLM) is the process of managing the entire lifecycle of a product from inception, through engineering design and manufacture, to service and disposal of manufactured products. Traditionally this has been a separate process to ALM, with hardware and physical systems using standalone PLM systems to manage their lifecycles and the software components using a separate ALM solution or suite of ALM tools.
We are seeing a convergence happening in the Application Lifecycle Management (ALM) and Product Lifecycle Management (PLM) markets. Traditionally companies that created hardware devices were concerned with the components, assemblies and parts that comprise their products and companies that develop software were concerned with requirements, use cases, tests, bugs, issues and source code. However, as the lines between software and hardware products increasingly blur (is a smartphone hardware or software, what about an internet-connected industrial sensor?) and Agile development means that the hardware and software cannot be developed independently, the tools used to manage software and hardware products need to become more integrated.
In a parallel to what happened with ERP, the standard business line functions of HR, Finance and other enterprise functions are also becoming intertwined with ALM / PLM systems. The timesheets entered by a developer to mark the time spent fixing a bug or implementing a feature may need to be billed to a client, or used to determine that quarter's hiring needs. So we believe that in the future, customers will be using Enterprise Lifecycle Management (ELM) solutions; they will contain elements of ALM, PLM and will either integrate with ERP systems or even include such functions.
When managing your software projects, do you find yourself juggling between requirements documents, bug-tracking tools, project plans and test reports to make sure that your project is on track? Are you tired of having to manually 'glue' together a patchwork of tools and systems from different vendors?
SpiraTeam is the premier Application Lifecycle Management (ALM) system that manages your requirements, releases, tests, issues and tasks in one integrated environment. SpiraTeam provides integrated dashboards of key project health and status information. SpiraTeam provides reporting dashboards of key project quality and progress indicators - requirements test coverage, task progress, project velocity, test execution and top risk and issues – in one consolidated view that is tailor-made for agile methodologies as well as supporting your legacy/hybrid waterfall projects.
In addition, we provide superb technical support that ensures that enquiries and questions are dealt with in a timely and professional manner.
To learn more about SpiraTeam and how it can improve your application lifecycle management (ALM), please:
Questions? email or call us at +1 (202) 558-6885