Documentation and Project Organization

Similar documents
Software documentation systems

The care of open source creatures. Vincent Sanders

Choosing a Content Management System (CMS)

Magento Search Extension TECHNICAL DOCUMENTATION

Better Automation Environments

Best Practices of PHP Development

Maven or how to automate java builds, tests and version management with open source tools

Content. Development Tools 2(63)

SAS in clinical trials A relook at project management,

Source Code Review Using Static Analysis Tools

Barely Sufficient Software Engineering: 10 Practices to Improve Your Research CSE Software

Tutorial 5: Developing Java applications

Part I. OpenCIT Server

Benchmarking and monitoring tools

Version Control with. Ben Morgan

Web Development News, Tips and Tutorials

IceWarp to IceWarp Server Migration

A person or organization with a legitimate interest in a given situation, action or enterprise Stakeholders are any groups, individuals, agencies, or

Eclipse Help

Guidelines and Procedures for Project Management

Using SVN to Manage Source RTL

DAISY PRODUCER: AN INTEGRATED PRODUCTION MANAGEMENT SYSTEM FOR ACCESSIBLE MEDIA

Upping the game. Improving your software development process

JBoss Forums Guide. 1. Introduction

Copyright 2014 Jaspersoft Corporation. All rights reserved. Printed in the U.S.A. Jaspersoft, the Jaspersoft

Publish Acrolinx Terminology Changes via RSS

Oracle Application Express MS Access on Steroids

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

CONTINUOUS INTEGRATION

Mailchimp Integration Addon

Increasing the efficiency of free software projects through information management

SA4 Software Developer Survey Survey Specification v2.2

In this Lecture you will Learn: Implementation. Software Implementation Tools. Software Implementation Tools

Software infrastructure for Java development projects

Data processing goes big

Software Evaluation: Criteria-based Assessment

How To Develop Software

Continuous integration for databases using

Web Frameworks. web development done right. Course of Web Technologies A.A. 2010/2011 Valerio Maggio, PhD Student Prof.

WEB SITE DEVELOPMENT WORKSHEET

CISC 275: Introduction to Software Engineering. Lab 5: Introduction to Revision Control with. Charlie Greenbacker University of Delaware Fall 2011

SkyFoundry News Update New Reporting Features and SkySpark Mobile

Using SVN to Manage Source RTL

TEST AUTOMATION FRAMEWORK

VMTurbo Operations Manager 4.5 Installing and Updating Operations Manager

Easing embedded Linux software development for SBCs

Document Management with. first impressions

A Plan for the Continued Development of the DNS Statistics Collector

Requirements INTLAND SOFTWARE. Management Guide INTLAND SOFTWARE LIBRARY QUIET ZONE. Requirements. Requirements

Code Estimation Tools Directions for a Services Engagement

Tutorial for Avaya 4600 and 9600 Series IP Telephones Push and Browser Applications Setup

Project Management System Services

Change & Configuration! Management

Why this lecture exists ITK Lecture 12: Open Source & Cross Platform Software Development

Drupal Site Tuneup. Vroom! Vroom! Kristen Pol / kristen@hook42.com

Using the AVR microcontroller based web server

Writing Books Using Open Source Software

The Bazaar Version Control System. Michael Hudson, Canonical Ltd

What CCPForge does Introduction to SESC and CCPForge Workshop Gemma Poulter

LAMP Server A Brief Overview

(WEB SITE MANAGEMENT) Motto: PLAN FOR THE FUTURE. Motto: PLAN FOR THE FUTURE. Motto: PLAN BEFORE YOU START CODING

The "Eclipse Classic" version is recommended. Otherwise, a Java or RCP version of Eclipse is recommended.

Power Tools for Pivotal Tracker

Continuous integration with Jenkins CI

Continuous Integration and Delivery at NSIDC

Wiki Server. Innovative tools for workgroup collaboration and communication. Features

Continuous integration for databases using Redgate tools

112 Linton House Union Street London SE1 0LH T: F:

Continuous Integration

A White Paper. VerticalResponse, Delivery and You A Handy Guide. VerticalResponse,Inc nd Street, Suite 700 San Francisco, CA 94107

<Insert Picture Here> Introducing Hudson. Winston Prakash. Click to edit Master subtitle style

Writing Books Using Open Source Software

4 Understanding. Web Applications IN THIS CHAPTER. 4.1 Understand Web page development. 4.2 Understand Microsoft ASP.NET Web application development

Quick Start Guide Migration Planner

Maven the Beautiful City. Healthy, Viable, and Productive Build Infrastructures

White Paper on the Use of Team Calendars with the JIRA Issue Tracking System and Confluence Collaboration Tools for the xlpr Project

Build management & Continuous integration. with Maven & Hudson

LOTUS to SharePoint Migration Services

Introduction to Git. Markus Kötter Notes. Leinelab Workshop July 28, 2015

Dove User Guide Copyright Virgil Trasca

HP INTEGRATED ARCHIVE PLATFORM

Building a Database-Driven Web Application With FileMaker

Tech Notes. Corporate Headquarters EMEA Headquarters Asia-Pacific Headquarters 100 California Street, 12th Floor San Francisco, California 94111

Request for Proposal (RFP) Toolkit

Expansion Through Acquisitions

Using Ruby on Rails for Web Development. Introduction Guide to Ruby on Rails: An extensive roundup of 100 Ultimate Resources

Version control. with git and GitHub. Karl Broman. Biostatistics & Medical Informatics, UW Madison

MICROSOFT EXCHANGE SERVER 2007 upgrade campaign. Telesales script

Sitemap. Component for Joomla! This manual documents version 3.15.x of the Joomla! extension.

Requirements Management

Apache Gump. Continuous Integration on Steroids. Apache Software Foundation Building FOSDEM 2005

Graphviz Website Installation, Administration and Maintenance

Automated build service to facilitate Continuous Delivery

5.2.3 Thank you message Bounce settings Step 6: Subscribers 6.1. Creating subscriber lists 6.2. Add subscribers Manual add 6.2.

Web Hosting Features. Small Office Premium. Small Office. Basic Premium. Enterprise. Basic. General

Building CHAOS: an Operating System for Livermore Linux Clusters

SOFTWARE PROJECT MANAGEMENT

MANAGEMENT SYSTEM BASED ON OPEN SOURCE TOOLS

Pragmatic Version Control

Specify the location of an HTML control stored in the application repository. See Using the XPath search method, page 2.

Transcription:

Documentation and Project Organization Software Engineering Workshop, December 5-6, 2005 Jan Beutel ETH Zürich, Institut TIK December 5, 2005

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 Examples Do s and don ts in a university environment/sada 2

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 3

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 Not universally accessible Not maintenance free (human intervention necessary) Permission Problems 4

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 Bit of an overkill for most of us 5

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 Local mail dir starts at subscription date and bloats No straightforward search through everything in archives Not all lists are search(-ed/-able) by Google 6

Web Pages Authored/Static pages Fast Who is the webmaster? Wiki Pages Everyone is the webmaster! Hierarchical permissions Continuous improvement of content Transparent ChangeLog Control/accuracy of content? 7

Wiki Pages www.btnode.ethz.ch 8

Wiki Pages Simple Markup for Everyone 9

Wiki Pages Integrated ChangeLog 10

Wiki Pages History Compare 11

Wiki Pages Access Control, Internal Page 12

Wiki Pages igem Collaboration Success 13

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 Long-term static links 14

Weblogs Interesting Project Statistics 15

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 webalizer -c./webalizer.conf -Q 16

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: Very good for developers, stable enough for public 17

SourceForge.net 18

SourceForge.net Feature Requests 19

SourceForge.net - Tracker 20

BSCW Repositories Basic Support for Cooperative Work Originates in very large, multinational projects Many features, lots of maintenance, complicated usage 21

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. Help desk - Manuals for first and second line support. 22

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 extracted by automatic means. 23

Industry Documentation Flows 24

Useful Documentation Types User Guides Specification Documents Inline doc s comments, automated doc s README vs. ChangeLog Mailing lists Structure overview documents Examples 25

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 Large effort to create and maintain 26

Specifications 27

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 paragraph of description. - If you write code for a file, add an `@author` tag to the toplevel documentation block. 28

TinyOS TEP Structure 29

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 Simple, versatile markup: 30

Doxygen Overview Output 31

Doxygen Simple Document Markup Describe every function Add additional information Parameters Usage Context Data types Separate overview doc s Single configuration file 32

Doxygen - File References 33

Doxygen File Reference and Examples 34

Doxygen Simple Centralized Descriptions 35

Project ChangeLog THE document to stay up-to-date Easy to implement Easy to maintain Usage and discipline must be strictly enforced 36

Maintained ChangeLogs in Source Files 37

Handcrafted Comments and Version Info 38

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 Can be pretty private 39

Handcrafted Comments The Good & Bad 40

Structure and Overview Doc s 41

Worthwhile Tutorials Don t really work unless moderated or someone is exceptionally motivated 42

Maintenance Intensive - FAQs 43

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 Public visibility Must be organized, structured and clean Will lead to questions (and workload) 44

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 Do not rely on information to be pushed at you 45

Undergrad Student Projects Enforce discipline Weekly meetings or status updates (email) This is exceptional! 46

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 47