Grundsätzlich sind Wartungsverträge bei Individualsoftware sehr üblich.
Der Fragesteller wirft hier jedoch verschiedne Aspekte durcheinander, die ich mal klarzustellen versuche:
Sicherheitslecks/Bugs/etc. fallen meist unter die zweijährige Gewährleistung, die somit durch den Entwickler der Software kostenlos korrigiert werden müssen. Je nach Schwere des Sicherheitslecks ist jedoch zu diskutieren, ob es als Bug oder als Issue zu definieren ist. Ersteres muss kostenlos korrigiert werden, letzteres muss per gesonderter Beauftragung vom Kunden angewiesen und gezahlt werden.
Performanceverbesserungen fallen -wenn nicht in der ursprünglichen Beauftragung bestimmte Anforderungen gestellt wurden, die nachzuerfüllen sind- nicht unter die Gewährleistung und müssen somit ebenfalls gesondert beauftragt und bezahlt werdne.
Das Implementieren neuer Features fällt ebenso nicht unter die Gewährleistung und muss ebenfalls beauftragt und bezahlt werden.
Ein Wartungsvertrag beinhaltet also keines der hier genannten Aufgaben, somit macht es auch keinen Sinn, für eine bestimmte monatliche Stunden- oder Aufwandszahl einen Wartungsvertrag zu machen. Stattdessen würde man dafür eine neue Beauftragung erstellen, in der klar festgelegt, wie hoch der Aufwand für die Änderung ist.
Ein Wartungsvertrag schließt hingegen folgende zwei Fälle ein:
1) Entweder eine Art "Rufbereitschaft" mit Festlegung der Mindestreaktionszeiten bei Problemen mit der Software.
2) Oder ein Vertrag über sich wiederholende Wartungsarbeiten an der Software, bei denen ein festgelegtes Zeit- oder Aufwandskontingent vordefiniert ist.