Effective Business Object Modeling
Object modeling is not just for programmers and analysts. It is also a very effective tool for communicating with clients, especially clients who are trying to articulate their vision of a new business, improved process, or future system. Most clients love talking about their vision or their business. Object modeling taps into that client enthusiasm, and channels it by asking focused questions about the business entities, rules, and processes. Organizing questions around the objects gives direction and purpose to the discussion, and the group sees the progress as the model grows.
Planning the Business Endeavor
Object modeling requires the involvement of domain experts, people who know the business thoroughly, and who can either make decisions about it or get an answer from someone else who can. Modeling sessions with these people, who are inquisitive, curious, and well-informed, can easily digress into side issues ranging from marketing strategies to database reports. Gathering that kind of information is important, but in its own time and place. Conceptual planning for a business goes through three phases: why, what, and how.
During the "why," or business strategy phase, the business entrepreneurs flesh out the purpose of the business endeavor and answer questions such as: Why undertake this endeavor? Why will it succeed? Why will customers come to it, use it, or buy it? Why will they return to it, continue to use it, or buy more of it? Answers to the "why" questions contribute to the business strategy for the endeavor.
During the "what," or business requirements phase, business domain experts plan the particulars of the business and answer questions such as: What kinds of people, places, things, and events are involved in the business? What information about them is important? What is their involvement in the various business processes and service offerings? What business rules govern their participations in the business processes and service offerings? Answers to the "what" questions contribute to the business plan, the organizational chart, and become the inputs for the "how" stage.
During the "how," or technical requirements phase, technical and business experts plan the mechanisms for enabling and tracking the business processes and service offerings. Questions answered include: How does the business enable interactions with people or other businesses? How are their interactions recorded? How are available things and places described or presented to them? How are their individual events described or presented to them? How is summary information about past events extracted? How is information stored, retrieved, and distributed? How is information made secure and private? Answers to the "how" questions contribute to the technical strategy, technical architecture, and the user interface, business logic, and database designs.
Object modeling addresses the "what" of the business; its concern is only with what is to be built, never why or how. Prior to the object modeling session, a good object architect inquires about the "why" questions, and raises a red flag if no one at the client site knows the answers. Clients not clear on their strategy are not ready to discuss what they want to build. On the other hand, clients too focused on "how" are likely to choose inadequate solutions because they do not fully understand what is involved in the endeavor. It is only natural that "how" questions arise during the object modeling session; the best response is to punt, and wait until the requirements are known. To minimize the time between "what" and "how," use iterative development technique.
Principle 1: The How of Why Is What
Conceptual planning for an endeavor goes through three stages: why build, what to build, and how to build. How needs what to define its scope, and what needs why to define its purpose.
New Business Endeavors
With new companies, the object modeling session is often the first time many of the executives sit in the same room and talk to each other about the business. Centering the discussion on business entities such as customers, products, discounts, procurement schedules, workflow, and supply chains keeps domineering personalities at bay and power trips to a minimum. Modeling the business entities as objects, and working to extract their responsibilities, gets the executives away from high-level market-speak and down into the details. Often, object modeling brings out details and issues not yet considered, and the client has to defer answering until a later time.
Other clients are using technology to re-engineer a process, probably taking it off the mainframe and to a client/server or Internet-based architecture. These clients are intimately familiar with details, but are stuck in how it is done now, overlooking potential improvements. The worst thing to do with these people is to talk about users and user scenarios because that tends to bring focus on how the old system worked, not what the real underlying business process should be.
User scenarios are frequently called "use cases." Building use cases before object modeling focuses attention on how things are done now, instead of what needs to be accomplished. The result is often a continuation of poor processes and a missed opportunity for process re-engineering.
To get them out of the trees and seeing the forest requires modeling the process and its goals. Only by concentrating on the objects involved and the goals of a process can clients see the flaws in the process and possible solutions.
Some clients try to skip business modeling and use a vendor's framework to implement their processes. This can work, but if the processes are documented only in the code generated by the product, clients will have a difficult time predicting how changes in one process will affect others. As a result, updating one process can break or seriously impact other processes. Also, it is difficult to tell whether a particular framework is an appropriate solution without doing some up-front analysis. At a minimum, clients need some form of gap analysis between their processes and a framework's functionality, and that is simplified for clients who have invested time in building an accurate model of their own processes. Finally, clients who have a model independent of a technology or vendor framework are better equipped to redefine their processes beyond the features offered by the vendor.
For all clients, object modeling succeeds because it focuses on the domain objects and forces everyone in the group to take the object's viewpoint. Putting people into the same viewpoint is a powerful technique for gaining group consensus. By contrast, building scenarios around users compels every participant to consider the system from his own personal viewpoint, and how he wants it to work. Not surprisingly, getting group consensus on "what" with use cases is considerably harder. Once the object model is created, then user scenarios are helpful in fleshing out the "how." Specifically, user scenarios are helpful in walking through the object model and bringing out preferred interaction flows.
Use of the pronoun "he" and all its variations should be understood as a generic pronoun representing both male and female persons. One of the authors is a female and she passionately hates writing "he or she."
Principle 2: The Object Modeling Viewpoint
Use object modeling to build group consensus by focusing on impersonal objects, not subjective users.
Principle 3: Object Modeling a New Business
Use object modeling with clients building a new business to flesh out details and issues, and document the proposed business in an impartial and objective manner.
Principle 4: Object Modeling for Process Re-engineering
Use object modeling with clients re-engineering a business process to get them out of the current way of doing things and to help them see the big picture, so they can discover a better solution.
Principle 5: Object Modeling Before Use Cases
For understanding a complex business process, use object modeling to bring out what needs to happen. Consider use cases afterward to illustrate how users interact with the objects in the system.