A precise statement of the effects that the software component of a system is required to achieve. When developing a system, production of the software requirements specification is typically followed by a period of preliminary investigation and high-level design. It is then possible to identify any necessary hardware components of the system and to produce the software component specification for the software component.
A software component specification should be detailed, focusing on what the software is to do rather than how this is to be done. The traditional use of natural language for this purpose is being superseded by use of more formal notations.