MIT

Problem Set 3: Dynamic Alloy Model (due Mon April 4)

This is the second of a pair of assignments using Alloy to model a system of your own choosing. Whereas in the first assignment, you considered only static aspects, in this assignment, you'll build a model with dynamic behaviour. If you want to, you can extend the static model from the previous assignment, but you'll be expected to show a real increment, and to write a new report.

Your model should be presented as a self-contained case study. You should assume that your reader knows Alloy, but has no knowledge of the subject of the study. The writeup should include at least the following elements:

Your model should include at least a couple of interesting simulations and at least one interesting assertion.

You should concentrate on developing the model, and only polish the writeup after the model is largely complete. The model should be small and simple: your aim is to capture the essence of your subject as succinctly as possible. As a rough guide, you should expect to develop a model that has at least 3 signatures and 3 fields, but no more than about 8 signatures and 12 fields. Use Alloy to help you check refactorings of your constraints to reduce them to a concise, elegant (and understandable!) form. If your model has become complicated and arcane, try and identify aspects of it that aren't essential, or try to find a way to take a more abstract view that will preserve the core content while removing extraneous detail.

When appropriate, you should make use of the patterns taught in lecture, and cite them when you use them: abstract state machine, declarative operation, local state, implicit invariant, invariant preservation, trace, etc. A rough draft of the book chapters on these patterns is available on the private readings page.

As examples of case studies developed by students with comparable experience in Alloy, see:

Both of these took several weeks of work, and involved extensive background reading. You should be less ambitious, and pick a subject that you already have some knowledge of, and can be confident you can model in a few hours. It's better to construct a simple model and polish it into something elegant and insightful than to construct a complicated model that you don't have time to rework.

You can pick any subject that appeals to you. Here are some suggestions:

Appeal for volunteers: Prof. Darko Marinov (University of Illinois at Urbana-Champaign) is conducting some research on new Alloy analyses and has asked us to provide transcripts of Alloy modelling sessions. If you are willing to donate logs of your sessions to the cause of science, please do the following: (1) download the most recent nightly build of the Alloy analyzer; (2) turn on logging under the 'experimental options' tab of the preference settings; (3) email your log files directly to Darko at (marinov at cs.uiuc.edu). A small amount of extra credit will be awarded for furthering science.

Please recall the somewhat elusive submission instructions.