Understanding code

is there any help or documentation available on understanding the code of freepbx? I want to understand how the control is flowing in freepbx source code; where and how it is opening asterisk files for editing, saving, restarting the server etc. What code files anre placed in which folders and how are they associated. Want to know indetail