Vogue.NET: commenti sul look di Beat e Ingo

 

Notare il tipico look tedesco di Beat: giacca nera, camicia e cravatta arancione, capelli gellati sparati in aria.

Più sobrio invece il look di Ingo: camicia grigina e pizzetto.

powered by IMHO 1.3

Software Factories: report dell'evento

Eccomi di ritorno dall'aperitivo post Architect Forum, e non potevo non postare le mie impressioni sulla giornata. (Nota a latere, all'ape non solo stato l'unico ubriacone del gruppo: mi ha fatto compagnia Adrian prendendo un Negroni pure lui )

Giornata all'insegna dei ritardi e degli scioperi: l'evento è iniziato alle 10:30 ed è finito alle 16:45 a causa dello sciopero dell'ATM (ma questi quanti scioperi fanno all'anno??.. mah...)

Iniziamo a parlare degli speaker: Ingo e Beat sono grandiosi, molto chiari, soprattutto Beat, che pur essendo uno svizzero di Losanna, parla inglese benissimo, senza nessun'accento, mentre Ingo ha un po' di accento tedesco.

Il sunto della giornata è stato che lo sviluppo sw deve spostarsi dall'approccio "artigianale" a quello "industriale", ma il focus delle sw factories non è tanto sullo sviluppo di framework omnicomprensivi e generici, ma nello sviluppo di tool specializzati e specifici al dominio applicativo nel quale si sviluppa.

L'esempio col quale Beat ha iniziato la sessione però la dice lunga sul tipo di problemi risolti da questo approccio. Ha paragonato lo sviluppo software allo sviluppo di un AirBus: la maggiorparte delle parti funzionali sono fissate (motori, ali, fusoliera, cockpit), mentre altre sono "customizzabili" (allestimento degli interni, colore della fusoliera).
E' un ottimo paragone se un'azienda è specializzata in software di gestione documentale, in CRM, in CMS, ma non se uno fa il consulente o lavora in un azienda che lavora su progetti: questi raramente vedono problematiche simili se si escludono quelle ovvie di accesso ai dati, webservices, ecc...

Da queste necessità nascono due tipologie di prodotti al supporto dello sviluppo:

  • DSL o Domain Specific Languages: sono linguaggi specifici per la risoluzione di un problema, ad esempip Ingo ha sviluppato un linguaggio specifico per modellare il pattern MVC.
  • GAT/GAX o Guidance Automation Toolkit, Guidance Automation Extension: è un toolkit che permette di rendere formale l'applicazione di una best practice o una guidance

Entrambi sono SDK o software per sviluppare del codice che aiuti a sviluppare altro codice.

Il primo (DSL) serve per modellare un linguaggio col quale definire un modello che poi si possa trasformare in maniera automatica in codice (l'esempio è stato l'UIP, ma si può applicare ovunque si possa modellare un problema).
Il secondo (GAT) risolve un problema differente, cioè l'applicazione di una Guidance o Best Practice: l'esempio portato è stato lo sviluppo di un webservice. In generale è necessario seguire una serie di step predefiniti per raggiungere un certo risultato. Con questo toolkit si possono automatizzare le "ricette" riducendo quindi il numero di linee di codice che devono essere realizzate. Inoltre si riduce anche il livello di conoscenze necessarie per realizzare un webservice: con il WebService Guidance Automation Package si può creare un webservice che supporata uno svariato numero di bindings senza sapre nulla di cosa siano i webservices.

E' un argomento che mi interessa parecchio, ma penso che passeranno ancora parecchi anni prima che il mercato recepisca questi concetti e li usi nella maniera per come sono stati concepiti: al momento i clienti sono stati viziati dai commerciali e per loro tutto è possibile.
Tornando al paragone dell'AirBus, il tipico cliente di software personalizzato chiede che il suo "airbus" sia 30mt più corto e con 3 ali, e il commerciale tipico gli risponde: "Certo, lo tagliamo un po' e la 3a ala ci sta benissimo sul tetto, tanto c'è tanto spazio", ed il team di sviluppo deve farlo.
Ma se si va verso un'approccio più industriale del software, è necessario che anche i clienti, e soprattutto i commerciali capiscano che alcune cose sono immodificabili, altre sono "configurabili" (cioè già pensate dal team di progetto, e attivabili su richiesta) e altre "customizzabili" secondo le richieste del cliente.

Vi lascio qualche link per approfondire l'argomento:

powered by IMHO 1.3

Snippet per dichiarare un evento

Amo sempre di più i code snippets all'interno di VS2005...

Dopo essermi stufato di fare cut'n'paste tra le varie classi mi sono deciso a cercare sulla rete se qualcuno aveva già scritto un snippet per automatizzare questa noiosa e ripetitiva digitazione.

E l'ho trovato su GotCodeSnippets.NET, un repository di code snippets.

Questo è il codice che genera, semplicemente inserendo il nome dell'evento che vogliamo creare (nel mio caso PasswordChanged:

public class PasswordChangedEventArgs : EventArgs
{
    
public static readonly new PasswordChangedEventArgs Empty = new PasswordChangedEventArgs();
}

public event EventHandler<PasswordChangedEventArgs> PasswordChanged;

protected virtual void OnPasswordChanged(PasswordChangedEventArgs e)
{
    EventHandler<PasswordChangedEventArgs> handler = PasswordChanged;
    
if (handler != null)
    {
        handler(
this, e);
    }
}

Usa la nuova design guideline di usare EventHandler<T> invece che ridefinire tutte le volte il delegate che gestisce l'evento.

Ecco le pagina dove è possibile scaricare lo snippet.

powered by IMHO 1.3

«maggio»
domlunmarmergiovensab
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910