Data abstraction is a platform architecture feature to limit the code that can directly access the representation of a particular collection of data. The code to which such access is limited is called the custodial code here. Data abstraction is motivated on several grounds, usually just one at a time:
Data abstraction has runtime costs. The two sorts of data abstraction that I am aware of are dynamic and static. The Keykos brand provides dynamic abstraction with new abstractions arising at run time, à-la Morris. Some computer languages provide static abstractions fixed at compile time. Some hardware architectures have made dynamic abstraction quite low cost whereas conventional hardware requires a trip thru the privileged code. Integrated Development Environments, to my knowledge, do not support the 2nd purpose of abstraction via language features.
Synergy goes beyond abstraction to protect data from access outside custodial code even when that data is held by agents outside that code. Abstraction goes beyond synergy by providing some verifiable type information.
Nexus on abstraction