Wiki: DesignDecomposition

Design Decomposition for Business Process and Data Flow Diagrams
Home  |  Matrix  |  Blog  |  Wiki  |  Forum  |  FAQ  |  Consulting  |  Sponsorship  |  Linking  |  Privacy  |  Contact  |
Contents      Categories     PageIndex     RecentChanges     RecentlyCommented     Login/Register

Design Decomposition

In software design and modeling, decomposition is the separation of a system into smaller or basic sub-systems. This effort is all about simplification. Simplification is meant to make it easier to make design decisions.

Types of Design Decomposition

There are two types of design decomposition: high-level and detailed.

High-level decomposition is the emphasis of this website. For example, you could use the Decomposition Matrix on this site to generate data flow diagrams (DFDs) the could help determine the high-level optimal sub-systems for a business. You could then chose processes in that DFD to be represented as a business process diagrams, again generated from the Decomposition Matrix (which would be sub-matrix of the original Decomposition Matrix). Finally, if you are considering services, you could use the Decomposition Matrix to determine the properly granularity of the services.

Detailed decomposition techniques could be used to flesh out the high-level decomposition. Generally, detailed decomposition is found at the code level. Although DFDs have been suggested for this level of decomposition in the past, it is my opinion that any of the agile techniques are better suited to detailed decomposition.

Reasons for Design Decomposition

An optimal high-level decomposition often aids in simplifying both development and maintenance of a software system. A good high-level decomposition establishes boundaries between sub-systems that minimizes coupling.

Determining System Boundaries

Determining system boundaries can often be a difficult exercise. This asks you to determine what is inside a system and what is outside the system. You would think that would be easy, but it is my experience that it is not for most people. I wrote a Blog entry design context that provided some thoughts on the process I often use to help determine system boundaries.

Design Decomposition as a People Problem

Design decomposition is often as much a people problem as a technical problem. An optimal decomposition requires gathering all the necessary requirements from people and then using those requirements to design the appropriate decomposition of systems and sub-systems. It is also often difficult to know if you have all the requirements.

The Decomposition Matrix can help you gather part of the requirements. It forces people to determine all the inputs and outputs along with how those inputs and outputs are related. This is quite detailed and requires people to think through those relationships. Also, early iterations of the generated diagrams based on the Decomposition Matrix often do not make sense to people who are the subject matter experts. This is usually because either inputs or outputs were missed -- or that the relationships between the inputs and outputs were not specified properly. This creates an opportunity to get the specifics correct on the relationships between the inputs and outputs.

How to Avoid Replicating Past Decompositions

Designers are no different than anyone else. We tend to repeat what has worked for us in the past. Many times, that is an effective approach. But, obviously, it can be the wrong approach since one "size" does not always fit all. Again, the Decomposition Matrix can help. Instead of starting out with a diagram (and drawing something you likely have seen before), the Decomposition Matrix forces you to think of only inputs and outputs and their relationships. This provides the designers and subject-matter experts with a way to think differently about the system they are about to design.

How the Decomposition Matrix Might Help You

This Wiki entry started out discussing the importance of simplification. The very nature of the Decomposition Matrix simplifies design decision making. Instead of trying to grapple with the entire design, the Decomposition Matrix only asks you to make a binary decision: Is a given input related to a given output. That is all. You might be surprised at the discussions that can ensue from such a simple decision. Nevertheless, it is a relatively simple decision -- and it is the accumulation of similar simple decisions about the other inputs and outputs that creates a Decomposition Matrix -- allowing you to generate a decomposition that might prove to be helpful in your design.

There are no comments on this page. [Add comment]

Search this site
Custom Search
Resource Books at Amazon.com
by Avinash Kaushik
Description: Adeptly address today’s business challenges with this powerful new book from web analytics thought leader Avinash Kaushik. Web Analytics 2.0 presents a new framework that will permanently change how you think about analytics. It provides specific recommendations for creating an actio...
by Gwen Solomon, Lynne Schrum
Description: Web 2.0, the second generation of the World Wide Web, allows us to connect, create, collaborate, and share information. When we bring Web 2.0 tools into the classroom, we transform learning. By applying these tools thoughtfully, we see a shift in student engagement, creativity, and h...
by Toby Segaran
Description: Want to tap the power behind search rankings, product recommendations, social bookmarking, and online matchmaking? This fascinating book demonstrates how you can build Web 2.0 applications to mine the enormous amount of data created by people on the Internet. With the sophisticated ...