What is SOA?
Service Oriented Architecture (SOA) is a way of describing and understanding organizations, communities and systems in order to maximize agility, scale and interoperability. The SOA approach is simple – people, organizations and systems provide services to each other. These services allow us to get something done without doing it ourselves or even without knowing how to do it, helping us be more efficient and agile. Services also enable us to offer our capabilities to others in exchange for some value, thus establishing a community, process or marketplace. The SOA paradigm works equally well for integrating existing capabilities as for creating and integrating new capabilities.
A service is a value delivered to another through a well-defined interface and available to a community (which may be the general public). A service results in work provided to one by another. Thus, SOA is an architectural paradigm for defining how people, organizations and systems provide and use services to achieve results.
Examples of SOA
SOA has been associated with a variety of approaches and technologies. SOA is first and foremost an approach to systems architecture, where architecture is a way to understand and specify how things can best work together to meet a set of goals and objectives. In this context, systems include organizations, communities and processes as well as information technology systems. The architectures described with SOA may be business architectures, mission architectures, community architectures or information technology systems architectures – all can be equally service oriented. The SOA approach to architecture helps with separating the concerns of what needs to get done from how it gets done, where it gets done or who or what does it. Some other views of SOA and “Web Services” are very technology focused and deal with the “bits and bytes” of distributed computing.
Benefits of SOA
Enterprise Information Systems tend to be a group of monolithic applications, organized in silos that depend on techonology and/or business units. The increasing complexity and demand on Information Systems has resulted in information systems which are hard to maintain, hard to make evolve, and not well aligned to business needs.
SOA architecture helps design systems that are no longer monolithic and application-oriented. This provides agile information systems that are aligned to the business, thereby avoiding redundancy and facilitating communications and sharing within the IS.
SOA does not provide the whole solution by itself. However, associated with Enterprise Architecture, SOA helps encompass IT and the business in a global vision.
Modeliosoft's Contribution to SOA
Modeliosoft is one of the many contributors to the OMG's SoaML standard.
SoaML is a standard modeling language dedicated to designing and modeling SOA solutions using the Unified Modeling Language® (UML®). SoaML is mainly defined as a UML profile that uses the built-in extension mechanisms of UML to define SOA concepts in terms of existing UML concepts. SoaML can be used with current “off the shelf” UML tools although some tools may offer enhanced modeling capabilities.
SoaML integrates modeling capabilities to support the use of SOA at different levels and with different methodologies, in particular support for the “contract-based” and “interface-based” approaches which, in general, follow the “ServiceContract” and “ServiceInterface” elements of the SoaML profile respectively.
Modelio's Support for SOA Modeling
Modelio provides a module dedicated to SOA modeling named Modelio TOGAF Architect. This module, which is integrated in the Modelio BA - Enterprise Architect product, is based on the usual notions and approaches to model SOA architectures. It is purposely simple, in order to be easily usable by users who are not necessarily well-versed in the arcanes of UML. Its main concepts are:
- Service components: These represent the components of a system that are inter-connectable through services. Service components are usually very large (applications or entire systems that can be implemented by hundreds of classes). The usual practice is to layer the component-based architecture into different kinds of service components. Entity components are components dedicated to handling system data, process components are responsible for the implementation of a business process, and presentation components are in charge of managing GUI access. This classification also introduces function components (half way between between process and entity components) and utility components. Several methodologies explain how to identify these components, and provide layering rules between these kinds of components.
- Services: These are broken down into provided and required services. They are represented in a simplified way by ports on components typed by an interface (the definition of the service).
- Component connectors: These connectors wire components together, by assembling required and provided services in order to form a complete and consistent system.
- Messages: These represent the information exchanged between service components through services. They are typically implemented as XML documents.
Modelio provides model transformations and generators to easily and quickly transform an SOA architecture model into a software model and then into an implementation, for example by generating XML schemas, WSDL web services, BPEL orchestration, SQL database schemas, BPMN mapping or using Java code generator.
The SoaML profile is a much more complex model that supports a wide variety of methodologies and requires a thorough understanding of UML. Modeliosoft already has an implementation of an SoaML profile which is published as an open source module (available in the Modelio Store). The use of this SoaML module and of the TOGAF Architect module will be mutually exclusive, since each implements a different approach to SOA modeling.