This document discusses different techniques for specifying software operations, including contracts, pre-and post-conditions, decision tables, structured English, activity diagrams, and the Object Constraint Language (OCL). Contract-based specifications focus on inputs and outputs without detailing implementation. Non-algorithmic techniques like decision tables and pre-post conditions specify what an operation should achieve without how. Algorithmic methods like structured English and activity diagrams describe the logic and flow. OCL uses context, properties, and operations to write constraints for modeling elements. The document provides examples and explanations of how to apply these various specification approaches.