-It is a programming technique that produces relatively small, easily understandable computer modules.
-A complex or large program is broken into number of logically self contained modules.
These modules may be written and tested separately by number of programmers.
Finally, the modules can be then put together to form the complete program/system.