18-642 Project 12

Updated 11/21/2021. Changelog

Learning objective: revisit the entire build package and "ship" the final product.

This project wraps up the ece642rtle you have been working on all semester.


Lab Files:


Hints/Helpful Links:


Procedure:

  1. Get all the mazes working
  2. Clean up design package.
    1. This is where your technical debt comes home to roost. You need to ensure that your design package actually matches your final code when releasing a design to production. That applies to all the following items listed.
    2. High level requirements for Turtle. Updated? Match rest of design?
    3. Sequence Diagrams for Turtle interacting with maze. Updated? Match rest of design? (Updating them to include interaction with monitors is not required for hand-in.)
    4. Statecharts for Turtle. Updated? Match rest of design?
    5. Materials in release candidate (e.g., comments in code that trace code to statechart), including:
      • Turtle source code
      • Maze source code
      • Monitor source code -- all monitors working?
      • Scripts
      • Unit tests -- do they still achieve coverage required by previous projects?
    6. Peer review logs for your work starting with project 6. All status fields showing resolution of the issue (in some cases resolution is "not a defect" or "feature request").
    7. Note that in a commercial production system you'd also be responsible for requirements SDs, and statecharts for the maze code, the monitors, and potentially also unit tests. We're skipping those in the interest of managing the workload.
  3. Create a final release candidate
    1. Make sure that everything you need is included in the submitted release candidate tar ball, the same as you have been doing for several projects now.
    2. Make sure your build script does the following:
      • Does any setup required to run ROS in a clean virtual machine
      • Compiles all source code with wall relevant warnings from previous projects enabled. If you have suppressed or failed to enable any warnings or have any unresolved warnings you must clearly state that you did not resolve all warnings in your writeup.
      • Runs all unit tests and fails hard if a unit test fails (i.e., if a unit test fails the system does not complete the build script successfully). If you are unable to meet this criterion, then you must clearly state that you have unit test failures in your writeup.
      • Sets up system so that the maze script can run successfully. The build script is only run once when bringing up the system.
    3. Make sure your maze run script does the following:
      • When maze "k" is used as a parameter, runs that maze
      • All run-time monitors are enabled for the entire maze run
      • Any invariant violations are displayed; if no invariant violations have occurred, then it is both obvious and trivial for a grading TA to determine this has happened without scrolling through any logs or screen history. If you have any known invariant violations you must clearly state this in your writeup.
    4. For grading the TA will run the build script and run the maze script on all 10 mazes m1..m10, not necessarily in that order. TAs may, at their discretion, run some mazes multiple times to ensure absence of defects related to race conditions.
  4. Writeup: Do a final check that the turtle solves the mazes, and a final check that your testing and documentation is up to date. Document items shall conform to the requirements of previous projects regarding coverage and completeness. Include the following in a writeup:

Handin checklist:

Hand in the following:

  1. A release candidate build file: ANDREWID_P12.tgz
  2. Your writeup, which should be in a single acrobat file called p12_writeup_[FamilyName]_[GivenName]_[AndrewID].pdf

Other requirements:

Zip the files and submit them as P12_[Family name]_[First name]_[Andrew ID].zip.

The rubric for the project is found here.


Changelog: