2009-05-29 14 views
6

Dove dovrebbe essere tracciata la linea tra manutenzione e nuove funzionalità?Ciò che si qualifica come manutenzione rispetto all'aggiunta di nuove funzionalità?

L'Oxford English Dictionary definisce la manutenzione come:

(7.a) L'azione di tenere qualcosa in ordine, di riparazione, ecc .; il mantenimento di un edificio, di un'istituzione, di un corpo di truppe, ecc., fornendo mezzi per l'equipaggiamento, ecc .; lo stato o il fatto di essere così tenuti; mezzi o disposizioni per la manutenzione.

Sto lavorando con un'applicazione client-server e mantenendo il client. In linea con la definizione, mi sarei aspettato da eseguire:

  • Bug fixing
  • Adattamenti API (piccole modifiche necessarie per il cliente di continuare a lavorare con il server)
  • di ottimizzazione per problemi di performance individuati

non mi aspetterei da eseguire:

  • nuovo sviluppo (l'aggiunta di nuove funzionalità)

La Wikipedia Software Maintenance pagina riferimenti correttiva, adattiva, perfective, e la manutenzione preventiva, che sembrano cadere in linea con ciò che mi aspettavo, ma la natura client-server genera complicazioni.

MODIFICA: Con applicazioni autonome che non hanno dipendenze, se il software funziona dovrebbe continuare a funzionare. Con le applicazioni client-server, il client potrebbe interrompersi quando il server cambia. Sebbene ciò non cambi la definizione di manutenzione, implica che ci sono più opportunità e occasioni in cui saranno necessarie modifiche all'applicazione client.

Se due parti devono concordare un contratto di manutenzione, deve essere soddisfatta una comprensione reciproca di ciò che qualifica e manutenzione e ciò che si qualifica come nuove caratteristiche, quindi la domanda.

+1

In che modo l'architettura dell'applicazione influisce sulla definizione di manutenzione? Una nota a parte, 'manutenzione' nel mondo del software a volte include nuove funzionalità. –

+0

@ Harper Shelby - Vuoi approfondire la tua nota a margine? – JeffH

+0

@JeffH - Immagino che stia parlando di un contratto di manutenzione. Molte volte un cliente pagherà a uno sviluppatore un canone di manutenzione mensile/annuale che include alcuni tempi fissi per nuovi sviluppi o modifiche. –

risposta

4

Direi che la manutenzione è tutto ciò che si fa per garantire che il prodotto funzioni come originariamente progettato.

Il punto di attacco di solito è "progettato". Se non hai iniziato con una qualche forma di documento di progettazione dettagliata che specifica cosa farebbe o non farebbe il software, le cose stanno per essere interpretate. E quando le cose sono lasciate alle interpretazioni, in genere l'interpretazione dei clienti sarà che il software dovrebbe fare tutto quello che vogliono fare piuttosto che tutto quello che hanno pagato per da fare.

6

La linea tra correzione errori e funzionalità può risultare sfocata. Prenderò in considerazione miglioramenti dell'usabilità e funzionalità secondarie come manutenzione. La mia regola generale: se non vale la pena vantarsi dei propri clienti (o fare pagare), allora è la manutenzione.

Ad esempio, l'aggiunta di una funzionalità che consente all'utente di stampare sarebbe un nuovo sviluppo. La modifica della funzione per consentire all'utente di stampare un certo intervallo di pagine sarebbe la manutenzione (è minore, e probabilmente avrebbe dovuto funzionare in quel modo fin dall'inizio).

+0

Anche se un po 'allentato per un accordo legale o vincolante, mi piace molto questa definizione. –

1

Per correzioni di errori, è facile classificarle come manutenzione per la maggior parte.

Tuttavia, a seconda del prodotto software in uso, è possibile che si verifichino "nuove funzionalità" che richiedono una manutenzione continua dell'applicazione.

Per noi, ciò accade comunemente a causa di richieste commerciali da parte dei nostri clienti o da normative di terze parti. I clienti potrebbero voler correggere alcuni bug, ma allo stesso tempo ora dobbiamo supportare la gestione di un nuovo regolamento governativo che ci richiede legalmente di "tirarlo fuori subito!".

Quel cambiamento specifico è una "nuova funzionalità" ma verrà installato come parte della normale release di manutenzione dell'applicazione.

Direi che dipende in realtà dal modello che il tuo negozio desidera adottare e, anche in questo caso, ti imbatterai sempre in situazioni in cui si sovrappongono.

1

Le correzioni dei bug sono sicuramente di manutenzione.

L'aumento delle prestazioni (velocità) è manutenzione.

L'aggiunta di una funzione che doveva essere inclusa nell'ultima versione e che non era o che non funzionava, è la manutenzione (a mio parere).

Aggiungendo una nuova funzione totale, NON considero la manutenzione.

0

Per me un bug è manutenzione e un miglioramento non lo è.

Ma nella mia esperienza, i non codificatori spesso hanno difficoltà a distinguere i bug dai miglioramenti. Per loro, un bug è tutto ciò che non funziona nel modo in cui lo vogliono. Per me, un bug è qualcosa che non funziona come è stato specificato o progettato per.

Se la funzionalità avrebbe dovuto essere nella specifica originale ma non lo era, e il client si è disconnesso dalle specifiche, mi sembra un miglioramento (e quindi un lavoro retribuito aggiuntivo).

Naturalmente, ci sono anche le considerazioni "soft": per mantenere un buon rapporto è spesso prudente lanciare un paio di miglioramenti richiesti alla manutenzione senza alcun costo, specialmente se sono relativamente piccoli e si è in grado di gestire questa aspettativa abbastanza bene.

1

Ho lavorato in un posto (un venditore) che avrebbe combattuto il cliente ad ogni modifica, che erano tutte nuove funzionalità! Avrebbero detto al cliente che avevano acquistato gli insetti. Quello era un posto divertente dove lavorare! Avrebbero ceduto, ma ogni mese, quando mandavano un conto, "negoziavano" con i clienti. Tenete a mente, abbiamo venduto grandi sistemi personalizzati, ed è stato molto difficile per i clienti saltare la nave, e la direzione lo sapeva. era una seccatura come sviluppatore.

Penso che maint stia mantenendo il sistema in esecuzione, correggendo bug, mantenendolo compatibile con il sistema operativo e altri software necessari che potrebbero cambiare. Le nuove funzionalità sono funzionalità che prima non avevano.

+2

+1 per pietà per aver dovuto lavorare in un negozio di software così merdoso – dss539

2

Sulla base del SO/IEC 14764 specifica per la manutenzione del software e la mia esperienza di lavoro su siti web e applicazioni mobili, ho scritto un articolo specifico per la manutenzione rispetto allo sviluppo di nuove funzionalità specifiche per i prodotti digitali: http://www.rajiv.com/blog/2012/12/19/maintenance-vs-new-development/

Lo scopo dell'articolo per aiutare a rispondere a domande come: Cosa intendi per lavori di manutenzione? Quale dovrebbe essere considerata la manutenzione rispetto allo sviluppo di nuove funzionalità?Esiste una definizione standard del settore? Quali sono i nostri criteri di selezione? Potete fornirmi alcuni esempi? Quale rapporto tra manutenzione e nuove funzionalità è considerato best practice per il nostro settore? Come si confronta il mix della nostra organizzazione con quello?

Mi hanno fatto queste domande nella maggior parte dei lavori in cui sono stato. L'articolo mi aiuta a rispondere in modo specifico alla mia azienda.

Problemi correlati