Addressing Problems with Model Driven Architecture
The software development processes have improved dramatically over the last ten years as a result of the release of the Unified Modeling Language (UML). UML is well established as the means to construct, communicate and manipulate the analysis of applications. In conventional practice, a UML model would be used as a guide for the hand-coding of an application by developers. However, organizations still face significant software development challenges when they implement a UML domain model over a software infrastructure:
- Middleware platforms proliferation: The middleware platforms that are most visible today are Enterprise JavaBeans, .NET/COM+, message-oriented middleware and XML/SOAP. Over the past decade or so, the middleware landscape has shifted continuously and shows no signs of ending. It's next to impossible for enterprises to standardize on a single middleware platform. Enterprises have applications on different platforms that simply must be integrated even though this process is time-consuming and expensive. Furthermore, middleware platforms continue to evolve and, in spite of the advantages (sometimes real, sometimes imagined) migration is expensive and, almost all the time, disruptive. Portability and interoperability between middleware platforms is one of the major challenges facing software development in large organizations.
- Business domain evolution: The business objects representing the business domain are in perpetual evolution because business requirements change over time. New business opportunities appear; mergers or acquisitions create and evolve business rules. Letting business requirements and technology evolve at their own pace is another challenge facing application development.
- UML model complexity: This complexity is the result of evolving from a UML analysis model to a detailed UML design model. The analysis model contains only business objects while the detailed design model contains a large set of UML element related to architecture issues. These architectural issues, such as persistence, transactions, and security, are not clearly encapsulated in UML models, making it difficult to abstract architectural concerns and reuse them for different platforms.
- UML model maintenance: When software architecture is modeled in UML, its evolution and maintenance require tedious, repetitive, manual intervention. The architect must ensure that the UML model reflects changes for each instance in which an architecture pattern or decision is used. There is no systematic approach to ensure that the code associated with the architecture implementation is synchronized with the UML model.