A module generation algorithm for product architecture based on component interactions and strategic drivers