the process by which you break up large blocks of code into smaller pieces (modules) that can be called by other modules.