System Troubleshooting/Sectionalize the System
Most systems can be subdivided into smaller components. This is due to the fact that most large systems cannot be done by one person alone. Breaking the system into smaller components will simplify design and increase understanding of the big picture. This also allows for versatility in design by plug-n-playing different components together to achieve a larger or customizable system.
The jargon term for not knowing what the systems operations are but the expected results off of a given input is black box. What this means is I do not necessarily have to know what the component does as long as I know what is sent and the result that is produced.
You will run into may components that you are not sure of how they work but as long as you know what you are sending and the expended results are occurring they are normally working properly. Problems occur when a problem happens "some of the time" or under certain conditions. There can be many problems with this and isolating the condition and component will further your understanding into the system.