Link utili della settimana #5

Fluent Mock Builder, fornisce una “fluent interface” per costruire complessi oggetti “mockable” con il framework di mocking Mock, una libreria di mocking che sfrutta a fondo le nuove caratteristiche di .NET 3.5 (es. expression trees), o di C# 3.0 (es. le lambda expression). Il tutto può essere usato negli Unit test di progetti ASP .NET MVC;

NInject, un framework open source di dipendency injection per .NET;

StructureMap, altro tool di Dipendency Injection / Inversion of Control per il mondo .NET;

Visual Basic Tips & Tricks Community Day a Milano

Ieri pomeriggio ho partecipato al Visual Basic Tips & Tricks Community Day tenutosi a Milano.

Devo dire che è stato un pomeriggio decisamente interessante dal punto di vista tecnologico, permettendomi di focalizzare alcuni concetti su tecnologie che uso o che vorrei usare, e mi riferisco a TFS 2010 ed Entity Framework 4.0

L’evento si apre con una sessione di Lorenzo Barbieri che parla delle varie versioni di Visual Studio 2010 che saranno disponibili a breve e delle novità, veramente tante, della nuova versione dell’IDE.

In ordine sparso:

  1. Possibilità di effettuare ricerche parziali con l’Intellisense;
  2. Intellisense nei file Javascript migliorato, ora vengono risolti anche i simboli presenti nei files inclusi, e non solo quelli del file in debugging;
  3. Funzionalità di “search a you type”, per intenderci tipo Google quando ci presenta i risultati della ricerca mano a mano che scriviamo il testo da ricercare;
  4. Funzionalità di “Call Hierarchy”, per il momento presente solo con il linguaggio C#, ovvero la possibilità di navigare a partire da un metodo / proprietà / costruttore verso il codice chiamante / chiamato a partire dal punto di navigazione scelto;
  5. Modalità “Web only” dell’IDE, ovvero la possibilità di utilizzare un IDE con il solo codice in primo piano e tutte le finestre di dialogo minimizzate;
  6. Selezione del testo per colonne;
  7. Gestione degli add-in con un apposito Extention Manager dedicato;
  8. Intellitrace (feature molto molto utile ed interessante per troubleshooting), ovvero un componente capace di registrare tutto quello che avviene nel codice quando questo è in esecuzione, una specie di scatola nera dell’applicazione, utilizzabile su applicazioni scritte con la versione 2.0 del Framework in poi ;
  9. Test di automazione della UI;

Poi è stata la volta di Alessandro Del Sole, che ha mostrato le novità di Team Foundation Server 2010 in ottica singolo sviluppatore o piccoli gruppi di lavoro.

Successivamente Antonio Catucci ha mostrato le novità di Entity Framework 4.0, ovvero:

  • Possibilità di gestione della Foreign Key nel modello dati, senza che la stessa sia nascosta (come è noto nel mondo dei database relazionali una relazione tra 2 tabelle si traduce con la presenza di una colonna in comune tra le due tabelle, che costituisce appunto la relazione, nel mondo OOP una relazione di questo tipo si traduce con la presenza di una proprietà tipizzata nell’oggetto “padre”);
  • Lazy Loading” attivo sempre di default;
  • Pluralization” dell’Entity Set basato sulla grammatica inglese. Con Entity Framework 1.0 questa mancanza mi ha provocato qualche problema, in quanto va gestito a manina;
  • Model-First Design”, feature decisamente interessante che consente di creare un domain model senza che sia necessariamente presente un database da cui partire. Con la versione 1.0 il domain model è forzatamente creato a partire da una base dati esistente;
  • T4 Code Generation”. Con questa feature il codice generato da Entity Framework può essere basato su template, fornendo quindi la possibilità di generazione personalizzata dello stesso.
  • POCO Entity (Plain Old CLR Objects)”, anche questa è una feature molto interessante, ovvero la possibilità di usare nel Domain Model della classi “pulite”, magari già esistenti senza che debbano per forza di cose ereditare da una classe specifica di Entity Framework;
  • Gestiona automatica delle relazioni molti a molti, senza la visualizzazione della terza tabella di legame tra le due relazionate;
  • Nuovo controllo EntityDataSource per il binding dei dati in ASP .NET.
  • Metodo “ApplyCurrentValues”. Permette di gestire le modifiche apportate su oggetti “detached”, ovvero al di fuori dell’ObjectContext attivo, e di propagare le stesse modifiche sull’oggetto avente la stessa chiave presente nell’ObjectContext (oggetto “attached”).
    Come è evidente la versione 4.0 di Entity Framework contiene una pletora di novità, che sicuramente consentiranno a questo ORM made in Microsoft di superare alcuni limiti di “gioventù” della precedente versione.

MySolutionLab

MySolutionLab è un portale focalizzato sullo sviluppo di software visto come attività ingegneristica, e quindi conforme ai requisiti di (tratto dal sito):

…. correttezza, affidabilità, robustezza, efficienza, usabilita’, scalabilita’, fault tolerance.

1. Corretti e Affidabili:

un sistema e’ corretto se si comporta come stabilito nei suoi requisiti funzionali.

2. Robusti:

un sistema e’ robusto se si comporta in modo ragionevole in situazioni impreviste.

3. Efficienti:

un sistema e’ efficiente se usa le risorse in modo performante.

4. Facili da usare:

un sistema e’ facile da usare se un essere umano lo reputa tale; l’interfaccia utente

interviene molto sull’amichevolezza di un’applicazione.

5. Manutenibili:

un sistema e’ manutenibile se e’ facile apportarvi modifiche, aggiornamenti e miglioramenti

(evoluzione del software).

Vorrei porre l’accento sul discorso “manutenibilità”, concetto che ho spesso affrontato in questo blog. Spesso e volentieri un prodotto software deve soddisfare unicamente i requisiti di business (ovvero la sua vendita), non importa come questo prodotto venga costruito in laboratorio dagli sviluppatori (della serie “basta che funziona” per intenderci).

Se il software non viene sviluppato con il concetto di manutenibilità nella testa del suo progettista, basandosi magari su soluzioni comuni già collaudate a problemi ricorrenti (design patterns, idiomi, ecc), ciò che si ottiene è un prodotto magari inizialmente funzionante, ma i cui costi di evoluzioni, anche le più banali, diventano spesso esorbitanti per l’utente finale nonchè un incubo per gli sviluppatori.

Da MySolutionLab è possibile scaricare una libreria di codice di uso comune, utilizzabile in vari scenari.

My business card

Tutte le persone che possiedono una qualche certificazione Microsoft possono da questo sito crearsi una business card virtuale.

E’¨ una certificazione che andrebbe aggiornata, ma sinceramente parlando il suo valore oggigiorno non è quello di una volta.

Comunque non è detto che prima o poi non l’aggiorni…