CompSci 307
Spring 2019
Software Design and Implementation

Data : Analysis

Now that the project has been turned in, take a few hours to relax and reflect, then analyze your experience. It is important for you to review your past performance, analyzing its positive and negative aspects to maximize what you learn from this experience. The goal of this retrospective is to draw meaningful conclusions to help you learn from your past successes and failures. They are an integral part of a project because, if taken seriously, they can be an extremely productive method of improving your development practices.

Submission

Complete the following deliverables in the appropriate places as noted for each:

Specifications

Your analysis is your opportunity to demonstrate your 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. If it is also an honest and thoughtful reflection, it can also help you identify specific actions you can do to improve future projects.

Personal Project Report

This Google form represents your view of the project's planning and progress. Analyze your plan and how the project's outcome could be improved. Describe specific, important, events during the project's time line to justify your comments rather than general terms like "always late", "bad code", etc.

Design Review

This written report represents your personal view of how your program is organized and why it was done that way. It can be a chance for you to describe how you might fix a problem or refactor the design if you 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 reasons related to principles discussed in class or in the readings rather than general terms like "clearly/obviously", "good/sucks", "elegant/ugly", or "like/hate". Note, since no design is perfect, including both pros and cons of a design (i.e., its trade-offs) or alternate designs you considered is highly encouraged.

Code Review

Meet with one of the course staff to get specific feedback on a part of your project that is small enough to be separable, but functionally significant enough to have some interesting design element. It may be several classes that work together, e.g., a few classes that work together or a superclass and its sub-classes, but it should be no more than 200 lines of code to review. At this meeting, be prepared to describe this code's purpose and why you think it is well designed (or not if you want detailed feedback on why not).

Sign up online for a time to meet with the course staff — this must be done by the end of the day January 30.