Rather less familiar, but very important, is Parnas's concept of designing a software product as a family of related products.11 He urges the designer to anticipate both lateral extensions and succeeding versions of a product, and to define their function or platform differences so as to construct a family tree of related products (Fig 19.3).