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.


September 02, 2008
URL:http://www.drdobbs.com/architecture-and-design/application-lifecycle-management-meets-m/210300020

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:

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.

Model-Driven Development

MDD lets you manage complexity by providing a way to make big picture decisions first, only adding details as needed. This solves the typical development conundrum of relying on implementation experts to create the architecture because they are the only ones who know how the pieces fit together. By letting architects focus on intended high-level functionality, MDD bridges the sizeable gap between the project requirements and the final implementation, and helps you realize a more manageable and practical application lifecycle platform (see Figure 2).

MDD provides a graphical language to define and develop systems and software. Based on industry-standards—for example, the Unified Modeling Language (UML 2.1) or Systems Modeling Language (SysML 1.0)—MDD lets requirements be assembled into a representative model that includes a complete use case and depiction of the application's functionality. Serving as a computer-based prototype, this model can then be "executed" in a manner similar to the way source code is compiled and run in order to simulate the system and validate and verify its completeness and intended behavior.

The results from the simulation are analyzed and used as the basis for developing more detailed specifications and requirements, iteratively extending the requirements into a complete application design. During each stage, the updated systems model can be executed to provide additional validation, verification, and detailed development. This iterative approach lets the application be constructed from high-level to detailed deployment, with continual validation of proper functionality and behavior at each step.

[Click image to view at full size]

Figure 2: Model-driven development workflow.

Once the application's systems architecture is fully specified, the model becomes the basis for all future activities, including application software development, testing, and implementation/deployment. The model can be used to specify and even generate application software, unit and integration tests, and published documentation. Because MDD is fully compatible with software development environments like Eclipse and Visual Studio, developers can debug and edit the application at any level—model or code—with their changes automatically synchronized throughout. For example, edits to code will automatically update the model and then be used to determine their impact on the entire architecture.

MDD provides a number of additional benefits. It lets you visualize system requirements and trace these requirements to design, code and test cases, formally extending requirements engineering through the entire development lifecycle. Because the requirements form portions of the model, they become an integral part of the design itself. Design validation allows you to catch defects early in the development process, as well as highlight flaws of logic in the project requirements. Common design models eliminate the hand-off gaps between systems, software, and test teams. And, with the option of automated code generation from the design model, you improve developer productivity and quality while providing more time for design optimization and innovation.

With MDD, traceability is established throughout development. Each feature can be traced back through the model to its originating requirement, while extraneous features (those "thrown in" by well-intentioned developers) are quickly exposed, eliminating the expense and bloat of unintended feature-creep. You can also simulate and validate system behavior, which adds a whole new dimension to constructing complex applications like those based on service-oriented architectures (SOA). MDD improves development productivity, product quality, and the organization's overall competitiveness while reducing development cost and time to market.

Putting It All Together

As Figure 3 shows, the development lifecycle is best met by the combined benefits of ALM and MDD. ALM provides the discipline needed for governing and managing the project, while MDD provides the development muscle to handle even the most complex jobs.

The coordinated environment provides a consistent vehicle to handle change requests, bug fixes, auditing, and compliance mandates, all based on a single set of requirements. Project planners, requirements engineers, architects and developers all contribute to the common workflow, where even last-minute changes can be quickly inserted and evaluated for impact and relevance.

The combined ALM/MDD approach is very different from the usual methods of manual coding based on written specifications. It removes the collaboration gap between architects and developers by tying the high-level design directly to the final source code. Traceability is established from requirements to architecture to final code, while changes at any level can be evaluated at each level for impact and effectiveness. Developers can apply their expertise to ensure that optimal applications are designed, while architects and planners can ensure that the original intent is not "optimized out" in the process.

Because these applications have been developed to a single set of coordinated requirements and subjected to rigorous change management procedures, they can easily be migrated to future applications throughout the enterprise. In addition, existing legacy applications can be reverse engineered and inspected for inclusion in the enterprise framework. Since they can be more easily adapted and incorporated into new applications, the organization's intellectual property is protected and applied in new ways as it moves into a services-based IT infrastructure.

[Click image to view at full size]

Figure 3: Connecting ALM and MDD.

Also, the combined framework includes configuration management capabilities that allow you to keep previous design configurations in an easily accessible repository—a handy feature if you need to roll back to an earlier configuration.

Accelerating ALM Tool Adoption

To reduce the risks associated with ALM and MDD tool adoption within your development environment, you must closely link people, best practices, processes, and tools. A recent report indicates that improving technology and process together is 10 times more effective at increasing productivity than improving technology alone. The reason is very clear: Process improvement (CMMI, for instance) enhances effectiveness, while development tools and best practices increase efficiency. Together, they can improve productivity and quality.

Reusing proven best practices is critical to ensuring that your teams choose to repeat a "best practice," not just any practice. Therefore, you should choose libraries that are built on years of experience with real projects. Also, it should be easy to tailor these libraries of best practices to meet specific organizational and project needs. For example, customers using Telelogic products are able to easily tailor their libraries of best practices content for ALM and MDD using the Eclipse Process Framework (EPF) composer from the Eclipse foundation.

With integrated process guidance you will promote best practices, processes, and tools across your organization and accelerate adoption of ALM and MDD. The result is systems and software that better meet your customers' needs.

Conclusion

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. Particularly helpful is the capability to deal with changes in requirements, no matter when and where they occur during the development process. You can quickly analyze the impact of these changes to control costs and assure correctness. You can also balance business and technical requirements by performing model-based performance/security trade-off analysis before deployment—after deployment, the cost of miscalculations escalates dramatically.

Since you can simulate designs at any time during the process, there is no need to wait until the final stages of development to determine how changes will affect the application. By providing a common baseline, this integrated environment lets you propagate changes through multiple releases. Roundtrip traceability provides both bottom-up and top-down reporting to ensure compliance. Because the entire team is working from a known set of requirements, the integration of ALM and MDD promotes collaboration, even among teams that are widely separated functionally and geographically.

Independently, application lifecycle management and model-driven development have proven their value in a wide range of industries. No matter what industry you're working in, by combining these two systems and software development best practices, you significantly increase your ability to overcome the many challenges associated with the system and software development lifecycle.

Terms of Service | Privacy Statement | Copyright © 2024 UBM Tech, All rights reserved.