We examine techniques for scalable engineering of specifications. Refinement builds more detailed specifications out of more abstract one. Composition combines component specifications to specify complete systems. We examine the manifestation of these ideas in various settings including temporal logic as well as considering a framework for thinking about refinement and composition based on category theory.