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, ...)