AntonioGanci

Il blog di Antonio Ganci
posts - 201, comments - 420, trackbacks - 31

Extreme Programming

Pensare ad oggetti

Ne avevo già parlato in un precedente post, ma provo ad illustrare altri aspetti che avevo ignorato. Una delle cose che viene data per scontato in XP è che si sappia pensare ad oggetti che è un prerequisito per il simple design. Ma cosa significa veramente? Nella programmazione tradizionale o formale un oggetto è dato dai suoi dati (attributi) e i metodi che agiscono su tali dati. Questo però porta ad un esplosione del numero di classi perché basta un solo dato diverso e devo creare una nuova classe. L'idea centrale del...

posted @ giovedì 12 gennaio 2012 20:08 | Feedback (0) | Filed Under [ Extreme Programming ]

Le difficoltà nell'apprendere la pratica del TDD

Una delle pratiche più invasive di extreme programming oltre al pair programming è il TDD (Test Driven Development) ed è anche la più difficile da padroneggiare. In questo post cercherò di analizzare i motivi, fornendo alcuni spunti su come superare le difficoltà. Le cose più difficili da accettare soprattutto se si ha già una certa esperienza è il fare emergenere il design dai test. Questo implica di non anticipare eventuali feature successive o test successivi e scrivere il codice minimo indispensabile per fare passare il test appena scritto. Nella fase di refactoring poi si toglieranno tutti gli smell introdotti a partire dal più...

posted @ martedì 20 dicembre 2011 22:42 | Feedback (2) | Filed Under [ Extreme Programming ]

Mettere alla prova il design della propria codebase

Il coach del mio team xp di nome Nautilus ci ha proposto un'interessante esercizio per mettere alla prova la qualità della nostra codebase. Scrivere il test dello scenario che si vuole sviluppare come lo vorremmo, ignorando l'attuale architettura, misurando il tempo impiegato. Provare poi a scriverlo usando i nostri oggetti misurando nuovamente il tempo impiegato. Nel caso specifico la coppia, in quanto sviluppiamo in pair, ha impiegato 2 minuti a scrivere il test per il primo caso e tre pomodori (circa un ora e mezza) nel secondo caso. La differenza tra i due tempi indica quanto la nostra codebase è lontana dalla qualità che vorremmo...

posted @ mercoledì 23 novembre 2011 19:42 | Feedback (9) | Filed Under [ Extreme Programming ]

Studiare le basi della programmazione ad oggetti - seconda parte

Continua l'elenco dal post precedente Iterazione 7 Dal libro Design Patterns: Preface to Book Introduction What is a Design Pattern? Design Patterns in Smalltalk MVC Describing Design Patterns Introduzione Creational patterns Factory Method (pag. 107) Extreme programming explained: embrace change - Beck Cap 5 e Cap 6 The Three Laws of TDD - Bob Martin OCP sul libro Agile Software Development, Principles,...

posted @ martedì 23 novembre 2010 15:30 | Feedback (0) | Filed Under [ Extreme Programming ]

Studiare le basi della programmazione ad oggetti

Vorrei condivere il percorso di studio del team xp per approfondire la conoscenza della programmazione ad oggetti e del ciclo di sviluppo software. Il percorso è utile sia per chi non conosce l'argomento e vuole apprendere le tecniche di sviluppo seguendo il paradigma OOP, sia per chi vuole ripassare concetti già noti. Iterazione 1 Improving Software Productivity - Barry W. Boehm, TRW Iterative and Incremental Development - Robert C. Martin (Engineering Notebook C++ Report, Feb, 1999) Iterative and Incremental Development (IID) - Robert C. Martin Engineering (Notebook Column April, 1999, C++ Report.) Iterazione 2 Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative...

posted @ giovedì 11 novembre 2010 17:53 | Feedback (10) | Filed Under [ Extreme Programming ]

Un tecnica per testare l'interazione tra oggetti

Ogni tanto, nello sviluppo software, emerge qualche meme come ad esempio: tutte le dipendenze devono essere disaccoppiate tramite un interface, tutte gli oggetti devono essere creati tramite factory, l'accesso ad un database deve avvenire tramite un ORM, il TDD genera un buon design ecc. Cosa hanno in comune tutte le frasi precedenti? Semplice: creano scorciatoie per evitare di pensare. Sarebbe bello se potessimo scrivere codice seguendo alla lettera un manuale, ma sarebbe anche terribilmente noioso e probabilmente verremmo sostituiti da qualche tipo di bot. Prendiamo la prima affermazione: tutte le dipendenze devono essere disaccoppiate tramite un interface e cerchiamo di capire da dove nasce questa esigenza. Il...

posted @ lunedì 6 settembre 2010 09:54 | Feedback (4) | Filed Under [ Tips Extreme Programming ]

Scrivere Acceptance Test per una applicazione Wpf - Seconda parte

Se avete seguito i passi del post precedente e provate a lanciare il test dovrebbe aprirsi una finestra che si chiude quasi istantaneamente. Proviamo ora a simulare il click ad un pulsante. Per prima cosa aggiungiamo il controllo alla main window ricordandoci di dargli un nome (nel nostro caso buttonControl). Lo xaml dovrebbe essere qualcosa di analogo: <Window x:Class="WPFAndNUnit.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Canvas> <Button Name="buttonControl" >A button</Button> </Canvas> </Window>   Ora...

posted @ mercoledì 25 agosto 2010 13:34 | Feedback (0) | Filed Under [ Tips Extreme Programming ]

Scrivere Acceptance Test per una applicazione Wpf

Gli acceptance test servono a verificare che una user story sia stata realizzata correttamente, quindi sono test definiti insieme al cliente o addirittura scritti dal cliente. L'applicazione che stiamo scrivendo utilizza wpf, quindi la nostra necessità è quella di poter aprire finestre, cliccare sui pulsanti, ecc. all'interno di un test automatico. Esistono approcci alternativi a quello che propongo in questo post, come ad esempio le TestApi, le quali utilizzano le automation api mentre per l'input del mouse e della tastiera utilizzano l'API SendInput. Le TestApi fanno molto di più di quello che a noi serve e quindi ho cercato un approccio più adatto al nostro caso. Per...

posted @ giovedì 19 agosto 2010 11:55 | Feedback (2) | Filed Under [ Tips Extreme Programming ]

L'importanza degli spike

Per stimare o sviluppare una user story a volte è necessario documentarsi su aspetti tecnici che non padroneggiamo. Nel mondo agile questa pratica viene chiamata spike Uno degli aspetti che si sottovalutano degli spike è che con il tempo costituiscono una knowledge base molto utile per lo sviluppatore. Un altro aspetto importante è che non vengono fatti esperimenti sul codice di produzione. Personalmente gli spike li committo in un repository chiamato Spikes cercando di dare dei nomi significativi alle varie solution in modo da poterli ritrovare facilmente in seguito...

posted @ martedì 13 luglio 2010 19:29 | Feedback (1) | Filed Under [ Extreme Programming ]

Alcune riflessioni sui metodi agili

il post di Riccardo mi ha dato l'occasione per riflettere su un disagio che sento presso le aziende che intendono iniziare o già utilizzano i metodi agili. Credo che la questione sia dovuta alla differenza della situazione delle aziende italiane, formate soprattutto da PMI, rispetto a quelle anglosassoni. In generale ho visto l'interesse ad utilizzare alcune pratiche agili (soprattutto l'introduzione dei test e la continuous integration) in situazioni dove è presente quello che io chiamo il cowboy programming. Sostanzialmente una situazione...

posted @ martedì 11 maggio 2010 22:53 | Feedback (7) | Filed Under [ Extreme Programming ]

Full Extreme Programming Archive

Powered by:
Powered By Subtext Powered By ASP.NET