soluzione web della nostra azienda è il suo quarto importante generazione, si è notevolmente evoluto nel corso degli ultimi 8 anni. La generazione più recente ha introdotto una vasta gamma di costrutti per aiutare esattamente con questo compito poiché stava diventando poco pratico aggiornare la generazione precedente in base alle nuove richieste dei clienti. Così, nel 2009 ho passato un po 'di tempo a pensare esattamente a questo problema.
L'unica cosa più preziosa che è possibile fare è impiegare un approccio Agile per creare software. In particolare, è necessario mantenere un ambiente in cui una nuova build può essere (ed è) creata quotidianamente. Mentre le build giornaliere sono solo un aspetto di Agile, questa è la pratica più importante nell'affrontare la tua domanda. Sebbene ciò non sia la stessa cosa della aggiornabilità, di per sé, introduce comunque una disciplina nel processo che aiuta a ridurre la possibilità che la base di codice diventi ingombrante (o che diventi un Architect Astronaut).
Per quanto riguarda framework e linguaggi vanno, ci sono due esigenze principali: che il quadro sia longevo e stabile e che l'ambiente supporta un Separation of Concerns. ASP.NET ha funzionato bene per me in questo senso: si è evoluto in modo razionale e senza discontinuità che invalida il vecchio codice. Io uso un Business Logic Layer separato per gestire SoC ma ASP.NET ora supporta anche lo sviluppo MVC.Al contrario, dopo pochi mesi mi è dispiaciuto disobbedire a PHP perché sembrava solo incoraggiare pratiche disordinate che avrebbero messo in pericolo futuri aggiornamenti.
Rispetto allo Selezione DBMS, qualsiasi RDMS moderno (SQL Server, MySQL, Oracle) può essere utile. Ecco però la chiave: è necessario mantenere gli script DDL per la gestione degli aggiornamenti. È solo un fatto della vita. Quindi, come si fa a rendere questo un processo trattabile? Il singolo strumento più prezioso di qualsiasi sviluppatore di terze parti è la mia copia di SQL Compare da Red Gate. Questo processo era un completo incubo e un significativo ostacolo alla mia capacità di evolvere il mio codice fino a quando ho trovato questo strumento. Pertanto, la raccomandazione generica consiste nell'utilizzare un database per il quale esiste uno strumento per confrontare le strutture del database. SQL Server è solo molto fortunato a questo proposito.
L'hardware è quasi un non importa. È sempre possibile passare al nuovo hardware purché il processo di sviluppo includa un ragionevole processo di generazione del rilascio.
Strategia per modifiche costanti dei requisiti. Ancora, vedi Agile. Ti incoraggerei a non pensarci nemmeno più come "requisiti" - nel senso tradizionale di un grande documento pieno di specifiche. Agile cambia questo in modi importanti. Non tengo un documento dei requisiti, tranne quando si lavora su un contratto per un cliente esterno, pagante, in modo tale da poter essere sicuro della fatturazione appropriata e prevenire il creep della funzionalità. A questo punto, il nostro processo interno è così rapido e fluido che i report del nostro software di gestione delle richieste/bug (FogBugz se vuoi sapere) serve come documentazione per documentare una nuova release per il marketing.
La strategia/decisione per riprogettazione totale è: no. Se si inserisce un ragionevole grado di giudizio nel processo , si utilizzerà, si scelgono strumenti mainstream e si impone una separazione delle preoccupazioni, quindi niente a parte un abbandono completo di HTTP e RDBMS dovrebbe causare una riprogettazione totale.
Se siete abbastanza agile che nulla può cambiamento, si è improbabile che siano sempre in una posizione in cui tutto must cambiamento.
Ottima risposta:) –
+1 bella spiegazione. Inoltre, anche la tecnologia in evoluzione gioca un ruolo nell'approccio di up-gradation.Perché se si vede che una nuova tecnologia sarebbe disponibile entro un anno o giù di lì dovrebbe aspettarlo o andare per un aggiornamento basato sulla tecnologia attuale? – HotTester
HotTester: dipende dalla tecnologia. In genere, preferisco un approccio di "attesa e visione" alle nuove tecnologie solo perché sono stato bruciato una o due volte in fretta per supportare una tecnologia che finisce per non ottenere alcun buy-in dai miei clienti. Detto questo, io * sto * usando Visual Studio 2010 (che non è formalmente rilasciato) e sono * sempre * alla ricerca di nuove tecnologie - solo perché mi piace. –