A service level agreement defines the support you, the developer, will provide to users after delivery of software (and sometimes during development). Every piece of software that is handed over to a client or deployed for users should have a service level agreement. A service level agreement might include key constraints (number of user), duration of support, end of life expectations, time to respond for feature request, downtime and outage allowances, etc.