Getting Started Documentation Glish Learn More Programming Contact Us
Version 1.9 Build 1556
News FAQ
Search Home


next up previous contents
Next: UV data and imaging Up: aips++ prototype Previous: Contents

Subsections


Overview

Why a prototype?

In early February a group met in Green Bank. This group consisted of six of the aips++ development group from Charlottesville and six others (from NRAO, NFRA and NRAL). The goal of this group was to analyse the process of calibration and imaging astronomical data, in particular radio-astronomical data. Most participants were satisfied with the results from that meeting, and their report is summarized in [1]. One of the participants has very strong disagreements with [1], his disagreements and a proposal to start afresh are outlined in [2].

After the Green Bank meeting and followup discussion in Charlottesville (including Andrew Klein, our OO/C++ consultant) it was decided to write a small prototype for the following reasons:

What prototype?

The intention of the prototype was to build a system that was ``broad and shallow'' rather than one that was ``narrow but deep''. The consensus was that it was most appropriate to attempt in some small way many parts of the ultimate system (also, as a practical matter it is easier to get a lot of people working on a wide problem).

The chosen problem was to apply an antenna based calibration to a UV dataset, image it, and display it using a simple ``keyword=value'' based command line interface. Details of the prototype are explained more fully in the following chapters and appendices.

How the prototype was built

The prototype was finished in just under three weeks and consisted of about 15,000 lines of code and comments. We built our prototype on top of the CIC container classes and with the GNU String class.

The team was split up into groups to implement the prototype. The Raw Data group1.1was responsible for forming/calibrating and imaging UV data, the Image group1.2was responsible for creating image classes and simplified coordinate systems, the User Interface group1.3was responsible for creating a parameter passing mechanism, the Fundamental Libraries group1.4provided some support with support classes, and the Organization group1.5was responsible for creating appropriate makesfiles and directory structures.

The group was fairly enthusiastic about the prototype. In fact, doing it was enough fun so that it was hard to stop work on it when it reached its predefined limits. The initial few days of design were extremely useful, especially the exercises with the CRC (Class - Responsibility - Collaborator) cards. The implementation went pretty well; there was some time wasted getting the ObjectCenter (Saber) programming environment to work properly with the preprocessor that is used by CIC to emulate C++ parametric types. A somewhat surprising result was that the software environment -- makefiles, source code checkin systems, etc. -- was extremely important, even for this small prototype with people in only two offices.

Some preliminary conclusions

The user interface group should probably have been given a larger problem, perhaps a simple image arithmetic program. The groups were only moderately successful at communicating with each other. While it is desirable to keep communications costs down, we likely erred too strongly on the side of working independently.

Some flaws in the Green Bank model were found and discussed during the implementation of the prototype. The consensus of some internal email [3] was that some decoupling of entities was required, undoubtedly by associating objects explicitly inside a database. This should also be attractive for end-users of the system.


next up previous contents
Next: UV data and imaging Up: aips++ prototype Previous: Contents   Contents
Please send questions or comments about AIPS++ to aips2-request@nrao.edu.
Copyright © 1995-2000 Associated Universities Inc., Washington, D.C.

Return to AIPS++ Home Page
2006-10-15