Service Reusability Principle
Encyclopedia
Service Reusability Principle is a design principle that is applied within the service-orientation
design paradigm
, in order to create services that have the potential to be reused across the enterprise. These reusable services are designed in a manner so that their solution logic is independent of any particular business process or technology.
Service reusability is usually measured in terms of how much extra functionality does a service contain which could be reused in future and how much of the service’s functionality goes beyond the current requirements. This encourages services that contain extra capabilities which are built around possible future service usage scenarios. However, little is done in designing the service logic in a manner that it could be reused to automate multiple business processes. So, there is more focus on equipping services with extra functionality than actually concentrating on making the core service logic reusable. This leads to gold-plated
services whose development require increased time and efforts. This additional functionality may not even fall within the original functional context of the service and might not even be used at all, as it was built without establishing its needs. Most important of all, the resulting SOA would not be able to provide true service reusability as promised.
Another misconception about service reuse is that the reuse relates to the frequency of its usage. Contrary to this, the actual reuse relates to when the service is used to automate multiple business processes. This is the true service reuse as such a service eliminates the need for creating altogether a new service and becomes a part of multiple business processes without being part of any particular business process.
The Service Reusability principle addresses these misconceptions by providing a set of guidelines that help to design services containing logic which is not linked to any particular business process and hence could be reused across the enterprise for automating multiple business processes. This further helps in achieving increased ROI.
The compound application of Service Reusability, Service Abstraction
and Service Loose Coupling
principles help developing composable services.
This design principle advocates developing services based on the commercial product design principles that dictate developing a software product with the right type and correct quantity of logic. So the focus here is on the quality of the logic packed within the software program. By concentrating on quality, the reuse potential of the software program is automatically increased. In order to concentrate on the quality of the logic, the Service Reusability requires exploring the business domain as well as the current technologies in use. Some of the considerations that help in designing services with reusable logic include:
By conducting this analysis, we can arrive at the right type of reusable logic that needs to be included within the service. Also because the other services are analyzed as well, the chances of logic duplication are minimized. It is beneficial for the application of this principle to have a service inventory blueprint (a set of candidate services) as then the identification of agnostic logic becomes rather easier. This requires performing via the service-oriented analysis and design process. The application of this principle before the finalization of service capabilities provides an opportunity for fine tuning and refactoring the logic in support of making it reusable. This also gives a chance to equip the services with additional capabilities that could be reused by other business processes, apart from the one that is currently being automated, when it comes to automating such processes.
An important concept related to the application of this principle is logic centralization. With the passage of time, as different service delivery projects are undertaken, the chances of services containing duplicate logic increases. This can only be avoided if there exists an enterprise wide standard that dictates analyzing the current services when it comes to appending services with new reusable logic. If a service already exists with a functional context that fits the new reusable logic, then instead of creating a new service such a logic should become part of the existing service. This not only helps in avoiding duplication but also increases the reusability level of the service as now the reusable logic sits within the correct context and hence stands a better chance of reuse. This is exactly what is advocated by the Logic Centralization Pattern
.
The application of this design principle requires performing a top-down service-oriented analysis process in order to arrive at a complete set of candidate services. This clearly requires increased resources both in the form of time and efforts. The application of the Logic Centralization design pattern may introduce cultural issues e.g. service developers showing reluctance in reusing other’s services, project managers not willing to incorporate use of existing services as it might need solution design adaptation, etc.
By putting a lot of emphasis on service reuse, the reliability of the reusable services becomes an important issue as multiple service consumers depend on the same service. Other design principles like Service Autonomy Principle
and Service Statelessness Principle
provide guidance in order to deal with reliability and availability related issues.
Service-orientation
Service-orientation is a design paradigm to build computer software in the form of services. Like other design paradigms , service-orientation provides a governing approach to automate business logic as distributed systems...
design paradigm
Design paradigm
The term Design paradigm derives from the rather ambiguous idea of paradigm originating in Sociology of Science, which carries at least two main meanings:...
, in order to create services that have the potential to be reused across the enterprise. These reusable services are designed in a manner so that their solution logic is independent of any particular business process or technology.
Purpose
Service reusability is usually measured in terms of how much extra functionality does a service contain which could be reused in future and how much of the service’s functionality goes beyond the current requirements. This encourages services that contain extra capabilities which are built around possible future service usage scenarios. However, little is done in designing the service logic in a manner that it could be reused to automate multiple business processes. So, there is more focus on equipping services with extra functionality than actually concentrating on making the core service logic reusable. This leads to gold-plated
Gold plating (analogy)
Gold plating in software engineering refers to continuing to work on a project or task well past the point where the extra effort is worth the value it adds...
services whose development require increased time and efforts. This additional functionality may not even fall within the original functional context of the service and might not even be used at all, as it was built without establishing its needs. Most important of all, the resulting SOA would not be able to provide true service reusability as promised.
Another misconception about service reuse is that the reuse relates to the frequency of its usage. Contrary to this, the actual reuse relates to when the service is used to automate multiple business processes. This is the true service reuse as such a service eliminates the need for creating altogether a new service and becomes a part of multiple business processes without being part of any particular business process.
The Service Reusability principle addresses these misconceptions by providing a set of guidelines that help to design services containing logic which is not linked to any particular business process and hence could be reused across the enterprise for automating multiple business processes. This further helps in achieving increased ROI.
The compound application of Service Reusability, Service Abstraction
Service Abstraction
Service Abstraction is a design principle that is applied within the service-orientation design paradigm so that the information published in a service contract is limited to what is required to effectively utilize the service i.e. the service contract should not contain any superfluous information...
and Service Loose Coupling
Service Loose Coupling
Within the service-orientation design paradigm, Service Loose Coupling is a design principle that is applied to the services in order to ensure that the service contract is not tightly coupled to the service consumers and to the underlying service logic and implementation...
principles help developing composable services.
Application
This design principle advocates developing services based on the commercial product design principles that dictate developing a software product with the right type and correct quantity of logic. So the focus here is on the quality of the logic packed within the software program. By concentrating on quality, the reuse potential of the software program is automatically increased. In order to concentrate on the quality of the logic, the Service Reusability requires exploring the business domain as well as the current technologies in use. Some of the considerations that help in designing services with reusable logic include:
- What are the long term objectives of the organization?
- Analyzing the functional contexts of the current services.
- Current legacy systems and any future plans of decommissioning such legacy systems.
- What are the current requirements that the service is required to address?
- Details about the corresponding business domain(s).
By conducting this analysis, we can arrive at the right type of reusable logic that needs to be included within the service. Also because the other services are analyzed as well, the chances of logic duplication are minimized. It is beneficial for the application of this principle to have a service inventory blueprint (a set of candidate services) as then the identification of agnostic logic becomes rather easier. This requires performing via the service-oriented analysis and design process. The application of this principle before the finalization of service capabilities provides an opportunity for fine tuning and refactoring the logic in support of making it reusable. This also gives a chance to equip the services with additional capabilities that could be reused by other business processes, apart from the one that is currently being automated, when it comes to automating such processes.
An important concept related to the application of this principle is logic centralization. With the passage of time, as different service delivery projects are undertaken, the chances of services containing duplicate logic increases. This can only be avoided if there exists an enterprise wide standard that dictates analyzing the current services when it comes to appending services with new reusable logic. If a service already exists with a functional context that fits the new reusable logic, then instead of creating a new service such a logic should become part of the existing service. This not only helps in avoiding duplication but also increases the reusability level of the service as now the reusable logic sits within the correct context and hence stands a better chance of reuse. This is exactly what is advocated by the Logic Centralization Pattern
Logic Centralization Pattern
Logic Centralization is a design pattern, applied within the service-orientation design paradigm, whose application aims to increase the reusability potential of agnostic logic by ensuring that services do not contain redundant agnostic logic and that any reusable logic should only be represented...
.
Considerations
The application of this design principle requires performing a top-down service-oriented analysis process in order to arrive at a complete set of candidate services. This clearly requires increased resources both in the form of time and efforts. The application of the Logic Centralization design pattern may introduce cultural issues e.g. service developers showing reluctance in reusing other’s services, project managers not willing to incorporate use of existing services as it might need solution design adaptation, etc.
By putting a lot of emphasis on service reuse, the reliability of the reusable services becomes an important issue as multiple service consumers depend on the same service. Other design principles like Service Autonomy Principle
Service Autonomy Principle
Service Autonomy is a design principle that is applied within the service-orientation design paradigm, in order to services that have maximum control over their execution environment...
and Service Statelessness Principle
Service Statelessness Principle
Service Statelessness is a design principle that is applied within the service-orientation design paradigm, in order to design scalable services by freeing up the services from managing their state data whenever possible...
provide guidance in order to deal with reliability and availability related issues.