Typical SOA-based solution design involves development of multiple inter-connected models using model-driven development (MDD) techniques. Hence these models are first created in platform neutral form and subsequently transformed through decreasing levels of abstraction before getting into executable form. Therefore creating and reusing variations of these models, for the purpose of enhancing reuse is a difficult challenge. In our earlier work, we had proposed techniques for developing variability models and deriving valid variants of services in a SOA-based solution. But our earlier work lacked a formal semantics for modeling and generalizing variations at different levels of abstraction. In this paper, we present the formal semantics via our Variability Algebra. Via this algebra, we show how variation oriented design of SOA-based solutions can be made a formalized, repeatable and verifiable exercise that helps maximize reuse. We also demonstrate theoretical results that can help optimize the generation and integration of service variants into an SOA-based solution. Throughout this paper, we illustrate our ideas on a running example.