Specification Facets for More Precise, Focused Documentation by Gary T. Leavens and Clyde Ruby Abstract Specification languages could aid reuse to a larger extent if they could document all important facets of software, not just functional behavior. Since a specification language designer cannot know exactly what aspects of a piece of software will be important, users should be able to do ``metaspecification''; that is, users should be able to declare new facets, and then use these facets to specify their software. Examples of facets that users might want to specify include time and space usage, safety considerations, aliasing, error checking, the user interface, etc. Copyright (c) Gary T. Leavens and Clyde Ruby, 1997. Keywords: reuse, formal specification languages, metaspecification, facets, expressiveness. 1993 CR Categories: D.2.1 [Software Engineering] Requirements/Specifications --- Languages; F.3.1 [Logics and Meaning of Programs] Specifying and verifying and reasoning about programs --- Assertions, invariants, pre- and post-conditions, specification techniques.