Conceptually, models are a medium that can be used to explain how a system operates in a way so that the chance of someone misunderstanding the concept is minimal. This article, will introduce some techniques and frameworks to help you create efficient models.
Models are now, and always have been, an integral part of the human experience. We create models of the world about us based on our five known sensory inputs: visual, auditory, textile, olfactory, and gustatory. These models inform us of changes in our immediate perception and also permit understanding of these changes in comparison to past events. As infants we develop sophisticated internal mental models of motion, shape, distance, time, and cause/effect in an effort to relate to the new and confusing world around us. Starting from a nearly clean slate, we must build an internal understanding for every new experience.
Our internal mental models of the world are also key to the communication of complex concepts to other people1. Since no two people share the exact same set of experiences, no two mental models will be exactly the same. For example, it would be impossible for people living in a primitive hunter-gatherer culture, without contact with the modern world, to understand the principles of refrigeration simply by hearing a description of the mechanics; the concepts are completely foreign to their experience.
To succeed, first you would need to have a shared communication medium (language, pictures, gestures, etc.), and translate your internal mental model into ones that can be related to their understanding of the world: examples of food storage, effect of cold temperatures on spoilage, and so forth. In other words, you would need to align your explanation of a phenomenon to a shared set of knowledge with your intended audience.2 Without such a common information base, it is very difficult for one person to explain his or her understanding of a phenomenon or system to another. Moreover, the probability of misunderstandings increases dramatically.
Similarly, when developing software systems, every person on the development team must have the same understanding of the needs and purpose for the system. This information is often gathered by a few specialists (e.g., requirements engineers) who then present this information to the remainder of the team, using a series of visual and textual models. Because these models are built from the viewpoint of the specialist, it is important for the "modeler" to understand his own biases and assumptions, since they will not likely be shared by all members of the development team. This need for clear communication of complex concepts is the purpose of creating models.
This series of articles will focus on the principles and practices of model conception, creation, and presentation. This first article will be primarily concerned with the principles of system analysis, observation, experimentation, and the techniques that can be employed to study a selected system. The second article will focus more on the practical applications of modeling, with an emphasis on software development models. The final article will focus entirely on techniques and considerations for presentation of information, using UML for the visual examples.