Recently I’ve been thinking about service-oriented architecture. SOA has been around long enough that it may sound like yesterday’s news. After a decade of formal SOA standards and deployments, organizations have become familiar with what it takes to deploy a SOA, along with its benefits.
Certainly, the financial services industry seems happy with the results. A recent Forrester survey found, for example, that of 80 IT executives from financial services firms around the world, close to three-quarters use SOA and business services in a significant number of business applications in a production environment, and many have plans to extend the SOA footprint in their financial services firm. Nearly 20 percent are planning or deploying SOA-based applications for quality assurance or pilot programs.
But familiarity shouldn't breed too much comfort. There’s always more to learn about any discipline, particularly one such as SOA that is closely entwined with enterprise architecture practices, given how critical such practices are to the business.
One effort that’s worth your getting more education about, for example, is the Open Group's Service-Oriented Architecture Ontology Technical Standard. Here, we’ll take look at how such an effort can make sense in your business, especially if you revise your SOA more than once per year -- making changes or updating the text, for instance.
The SOA Ontology will help you create an enterprisewide set of architecture documents if you don’t have one already, and further refine it if you already do.
SOA Ontology Is a Step to Clarity
As part of the Open Group’s vision of Boundaryless Information Flow, which aims to align IT with the business it serves, the SOA Ontology goals are to:
· Enable clear communication between business and technical stakeholders
· Define metadata for architectural artifacts
· Create a model-driven SOA implementation
In a sense, the ontology is a model of models for developers of SOA-based software systems, expressed in the Web Ontology Language (OWL). It uses natural language to describe concepts and relationships, along with graphic illustrations. Specifically, it uses both XML — with a well-defined schema — and the Unified Modeling Language (UML) to model the system. UML is itself a useful ontology that is used to define whole architectures, models, and even other ontologies.
The Open Group’s SOA Ontology allows you to simultaneously define the interactions between all of the systems and services in your organization (the “big picture”), as well as the design of the individual systems and services. Because they’re often only part of overall enterprise architecture, the ability to clearly communicate the details of your SOA-based systems, their constituent components, their interactions with one another, and their usage within your overall architecture can directly contribute to the success or failure of your enterprise architecture and its implementation. The ontology allows you to clearly delineate the boundaries between SOA and the rest of your organization’s architecture.
The result of having all of the elements, relationships, sequences, policies and so on defined in OWL is a series of artifacts that can be used both visually, to “see” and discuss the SOA, as well as programmatically, to model and implement the SOA design. It’s not a stretch to think that once you accurately describe and visualize your architectural models with the SOA Ontology, you’ll be able to identify weaknesses to improve, missing pieces to fill in, and strengths to use in future projects.
Inside the SOA Ontology
As enterprise architects, you’ll want the technical details about the ontology, so here is a summary of the concepts defined by The Open Group:
The Ontology defines concepts such as system and element (or component), and relationships such as uses and represents (or “is a”), to associate them. Elements in the SOA domain include actors, tasks, services, or other concrete items such as a service bus for communication between services. Relationships describe how the system’s elements interact with one other. A task or service in the ontology associates the actors and elements within the system to describe how the system is used or interfaced with in the overall architecture.
Properties, such as does or doneBy clearly demarcate the responsibilities of the actors in the system. Diving deeper into the ontology, you define contracts, interfaces and information types to clearly state the capabilities of your system’s elements. For workflow-related systems, sequences of tasks can be defined as either a composition (where elements are built from other elements), or orchestration of elements (where elements interact more loosely). In another form of association and interaction, events define and allow for asynchronous communication within the system as well. For security, a policy is used to define rules that govern all of these interactions between elements.
Each element in the system may be a system in itself, which can be used in its more abstract form to describe composite services, or each element can be further broken down and explored using the same ontology.
This creates a system of systems where different stakeholders (business analysts, architects and developers) can dive as deep into the model as required. For example, business analysts can peruse the higher-level system definitions to ensure the entire problem domain has been addressed. Architects can take a more detailed look to determine that business needs have been met in terms of features and Service Level Agreements. Further, developers can dive deeper, examining each service’s constituent components as a road map to implementation. Finally, quality assurance can use it to ensure complete test coverage, end to end.
Visual modeling tools such as Embarcadero's Studio Architect, Troux Architect from Troux Technologies and Visual Modeling Platform from Sparx Systems all help drive architecture from idea to reality. The resulting artifacts take shape as UML diagrams, entity relationship models (ERM), and other object models. Some tools, such as IBM's Rational Rose, can even generate code for multiple programming languages.
If you want to learn more, take a look at the following resources:
· The Open Group SOA definition
· The Open Group’s Service-Oriented Architecture Ontology
· Web Ontology Language (OWL):