Techniques

There are many different modeling techniques used to establish requirements. They include data models, process description, formal methods, textual specification, and use-case driven analysis.

Data structures and algorithm are fundamental in the field of computer science. Data modeling techniques concentrate on defining the data structures. Tools can be used to establish entity-relationship data models. Process description techniques concentrate on defining the algorithms. Tools can be used to establish flow charts.

The choice between these two techniques is driven by the task at hand. If the data represents a very stable concept in the model, then data modeling techniques will work best. If the processes represent a very stable concept in the model, then process description techniques work best. In my experience, data modeling techniques tend to be more fruitful than process description techniques.

A data modeling technique naturally leads to a database-centric system. A process description technique naturally leads to a computational-centric system.

Formal modeling techniques are declarative in nature. Formal modeling techniques may express the model in terms of mathematical logic predicates, usually based on first order logic. The trick is to establish tautologies that are always true under all interpretations and models.

Once the formal model is established, theorems in the model represent programs. A proof or deduction represents the algorithms and the structure of the model represents the data structure. A lemma represents a component and the corollary represents a reusable component.

A textual specification techniques establishes a model using a written natural language. Adjectives and nouns form noun phrases that represent data while verbs and adverbs form verb phases that represent algorithms or actions. The advantage of a textual specification technique is the expressiveness of language. The disadvantage is the ambiguity of language.

Use-case driven analysis techniques are centered around typical scenarios. This technique naturally leads to the definition of objects: a collection of both data structures and algorithms.

A similar technique of using storyboards leads to the definition of objects, states, and state transitions.