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.

Long Tutorial lessons

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.

Lesson 8.
Tutorial topics: Building Java Based Interpreters.
Application example: Paradigm independent: display sets with containees and references with referred info.

Short Tutorial lessons

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.