Developing the Course Site Generator App

HW 3 - Software Design Description

A Software Design Description document describes how a software system should be built, specifying the packages, classes, methods, variables, relationships, and interactions necessary to meet the needs of the Spec. The IEEE can help us out with a standard SDD format, although we'll stray a bit from their recommendation. In this assignment, you will produce your own SDD using an approximation of the IEEE Standard for Information Technology - Systems Design - Software Design Descriptions (IEEE 1016-2009) format. In the IEEE document, they propose the following SDD Outline, which in this example I've modified to be:

  1. Introduction
    1. Purpose
    2. Scope
    3. Definitions, acronyms, and abbreviations
    4. References
    5. Overview
  2. Package-Level Design Viewpoint
    1. Application overview
    2. Java API Usage
    3. Java API Usage Descriptions
  3. Class-Level Design Viewpoint
  4. Method-Level Design Viewpoint
  5. File Structure and Formats
  6. Supporting Information

The Course Site Generator - For your final project you'll be creating the Course Site Generator application, which will be an extension of what we've been doing in HWs 1 & 2. The program that we will be designing and constructing would be used to help a course instructor build and update a course Web site like the one we use for our course.

The Spec - You're hired! Yes, you. Debugging Enterprises is hiring you to help with our newest project. It will be your job to make the Course Site Generator application. Recall that on any development project, the first priority is to define the problem. Developers need to know what it is they are to develop. This needs to be defined in great detail via a Software Requirements Specification, or Spec. for short. Well since I'm hiring you, I've already designed the system to be developed, which is summarized in the following SRS:

Note that it will be your job to guide this project through the design, implementation, and testing stages to completion. We'll divide up the remaining HWs as follows:

Your Design - Now that you know what the project requirements are you need to first design a solution. For this assignment create a Software Design Document that specifies a design for creating such a Java application. Note that I have provided you with a sample SDD to help you see what such a document might look like. You are welcome to use it as the starting point for your own document. Note that while you should use my template, you may make modifications to the format as you see fit, again, this is important to accommodate descriptions of the your file formats. You may take any content you like from this document or from the Course Site Generator SRS. Note that it should contain all the same SDD doc components, package, class, and method viewpoints, which really means you must produce UML Class & Sequence Diagrams as well as file format descriptions.

So note again that your report must contain UML Class and Sequence diagrams for your code as well as descriptions of all file formats and structures. So in the last section, where file formats are to be specified, your design must specify in detail:

Perhaps you'll have the following questions:

What Modeling tool should I use? - You may use any tool you like to create the UML diagrams that you put into your SDD. One possible tool (which I used), is Violet UML, which is free to download. This tool can make UML Class and Sequence diagrams, and has a function for exporting to images that you may easily add to your document.

Do I need Getters and Setters? - Get and Set methods end up being just noise in UML class diagrams so don't include them.

Do I need to provide designs of PropertiesManager or other frameworks we've used? If you plan on using these frameworks as-is, then no. You may simply refer to them and their classes as black boxes. You must, of course, include any classes in those frameworks you use in your own classes, but you need not provide a full specification if you are not changing anything.

Should my design be one big giant diagram? Absolutely not. Break it up into sensible pieces that can be viewed conveniently. The point here is for you to plan your assault, not to make an unruly mess. Use my Zombiquarium design approach as an indication of how I expect your document to look (except for the getters and setters).

NOTE: Remember, students must work independently, copying each others work is not permitted.


Handin Instructions

Submit your completed design document via Blackboard.

Grading

This assignment will be graded by the instructor and will based on how complete and detailed your document is. Does it plan for all the necessary components? Does it provide adequate detail regarding how the software is to be constructed?