Saturday, 7 February 2009

Vertical and Horizontal Streams

You've got a huge project where you need a technical and business process solution to a business need. How do you break it down, and how do you manage the dependencies? My suggestion given my recent experience would be into well-defined capabilities, and then into vertical and horizontal capabilities.
I use the term vertical to mean a business-driven set of requirements, such as Sales, Customer Services, Marketing. Horizontal means a supporting capability such as Data Warehouse, Reporting, Website, Monitoring. The reason that the terms vertical and horizontal is descriptive is that the vertical streams are trying to achieve something in business terms, and they depend on many of the horizontals to deliver this.
For example, if the business requirement from Sales is to sell a product over the web channel, and report on the conversion rates, the there will be requirements on the Website, Monitoring, Data Warehouse and Reporting. My approach would be to drive the requirements from the vertical streams, but don't try and work out the supporting infrastructure in these streams, but just put requirements against the horizontal streams/capabilities that you need to deliver something for you. You can go through all the vertical streams just solving the business problems, and carefully tracking all the requirements and dependencies you have against the horizontals. At the end of this process, each horizontal stream/capability should have a good description of what they need to deliver to support the business. Once these streams have a solution in place, they can communicate any constraints, opportunities etc back to the vertical streams so they can be tweaked to make best use of the available infrastructure.
In addition, you have autonomous capabilities and composite capabilities. If you do a business capability map, once you get to a certain level, you will see that there are many common capabilities that are required as part of many different high level business requirements. eg "Make Payment" or "Authenticate Customer". In SOA terms, these can be your autonomous services, and many different business requirements are built as orchestrations across these. A good BPM product helps here, such as TIBCO.

No comments: