Design

Application Lifecycle Management Meets Model-Driven Development

The combination of ALM and MDD gives you the connected workflow you need to handle the development of even the most complex applications and systems.

John is Senior Director of Telelogic Strategic Solutions for Telelogic, an IBM Company. He can be reached at [email protected].
Scott is Director of Modeling Solutions for Telelogic, an IBM Company. He can be reached at [email protected].

Application lifecycle management (ALM) has evolved into an ecosystem of integrated processes and domain technologies for the system and software development lifecycle. ALM establishes a framework that you can use to:

Catalog and manage customer requirements.

Plan a portfolio of development projects to address these requirements.

Manage design, development, testing, and deployment.

Manage change throughout the entire process.

MDD, on the other hand, lets you more accurately design, simulate, and validate the complex behavior of distributed, mission-critical systems. The model-driven process uses visual aids to accurately describe and define system objectives and solutions. Scientific and technical industries, such as aerospace, defense, and telecommunications, depend on MDD to increase the quality and efficiency of complex software and systems through modeling.

The combination of ALM and MDD creates a rich environment of connected processes and interacting solutions that are proving invaluable for successful systems and software development projects. This is a welcome advance, given the state of today's complex development environments. A major challenge for many organizations is finding a way of integrating all aspects of the development lifecycle in an intuitive, yet formal manner to deliver long lasting, business critical products, systems, and applications.

Moreover, in combination ALM and MDD provide exponential gains in the optimization of development lifecycle processes. MDD is a natural fit within the ALM framework. The integration of ALM and MDD lets you optimize products and services and serves as a framework for the fast, accurate, and coordinated design and development of architectures, applications, and products. The combined framework connects to an enterprise architecture at the highest level, helping organizations adopt more iterative development approaches. It also provides integrated products and best practices, as well as change management, so organizations can respond with greater agility as the pace of business changes.

Application Lifecycle Management

The concept of application lifecycle management (ALM) was introduced to help companies identify tools and technology to ensure software project success. Figure 1 shows the key components of the ALM ecosystem that focus on visibility, quality, and alignment in the development lifecycle.

Essentially, a defect, bug, story, feature, idea, or suggestion is a requirement if it results in a code change. Within the ALM ecosystem, requirements are the foundation from which all things evolvethey serve as the thread that ties together all phases of the product lifecycle. To maximize return on investment in the ALM environment, it is essential to align the organization's development efforts with internal and external customer requirements.

Because requirements are the key driver to align the business with engineering within software development lifecycle, a requirement-driven approach to ALM is fundamental. Whether you are developing a product, system, or an application, a requirements-driven approach lets you ensure that the goals of the business and your customers' needs are prioritized into requirements that remain persistent and auditable throughout every phase of the development process.

[Click image to view at full size]

Figure 1: The fundamentals of the ALM ecosystem.

Another big piece of ALM is change management. Change requests, inevitable in any organization, can come from many sources and can take various forms; for example, bug fixes, customer proposals, enhancement requests, action items, platform changes, defects, and help-desk tickets. In addition, controlling changes to products, establishing relationships between them, managing different versions, assessing the impact of changes, and auditing and reporting the changes can overwhelm any organization. Producing or reproducing a product with controlled incremental changes, comparing different releases, and analyzing the differences are all activities essential to success.

Small teams may be able to manage changes in an ad-hoc manner. But, as the team grows and its development becomes more complex, lack of effective change and configuration management across all phases of the development lifecycle will cause changes to spiral out of control and jeopardize the success of the project.

A more robust approach to change management in ALM integrates software configuration management. A change-oriented approach for configuration management ensures the consistency of the development team's deliverables and workspaces through a workflow driven by logical changes (such as fixes and enhancements) that often span multiple files. It accelerates development by identifying and resolving integration problems. When integrated with change management, software configuration management lets change requests drive development tasks.

Configuration management, a discipline that is essential for success, supports parallel development, distributed development, factoring, and versioning. It encourages re-use through a single repository that contains a single version of the truth that reflects what is actually happening in the development process.

An integrated requirements-driven process for ALM makes is easy to prove requirements are traced to their implementation requests, which in turn are linked to development tasks and objects. This ensures that developers are focused on the right priorities, have the latest updated information, and also have access to the full context of their assignments. Analysts, business managers, and auditors have full real-time visibility into the implementation.

By connecting the development process, the right tool, and the people, a requirements-driven approach unifies traditionally separate processes of the development lifecycle into a single connected process that drives the entire development lifecycle. Unifying requirements across the entire ALM ecosystem enables information exchange and collaborative communications. It also accelerates response to changes in customer requirements, process, organization, and technology.

When it comes to implementation and delivery of requirements, you can take either a hand-coding or a model-based approach to ALM. However, if you decide to take the model-driven development path, you have access to all the benefits that MDD provides.

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task.
However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

This month's Dr. Dobb's Journal

This month,
Dr. Dobb's Journal is devoted to mobile programming. We introduce you to Apple's new Swift programming language, discuss the perils of being the third-most-popular mobile platform, revisit SQLite on Android
, and much more!