All applications have dependencies5, and these dependencies will have their own dependencies. OTP applications usually share no state between them, so it’s possible to know what bits of code depend on what other bits of code by looking at the app file only, assuming the developer wrote them in a mostly correct manner.
Figure 1.1 shows a diagram that can be generated from looking at app files to help understand the structure of OTP applications.
Using such a hierarchy and looking at each application’s short description might be helpful to draw a rough, general map of where everything is located. To generate a similar diagram, find recon’s script directory and call escript script/app_deps.erl6. Similar
Figure 1.1: Dependency graph of riak_cs, Basho’s open source cloud library. The graph ignores dependencies on common applications like kernel and stdlib. Ovals are applications, rectangles are library applications.
Figure1.1:riak_cs的依赖图示,Boaho开源云代码库,本图忽略了像kernel和stdlib类常用的依赖applications, 长方形表示library applications. hierarchies can be found using the observer 7 application, but for individual supervision trees. Put together, you may get an easy way to find out what does what in the code base. 层次关系还可以使用observer 7 application来查看,但只是针对个别supervisior树。把所有的汇总,你就可以轻松地深入代码。 [5]At the very least on the kernel and stdlib applications