The derivation of a specification document that is understandable, precise and unambiguous is indispensable to successful software development. This work investigates the advantages and disadvantages of four different specification approaches which vary in their degree of formality. The thesis outlines qualities of a good specification. An example requirements specification of a case study system is produced using each technique. The four specification approaches are ad hoc natural language approach (informal), threadsbased technique (structured informal), Computer-Aided Software Engineering (CASE) methodology Structured Analysis (semi-formal), and the mathematical notation Z (formal). The specification techniques are compared based on their likelihood to produce a specification document which is useful to customers, design engineers, test engineers, and maintenance personnel. The main conclusion is that using techniques that provide both a high degree of guidance and process description for deriving the specification is critical to achieve high quality specifications. Hence, a good specification technique must inherently have guidelines that facilitate the specification of requirements in an understandable, precise and unambiguous manner.