Stories, Capabilities, Services and Contracts
Today I want to introduce a bare-bones model to help guide the creation of business, architectural and technology artefacts in an agile and iterative manner over the course of an SOA initiative:
- Stories – in the form of Behaviour-Driven Development exemplars – describe goals and desired outcomes;
- Capabilities encapsulate the resources and abilities an organisation needs to satisfy those goals;
- Services host capabilities;
- Contracts – particularly consumer-driven contracts – assert the interactions between services.
We iterate over this model many times in the course of an engagement, emphasising different parts as we go. We concentrate on organisation-level stories and capabilities when establishing an organisation-wide context, then project-level stories, capabilities and services whilst planning projects and delivery streams, and then release- and iteration-level artefacts during specific instances of delivery.
Such an approach represents a “thin-slice” way to:
- establish context, business goals and consensus amongst stakeholders;
- create a long-term vision that joins up the business, architectural and technology views of an SOA initiative;
- describe and challenge an organisation’s goals and the benefits attached to those goals;
- describe the capabilities needed to meet those goals;
- identify the quality-of-service expectations the business has of those capabilities;
- identify services and assign capabilities to services;
- describe and test the externally visible interactions between services;
- identify, plan and develop slices of service functionality that deliver business benefits early and often.