Why Executable Models?
(1) if you have complex systems to develop ⇒ use models
- to focus on isolated aspects of system
- in the beginning, mostly to facilitate understanding and communication
(esp. to derive requirements and procedures)
- deliberately vague in the beginning, becomes harder to read
as model gets refined and formalized
(2) if you have complex models ⇒ make them executable
- as models get more complex, it becomes harder to validate them
(see what model does)
- validation greatly improved by simulation ⇒ model execution
(turn model into program)
(3) if you have executable models ⇒ verify them
- simple fact: programs show defects - model or implementation ??
- find as many model defects as possible before system development starts
- models less complex than real system, implementation has less
constraints ⇒ use tools to automate verification (faster, less expensive)