CSC2125:  Modeling Methods, Tools and Techniques

Winter 2018

Course Overview




Model-based software engineering (MBSE) is an approach to software development in which software models play a primary and indispensible role.  MBSE allows developers to work and reason about software requirements, design, and correctness at higher levels of abstraction, and to automatically generate implementations, deployments, and other artifacts.  MBSE has been successfully applied in several industries (automotive, aeronautic, information systems), in defining software product lines and in system safety assurance (albeit often in an ad-hoc fashion). This course will look at the state of the art of MBSE and its future research directions.

Assumed Background


An interest (and/or background) in the theory and practice of software development.  Some knowledge of software modelling (e.g., UML) and Eclipse (specifically, EMF) is beneficial but not necessary.

List of Topics

Modelling Notations 
Modelling paradigms, domain-specific notations, meta-modelling, grammars, semantics

Mega Models and Model Management
Relationships between models and megamodels, relating heterogeneous models, model operations (e.g., merge, composition, match, slice, diff)

Analysis and Verification
Consistency and completeness, model simulation, constraint solving, model checking

Model Transformations
Code generation, generative programming, model-to-model transformations, abstraction/refinement, model synthesis, model visualization

Other Topics
Models@Runtime, modeling and analyzing product lines, modeling of adaptive systems, biological and cyberphysical systems, system safety and security, combining modeling and machine learning.