CompSci 308
Spring 2024
Advanced Software Design and Implementation

Weekly Journal : OOGASalad Project Analysis

Mindfulness in the essence of engagement, [without it we are] frequently in error, but rarely in doubt. — Ellen Langer

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.

Submitting Your Work

Individually, complete the following on the master branch of your portfolio_NETID repository:

Specifications

Example Game

Create your own "interesting" game variation and copy its associated data file(s) (no Java files should be changed) to your individual portfolio_NETID repository. Ideally, you will be able to use your project's Authoring Environment to generate the data files rather than editing them directly. The data file(s) do not need to represent a complete or fun/sensical game, but could just highlight something specific.

Record a 1-2 minute video of playing your game (the video can cover any part of the game, not just beginning) and provide a voice over on the video to describe what is happening in the code from a design perspective. The easiest way to make a video of your running project is to start a Zoom call, share your screen, start recording, and talk over your demo. There are also many free screen capture tools available or free trials of commercial tools.

Submit both the video and data files.

Code Masterpiece

Choose class(es) you primarily wrote that you feel demonstrate good design for us to review in detail.

The code should represent a 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.

Copy only the Java code files you want reviewed from your project to your individual portfolio_NETID repository 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 refactored masterpiece code must total between approximately 200-400 lines, including comments.

Design Review

Explain your view of how your program is organized and why it was done that way. This is an opportunity 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 refactor the code after learning something new, or any other learning you want to tell us about that the code does not convey.

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 (i.e., its trade-offs) or alternate designs you considered is highly encouraged (often designs cannot be seen as better or worse than another, but rather as a specific set of trade-offs that prioritize different goals).

Your analysis must cite specific code examples from the project and citations from the course readings.