Overview
-------- 
This document describes the CSC 405 project requirements from 
a different perspective - the CSC 405 students and professor.
There are two sets of requirements - from two distinct points 
of view: 
 1. As the professor for CSc 405/406. 
2. As the CSC 405/406 development manager who is about to 
undertake the management of 240 (mostly) inexperienced developers. 
The professor's requirements:
a. A traceable SRS that is ready to go, with minimum effort, when
the class begins.
b. A project that can feasibly be completed (prototype quality) and 
delivered by the end of winter quarter 2003. Prototype quality is 
defined in my coding
standards. 
The development manager's requirements:
c. An SRS that contains the following core 
material. In my opinion, it isn't possible to complete a 
large successful project unless all of the following are 
available early in the life cycle. (i.e. at the start of 
405) 
 A set of use cases described in English AND in some graphical 
(e.g. UML) or formal (e.g. RSL) way. 
 For the non-trivial use cases, a graphical or formal language 
depiction of the business logic. Some typical and acceptable 
methods are (listed in no particular order): 
 Z or RSL 
Nassi-Schneiderman diagrams 
Petri net diagram 
State machine diagrams (for appropriate domains) 
UML sequence diagrams 
Pseudo-code 
Data flow diagrams 
Note: Dr. Fisher would argue there is no such thing as a trivial use case; you can read his argument in his RSL tutorial.
 A data dictionary written WITHOUT CIRCULAR LANGUAGE at a 
language level that the CSC 205 students can understand. 
The data dictionary would also show the major relationships 
between the data elements. Those relationships could be 
defined in one of several acceptable ways: (RSL, ER diagrams, 
formal language defined in Wiegers, relational algebra, ...) 
Note: this was the biggest problem in the previous CSC 405; 
the data dictionary was entirely circular and there 
were few described element relationships.
 A draft set of "real" non-functional requirements written in
measurable 
terms. The most important are likely: 
 Accuracy 
Maintainability 
Performance 
Reliability 
Supportability (specific software quality requirements) 
Installability 
Testability 
??? 
 For GUIs, a high-quality horizontal prototype or set of 
horizonal story boards. 
 For textual UIs, a draft quality user manual or BNF definition 
of the user interface. 
d. Software Architecture 
A first-cut at the software architecture for the project, defined 
in some graphical or formal way. (e.g. UML diagrams, ...)