I'm test driven

Search

  • Blogroll

  • Chi sono su LinkedIn

    License

    This blog is licensed under a Creative Commons License

    Il cuore del software

    May 22nd, 2006 by Enri

    Il cuore del software è la sua capacità di risolvere problemi di dominio per i suoi utenti.

    Questa frase di Eric Evans implica una serie di aspetti, ne elenco di seguito alcuni:

    1. Il software risponde all'esigenza di risolvere problemi reali
    2. Il software viene costruito per i suoi utenti
    3. Chi crea il software conosce le esigenze degli utenti
    4. Il software è una rappresentazione del dominio
    5. Chi crea il software lavora a stretto contatto con gli esperti di dominio al fine di rappresentare la loro conoscenza del dominio stesso
    6. Il reale valore del software risiede nell'implementazione del modello del dominio

    Posted in Programming languages, Domain Driven Design | 1 Comment »

    Linguaggi di programmazione

    May 18th, 2006 by Enri

    Tom negli ultimi due post ha affrontato un argomento molto interessante, e cioè l'evoluzione dei linguaggi di programmazione soprattutto in ambito Web dal punto di vista della produttività e della reale utilità. Con questo mio post vorrei continuare questa stimolante discussione.

    In questo video il grande Ward Cunningham (per chi non lo conoscesse, l'inventore del Wiki, nonchè una delle menti dell'eXtreme Programming, e inventore di FIT), parla del rapporto tra computer e uomo, dei linguaggi di programmazione, e di molte altre cose interessanti. Di seguito un breve riassunto dell'intervista e un mio breve commento.

    Innanzitutto Cunningham esordisce dicendo che ha imparato nella sua vita più di duecento linguaggi di programmazione. Molti li considera pessimi, perché chi li ha disegnati aveva come obiettivo quello di implementare funzioni matematiche, senza concentrarsi sui costrutti del linguaggio in sè. Da questa affermazione Cunningham entra nel cuore dell'intervista, affermanso che la cosa fondamentale di un linguaggio di programmazione è la sua capacità di definire e di avere al suo interno concetti, e che questi concetti abbiano un confine che li delimiti, che gli si possa inviare messaggi per poterli interrogare. E' importante che io programmatore possa stabilire, indicare, qual è l'idea più importante tra quelle che sto modellando, e che possa dire che gli altri sono concetti secondari. A questo riguardo Cunningham afferma che da quando ha conosciuto Smalltalk, ha smesso di imparare altri linguaggi. Infatti nella programmazione ad oggetti, ogni oggetto diventa un linguaggio, ed io programmatore divento un language designer definendo questi concetti. Il computer in questo modo mi insegna quali sono i concetti principali che devo conoscere di un certo argomento, costruendo un linguaggio che lo descriva. Il computer quindi ci fa conoscere cose del nostro mondo che prima non conoscevamo. Un linguaggio di programmazione diventa così un ponte, uno strumento verso la conoscenza del mondo che stiamo modellando, nonché uno strumento per l'interazione tra essere umani.

    Quest'ultimo aspetto secondo me è la cosa fondamentale di un tool o di un linguaggio di programmazione, o comunque di qualsiasi cosa riguardi un computer: la sua capacità di sapere rappresentare concetti, conoscenza, in maniera chiara, precisa, "delimitata da confini", contestualizzata, e la capacità di poterci ragionare sopra permettendoci di concentrarci sulle idee stesse, senza tecnicismi che offuscano i concetti. Strumenti che permettano di reagire con il minimo sforzo possibile al dinamismo della conoscenza, al naturale evolvere della stessa, che permettano di imparare e conoscere più di quanto sappia o di quanto possa conoscere se non li informatizzassi. Tutto ciò ovviamente coinvolge la comunicazione tra essere umani ed è qui che un tool o un linguaggio si differenziano nella loro bontà, a livello di conoscenza e espressività: quanto migliorano la comunicazione tra le persone? Ad esempio l'assembler molto poco! C molto poco ma già meglio! Altri linguaggi ad alto livello forse meglio ancora. A questo aspetto se ne aggiunge un altro, e cioè che ogni linguaggio deve essere in grado di supportare il naturale dinamismo del processo di comprensione e di knowledge crunching in modo iterativo e graduale. E' qui che diventa importante la capacità di un linguaggio o di un tool di garantire flessiblità, testabilità, robustezza e chiarezza.

    Posted in Programming languages, Communication | 2 Comments »

    E’ un test di unità?

    May 15th, 2006 by Enri
    From: Michael Feathers <mfeathers@…>
    Date: Tue Sep 6, 2005 3:50 pm
    Subject: Unit Test Rulz

    I've used these rules with a large number of teams. They encourage good design and rapid feedback and they seem to help teams avoid a lot of trouble. —

    A test is not a unit test if:

    1. It talks to the database
    2. It communicates across the network
    3. It touches the file system
    4. It can't run correctly at the same time as any of your other unit tests
    5. You have to do special things to your environment (such as editing config files) to run it.

    Tests that do things things aren't bad. Often they are worth writing, and they can be written in a unit test harness. However, it is important to be able to separate them from true unit tests so that we can keep a set of tests that we can run fast whenever we make our changes.

    Michael Feathers

    www.objectmentor.com

    Posted in Agile, Extreme Programming, Test Driven Development (TDD) | 13 Comments »

    Ruby on Rails, Rapid Application Development

    May 12th, 2006 by Enri

    Stimolato dal mio amico Tom che ha ormai completamente le mani in pasta nel RAD alla Oracle con HTML DB, ho deciso di dare un occhio allo strumento RAD che più mi incuriosisce ultimamente: RAD Ruby On Rails, o radrails. Riporto un link ad un quicktime che bene dimostra le potenzialità di questo strumento.

    Di seguito i passi da effettuare per sviluppare con RoR con plugins Eclipse o standalone:

    1) Installare un interprete Ruby,ad esempio da qui. Il download si porta dietro anche il libro Programming Ruby: The Pragmatic Programmer’s Guide.

    2) installare rails, eseguendo il seguente comando da un prompt di dos: gem install rails –include-dependencies. E’ necessaria una connessione ad Internet attiva.

    3) installare il plugin ruby per Eclipse in modo automatico dall’Update Manager, inserendo come url http://rubyeclipse.sourceforge.net/updatesite

    4) da Window -> Preferences -> Ruby -> Installed Interpreter aggiugere il path del ruby interpreter di cui al punto 1).

    5) installare il plugin radrails per Eclipse in modo automatico dall’Update Manager, inserendo come url http://radrails.sourceforge.net/update. Installato radrails, avete un ambiente di sviluppo Ruby on Rails alla RAD.

    6) da Window -> Preferences -> Rails impostare i percorsi di rails e rake

    Se non vi siete ancora eclipsati o se volete avere un ambiente completamente standalone, esiste un radrails standalone, installabile eseguendo i passi 1) e 2) di cui sopra ed i seguenti passi:

    3) effettuare il download

    4) estrarre lo zip

    5) eseguire radrails

    Segnalo inoltre questo altro strumento con trattamento allinclusive (la voglia di vacanza si fa sentire), che include Ruby, RoR, un Apache e MySQL pronti per essere utilizzati, nel caso vogliate sperimentare RoR davvero con il minimo sforzo possibile.

    Questo è quanto. Ai prossimi post per commenti più seri su RoR.

    Posted in Agile, Ruby | No Comments »

    Hello World!

    May 10th, 2006 by Enri

    Da oggi questo sarà il mio nuovo blog!

    Ancora non so se riuscirò ad importare i post del vecchio sito in questo.

    Posted in General | No Comments »

    Chi sono

    May 10th, 2006 by Enri

    Ciao a tutti,

    sono Enrico Mangano, classe 1978, laureato in Informatica a Torino nel 2003 con una tesi sulla modellazione di sistemi complessi in logica del primo ordine, lavoro nel campo applicativi Web-based dal 2001 su piattaforme PHP (portali e e-commerce) ed attualmente consulente Java EE dal gennaio 2004. Sono certificato Sun Java Programmer (SCJP) e Sun Java Developer (SCJD).
    I valori in cui credo per creare software verso l’eccellenza sono:

    • Comunicazione
    • Semplicità
    • Feedback
    • Grande spirito di team

    Se volete potete contattarmi all’indirizzo email emangano<at>gmail.com

    View Enrico Mangano's profile on LinkedIn

    Posted in General | No Comments »