In software terms, what constitutes "independence"? One obvious symptom, so to speak, of independence would be physical separation from the user, such as is found in mobile agents; that is, agents which execute as separate processes or even on separate machines from the user who caused them to execute. The concept of mobility is discussed in a separate section of this paper.
Physical independence is however merely separation - remote procedure calls and many aspects of client/server systems achieve varying degrees of physical separation, but remain conceptually if not actually part of the user's environment. Removing the user's end of the equation typically extinguishes the separated process.
Independence is more than mere separation - the software needs to be able to continue to exist and to operate in the separated state. A background process in a multitasking operating system such as Unix could be seen to do this; in fact, it would seem to be a requirement for independence that from the user's perspective the system in use is multi-tasking, either by virtue of being a system of independently operating subsystems (whether single- or multi-tasking) or by being implemented in a multi-tasking environment such as Unix.
White (White, 1995) describes a mobile agent as one operating in a system where "ongoing interaction does not require ongoing communication". By ongoing, he means a continuously (or effectively continuously) available communication channel. Mobile agents, discussed at length in a later section, are the ultimate in separated processes. Not merely separate from the user's machine, mobile agents roam from machine to machine to complete their assigned tasks. The state of the originating system becomes, at least for part of the lifetime of such an agent, not only irrelevant but unknown.
The term "independence" as used in the literature has a wider meaning than separation, or even of operation in a separated state. It includes a significant measure of choice. As Jennings and Wooldridge (1995, p.2). put it, an agent "should have a degree of control over [its] own actions". This sentiment is echoed over and over in the literature. That is, to be independent, the software must be capable of deciding, while "abroad" how it will act. Separated, this decision making is perforce done in the absence of input or assistance from the user. By delegating a task to an agent, the user has implicitly given the agent some kind of permission to make choices. By extension, such an agent must have the capacity to make choices. Attributes such as context-sensitivity and adaptiveness are therefore important aspects of successful independence.
The concept of independence, as applied to agents, is very deeply entwined with the concept of intelligence. The facilities of an agent that allow it to operate separately, plus the facilities that allow it to decide what to do while operating separately, together constitute independence.