Here’s a quick example of how to use the Decomposition Matrix to create a data flow diagram (DFD) that shows the decomposition of services in a service-oriented architecture (SOA). I’ve chosen a generic example of legacy systems that will be accessed by services. This will create a decomposition for a services interface layer on top of the legacy systems.

The inputs from these legacy systems are shown below at the left in the Decomposition Matrix. These inputs could be from existing packaged software, custom legacy systems, legacy databases, or software as a service (SaaS) on the Internet, etc. The exact nature of the legacy sources for the inputs does not change this example.

Click for a larger image.

The outputs shown from the services in the Decomposition Matrix are just some of the possibilities. The outputs needed would vary based the needs of the particular business. Since this is a generic example, I’ve chosen to show enough of the possible outputs to create a useful example.

The initial decomposition is shown below.

Click for a larger image.

The same diagram is shown below after some minor rearranging along with labeling the processes and the data flows.

Click for a larger image.

Note that the label on the data flow from a given process to another process is the same as the label on the external flow for that process. Also note that some top-level processes have multiple outputs. This indicates that the service input parameters will need the ability to specify sorting the XML output and/or selecting which XML tags should be included in the output. Such input parameters are not shown in DFDs, but they will be needed when you design the services. What is shown in this DFD –  and any DFD — is the flow of data, but not the control provided by input parameters.

I hope you found this Decomposition Matrix example useful. Also, I welcome any comments or suggestions that might improve it. Click on “Contact” in the menu bar at the top of the page to send me your comment or suggestion.

On the home page for this site, I list how the Decomposition Matrix may be used augment various methodologies. Nevertheless, I believe that list is incomplete. I also believe some descriptions in the list could be improved. Since I am not a seasoned practitioner in all methodologies, I would like to hear from those of you who deeply familiar with one or more methodologies. Please send me with your suggestions on how to improve this list. Thanks.

I’m now going to modify and expand the Decomposition Matrix to more fully reflect the story in Web Services and Service-Oriented Architectures, The Savvy Manager’s Guide.

First, the input of travel dates and locations is changed to travel dates and customers. In the story, C. R. chooses the dates and customers, not locations. Locations for customers come from the external CRM service used by C. R.’s company. Inputs and outputs for the CRM service are added.

Second, a traveler identification input is added. This identification is used to obtain the traveler’s profile.

Third, requests to customers’ calendaring services for meeting availability are added. These follow the same pattern as airline, car, and hotel services. There is a request for meeting availability that is followed by a meeting reservation request. The meeting availability requests are sent once it is known that there are available flights, hotel rooms, and rental cars. Also, receipt of one or more meeting confirmations in meeting reservation responses is needed before making either a flight reservation or an air/car/hotel reservation. This is because such reservations may have restrictions in order to get the best rate.

Fourth, the output of GPS destinations is added for the rental car service. This appears after all of the reservations since all driving destinations are provided at the same time to the rental car service. Also, this raises the issue of granularity for the first time in this example. Because of the possible volume for a car rental service, that service might ask that GPS destinations be bundled in one service request. It is potentially more efficient to handle one larger request than many smaller requests. So, this example is set up to create single larger requests that provide GPS destinations for the rental car service.

Fifth, a correction is made to the matrix that goes back to Part 1 of this example. In that matrix, the input and output entries for driving directions were incomplete because the driving directions were not provided to the traveler. The revised matrix below has an additional output of traveler’s driving directions (number 16) that occurs concurrently with the “Driving directions response” input and after the inputs for the various reservations responses. The type of modification is likely to occur as you develop a matrix. It is possible to overlook a relationship or to leave out an input or an output. Nevertheless, what often happens is that as you study the matrix and the generated diagram, these errors or omissions come to light. In this case, I noticed the error when I was adding the output for GPS destinations.

Finally, a number of informational outputs are added to update C. R.’s calendar (C. R. is the Traveler in the matrix), C. R.’s spouse’s calendar, and C. R.’s manager’s calendar. Also, the travel plans are saved for possible future reference.

Click for a larger image.

This matrix generates the following diagram. (You can click on this — or any of the other images — for a larger size.)

Click for a larger image.

Starting at the left, further decomposition of the first process, “Obtain travel information,” is shown below. This further decomposition results from adding the inputs and outputs for CRM customer information and the traveler’s profile. (For simplicity, I am not showing the intermediate sub-matrix for each further decomposition shown in this part of the example. Setting up the sub-matrix was described in Part 2.)

Click for a larger image.

The next process, “Check travel availability,” is similar to the process in Part 2 with the same name. Further decomposition of this process is shown below. The difference between this diagram and the one in Part 2 is that the task “Receive travel dates and customers,” in Part 2 was moved to the first process above and renamed “Receive travel information.” Again, this change was necessitated by the addition of the inputs and outputs for CRM customer information and the traveler’s profile.

Click for a larger image.

The further decomposition of the next two processes is a bit confusing. They appear to break up the various aspects of making reservations. The “Reserve flight and/or pkg” process is shown below. The Decomposition Matrix specifies that only flight information is needed before the generation of the “Manager’s trip summary.” This results in this further decomposition.

Click for a larger image.

Therefore, the remaining reservations are in the “Reserve car and hotel” process. That further decomposition is shown below.

Click for a larger image.

This confusing decomposition is an example of why I often describe the use of the Decomposition Matrix as similar to a working with another designer at a whiteboard. You, the designer, might have to make a decision as to what you think is best. For example, you might decide this decomposition is fine because it generates output at the earliest possible point. In this case, when the “Manager’s trip summary” is generated. On the other hand, you might decide you prefer to consolidate the reservation tasks in one process so that it looks like the further decomposition shown below. This merges the “Reserve flight and/or pkg” and “Reserve car and hotel” processes in the first business process diagram in this posting. The remainder of that diagram remains the same.

Click for a larger image.

To force the Decomposition Matrix to generate this diagram, three check marks would need to be added: Input 5 for Outputs 19 and 20, and Input 7 for Output 20.

Previous: Business Process Decomposition, Part 2

Search this site
Custom Search
Resource Books at Amazon.com
by Joe Fawcett, Danny Ayers, Liam R. E. Quin
Description:A complete update covering the many advances to the XML language The XML language has become the standard for writing documents on the Internet and is constantly improving and evolving. This new edition covers all the many new XML-based technologies that have appeared since the previo...
by Kevin Howard Goldberg
Description: What is XML? XML, or eXtensible Markup Language, is a specification for storing information. It is also a specification for describing the structure of that information. And while XML is a markup language (just like HTML), XML has no tags of its own. It allows the person writing the ...
by Julitta Korol
Description:Microsoft Excel 2010 Programming by Example with VBA, XML and ASP is a practical how-to book on Excel programming, suitable for readers already familiar with the Excel user interface. The book introduces programming concepts via numerous multi-step, illustrated, hands-on exercises. Mo...