MOOC Phase I Goals (Tentative)
-
C++ Implementation
-
Make the initialization of the alarm, snapshot, and ftp related parts of
an object sensible.
-
MOOC improvements
-
Improve code quality. This will enable people to maintain and understand the new MOOC.
-
Bug/Design fixes
-
Add byte-swapping in alarm blocks.
-
Do not encode class number in the SSDNs. The object id implies a class number.
For the benefit of software that needs to know the class/type of a
device, a new property index should be added for device type, then
software can get device class/type with a RETDAT request.
-
MOOC should not round odd lengths to the next larger even integer.
-
Clean up the MOOC method signature to reduce the use of casts and void
pointers. The MOOC method signature has a pointer to the object's
instance variables, eliminate this pointer and use C++'s this pointer.
The MOOC method has a void pointer, typically called req, which is cast
to a reading or setting structure, have two seperate signatures one for
reading and one for setting to eliminate the cast. Have the data
in the same place for both reading and settings. The MOOC method
is passed the class number, eliminate this.
-
MOOC should not be rshing to crusher to get the time and date.
-
Standardize semantics
-
The relationship of channel and offset to each other varies.
Sometimes they are orthogonal, sometimes they represent displacement along
the same axis. Channel should be orthogonal to offset.
-
Establish a standard mechanism for accessing structure members that is
not based on the network request specifying an offset in bytes into the
structure.
-
New features
-
Use logging facility developed by Rich Neswold for beamlines integration.
Have a mechanism to selectively control what is logged.
-
MOOC should handle converting data from and to network representation.
-
Give the front-end developer more of the SSDN to use for their own purposes.
-
Allow channels greater than 255.
-
Allow alarm scan rate to be configurable on a per class or objecct basis
-
Software engineering / project management
-
Single-source MOOC
-
Revision control
-
Easy-to-use development, build, and install procedures used by all front-end
developers
-
Handles hardware diversity, e.g., differing processors and TCLK hardware
-
Standard directory structure for MOOC based front-ends on crusher and oper
-
Manage releases of MOOC so that front-end developers can upgrade at their
convience
-
Standardize the names of important files, e.g., startup scripts.
-
Supports/enforces coding standards
-
Easy-to-use test procedures used by all front-end developers, this may
be too ambitious for phase I
-
Automated regression testing
-
Coding standards/guidelines
-
Compiles clean with all warnings enabled. Is there a C++ lint?
-
Standard formating, hopefully automated with cb or indent. Use tabs for
each indent level?
-
Default in switch, always use braces, variable naming standards, use of
global variables
-
Coordination among MOOC developers and users
-
Code reviews (developers only)
-
Adequate user documentation for MOOC
-
Mechanism, perhaps a mailing list, for asking questions about MOOC, reporting
bugs, requesting features, informing users of changes, etc.
Security, Privacy, Legal