Task: Identify Candidate Services from Domain Models
Identify candidate services that are needed to manage key information elements from the domain.
Disciplines: Architecture
Purpose

Corporate information is a critically valuable resource.  With this task, you identify services that can be used to provide secure, uniform access to these resources.

Relationships
RolesPrimary Performer: Additional Performers:
InputsMandatory:
    Optional:
      Outputs
        Main Description

        This task leverages the best practices described in Pattern 06: Derive Atomic Services from the Domain Model.  It uses domain models (also known as information models, or conceptual data models) as input and identifies a set of candidate services that are included in the project candidate service portfolio. These candidate services might yet require additional refinement; however, the steps included here provide an effective manner in which to produce an initial set of candidates.

        In addition to mapping candidate services on a one-to-one basis to the domain types, some effort needs to be made to provide services for accessing larger collections of related domain elements.  Some data analysis is warranted to determine the affinities between data elements, so that these larger groups of closely-related domain elements can be identified.

        Example: Identifying Candidate Services from Domain Models give more details regarding the steps in this task.

        Tool Mentor: Build a SoaML Service Model Using the SoaML Template is the entry point into a family of tool mentors that collectively describe how to build a SoaML-based service model using IBM® Rational® Software Architect.  This tool mentor provides an overview description of a process for using the tool to create the model.  It includes callouts to several other tool mentors that accelerate Service Identification efforts.

        Steps
        Analyze the domain model and update it if necessary

        You will usually use a conceptual (domain) data model for this step.  Focus on ensuring that appropriate relationships are reflected in the model.  In particular, aggregational and compositional relationships are important, because their presence guides the determination of groups of data elements that have a strong affinity with each other.

        If this examination identifies the need for additional aggregations and compositions, ensure that they are added to the model.

        If you (as the SOA Architect) need clarification on aspects of the data model, enlist the support of the Data Architect.  If any changes need to be made to the model, make the Data Architect aware of these.  If you are dealing with an Enterprise resource, it is likely that role will be responsible for making the changes.

        Identify domain elements with strong affinities
        It is likely that groups of domain elements will be identified that are frequently, if not always, accessed together.  These are our affinity groups -- also known as domain type encapsulation clusters.
        Map an information management service to each individual domain type

        Provide the create, read, update, and delete (CRUD) operations for each domain type in a type-specific candidate service.

        Map an information management service to each affinity group
        These are used to provide access to portions of the domain model that commonly are manipulated and accessed together.
        Update candidate service portfolio and service hierarchy
        Add the new candidate services to the candidate service portfolio.   Position them within the candidate service hierarchy.
        Illustrations
        Key Considerations

        Identifying candidate services from domain elements is one of several schemes that complement each other during candidate services identification.  Omitting any of the methods increases the risk that some candidate services will not be discovered.

        Significant organizations generally need to provide some mechanism for accessing their information resources in a uniform manner.  Services are not the only approach for doing so, but they do provide an easily-distributable solution for this problem.

        More Information