Jezici specifični za domen

O predmetu

dr Igor Dejanović

Fakultet tehničkih nauka u Novom Sadu

Katedra za informatiku

Opšte informacije

  • Broj ESPB: 6
  • Fond časova: 3+3
  • Predmetni nastavnik: dr Igor Dejanović (igord na uns ac rs)
  • Predmetni asistent: MSc. Renata Vaderna (renatav na uns ac rs)
  • Stranica predmeta: http://www.informatika.ftn.uns.ac.rs/JSD
  • Konsultacije se obavljaju po potrebi uz najavu na email

Cilj predmeta

  • Osposobljavanje studenata za dizajniranje i implementaciju softverskih jezika namenjenih za uske domene ljudske delatnosti (Domain-Specific Language – DSL) uz primenu savremenih metoda, tehnika i alata.
  • Savladavanje modernih tehnologija tehnika za razvoj DSL-ova uz oslonac na programskih jezik Pyhon i alate: Arpeggio, textX i Textile.

Zašto koristiti jezike specifične za domen?

  • Prilagođenost domenu omogućava jednostavnije opisivanje rešenja problema. Koriste se koncepti domena.
  • Pojedine studije pokazuju da povećanje produktivnosti ide i do 1000% u poređenju sa jezicima opšte namene.1
  • Domenski eksperti mogu direktno koristiti DSL-ove jer je to jezik njihovog domena.
  • Ideal kome težimo:
    • Softver inženjeri kreiraju i evoluiraju jezike, alate i mapiranje na ciljne tehničke platforme.
    • Domenski eksperti definišu konkretna rešenja upotrebom DSL-a.
  1. MetaCase, “Nokia case study,” tech. rep., MetaCase, 2007

Tematske celine

  1. Uvod u programski jezik Pyhon
  2. Uvod u DSL-ove (motivacija)
  3. Tekstualne sintakse i parsiranje - Arpeggio
  4. Apstraktne, konkretne sintakse i metamodelovanje
  5. textX
  6. Transformacije, generisanje koda i interpretiranje - jinja2
  7. Postavka projektnog zadatka - diskusija
  8. Primeri - DOMMLite, pyFlies, mobl
  9. Java bazirani alati - Xtext i Spoofax
  10. Grafičke sintakse (editori, vizualizatori, layouting, routing) - Graphviz i dot GMF, Graphitti, Spray
  11. Ograničenja, sistem tipova, scoping, linking.
  12. Domeni, jezici i njihova hijerarhija.
  13. Prezentacije projekata i diskusija
  14. Koevolucija jezika

Struktura ocene

  • Predispitne obaveze - 60%
  • Teorijski deo ispita - 40%

Projekat

  • Timski rad - timovi od 4±1 studenta.
  • Obavezna upotreba sistema za kontrolu verzija (Git).
  • Obavezna upotreba sistema za upravljanje projektom (GitLab).

Projekat - raspodela bodova

AktivnostBroj bodova
Dizajn jezika20
Implementacija jezika20
Git aktivnost10
Gitlab aktivnost10

Napomena

I pored timskog rada svi bodovi se dobijaju individualno.

Literatura za predmet

  1. M. Völter, DSL Engineering: Designing, Implementing and Using Domain-Specific Languages. 2013
  2. S. Kelly and J.-P. Tolvanen, Domain-Specific Modeling: Enabling Full Code Generation. Wiley-IEEE Computer Society Pr, March 2008
  3. A. Kleppe, Software language engineering: creating domain-specific languages using metamodels. Addison-Wesley, 2009
  4. D. Ghosh, DSLs in Action. Manning Publications, 2010
  5. Beazley, David M. Python essential reference. Addison-Wesley Professional, 2009.

KRAJ