Application Lifecycle Management (ALM) is a generic term for different steps in phases starting from the genesis down to the liquidation of an application.
Table of Contents
- ALM meaning
- What is application lifecycle management and why is ALM so important and needed?
- Software Lifecycle Management with Application Lifecycle Management
- Software life cycle
- Ideas and Visions
- Portfolio and Project Management
- Planning and Estimation
- Requirements Management
- Software Design and Development
- Quality assurance and Testing
- Implementation and Deployment
- Operations, Maintenance and Support
- Team Collaboration and Communication
- Which software do you recommend?
1. ALM meaning
ALM stands for Application Lifecycle Management and defines the process from the conceptual idea, through the process of the development and testing to the operation (deployment), followed by the support and finally to the retirement of the software. It also includes project management, requirements management, testing and quality assurance (QA) as well as customer support and IT services around the application.
1.1. ALM definition from Wikipedia
A very clear but industry heavy and technical definition from Wikipedia:
"Application lifecycle management (ALM) is the product lifecycle management (governance, development, and maintenance) of computer programs. It encompasses requirements management, software architecture, computer programming, software testing, software maintenance, change management, continuous integration, project management, and release management."
2. What is application lifecycle management and why is ALM so important and needed?
Consider a project of any size which goes through all disciplines defined in the Software Development Lifecycle (SDLC):
The idea for a new application
- System concept development
Define the scope of the new application and identify the benefits and costs using approaches such as SWOT
Create a project management plan and plan the required resources
- Requirements Analysis
Identify the functional and non-functional requirements
- Integration and Test
- Operations and Maintenance
Also, applications are often built either to reduce the needed workload or to improve the comfort of the users. So if you think about how many steps and how much information and details each discipline will create, you quickly recognize that you need some sort of process to help all team mates to make the application successful. Now think about how the skills of each team member matter; A developer is typically not a person who likes working on the support process for end users. Similarly, supporters and project managers are typically not very savy in using and writing complex pieces of software. Therefore, each discipline also needs a special skill set and has special business requirements to make the discipline process during application creation successful.
You can already see you will need to organize, track, manage and ensure deliveries of each discipline, and you will need to hand over the details and products from discipline to discipline. It is not important which methodology or software development process you have chosen for your project. For the needs of ALM, you can independently choose from any of the following:
- Waterfall models
such as Rational Unified Process
- Spiral models
already seldomly used in the past
- Agile models
such as Kanban or Scrum, which are nowadays considered as standard and modern models
3. Software Lifecycle Management with Application Lifecycle Management
Let us take a deeper look into the Software Development Lifecycle (SDLC).
Consider a team in a organization which needs to go through all these SDLC steps and all previously named disciplines. As a organization manager you want to have an integrated team with integrated data exchange platform to let the team mates easily collaborate together. You need to have a tool, which supports your team in the application lifecycle management (ALM).
4. Software life cycle
To understand the software life cycle better, we'll go through each discipline step by step.
4.1. Ideas and Visions
Depending on the size of the idea and vision there might already be a lot of details, which need to be written down. You could use a piece of software, a document or a spreadsheet. But mainly you would like to write it down for other teams, so they can understand the ideas and visions. It helps all team mates to understand and judge each decision taken at any later phases.
4.2. Portfolio and Project Management
To help you visualize the requirements, progress and status of your projects, manage features, milestones, dependencies and tasks, it is important to use tools for reporting that will help you to make better decisions based on generated graphs, charts, etc.
4.3. Planning and Estimation
It is important to plan and estimate requirements and tasks for your projects. You can use various software tools to specify task priorities, estimate release dates, track task progress, and even ensure certain workflow functionality for more complex requirements.
4.4. Requirements Management
To increase the efficiency and continuously deliver new features and updates, teams have to collaborate to define the requirements, plan releases and sprints, develop and test the softare and finally deploy latest software updates. For that you should use tools that can be adapted to your methodology and processes that are, depending on your needs, also able to manage use cases, workflows, etc.
4.5. Software Design and Development
Source code management is an important part of any project. It makes collaboration between different team mates easier as it provides history of code development, so that you're able to track and manage the changes. This functionality is often integrated into already existing tools, using standard tools such as Git or Subversion, so that you can overview and handle branching and merging in one place.
4.6. Quality assurance and Testing
To manage test cases, you should use a tool that lets you create and manage test cases in folders, including sorting and filtering as well as customizing views, defining parameters and test steps for test cases and grouping test cases in test sets for tracking. A very important aspect is support for automated testing, which takes care of testing after every new version release or an update.
4.7. Implementation and Deployment
For deployment you will need a tool that is able to integrate with Continuous Integration (CI) servers that your development team is using (eg. Jenkins). This way you will be able to see which features have been added, which changes have been made in builds and which issues have been resolved. DevOps is a concept that connects tasks that are performed by application development team and systems operations team. This way it is possible to test the new code with real data in production ready environments.
4.8. Operations, Maintenance and Support
After the release it is very important to maintain and support the product. This can be done by integrating customer support tools and help desk.
4.9. Team Collaboration and Communication
To have a reliable record of communication between teams to ensure that other team members can track down information and understand what is going on, you need an integrated instant messenger as well as asynchronous methods such as email notifications. This way, teams can collaborate and communicate without losing any information.