Model-Driven SOA Development Supports Business-IT Alignment
Viewed from the enterprise perspective, Service-Oriented Architecture (SOA) is a framework for describing and managing business and IT assets, including services. At the implementation end of the SOA continuum, the architecture groups software-based services that can be loosely coupled into one or more functioning applications. Often, however, organizations find it difficult to link the enterprise concept to workable solutions. For many, the purpose of SOA is to implement IT solutions that achieve the organization’s business goals, while providing the flexibility to quickly adapt to changing objectives and strategies.
Progressive organizations want to cultivate an agile environment in which business and IT are able to collaborate and communicate efficiently with each other and among themselves. IT solutions must be evaluated to understand how they contribute to strategic business objectives. To achieve this, IT must reach beyond business models and technologies and see how their efforts help deliver cost-effective solutions that satisfy numerous stakeholders. Due to differences in their modes of operation, business and IT have traditionally experienced difficulty in communicating requirements to one another in a way that both understand.
Technology and best practices have been evolving to improve business and IT collaboration. In particular, a SOA approach can successfully unite business and IT in an agile environment. By empowering historically isolated teams to collaborate in the description and analysis of business strategies and technologies, as well as in the design and implementation of IT systems and solutions, SOA promotes organizational goals and objectives.
You will learn the advantages of introducing an enterprise-wide, model-based approach to implementing SOA, as well as the modeling technologies and best practices now available to support business-IT alignment for the developer.
An Enterprise Approach
An enterprise is composed of a wide variety of employees and suppliers, each of whom has unique skills and expertise. This diversity is essential to achieving the organization’s goals. After all, you wouldn’t want your CFO writing Java-based services to implement your new accounting system. Diversity also means that many of these folks don’t speak the same language. To leverage diversity, organizations require an approach that lets each person work using his particular languages, notations, and frameworks, while ensuring the transferability of the ‘intellectual assets’ or results of their efforts in a manner that both business and IT can understand and use.
An architectural approach to SOA leverages high-level business requirements that help to ensure that each solution meets the organization’s business needs. To bridge the often sizable gap between the needs of the business and the realities of design (and their respective languages), SOA enables an abstracted approach that provides clear definitions at every stage of specification and development. This, in turn, facilitates agility.
When applied at an enterprise scale, this level of agility gives the organization an unbeatable edge for lowering development costs while increasing responsiveness to business challenges. It also introduces a new level of complexity, because there has to be a way to understand and manage the vast spider web of SOA-compliant services and applications this approach brings with it. How does IT effectively determine when a new service is needed? How do they know when it is more cost-effective and efficient to alter an existing service, develop a new one, or acquire a third-party service via the network?
The adoption of a structured modeling approach to SOA addresses these challenges. This structured approach explicitly relates business objectives to applied services, facilitating the construction and maintenance of comprehensive and interconnected applications that meet the business and design goals, while acting as an efficient business language for communication, as seen in the following figure.
The driving force behind the SOA approach is enterprise architecture (EA). With the increasing complexity of a global economy, today’s organizations strive to understand their current business structure and operations and how technology can best support their evolution. Modeling the organization’s enterprise architecture provides this perspective, as well as the basis for an action plan through the deployed SOA implementations.
Serving as both blueprint and road map, enterprise architecture ties IT, data, and business processes into business goals and strategies and presents them in a unified enterprise view. EA depicts the relationships among these practices so that organizations can use facts to analyze how well their information technology supports their business operations now and in the future. To be effective, this blueprint must provide enough information to promote informed decision-making. When these actions involve deployable information systems (for internal and/or customer-facing applications), groups embracing SOA can deploy new or updated applications based on orchestrated software components (services) that directly correspond to the requirements.
The enterprise architecture model is critical to SOA implementations that involve the loose coupling of software components (services) in multi-vendor, multi-platform environments. It provides the business view of the “interoperability” of services and is one of the key requirements for success. Enterprise architecture delivers the information that helps organizations leverage SOA’s true value proposition by identifying the right business services (in other words, virtual elements representing business activity or function) for the task at hand. Building these business services as deployable applications consisting of technical services (free-standing software components that can be connected into working applications) is accomplished by hand-off to the IT teams, as you will see below.
With an enterprise blueprint in hand, organizations can approach SOA as a unifying concept, instead of just another way to move data around. Enterprise architecture delivers the information needed to perform new tasks in new ways, while avoiding the trap of formalizing old ways of doing things using new technology. This, in turn, ensures that SOA delivers its benefits of timeliness and agility.
The enterprise approach cultivates an agile environment in which business and IT efficiently collaborate and communicate with each other and between themselves. IT can look beyond business models and technologies to see how their efforts help deliver cost-effective solutions that satisfy numerous stakeholders. Likewise, business teams can ensure that their planning is based on achievable goals and cost-effective approaches. Deployable solutions must be evaluated to see how they contribute to strategic business objectives.
Modeling the SOA provides business and IT with an all-inclusive design model and common workflow for communicating requirements in a way that both groups can understand. Members of the IT and business teams describe, analyze, and share their strategies, focusing on their specialized domains. They can see how their contributions directly impact the design’s “big picture.” The net effect is that this approach enhances communication and collaboration while providing the most efficient and effective ways to implement solutions that support organizational goals and objectives.
Earlier, you learned about the concept of business services and their underlying technical services. As the hand-off from business planners to IT occurs, it is important that the link between the descriptive business services and the technology-driven technical services remains intact. IT should build a working application that not only fulfills the needs of the business model, but does so in a practical manner. Likewise, if IT finds that portions of the business approach cannot be technically (or financially) achieved, it should communicate this back to the business along with alternative solutions.
Visualize the Application
A model-based SOA methodology employs industry-standard methods and languages to visually specify and manage the composite applications or the technical services that comprise the SOA approach. These languages also help IT map technical services back to the orchestrated business services defined by the business. Modeling allows application architects and developers to work at a higher level of abstraction while applying quality assurance techniques through graphical analysis and automated checking. The higher level of abstraction hides irrelevant details and allows users to easily view the intended functionality; they can focus on the solution without concern for implementation details. Teams can even simulate the design, including functionality and behavior, analyze options, and verify compliance with requirements.
The model also assures quality and lowers costs through continuous self-analysis. Error checking and consistency testing are performed automatically at each stage of development. Errors are found as they are introduced, rather than downstream when they can disrupt application execution and are expensive to find and fix.
The application model maximizes the efficiency of distributed, network-based applications by presenting a unified view of the components, their interfaces, and the full set of interactions. Developers can take the business services model and add detail to transform it into an implementation model consisting of networked technical services. Existing software can be incorporated for reuse, by either recapturing its architecture through reverse-engineering or creating SOA “wrappers” that allow the software to act as a technical service complete with a model-generated WSDL interface.
Perhaps most importantly, the model-based approach enables developers to simulate and test proposed changes to previously deployed applications before launching updates, saving users from costly downtime and exposure to untested application updates. Simulation empowers decision-making at a design level, even setting the basis for difficult make/buy decisions for component services. In some cases, the design model will have the ability to call and invoke actual Web services as part of the larger simulation, allowing the development team to mock-up a complete application without the need for a formal application engine.
As the composite applications are finalized, the development teams can check the model for application completeness. The results of their analysis can form the basis for the specification and design of any missing services. Teams can use the model to decide whether the missing services should be acquired from an outside source or built in-house through additional detailing of the model, which would then serve as the software design model for the new service. This streamlines the development lifecycle by improving information available for smarter decision-making.
Improving Organizational Agility
Through a combination of technologies and best practices, SOA unifies agile business practices with progressive, networked multi-processing techniques. Harnessing these capabilities for the benefit of the enterprise requires new levels of analysis and organization to mitigate the additional complexity and potential confusion of managing the new services.
A model-based approach to SOA provides an enterprise-wide model that can be viewed and accessed by all levels of the organization. Business planners and IT developers then can work together to ensure that deployed application software directly relates to the organization’s business plans and goals. The application of structured modeling to SOA also helps improve agility, giving an organization an edge by lowering development costs and increasing responsiveness to business challenges.
About the Author
Scott McKorkle has worked in the applied real-time and information computing industry for more than 25 years. His current focus is on model-driven development of enterprise systems and software at Telelogic, An IBM Company. He has a bachelor’s degree in Computer Science from the University of Illinois.