Jezici specifični za domen

Upoznavanje

Prof. dr Igor Dejanović (igord at uns ac rs)

Kreirano 2020-11-05 Thu 14:49, pritisni ESC za mapu, m za meni, Ctrl+Shift+F za pretragu

Sadržaj

1 Opšte informacije

2 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 za razvoj DSL-ova uz oslonac na programskih jezik Pyhon i alate: Arpeggio i textX.

3 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*.
  • 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.

4 Tematske celine

  1. Uvod u programski jezik Pyhon
  2. Uvod u DSL-ove (motivacija)
  3. Tekstualne sintakse i parsiranje - parglare, Arpeggio
  4. Apstraktne, konkretne sintakse i metamodelovanje
  5. textX
  6. textX alati - textX-dev
  7. Postavka projektnog zadatka - diskusija
  8. Primeri - DOMMLite i ER, pyFlies, mobl.
  9. Transformacije, generisanje koda i interpretiranje - Jinja2, textX-jinja
  10. Podrška za Visual Studio Code - textX-LS
  11. Java bazirani alati - Xtext i Spoofax
  12. Grafičke sintakse (editori, vizualizatori, layouting, routing) - Graphviz i dot, GMF, Graphitti, Spray
  13. Ograničenja, sistem tipova, scoping, linking.
  14. Prezentacije projekata i diskusija
  15. Koevolucija jezika

5 Struktura ocene

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

6 Projekat

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

7 Projekat - raspodela bodova

Aktivnost bodovi
Dizajn jezika 20
Implementacija jezika 20
Git aktivnost 10
GitHub aktivnost 10
Ukupno 60

I pored timskog rada svi bodovi se dobijaju individualno.

8 Literatura