Pattern-Oriented Software Architectures: Programming Mobile Services for Android