In this paper we present a method for designing families of products built onto modular platforms. A product platform is the set of components and subsystems shared across multiple products offered by a firm. A modular platform is one that allows for swapping of modules to configure multiple products in a family. The problem of designing a family of products based on such a platform is formulated as an optimization exercise, from which an implementation is derived. The method allows for the design of the modules that are shared across multiple members of the family, or the platform, as well as the portions of the products that are individually designed, or the variants. The result is a candidate design for the product family: both the combination of which modules should be shared and across which of the products, and the desired settings for the shared modules and the individual portions of each variant. The procedure is illustrated by an example of the telecommunications subsystem design for a set of spacecraft. The optimum degree of commonality for the set of products is found, as well as optimum settings for the common modules.