|
Avoiding Problem Solution Confusion
Published: January 1, 2003
Published in TDAN.com January 2003 IntroductionI am constantly amazed how teams will latch on to new technologies or methodologies, get stuck, and then blame the problem on the tool or methodology. The most common "magic bullet" today is object-oriented software engineering and there are many areas that object-oriented techniques paralyze teams. The most common form of this paralysis is "Analysis Paralysis". I prefer to call this form of paralysis problem-solution confusion. In this article I will explain why many groups become paralyzed and fail when they start working with object-oriented techniques. Further I will give some suggestions on how to avoid problem-solution confusion in the future. A confusion of "space"Experience has shown that there needs to be a true separation between the two initial object-oriented disciplines: analysis and design. I bet if you asked 100 people about what constitutes analysis and design, 50% would not be able to give a difference between the disciplines. Another 30% would confuse design with coding while the last 20% would say analysis is with end users and design is not. All of these point to a true confusion of something methodologists call "space". There are really two spaces we as software engineers or project managers are interested: problem space and solution space. By exploring what we mean by each of these spaces, we begin to understand the root cause of problem-solution confusion and the resultant analysis paralysis. I have a co-worker who describes this as the "Shovel vs. Hole Problem". He is famous at his company for saying people get confused when they are analyzing the Hole (problem) vs. the Shovel (solution). If all you understand is you need to dig a hole with a shovel you may forget to ask what type of hole you need to dig. You may pick out a good gardening spade only to be embarrassed when you discover the user wanted a foundation of a house dug. Think of the hole as a problem to solve. Given this problem what questions would help clarify the problem for someone proposing a solution (your designer)? I would ask questions like the following: What is the intended use of the hole? What am I digging through? Where do I need to store the contents of the hole? What time frame do I have to dig the hole? These questions will clarify the process and the business rules involved without jumping into a solution before we understand the problem. Think of the shovel as a solution to the problem. Given the above problem of digging a hole, what questions would you ask as a solution provider (designer)? I would ask questions like the following: How can I make a whole that will fit their intended use? How can I dig most efficiently through the layers of ground in this area? How can I mark the exact location of the hole? How can I economically dispose the contents of the hole? How can I meet the time frame in which the hole is needed? These questions occur during the solution space. They lead to a solution based on the processes and business rules laid out in the problem space. Software engineers begin to recognize that there is a time for problem space work and a time for solution space work. Nevertheless, many of the popular methodologies and techniques being adopted blur the differences between problem and solution space and only focus on artifacts and techniques. Defining "spaces"We are now much closer to the root problem of this confusion. What is problem space? What is solution space? Who performs which space and when is it performed? To answer these questions we need a firmer understanding of both problem space and solution space. Problem space is the area of software engineering where all of the questions on business requirements and processes are answered. These business requirements and process questions usually begin with word "what." There are two very important concepts in the problem space: what and answered. First, we want to research the problem. To successfully research a problem we need to research questions that describe what the user needs to accomplish, what the system needs to accomplish and what the interaction requires. All these questions take the form of defining the problem by identifying answers to questions beginning with word "what." These problem space questions are documented as requirements such as business rules, actor driven process definitions (called use-cases), and system wide requirements. The main goal is to answer all of these questions to a reasonable point. The second part of the problem-solution confusion is solution space. Solution space is the area of software engineering where solutions to a problem are developed. In solution space you capture concrete responsibility and design through models such as storyboards, class diagrams and object interaction diagrams. All of these pictures strive to answer questions that begin with the word "how". How do you research problem space without getting away from the problem and into the solution space? You gain focus by working on the problem from the user's prospective not from the prospective of any past, current or future solution. Good problem space describes quantitatively what problem the user has asked us to solve. For example, notice the different between the following two requirements.
The first requirement is definitely solution space because it goes beyond the requirement or definition of a problem into how it is solved. The last requirement does a good job of defining the problem only. Focusing on the requirements and not the solution is the basic difference between problem and solution spaces. If you can focus on only the problem in problem space and solution in solution space you set up a nice provider-consumer relationship that will benefit object-oriented project teams. You will start to see a clearer light at the end of the tunnel and an end to the analysis and design efforts that seem usually to go on forever. So now that we are getting accustomed to problem and solution space, who performs this work? It is my experience that one person or group should research the problem. I call these people analysts. Another group should produce a solution that meets the requirements documented in the problem and propose a complete solution. This second group of people I call designers. You will find that although these people work two sides of the same coin they have specialized skills. The analysts need to relate well with business and other IT people while utilizing skills like facilitation and consensus building. The designers need to have a problem solver mentality as well as understand the tools and technologies available for use with the solution. Performing Analysis in Problem SpaceWhat techniques allow analysts to work in problem space effectively? Experience has shown that you need five things to document most analysis of problem space.
All five of these documents together answer all of the problem space and work to produce a clear and concise picture of the problem to be solved and the requirements to be implemented. After this progresses to a comfortable and reviewed state, design can start. Performing Design in Solution SpaceThe designer needs to be able to synthesize a problem to produce an efficient and complete solution. The solution space should be filled with lots of models. These models describe for construction, verification and implementation people how the problems are being solved and how the requirements are being met. Remember those questions begin with the word "how." Many people learn a lot from a graphical representation of the solution but the designer also needs to document the solutions to the problems in written form. The written form will serve as a checklist to prove that the problem space and solution spaces are completely overlapping. When reviewing a design this checklist is sometimes the only way to determine completion of the solution space questions. What techniques serve to produce a well-documented design? The following all are used at some point to design a project. Each of the following deliverables serves a purpose to document part of the solution space.
Transitioning from Problem to Solution SpaceEven bigger to solving the problem of problem versus solution space is the transition period. Although the problem space artifacts exist there needs to be some method of clearly making the transition from problem to solution space. The following describes a proven series of techniques to get the problem and solution space transition performed. Review all use cases and the context diagram content to determine if 70-80% of the problem space is addressed. This assessment is based on your current understanding of the problem. Remember that you can iterate and repeat this entire process if you learn more during the process.
ConclusionI have described how using object-oriented analysis and design can produce a problem-solution confusion called analysis paralysis. Remember that this paralysis comes from not understanding three basic principles:
Investigate the artifacts and processes that I have described in this article. Work to get your processes and team members better focused on which part of the project they are working: problem or solution space. This clarity will help produce faster, easier and more complete projects. The downstream processes of construction, verification and implementation will be better off with this avoidance of problem-solution space confusion. This article was previously published in the Journal of Conceptual Modeling published by InConcept. Visit the Journal of Conceptual Modeling by clicking here. Go to Current Issue | Go to Issue Archive
Paul Leska Jr. -
Paul Leska Jr. is a principle in Sapphire Software Inc. a Minnesota based software development company and independent consultant agency. He specializes in object-oriented methodology, architecture and design. Paul is an advocate for advancing the correct use of object-oriented project techniques in companies. His extensive background includes design and development for dozens of languages and platforms. Currently Paul is helping companies use and apply object-oriented methodology appropriately. He is working with Sapphire Software Inc. to develop products and services that exploit the power of the extensible markup language (XML). Contact Information: Paul Leska Jr. Director of Product Operations |