Application Lifecycle Management at a glance
Welcome to Application Lifecycle Management, in this series of blog posts, I will illustrate the basics of Application Lifecycle Management including its benefits, history and building blocks. We shall talk about Agile methodology in general and how Agile strategies can enrich application lifecycle management.
This first blog post sets the stage and gives you an introduction to what ALM comprises. The second part will talk about the building blocks of ALM followed by part three which will talk about the tools used for implementing ALM. Part four introduces version control strategies that will help you streamline your development process. Finally, part five will discuss productive workspaces and how ALM can counteract the illusion of control by operating as a change enabler. After this series of blog posts, you’ll be ready to explore Agile strategies in more detail and learn how you can implement these strategies with the tools that Microsoft provides.
Getting started with Application Lifecycle Management
This post is about Application Lifecycle Management (ALM) and brings together best of two worlds, Agile and ALM. We shall discuss ALM as a way to develop and release software in a coherent, integrated way, spanning all development phases, artifact types, roles and business units. Bringing ALM and Agile together and using the right tools leads to modern, efficient way of developing software. Consequently, you’ll reduce costs, boost your productivity, and accelerate your team’s collaboration. And you can make developing software a lot more fun. ALM is based on software configuration management (SCM). SCM
in turn, is based on basic version control (see figure 1 below)
Figure #1: ALM based on SCM
- Helps overcome process, technology, and functional barriers (such as roles and organization units)
- Spans all artifacts types as well as development phases and project roles
- Uses an integrated lightweight tools enabling the teams to collaborate effectively without any silos.
- Makes the relationship of given or generated artifacts visible, providing traceability and reproducibility.
- Defines task-based activities that are aligned with requirements. This means that the activities are linked to requirements and that all changes are traceable to their requirements.
ALM can be used with all kinds of process models and methodologies, including traditional ones, such as waterfall or spiral models. There are also ALM approaches that can hardly be called Agile or that are based on large-scale commercial tools, these can be difficult and expensive to implement. We however shall focus on driving the process through people and not merely through tools. This results in processes and tools that are flexible, open to change, and high quality.
ALM describes the coordination of development lifecycle disciplines including the management of requirements, changes, configurations, integrations, releases and tests. These functions span development phases including requirements definition, design, code, test, and run as shown below.
Figure #2: ALM bridges the development disciplines and phases of requirements definition, design, code, test, and run.
ALM is aligned with the engineering process, spanning development phases. This results in releases that are functionally and technically consistent. ALM also manages the relationships between various artifact types, including requirement documents, coding artifacts, and build scripts that are used or produced by the engineering process. By organizing, linking, and referencing activities, artifacts, you can track the development process as a whole. Through the use of integrated tools, ALM can help you overcome the biggest challenge in software creation process: the technological and functional barriers that make it difficult to implement a transparent and consistent development process.
ALM is a task-based approach in which all activities are linked to requirements, and the relationships between all artifacts are visible; therefore, artifacts can be traced to the requirements that they are based on. In summary, ALM consists of the following four major fundamentals.
- Collaboration - All team members are aware of what others are doing. That way, choices can be made that best facilitate the progress of the entire project. This is achieved by focusing on personal interactions, customer-focused development approach, and task-based development
supported by tools.
- Integration - Achieving business targets requires an enterprise infrastructure to integrate roles, teams, workflows, and repositories into a responsive software delivery chain. People must be connected wherever they are located and must have the assets they need to get the information they seek. Integration occurs at several levels, including developer builds and integration builds, and is seamlessly maintained with comprehensive testing throughout the lifecycle.
- Automation - The streaming of the full lifecycle is heavily based on end-to-end automation. For example, all the steps in a build, including preparing the build system, applying baselines to source control systems, conducting the build, running the technical and functional tests as well as acceptance tests, packaging and deploying and staging the artifacts,are automated with the tools we shall be discussing later on.
- Continuous Improvement-You can only improve what you can see and measure, so building and delivering software that minimizes manual work is a requirement for easily identifying where you are in your process. Comprehensive testing, regular retrospectives (where you discuss what went well and what needs improvement), project transparency, and project health allow you to improve continuously.
Other Links for Application Lifecycle Management