Up
to: New control system 30-m Main PageLinks
Title: Project ProjectDoc: documentation of projects
Master URL: http://www.iram.es/IRAMES/documents/ncs30mProjectDoc/
File Name: projectDoc
Revision: draft, , 1.3
Revision Date: 2001-10-19
[last rev: 2001-04-04]
Authors: W. Brunswig (brunswig@iram.es), A. Sievers (sievers@iram.es)
Contributors: Hans Ungerechts
Audience: technical staff, astronomers
Publisher: IRAM, Granada, Spain
Subject: NCS 30m: Documentation Standard for Projects
Keywords: Project Documents, XML, PDF
Description - about this document: Describe a standard of project documentation.
This standard will be used in the development of the IRAM 30m
telescope New Control System. This document describes iteration 0 of the project.
We consider requirements and design to be done
The requirements that are open wil not be implemented in this iteration.
The format as described in the
DTD file should be fixed now, but the XSL scripts to transform to PDF and
HTML are not widely tested yet.
History of document
v 1.1, 2001-04-04 wb: describe ideas about project documentation
v 1.2, 2001-08-08 wb: review of concepts, note possible extension, modifications
v 1.3, 2001-10-17 wb: adapted to agreements in meeting (WB,HU,AS), related to
v1.0 of dtd, document iteration 0 of project.
Pending
- work out user guide
Project Plan
- 2001-10-19: distribute documentation of iteration 0 and request
comments. (wb)
- 2001-10-31: release iteration 0. (wb)
- in 2002: review project, based on experience with iteration 0
and produce iteration 1. (wb, ?)
Introduction
A project typically goes through a sequence of phases:
- first ideas and top-level requirements
- detailed specifications
- design
- implementation
- module tests
- installation (deployment)
- integration tests
- maintenance
- out-phasing
The sequence might be iterated several times (except for the last
phase).
Although the sequence of phases can be found in many areas we here
concentrate on software projects. Many software projects at the IRAM, Spain,
are of a small scale of a few Man*Weeks. These smaller projects are often
not well documented. The scheme presented could be use to document the
various development steps.
This version of this document relates to v1.0 of the projectDoc format.
The syntax of projectDoc files is defined in the projectDoc DTD file: the
projectDoc DTD file. Its semantic is described below.
Project documents might not handle all details. For small projects
most of the details could be included in the project document
(to avoid several small or tiny documents). However, for larger
project details should be handled in separate documents.
Requirements
sections
[done,2001-09-17]:
(modified)
A project documents shall consists of a list of sections:
- standard document "meta" information
- document history
- one chapter for each of the software development phases:
requirements, design, implementation, installation
- a project plan
- a project logbook: lists important events
- an operation manual (user guide)
subSections
[done,2001-09-17]:
(modified)
Each section is related to a specific software development phase.
It shall contain a list of items ("subsections") describing details,
e.g. each requirement shall be written into one requirement subsection.
identifiers
[done,2001-09-17]:
(modified)
Each subsection shall have an identifier.
If a specific requirement is covered by just one
subsection of the following phases (design, implementation,
installation) then those subsection shall have the same identifier.
format
[done,2001-08-08]:
(modified)
The overview document shall be formatted such that different
items and concepts are identified by tags.
Reason: Using tags allows to extract in a systematic way information.
E.g. Requirements are enclosed in tags: <req> and </req>.
Although project documents will contain chapters on all
steps of development, extracting a listing of requirements can easily done
by using the tags.
attributes
[done,2001-04-04]:
Items like requirements or tests shall have attributes that indicate important
information. The attributes of the tags depend on the type of tag.
Example:
- Requirement attributes: state (open, accepted,...), implementation (done,
started,...)
- Implementation attributes: date, platform (host)
The details shall be defined in the design.
swConcepts
[done,2001-04-04]:
The language shall include a set of tags for the standard concepts of
software: file, host, port, socket, message, error, ... .
textStructure
[done,2001-04-04]:
The language shall include a set of tags
to define the text structure: paragraphs, lists, emphazised text, ... .
acronyms
[open,2001-09-17]:
(modified)
The language shall have a tag to define acronyms. The definition
of acronyms can be done in the same file or in different document.
The "output" versions of the document shall contain lists of
acronyms.
Not implemented in iteration 0.
index
[open,2001-09-17]:
(modified)
The language shall have a tag to register document positions
in an index.
Not implemented in iteration 0.
hyperText
[done,2001-04-04]:
The language shall include tags for hypertext references to external
documents.
requirementGroups
[open,2001-08-09]:
(modified)
Allow to structure larger sets of requirements by defining groups
(subsections) of requirements, e.g., group of requirements related
to monitor and control.
Not implemented in iteration 0.
template
[done,2001-09-17]:
(modified)
Provide a file that contains a template of a project document.
outputPDF
[done,2001-08-08]:
(modified)
The original document shall be transformed to PDF.
Reason: The original version of the document uses tags and is therefore
not "nice" to read. PDF documents produce an acceptable output and have also basic
hypertext features.
outputHTML
[done,2001-08-08]:
(modified)
The original document shall be transformed to HTML.
Reason: As HTML has more advanced hypertext features
it might be produced as well if these features are wanted.
Should we maintain HTML besides PDF? HU: Maybe not in
this case, but for "Help"/User Documentation.
extractUserDoc
[open,2001-04-04]:
A tool shall allow to extract information for a user. This shall consist of
sections:
- Introduction
- Requirements
- UserGuide
Not implemented in iteration 0.
extractModifications
[open,2001-09-17]:
(modified)
A tools shall allow to extract those subsections (or sections) that
have been modified since a given date. The standard output
versions of the document shall also indicate modifications
from the last to the actual version of the document.
Not implemented in iteration 0.
emacsSupport
[open,2001-04-04]:
Editing project documents shall be supported by a particular emacs mode.
verification
[done,2001-09-19]:
(modified)
A tool shall be provided that check if a projectDoc document is
in conformance with the DTD defining the language syntax.
Design
sections
[done,2001-09-17]:
(modified)
A project document will have the following sections:
- meta: information about the document. It consists of
most of the items that are used for standard documents
of the IRAM new control system.
- pending: important information about pending items
(e.g. unfinished installation tests (ok, this should not happen))
- history: document history
- introduction: project background, basic ideas, etc.
- requirements: list project requirements (what shall be done)
- specifications: list specifications
- design: list design decision (how things will be done)
- implementation: information about implementation, links to
further documentation (e.g. code documentation) (what has been done)
- installation:
- can give details on installed requirements
(in particular, if not all requirements are implemented/installed
at the same time.
- describe how to install the software (e.g. which configuration
files have to be modified).
- list on which systems the software is installed
- project log: a logbook of important project events
- userGuide: can contain information about
- how to use the software or link to an external user manual.
- which maintenance is needed.
- which health-checks can be done by users
- miscellaneous: can contain what does not fit somewhere else,
like future ideas and plans.
format
[done,2001-04-04]:
The language to describe the software and software engineering concepts
is based on XML. It defines the tags
- to identify software engineering concepts: requirements, design, ... ,
- to identify standard software/computer concepts: file, host, ... ,
- to reference external documents, and
- to do basic text structuring.
It also defines tag attributes and which type of tags can be "inside" other
tags. E.g. tag <requirements> can be followed by a tag
<req> but not by a tag <test>.
Why use XML ? XML allows to define a structured text-tagging language
(give some items a meaning). It is becoming an important standard for web documents
and tools are available (many as public-domain). Libraries for many languages
exist: Java, C, TCL, Python. We do not know if Fortran utilities exists
(besides using C libraries) but some basic routines have been written by ourselves.
subSections
[done,2001-09-18]:
(modified)
Subsections are available for the sections requirements (tag: req),
specifications (spec), implementation (impl), installation (inst).
attributes
[done,2001-09-17]:
(modified)
All top-level items (requirements, designs, ...) shall have the following
attributes:
- id: identifier of requirement, design, ...
- state: state of item (open,done).
- date: date of last modification: the date shall refer to
last modification of requirement or any stage with same
identifier
The state of all items (requirements, design, ...) is described
by an attribute state with can take one of these values:
- notStarted: work has not yet started
- open: work has started, but not yet finished
- done: this is the "final" version (of this "iteration")
Usage of state attribute is different for requirements, see
requirementAttributes
specifications
[done,2001-09-17]:
(modified)
The first phase of a project consists in defining the requirements
of the project. This normally starts with a list a unprecise
requirements. Reviews and discussions between "customer" and
"provider" shall lead to a list of precise requirements that both
parts agree upon.
The following steps in the software development
can also reveal deficiencies of the list of requirements and thus
lead to new and modified requirements.
We can also distinguish between "user" requirements and those
requirements that are derived by an analysis of the "user"
requirements. Requirements that result from the
analysis of the "user" requirements are also called
specifications.
Note: specifications shall not use identifiers used for a requirement
requirementAttributes
[done,2001-09-17]:
(modified)
For the requirements, we use the state attribute also to indicate
the state of the "realization" of a requirement:
- notStarted, open: same meaning as above
- fixed: the requirement has been fixed (for this "iteration")
- ...ing: current state of "realization"
(designing, implementing,installing,testing)
- ...ed: the state has been finished,
next state not yet started (designed,implemented,installed)
- done: the requirement has been "realized": designed, implemented, installed,
and tested.
Requirements can have the following additional attribute:
- iter: indicate in which software process iteration the
requirement shall be implemented.
- obsolete="yes": indicate that requirements is not valid anymore,
but keep it, possibly with an explanation why it has been dropped.
- prio {essential, high, low}: indicate priority of requirement.
- essential: requirement has to be implemented in first iteration.
- high: requirement shall be implement after all essential
requirements have been implemented.
- low: requirement is considered to be useful, but
implementation shall be done after implementing all
requirements with high priority.
- from: who made the requirement
Question: Shall we use different states/dates referring to the
requirement itself and any other stage with same identifier ?
swConcepts
[done,2001-09-18]:
(modified)
Tags will be defined for the most common concepts: file, host, process.
Other concepts can be specified by a general tag swItem.
See DTD for defined attributes.
output
[done,2001-04-04]:
Document transformation will be developed from projectDoc language (in XML)
to HTML and TeX/PDF in the XSL language.
Reason: Why use XSL ? For the translation several possible standards exist:
XSL, DSSSL, CSS. XSL is a standard set up by the www comitee (w3c.org) and is the
most powerful language for this purpose. However, support of XSL by web browsers
is currently still limited.
outputPDF
[done,2001-09-17]:
(modified)
Project documents will be translated into PDF. This is done by
- transform the documents from XML to PDFLaTeX (using XSL), and then
- use PDFLaTeX to create a PDF version (using macros developed by HU)
outputHTML
[done,2001-09-17]:
(modified)
A script will be written in XSL to translate the projectDoc language
into HML. The generated document will contain:
- all sections. for those items that have a date attribute
it will be indicated if the item has been modified or added
since the last revision of the document
- a contents table consisting of sections and subsections
- a list of requirements, their attributes and
other items with the same identifier (descendants)
- a list of references: hyperText and swConcept elements
tests
[done,2001-08-09]:
(modified)
Testing can be done at varous stages of the development. The documentation
of those tests depends on the development stage:
- module tests are done during the implementation phase. They
are described either in the project doc or as part of the
source code documentation.
- integration tests check the interface of and cooperation
between modules. They are described in the implementation section.
- system tests check the complete system after installation.
They are also described in the installation section.
- health check tests and tests to identify errors are described
in the user guide.
verification
[done,2001-09-19]:
(modified)
a (pd) tool xmlv check conformance of documents with regard to a DTD.
this tools will be provided on gra-lx1.
Implementation
format
[open,2001-09-18]:
(modified)
The projectDoc language is based on XML. Its syntax is defined by the general
XML rules and the specific language defined in : the
project Doc DTD file.
sections
[open,2001-09-18]:
(modified)
The required sections are defined in the DTD referenced above.
subSections
[open,2001-09-18]:
(modified)
The required sections are defined in the DTD referenced above.
attributes
[open,2001-09-18]:
(modified)
The required attributes are defined in the DTD referenced above.
swConcepts
[open,2001-09-18]:
(modified)
The required tags are defined in the DTD.
textStructure
[open,2001-09-18]:
(modified)
The required tags (ol, ul, li, p, pre) are defined in the DTD referenced above.
hyperText
[done,2001-09-18]:
(modified)
The projectDoc DTD contains a tag to define references to other
documents.
template
[done,2001-09-17]:
(modified)
For a template of the current project "language" look at: template
of projectDoc files .
outputPDF
[done,2001-09-17]:
(modified)
A transformation script is defined produce a PDF document. The
transformation script is written in XSL.
outputHTML
[done,2001-09-17]:
(modified)
A transformation script is defined produce a PDF document. The
transformation script is written in XSL.
Installation
hosts
[done,2001-10-19]:
(modified)
All tools needed are available on gra-lx1.iram.es.
requiredSw
[done,2001-10-19]:
(modified)
The following sw packages are used:
- com.jclark.xml.sax: xml parser (pd: public domain)
- com.jclark.xsl.sax: xsl transformer (pd)
- pdflatex: LaTeX wit PDF extensions (pd)
homeMadeSw
[done,2001-10-19]:
(modified)
- LaTeX macros for projectDoc style (hu): in /usr/local/projectDoc
- XSL scripts (wb): in /usr/local/projectDoc
verification
[done,2001-09-19]:
(modified)
tools xmlv (xml verification) is available on gra-lx1
in directory /usr/local/bin.
User Guide
How to write projectDoc documents:
- get a basic understanding of xml type documents: syntax rules, tags,
attributes, special characters
- copy file template of projectDoc
file to your new document
- check for allowed attributes in file projectDoc
DTD file
- set a project.dtd to /usr/local/projectDoc/projectDoc.dtd
with command:
ln -s /usr/local/projectDoc/projectDoc.dtd projectDoc.dtd
- insert file template make file for projectDoc into your make file and edit it.
Please note also:
- if <ref> tags reference external documents giving a relative name are
these names are preceeded by the "masterURL" specified with tag <doc:masterURL> .
- xml filess can be printed "prettyly" with:
a2ps -1 --delegate=no --pretty-print=html your-xml-file
Miscellaneous
rdf
[,2001-09-18]:
(modified)
xml documents shall have rdf section in the future. rdf is a standard to describe "resources"
in the www world. (see also www.w3c.org)
List of Requirements/Specifications and Descendants
- req/spec: sections
- req:
state=done date=2001-09-17
- des:
state=done date=2001-09-17
- impl:
date=2001-09-18 state=open
- req/spec: subSections
- req:
state=done date=2001-09-17
- des:
state=done date=2001-09-18
- impl:
date=2001-09-18 state=open
- req/spec: identifiers
- req:
state=done date=2001-09-17
- req/spec: format
- req:
state=done date=2001-08-08
- des:
state=done date=2001-04-04
- impl:
date=2001-09-18 state=open
- req/spec: attributes
- req:
state=done date=2001-04-04
- des:
date=2001-09-17 state=done
- impl:
date=2001-09-18 state=open
- req/spec: swConcepts
- req:
state=done date=2001-04-04
- des:
date=2001-09-18 state=done
- impl:
date=2001-09-18 state=open
- req/spec: textStructure
- req:
state=done date=2001-04-04
- impl:
date=2001-09-18 state=open
- req/spec: acronyms
- req:
state=open date=2001-09-17 prio=high
- req/spec: index
- req:
state=open date=2001-09-17 prio=low
- req/spec: hyperText
- req:
state=done date=2001-04-04
- impl:
date=2001-09-18 state=done
- req/spec: requirementGroups
- req:
state=open date=2001-08-09 prio=low
- req/spec: template
- req:
state=done date=2001-09-17
- impl:
state=done date=2001-09-17
- req/spec: outputPDF
- req:
state=done date=2001-08-08
- des:
state=done date=2001-09-17
- impl:
state=done date=2001-09-17
- req/spec: outputHTML
- req:
state=done date=2001-08-08
- des:
state=done date=2001-09-17
- impl:
state=done date=2001-09-17
- req/spec: extractUserDoc
- req:
state=open date=2001-04-04 prio=high
- req/spec: extractModifications
- req:
state=open date=2001-09-17 prio=high
- req/spec: emacsSupport
- req:
state=open date=2001-04-04
- req/spec: verification
- req:
state=done date=2001-09-19
- des:
date=2001-09-19 state=done
- inst:
date=2001-09-19 state=done
List of Hypertext refences and swItems
-
file: name=/usr/local/bin ->
-
file: name=/usr/local/projectDoc/projectDoc.dtd ->
-
host: name=gra-lx1 ->
-
host: name=gra-lx1.iram.es ->
-
host: name=gra-lx1 ->
-
ref: href=OTHERS/project.dtd text=the projectDoc DTD file ->
-
ref: href=OTHERS/project.dtd text=the project Doc DTD file ->
-
ref: href=OTHERS/template.xml text=template of projectDoc files ->
-
ref: href=OTHERS/template.xml text=template of projectDoc file ->
-
ref: href=OTHERS/project.dtd text=projectDoc DTD file ->
-
ref: href=OTHERS/projectTo.make text=template make file for projectDoc ->
-
swItem: type=link name=project.dtd ->
2001-10-19Project ProjectDoc: documentation of projects
(W. Brunswig (brunswig@iram.es), A. Sievers (sievers@iram.es))