CMPS 374
Dr. Martin
Software Engineering

Outline:  The concepts of Software Engineering.  Stress is placed upon formal models for the design and development of high quality software.  Topics include:  project planning, requirements analysis, system design, program design, program implementation, program testing, system testing, system delivery, and maintenance.  A group project with full documentation is required.

Index
    Reports
    Project Schedule
    Proposal/Justification
    Gantt Charts
    Specification Document
    Design Document
    Test Design Document
    User Manual
    System Reference Guide

Reports
Your team will submit (two copies of) each report. One will be returned with comments and the other will be held for my records. Late reports will be penalized. I expect that each report will be a high-quality finished document. I expect that you will proofread the report to catch and correct any problems. You should do a document walk-through before submission. Please note that the last submission will be final versions of all the reports so keep them consistent with the project.

Reports:

Each will have a cover page with the format (centered both top/bottom and left/right):
 
Project Name
Report Name
Team members’ names
Date
Submitted in partial fulfillment
Of the requirements of
CMPS 374 Software Engineering

 
 
Project Schedule
Document Due Points
Proposal Feb. 27, 1998 20
Specification Mar. 27, 1998 60
Design Apr. 19, 1998 50
Testing Design Apr. 19, 1998 50
User Manual May 1, 1998 50
Syustem Reference May 11, 1998 50
Presentation May 11, 13, 15, 1998 50
Gantt Charts 2/27, 3/13, 4/3, 4/24 20

 
Proposal/Justification

In three to five pages, address the following:

Context of the project:

Overview of what is proposed:  
Feasibility that it can be accomplished within the time available and with the resources available. Include a time frame in terms of a Gantt chart.
Gantt Charts

The Gantt Chart serves to report the current status of a project.  Different books give different rules for these charts and the instructions contained here have been adapted from senior project Gantt charts which were informative and attractive.  While you may choose to use a variation on this style, your chart should be as informative.

Attached are two charts for a single project.  One is for the start of the project and the other reports the progress about half-way through the project.  These were designed using Microsoft Word in Landscape mode and using tab settings for alignment.  The basic chart took me several hours to do but once it was in place, the second was an easy modification of (a copy of) the file.

The proposed work schedule consists of several sections.  Any required document must have at least one section whose endpoint corresponds to the delivery date. Large sections may have logical subsections, even if there is not an explicit product (for example, High-Level Design produces certain of the diagrams for the full Design document).  However, there must be a way to determine when the section is done.

The portion of the chart at the right shows each of these sections with the planned start and end dates.  As the project advances, planning becomes progress.  Any work beyond the current date is designated ‘S’ for Satisfactory.  Work started before schedule is noted with a ‘B’ while work after scheduled time is recorded as ‘A’.  The Gantt chart at the end of the project gives important feedback to help improve estimates on future projects.

For Project Status, finished work is ‘A’ or Satisfactory, even if finished late.  Work not yet scheduled to be started is ‘S’ for Scheduled.  Work that is seriously behind is either ‘C’ for Caution or ‘F’ for Critical, depending on how far behind it is and how much it impacts the rest of the project.  The Percent Complete estimate is an important part of this decision.  On the second chart, a more prudent developer might consider the System Design as also Critical and Implementation as requiring a Caution.  There is no fixed definition but experience has shown that software developers usually overestimate the amount accomplished and underestimate the amount of time needed to finish.

Sample Chart 1:

Name of Project
Your Name
Status Date:  February 2, 1996
Due Date:  May 3, 1996
 
 
ACTIVITY PERCENT STATUS DATE ENDING
COMPLETE 2/09   2/16   2/23   3/08   3/22   4/05   4/19   5/03
Proposal 0 S SSSS
Analysis 0 S     SSSSSSSSSS
Specification 0 S             SSSSSSSSSS
High-Level Design 0 S                    SSSSSSSSSS
System Design 0 S                           SSSSSSSSSS
Implementation 0 S                                 SSSSSSSSSSSSSSSS
Module Testing 0 S                                 SSSSSSSSSSSSSSSS
Integration Testing 0 S                                                  SSSSSSSSSSSSS
                                                                       current date |
Project Status Symbols

   S   Scheduled
   A   Satisfactory
   C   Caution
   F   Critical

Planning/Progress Symbols

   B   Work Before Scheduled Time
   S   Scheduled Activity Time
   A   Work After Scheduled Time

Sample Chart 2:

Name of Project
Your Name
Status Date:  March 8, 1996
Due Date:  May 3, 1996
ACTIVITY PERCENT STATUS DATE ENDING
COMPLETE 2/09   2/16   2/23   3/08   3/22   4/05   4/19   5/03
Proposal 100 S SSSS
Analysis 100 S   BSSSSSSSSSSAA
Specification 90 C             SSSSSSSSSSAAAA
High-Level Design 40 F                    SSSSSSSSSS
System Design 20 C                           SSSSSSSSSS
Implementation 0 S                                 SSSSSSSSSSSSSSSS
Module Testing 0 S                                 SSSSSSSSSSSSSSSS
Integration Testing 0 S                                                  SSSSSSSSSSSSS
                                                                                                  current date |

Project Status Symbols

   S   Scheduled
   A   Satisfactory
   C   Caution
   F   Critical

Planning/Progress Symbols

   B   Work Before Scheduled Time
   S   Scheduled Activity Time
   A   Work After Scheduled Time
 

Specification Document

For this and all subsequent reports, the following format is required:

The Specification document will contain the following chapters:
  Can also include (separate chapters or appendices):  
Design Document

Introduction:

Levels:

At each level of design, provide an Architectural Design, that is, identify the subparts making up the overall structure and their relationships (graph) and document each:

  1. Abstract Specification: for each subpart, provide an abstract specification of the services it provides and the constraints under which it must operate;
  2. Interface Design: for each subpart, define and document its interface with other subparts;

After designing a level, provide a Component Design on each subpart, that is, partition the services provided by a subpart across components in that subpart. This provides an Architectural Design of the subpart and is a new section of the document.

Where needed, provide

  1. Data Structure Design: design in detail and specify the data structures to be used in the implementation; and
  2. Algorithm Design: design in detail and specify the algorithms used to provide the services at the intermediate levels. Object diagrams describing scenarios are appropriate.
The bottom level of the design provides the specifications for the top-level of the implementation.

For this course, we will use the pre-condition/post-condition formalism to describe behaviors.

Real-Time Design: If relevant, give the design that will ensure that the real-time timing constraints will be met.

User Interface Design: Give the design principles to be used. Examples may be given.

Help System Design: describe the structure of the help system and how it is to be accessed (menu, context-sensitive, etc.).
 
 

Test Design
Introduction:
Overview major phases of the testing process from unit testing to system testing. Include validating requirements and acceptance testing.

Testing:

Suggestion: follow the organization of the Design document.
 

User Manual (End-Users)

Introduction:

Describe functionalities and reason for the system.

Introductory manual 

User reference manual
  1. alphabetical listing of services
  2. error messages and error recovery

If there is more than one user class, you may have to write a several-section manual with each giving the above for its audience. It should be very easy for a user to get very specific information to answer a question.

Final Systems Report

Includes complete copies of

 System Maintenance Guide:  Include complete cross-referencing, both backwards and forwards.