This project must be done in a group of two
As programmers it is tempting for us to get our hands dirty with code immediately after receiving the specs. In any complex software development, there are many moving parts and pieces that can quickly turn out project into spaghetti code. It is imperative that before we open vim we take a step back, plan out the code we are going to write, and create a design to follow. One tool software engineers use for this is Unified Modeling Language (UML) which help visualize our project’s architecture. In this assignment you will create a design document to map out your first coding assignment, Assignment 2. This will include a simple UML diagram to represent your components and their dependencies.o
Note: All assignments must be done with exactly one partner
Your assignment is to write a design document that you will use for reference when developing your Assignment 2 submission. It’s purpose is as an exercise to get you to start designing before you start coding. Like any good agile method, what you write in the design document is a starting point for your design, not a road map that you must rigidly follow (because that would be waterfall development, and this is not a government project). You should create a document with the following sections:
- Title Page: including the title “Assignment 1: Design”, the date, the quarter and year, and the authors names
- Introduction: Give a brief overview of your design
- Diagram: This will be the UML diagram for your system, and should show all classes you plan on developing. This diagram can take up multiple pages if necessary.
- Classes/Class Groups: descriptions of each class/class group that you plan on developing, this can be as simple as a description of what each class accomplishes and how, or a pseudo code level class definition. A class group would be a group of classes that all inherit from a single base class (composite classes are an example). For class group give a description of the base class, as well as the subtle differences between the child classes. Make sure to describe any key design choices, such as why you chose certain containers for key data members, why a class needs to pointer member to another class, or how a key function will generally be written
- Coding Strategy: how you and your partner plan to break up the work, who will be in charge of which segments and how you will integrate the segments together
- Roadblocks: issues that you think will arise during development and what strategy you will use to overcome them
When you create your design document, do not think only about the current assignment. Think about how you would also extend the assignment to have new functionality (an important exercise in software construction, as new functionality is almost always necessary).
Please use some drawing program to create your UML diagram. UML diagrams that are drawn by hand and scanned/photographed and added to your design document will not be allowed. Programs such as GIMP, GraphViz, or even Google Docs should be capable of creating these diagrams.
You will be setting up your “Assignment” github repo. All assignments build on each other so you will have only one repo that will contain all of your code along with a wiki about the project.
- Fork the “Assignment” github repo
- Clone your forked repo
- Create a ‘docs’ directory in your repo
- Add your completed design document pdf to ‘docs’ folder
- Add the new file as a tracked file in git
- Commit and push your repo (Remember to use the github commit style guide for your commit message!) Additionally, you will be setting up a ‘Project’ on github where you will track your progress in a Kanban style board.
- On your github repo, click on ‘Projects’
- Click on ‘New Project’ in the upper right hand corner
- Name the project ‘Assn 2 -- Basic Command Shell’ (there will be a project for each assignment)
- Add columns for ‘Backlog’, ‘In Progress’ and ‘To Deploy’
- In the upper right of the ‘Backlog’ column click the ‘+’ sign to add a note
- Write an epic for assignment 2 (look at the specs on ilearn)
Submit your design document as a single PDF to the submission link in iLearn. Both people in your group need to submit the same document. Don’t forget to set up your git repo also!
Your documents will be graded using the following breakdown
Points | Descriptions |
---|---|
40 | UML Diagram |
30 | Class Descriptions |
15 | All Other Sections |
10 | Structure |
5 | Assignment 2 Epic |
100 | Total |