Programming Assignment Documentation


Each of the four programming assignments for this class will be presented in the form of a Statement of Work (SOW) document posted on the web page. This is an attempt to make the programming assignments a realistic parallel to professional software engineering experiences.

When each assignment is posted you will have from one to three weeks to complete the first three steps of the software engineering process, i.e. Requirements Specification, Analysis, and Design.

In the first step, Requirements Specification, you will take the SOW and carefully study each requirement to ensure that you fully understand what the program is supposed to do. You should read the Statement of Work at least three times. Then ask yourself "What does the customer want?"

When you understand the requirements you are ready to begin the Analysis step. In this step you determine exactly what you will need to do to solve the problem and meet all the requirements given in the Statement of Work. This may involve decisions on what data is needed, how you might organize the data into structures and classes, what functionality each class and the program as a whole will need, etc.

Finally, when you fully understand the assignment you are ready to begin the design. In the Design step you develop an outline of how the program will be organized. This includes what classes and data structures will be needed, what functions will be included, what the inputs and outputs are to be for each function, AND how you will test each function to be sure it works as it should.

For each programming assignment there will be two documents that you will turn in. The first is a Software Design Document which include details of the design for the program. Details of the format of this document and an example are given below.

The second document you will turn in is a Software Test Plan. This is a detailed description of the tests you will perform on the various functions of the program and the program as a whole to ensure that each function works correctly (Unit Testing), all the functions work together correctly (Integration Testing) and that the program meets all the requirements (Acceptance Testing). Details of the format of this document and an example are also given below.

Remember you must include the following at the top of each source file (.h and .cpp).
/*******************************************************************
*   Source Code File Name
*   Your Name
*   Programming Assignment number and name
*   
*   This program is entirely my own work
*******************************************************************/



Software Design Document

The format of the Software Design Document given here is a simplified version of the SDD format used by many software companies. The Software Design Document will consist of:


Software Test Plan

The format of the Software Test Plan given here is a simplified version of the STP format used by many software companies. The Software Test Plan will consist of:


Below is a simple SOW for a program and the documentation prepared for this program. If you are interested the linked list class used in this example is implemented in one of the examples listed in the code vault as Class Demo: ToDoList Another sorted list implemented as a linked structure in C++.


Statement of Work
Programming Assignment X


1.0 Overview
  The Honeydew Inc. software company is planning on expanding its line of utility software designed for the average computer user in their home. This software, tentatively entitled ToDoList, shall provide users with the ability to create and edit lists of tasks and errands that need to be done.
2.0 Requirements
  The student shall define, develop, document, prototype, test, and modify as required the software system.
2.1. The software shall allow the user to create a list of tasks ordered by an assigned priority.
2.2. The software shall allow the user to add items to the list and remove items from the list.
2.3. The software shall allow the user to assign a priority to each task.
2.4. The software shall allow the user to fetch the next task from the list.
2.5. The software shall allow the user to display, on screen, a list of all tasks.
3.0 Deliverables
  These products shall be delivered in print and/or electronically as specified below to the instructor.
3.1 Software Design Document -- The student shall provide a printed software development plan for instructor approval NLT 14 days after program assignment.
3.2 Software Test Plan -- The student shall provide a printed test plan for complete verification and validation of the software for instructor approval NLT 14 days after program assignment.
3.3 Executable Program -- The student shall provide a fully tested executable program delivered on 3.5 inch disk. The program shall be compiled using the Microsoft Visual C++ compiler, Version 6.0 or or later and shall run on a PC running either Windows NT 4.0 or later or Windows 95/98. The executable program shall be delivered NLT 21 days after program assignment.
3.4 Source Code -- The student shall provide printed copies of all source code used in the compilation of the executable program and electronic copies of the source code on 3.5 inch disk. The source code listing shall be delivered NLT 21 days after program assignment.
4.0 Period of Performance
  The period of performance of this assignment is 21 days from the date of assignment. Under no circumstances will any deliverables be accepted after 28 days from the date of assignment.



Using this statement of work the following Software Design Document and Software Test Plan were developed.


Sample title page for the Software Design Document


Software Design Document

for

ToDo List

Programming Assignment X
September 18, 2010



Prepared By
Justin A. Student
jstudent@cs.uah.edu








Prepared For
Dr. Matthew Beard, Instructor
CS 221, Data Structures in C++
Computer Science Department
University of Alabama in Huntsville



Page Break

Sample table of contents page for the SDD





Table of Contents

1.0 System Overview............................1
2.0 Referenced Documents.......................1
3.0 Architectural Design.......................1
    3.1 Concept of Execution...................1
    3.2 Abstract Data Type.....................1
    3.3 Code Outline...........................2
4.0 Detailed Design............................2
    4.1 Source File: main.cpp..................2
    4.2 Source File: ToDoList.cpp..............3


Appendices

A. Sample Screen Display......................7





Page Break

Sample SDD contents


Software Design Document

ToDo List


1.0 System Overview
The purpose of this program is to provide a simple, easy to use, program to enable the average computer to create lists of daily tasks, arrange those tasks in order of their priority, and remove tasks from the list when they have been accomplished.

2.0 Referenced Documents


3.0 Architectural Design
1

4.0 Detailed Design

2



6


Appendix A


Sample Main Screen Display




____________________________________________________________________

H O N E Y   D E W   L I S T
Things I gotta do today.
____________________________________________________________________

What would you like to do?

1. Start a new task list.

2. Add a task to the current list.

3. Remove a task from the current list.

4. Get the next task in the list.

5. Quit.

Enter the number of your choice then press [Enter]...
___________________________________________________________________





7







The following is a sample Software Test Plan for the ToDoList project.


Sample title page for the STP


Software Test Plan

for

ToDo List

Programming Assignment X
September 18, 2010



Prepared By
Justin A. Student
jstudent@cs.uah.edu








Prepared For
Dr. Matthew Beard, Instructor
CS 221, Data Structures in C++
Computer Science Department
University of Alabama in Huntsville




Sample table of contents page for the STP





Table of Contents

1.0 System Overview............................1
2.0 Referenced Documents.......................1
3.0 Test Procedures............................1


Appendices

A. Test Plan Forms............................8











Sample STP contents


Software Test Plan

ToDo List


1.0 System Overview
The purpose of this program is to provide a simple, easy to use, program to enable the average computer user to create lists of daily tasks, arrange those tasks in order of their priority, fetch tasks from the list, and remove tasks from the list when they have been completed.

2.0 Referenced Documents
3.0 Test Procedures
The following tests will be performed on the software before its release.
   3.1 Source File: ProgXMain.cpp
       3.1.1 Function: main()
   3.2 Source File: ToDoList.h and ToDoList.cpp
       3.2.1 Function: PrintList()


1


       3.2.2 Function: ClearList()
       3.2.3 Function: Insert()


2


       3.2.4 Function: Delete()
       3.2.5 Function: GetNextTask()


3


Appendix A

Test Forms

Test 1: PrintList()

Function Tested Inputs Expected Output Actual Output Pass/Fail
main
User selects option 1
User selects option 2
User selects option 3
User selects option 4
User selects option 5
Printed on screen:
New list instantiated.
In ToDoList.insert
In ToDoList.delete
In ToDoList.getNextTask
Quitting application
   
PrintList Node 1: 1, Task 1
Node 2: 2, Task 2
Node 3: 3, Task 3
Printed on screen
------------------
Priority Task
------------------
1           Task 1
2           Task 2
3           Task 3
   
ClearList List created in previous test.
Printed on screen
------------------
Priority Task
------------------
List is empty.
   
Insert Insert nodes in this order:
Node 1: 2, Task 2
Node 2: 1, Task 1
Node 3: 4, Task 4
Node 4: 3, Task 3
Printed on screen:
After first insert:
2           Task 2
After second insert:
1           Task 1
2           Task 2
After third insert:
1           Task 1
2           Task 2
4           Task 4
After fourth insert:
1           Task 1
2           Task 2
3           Task 3
4           Task 4
   


4

Function Tested Inputs Expected Output Actual Output Pass/Fail
Delete List created in previous test.
Pass priorities in this order:
6, 2, 1, 4, 3, 6
Printed on screen:
When attempting first delete:
Task with priority 6 not found
After second delete and call to PrintList:
1           Task 1
3           Task 3
4           Task 4
After third delete and call to PrintList:
3           Task 3
4           Task 4
After fourth delete and call to PrintList:
3           Task 3
After fifth delete and call to PrintList:
List is empty
When attempting sixth delete:
List is empty
   
GetNextTask List created as in test 3.3.
Call function for each node in list.
Printed on screen:
After first call:
Task 1
After second call:
Task 2
After third call:
Task 3
After fourth call:
Task 4
After fifth call:
List is empty
   


5