The entire Android-based code
was broken down into separate weakly coupled modules, which could be taken by different people without putting on pause another developer’s work. We have separate graphical reusable modules, like some repeating screen layouts, specific UI components as well as technical modules, like working with the audio. We also used Dependency injection, so the object’s attributes could be configurable by the external entities in the system.