Blog: Dan E. Linstedt« May 2008 | Main | July 2008 » June 30, 2008Design: Subject Oriented Versus Function OrientedFor a long time Dr Ralph Kimball has spoken about subject oriented design. Many have made a living off of producing subject based data marts. One of the problems this has lead to is a series of loosely coupled stove-piped answer sets that are then "discussed" in the light of an enterprise data warehouse. I've been teaching, talking and writing about (over the last 10 years at least) a notion called Functionally Oriented Design. In this entry I will briefly introduce my notions of these concepts. When we examine subject oriented design patterns we discover that the true nature of this design is to meet the needs of a specific group of people, furthermore - performing a very specific task or attempting to answer a highly specified business question. In fact when we do additional research around "subject-oriented design" we find a number of interesting facts: "Feature-based What does this mean? What about the staging or re-composition? The image seen here, is one representation of many that Dr Kimball has subscribed to over the years. http://www.dwmantra.com/concept_index.html As Bill Inmon states: "A school of minnows (swimming in close proximity) doesn't equal a whale." At the same time, the original definition of data warehousing includes "subject-oriented" in it's purpose. Lately (for the past 15 years or so) I've been experimenting with Functionally Oriented Designs. Why? Because the business process is very important to the enterprise data warehouses that I've been building. The nature of functional design is to couple form and function together to solve a problem. In this case, the form is the data model, and the function is the business process. By doing so, we solve different types of problems for the enterprise data warehouse. Don't get me wrong, I believe in Star Schemas for end-user access, cleansed and organized data, but I do _not_ subscribe to their use as an enterprise data warehouse. More on that later. Functionally Oriented Design has taught me that it is possible to build a system based on business rules and to maintain it as quickly and easily as the business changes. More to the point, if we design our enterprise data warehouse properly, we can actually store the history of _some_ of the business rule changes within the structure of the enterprise warehouse as well. Thereby opening up new territory for "comparative design analytics" in review of "what have we changed business wise, and was it a good decision..." Functionally oriented design is focused on the business process, and therefore the business keys that drive through the business processes. Because of this notion, the design actually runs horizontally (instead of vertically by line of business) across the entire enterprise. The design focuses on tracking and tracing all information by business key from the time it first enters the business to the time of delivery of the goods or services. The Data Vault modeling paradigm is based on functionally oriented design views, we'll discuss more in the next entry. For now, if you have a different view on Subject Oriented Design I'd love to hear it. Thanks, |