• No results found

Documentation and Project Organization

N/A
N/A
Protected

Academic year: 2021

Share "Documentation and Project Organization"

Copied!
47
0
0

Loading.... (view fulltext now)

Full text

(1)

December 5, 2005

Documentation and Project Organization

Software Engineering Workshop,

December 5-6, 2005

Jan Beutel

(2)

Overview

ƒ

Project Organization

ƒ Specification

ƒ Bug tracking/Milestones

ƒ Access to information – mail, web, files, version control

ƒ

Documentation

ƒ User Guides, Specifications

ƒ Inline doc’s – commented code, automated doc’s

ƒ README vs. ChangeLog

ƒ Mailing lists

ƒ Structure – overview documents

(3)

3

Project Organization – Different Means

ƒ

Plain text documents

ƒ

MS Project

ƒ

File server

ƒ

Mailing lists

ƒ

Web pages

ƒ Authored/Static ƒ Wikis

ƒ

Repositories

ƒ sourceforge.net ƒ savannah.nongnu.org ƒ BSCW

(4)

Single Documents

ƒ

Plain Text

; The ultimate LT-interface

; Easy to generate and read

; Universal

; Easy to automate with shell scripts, Perl, Java, etc.

: Require lot’s of discipline (formatting, location, versions, debugging)

ƒ

File Server Storage

; Easy to use, fast

; Offline sync works with Windows, CVS, SVN or gnu sync

(5)

5

MS Project et. al.

ƒ

Industry standard for large projects

; Integrate resource/personnel planning

; Based on tool availability

: Revision control?

ƒ

Good means for planning/tracking

; Milestones

; Subprojects

; Resources/personnel

ƒ

Extensive reporting capabilities

ƒ Automated checks

ƒ Exporting to html

(6)

Email – Mailing Lists

ƒ

Fast, universal, accessible

ƒ

Mailing lists

; Different audiences use different lists (devel, user, core)

; Usually too much information to stay current

; Mailing lists usually come with archival function

: Operation not maintenance free (access, spam, etc…)

ƒ

Mailing lists – Searching the archives

(7)

7

Web Pages

ƒ

Authored/Static pages

; Fast

: Who is the webmaster?

ƒ

Wiki Pages

; Everyone is the webmaster!

; Hierarchical permissions

; Continuous improvement of content

; Transparent ChangeLog

(8)
(9)

9

(10)
(11)

11

(12)
(13)

13

(14)

Wiki Pages Revisited

ƒ

Projects must have certain size/impact

ƒ

DB based Wikis require maintenance

ƒ

Easy porting of static pages using script interfaces

ƒ

Some doc’s still need static pages

: Auto-generated content: weblogs, doxygen, …

: Downloads

(15)

15

(16)

Project Specific Weblog in 5 minutes

ƒ

Grep through the access_log for “your” files

ƒ

Run webalizer over this data

#/bin/sh

cd /foo_bar_dir/btnode_weblog rm -rf btnode_access.log

grep -h -i btnode /install_dir/apache/logs/access_log > /foo_bar_dir/btnode_weblog/btnode_access.log

(17)

17

sourceforge.net

ƒ

SourceForge.net is the world's largest open source

software development web site, hosting more than

100,000 projects and over 1,000,000 registered

users with a centralized resource for managing

projects, issues, communications, and code.

ƒ

Free of cost

ƒ

Hosting of many services:

; Web pages, release management, CVS, news, support, tracking facilities, stats, mailing lists, user management

ƒ

Access/availability:

(18)
(19)

19

(20)
(21)

21

BSCW Repositories

ƒ

Basic Support for Cooperative Work

; Originates in very large, multinational projects

(22)

Software Documentation

ƒ

Software Documentation or Source Code Documentation is written text that accompanies computer software. It either explains how it operates or how to use it. [wikipedia.org]

ƒ

Types of documentation:

ƒ Architecture - Architectural overview of software; including relations

to an environment, construction principles to be used in design and technical documentation, etc.

ƒ Design - The design of software components.

ƒ Technical - Documentation of code, algorithms, interfaces, APIs.

ƒ End User - Manuals for the end-user.

ƒ Operator - Manuals for the systems administrator.

ƒ Application operator - Manuals for the "superuser" of the software.

(23)

23

Software Documentation cont.

ƒ Often, tools such as Doxygen, javadoc, ROBODoc, POD or TwinText can be

used to auto-generate the code documents; that is they extract the comments

from the source code and create reference manuals in such forms as text or HTML files. Code documents are often organized into a reference guide style, allowing a programmer to quickly look up an arbitrary function or class.

ƒ Many programmers really like the idea of auto-generating documentation for various reasons. For example, because it is extracted from the source code

itself (for example, through comments), the programmer can write it while

referring to his code, and can use the same tools he used to create the source code, to make the documentation. This makes it much easier to keep the

documentation up-to-date.

ƒ Of course, a downside is that only programmers can edit this kind of

documentation, and it depends on them to refresh the output (for example,

by running a cron job to update the documents nightly). Some would characterize this as a pro rather than a con.

ƒ Donald Knuth has insisted on the fact that software documentation can be a very difficult afterthought process and has been advocating Literate programming where documentation is written in the same time as the source code and

(24)
(25)

25

Useful Documentation Types

ƒ

User Guides

ƒ

Specification Documents

ƒ

Inline doc’s – comments, automated doc’s

ƒ

README vs. ChangeLog

ƒ

Mailing lists

ƒ

Structure – overview documents

(26)

User Guides

ƒ

Engineers tend to ignore these

: We usually unpack, plug-in, start up and have troubles…

ƒ

Usually contain interesting details

; Basic overview

; Release Notes

; Configuration information

(27)

27

(28)

TinyOS TEP Conventions

General Conventions

============================================================

- Avoid the use of acronyms and abbreviations that are not well known. Try not to abbreviate "just because".

- Acronyms should be capitalized (as in Java), i.e., Adc, not ADC. Exception: 2-letter acronyms should be all caps (e.g., AM for active messages, not Am)

- If you need to abbreviate a word, do so consistently. Try to be consistent with code outside your own.

- All code should be documented using `nesdoc` [nesdoc]_, `Doxygen` [Doxygen]_ or `Javadoc` [Javadoc]_. Ideally each command, event and function has documentation. At a bare minimum the interface, component, class or file needs a

(29)

29

(30)

Doxygen

ƒ

Doxygen is a documentation system for C++, C,

Java, Objective-C, Python, IDL (Corba and

Microsoft flavors) and to some extent PHP, C#, ...

ƒ

HTML, Latex, RTF and XML output

ƒ

Simple configuration files and wizards

(31)

31

(32)

Doxygen – Simple Document Markup

ƒ

Describe every function

ƒ

Add additional information

ƒ Parameters

ƒ Usage

ƒ Context

ƒ Data types

ƒ

Separate overview doc’s

(33)

33

(34)
(35)

35

(36)

Project ChangeLog

ƒ

THE document to stay up-to-date

ƒ

Easy to implement

ƒ

Easy to maintain

ƒ

Usage and discipline

(37)

37

(38)
(39)

39

Handcrafted Comments

ƒ

Often necessary to

understand application context

ƒ

Must be used with care

ƒ

Quality control is hard

: Who wrote it?

: When?

: Why?

: Is it still current?

: What was the exact case…

ƒ

Often not cleaned up, lacking maintenance

(40)
(41)

41

(42)

Worthwhile – Tutorials

ƒ

Don’t really work unless moderated or someone is

exceptionally motivated…

(43)

43

(44)

Documentation and Organization –

Typical Problems

ƒ

People from different groups – departments –

schools – companies – countries – …

: No common infrastructure available

: Access hierarchies (internal, external)

ƒ

Most projects follow an “explorative” path

; You organize as you go

: Not much long term planning

ƒ

Different people join at different times…

: All information must be archived and accessible

(45)

45

Do’s and Don’ts

ƒ

University: environments, responsibilities, project

membership and working styles change frequently

; People come and go fast

; New/young people start from scratch every 3-4 years

; No corporate policies on resources/doc’s

ƒ

Do not

; Set up complicated/maintenance intensive systems

(46)

Undergrad Student Projects

ƒ

Enforce discipline

; Weekly meetings or status updates (email)

(47)

47

Undergrad Student Projects

ƒ

Enforce discipline

; Weekly meetings or status updates (email)

; Interactive preparation of milestones

; Use of version control

; Reading and posting to mailing lists (very hard)

ƒ

Do not rely on quality/results of student projects to

meet project/paper deadlines

; SA projects are dry runs, time is short

; SAs usually provide a good proof of concept.

; Technical documentation usually good

; Context, scrutinizing questions, numerical analysis often lacking in precision/depth

References

Related documents

It combines a quantitative analysis of the R&D investment of manufacturers of transport equipment, transport service providers and the constructors of transport infrastructure

We used the subcohort of patients with both baseline and follow-up monitoring to calculate the proportion of patients with creatinine increases ≥30% or potassium levels >6 mmol/L

If market shares are maintained at pre-collusive levels, then the …rm with the lowest competitive price-cost margin has the strongest incentive to deviate from the collusive

In the moderately fertile soil, compost addition significantly increased plant height, leaf number, and corn yields (Table 7)+. Plant height at the highest rate was about two

Assessment Method Measurement/Benchmark Evaluation of student performance is consistent with expected course/program outcomes Grading criteria Student clinical performance

Among 3,401 HCC patients of BCLC C diagnosed from 2008 to 2014, a total of 1,486 patients were included as they under- went LRT, sorafenib, or no treatment as the initial treatment;

A study of the views of the chief communications officers (CCOs) at large organizations revealed views about “high performance” of the communication function is considered more in

Usually it’s not possible for enterprises to get particular SLA’s (Service Level Agreement) for their specific needs. Public clouds usually come with a standard SLA, so you just