2. Framework
• Behavior e test-driven development (QUnit): I test sono
parte integrante dell’applicazione durante lo sviluppo
• Progettato interamente grazie a WPF e ai servizi RIA
• Pieno supporto con Microsoft TypeScript
• Framework perfettamente compatibile anche lato client
• Template basati su HTML5 per una single page
application e implementati con librerie quali Durandal,
Knockout, Angular
• Interfaccia utente veloce, potente e personalizzabile
grazie al Model View – View Model e ad altre moderne
tecnologie
3. Framework
• Entità di dati lato client generate grazie ai template T4 direttamente dai
modelli di Entity Framework
• Totale supporto a Entity Framework delle classi di TypeScript: ereditarietà,
astrazione, tipi complessi e così via
• Tracking degli oggetti lato client
• Object identity e serializzazione dei grafici delle entità grazie ai layers delle
Web-API, personalizzabili grazie a .NET e al serializzatore di TypeScript
• Supporto totale, lato client, di JavaScript e TypeScript alle relazioni uno a
molti, molti a uno e molti a molti
• Scenari lato client realizzabili perfettamente anche offline grazie alla
persistenza dei dati
• Supporto alle classi parziali grazie alla serializzazione
4. Metodologia del Framework
• Formalizzazione dei requisiti e del funzionamento
• In un primo momento tramite semplici documenti word
• Da implementare: stretta integrazione fra i documenti di analisi in word
e Visual Studio
• L’integrazione dell’analisi (CR) deve generare dei “work items” e
un’implementazione reale dell’applicazione
• Il perfetto funzionamento diventa un requisito del test driven
• In un primo momento i test sono realizzati con QUnit
• I requisiti dei test sono analizzati tramite documenti word
• In futuro le aggiunte saranno integrate automaticamente nel codice
• Funzionamento perfetto / miglioramento del test driven development
• Sono in fase di studio nuove funzionalità del test driven development
5. Metodologia del Framework
Test e behavior driven development
• 1) Definizione di cosa debba funzionare
– A cura di: analista
• 2) Implementazione dei test
– A cura di: sviluppatore
• 3) Implementazione del Model View – View Model
– A cura di: sviluppatore
• 4) Test rigorosi sul funzionamento del Model View – View Model
– A cura di: sviluppatore
• 5) Implementazione dell’HTML e delle viste
– A cura di: sviluppatore e designer
• 6) UAT (user acceptance testing)
– A cura di: clienti e stake holder
6. Framework
Data Layer
• First class Repository pattern e implementazione della Unit of Work
– Contratti (interfacce) per i Repository pattern generati automaticamente
– Creazione e connessione di implementazioni concrete grazie a Unity
dependency injection
– Differenti formati di dati possono essere uniti per ottenere le migliori
performance
• Nhibernate
• Entity Framework 7.x ASAP
• Approccio con modello DDD (data display debugger)
– Supporto totale a EDMX: generazione delle entità, sia lato server che lato client
– Supporto per Code First:
• Entità scritte a mano, con generazione delle entità stesse sia lato server che lato
client. Verosimilmente solo le interfacce saranno generate col supporto di AngularJS
– Sono allo studio altri specifi linguaggi (o metalinguaggi)
– Pieno supporto al change tracking
9. Framework
Service layer
• Servizi di legacy per WCF
– Protocolli WS
– IIS Application Server con self hosting
• Servizi per le Web Api
– Sicurezza basata su REST, JSON e SAML
– Grafici JSON pienamente supportati, anche con l’utilizzo di Javascript
• Trasferimento uniforme di dati
– Le entità DDD e tutti i tipi di valore sono serializzati e trasportati da e verso
i client JavaScript
– Serializzatore di entità (realizzato da Code Architects) per le entità tipizzate
di JSON .Net da e verso JavaScript
• Performance decisamente superiori rispetto ai metodi nativi di parsing e stringify di
JSON
• Serializza grafici di grandi dimensioni anche da JavaScript
• Remapping di namespace, moduli ed entità tipizzate di classi parziali ottenute tramite
ereditarietà
10. Framework
Service layer
• Supporto ai Web Components nativi
• Implementazione
– Implementazione orientata a oggetti
– Installazione e integrazione semplice ed intuitiva
<div class="testPageContent">
<shell-label params="value: 'Current date:', htmlClass:'pull-left'"></shell-label>
<shell-dateinput params="value: currentDate, htmlClass:'pull-left'"></shell-dateinput>
<br />
<shell-buttonicon params="text:'Prev', $onClick: function()
{ $root.gotoPrevPage() }, htmlClass:'pull-left'"></shell-buttonicon>
<shell-buttonicon params="text:'Today', $onClick: function()
{ $root.gotoTodayPage() }, htmlClass:'pull-left'"></shell-buttonicon>
11. Framework
Interfacca utente
• Supporto completo di HTML5 per tutti i
browser e dispositivi
• Ogni scenario d’uso per ogni interfaccia
utente è semplicemente un template!
– Grazie alla “indirezione” dei componenti
dell’interfaccia utente è possibile cambiare
visualizzazione per i differenti dispositivi
semplicemente aggiornando la libreria dei
template
12. Framework
User experience
• Pattern di implementazione dei template ben definito
• Validazioni e sicurezza sul dominio perfettamente integrate grazie al
binding fra MVVM e viste
• L’interfaccia utente ha il suo specifico modello, simile a un XAML
– La serializzazione e deserializzazione di frammenti dell’interfaccia
utente è possibile grazie a un’efficace implementazione di
TypeScript realizzata da Code Architects
• Sul browser, in runtime, il designer dell’interfaccia utente legge e
scrive JAML (JSON Application Markup Language)
• La validazione e le altre caratteristiche sono supportate da tecniche
di repository e da viewmodels aggregati dinamicamente
14. Framework
Gestione dell’applicazione
• Analisi
• Behavior e test driven development
• Versioning
– Sotto forma di pacchetti NuGet
• Metodologia
– Sviluppo di nuove applicazioni tramite:
• SCRUM ( più di un anno di esperienza in Code Architects su
questa metodologia su diversi progetti e team di sviluppo)
– Integrazione con applicazioni legacy
• Metodologia KANBAN
15. SUE AGILE
Facebook - SUE AGILE
Linkedin – SUE AGILE
www.sue-agile.codearchitects.com
http://sueagile.cloudapp.net/
16. Ing. Sabino Labarile
Code Architects s.r.l.
Via Jazzitiello 15 C/D Santeramo in Colle (Bari)
www.codearchitects.com