Il libro
Un corso di progettazione agile che sottolinea l'importante aspetto dell'esperienza, elemento sottostimato in informatica, dove l'ultima tecnologia sembra sempre quella che fa più tendenza.
Partendo da elementi molto pratici, come i design pattern, i metodi di refactoring e il test di unità, questo libro tocca l'aspetto dell'esperienza, considerato dall'autore il bagaglio essenziale di uno sviluppatore. Per proporre un buon design è senz'altro necessario avere esperienza, del resto i design pattern nascono dall'esperienza e sono un modo per sfruttare quella acquisita in progetti passati, addirittura in progetti di altri. L'esperienza è ciò che ci porta a dire che un programma, con la sua architettura, è in continua evoluzione. È con l'esperienza che dobbiamo gestire questa evoluzione, applicando refactoring, e rivedendo in modo continuo il design.
Il libro, con esempi pratici, costruiti e discussi in modo incrementale, cerca di mettere in relazione i tre aspetti, a volte, a torto, considerati contradditori. Mostra come i pattern non devono necessariamente far parte del primo design e spiega come un approccio più adattivo alla programmazione permetta di considerare i nuovi requisiti come una naturale evoluzione dell'architettura.
Chi ritiene la programmazione una pura fase di "manovalanza" all'interno di un progetto, è portato a ricredersi. L'utilizzo sistematico di pattern e l'evoluzione ciclica del design attraverso refactoring riportano lo sviluppatore, con la sua personalità ed esperienza al centro del progetto. Sviluppo non significa solo scrivere codice. Sviluppo significa prendere decisioni concernenti il design. L'attività di sviluppo è qualcosa di creativo che richiede nel contempo grande disciplina. È un'attività di grande responsabilità che permette di progettare, creare, controllare e fare evolvere l'architettura e la funzionalità del progetto.
La struttura di "Tecniche di progettazione agile con Java: design pattern, refactoring, test"
Il libro, dopo un capitolo introduttivo, si sviluppa in quattro parti, ognuna delle quali è formata da capitoli distinti, in modo da permettere una lettura anche frammentata delle singole sezioni. Gli esempi sono tutti implementati in Java, linguaggio di riferimento per l'intero libro. Al termine delle 4 parti, viene riportata un'utile appendice con il codice degli esempi utilizzati
- I. Visione generale: verso un design object-oriented
La prima parte si prefigge di dare una visione generale dei concetti attraverso un esempio iniziale. Viene sviluppata una prima soluzione, ripresa e poi modificata in modo iterativo sulla base di nuovi requisiti ed esigenze. Gli aspetti trattati sono quelli del design object-oriented in generale e degli aspetti approfonditi nelle parti a seguire, cioè design pattern, refactoring e test.
I pattern di design vengono trattati nella seconda parte, che prevede, oltre a un'introduzione sintetica sui concetti della programmazione a oggetti, capitoli riguardanti le diverse definizioni di pattern, diversi esempi di pattern, una modifica passo per passo di un'applicazione e accenni su nuovi pattern.
La terza parte prevede la spiegazione del concetto di test come elemento di sviluppo, facendo riferimento al framework di test JUnit, largamente diffuso e utilizzato per la programmazione in Java.
I metodi di refactoring vengono trattati nella quarta parte, dove, di nuovo, oltre alla spiegazione dei concetti più significativi e all'approfondimento di alcuni metodi, l'elemento più importante è costituito dallo sviluppo di un paio di esempi e dalle loro relative modifiche.
Leggi il libro
Scarica i capitoli di "Tecniche di progettazione agile con Java: design pattern, refactoring, test"
L'autore
Sandro Pedrazzini, ingegnere informatico al Politecnico di Zurigo e dottore in scienze naturali all'Università di Basilea, dal 1989 suddivide il suo tempo tra sviluppo, insegnamento e ricerca, indirizzata durante i primi anni soprattutto nel campo della linguistica computazionale. Dalla metà degli anni Novanta insegna linguaggi, programmazione a oggetti e progettazione software presso la SUPSI (Scuola Universitaria Professionale della Svizzera Italiana), dove è professore. Nel 1999 ha inoltre cofondato Canoo, azienda di sviluppo e consulenza, per la quale lavora tuttora come ingegnere del software
|