For developing a very efficient system, it has to me modulated, in a way each module has its own functions and communicates with other modules through the whole system. In order to maintain the efficiency of this system is by analyzing every module at its own way. Seeing each and every module as a black box, that receives information from other modules to perform a very complex task, the way of looking to all modules as a black box is in point of view from seeing the whole complete system. But like a microscope, by observing each module will give the information of that special feature each modules performs. By mentioning modules it also comes the term component, in a well designed system, it has to have a balance between modules and component, trying to assure low coupling and high cohesion. Depending on the systems problem complexity, it as a certain type of architecture, such as, layered architecture, pipe and filter architecture, client server architecture, component based architec...