The branch of SoftwareEngineering concerned with the process of formulating, documenting and maintaining software requirements.