During the last years, Intelligent Virtual Environments for Training have become a quite popular application of computer science to education. However, little attention is being paid to software engineering issues, and most systems are developed in an ad-hoc way that does not allow the reuse of their components or an easy modification of the application, even though some authors claim that the use of agents makes systems be more modifiable. We describe an agent-based software architecture that is intended to be easily extended and modified. This architecture is a redesign of a previous one using more formal principles and methods of software architecture design.