UML (Unified Modeling Language) rappresenta una famiglia di notazioni grafiche utili a rappresentare sotto diversi punti di vista il progetto di un sistema software, basato, in particolare, sul paradigma orientato agli oggetti.
La sessione affronta le motivazioni che stanno dietro a UML, ne definisce le diverse modalità di utilizzo e introduce le regole sintattiche di base che caratterizzano i principali diagrammi di modellazione (diagramma delle classi, casi d'uso, diagrammi di sequenza).
Le architetture layered permettono di stratificare servizi concentrando e delegando le responsabilità dei sottosistemi; al centro dell'architettura troviamo quindi il Domain Model, che definisce le entità gestite dal sistema ed il loro comportamento. Concentrare questo comportamento nei servizi impoverisce il Domain Model, di fatto "impoverendo" l'adesione della nostra architettura al paradigma object oriented.
Viceversa, affollare il Domain Model rischia di precludere caratteristiche strategiche quale la "persistence ignorance".
In questa sessione introdurremo i principi necessari ad operare una distribuzione delle funzionalità all'interno del sistema in modo da soddisfarne i requisiti.
Responsabilità del Data Access Layer è gestire la persistenza del Domain Model, il cui mapping verso una struttura relazionale apre un vaso di Pandora colmo dei "tipici" requisiti: persistenza transazionale di grafi di oggetti, supporto a differenti DBMS, supporto a strutture dati eterogenee, ... In questa sessione mostreremo come disaccoppiare il Domain Model dallo strato di accesso ai dati, inizialmente implementato basandosi direttamente su ADO.NET per poi introdure l'utilizzo di strumenti ORM.
Per essere efficente la sicurezza di una applicazione deve nascere e crescere insieme alla sua architettura. Microsoft ha collaudato su se stessa un processo chiamato Security Develpment Lifecycle (SDL) che si avvale di una serie di linee guida e di un modello della minaccia (threat modeling) che accompagna il progetto in tutto il ciclo di vita. Nella sessione oltre a questi principi vedremo anche il tool di modellazione e le librerie che sono a disposizione per l'intero team di sviluppo.
Model View Controller (il pattern più frequentemente citato e altrettanto spesso frainteso) apre la porta alla progettazione dell'interazione utente: CRC, Mind Map, execution-evaluation cycle di Norman, il General Interaction Framework e il diagramma di interazione utente
Visual Studio Team System e Team Foundation Server permetteno di cambiare completamente il modo di gestire i progetti. Si passa da una gestione in cui vengono predetti dati e tempi, preparati diagrammi e piani di progetto, cercando poi di adattare il progetto ai numeri e alle date costruite in maniera "empirica", ad una gestione che utilizza le metriche di progetto e di processo preparate automaticamente da Team Foundation Server per guidare le decisioni. In questa sessione vedremo come sfruttare al meglio i prodotti della famiglia Team System senza tralasciare metodologie, progettazione... e tutto il resto!