In telecommunications networks and open systems architecture a layer is a group of related functions that are performed in a given level in a hierarchy of groups of related functions.
In object-oriented design a layer is a group of classes that have the same set of (link-time) module dependencies to other modules, i.e. a collection of reusable components that are available for reuse in similar circumstances.