We use models in Computer Science and otherwise, for a wide range of purposes: understanding, structuring, predicting, communicating whatever is expressed in the models.
Familiar (to computer scientists at least) examples of models are:
- Domain models such as UML class diagrams or OWL ontologies
- Data models such as ORM or ER diagrams
- Models of physical systems in the shape of differential equations
- Models of varieties of living things in the shape of biological taxonomies
There are two essential questions we are interested in when modelling for computer science:
- What will we do with the models? Do we want to be able to «execute» models directly, like programs? Or should they act as a reference, like dictionaries? Are they meant more for human consumption or for machines?
- How do we build the models? How can we ensure that models are correct with respect to the real world, even when they consist of thousands of entities? How can we maintain so large models? How can we ensure that they evolve in synch with other artefacts in our software system?
Here are some of the modelling approaches we use in ASR:
Rewriting Logic and ABS
Including ontology templates (OTTR), RDF constraints as data models,
Description logics, first-order logic, default logic, etc.