Visual Studio T4 Tyhjästä hallittuun generointiin #tddev. Kalle Launiala.

Samankaltaiset tiedostot
ADM Arkkitehtuuritason automaatio #tdarc

Ohjelmistotuotannon itse-automatisointi Avoin menetelmä nykyisten tekijöiden työn radikaaliin tehostamiseen

Web Services tietokantaohjelmoinnin perusteet

Mikkelin sähköisen asioinnin alusta: Toimittajan näkökulma. Kalle Launiala, ProtonIT Oy

.NET 2006 ja sen jälkeen

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Onnistunut Vaatimuspohjainen Testaus

Semanttinen Web. Ossi Nykänen Tampereen teknillinen yliopisto (TTY), DMI / Hypermedialaboratorio W3C Suomen toimisto

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

Asynkroninen ohjelmointi.net 4.5 versiolla

Microsoft Visual Studio 2005

Tech Conference Visual Studio 2015, C#6,.NET4.6. Heikki Raatikainen. #TechConfFI

TIETOKONEYLIASENTAJAN ERIKOISAMMATTITUTKINTO

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

EOFFICEN UUDET PIIRTEET

C# 3.0:n uudet ominaisuudet Language Integrated Query...45

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

XML johdanto, uusimmat standardit ja kehitys

Testaustyökalut. Luento 11 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

Viestinvälitysarkkitehtuurit

Viestinvälitysarkkitehtuurit Lähtökohta:

Domain spesifinen mallinnus ja generointi käytännössä. Petri Savolainen

W3C-teknologiat ja yhteensopivuus

Arkkitehtuuri. Ylätason sovellusarkkitehtuuri

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Ohjelmistojen mallintaminen Tietovuokaaviot Harri Laine 1

KADA (Drupal 7) migraatio uuteen (versioon) webiin

HSMT J2EE & EJB & SOAP &...

5. HelloWorld-ohjelma 5.1

Toimittaja Looginen väylärakenne + kirjastot. Kalle Launiala, ProtonIT Oy kalle.launiala@protonit.net

Testidatan generointi

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu

12. Kehysarkkitehtuurit

Visual Basic -sovelluskehitin Juha Vitikka

Microsoft Dynamics CRM 4.0. Jani Liukkonen

Hieman lisää malleista ja niiden hyödyntämisestä

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö


Perinteiset asennuspaketit

Ohjelmistoarkkitehtuurit kevät

Mikkelin sähköisen asioinnin alusta - päätöksenteko. Kalle Launiala / ProtonIT Oy kalle.launiala@protonit.net

.NET ajoympäristö. Juha Järvensivu 2007

statbeatmobile PROJECT REVIEW iteration 1

Copyright Observis Oy All rights reserved. Observis Oy Ville Kanerva, CTO Heikki Isotalus, COO Datasta tietoa

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

W3C ja Web-teknologiat

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

Tekoäly ja alustatalous. Miten voit hyödyntää niitä omassa liiketoiminnassasi

Portaaliteknologiat mahdollistavat ajattelutavan muutoksen

UML- mallinnus: Tilakaavio

Ohje Hosted.fi SharePoint

Uutta Remote Support Platform 3.0 -versiossa

Robotiikka osana taloushallintoa palvelukeskuksessa

Sopimusten ja tärkeiden asiakirjojen arkistointi vaivattomasti palveluna

Adobe Photoshop ATK Seniorit Mukanetti/ Kuvakerho. Elements tutuksi

Verkkopalveluiden saavutettavuus

3 Verkkosaavutettavuuden tekniset perusteet

Tapahtuipa Testaajalle...

Verkkosisällön saavutettavuusohjeet 2.0: hyviä ohjeita monimuotoisen sisällön suunnitteluun ja arviointiin

Optiman uudet ominaisuudet ja tuotekehityksen suuntaviivat

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Toiminnanjohtaja Jukka Wallinheimo Etätunnistustekniikkaa rakennusalalla

DI Studion käyttökokemuksia. Kaisu Ikonen, Tilastokeskus

Ensimmäisessä vaiheessa ladataan KGU tietokanta Hallitse tietokantoja toiminnon avulla.

Millainen on menestyvä digitaalinen palvelu?

Luokka- ja oliokaaviot

Integraattorit Uudet modulit. Rajapinnat Jatkuva kehitys. Liittymät L7 SaaS-palvelu. SaaS-ratkaisut 3n osapuolen kumppanit

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

10. Tuoterunkoarkkitehtuurit

Android ohjelmointi Tunti 2. Käyttöliittymät ja resurssit

Case TUHTI. Projektin tunnuslukuja. ! Suuri perusjärjestelmäuudistus! Työt alkoivat kesällä ! Java luokkia n. 5000

XML Finland seminaari : Office 2007 XML dokumenttituotannossa

XML tehtävien työnkulku

TIE Principles of Programming Languages CEYLON

HOJ J2EE & EJB & SOAP &...

C++11 lambdat: [](){} Matti Rintala

.NET ja C# Virtuaalikone. Common Language Infrastructure (CLI) Periaate. Etuja. Haittoja. Mikä on CLI. CLI standardin merkitys (CLS, Ecma)

Microsoft Visual J++ ohjelmointiympäristö

Verkostojen tehokas tiedonhallinta

Sulava. Markku Suominen. Puhelin: Käyttöönotto Käyttö

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 2: Vaiheet 3 & 4. Antti Jääskeläinen Matti Vuori

HP Change Rules of Networking

Kuntalaisen rajapinta sähköiseen asiointiin. Kalle Launiala, ProtonIT Oy

Introduction to exterior routing

Pilvee, pilvee, pilvee TERVETULOA! Toni Rantanen

in condition monitoring

APPLICATION MANAGEMENT SERVICES. ecraft

VisualStudio Pikaopas, osa 1: WEB-sivujen suunnittelu

5. HelloWorld-ohjelma 5.1

Collect.Store. Share. with

Avoin lähdekoodi hankinnoissa Juha Yrjölä

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Transkriptio:

Visual Studio T4 Tyhjästä hallittuun generointiin #tddev Kalle Launiala http://abstractiondev.wordpress.com kalle.launiala@citrus.fi

Mikä Visual Studio T4 on? Template-markup tyyppinen koodigeneraattori Microsoftin koodigeneroinnin pohjateknologia DSL (Domain-Specific-Language) Toolkit ASP.NET MVC Entity Framework Syntynyt jo Visual Studio 2005 aikana Guidance Automation Toolkit (GAT)

Mitä ongelmaa koodigenerointi ratkaisee? Joukon ongelmia, joita kenelläkään ei ole Mahdollistaa oman kehityksen tehostamisen radikaalisti automaation avulla Myös omien tuotosten helppokäyttöisen jakamisen Automaatio mahdollistaa skenaarioita, jotka eivät ole realistisia ilman automaatiota

T4 Demosessio Kaikki esityksen materiaali löytyy täysin avoimesti githubista https://github.com/kallex/mstechdays2012demos/downloads git clone git://github.com/kallex/mstechdays2012demos.git Englanninkieliset videodemonstraatiot: http://abstractiondev.wordpress.com/demo-videos/

Aputyökalut Visual Studion lisäksi Tangible T4 editor Intellisense T4:ään T4 Toolbox Avoin laajennus T4:n toiminnallisuuteen T4ScriptFileGenerator työkalun lisäys VS:ään

Esityksen jäsennys T4 teknologiaperusteet Tyhjältä pöydältä rakentuvat Basic demot Koodigeneroinnin hallinta Asteittain hallintaan siirtyvät Advanced demot Käytännöllinen ja tehokas tapa hallintaan XML + Intellisense tuettu rakenne ja generointi

T4 puhtaalta pöydältä Hello World.txt Web template-markup tyyppinen.html-intellisense Tagit korvaukseen <#= #> suoritukseen <# #> (ja <#+ #>) this. generaattoriapumetodit

Hello World, Web-markup, evaluointi ja suorituslohkot BASIC DEMO 1, 2, 3, 4, 5

Suorituslohkot ja include filet Suorituslohkotagit Alkusuorituslohkon <# #> <#+ #> - luokkatagit Include filet Yhteiskäyttöisyys T4 suoritusten puolella

Suorituslohkot ja niiden erot <# #> ja <#+ #>,.ttinclude filet BASIC DEMO 6, 7

Mitä tapahtuu teknisesti? TextTemplatingFileGenerator Tuottaa outputin suoraan Muuntaa templaten (huom! Ei outputtia!) C#-koodiksi, kääntää koodin ja ajaa käännetyn koodin heti TextTemplatingFilePreprocessor Tuottaa itsenäisesti ajettavan generaattorin Muuntaa templaten C# koodiksi, ja tuottaa outputiksi kyseisen koodin, joka käännetään jälkeenpäin ajettavaksi generaattoriksi

TextTemplatingFileGenerator vs. TextTemplatingFilePreprocessor BASIC DEMO 8

Edellytykset koodigeneroinnin laajamittaiseen käyttöön KOODIGENEROINNIN HALLINTA

Koodigeneroinnin hallinta Automaation tuki myös T4:n tekemiseen Muiden kuin.tt tiedostojen muutosten automatisointi Ulkoisen lähteen käyttö generoinnissa Luokkien generointi.txt-tiedoston pohjalta Erotetaan suora tiedoston luku generoinnista T4 prosessin sisäinen luokkarakenne Määritetään selkeä välikerros lähdetiedon ja generoinnin väliin Hallinta siihen mistä generoidaan ja mitä Laajennetaan mallia hallitusti rakenne edellä Lisätään luokkien lisäksi propertyt.txt välikerroksen luokkarakenne generointi

Muun, kuin.tt tiedoston muutoksiin reagointi T4:llä ADVANCED DEMO 1

Yhteenveto Advanced Demo 1 T4 automaatio voidaan ulottaa myös.tt tiedostojen ulkopuolelle T4 on kuin mikä tahansa sovellus Voi kutsua ulkoista koodia Ajaa eri prosessissa VS:n kanssa (ainakin custom hostin alla) Ei lukitse tiedostoja VS:n prosessiin

Luokkien generointi.txt tiedon sisällön pohjalta ADVANCED DEMO 2

Yhteenveto Advanced Demo 2 Erotetaan generaattorin logiikka lähtötiedosta Generaattoria voidaan jakaa ja ylläpitää itsenäisesti

T4 prosessin luokkarakenne lukemisen ja generoinnin väliin ADVANCED DEMO 3

Yhteenveto Advanced Demo 3 Tunnistetaan ohjaava rakenne Ei lähtötiedon tai generaation lopputuloksen mukaan taivuttamista Taivutetaan generoinnin kohteen mukaan Lopputuloksen generointi on suoraviivaista

Vastuun siirto T4 luokkarakenteelle ADVANCED DEMO 4

Yhteenveto Advanced Demo 4 Määrämuotoistetaan rakenne Koodigeneroinnin ongelmat ovat hallinnan puutteessa Näennäistä lisätyötä implisiittiselle luokkarakenteelle... Joka ohjautuu joko inputin tai outputin mukaan muuten Helpottaa hallintaa ja elinkaaren yli tapahtuvaa ylläpidettävyyttä Normaalia, perusteltua sovellusarkkitehtuuria

Laajennetaan luokkarakenne-lähtöisesti sisäänlukua ja generointia ADVANCED DEMO 5

Yhteenveto Advanced Demo 5 Laajennuksen tekemisen prosessi on yksiselitteinen Todennäköistä, että eri kehittäjät päätyvät hyvin samannäköiseen ratkaisuun Ainakin tunnistavat osa-alueet

XML + Intellisense tuettu rakenne ja generointi KÄYTÄNNÖLLISEN TEHOKAS VERSIO

T4 tekemisen tehostaminen XML Skeema määrittää mallin T4 Toolbox + T4 ajaa xsd.exe:llä serialisointiluokat Intellisense + tooltip tuettu XML korvaa.txt:n Skeema + serialisointiluokat tuovat T4 tehot T4 include-teknologian kautta vahvasti tyypitetty Intellisense-tuettu Malli implisiittisesti skeemalla dokumentoitu

ADM versio Advanced Demo 5:stä ADVANCED DEMO 6 (ADM)

Yhteenveto Advanced Demo 6 Kaikki edelliset osa-alueet edelleen tunnistettuina Sovittu yhtäläiset toimintatavat, jotka mahdollistavat automaation tukemisen

Automatisoitavat yleiset arkkitehtuurirakenteet Palvelinkerros + proxy - luokat Liiketoiminnan yleinen luokkamalli Looginen operaatiorakenne Tyypillisesti liiketoimintaprosessit + workflow kehykset Generointi mm. Tiedonsiirto-olioihin käyttöliittymän ja palvelinkerroksen väliin Myös eri natiiviplatformeille; mm. Mobiilipuolella Lopputuloksena proxymäisiä palvelinmetodikutsuja

Universal Distributed Interop Automation (+ Logical Operations and Logical Class Model) Proxy classes, listeners, regardless of the protocol or channel (inproc, interproc, network, filesystem) - Network wide upgrade of protocols, with autodiscovery possible

ADM-automaatio sessio huomenna ADM-abstraktion teko tyhjästä Työskentely korkeammalla abstraktiotasolla Automaation tukema informaationhallinta Dokumentoinnin generointi Projektin läpinäkyvä automaattinen seuranta Määrittelijöiden / asiakkaan sisällyttäminen dialogiin Uudelleenkäytettävyys, modulaarisuus

Muutos lähtee itsestä! KIITOS!