Articoli DevLeap

Articoli DevLeap

December 2008 - Posts

Visual Studio 2010: primo contatto (parte 4)

Autore: Roberto Brunetti - DevLeap

Per questo articolo facciamo qualcosa di più concreto come abbiamo fatto nel precedente: Ho preso il nostro ormai famoso progetto EstatesManagement (una parte dei 75 progetti, ho preso solo il BIZ+DAL+UI via Web) presentato alla DevCon 2005, 2007 e 2008 nelle sue varie evoluzioni e che vedrà altre evoluzioni verso .NET 4.0 e VSTS 2010 nella nostra prossima conferenza: DevCon 2009. [Update: Link]

Una delle idee dietro la nuova versione di VSTS 2010 è fornire strumenti per analizzare e comprendere il codice esistente. Partiamo proprio dall’analisi dell’applicazione EstatesManagement.

Understanding Existing Assets (Bottom-up Approach)

Nota: ho portato i vari progetti alla 4.0 durante la conversione (e lo fa per tutti: anche dll).

Architecture Explorer

Si parte dalla definizione delle classi: Class View

clip_image002

Cliccando sulla classe

clip_image002[1]

Si espandono i “contenuti”

Fra un “tab” e l’altro si può vedere

clip_image004

Che consente di filtrare per Classi – Comunicazione Outbound, inbound, cose non implementate

Ed eseeguire comandi come Generate WorkItem, Opem, Inser Into ActiveDiagram

Dalle classi invece il filtro contiene Field, Method, altri classi, inherits from, called by, container by. Cose pubbliche, chi sono i derivati di questa classe etc

Scendendo sui metodi si vedono le chiamate

Grafici standard

Generate New Graph a partire dalla selezione corrente
si aggiunge poi quello che voglio analizzare (con la doppia freccia verde)

clip_image006

Aggiungendo Salesman e BaseEntity

clip_image008

Si può arrivare a livello di field

clip_image010

Doppio click su un pezzo si va nel codice reale evidenziato rispetto al resto (Es su SalesmanDescritpion)

clip_image012

Dipendenze fra Assemblies o Namespace o Classi

Es relazione fra Namespace

clip_image014

Le linee sono più fini o più spesse a seconda del livello di dipendenza: semplicemente le linee molto fini hanno 1 sola chiamata (quindi dipendenza), mentre le linee più spesse hanno molte chiamate.

Si può espandere ogni nodo per ottenere le classi contenuti

clip_image016

Esempio di dipendenze fra classi (e all’interno i vari membri)

clip_image018

Se si seleziona una classe appaiono i link dettagliati verso gli altri namespace (o classi se il namespace di arrivo è aperto) e con il “cazzillo” si può andare da una parte all’altra del link:

Ogni diagramma è in XML con estensione .dgml. Si possono salvare per analisi future

Ci sono varie viste: ad esempio a Stack, TreeView, Nested Stack,

Sequence diagram

Sempre continuando con la parte di “Understanding existing code” è possibile generare il Sequence Diagram UML a partire da qualunque metodo esistente e tenere sincronizzato il tutto.

Da qualunque metodo si può fare tasto destro:

clip_image020

Questo il diagramma del nostro metodo List filtrando per Current Project (quindi si vedono le chiamate fatte solo alle “cose” di questo progetto

clip_image022

Filtrando per entire solution il nostro metodo che chiama la nostra libreria SqlHelper (simile a DAAB), crea una classe SalesmanList (che sta nel progetto .Entities) e nel ciclo costruisce la classe Salesmna (anch’essa nel progetto .Entities) per ogni venditore del DB, si ottiene questo. N.B. ho fatto due screenshot perchè oggi la mia macchina virtuale non ne vuole sapere del copia/incolla fuori verso l’host.

clip_image024

clip_image026

Il diagramma creato prende l’estensione .sequence e viene inserito nel progetto da cui è stato “reserverd engineered”

Su ogni elemento si può fare tasto destro per vedere il tutto nell’architecture explorer, per scendere nel codice o creare (nel caso di aggiunta di “pezzi”) classi o interfarfacce.

Layer Diagram

Sta in un progetto di tipo Modeling (dove ci stanno i diagrammi UML)

Ad esempio nel nostro caso anche il Biz Layer effettivo ha chiamate verso il progetto Entitiy che sta sotto Entitities. Ecco gli errori

clip_image028

I Layer possono essere anche composti da SottoLayer per dividere ulteriormente i layer: vedere i due articoli precedenti a partire da http://blogs.devleap.com/articolidevleap/archive/2008/10/26/visual-studio-team-system-2010-primo-contatto-parte-2.aspx.

Links agli articoli precedenti:

Intro Parte 1 : http://blogs.devleap.com/articolidevleap/archive/2008/10/17/visual-studio-team-system-2010-primo-contatto.aspx

Intro Parte 2: http://blogs.devleap.com/articolidevleap/archive/2008/10/26/visual-studio-team-system-2010-primo-contatto-parte-2.aspx

Parte 3 Testing & Dubugging: http://blogs.devleap.com/articolidevleap/archive/2008/11/30/visual-studio-2010-primo-contatto-parte-3.aspx

Link a .NET 4.0

Workflow Foundation 4.0: http://blogs.devleap.com/articolidevleap/archive/2008/11/17/workflow-foundation-4-0-introduzione-alle-ctp-ottobre-2008.aspx

Dublin: http://blogs.devleap.com/articolidevleap/archive/2008/11/14/dublin-windows-application-server.aspx

Posted: Dec 03 2008, 03:12 PM by rob
Filed under: ,