Model-driven derivation of product architectures