Concept Map: Humble, Powerful
Reposted from my personal blog
How To Create A Concept Map
Begin with brainstorming the list of nouns which may be related to your subject. Don't worry about or put any effort into getting a complete list. After the nouns are down arrange them (roughly) in a tree structure with the subject topic at the root and the most concrete detailed nouns at the leaves. Add directional relationships between the nouns to form phrases in the form of [Noun A]-(relation description)->[Noun B]. Add nouns with labeled relationships when you discover they are missing. Generally the map grows from the edges but sometimes missing abstractions will cause internal additions.
Why Is The Concept Map So Magical?
The ideas and interrelationships are written down in free form style. The mind is relieved of having to juggle concepts and remember a complex structure in situ. Distractions are removed allowing focus and the discovery of detailed local identities with precisely described relationships. It is similar to molding with clay. The starting point is an ambiguous concept. Each part is fleshed out in turn from the largest to smallest detail. Items are visited multiple times along the paths described by relationships. Clarity of the whole emerges iteratively.
Concept maps were developed to enhance meaningful learning in the sciences
What Does This Have To Do With Software Engineering?
The essence of software engineering is understanding and expression. Clarity is the name of the game. To create a solution one must first understand the problem. Problems only exist within a context. The Concept Map is a tool that eases the generation of what entities exist and how they are related to each other. Context is illustrated. A Concept Map may be used as input to design. The utility in relation to Object Oriented design is obvious as entities and their relationships are directly reflected. Other paradigms such as functional programming also benefit. The relationships illuminate the dynamic flow of information and groupings of concepts (suggested by spatial organization in the Concept Map) offer potential functional compositions.
Try taking the humble Concept Map for a spin before attempting design for your next software engineering task. The power of this simple technique may surprise you!