As software becomes more complex and needs to operate in more open environments, the relationships between the encapsulated entities that constitute the software can become nondeterministic. In a number of branches of computer science, organisational mechanisms and structures have been seen as a way to coordinate the complex behaviour between software entities. In particular, organisational abstractions have been viewed as a way of handling complexity in various multi-agent system methodologies, and various object-oriented and role modelling methodologies that focus on collaborations. Organisational mechanisms and structures need to be appropriate to the types of software entity being organised. We define five levels of autonomy and discuss the relationship of these levels to different mechanisms and modes of software organisation. This paper proposes that the degree of the autonomy and capability of the entities determines what organisational abstractions are appropriate. In particular, it is posited that organisation structures based on roles with differentiated autonomy are necessary in complex open systems.