1. A computer-implemented method for modeling requirements of a product comprising the steps of: forming a use case diagram to define the requirements and features of said product, wherein said use case diagram programmatically incorporates functional requirements, non-functional requirements, hazards into a process model that defines an impact of each functional and non-functional requirement on said use cases and a relationship between each hazard and said process model; converting said use case diagram into a directed acyclic graph, wherein each use case corresponds to a node of said graph, and each relationship between a pair of use cases is represented by a directed edge between the corresponding pair of nodes in said graph, wherein a directed edge points from a parent node to a child node, converting said directed acyclic graph into a tree, and searching said tree to extract said requirements, wherein converting said directed acyclic graph into a tree includes, when a child use case node of said graph has a plurality parent node relationships of the same type, removing relationships edges according to a set of precedence rules, and saving said removed relationship edges as traces, wherein said precedence rules for relationships of the same type include retaining the relationship to a highest level parent node, wherein said highest level parent node will be that parent node with the fewest nodes back to the root node of said tree, retaining the relationship to a parent node in the same package as the child node, retaining the relationship to a parent node in a higher level package, and retaining the first relationship encountered when all of the preceding criteria are the same, wherein said steps of forming a use case diagram and converting said use case diagram into a directed acyclic graph are performed by a computer processor.