There really are two parts of your question here. The first is whether or not there are tools that can discover dependencies between CIs and the second is whether or not you can represent them. There are indeed deployment frameworks that can discover dependencies such as exist in a WebSphere or other robust application server although that is kinda like using a sledge hammer to open a walnut.
Probably more reasonable is using version control solutions that allow you to model your software in streams. IBM RTC and Accurev would be two products to look at to see a well defined stream based architecture. Your developers should build in the dependency map when they write the code - most likely using an XML file.