Project Deliverables and Work Products

[SRS] [UI Prototype] [Feasibility Prototype]  [Software Design] [Implementation] [Testing]


System Requirements Specification (SRS)

SRS document format
SRS Quality Assurance CheckList
 
Essential Resources
Alternative Resources
  • Introduction to Requirements lecture 
  • When Telepathy Won't Do
  • Use Case HTML Template
  • Practical Guide to Use Cases
  • Use Case Tips
  • Data Dictionary notation

  • Examples:
    Audio Tape Calculator
    Distributed Hangman
  • Basic Requirements Gathering Process
  • Guide to Informal Analysis
  • Writing Effective Natural Language Requirements Specifications
  • State Transition Diagrams  Summary Tutorial Examples
  • Data Flow Diagram Resources
  • ER diagrams     Example
  • CRC cards Tutorial
  • Jotto specification
  • Examples of Poor Requirements Statements (humor)
  • Guys: would you reply to this personal ad?
  • If Architects Had to Work Like Programmers (humor)
  • The curse of legacy systems (humor)
  • The Rope Swing Parable (humor)


  • User Interface Prototype

    User Interface Development Process
    User Interface Prototype Document Format
    User Interface Prototype Quality Assurance criteria
     
    Essential Resources
    Alternative Resources
  • Lecture notes: Prototypes
  • UI Design Criteria
  • Ask Tog: First Principles of UI Design
  • Jakob Nielsen's Heuristics for UI Evaluation
  • Writing good error messages
  • User Interface Hall of Shame
  • Honey, I Forgot the Users!
  • Cognitive Psychology Principles
  • Data Input Verification
  • Review of The Trouble with Computers
  • Why free software has poor usability
  • Paper Prototyping HOWTO video - DVD 005.437 P197P2 2003

  • User Manual

    Essential Resources
    Alternative Resources
  • User Guide Tutorial
  • How to Publish a Great User Manual
  • Example of Manual Style


    Feasibility Prototype

    This is a functioning prototype which you build to demonstrate the technical feasibility of your intended product.  For this course, its purpose is to demonstrate that your team has the technical know-how to build the product.  The actual features to be demonstrated will be negotiated with the instructor.  In general, you will probably be asked to write a quick skeleton program which demonstrates the most technically challenging aspects of your intended solution.  For example, if your application is a heavy GUI application and you have no experience with Java Swing classes, your proof of concept would probably demonstrate the key Swing widgets you will need in your UI.  Another example, if your application is to be internationalized for three different countries then your proof of concept would demonstrate the use of Java Resource Bundles.

    The feasibility prototype (aka "proof of concept") is a crucial milestone.  If you can't convince upper management that you can solve all the technical problems in your intended solution, your project probably won't be funded. (You will be assigned a zero on the remaining work products and your team re-assigned to other projects).

    The actual deliverable format of the proof of concept is negotiated with the instructor. In most cases you will simply demo your program in lab.



    "Extended" Prototype

    McConnell defines "extended" prototype on page 120-121 of  Software Project Survival Guide.   Create a functioning prototype that demonstrates every functional and behavioral aspect of the intended software.  In essence, combine your feasibility prototype and your user interface prototype.  The goal is to create something to demonstrate to the customer that will appear to be a finished, fully operational system without doing any actual implementation. The emphasis is still on "quick and dirty" development.  In some cases, the interaction may be completely scripted. You may use "wizard of oz" or other tricks to simulate actual implementation.

    Not every team will be required to produce an extended prototype.  This requirement will be negotiated with the instructor. 


    Functional Prototype

    A functional prototype is a working version of the software that exhibits all major functional requirements including the GUI. It does not have to meet the non-functional requirements: reliability, maintainability, etc. So the code doesn't have to meet the coding standard. There doesn't have to be any design - all the code could be in one monolithic class. It doesn't have to handle exceptional conditions. Some minor requirements may be stubbed out. The goal is to produce working software that can be demonstrated to the customer (but that you wouldn't want the customer to actually use because it's too fragile).

    High Level Design

    High Level Design document format
    Design Quality Assurance Checklist
     
    Essential Resources
    Alternative Resources
  • Dr. Dalbey's Design lecture
  • Object Oriented Design: How-To
  • UML notation for Class Diagrams
  • Class Diagrams - one page summary

  • Intro to UML
  • UML Quick Reference
  • Intro to Polymorphism and Design Patterns
  • Creating a hybrid design - lecture notes
  • Design by Contract tutorial  Programming with Asserts in Java
  • Design Techniques in java
  • Critique of Inheritance
  • Which Software Architecture?
  • Design and GUI tools

    Detailed Design

    Detailed Design (a.k.a. "Method Designs") document format
    Detailed Design Quality Assurance Checklist
     
    Essential Resources
    Alternative Resources
  • Why Pseudocode?
  • Pseudocode Standard
  • Intro to Sequence Diagrams
  • How to draw Sequence Diagrams (.pdf)
  • Practical Guide to Sequence Diagrams

  • Implementation

    CPE 308 Standards
    Implementation Resources
    Implementation Tools Personal Software Process (PSP) Forms and Procedures Java Training Java Resources IDE's Help and Install Tools


    Software Testing (CPE 309)

    CPE 309 Procedures
    Testing Resources
    Test Tools
  • Automated Swing GUI testing with Dr. Dalbey's Swing Robot
  • Abbot: automated GUI testing
  • Thin GUI testing strategy
  • Emma coverage tester.  (Here's a Emma walkthrough).
  • Open Source Testing Tools
  • Test Resource Center (lots of test tools!)
  • Windows Application AutoMate playback tool
  • WinDiff (Microsoft Visual Studio Tool) is a file comparator for windows that is useful for comparing test case output against the test oracle.




  • CPE 308 Home