1. A method comprising: receiving, over an electronic communication network, at a computing device including a processor and a communication interface coupled to the electronic communication network, product data relating to an existing first computer software product, the product data comprising at least one of feature data, functionality data, user interface data, and/or code metadata relating to the first computer software product; selecting from the product data a set of epics that describe functional aspects of the first computer software product according to a predefined selection criterion; generating a product description ontology of the first computer software product from the selected set of epics; receiving a plurality of product description ontologies of a plurality of second computer software products; comparing the product description ontology of the first computer software product with the plurality of product description ontologies of the plurality of second computer software products; in response to comparing the product description ontology of the first computer software product with the plurality of product description ontologies of the plurality of second computer software products, generating a list of product functions that are missing from the first computer software product but that are relevant to the first computer software product; weighting the list of product functions that are omitted from the first computer software product but that are relevant to the first computer software product; and outputting the weighted list of product functions that are omitted from the first computer software product but that are relevant to the first computer software product.