Queen's Logo

CISC836: Models in software development: methods, techniques, and tools (Fall 2009)

Detailed course content

[Home] [Content] [Schedule] [Readings] [Assignments] [Projects]

Topics to be covered

The lectures will cover the following topics:
  1. Introduction, motivation and overview
  2. What is a model?
    1. observations, key concepts, examples, activities on models
  3. Use of models in software engineering
    1. characteristics of good models
    2. model-driven development (MDD)
    3. examples
  4. Expressing software models
    1. examples of modeling languages
      1. UML, Alloy, Promela, Kiltera, Petri nets
    2. domain-specific languages (DSLs)
      1. examples: UML-RT
      2. defining DSLs
        1. syntax: abstract syntax, concrete syntax, serialization syntax
        2. semantics: denotational semantics, translational, operational
        3. using UML: semantic variation points, profiles, meta model extensions, examples
      3. tools
  5. Analysis of software models
    1. for all models:
      1. well-formedness checking, consistency checking, property checking, "what if" and tradeoff analysis
    2. for models of behaviour
      1. for logic-based notations: satisfiability solving, (automated) theorem proving, rewriting, examples
      2. for process-algebra-based notations: bi-simulation, state space exploration, discrete-event simulation, examples
      3. for state/automata-based notations: state space exploration, automata-based model checking
  6. Transformation of software models
    1. classification
    2. model-to-text (M2T), model-to-model (M2M)
    3. Query-View-Transformation standard (QVT)
    4. code generation
  7. MDD in practise
    1. Eclipse and Eclipse modeling projects: UML2, EMF, GMF
    2. case studies