Overview
The importance of good software practices in academia is not to be
underestimated. Software is used by more and more EE research
projects to explore research areas. Published software should be
looked upon as a form publication similar to publishing a paper.
When students leave the university, they often continue developing
software in industry. We should be training students on platforms
and products similar to what they will use, and we should train
students in modern software engineering techniques where we can.
We should favor common off the shelf (COTS) tools where ever we can, and
avoid custom, baroque, hard to maintain tools.
The process of releasing research software has many benefits
The release effort needs to be intimately associated with the
development effort. It can be very difficult to pull together a
package that was not developed with a release in mind. Such software
is usually poorly documented, has few tests and is very disorganized.
With the advent of 'Internet Time' releases, where companies such
as Netscape had two separate development teams working on a leap frog system
of releases, the line between release and development has blurred.
If nightly builds are used, then in effect, a release is created
every day. The nightly build release can be valuable for quick developers
releases to interested parties. If nightly builds are done, then
changes that break the build are quickly identified, and developers
can quickly fix them.
If GSRC software groups follow a common set of standards, then it
will be easier to cooperate and use each other's work. If there are
no GSRC-wide standards, then each group will have to spend time
determining their own standards for software development. It would be
even worse for groups to have no standards, and that are just hacking
away as heroic programmers running from fire to fire.
Acknowledgements
This document came about from work with John Reekie and Edward A. Lee, and a very good discussion with Igor Markov.
|