1. A method of factorizing a set of requirements, the method comprising: receiving a first plurality of requirement terms; receiving a glossary having a second plurality of requirement terms with matching requirement term synonyms; determining whether a first requirement term from the first plurality of requirement terms is identical to a second requirement term in the glossary; replacing the first requirement term with a matching requirement term synonym of the second requirement term based on the first requirement term being identical to the second requirement term; generating a first graph having a plurality of matching requirement term synonyms represented by nodes connected by lines, each line representing a type of relationship; determining a relationship strength between the nodes connected based on the type of relationship represented by the lines connecting the nodes; grouping the plurality of matching requirement term synonyms into one or more clusters based on the relationship strength between the nodes; separating the one or more clusters into one or more modules based on relationship strength between the nodes and a maximum number of requirements allowed in each module; generating a second graph having the one or more modules; translating the second graph into human-readable documents and machine-readable files; and exporting the machine-readable files to a software design tool.