Software maintenance is defined in the IEEE Standard for Software Maintenance (IEEE 1219) as "the modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment".
IEEE 1219 considers that maintenance are activities after delivery. This is a point that requires two considerations:
- Some other definitions consider that activities prior to delivery that are oriented to ease maintenance should also be categorized as software maintenance.
- "Delivery" is to some extent a matter of convention in some kinds of projects. While for typical software development contracts delivery is clearly specified as a milestone in the development plan, in projects as open source initiatives this is not clear-cut.




