CompSci 307
Fall 2021
Software Design and Implementation

Weekly Journal : OOGA Project Analysis

In writing, we explore new connections and make new combinations. We sift through our schemata - reforming, rearranging, hypothesizing, and testing until we hit upon the answer, the solution to our problem. — Patricia Carlson

This analysis is your opportunity to demonstrate your own thinking and knowledge of design concepts represented (or not) in the project's code. The course staff can readily identify the good and bad aspects of project's design, so we are looking to see if you can also acknowledge these as well. The goal of this retrospective is to draw meaningful conclusions to help you learn from your past successes and failures.

Submission

In your individual portfolio_NETID repository provided for you in the course's Gitlab group, push the following:

Specifications

Example

Create your own "interesting" example data file(s) that show off important design elements of your project by focusing on creative or powerful things your design provides. The data file(s) do not need to represent a complete or fun/sensical game, but instead highlight something specific.

Include "comments" at the top of the data file that explain what you think makes the settings interesting.

Code Masterpiece

Choose part of the code you primarily wrote that you feel demonstrates what you think of as good design. It should represent a feature or component within your larger project that is small enough to be separable, but functionally significant enough to have some interesting design element. The term "component" is used rather than "class" because it may be several classes that work together, e.g., a few classes that work together or a superclass and its sub-classes. Note, if your component is specifically intended to be superclass, it must include enough detail that it is clear how to extend it and at least one example subclass to how it supports an abstraction.

Simply copy only the Java code files you want to be reviewed from your project to your portfolio without renaming them so we can easily compare them to previous versions (you do not have to include other files they depend on as we will not be compiling these versions, just commenting on them).

Your masterpiece code must be in your portfolio's masterpiece03 folder and total between approximately 150-300 lines, including comments.

Design Review

Explain your view of how the program is organized and why it was done that way. This can also be an opportunity for you to describe how you might fix a problem, conceptualize something you thought about but could not figure out how to implement, or present an alternate design if you did not agree with the team or did not have time to actually change the code.

If you think something is good, justify your opinion. If you think something is bad, justify your opinion and suggest how to improve it. Use specific code examples and supporting reasons related to design principles discussed in class or in the readings rather than general terms like "clearly/obviously", "good/sucks", "elegant/ugly", or "like/hate". Note, no design is perfect so including both pros and cons of a design (i.e., its trade-offs) or alternate designs you considered is highly encouraged.

Your analysis must include at least these sections and cite specific code examples from the project and citations from the course readings.