- A mental model that removes or hides complex details
- Includes info required to accomplish a goal, leaves out info that would complicate
- Only focus on info needed to get the job done
- When programmers eliminate the need/ability for one part of a program to access information from another part
- Encapsulation, service boundaries, etc.
- Design feature that gives rise to abstractions that make things easier to work with