Il nostro pensiero

Nel nostro settore le persone hanno un ruolo chiave e sono il vero motivo del successo sia dei progetti che del nostro futuro.

In questa ottica pensiamo che una società sia soprattutto un metodo di lavoro in grado di coordinare e garantire la qualità dei risultati senza limitare o , molto peggio, annullare i singoli talenti.

Abbiamo da sempre posto alla base del nostro lavoro le misure reali e concrete per dimostrare i nostri risultati e migliorarci sempre.

Ovviamente è solo uno dei tanti.

Metodo Agile

Agile software development è un metodo di approccio alla gestione del ciclo di vita del software che dovrebbe aiutare ad uno lo sviluppo dell'applicativo in modo migliore, permettendo le modifiche rispetto all’analisi iniziale senza avere un eccessivo spreco di tempo e denaro.

metodo agile

Nel corso degli ultimi 15 anni sono nate le prime discipline cosiddette “agili”, focalizzate a risolvere ricorrenti problemi riscontrati nella conduzione di progetti software.

L’idea di base nelle metodologie agili è che queste non sono predittive, non cercano cioè di prevedere come evolverà il sistema software, ma sono adattive, propongono cioè valori e pratiche per meglio adattarsi all’evoluzione dei requisiti utente, prima che del sistema software.

Nei progetti software, le esigenze del cliente sono in costante mutamento: sebbene l’avere in anticipo tutti i requisiti utente sia un aspetto desiderabile, spesso non è ottenibile.

In questi casi, non si può utilizzare una metodologia predittiva, perché il processo non è completamente prevedibile.

metodo agile

Ma anche se fossero disponibili subito tutti i requisiti, ed anche se fossero tutti coerenti, anche la fase di progettazione potrebbe dare dei problemi: è molto difficile, ad esempio, catturare il sistema in un modello

UML che sia completo e corretto e che possa essere utilizzato come base per lo sviluppo del codice. Spesso anche i progettisti si sorprendono di come un progetto viene poi tradotto in codice.

Il metodo agile scrum è un procedimento di sviluppo iterativo composto da quattro fasi, le quali si possono ripetere tutte le volte che lo si ritiene opportuno. Col metodo scrum si hanno riunioni molto brevi (sprint) che fissano un lavoro a brevissimo termine, anche due settimane. In questo modo il cliente sarà continuamente aggiornato sull'andamento del progetto, così potrà capire se si sta procedendo nella direzione giusta o no.

In ogni ciclo la priorità delle fasi può cambiare, nel senso che ci si può focalizzare più su una particolare feature del prodotto che su quella a cui si stava lavorando; questo è possibile grazie al branching model, suddiviso in source control e version control.

  • Il source control consiste nel tenere traccia delle modifiche apportate al codice nel corso dello sviluppo.
  • Il version control è un code repository a cui tutto il team può accedere.

cmmi

Modello CMMI

Abbiamo anche sperimentato e usato modelli più strutturati ed in particolare CMMI Capability Maturity Model Integration

CMMI (Capacity Maturity Model Integrated, tradotto modello integrato del livello di maturità) è un modello di valutazione del livello di maturità di un'azienda rispetto allo sviluppo informatico.

Basato sul CMM, da cui recupera l'essenziale delle nozioni estendendo il campo di applicazione, il CMMI propone un referenziale delle migliori procedure (best practices) in materia di sviluppo software.

L'obiettivo è di incoraggiare le aziende a mettere sotto controllo i propri processi, a migliorarli constantemente e di valutare il proprio livello di maturità su una scala a cinque livelli di maturità proposta dal CMMI.

life cycle iteration

Life Cycle Iterations

Il processo di sviluppo di tipo CMMI si utilizza una tecnica ibrida tra sviluppo Workflow a cascata e quello incrementale.

Ogni task implementativo sarà composto dalle seguenti fasi che porteranno al rilsascio della funzionalità descritta dal task:

  1. Architectural Design Analysis (Low Level)
    • Si parte dal component design architetturale già in nostro possesso e si arriva al class diagram
    • Definizione dei test cases
  2. Implementazione
    • Sviluppo del software implementativo delle classi
  3. Test
    • Test di unità (funzione per funzione)
    • Test di sviluppo predefiniti (modulo per modulo)
    • Test funzionali (test iterativi sulla funzionalità complessiva del Task)
  4. Release Candidate
  5. Collaudo pro-forma e integrazione