CompSci 307
Fall 2021
Software Design and Implementation

Lab Exercise: Project Planning

This exercise is intended for you to start designing your project without worrying about how it will be implemented. Thus, without implementing any functionality, determine a set of objects and abstractions you think represent elements in the problem and can work together to implement a solution.

Submission

Show your progress to a UTA during lab when you think you are finished to get immediate feedback and then push the initial version of your design to your shared team repository.

As a team, complete the following activities:

Discussion

Each person should examine one of the following Cellular Automata and describe it to the rest of the team, then discuss collectively what might be common and what might vary across a typical simulation:

Consider the following questions as you discuss the basic design elements of the Simulation project. Write a high-level description of the different parts of the project and how they can interact without worrying about any implementation details.

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

Now that your team has thought about the problem generally, refine your discussion into a Object-Oriented design by identifying specific abstractions and their behaviors instead of implementation issues. A picture may be helpful to show how your parts are related to and dependent on each other.

To make things more interesting, pair up with another team and try to implement the Use Cases using each other's CRC Cards!