[[fswiki|top]] = Software Project Template = '''edit as needed''' <> == 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 ==