CS375: Software Engineering - Design Report (100 Points)

Assignment Goals

The goals of this assignment are:
  1. To prepare a design document that incorporates all collected software requirements in abstracted and independent software modules

Background Reading and References

Please refer to the following readings and examples offering templates to help get you started:

The Assignment

In your design report, include a summary of your project goals and requirements from the prior reports.

Then, for each requirement, specify a software design (either a microservice, or design pattern) that accomplishes that requirement in a modular, abstract, and/or isolated way.

Each method or microservice should include a list of pre- and post-conditions that will serve as your unit tests and acceptance tests to be discussed later in subsequent plans. List each of these methods within your class or microservice design along with a UML diagram describing each. You should specify which requirements keys each method, class, or microservice accomplishes. If you find that a particular code module attempts to accomplish too many requirements, this may be a sign that you should consider breaking this design into smaller components. Provide a schema for any database or cloud data storage.

Finally, for each requirement, show a flowchart that describes the trace through the services and components of your software system that are exercised by that requirement. Ideally, this will be a relatively small trace for each requirement.

Website

Include your design report on the project website.

Submission

In your submission, please include answers to any questions asked on the assignment page in your README file. If you wrote code as part of this assignment, please describe your design, approach, and implementation in your README file as well. Finally, include answers to the following questions:
  • Describe what you did, how you did it, what challenges you encountered, and how you solved them.
  • Please answer any questions found throughout the narrative of this assignment.
  • If collaboration with a buddy was permitted, did you work with a buddy on this assignment? If so, who? If not, do you certify that this submission represents your own original work?
  • Please identify any and all portions of your submission that were not originally written by you (for example, code originally written by your buddy, or anything taken or adapted from a non-classroom resource). It is always OK to use your textbook and instructor notes; however, you are certifying that any portions not designated as coming from an outside person or source are your own original work.
  • Approximately how many hours it took you to finish this assignment (I will not judge you for this at all...I am simply using it to gauge if the assignments are too easy or hard)?
  • Your overall impression of the assignment. Did you love it, hate it, or were you neutral? One word answers are fine, but if you have any suggestions for the future let me know.
  • Using the grading specifications on this page, discuss briefly the grade you would give yourself and why. Discuss each item in the grading specification.
  • Any other concerns that you have. For instance, if you have a bug that you were unable to solve but you made progress, write that here. The more you articulate the problem the more partial credit you will receive (it is fine to leave this blank).

Assignment Rubric

Description Pre-Emerging (< 50%) Beginning (50%) Progressing (85%) Proficient (100%)
Design Document Requirements Reference (25%) The design document is missing references to several requirements The design document incorporates most requirements The design document incporates all requirements The design document incorporates all requirements in a cross-referenced manner
Separation of Concerns (25%) The proposed design does not isolate concerns into software components The proposed design separates requirements into a set of concerns which are mostly captured by a few loosely coupled components The proposed design separates requirements into a set of concerns which are captured by a few loosely coupled components The proposed design separates requirements into a minimal set of concerns which are captured by a few loosely coupled components
Data Schema (25%) The data model does not support the proposed software design The data model supports the proposed software design following a major revision The data model supports the proposed software design except for a few minor suggestions The data model is appropriate for the proposed software design
Use Case Traces (25%) Use cases or user stories are not traced through the software components Some use cases or user stories are traced through the software components to ensure they are adequately designed and isolated Most use cases or user stories are traced through the software components to ensure they are adequately designed and isolated Each use case or user story is traced through the software components to ensure they are adequately designed and isolated

Please refer to the Style Guide for code quality examples and guidelines.