GLAST/LAT > DAQ and FSW > FSW

Introduction to FSW Development Tools


Overview

The Flight Software development effort depends on a number of tools. Some of these have been developed internally (e.g., at SLAC); others were purchased or obtained as Open Source software. Familiarity with these tools is essential to efficient functioning in the project, though few programmers will need to be expert in all of them.

Development Tools

CMT

CMT (Configuration Management Tool) is an Open Source system, written in C++ (with some shell scripts). It attempts to formalize software production, and especially configuration management, around a package-oriented principle. CMT is also able to generate dependency graphs, using Graphviz.

CMX

CMX (CMT, eXtended) is an extended version of CMT, developed in Perl and shell by Anthony Waite of SLAC's FSW group. It allows CMT to handle "projects", cross-compilation to multiple targets, code distribution, etc. For more information, see the CMX Manual (a Traveler document, indexed under DAQ:CMX).

CVS

CVS (Concurrent Versions System) is an Open Source, network-transparent version control system. It plays a critical, though largely invisible, role in managing the FSW code base.

GCC, etc.

GCC (the GNU C Compiler) and related tools (e.g., gas, gdb) provide an Open-Source answer to FSW's needs for cross-platform C development tools. SLAC Computing Services hosts native versions of GCC on its servers; the FSW group also uses GCC-based cross-compilation tools from Wind River Systems.

LTX

LTX (the LAT Test Executive) is a GUI-based test executive, written in Python by Sergio Maldonado of SLAC's FSW group. For more information, see the LTX Manual (a Traveler document, indexed under SYS:LTX).

Tornado

Tornado is Wind River's Integrated Development Environment (IDE) for VxWorks. The FSW group uses it primarily as a debugging environment.

Documentation Tools

Doxygen

Doxygen is an Open-Source documentation system for C++, C, Java, IDL (Corba and Microsoft flavors) and, to some extent, PHP and C#. It extracts information on code structure from the source code, along with specially-formatted comments, producing integrated reference documents in assorted formats. Doxygen is also able to generate "call trees" and other graphs, using Graphviz.

Grap

Grap is a language for typesetting plots and graphs. It was created by Brian Kernighan and Jon Bentley at Bell Labs, as a preprocessor for the pic(1) picture-creation utility (which is, itself, a preprocessor for troff(1)). We use Ted Faber's Open-Source version of grap, feeding its output to Groff.

Graphviz

Graphviz is a suite of Open-Source tools for manipulating graph structures and generating diagrams of graphs. The FSW group uses Graphviz both directly (e.g., for the Documentation Data Flow, LTX Database Overview, and Package "use" Tree pages) and indirectly (e.g., via CMT and Doxygen).

Groff

Groff (GNU Troff) is an Open-Source reimplementation (with extensions) of Bell Lab's Troff text formatting suite. Used with assorted pre- and post-processors (e.g., grap, ImageMagick, ps2pdf), groff can generate images for web page, printable documents, etc.

LATDocs

LATDocs is an Oracle-based document management system, developed by SLAC's Steve Meyer and Ray Cowan. It is used to manage both "working" and "released" documents for the LAT project.

Swish-e

Swish-e is a toolkit for creating full-text indexing systems. It supports document set selection, Boolean expressions, and more.

GUI Development

The FSW group uses a number of GUI development tools, allowing support of a wide range of user computing platforms.

QScintilla

QScintilla is an Open-Source port to Qt of Neil Hodgson's Scintilla C++ editor class (a free source-code editing component for Win32 and GTK+).

Qt

Qt is an Open-Source, multiplatform, C++ application-development framework. One source runs natively on four different platforms (Windows, Unix/Linux, Mac OS X, embedded Linux).

Operating Systems

The actual flight software will run on VxWorks, but much of the development work is done on other systems. With the exception of Microsoft Windows, these systems all behave similarly to Unix.

Cygwin

Cygwin is a Unix-like environment which runs under Microsoft Windows.

Linux

Linux, named for Linus Torvalds (its initial developer), is an Open Source operating system which is very similar in operation to Unix System V. Linux is used for desktop systems, testing machines, etc. SLAC Computing Services provides a farm of Linux machines, available via SSH; the FSW group maintains a private host in its test laboratory.

Mac OS X

Mac OS X, based on FreeBSD, is a proprietary operating system developed by Apple. Much of its underlying code (e.g., Apache, the FreeBSD portions, GNU tools, and Mach) is Open Source. Mac OS X is used for desktop systems, providing access to both development and productivity tools. SLAC Computing Services provides limited support for Mac OS X.

Microsoft Windows

Microsoft Windows is a proprietary operating system developed by Microsoft. Within FSW, it is primarily used as a desktop system, providing access to "productivity tools" such as Adobe Acrobat and Microsoft Office. SLAC Computing Services makes Microsoft Windows available via VPN (note that this requires client-side software) and provides support (including security patches and virus checking) for desktop systems.

Solaris

Solaris, based on Unix System V, is a proprietary operating system developed by Sun Microsystems. SLAC Computing Services provides a farm of Solaris machines, available via SSH; the FSW group maintains two private hosts in its test laboratory.

VxWorks

VxWorks is a proprietary real-time operating system developed by Wind River Systems. It is the "operating system of choice" for the FSW group; it is currently being used for testing of the flight software and will be used in the operational instrument.

Persistent Data

MySQL

MySQL is a very popular Open-Source Relational Data Base Management System. It uses the computer's file system for table storage and supports a substantial subset of standard SQL commands. Although MySQL is available from SLAC Computing Services, the FSW group builds and maintains its own copy. LTX uses MySQL to store test results.

Oracle

Oracle is a very popular proprietary Relational Data Base Management System. Oracle facilities are centrally maintained by SLAC Computing Services. LATDocs uses Oracle to store documents and index information.

XML

XML (eXtensible Markup Language) is an industry-standard format with a large body of supporting tools, ancillary standards, etc. XML is well suited to storing hierarchical data with attributed nodes. Most XML parsing in th FSW group is done by means of the Open-Source Expat parser. The FSW group uses XML to store LTX test configurations.

YAML

YAML (YAML Ain't Markup Language) is an emerging data serialization format, used largely in the Perl, Python, and Ruby programming communities. YAML has direct support for mappings (i.e., associative arrays, dictionaries) and sequences (i.e., lists). The FSW group's system of mechanized web-page production uses YAML extensively.

Scripting Languages

Perl

Perl ("Practical Extraction and Report Language" or perhaps "Pathologically Eclectic Rubbish Lister") is a very popular Open-Source scripting language. It borrows from awk, BASIC, C, shell, and other languages. The FSW group uses Perl for CMX and for much of its web-page generation. For more information, see the CMX Manual (a Traveler document, indexed under DAQ:CMX).

Python

Python is an increasingly popular Open-Source scripting language. Python has a very simple and regular syntax, making it quick to learn and (usually) clean in appearance. The FSW group uses Python for LTX.

Along with the base Python distribution, several Open-Source "layered products" are also used in the FSW group: