Reuse release equivalence principle
The formal defintion for Reuse/Release Equivalency Principle is: “The granule of reuse if the granule of release. Only components that are released through a tracking system can be effectively reused. This granule is the package.”
Package is used as the unit of distributing a software system. When one of the components in the software system want to be reused in other applications, then package is the concrete unit should be used.
A package provides a set of functions required by the design contract. Hence it is treated as a functional unit. If other application needs such a function sets, then the package is put into place to serve the functionalities required by design.
Why it is not class? Class itself is considered too small if proper object oriented principle are used in a design. A set of functionalities are always provided by more than a class. In this case, the emphasis is “functional unit” rather than physical code unit, hence package is commonly the better candidate both in theory and in practice.
More information can be found in Robert C Martin's book: Agile Software Development, Principles, Patterns, and Practices (2003) published by Pearson. (http://www.pearsonhighered.com/academic/product/0,,0135974445,00%2Ben-USS_01DBC.html)