Purpose: practice modeling a system using Alloy
You may work in teams of 2 or 3 on the project.
Keep track of how much time you spend on this assignment. You will submit your solution as an Alloy model plus a report as a pdf file.
Your company, Higher Expectations Ltd., makes lifts (elevators). Your job is to specify the control system for an installation that includes 3 lifts for 5 floors. Before you attempt to describe the complete system you need to specify a simple version that has only one lift and no floor call buttons:
Write an Alloy model of the control system that includes:
add and del for address books) that describe moving up/down one floor
Write appropriate predicates and commands to demonstrate your model and its operations.
You don’t have to specify the control algorithm that ensures that all requests are serviced. You just have to show that if the lift visits a floor for which there is a request then the illumination of that floor button is cancelled. (Write and check an assertion that demonstrates this.)
Be sure that your model is well documented, i.e., clear names for signatures, relations, predicates, etc., and comments describing constraints.
Write a short report describing your model and the commands that you’ve included in it. Please include images demonstrating your model and its operations. (Note that you can right-click on the visualizer window to save images.)
Turn in your work by committing your Alloy model and a pdf file of your report named P1report.pdf to your team subversion repository for this course.
Each team member should complete the short, anonymous survey on ANGEL regarding this assignment. (I will study these surveys in detail after the conclusion of this offering of the course. If you have suggestions that you would like me to consider during this offering of the course, please tell me in person or use the separate Anonymous Suggestion Box on ANGEL.)
Based on a previous problem description by Mark Ardis.