Come pianificare un'applicazione Web a livello aziendale?
-
01-07-2019 - |
Domanda
Sono ad un punto della mia carriera da freelance in cui ho sviluppato diverse applicazioni web per le piccole e medie imprese che supportano cose come la gestione dei progetti, la prenotazione / prenotazione e la gestione della posta elettronica.
Mi piace il lavoro, ma scopro che alla fine le mie applicazioni arrivano a un punto in cui la manutenzione per la manutenzione è molto alta. Ripenso al codice che ho scritto 6 mesi fa e trovo che devo dedicare un po 'a imparare di nuovo come l'ho codificato in origine prima di poter apportare una correzione o aggiunte di funzionalità. Cerco di esercitarmi con i framework (ho già usato Zend Framework e sto considerando Django per il mio prossimo progetto)
Quali tecniche o strategie usi per pianificare un'applicazione in grado di gestire molti utenti senza rompere e mantenere il codice abbastanza pulito da mantenerlo facilmente? Se qualcuno ha qualche libro o articolo che potrebbe raccomandare, anche questo sarebbe molto apprezzato.
Soluzione
Sebbene ci siano certamente buoni articoli su questo argomento, nessuno di loro è un sostituto dell'esperienza del mondo reale.
La manutenibilità non è nulla che puoi pianificare direttamente, tranne che per progetti molto piccoli. È qualcosa di cui devi occuparti durante l'intero progetto. In effetti, la creazione anticipata di un sacco di classi e codice di infrastruttura può produrre un codice che è ancora più difficile da comprendere rispetto al codice spaghetti ingenuo.
Quindi il mio consiglio è di ripulire i tuoi progetti esistenti , riformattandoli continuamente. Guarda le parti che sono state dolorose da cambiare e cerca soluzioni più semplici che siano più facili da capire e da adattare. Se il codice è anche troppo male per quello, considera di riscriverlo da zero.
Non avviare nuovi progetti e aspettarti che abbiano successo, solo perché hai letto altri articoli o utilizzato un nuovo framework. Invece, identifica i fallimenti dei tuoi progetti esistenti e risolvi i loro problemi specifici . Ogni volta che è necessario modificare il codice, chiedersi come ristrutturarlo per supportare cambiamenti simili in futuro. Questo è ciò che devi fare comunque, perché ci saranno cambiamenti simili in futuro.
Facendo quei refactoring ti imbatterai in varie domande specifiche puoi chiedere e leggere articoli su. In questo modo imparerai di più oltre a porre domande generali e leggere articoli generali su manutenzione e framework.
Inizia a ripulire il tuo codice oggi . Non rimandarlo ai tuoi progetti futuri.
(Lo stesso vale per la documentazione. I primi documenti di tutti erano molto cattivi. Dopo diversi mesi si rivelano troppo dettagliati e pieni di cose non importanti. Quindi completa la documentazione con soluzioni ai problemi che davvero
Altri suggerimenti
Consiglio onestamente di guardare Martin Fowlers Patterns of Enterprise Application Architecture . Discute molti modi per rendere la tua applicazione più organizzata e gestibile. Inoltre, consiglierei di usare i test unitari per darti una migliore comprensione del tuo codice. Il libro di Kent Beck su Test Driven Development è un'ottima risorsa per imparare come affrontare modifica del codice tramite unit test.
Per migliorare la manutenibilità potresti:
-
Se sei l'unico sviluppatore, adotta uno stile di programmazione e mantienilo. Ciò ti darà fiducia in seguito quando navighi attraverso il tuo codice su cose che potresti aver fatto e cose che non avresti assolutamente fatto. Essere sicuri di dove cercare e cosa cercare e cosa non cercare ti farà risparmiare un sacco di tempo.
-
Prenditi sempre tempo per aggiornare la documentazione. Includere l'attività nel piano di sviluppo; includi quel tempo nel piano come parte delle modifiche o delle nuove funzionalità.
-
Mantieni la documentazione bilanciata: alcuni diagrammi di alto livello, commenti significativi. I migliori commenti dicono che non può essere letto dal codice stesso. Ad esempio ragioni commerciali o "perché" dietro alcuni blocchi di codice.
-
Includi nel piano lo sforzo di mantenere aggiornati la struttura del codice, i nomi delle cartelle, gli spazi dei nomi, gli oggetti, i nomi variabili e di routine e che riflettono ciò che effettivamente fanno. Ciò contribuirà notevolmente a migliorare la manutenibilità. Chiama sempre una spade " spade " ;. Evita grossi pezzi di codice, strutturalo con mezzi disponibili nella tua lingua preferita, dai a pezzi grossi nomi significativi.
-
Basso accoppiamento e alta coerenza. Assicurati di essere aggiornato con le tecniche per raggiungerli: progettazione per contratto, iniezione di dipendenza, aspetti, modelli di progettazione ecc.
-
Dal punto di vista della gestione delle attività, è necessario stimare più tempo e addebitare tariffe più elevate per i lavori non continui. Non esitare a far conoscere al cliente che hai bisogno di più tempo per fare piccole modifiche non continue diffuse nel tempo rispetto a progetti continui più grandi e manutenzione in corso poiché le spese generali di amministrazione e analisi sono maggiori (devi gestire e analizzare ogni cambiamento incluso l'impatto sul sistema esistente separatamente). Un vantaggio che il tuo cliente otterrà è la maggiore aspettativa di vita del sistema. L'altro è una documentazione accurata che conserverà la loro opzione di chiedere l'aiuto di qualcun altro qualora decidessero di farlo. Entrambi proteggono gli investimenti dei clienti e rappresentano un forte punto di forza.
-
Usa il controllo del codice sorgente se non lo fai già
-
Conserva un registro dettagliato di tutto ciò che è stato fatto per il cliente, oltre a qualsiasi comunicazione importante (un semplice computer o carta basata su CMS). Aggiorna la tua memoria prima di ogni compito.
-
Tieni aperto un registro di problemi, idee, suggerimenti per cliente; aggiorna nuovamente la memoria prima di iniziare un compito.
-
Pianifica in anticipo come verrà condotto il supporto post-implementazione, discutilo con il cliente. Rendi i tuoi sistemi facili da mantenere. Pianificare la parametrizzazione, gli strumenti di monitoraggio, i controlli di integrità integrati. Vendi supporto post-implementazione al cliente come parte del contratto iniziale.
-
Espandi assumendo, anche se hai bisogno di qualcuno solo per fornire quel supporto post-implementazione, esegui i bit di amministrazione.
Lettura consigliata:
-
Tutto ciò che riguarda modelli di progettazione sono inclusi nell'elenco dei modelli consigliati lettura.
Il consiglio più importante che posso dare dopo aver contribuito a trasformare una vecchia applicazione Web in un'applicazione Web estremamente disponibile e molto richiesta è di incapsulare tutto. - in particolare
- Usa buoni principi e framework MVC per separare il tuo livello di visualizzazione dalla tua logica aziendale e dal modello di dati.
- Utilizza un solido livello di persistenza per non associare la tua logica aziendale al tuo modello di dati
- Pianifica l'apolidia e il comportamento asincrono.
Ecco un eccellente articolo su come eBay affronta questi problemi http://www.infoq.com/articles/ebay-scalability-best- pratiche
-
Utilizza un sistema framework / MVC. Più il codice è organizzato e centralizzato, meglio è.
-
Prova a usare Memcache. PHP ha un'estensione integrata, ci vogliono circa dieci minuti per configurarlo e altri venti per inserire la tua applicazione. Puoi memorizzare nella cache tutto quello che vuoi - inserisco nella cache tutti i miei record del database - per ogni applicazione. Vaga.
-
Consiglierei di usare un sistema di controllo del codice sorgente come Subversion se non lo sei già.
Dovresti considerare forse l'utilizzo di SharePoint. È un ambiente che è già progettato per fare tutto ciò che hai menzionato e ha molte altre funzionalità a cui forse non hai pensato (ma forse ti serviranno in futuro :-))
Ecco alcune informazioni dal sito ufficiale.
Esistono 2 diversi ambienti SharePoint che è possibile utilizzare: Windows Sharepoint Services (WSS) o Microsoft Office Sharepoint Server (MOSS). WSS è gratuito e viene fornito con Windows Server 2003, mentre MOSS non è gratuito, ma ha molte più funzionalità e copre quasi tutte le esigenze della tua azienda.