Posts | marzo 2012

15/03/12

Are you a Software Architect?

Come si può definire oggi un “Software Architect”? Il termine è molto utilizzato, ma spesso non viene inteso con la giusta connotazione e si tende a confondere il concetto di architettura del software con le tecniche di sviluppo del software a vari livelli.

Si può dire, in termini generali, che un Software Architect è colui che è in grado di avere una visione d’insieme del progetto e quindi capire (progettare, immaginare) il funzionamento dell’intero sistema.

Per essere un buon Software Architect occorre innanzitutto esperienza. Successivamente vengono evidenziati vari aspetti essenziali:

  • Definizione dell’architettura del software
    • Gestione dei requisiti non-funzionali (qualità del sistema)
    • Definizione dell’architettura (come risolvere il problema?)
    • Scelta delle tecnologie (gestione di rischi, complessità, costi)
    • Valutazione (astratta) dell’architettura
    • Capacità di interoperabilità dell’architettura (nei confronti di altri sistemi esistenti)
  • Realizzazione dell’architettura, occorrono:
    • Piena consapevolezza e visione del disegno finale (bisogna poter seguire tutto il ciclo di sviluppo per portare il progetto a compimento con successo)
    • Leadership (responsabilità, capacità decisionali e tecniche)
    • Coaching e mentoring (per supportare i vari membri coinvolti nello sviluppo)
    • Qualità (non solo nella scelta dell’architettura, ma in tutto il processo! Revisioni e analisi del codice, applicazione di standard e principi di design, continuous integration, test automatici di unità, misurazione del code coverage…)
    • Progettazione, sviluppo, testing (anche se non necessariamente nelle attività di tutti i giorni, il bravo Software Architect deve prendere parte al processo di sviluppo)

Per approfondimenti:

02/03/12

Tuning GlassFish for Performance

jvm-tuning-view

Ecco un articolo piuttosto tecnico, ma molto ben fatto e dettagliato sulla taratura delle performance per  l’Application Server di riferimento nel mondo Java, Glassfish.

L’articolo inizia con alcune best practise comuni del mondo JavaEE (multi thread model, gestione delle sessioni HTTP,  caching dei beans, gestione dei pool e delle transazioni) per poi divenire più specifico. In particolare vengono trattati diffusamente:

  • Ottimizzazione del Server
    • Deployment
    • Logging
    • Web Container
    • EJB Container
    • Network Listener
    • Thread Pool
    • Resources
  • Ottimizzazione della JVM
  • Ottimizzazione del Sistema Operativo
    • Parametri di rete
    • Numero massimo di files aperti
    • TCP/IP
    • Gestione del timing (orologio di sistema)
    • Network Interface Card (NIC)
  • Test di un caso pratico (con grafici)

Di seguito l’articolo completo: