Used extensively, e.g. variables, objects, data structures. Helps maximize chances of solving a problem by separating out component parts and deciding which are worth investigating. Makes a problem easier to understand, a system quicker and easier to use, or a problem easier to solve or program. Allows concentrating on one thing at a time in a complex system.