SOA Adoption Planning
It is during this initial stage that foundational planning decisions 
are made. These decisions will shape the entire project, which is why 
this is considered a critical stage that may require separately 
allocated funding and time in order to carry out significant studies 
required to assess and determine a range of factors, including:
- scope of planned service inventory and the ultimate target state
 
- milestones representing intermediate target states
 
- timeline for the completion of milestones and the overall adoption effort
 
- available funding and suitable funding model
 
- governance system
 
- management system
 
- methodology
 
- risk assessment
 
Additionally, prerequisite requirements need to be defined in order 
to establish criteria used to determine the overall viability of the SOA
 adoption. The basis of these requirements typically originate with the 
four pillars of service-orientation described in the SOA Planning 
Section of this Website. 
 Service Inventory Analysis
A service inventory represents a collection of independently 
standardized, owned, and governed services. The scope of a service 
inventory is expected to be meaningfully "cross-silo," which generally 
implies that it encompasses multiple business processes or operational 
areas within an organization.
Service-Oriented Analysis (Service Modeling)
Service-Oriented Analysis represents one of the early stages in an 
SOA initiative and the first phase in the service delivery cycle. It is a
 process that begins with preparatory information gathering steps that 
are completed in support of a service modeling a sub-process that 
results in the creation of conceptual service candidates, service 
capability candidates, and service composition candidates 
The Service-Oriented Analysis process is commonly carried out 
iteratively, once for each business process. Typically, the delivery of a
 service inventory determines a scope that represents a meaningful 
domain of the enterprise, or the enterprise as a whole. All iterations 
of a Service-Oriented Analysis then pertain to that scope, with each 
iteration contributing to the service inventory blueprint. 
A key success factor of the Service-Oriented Analysis process is the
 hands-on collaboration of both Business Analysts and Technology 
Architects. The former group is especially involved in the definition of
 service candidates within a business-centric functional context because
 they understand the business processes used as input for the analysis 
and because service-orientation aims to align business and IT more 
closely.
Service-Oriented Design (Service Contract)
The Service-Oriented Design phase represents a service delivery 
lifecycle stage dedicated to producing service contracts in support of 
the well-established "contract-first" approach to software development. The typical starting point for the Service-Oriented Design process is
 a service candidate that was produced as a result of completing all 
required iterations of the Service-Oriented Analysis process (Figure).
 Service-Oriented Design subjects this service candidate to additional 
considerations that shape it into a technical service contract in 
alignment with other service contracts being produced for the same 
service inventory. Different approaches are used during this stage for 
the design of REST services, as these types of services share a common 
universal contract.
As a precursor to the Service Logic Design stage, Service-Oriented 
Design is comprised of a process that steps Service Architects through a
 series of considerations to ensure that the service contract being 
produced fulfills business requirements while representing a normalized 
functional context that further adheres to service-orientation 
principles. Part of this process further includes the authoring of the SLA, which
 may be especially of significance for cloud-based services being 
offered to a broader consumer base via the SaaS cloud delivery model. 
Service Logic Design
 
The Service-Oriented Design phase represents a service delivery 
lifecycle stage dedicated to producing service contracts in support of 
the well-established "contract-first" approach to software development. 
The typical starting point for the Service-Oriented Design process is
 a service candidate that was produced as a result of completing all 
required iterations of the Service-Oriented Analysis process (Figure 1).
 Service-Oriented Design subjects this service candidate to additional 
considerations that shape it into a technical service contract in 
alignment with other service contracts being produced for the same 
service inventory. Different approaches are used during this stage for 
the design of REST services, as these types of services share a common 
universal contract.
As a precursor to the Service Logic Design stage, Service-Oriented 
Design is comprised of a process that steps Service Architects through a
 series of considerations to ensure that the service contract being 
produced fulfills business requirements while representing a normalized 
functional context that further adheres to service-orientation 
principles.
Part of this process further includes the authoring of the SLA, which
 may be especially of significance for cloud-based services being 
offered to a broader consumer base via the SaaS cloud delivery model.
Service Development 
After all design specifications have been completed, the actual 
programming of the service can begin. Because the service architecture 
will already have been well-defined as a result of the previous stages 
and the involvement of custom design standards, service developers will 
generally have clear direction as to how to build the various parts of 
the service architecture. 
For organizations employing the PaaS cloud delivery model, the 
service development platform itself may be offered by a ready-made 
environment hosted by virtual servers and geared toward the development 
and maintenance of cloud-based services and solutions.
Service Testing
Services need to undergo the same types of testing and quality 
assurance cycles as traditional custom-developed applications. However, 
in addition, there are new requirements that introduce the need for 
additional testing methods and effort.
For example, to support the 
realization of the Service Composability principle, newly delivered 
services need to be tested individually and as part of service 
compositions. Agnostic services that provide reusable logic especially 
require rigorous testing to ensure that they are ready for repeated 
usage (both concurrently as part of the same service compositions and by
 different service compositions). 
Below are examples of common Service Testing considerations: 
- What types of service consumers could potentially access a service?
 
- Will the service need to be deployed in a cloud environment?
 
- What types of exception conditions and security threats could a service be potentially subjected to?
 
- Are there any security considerations specific to public clouds that need to be taken into account?
 
- How well do service contract documents communicate the functional scope and capabilities of a service?
 
- Are there SLA guarantees that need to be tested and verified?
 
- How easily can the service be composed and recomposed?
 
- Can the service be moved between on-premise and cloud environments?
 
- How easily can the service be discovered?
 
- Is compliance with any industry standards or profiles (such as WS-I profiles) required?
 
- If cloud deployed, are there proprietary characteristics being 
imposed by the cloud provider that are not compatible with on-premise 
service characteristics?
 
- How effective are the validation rules within the service contract and within the service logic?
 
- Have all possible service activities and service compositions been mapped out?
 
- For service compositions that span on-premise and cloud environments, is the performance and behavior consistent and reliable?
 
Because services are positioned as IT assets with runtime usage 
requirements comparable to commercial software products, similar quality
 assurance processes are generally required.
 
Service Deployment and Maintenance
Service deployment represents the actual implementation of a service 
into the production environment. This stage can involve numerous 
inter-dependent parts of the underlying service architecture and 
supporting infrastructure, such as:
- distributed components
 
- Web service contract documents
 
- middleware (such as ESB and orchestration platforms)
 
- cloud service implementation considerations
 
- cloud-based IT resources encompassed by an on-premise or cloud-based service
 
- custom service agents and intermediaries 
 
- system agents and processors 
 
- cloud-based service agents, such as automated scaling listeners and pay-for-use monitors 
 
- on-demand and dynamic scaling and billing configurations
 
- proprietary runtime platform extensions
 
- administration and monitoring products
 
Service maintenance refers to upgrades or changes that need to be 
made to the deployment environment, either as part of the initial 
implementation or subsequently. It does not pertain to changes that need
 to be made to the service contract or the service logic, nor does it 
relate to any changes that need to be made as part of the environment 
that would constitute a new version of the service.
Service Usage and Monitoring
The on-going monitoring of the services generates metrics that are necessary to measure service usage 
for maintenance (such as scalability, reliability, performance etc.), 
as well as for business assessment reasons (such as when calculating 
cost of ownership and ROI).
Special considerations regarding this stage apply to cloud-based services, such as:
- the cloud service may be hosted by virtualized IT resources that 
are further hosted by physical IT resources shared by multiple cloud 
consumer organizations
 
- the cloud service usage may be monitored not only for performance, 
but also for billing purposes when its implementation is based on a 
per-usage fee license
 
- the elasticity of the cloud service may be configured to allow for 
limited or unlimited scalability, thereby increasing the range of 
behavior (and changing its usage thresholds) when compared to an 
on-premise implementation
 
Service monitoring is required for various service governance considerations.
Service Discovery
The primary goal of Service Discovery process is 
to identify one or more existing agnostic services, such as utility or 
entity services, within a given service inventory that can fulfill 
generic requirements for whatever business process the project team is 
tasked with automating.
The primary mechanism involved in performing Service Discovery is a 
service registry, which contains relevant metadata about available and 
upcoming services as well as pointers to the corresponding service 
contract documents that can include SLAs. The communications quality of 
the metadata and service contract documents play a significant role in 
how successful this process can be carried out. This is why one of the 
eight service-orientation principles, the Service Discoverability principle, is dedicated solely to ensuring that information published about services is highly interpretable and discoverable.
Service Lifecycle,Versioning and Retirement 
After a service has been implemented and used in production 
environments, the need may arise to make changes to the existing service
 logic or to increase the functional scope of the service. In cases like
 this, a new version of the service logic and/or the service contract 
will likely need to be introduced. To ensure that the versioning of a 
service can be carried out with minimal impact and disruption to service
 consumers that have already formed dependencies on the service, a 
formal service versioning process needs to be in place. 
There are different versioning strategies, each of which introduces 
its own set of rules and priorities when it comes to managing the 
backwards and forwards compatibilities of services. 
The service versioning stage is associated with SOA governance 
because it can be a recurring and on-going part of the overall service 
life-cycle. Governance approaches that dictate how service versioning is 
to be carried out will have a significant influence on how a given 
service will evolve over time. Because this stage also encompasses the 
termination or retirement of a service, these influences can further 
factor into the service's overall lifespan.