NEO Task List

WARNING: Under Construction (many of the links are not correct yet!)

Categories

The observing environment contains many components, and the glue that holds them together (the interfaces and protocols) can be more important than the programs themselves. Each piece of work can generally fit into one of these three categories:
1. Interfaces
How are messages passed? How is inter-process communication managed? Usually these things will be described in "API"'s, and usually they will be C or C++ packed into a "library" of function calls used to build the components. The interfaces are the most important things to have well defined from the beginning.
2. Protocols
Underneath the interfaces are protocols, such as actual messages that are sent over a socket, or the structure of things stored in a shared memory segment. This level is usually hidden from a client, but choosing/designing the right protocol is important to be sure current and future needs of functionality are met.
3. Components
Finally, we must create or choose the modules that are held together by the interfaces and protocols. Each user interface, client, server, data analysis tool, and even software development tool can be looked at as a component.

Development Phases

Each of these three will go through the following phases. Not shown is the fact that issues in each phase could lead to a return to a prior step. Software engineering is really and iterative cycle of the following steps. The delivery of functional specs and the design reviews for several rows in the table may be combined into one meeting (for example, we'll talk about the status server API, status server protocol, status server engine, and database setup at the same time.)
1. Requirements
What are our present and future requirements? What's been done elsewhere? What building blocks are out there that can speed up the process of building something new? Then end of the requirements phase will be marked by a complete set of functional specs.
2. Select
How does each of the options match our requirements for performance, functionality, and maintainabilty? What's the buy-in cost for using something that's "out there"? What's the cost of building something new? Pick a direction. At the end of the selection process, there will be a concept design review.
3. Design
Even if we're not writing any new code, we need to propose a plan for integrating the software into our environment. Optional prototypes (C header files for API's or user interface sketches, for example) can be built as a proof-of-concept models. The design phase will include at least one preliminary design review meeting and end with a critical design review.
4. Implement
If building something, this means coding. If not, it means training. In both cases, it means installing the software and getting it configured properly for our environment.
5. Test
Both the design phase and research phase will result in items that we place on a test plan list. This step involves verifying that we've met our requirements from step 1. After we've done our own testing, the users will be invited to break it and give their final stamp of approval, or send us back to the design/implement phase if needed.

Project Summary and Status "Dashboard"

The table below summarizes the overall progress of the project. Each cell will give up to three things, if applicable:
  1. Item status
    Not started.
    In progress.
    Complete.
  2. A time estime in person-weeks
    • Requirements: time to collect all the requirements for a component.
    • Select: time to research the possibilities and pick a solution.
    • Design: design time, ending in a peer review.
    • Implement: time to generate the first functional version.
    • Test: time required to get the bugs out.
  3. Hyper link(s) to the actual work
    • Requirements: Comprehensive list of present and future requirements, prioritized by neccessity.
    • Select: Discussion of implementation options, and our choice.
    • Design: Documentation! (e.g. API header files, users manuals, GUI sketches.)
    • Implement: Description of the actual implementation (e.g. where are things installed.)
    • Test: The test plan page, which should include the status of how many of the tests have been met.
The number in parentheses after each item indicates which project goal requires the item to be complete. The project goals are:
  1. New data format. [1999 for CFH12K]
  2. Framework for Megaprime Data Acquisition. [1999-10 for Megaprime Design]
  3. Interface with Queue and Automation support. [1999-10 for Queue Design]
  4. New Hooks for External systems. [1999-10 for Queue Design]
  5. Remote access to system during observations. [2000-4 for Queue or earlier for Remote Obs Room]
  6. Integration with TCS. [2000-4 for Queue Testing]
  7. Failsafe operation modes. [2000-4 for Megaprime Testing]
  8. Parallelized command sequencer. [2000-7 deliver to CEA]
  9. FITS Data Capture Agent. [2000-7 deliver to CEA]
  10. Status Server. [2001-5 for Megaprime or MUCH earlier to benefit all instruments]
Interfaces
Requirements Select Design Implement Test
2 wk (RA/SI)
(incl. proto + server)
Status server API(2)
1 wk (RA/SI)
CORBA (ORBit, etc.?) Invent?
1 wk (RA)
libssp
4 wk (RA)
1 wk (SI)
1 wk (RA/SI)
FITS header API(2)
1 wk (RA/SI)
NOAO DCA, skycat, CFHT libff, CFH12K libfh
1 wk (SI)
libff, libfh
1 wk (SI)
1 wk (RA)
1 wk (SI)
FITS pixel data API(9)
1 wk (RA/SI)
NOAO DCA, read/write (NFS)
1 wk (SI)
1 wk (SI)
2 wk (RA/SI)
1 wk (SI)
Messaging API(8,3)
0 wk (??)
rpc, RMI, director commands
0 wk (??)
libcli
0 wk (??)
2 wk (SI)
External Messaging API(3) (same as internal Messaging API, libcli)
1 wk (SI)
Pipeline/Archive Interface(4)

1 wk (SI)
1 wk (SI)
2 wk (RA)
Protocols
Requirements Select Design Implement Test
(|| API)
Status server protocol(10)
1 wk (RA/SI)
SQL, Channel Access, Invent?
2 wk (SI)
SSP
(|| Server)
(|| API)
(|| API)
FITS header protocol(9)
(|| API)
PVM ala NOAO, line-by-line over a socket
(|| API)
(|| DCA)
(|| API)
(||API)
FITS pixel data protocol(9)
(|| API)
PVM ala NOAO, NFS, other?
(|| API)
(|| API)
(|| API)
(|| API)
Messaging protocol(8)
(|| API)
line-by-line commands/responses over an rsh connection
(|| API)
(|| API)
(|| API)
0 wk (SI)
Sharable CLI protocol(5)
0 (use director)
shared memory
1 wk (SI)
redesign use of shm)
0
(|| director testing)
1 wk (SI)
Sharable GUI protocol(5)
1 wk (SI)
VNC socket protocol, X with remote DISPLAY, HTTP/RPM
1 wk (SI)
set up logins to automatically start Xvnc?
1 wk (??)
Components
Requirements Select Design Implement Test
(|| API)
Status Server Engine(10)
2 wk (RA/SI)
Sybase, PCAS, Something new?
1 wk (RA/SI)
Status server
3 wk (RA)
2 wk (SI)
1 wk (RA)
Status Server Database(2)
1 wk (RA)
Tree/relational?
3 wk (RA)
Design the tree
2 wk (RA)
Implement method of feeding status server
0 wk (??)
(not applicable?)
1 wk (SI)
FITS Data Capture Agent(9)
2 wk (SI)
NOAO, is it fast enough?
0 wk (??)
2 wk (SI)
Install and configure DCA?
2 wk (RA)
(Requires fake "MA" to send pixels)
3 wk (JL)
Graphical User Interfaces
2 wk (JL)
Look at current technology of tools
2 wk (JL)
Complete set of Sketches of all GUIs
7 wk (JL)
3 wk (JL)
1 wk (??)
Session Manager
1 wk (??)
Simple form + agent?
1 wk (??)
Command set?
2 wk (??)
1 wk (??)
0.5 wk (RA)
(write up) VxWorks Remote Shell
1 wk (RA)
VxRshd (comes with tornado?)
0 wk (RA)
(mimic Unix rshd)
1 wk (RA)
Re-visit code
1 wk (RA)
Test under correct version of VxWorks
1 wk (RA)
"MA" (Megacam Agent)(2)
0 wk (??) (N/A)
1 wk (RA)
Finalize command set
2 wk (RA)
Implement skeleton command parser
1 wk (SI)
(test with session and DCA)
1 wk (RA)
TCS Agent(6)
0 wk (??)
Custom CLI
(|| req)
Command Set
3 wk (RA)
1 wk (RA)
1 wk (??)
Data Logger Agent(10)

Replaces loggerh from Pegasus
1 wk (??)
Command Set
2 wk (??)
1 wk (??)
1 wk (??)
Database Agent(4)

Feeds FITS headers to database
1 wk (??)
Command Set
2 wk (??)
1 wk (??)
1 wk (??)
"Fake" Generic Agent(7)

Replaces any agent
1 wk (??)
Configurable by commands?
2 wk (??)
1 wk (??)
1 wk (??)
Image Viewer(1)
2 wk (??)
skycat, gaia, panorapix, saoimage ds9, karma
1 wk (??)
Plan how to combine features
5 wk (??)
Integrate missing parts of other viewers into the most complete one
2 wk (??)
Try to optimize it, crash it.
0.5 wk (??)
Conversion Tools(1)

mef/splitmef utilities

2 wk (??)
0.5 wk (??)
1 wk (??)
Image Analysis Tools(1)
1 wk (??)
Upgrade iqe?, iraf installation
1 wk (??)
Plan integration with session, write manuals
2 wk (??)
Make tools available in sessions
2 wk (??)
Optimize, double-check results of analysis
1 wk (??)
Command Sequencer Engine(8)
0 wk (??)
(use director)
2 wk (??)
3 wk (??)
2 wk (??)
1 wk (??)
High Level Scripts

like ccd mama in Pegasus, message bus, broadcast, registered table?
1 wk (??)
High level flow diagrams
2 wk (??)
1 wk (??)
1 wk (JL)
Example Scripts for Observers
1 wk (JL)
Python? Tcl?
2 wk (JL)
Pseudocode / documentation
1 wk (JL)
Working examples
0.5 wk (JL)
0 (done)
Sharable CLI(5)
0 (use director)
"clones"
0
0
0
1 wk (??)
Sharable GUI server/client(5)
1 wk (??)
Xvnc/vncviewer, RPM/Netscape
1 wk (??)
Describe impact on login process
6 wk (SI)
Hack session greeters, hack VNC to read input devices
3 wk (??)
Test from various platforms, optimize performance

Multi-headed Display(5)
1 wk (??)
Xvnc + 3 viewers, HP SLS, X-Free multi-head

4 wk (SI)
Hack X server to run multiple monitors
2 wk (??)
Verify stability of X server.
0.5 wk (??)
Window Manager
1 wk (??)
fvwm, mwm, dtwm, fvwm95, gnome/enlightenment
1 wk (??)
Sketch desktop layout, update fvwm login flow diagram
2 wk (??)
Upgrade/install site-wide
2 wk (??)
Purify
0.5 wk (JL)
Session Tools
1 wk (JL)
terminal window, calculator, shell, calendar, system status, editors
0 (|| winman)
2 wk (??)
Upgrade/install site-wide
2 wk (??)
Purify terminal (for director), check color and resource issues
Overhead
???
FITS Header Specification?
1 wk (SI)
Coding Standards
1day/wk (SI)
Project Management Stuff