Describing the world, or a segment of it, is one of the key problems in communication. People of all historic eras have been looking for solutions. An array of remarkable approaches has emerged, like Egyptian engravings used to record historical events, Greek and medieval astronomers' survey of the Universe, or Carl von Linne's taxonomy of the world's living creatures.
There is no "best" technique, especially because different human activities call for different approaches. Art deliberately maintains a wide variety of techniques to communicate subtle impressions, beliefs, or affections; the style of the description is often equally as important as the subject itself. On the other hand, science, especially the natural sciences and technology, is looking for precision, conciseness, and unambiguity instead.
Modeling is one of the most universal scientific
description techniques. While it is a rather broadly used and thus ill-defined
term itself, it generally means describing the world in terms of
pre-established concepts and rules. These rules and concepts govern the
description process and also make it concise, since details implied by them can
be omitted without decreasing clarity.
Most scientific description techniques like databases, computer programming languages, or even formal description methods are based on the modeling approach. Still, the most well-known representatives of modeling are graphical description systems. These tools enhance the illustrative, easy-to-understand nature of charts and diagrams with the precision of modeling concepts and rules. Things represented by these models can be as diverse as organizational hierarchy charts, genetic maps, and community sewer network diagrams.
Modeling is not only about description and illustration for human use. Their adherence to rules and patterns makes models different from drawings, figures, or free format textual descriptions. This not only reduces data size and disambiguates interpretation, but also makes the model suitable for automatic processing. For example, given an up-to-date company hierarchy chart, ordering correct business cards for each employee is a very straightforward process.
Modeling has been given a boost by the computer age
in several ways. First, computer programs can now be used to build models. The
application is straightforward: convenient graphical interfaces provide drawing
and visual presentation for models, while the program logic beneath maintains
and enforces strict compliance with modeling rules.
Second, computers are also suitable for automatic processing of models, thus making maximal use of them. While manual processing is tedious, all kinds of information (lists, reports, executable code, documentation, etc.) can be extracted and formatted from model data "at the press of a button" once the data has been inserted into a computer system.
Finally, information technology is an application area as well as a provider for computer modeling. Designing, building, programming, and configuring computer systems are tasks with a level of complexity that has been previously unseen. Human limits become obvious, and modeling again proves to be instrumental in building reliable systems.
There are are two tutorials presented here. The first tutorial on modeling and the Generic Modeling Environment (GME) takes its application example from the IT domain. Throughout the first tutorial's lessons, a design, configuration, and analysis tool for network infrastructures will be developed. The first tutorial gives an in depth, detailed perspective on GME and modeling. For those users that want a quick, simple tutorial to get up and running with GME in no time at all, there is a second set of tutorial lessons, much shorter than the first. The second tutorial uses the computer science concepts of Finite State Machines (FSM), Signal Flow (SF), and Boolean logic circuits as its application of GME.
GME can export/import from/to XML. Each figure will have a link to an exported XML file containing the GME project data used to create that screenshot for users that want to check their own progress against the author's save files. For more on exporting to XML, see Lesson 7 of the long tutorial.
Lesson 1.
Tutorial topics:
Modeling basics. Generic modeling elements: models, atoms, and connections. The
metamodeling process.
Application example:
Create a simple model of routers, router-ports and connected subnets.
Lesson 2.
Tutorial topics:
Building a hierarchical model.
Application example:
Make network diagrams scaleable through hierarchy.
Lesson 3.
Tutorial topics:
Building an interpreter with the Builder Object Network.
Application example:
Write an interpreter that matches network number to port addresses.
Lesson 4.
Tutorial topics:
Other modeling concepts: references and sets.
Application example:
Improve and extend the model with cross-hierarchy links and administrative
information.
Lesson 5.
Tutorial topics:
Techniques to make modeling more manageable: aspects, folders, subtypes, and
instances.
Application example:
Organize top-level diagrams through folders. Add an administrative aspect to the
network diagrams. Use subtyping to represent standard router types.
Lesson 6.
Tutorial topics:
Multiplicities and constraints.
Application example:
Add validity rules to the network model.
Lesson 7.
Tutorial topics:
Working with XML data. Pattern-based generator-interpreter.
Application example:
Generate router configuration from models. Generate XML file from the previous networking example.
Generate HTML file from the SF demo.
Further lessons in preparation:
Lesson 8.
Tutorial topics:
User-defined drawing and other tricks to improve presentation.
Application example:
Improve and customize presentation of network devices.
Lesson 9.
Tutorial topics:
Creating addons in C++ and Visual Basic.
Application example:
Enhance the safety and convenience of network design.
Lesson 10.
Tutorial topics:
Creating a COM-based component. On-line modeling applications.
Application example:
Turn the network model into an on-line monitoring tool with the display of
availability information.
Lesson 11.
Tutorial topic:
Implementing tool interoperability.
Application example:
Build an automatic tool to import network design from Visio diagrams.
Tutorial 1.
Tutorial topics:
Modeling basics. Generic modeling elements: models, atoms, and connections. The
metamodeling process.
Application example:
Create a Hierarchical Finite State Machine (HFSM) metamodel. Model an ATM cash
machine.
Tutorial 2.
Tutorial topics:
Composing Metamodels
Application example:
Make a Signal Flow (SF) Metamodel, then combine the SF and HFSM metamodels for a
hybrid metamodel: Signal Flow with Finite State Machine processing nodes. Model
a Laundry Washing Machine.
Tutorial 3.
Tutorial topics:
Constraints, Type Inheritance.
Application example:
Make a Metamodel of Boolean logic circuits with AND and NOT primitives. Model a
simple 2 input OR gate, then use inheritance to create XOR and 4 input OR.