For this phase of the project you need to design and sketch out the core logic of your application. The core logic consists of your application model (or
the classes that belong in the "model" layer of the Model-View-Controller design pattern) and application use cases.
During class last Friday you worked in your project teams to come up with the major use cases of your application and determine
what classes you will need to write. I had also asked you to write sketches of these classes with method stubs. Use these class sketches to demonstrate how your classes
will interact to support the use cases of your application. To do this, you will need to create a Driver.java
file in the root directory of your team git repo.
This file should demonstrate at least three different use cases of your application. The use cases need to be clearly labelled in the comments of the
Driver
code. Note, that you may use sub-directories within your team git repos to organize your code, just make sure to place Driver.java in the
root directory, to make it easy for me to find it.
Since the goal of this project phase is to come up with the design of the core logic, your use cases do not need to involve a Graphical User Interface (we will connect
the Graphical User Interface you created as a prototype to the core logic in a later phase of the project). If you need
to interact with the user, you can either hard code the user's choice for now or use the terminal to read user's input. You can also display the state of the application
to the terminal, if needed. The goal is to ensure that the core (or model
) classes and methods you have designed are sufficient to support
the functional requirements of your application.
In addition to providing the sketches of your core logic as code, you will need to document your design in a UML class diagram. The UML class diagram must show the core classes of your application and their dependencies. Each class in the diagram must include public methods of the class (with parameters and return type) and class dependencies (inheritance, composition, association) or (is-a, has-a, and uses-a relationships). I recommend using Lucidchart, a free web-based diagraming tool.
To ensure that your design sufficiently addresses all requirements, review the "Functional Requirements" section of your requirements document and find a corresponding class or a set of classes that supports each functional requirement. Document your review in the form of a "traceability matrix": the rows of the matrix are the labels of your functional requirements, the columns of the matrix are your classes. Place and X in the row A, column B, if the class in column B supports the requirement in row A.
Submit the code that sketches out the core logic of your application in your team git repo. Make sure to place Driver.java
in the root
directory of your repo. All code used by Driver.java
must compile and Driver.java
must contain a main
method.
Submit the pdf of your UML class diagram in the design
directory of your git repo.
Create a "Design Traceability Matrix" Google Sheets document in your team's Google Drive folder to submit the traceability matrix of your design.
Each team member must email me a filled out copy of the Peer Evaluation Form. Title your email: CSCI 2300 team ___ Phase 2 Evaluation. (Fill in the blank with your team number).
I will use the list of questions below. Each question can score you from 0 to 3 points: No - 0, Somewhat - 1 or 2, Yes - 3. The sum of these points will be your grade for this homework.