You do not need to store all your tool's information in the Repository. For example, suppose your tool helps application developers and systems engineers keep track of the bugs on their software systems. Your tool maintains modules, bug reports, and test suites. Each module has a name, an author, source code, and one or more bugs reported on it. Each bug can have a description, a module on which it is reported, and a test suite used to reproduce the bug. Each test suite can have one or more bugs that it can reproduce. Because your tool maintains each test suite in a file format, you decide not to explicitly insert each test suite into the Repository. Instead, you will store in the Repository only the name of a file containing the test suite.
To decide which information belongs in the Repository, consider the following questions:
The more information you store in the Repository, the more impact-analysis questions you can answer. Consider the example described above. Because the information model includes a class describing test suites, you can learn which test suite generates the most bugs.
Conversely, because the information model does not include a class accommodating individual tests or the persons responsible for them, you cannot use the Repository to learn which person discovers the most bugs.
There are two aspects to consider: