### 1.3 Design goals ¶

DejaGnu grew out of the internal needs of Cygnus Solutions (formerly Cygnus Support). Cygnus maintained and enhanced a variety of free programs in many different environments and needed a testing tool that:

- was useful to developers while fixing bugs;
- automated running many tests during a software release process;
- was portable among a variety of host computers;
- supported a cross-development environment;
- permitted testing of interactive programs like `GDB`; and
- permitted testing of batch-oriented programs like `GCC`.

Some of the requirements proved challenging. For example, interactive programs do not lend themselves very well to automated testing. But all the requirements are important. For instance, it is imperative to make sure that `GDB` works as well when cross-debugging as it does in a native configuration.

Probably the greatest challenge was testing in a cross-development environment. Most cross-development environments are customized by each developer. Even when buying packaged boards from vendors there are many differences. The communication interfaces vary from a serial line to Ethernet. DejaGnu was designed with a modular communication setup, so that each kind of communication can be added as required and supported thereafter. Once a communication procedure is written, any test can use it. Currently DejaGnu can use `ssh`, `rsh`, `rlogin`, `telnet`, `tip`, and `kermit` for remote communications.