Prof. Brian L. Evans, Dept. of Electrical and Computer Engineering, The University of Texas at Austin, System specification using words and schematic drawings is ambiguous and has many interpretations. Instead, we would prefer to use an executable specification with well-defined meaning. The executable specification should support a wide variety of models of computation and architectures at different levels of abstraction.
Activity-oriented models describes a set of activities related by data or execution dependencies, such as dataflow graphs. They are well-suited for transformational systems, such as modems and codecs.
Structure-oriented models describe the system's physical modules and the interconnections between them. They are well-suited at describing a particular architecture, such as a four-processor implementation with shared memory and an eight-processor implementation with cross-bar communication.
Data-oriented models represent systems as collections of data related by their attributes, class membership, and so forth. These models are well-suited for information systems, such as databases and graphical representations of object class hierarchies.
Heterogeneous models represent a composition of models previously listed since one model is generally insufficient to describe an entire complex system. Models of computation are often not formally composed, but instead combined in an ad hoc manner. Improper mixing of models of computation can lead to unpredictable behavior by the system.