CompSci 308
Spring 2019
Advanced Software Design and Implementation

Cell Society : Design Document

Design makes ideas tangible so that they can be understood and evaluated before committing them to reality. — Christina Wodtke

This part of the project is intended to get you to try to design a program without specifying about exactly how it will be implemented. In other words, you should explore a design in enough detail to convincingly describe the primary classes (and any significant supporting classes you think are necessary) that will work together to provide the project's functionality without writing any implementation code.

Specification

In a markdown formatted file, doc/DESIGN_PLAN.md, describe the primary classes (in packages if possible) you envision are needed to read in and represent a CA model and its simulation. Focus your design on how to represent a model in a general way and specifically on what behavior (i.e., methods) your classes would have. If describing an inheritance hierarchy, clearly identify what behaviors the classes have in common, the superclass, and what are different, the subclasses, rather than the instance variables.

In your design document, include the following sections:

Use Cases

The following scenarios are provided to help test the completeness and flexibility of your design. By writing the steps needed to complete each case below you will be able to see how effectively your design handles these scenarios and others will be able to better understand how deeply you have considered the basic issues.