It is natural that during the process of interface development the programmer will want to put a wide range of flexibility into algorithm control. On the other hand users may wish a single button press system. The easiest way to achieve this is to place all algorithmic options a level further down in the GUI than the display and function calls (generally hidden from the user).
It would be advantageous to be able to automatically configure the software for a particular algorithmic variant. This would be best achieved via the use of a replayed interaction sequences or macro. Editable interaction sequences (if human readable) can also provide a high level interpretted programming language for users who wish to modify algorithms without getting involved with programming. In order to use algorithms in this way a standard procedure will need to be adopted for error reporting so that any algorithmic failiures are logged in a common location easily accessible to the user.
Users will also need to make repetitive use of algorithms, applying them to many images, either as volumes or sequences. As the users will not want to sit at a terminal repetitively pressing buttons but the programmers will not want to have to write software wrappers for individual users, this too may be best handled using macro replays.
Users, more than programmers, will probably need to use several software packages. We cannot enforce a common data format for acqusition, so a wide range of common data formats will have to be supported in the libraries.
In conclusion the users will require
This functionality must be provided in a manner that is maintainable, and that will require some element of future proofing (we must choose ways of doing things which are likely to be long lived and easily updated).