Software service organizations typically develop custom solutions from scratch in each project engagement. This is not a scalable proposition, since it depends too heavily on labor alone. Rather, creating and reusing software "assets" is more scalable and profitable. One prevalent approach to building software solutions is to use service-oriented architecture (SOA) to compose software services to support business processes. In this context, the key to reusing assets is to discover (from existing assets in a portfolio) or derive service variants to meet the requirements of a stated business process specification. To that end, this paper presents our Variation-Oriented Service Design (VOSD) algorithm for the same. Via IBM's Rational Software Architect modeling tool, we also demonstrate the practical usefulness of our algorithm via a prototype implementation in the insurance domain.