1. A method for managing, in a computer system, design of a software system, the method comprising: parsing the software system in a computer process to produce a stored representation of the software system including subsystems and dependency relationships among the subsystems; providing a graphical interface for receiving user input of a new rule governing a dependency relationship among at least two of the subsystems; storing the new rule as part of a set of rules, such rules being applied via a rule engine, such rules and the stored representation being collectively treated as a project; causing graphical display of the stored representation of the software system, and using the rule engine to provide visual indication, in the display, of subsystems with respect to which the new rule has been applied; wherein at least one of the graphical interface and the graphical display provides a display of the subsystems in a hierarchy within a dependency structure matrix, wherein the dependency structure matrix is a symmetric matrix in which a corresponding row and column relate to an identical subsystem and each cell of the matrix has a value indicative of the presence or absence of a dependency; and wherein levels of hierarchy of the system are displayed in a row or column header of the dependency structure matrix, and such header can be selectively expanded or collapsed by user graphical selection therein, such selection automatically altering the display of the hierarchy and of the dependency relationships among the subsystems to be consistent therewith, and causing an update of the stored representation of the subsystems and dependency relationships among the subsystems to reflect the graphical user selection and wherein the new rule is visually indicated in a cell of the matrix at an intersection of a column corresponding to one of the at least two subsystems and a row corresponding to another one of the at least two subsystems.