1 / 27

DSL-kielet Aali Alikoski Avanade aali.alikoski@avanade

DSL-kielet Aali Alikoski Avanade aali.alikoski@avanade.com. Sisältö. Mitä DSL tarkoittaa? Miksi ja milloin kannattaa harkita käyttöä? Microsoft DSL Tools Demo Avanaden kokemuksia DSL-pohjaisista työkaluista. Sovelluskehityksen tuottavuus. IT-teollisuuden maine on huono

noah
Download Presentation

DSL-kielet Aali Alikoski Avanade aali.alikoski@avanade

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DSL-kielet Aali Alikoski Avanade aali.alikoski@avanade.com

  2. Sisältö • Mitä DSL tarkoittaa? • Miksi ja milloin kannattaa harkita käyttöä? • Microsoft DSL Tools • Demo • Avanaden kokemuksia DSL-pohjaisista työkaluista

  3. Sovelluskehityksen tuottavuus • IT-teollisuuden maine on huono • Yli puolet projekteista epäonnistuu tavalla tai toisella • Tuottavuutta, ennustettavuutta ja luotettavuutta parannettava • Sovelluskehitysprojekteja tehdään aivan liikaa käsityönä • Virhealtista • Suuri riippuvuus yksilöistä • Kehittäjän tuottavuus • Voi olla myös negatiivinen!

  4. Sovelluskehityksen vaikeus • Useita eri tapoja ratkaista ongelma • Kaikki yhtä hyviä – ei ainoaa oikeaa ratkaisua • On usein löydettävissä joukko ratkaisumalleja jotka toimivat ”hyvin yhteen” • Suunnitelmat ja toteutus ovat liian kaukana toisistaan • Suunnittelu yhdellä välineellä ja toteutus toisilla – hajaannus on väistämätöntä • Oleellista on että kehitystiimi on yhtenäinen • Ratkaisee samat asiat samalla tavalla → yhtenäinen arkkitehtuuri • Noudatetaan samaa kehitysprosessia

  5. Yhtenäisyys • Miten hyödyntää ”hyvien” kehittäjien potentiaali ja saada se muiden käyttöön? • Asiantuntijat suunnittelevat ja toteuttavat arkkitehtuurin keskeiset osat • Muut rakentavat niiden pohjalta järjestelmän • Eri lähestymistapoja • Framework, luokkakirjasto, yhteiset komponentit, DSL-kielet...

  6. Software Factory • Kattotermi teollistuneelle softatuotannolle • DSL-kielet ovat osa mutta ei koko käsite • Tapa suunnitella ja toteuttaa (myös) DSL-pohjaisesti järjestelmiä • Mallinnus perustuen DSL-käsitteisiin • Malli ilmaisee vaatimukset riittävän tarkalla tasolla jotta siitä voidaan generoida toimiva sovellus tai sen osia • DSL-kielet/generaattorit rakentuvat tarvittaessa frameworkien päälle • Yleiskäyttöisestä välineestä tarvelähtöinen spesifi työkalu • Automatisoidaan toistuva ja rutiininomainen työvaihe • Nostetaan abstraktiotasoa!

  7. Domain Specific Language • Mikä? • Kuvauskieli joka on tehty kuvaamaan yhden sovellusalueen problematiikkaa • Laajuudeltaan rajattu • Kuvaa sen yhden alueen hyvin • Menestyksellisiä esimerkkejä löytyy mm WinForms designer, SQL • Sisältää sovellusalueen keskeiset käsitteet joiden varaan sovellukset rakentuvat • Käsitteiden varaan tehdystä kuvauksesta voidaan automaattisesti tuottaa sovelluksen rakennuspalasia (koodia, konfigurointitietoja jne) • Miksi? • DSL-toteutus määrittelee formaalit käsitteet, niiden väliset suhteet ja muut säännöt • Kehittäjät ”pakotetaan” noudattamaan DSL-toteutuksen sääntöjä ja työskentelemään korkeamman tason käsitteillä → yhtenäisyys • Automatisoidaan rutiinityö → vähemmän inhimillisiä virheitä • Miten? • Työkalut tukevat

  8. Horizontal GUI Web Business logic Database Deployment Vertical Telephone bills Insurance Ticketing Hardware construction generalpurpose specific Mikä on DSL? domain specific language Graphical Textual Forms-based Mixed

  9. Demo • Visual Studion valmiit mallinnuspiirteet

  10. Factory Life Cycle DomainKnowledge SolutionKnowledge Input FactoryDevelopment ProductDevelopment Feedback Produces Produces Input Work Products Factory Schema Factory Template

  11. What is a Model? A representation of something, real or imagined, which hides some aspects of that thing, so that other aspects are easier to see and manipulate

  12. Malli → toimivaa koodia Tools Framework Other Editors Other Resources Custom Partial Classes käyttää DSL Editor ASP.NET Framework Partial Classes tuottaa Model Files(SDM) käyttää tuottaa DSL Definition Config. Files

  13. Generointivaihtoehdot • XSLT-muunnos • Mallit ovat XML:ää • Ohjelmallisesti DSL APIn avulla • DSL-määrityksestä syntyy tyypitetty API • CodeDOM apuna koodin generoinnissa • Template-pohjaisesti • Ns T4 -templatekieli • Muistuttaa klassista ASPia

  14. DSL vs perinteiset kielet oliopohjaisuus DSL DSL-kieli nostaa abstraktiotasoa olio-ohjelmointiin verrattuna Generointi tuottaa jotain jatkojalostettua sisältöä mallista Ei ole järkevää mennä korjaamaan generaattorin tuotoksia, vaan parantaa generaattoria tai mallia • Olio-ohjelmointikielet nostivat abstraktiotasoa C:hen tai assembleriin nähden • Kääntäjä tuottaa C-koodista assembleria • Ei ole järkevää mennä korjaamaan kääntäjän tuotoksia, vaan parantaa kääntäjää tai C-koodia

  15. Mallit lähdekoodina • DSL-lähestymistavassa mallit ovat keskeinen toteutusväline • Malleista generoidaan muita jatkojalosteita • Mallit versioidaan versionhallintavälineillä (vs malleista generoidut jatkojalosteet) • Kaksisuuntainen generointi (round-tripping) • Jatkojalosteiden editointi suoraan ei lähtökohtaisesti ole järkevää • Yleisenä mekanismina erittäin vaikea toteuttaa

  16. Mihin DSL-kielet soveltuvat? • Tuttu domain (käsitteistö, toimintaympäristö) • Tunnetaan ratkaisu • On varaa investoida työkalukehitykseen monistettavuuden saavuttamiseksi • Vaatii usein vähintään n 5 toistokertaa • Halutaan saada parempi kontrolli sovelluksen arkkitehtuuriin • Halutaan yhtenäistää kehitystyötä • Halutaan mahdollistaa kokemattomampien kehittäjien osallistuminen kehitystyöhön

  17. Microsoft DSL Tools • Visual Studio laajennosalusta • Työkalu DSL-määrityksen tekemiseen • Ajonaikainen alusta DSL-pohjaisille työkaluille • Osa Visual Studio SDK:ta • Historia • Ensimmäiset esiversiot 2006 keväällä VS 2005:lle • Ensimmäinen tuotantoversio syksyllä 2006 • Nykyversio Visual Studio 2008:lle

  18. SDK mallinnusvälineidentekoon DSL Tools for Visual Studio Distributed Systems Designers Class Designer Your new Designer VisualStudio Microsoft Modeling Platform In Visual Studio

  19. Mallinnusarkkitehtuuri Visual Studio UI integration for components like Toolbox & menus Extensible drawing surface with support for routing and auto-layout Program controlled artifact generation Microsoft Modeling Platform in Visual Studio Shell Frame- work Validation Frame- work Design Surface Framework Template Engine Domain Model Framework In-memory graph database with rich services (e.g., transactions, serialization, rules, events, queries) Checks constraints and guides user to resolve issues

  20. Designerit Visual Studiossa Model Explorer Toolbox Properties Window Drawing surface with domain- specific notation Validation

  21. Haasteita Persistence Code generation Parsing Packaging Source control Partitioning

  22. Demo • Esimerkki-DSL ja sen käyttö

  23. Avanade ja DSLt • Avandella useita DSL-pohjaisia työkaluja • Viimeisin versio Web Service Software Factoryn kaltainen • Käytetty projekteissa ympäri maailman • Hyödyt • Käsityön automatisointi (koodin generointi) • Virheiden väheneminen • Arkkitehtuurin yhtenäistäminen

  24. DSL Tools tulevaisuus(Stuart Kentin blogista) • Yleislinjaukset • Graafisen designer-ympäristönjakoodigenerointialustanjatkokehitys • DSL Tools-projektissa syntyneiden kehitysmallien yleistäminen • VS ”Rosario” • DSL laajennokset • Domain mallin databind-tuki • Parempi sisäkkäisten kaavioelementtien tuki • Koodigenerointi osaksi buildiä • Rosarion jälkeen • WPF-pohjainen designer • Useiden mallien linkitys toisiinsa ja tuki eri näkymille

  25. Yleistä pohdintaa • Mikä on generoinnin rooli ja laajuus? • Koko sovellus? • Osa sovelluksesta? • Konfigurointi-informaatio? • Laajentuu ajan mittaan? • Kuinka stabiili domain on kyseessä? • Paljonko aikaa ja vaivaa kannattaa automatisointiin uhrata? • Useita DSL:iä per sovellus? • Eri näkökulmia (UI, sovelluslogiikka, hajautus, tietorakenteet jne)

  26. Lisätietoja • Kirjoja • Software Factories • DSL Tools • Domain-Specific Language Tools

  27. Kysymyksiä? • aali.alikoski@avanade.com • blog.avanadeadvisor.com/blogs/aalialikoski

More Related