An Actor can be:
A Primary Actor. It has user goals fulfilled through using services of the System. A Secondary Actor or Supporting Actor provides a service to the System. Often it is another computer system but it could also be a person.
Sorry. I didn't mean to give a strict definition of an "actor", just the typical use. An "actor" to me has always implied something
external to the system under consideration, so I looked it up.
In my copy of "The Unified Modeling Language User Guide" (Booch, Rumbaugh, Jacobson), an actor is defined as: "
a coherent set of roles that users of use cases play wben interacting with the use cases" (p457). This is clarified again on page 222: "
An instance of an actor, therefore, represents an individual interacting with the system in a specific way. Although you'll use actors in your models, actors are not actually part of the system. They live outside the system".
In "UML Distilled, Second Edition" (Fowler), it becomes clearer: "
An actor is a role that a user plays with respect to the system. ... (yes, I know it would be better to use the word 'role', but apparently there was a mistranslation from the Swedish.)". (p42)
While I'm happy to use models with non-humans playing the roles, the essence of the concept of "actor" is the role(s) it plays. It shouldn't make a lot of difference to the model if the roles associated with any given actor are played by a human, a machine, or a monkey.
If, in the original model which started this
thread, the "shared library" is really independent enough to represent roles which could be played by other systems or even by people, then it might be useful to consider it an actor. Otherwise it's part of the system.