(1) As a process, encapsulation means the act of enclosing one or more items within a (physical or logical) container. (Parnas 1972).
(2) A software development technique that consists of isolating a system function or a set of data and operations on those data within a module and providing precise specifications for the module. (IEEE 1990).
(1) Parnas,D. 1972. "On the Criteria To Be Used in Decomposing Systems Into Modules," Communications of the ACM, 5:(12) (December 1972) 1053-1058.
(2) IEEE. 1990. Standard Glossary of Software Engineering. Washington, DC, USA: Institute of Electrical and Electronics Engineers (IEEE). IEEE 610.12-1990.
Much of the thinking in software engineering on abstraction, information hiding, and encapsulation was shaped by the classic 1972 paper by David Parnas. Parnas recommended that design decisions be encapsulated, especially decisions that are likely to change. This approach limits the rippling effect of a change in one element of a system so it does not result in changes spreading throughout the system.
Developments in Modular systems and in Object Oriented Programming and Design have largely been based on these ideas.
More generally System Encapsulation encloses system elements and their interactions from the external environment, and usually involves a system boundary that hides the internal from the external (see Concepts of Systems Thinking). Encapsulation can occur naturally in complex systems, as in the organs of the human body, or it can be used as a design strategy in man made systems.