Engineering and managing software requirements