[[fswiki|top]]

= Software Project Template =

'''edit as needed'''

<<TableOfContents>>

== Introduction ==
This document describes the high level design of the software.

== Use Case Analysis ==
A ‘use case analysis’ merely addresses the most obvious of questions: who needs the software, and what are they going to do with it.

=== Actors (Users) ===
In UML terminology, the persons (or software ‘agents’) external to a software component are called the ‘actors’.

==== Research ====

=== Scenarios (Use Cases) ===
These establish the framework for test cases.  They also bring out the ‘vocabulary’ of the system.  This vocabulary is defined in the ‘Terms’ section following these scenarios.

==== Use Case #1 ====

==== Use Case #2 ====

==== Use Case #3 ====

==== Use Case #4 ====

=== Terms ===
The following is a list of some of the vocabulary used in the preceding scenarios, plus terms that are common across the system in which the software is used.

== Requirements ==

=== General Requirements ===

=== Specific Requirements ===

== Implementation ==

=== API ===

=== System Architecture and Primary Components ===

=== Classes ===

=== Collaboration and Sequence Diagrams ===
UML diagrams describing the time-course of the objects composing the executable.

=== Properties ===
Here are listed the configurable properties of the executable.  These can be configurables read from a configuration file, or configurables hard-coded into the source code.

== Test Plan ==
=== Introduction ===
Tests should cover the following categories of testing.
==== Functional ====
This type of test ascertains whether the software executes its basic functionality under optimal conditions.
==== Boundary ====
This type of test determines the breaking points of the software, and whether the software gracefully handles input near and beyond these boundaries.
==== Stability ====
This type of test determines long-term behavior of the software: whether is has a memory leak, or prone to crashes which are not repeatable in any single run of any of the other tests.
==== Performance ====
These tests produce benchmarks on the performance of the software.

== References ==