Project 1b

Due Date: Thu 18 Oct

Pair Project


Familiarity with

  • Unified Modeling Language (UML)
  • State diagrams (STD)
  • Modeling dynamic, event-driven behavior with STDs


State diagram

Create a state machine diagram (SMD) as an abstract description of the observable event-driven behavior of the device you implemented in the previous project

General rules: 

  • Represent each visually or logically distinct state of the system as a distinct state in the diagram, while differences in internal data values should not lead to distinct states. 
  • Do not directly represent UI elements in the diagram; represent events coming from UI elements abstractly and name them according to their UI element source, e.g., increment.

You are welcome to choose from the following tools for this job:

  • manual drawing
  • general-purpose drawing tool
  • UML modeling tool; the top two cross-platform choices are:
    • Astah (free community edition available)
    • ArgoUML (open source but a bit clunky)

Relationship between model and code

Provide a brief (2-300 words) description of the relationship between your state machine model from this project and your actual code from the previous project. Possible talking points are:
  • What are the similarities and differences between model and code?
  • Is it more effective to code or model first?
  • Now that you have a model, are there any changes you would want to make to your code?


  • Upload your diagram to the downloads area of the repository.
  • Summarize your findings (answers to the questions embedded in the code) in the top-level README file of the repository.
  • Let the instructor (laufer) and the TA (ejburns) know by email that your work is ready to be graded.

Grading Criteria

  • 10 points total
  • 1 point off for each missing state (this includes transitions involving that state)
  • 0.5 point off for each missing transition involving existing states
  • 0.25 point off for missing attributes of transitions
  • 3 points for the written part (1 point for each question)