Virtual reality systems are a kind of complex software systems that need a lot of effort and resources during its development phase. Because rigid and monolithic approaches for these systems have been used in the past, maintenance and evolution activities become difficult tasks to carry out. Today, software architectures are used for designing more maintainable and modular systems, but previous experiences in the virtual reality field didn’t pay much attention to the usage of appropriate architecture descriptions. In this chapter we describe how the design of virtual reality systems can be improved with software architectures. Our main goal is to provide guidance in the design of virtual reality systems that can be reused for similar applications. A software architecture-centric approach is proposed and used to tackle certain problems that affect the construction of this kind of software intensive systems.
The main challenge of a virtual reality (VR) system is to simulate the real world in a virtual environment, making it real for the users who are immersed in it. A virtual reality system has special characteristics that differ from other types of applications. Some of these characteristics introduce a factor of complexity in the development of such applications. For instance, immersive VR systems need special hardware devices (e.g., head-mounted display, 3D haptics, etc.), which are used to provide the interaction between the user and system. This multimodal interaction often complicates the design of graphical user interfaces. Moreover, the presence of the user in the virtual scene results key for many VR systems where virtual users (i.e., an avatar) interact and manipulate virtual objects in the same way as they do in the real life.