Manifesto agile del software

La nostra massima priorità è soddisfare il cliente rilasciando software di valore, fin da subito e in maniera continua.

Accogliamo i cambiamenti nei requisiti, anche a stadi avanzati dello sviluppo.

I processi agili sfruttano il cambiamento a favore del vantaggio competitivo del cliente.

Consegnamo frequentemente software funzionante, con cadenza variabile da un paio di settimane a un paio di mesi, preferendo i periodi brevi.

Committenti e sviluppatori devono lavorare insieme quotidianamente per tutta la durata del progetto.

Fondiamo i progetti su individui motivati.
Diamo loro l’ambiente e il supporto di cui hanno bisogno e confidiamo nella loro capacità di portare il lavoro a termine.

Una conversazione faccia a faccia è il modo più efficiente e più efficace per comunicare con il team ed all’interno del team.

Il software funzionante è il principale metro di misura di progresso.

I processi agili promuovono uno sviluppo sostenibile.
Gli sponsor, gli sviluppatori e gli utenti dovrebbero essere in grado di mantenere indefinitamente un ritmo costante. 

La continua attenzione all’eccellenza tecnica e alla buona progettazione esaltano l’agilità.

La semplicità – l’arte di massimizzare la quantità di lavoro non svolto – è essenziale.

Le architetture, i requisiti e la progettazione migliori emergono da team che si auto-organizzano.

A intervalli regolari il team riflette su come diventare più efficace, dopodiché regola e adatta il proprio comportamento di conseguenza.

Facciamo anche programmazione

Nel settore delle applicazioni e dei servizi IT, esiste la distinzione tra programmatori, sviluppatori e consulenti.

I consulenti sono quelli che configurano il sistema/applicazione per il suo utilizzo in un determinato ambiente di utilizzo (tipicamente per o presso un cliente).

Quindi solitamente in un’azienda che produce o commercializza software i consulenti applicativi installano e implementano la soluzione presso il cliente. Qualora l’adattamento richieda delle personalizzazioni che necessitano di programmazione, allora ricorrono all’ analista che redige il documento di specifica in cui sono descritti a livello logico i comportamenti e gli algoritmi che devono essere realizzati nel programma che viene quindi passato al programmatore che realizza il programma vero e proprio con gli strumenti messi a disposizione dallo sviluppatore, che è colui che in pratica implementa la struttura di una classe o la gerarchia delle classi o dei moduli.

Tutti questi passaggi ovviamente non favoriscono un approccio agile allo sviluppo del software, quindi abbiamo integrato tutte le figure in un piccolo team che si occupa del ciclo completo di vita del software.

Noi facciamo lo sviluppo, l’analisi e la programmazione.

Le nostre competenze

  • Linguaggi di programmazione compilati: C, C++, Objective C, Swift
  • Linguaggi per il web e markup: HTML e XHTML, Cascading Style Sheets (CSS), Extensible Markup Language (XML)
  • Linguaggi di scripting server-side interpretati: Perl, Python, PHP, Ruby, ASP.NET
  • Linguaggi di scripting client-side interpretati: Javascript, Java, ActionScript
  • Relational Database Management Systems: MySQL, Microsoft SQL Server, Oracle database, PostgreSQL
  • Sistemi operativi Unix Like, Apple, Microsoft
  • Networking e Security

Aderiamo al manifesto per lo sviluppo agile del software

L’uso del termine agile si riferisce a metodi di sviluppo software introdotti dal Manifesto Agile pubblicato nel 2001.

La gran parte dei metodi agili tentano di ridurre il rischio di fallimento sviluppando il software in finestre di tempo limitate chiamate iterazioni che, in genere, durano qualche settimana. Ogni iterazione è un piccolo progetto a sé stante e deve contenere tutto ciò che è necessario per rilasciare un piccolo incremento nelle funzionalità del software: pianificazione, analisi dei requisiti, progettazione, implementazione, test e documentazione.

Anche se il risultato di ogni singola iterazione non ha sufficienti funzionalità da essere considerato completo deve essere rilasciato e, nel susseguirsi delle iterazioni, deve avvicinarsi sempre di più alle richieste del cliente. Alla fine di ogni iterazione il team deve rivalutare le priorità di progetto.

I metodi agili preferiscono la comunicazione in tempo reale, preferibilmente faccia a faccia, a quella scritta (documentazione). Il team agile è composto da tutte le persone necessarie per terminare il progetto software. Come minimo il team deve includere i programmatori ed i loro clienti (con clienti si intendono le persone che definiscono come il prodotto dovrà essere).