CompSci 307
Fall 2021
Software Design and Implementation

Lab Exercise : OOGA API Review

Pair up with someone from a different team, but a similar area within the project, to present and justify your respective APIs to practice and perhaps get last minute feedback.

Submission

By the end of lab, each person should push a file named doc/API_REVIEW_YOUR_NETID.md to the ooga_teamNN Gitlab repository to submit a summary what you got out of the discussion. Make sure the Title of your commit is of the form "lab_api_review - participating NETIDs".

API Review

Choose an API for which you are responsible to discuss (one or more classes depending on their size, complexity, or dependencies).

For the parts below, each person should listen to the other's complete ideas before expressing their own opinion. Feel free to ask questions to clarify your understanding of the design or its justification, but not to be critical of the design. After the person is done with their thoughts, then you can provide constructive comments about the design: if you like it, explain why; if you do not, explain why and provide an example of where you think it fails. Together, try to come up with a better design, instead of just telling them what you think is the "right" way to do it.

Part 1

  1. How does your API encapsulate your implementation decisions?
  2. What abstractions is your API built on?
  3. What about your API's design is intended to be flexible?
  4. What exceptions (error cases) might occur in your API and how are they addressed?

Part 2

  1. How do you justify that your API is easy to learn?
  2. How do you justify that API leads to readable code?
  3. How do you justify that API is hard to misuse?
  4. Why do you think your API design is good (also define what your measure of good is)?