Characterizing complex product architectures