The example we just looked at for defining business processes and services was driven by concrete requirements: the need for new business functionality leads to one or more new or modified business processes, which require the use of new, existing, or modified services. This is a highly iterative and incremental approach. However, it is not the only possible approach.
In a private conversation, Torsten Winterberg presented four different ways to discover services:
By breaking down a process into smaller chunks (steps, activities), you identify the individual services required.
By analyzing the domain, you end up with useful services to provide.
By analyzing and monitoring what triggers business functionality, you define appropriate services.
By examining what you have (existing backend interfaces or "natural" technical interfaces), you identify appropriate wrapping services to introduce.
Domain decomposition leads to an approach that is often called "portfolio management," which I'd like to discuss further.
One more general service design approach is to try to find out how services should be designed to fit different requirements. Instead of implementing one version for the first consumer and then modifying or supplementing it with other versions for additional consumers, with this approach you try to analyze all the requirements so that you can design ...