Software Project Documentation
Software Project Documentation
Software Project Documentation
NUIM-CS-TR2002-06
Abstract
This technical report provides detailed guidelines for the contents of a minimal
set of software development documents, tailored for use by students in software
engineering projects, and based on IEEE standards, as described in technical report
NUIM-CS-TR2002-05 [3]. It is intended to be read along with that report, and used
to assist in determining the exact contents of each section.
1 Background
Many engineering university courses fail to address the issue of documentation, and
students struggle when they are expected to produce professional documentation in
the workplace [2]. If documentation best-practice is not covered as part of the
curriculum, then it is difficult to subsequently train students in industry to expected
standards [12]. This is the motivation for producing these guidelines, which provide
the essential basis for an understanding of documentation best practice (this underlies
many of the important skills of a software engineer, as described, for example, in
[15]).
These guidelines do not advocate the use of any particular development process, and
do not address the issue of assessment. They emphasise particular issues that are most
pertinent to best practice in industry. Software projects are a critical element of a
software engineer’s education [14] – these guidelines also encourage the students to
reflect on their project work [16].
These guidelines are based on the IEEE standards for software engineering
documentation [4][5][6][7][8][9][10][11]. These have been significantly refined based
on the authors’ experience (both in industry and in teaching software engineering),
and other educational documentation standards – such as the University of South-
western Louisiana [13], and the University of Texas at Austin which has particularly
well developed standards [1]. The refinement has three purposes:
1
Once students have gained experience, then they will be in a position to make good
use of the full IEEE standards.
Section Description
Section 2 Sections Common to all documents
Section 3 Software Project Management Plan (SPMS)
Section 4 Software Requirements Specifications (SRS)
Section 5 Software Design Description (SDD)
Section 6 System Test Document (STD)
The following paragraphs describe sections that are common to all documents. The
Cover Page and Revisions Page come at the beginning of the document, whereas the
Additional Material is included at the end.
2
Each document may contain additional material. Some of this is specified for each
document, in the form of appendices, but the following apply to each of the 4
documents:
2.3.1. ADDITIONAL ISSUES: space for any additional issues you feel are
necessary for the document
2.3.3. RFERENCES: the exact format is not critical, but it must be possible to easily
find each reference you cite in your document in this section, and to then find
the actual document. Refer to a paper in a well-known journal to get examples
– and stick to a consistent style. You must specify:
Ø the names of the authors
Ø for a journal paper: the name of the paper, the name of the journal, the
month or volume or issues of the journal, the publisher and year of the
journal
Ø for a conference paper: the name of the paper, the name of the conference,
the date of the conference, the location of the conference, the publisher
and year and publication of the conference proceedings
Ø for a book: the name of the book, the edition of the book, the publisher and
year of publication.
It is good practice to include the ISBN or ISSN (if known). Web-references
should be avoided if possible – refer to the document contained in the web
page if you can. If you must use web references, try to use a reference from an
institutional web site (such as: a library, ACM, IEEE, W3C, IETF), rather
than a company-specific web site (that may well change or disappear).
For example:
C. Brammer and N. Ervin, “Bridging the Gap: A Case Study of
Engineering Students, Teachers, and Practitioners”, in
Proceedings of the 1999 Professional Communication
Conference, Pages: 251-255, IEEE, 1999
2.3.4. APPENDICES: additional appendices are where you can place any other
additional material.
2.4 TERMINOLOGY
3
3 Software Project Management Plan (SPMP)
This document describes how you intend to develop your software; how you expect to
approach the development process; the times and deliverables involved; problems
foreseen and constraints imposed. The plan accompanies the project life span and is
usually subject to a number of revisions.
1 INTRODUCTION
2 PROJECT ORGANIZATION
Identify and describe the software process model you will use in terms
of the following:
• the flow of information and work products,
• reviews to be conducted,
• major milestones to be achieved,
• versions to be established,
• project deliverables to be completed,
To describe the process model, a combination of graphical and textual
notations may be used.
4
2.2 Roles and Responsibilities
In the case of a group project, identify the various roles, the project
team members, and their assignments. Take care to identify how
information will be communicated between the different roles – for
example: how will the design be passed to the coder.
For example: you might use OO for the analysis phase, using the UML
notation, and the Rational Rose Tool. In order to track changes to the
analysis, you might use version control, and the CS-RCS tool.
3.1 Tasks
Identify the tasks involved in executing the project. Some sample tasks
are:
3.1.n Task-n
Provide a name for the task, and a unique identifier of the form
SPMP-Tnnnn.
5
3.1.n.1 Description
Identify the dependencies that must be met before the task can
be started or completed, and any constraints placed on the task.
3.2 Assignments
3.3 Timetable
Provide a timetable showing the estimated start and completion dates for each
task. This is best illustrated using a Gantt diagram.
This timetable should be updated throughout the project to reflect changes in:
the tasks, the execution time for tasks, the completion dates, etc.
6
4 Software Requirements Specifications (SRS)
The SRS is a specification of the requirements for the software “product” you will
produce in your project. The basic issues to be addressed are:
The SRS contains requirements, and not your design solutions; it is the “what” and
not the “how” of your project. The information is collected from the project client.
A requirement is verifiable if there exists a way to check that the software meets the
requirement. Non-verifiable requirements include statements such as “works well”,
“good human interface”. If a method cannot be devised to determine whether the
software meets a particular requirement, then that requirement should be removed or
revised.
1 INTRODUCTION
Clearly define the purpose of the software, the environment it will run
in, and who will be using it (in terms of their educational level,
experience, and technical expertise). Do not go into detail, but outline
the general requirements in a way that provides the reasons why
specific requirements are later specified in the SRS.
7
2 SPECIFIC REQUIREMENTS
This section of the SRS should contain all of the software requirements to a
level of detail sufficient to:
8
For each required software product, the following should be
provided:
- Name and Version number.
For each interface, the following should be provided:
- Discussion of the purpose of the interfacing software as
related to this software product.
- Definition of the interface in terms of message content and
format. It is not necessary to detail any well-documented
interface, but a reference to the document defining the interface
is required.
Functional requirements should define the actions that must take place
in the software in accepting and processing the inputs and in
processing and generating the outputs. These are generally listed as
“shall” statements starting with “The system shall”. These include
a) Validity checks on the inputs
b) Exact sequence of operations
c) Responses to abnormal situations, including
1) Overflow
2) Communication facilities
3) Error handling and recovery
d) Effect of parameters
e) Relationship of outputs to inputs, including
1) Input/output sequences
2) Formulas for input to output conversion
9
It may be appropriate to partition the functional requirements into
subfunctions or subprocesses. This does not imply that the software
design will also be partitioned that way.
2.3.1 Reliability
2.3.2 Availability
2.3.3 Security
2.3.4 Maintainability
2.3.5 Portability
10
b) Use of a proven portable language;
c) Use of a particular compiler or language subset;
d) Use of a particular operating system.
2.3.6 Performance
This subsection should specify both the static and the dynamic
numerical requirements placed on the software or on human
interaction with the software as a whole.
Static numerical requirements may include, for example, the
following: minimum number of simultaneous users, minimum
data storage, etc.
Dynamic numerical requirements may include, for example, the
required number of transactions per second for both normal
and peak workload conditions, etc.
All of these requirements should be stated in measurable terms.
This should specify the logical requirements for any information that is to be
placed into a database. This may include the following:
a) Types of information used by various functions;
b) Accessing capabilities;
c) Data entities and their relationships;
d) Integrity constraints.
Notes:
The appendices should include verification of requirements consistency. This may be
in the form of formal proofs, appropriate diagrams, or other notation.
11
5 Software Design Description (SDD)
The SDD shows how your software will be structured to satisfy the requirements. It
describes the software structure, software components, interfaces, and data necessary
for the implementation phase. In a complete SDD, each requirement must be
traceable to one or more components.
1 INTRODUCTION
12
2.2 Discussion of Alternative Designs
3.n Component-n
Identify all the objects on each screen, and define the actions to
be taken by each object for each event.
Notes:
The appendices should include the design verification. This should consist of formal
proofs, sequence diagrams, or other notations as appropriate. The level of detail
should be adequate to demonstrate that the design meets the requirements.
13
6 System Test Document (STD)
This system test document specifies the tests for the entire software system, defines the
test schedule, and records the test results.
This document does not cover unit testing (the testing of individual sub-systems or
components of the system).
The system may consist of multiple items that are to be tested separately.
The system may be tested in one or more increments of functionality; the system test
document should cover each version of the system separately. When different versions
of the system are tested, make sure to clearly identify the version of the software and
the relevant test and test result. Also, extend the unique identifier scheme to include
the version of the software system under test (SUT) – for example, use TC-vvvv-nnnn
to identify test case nnnn for software system version vvvv.
1 INTRODUCTION
Briefly detail the software system and items to be tested. Identify the
version(s) of the software to be tested.
2 TEST PLAN
Describe the scope, approach, resources, and schedule of the testing activities.
Identify the items being tested, the features to be tested, the testing tasks to be
performed, the personnel responsible for each task in the case of a group
project.
14
each combination of features. Identify the version of the software to be
tested.
Specify test staffing needs. For an individual project, specify the time
to be spent on testing. For a group project, specify the number of
testers and the time needed.
3 TEST CASES
A test case specification refines the test approach and identifies the features to
be covered by the case. It also identifies the procedures required to
accomplish the testing and specifies the feature pass/fail criteria. It documents
the actual values used for input along with the anticipated outputs.
3.n Case-n (use a unique ID of the form TC-nnnn for this heading)
3.n.1 Purpose
Identify the version of the software and the test items, and
describe the features and combinations of features that are the
object of this test case. For each feature, or feature
combination, a reference to its associated requirements in the
software requirement specification (SRS) should be included.
3.n.2 Inputs
Specify each input required to execute the test case. Some of the
inputs will be specified by value (with tolerances where
appropriate), while others, such as files or URLs, will be
specified by name. Specify all required relationships between
inputs (e.g., ordering of the inputs).
15
3.n.3 Expected Outputs & Pass/Fail criteria
Notes:
A test log is used by the test team to record what occurred during test execution.
A.n Log for test-n (use a unique ID of the form TL-nnnn for this heading)
For each execution, record the date/time and observed results (e.g.,
error messages generated). Also record the location of any output
(e.g., window on the screen). Record the successful or unsuccessful
execution of the test.
A.n.2 Incident Report (add a unique ID of the form TIR-nnnn to this heading)
If the test failed, or passed with some unusual event, fill in this incident
report with the details. Summarize the incident, identifying the test
items involved, and the anomaly in the results. Indicate what impact
this incident will have on the project.
16
7 Conclusions and Further Work
In this report we have presented explanations for the student software engineering
documentation templates introduced in TR05. These explanations are based on the
IEEE standards. Their purpose is to guide the students through the process of
documenting their software development, and raise their awareness of certain key
issues in software engineering.
We recognise that each software project is unique and so we do not advocate using a
specific software engineering process based on these templates. In the future we
hope to find time to document approaches that students take in producing software
and identify the most common processes and pitfalls.
References
17