Domanda

Questa domanda potrebbe portare un sacco di opinioni al tavolo, ma quello che mi piacerebbe ottenere è un insieme di misure che mi aiuteranno e la mia azienda determinare la fine della vita di un prodotto che vendiamo.

Noi vendiamo un sistema CMS, con questo sistema abbiamo creato un paio di sotto-prodotti

  • sito web
  • Proposta Creatore
  • Marketing Campaign Tracker

Siamo pronti per iniziare la nostra progettazione stradale (per il 2010 e 2011) e stiamo cercando di capire quando sarà la fine della vita della nostra applicazione. Alcuni di voi potrebbero pensare che un'applicazione molto ben architettato (non credo che la nostra applicazione è ben architettato) non ha bisogno di avere una fine della vita, ma questa applicazione che stiamo utilizzando risale al almeno 6-7 anni e non ha quasi nessuna documentazione (vita reale). In questo momento solo una persona sa come cambiare le funzionalità di base (paura).

Si prega di consulenza,

Geo


Grazie a tutti! Apprezzo molto i vostri commenti, opinioni e pensieri su questo argomento.

affronterò alcuni di secondo palo domande nella lista qui sotto

  • C'è uno sviluppatore che è in grado di mantenere le funzionalità di base del nostro prodotto. (Solo e soltanto uno)
  • Ci sono due sviluppatori che sono in grado di aumentare la funzionalità ad un certo punto. Sia gli sviluppatori sono vincolati dalle limitazioni del prodotto principale, ed entrambi devono lavorare entro questi limiti.
  • Una nota molto importante. Il prodotto che stiamo considerando di mettere alla fine del ciclo di vita è per la maggior parte in fase di costruzione da un imprenditore. Il contraente è l'unico sviluppatore in grado di mantenere le funzionalità di base. Sviluppiamo solo sulla parte superiore del quadro contraente.

Io continuare ad aggiungere risposte, mentre ho letto tutte le risposte.

È stato utile?

Soluzione

Dal momento che l'applicazione è molto ben architettato non si può decidere di andare in pensione e perdere tutti gli investimenti che avete fatto fino ad oggi.

Qui sono i miei suggerimenti:

  • Avere uno sviluppatore Junior partecipare a questo sviluppatore corrente.
  • Dump la maggior parte dei futuri aggiornamenti su Junior sviluppatore (con l'assistenza di sr. sviluppatore)
  • Fai sviluppatore junior per fare il la documentazione del suo lavoro
  • Fai Sr. sviluppatore di rivedere documentazione

Nel periodo di tempo, si dispone di un'altra persona che può supportare questa applicazione e sarà documentata pure. Ora non sarà necessario uccidere la propria applicazione molto ben architettato con le proprie mani.

.

Estendere questa soluzione con Jefferey suggerimento di seguito ( "A volte riscrittura è un buon investimento".)

Se si desidera continuare a cadere applicazione e la corrente ri-scriverlo, è ancora necessario per documentare il sistema esistente e creare i requisiti per il nuovo sistema basato fuori di esso.

Utilizzando la documentazione del sistema attuale e proposto, si consiglia di vedere se è possibile in modo incrementale modulo per l'aggiornamento del modulo (ri-scrittura) componenti. Questo è possibile se l'applicazione è molto ben architettato.


Come per le vostre (GEO) commenti

L'organizzazione di Geo ha personalizzato di terze parti (con uno e un solo sviluppatore di contratto) applicazione CMS che implementa sotto i requisiti di business e sta pagando tassa di licenza per il supporto e l'uso del suo codice.

  • requisiti di business per CMS
  • sito web
  • Proposta Creatore
  • Marketing Campaign Tracker

Qui sono i miei suggerimenti

  • Creare modulo per modulo uso dettagliate documento caso per questo progetto. Il tuo sviluppatore può fare questo o sarebbe ideale per avere un business separato analista per stessa.
  • assumere uno sviluppatore Sr. per valutare se CMS open source in grado di gestire tutti o la maggior parte delle vostre esigenze (per esempio Joomla, Drupal, ecc.).
  • La cosa più importante qui sarebbe possibilità di migrare i dati esistenti al nuovo sistema. Potrebbe essere necessario l'aiuto di sviluppatore contratto esistente a fare questo.
  • Potrebbe essere necessario aggiornare affari processo o del flusso di lavoro di utilizzare le nuove sistema.
  • I moduli che non può essere attuato utilizzando CMS open source può essere richiesto essere implementato utilizzando personalizzato sito web.

Gran parte di essa dipende anche dalla vostra relazione commerciale con lo sviluppatore del contratto esistente e contratto di licenza. Quello che si trovano ad affrontare è un vendor lock nello scenario. Si consiglia di ulteriori ricerche su soluzioni per eliminare questo vendor lock in situazione.

Altri suggerimenti

Questa è solo la mia opinione, ma se questo è un prodotto che si sta vendendo, allora tutto si riduce a prospettive di business. Se il prodotto non vende, poi rilasciarlo. Se il prodotto ha un futuro, allora investire in essa, e ne fanno il miglior software è possibile da refactoring, la riscrittura, o qualsiasi altra cosa che devi fare. Se si dispone di clienti fedeli o un marchio forte, quindi che vale la pena proteggere.

A volte riscrivere il tutto in un'altra tecnologia è un buon investimento, se il software corrente ha un design di successo che può essere copiata, ha un marchio forte, e se può essere fatto a destra.

L'applicazione ha raggiunto la fine della vita nel momento in cui spedito senza alcun tipo di documentazione. Iniziare lo sviluppo ora, e si potrebbe prendere in considerazione di sostituire la persona che conosce il sistema originale. Se ne sono andati 6/7 anni senza creare alcun tipo di documentazione di sorta, non sono una persona che vorrete nella vostra azienda.

L'unico tipo di documentazione che si estenderà la vita del sistema sono cose che rimangono coerenti come i cambiamenti di sistema nella sua vita, come la suite di test, strumenti di autodiagnostica, commenti del codice, contratti dichiarativi come interfcaces e la documentazione generata automaticamente.

Altri manufatti documentazione gestite manualmente, come manuali, guide per gli sviluppatori, documenti di architettura, formati di dati tendono a diventare obsoleta in proporzione alla quantità di documentazione. Non ci conterei questi come fattori che aumentano la tua aspettativa di vita delle applicazioni meno che non abbiate già presi in considerazione i costi di mantenimento delle stesse.

Se non è possibile "permettersi" ridondanza sviluppatore di mantenere l'applicazione in modo affidabile, non c'è modo si può permettere di tenere la documentazione aggiornata. La mancanza di documentazione è in realtà un debito tecnica che hai deciso, forse inconsciamente, ad assumere. Se un ciclo di vita più lungo è un requisito, allora il costo di che deve soddisfare fattore in tale requisito.

Per fare una lunga storia breve: mi trovo in una situazione analoga

.
  • Fino a questa applicazione è qualcosa di simile a un CashCow, ma la società non può permettersi (o intendono) per sviluppare una nuova applicazione, non morirà prima che i clienti decidono di acquistare un sistema più fresco.

  • riscrittura senza requisiti (documentati) è quasi impossibile.

  • Almeno l'esperienza dei reparti specializzati, dovrebbero essere documentate in un modo che è utile per ulteriori sviluppi.

  • Se si deve mantenere questa applicazione, si dovrebbe introdurre interfacce tra i moduli, per ridurre la complessità generale. Quindi, i vecchi moduli non importa quanto Messie sono, non importa se si dispone di una nuova funzionalità del plugin.

Anche se è molto ben progettato e il funzionamento, il fatto che essa non ha alcuna documentazione e dipende da una sola persona per la sua vita, significa che il prodotto è molto ben entrato in uno stato impossibile da mantenere. Questo non è un buon segno. Sono d'accordo che il prodotto è passato lungo "fine vita":

Questi sono il genere di cose che potrei prendere in considerazione al momento di decidere se un sistema potrebbe essere in corso "end-of-life":

è la funzionalità che questo sistema fornisce a disposizione degli utenti finali in un più economico, più affidabile o più facile da usare modulo? Se non ora, poi, quando è probabile questo? È questo prodotto, pertanto fattibile nel lungo termine?

E 'questo scritto in una tecnologia che i clienti avrebbero prendere le distanze da quanto sarebbe imbarazzante per interfacciare nei loro prodotti, o richiedere loro di eseguire piattaforme "obsoleti"? Sarebbe dare un potenziale cliente l'impressione che la vostra azienda è in modo significativo al passo coi tempi per esempio VB6 è probabilmente solo ancora OK, anche nel 2010, ma che richiedono la compatibilità Win16 probabilmente non lo è.

Si può assumere buone persone che conoscono la piattaforma tecnica di base ad un costo ragionevole? Sulla tecnologia più vecchio, potrebbe essere che ci sono un sacco di persone che conoscono la piattaforma, ma lo vedono come un vicolo cieco e che chiedono un salario premio se la loro carriera sta andando a languire in stasi, mentre lavorano su di esso.

Se è importante per voi, è la piattaforma di sviluppo ancora sostenuto dal fornitore? Avete intenzione di essere vincolato sul quale hardware o sistema operativo è possibile eseguire su se il venditore non viene più aggiornato vero? Allo stesso modo, ci sono buchi di sicurezza nella piattaforma che possono avere bisogno di essere aggiornato? Anche nicchia aperta prodotti di origine possono soffrire di questo. Una volta che un prodotto va fuori di favore e sviluppatori principali spostarsi su nuovi progetti, può essere difficile ottenere le correzioni fatte dalla comunità.

Se è supportato, sono i venditori che si carica un premio per il sostegno di una piattaforma più vecchio? Se non ora, quindi per quanto tempo prima di fare?

Quanto è difficile da integrare le nuove tecnologie in esso per approfittare delle tendenze attuali che offrono funzionalità arricchito agli utenti finali per tenervi competitivo? Non vi preoccupate di questo? Potrebbe non importa se si sta eseguendo essenzialmente un sistema chiuso.

Quanto è difficile per rilasciare cambiamenti funzionali ad esso senza grandi cambiamenti "Shotgun" che si increspano in tutto il sistema? Questo viene di nuovo a come modulare il sistema è stato progettato per essere in primo luogo. Se non sei peggio che i vostri concorrenti a ottenere caratteristiche di mercato, allora probabilmente siete OK.

Quale sarebbe il costo di ri-scrittura del sistema? Come si confronta a quanto poco costosa sarebbe di mantenere o aumentare di vendita entrate? Potrebbe non essere economicamente fattibile farlo un'intera riscrittura. Se la piattaforma di sviluppo è il suono, allora si può solo provare più di un approccio refactoring. Questo è dove avere un buon test-suite e la documentazione aiuta.

Sono andato attraverso un processo simile. Abbiamo avuto una web app che aveva gestito per quasi 8 anni. In quel momento è stato fatto un sacco di manutenzione, che si estende in modi che non avevamo previsto. Tuttavia, il nucleo era buona ed era ancora in grado di essere allungato.

Quello che ci ha spinto oltre era il costo di manutenzione. Trovare persone con il giusto set di abilità è stato facile 8 anni fa. Oggi, nessuno vuole lavorare in quegli ambienti; nemmeno noi:)

Dopo l'analisi, sapevamo che avremmo potuto sostituirlo entro 12 mesi con funzionalità identiche e che questo tempo trascorso avrebbe pagato in fretta.

Quindi, abbiamo usato i colpi dello schermo come i nostri requisiti funzionali, rinnovato il look and feel, ed erano anche in grado di fornire una maggiore funzionalità. Abbiamo anche guardato i dati di utilizzo per identificare le parti che erano o raramente o mai utilizzati e rifilati quelli, ed aspettare l'attenzione sulle parti che sono state utilizzate.

In definitiva, abbiamo avuto successo. In parte perché tutti sulla squadra era ben versato nella nuova tecnologia e quindi c'era poco bisogno per l'apprendimento. Altri fattori che contribuiscono incluso un disegno ben pensato. Credo che abbiamo trascorso 3 mesi solo nel design prima di scrivere qualsiasi cosa.

L'ultimo fattore è che la nostra applicazione è modulare. Così siamo riusciti a pezzo fuori in dimensioni sufficientemente piccole per avere una combinazione di brevi tempi di consegna con un periodo di tempo di inattività / analisi tra ogni deliverable. Ciò ha garantito che eravamo sulla strada giusta in ogni fase.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top