This book explores the use of an algebraic (software) specification language (ASL) in the description and modelling of natural language grammar. It is particularly concerned with the application of methods of loose specification and stepwise refinement, and modularisation and parameterisation. Some background on the use of specifications in software engineering is provided, as well as suggested benefits one might obtain from their use in the description of grammar. An abstract description of constituency is given, independent of concrete styles of grammar, which demonstrates the need for an intensional domain. By enriching this domain, we can deal with matters such as agreement. Abstract specifications are developed for core treatments of PATR, LFG, GPSG, and HPSG. Some consideration is given to the use of 'institutions' to allow us to work in different (logical or programming) languages.