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

Cliccando sulla classe
![clip_image002[1]](http://devlab.devleap.it/robertob/immagini/posts/VisualStudio2010primocontattoparte4_D5FC/clip_image0021_thumb.jpg)
Si espandono i “contenuti”
Fra un “tab” e l’altro si può vedere

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)

Aggiungendo Salesman e BaseEntity

Si può arrivare a livello di field

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

Dipendenze fra Assemblies o Namespace o Classi
Es relazione fra Namespace

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

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

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:

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

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.


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

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