A bit like humans, software-intensive systems are conceived, come to life, grow, evolve, do their job to contribute to business goal achievements, are retired, and die. Application Lifecycle Management (ALM) is the process of managing a system throughout its entire life.
In small teams and simple environments, core agile practices are usually enough to manage applications. For agility at scale, things are a bit more complicated. ALM is often defined as an approach that integrates disciplines as diverse as requirement management, design management, quality management, and change and release management. Benefits are obvious. ALM breaks down functional silos and promotes collaboration and role-focused views of the application lifecycle. The entire team gets greater insights into the project. Actionable information leads to better productivity, improved quality.... and enhanced customer satisfaction.
Design management is a key building block in ALM. The pragmatic architects do not work in isolation (read more on Pragmatism in architecture) . Those completing architecture and design tasks want to understand the business needs (requirement <--> design). They also have to make sure that the design supports the implementation of the solution (design <--> code). And design is eventually validated by some tests to validate its quality (design <--> tests).
In other words, design participates in lifecycle traceability. During the life of the application, the pragmatic architect evolves and refines the design to meet changing requirements and new technical challenges. And the pragmatic architect also ensures that the design information is available for efficient requirement management, quality management, and change management.
The pragmatic architect is also a pALMatic architect:
- A: Adapt to changing requirements and new technical challenges
- L: Link design to other lifecycle artifacts (requirement, test, code, changes)
- M: Manage design information to help other ALM stakeholders
Design management is an integral part of ALM to deliver software-intensive systems in a complex environment. The pragmatic architect manages design information and conducts design tasks for successful and collaborative ALM.