Open architectural design: an approach to managing complexity and uncertainty in an open design process