CompSci 307
Fall 2022
Software Design and Implementation

Exercise: Project Planning

This exercise is intended for you to start designing your project without worrying about how it will be implemented. Begin to discuss the major design issues and possible abstractions that can work together collaboratively before implementing any functionality.

As a team, complete the following activities:

Add notes and summarize important points from your discussion in the Markdown file LAB_DESIGN.md file to submit your work.

Discussion

Each person should examine one Cellular Automata simulation that needs to be implemented in detail and describe it to the rest of the team, then discuss collectively the ways in which they are common and how they vary across a typical simulation.

Consider the following questions as you discuss the basic design elements of the project:

Think abstractly about what represents the core Model objects needed to support a grid of cells. Remember to keep the following in mind:

Before deciding on any specific classes or implementations, explore trade-offs between multiple designs and summarize your conclusions. Importantly, envision at least two different implementations to make sure your design does not reveal the specifics of either one.

Design Principles

All too often code is written that does not demonstrate the designers intentions well or that is hard to change, fragile, and non-reusable. Design Principles can help you manage dependencies well so that the code remains flexible, robust, and reusable, which should help make your design goals clearly visible in your code.

Designing your Classes

Now that your team has thought about the problem generally, refine your discussion into an Object-Oriented design by identifying specific abstractions and their behaviors (i.e., methods) instead of implementation details (i.e., instance variables, data structures, file formats, etc.).

To make things more interesting, pair up with another team and try to implement the Use Cases using each other's CRC Cards! Or show your progress to a UTA when you think you are finished to get immediate feedback.