The problem being addressed is the definition and representation of dependencies among system and software components. "Dependency" is any situation involving two or more elements such that a change in one or more elements leads to a potential for change in one or more other elements. We establish a definition for dependency, an ontology of dependency types, and lay the groundwork for incorporating dependency knowledge into conceptual graphs, a well-known knowledge representation capable of representing software specifications, and provide some examples of its usefulness. We then compare our approach with existing approaches.