Documentation for Concurrent Programs
1. An English description of the overall function of the program and the function of each object. Include a description of the concurrency and synchronization of threads
2. An Object Model
3. Guard variables for each condition (object, semaphore, or lock & condition)
4. Pre-condition and post-condition for each synchronization statement
5. Invariants that must hold for a “thread safe” object.
6. A Description of the testing and model-checking of this concurrent program. Include output from the testing and/or model-checking.