Skip to Content

Језици специфични за домен

Опште информације

  • Број ЕСПБ: 6
  • Фонд часова: 3+2
  • Предметни наставник: проф. др Игор Дејановић (igord на uns ac rs)
  • Предметни асистент:

    • MSc Балша Шаренац (balsasarenac на uns ac rs)
  • Материјали за наставу су доступни на линку

  • Google група: https://groups.google.com/g/kzi-jsd

    • Обавезно се пријавите!
  • Консултације се обављају по потреби уз најаву на имејл
  • Договор о усменим испитима се обавља преко групе:

Циљ предмета

  • Оспособљавање студената за дизајнирање и имплементацију софтверских језика намењених за уске домене људске делатности (Језици специфични за домен - ЈСД, Domain-Specific Language – DSL) уз примену савремених метода, техника и алата.
  • Савладавање модерних технологија за развој DSL-ова уз ослонац на програмских језик Pyhon и алате: Arpeggio и textX.

Зашто користити језике специфичне за домен?

  • Прилагођеност домену омогућава једноставније описивање решења проблема. Користе се концепти домена.
  • Поједине студије показују да повећање продуктивности иде и до 1000% у поређењу са језицима опште намене*.
  • Доменски експерти могу директно користити DSL-ове јер је то језик њиховог домена.
  • Идеал коме тежимо:

    • Софтвер инжењери креирају и еволуирају језике, алате и мапирање на циљне техничке платформе.
    • Доменски експерти дефинишу конкретна решења употребом DSL-а.

Тематске целине

  1. Увод у ЈСД-ове (мотивација)
  2. Увод у програмски језик Пајтон
  3. Језичке синтаксе и метамоделовање
  4. Текстуалне синтаксе и парсирање
  5. Arpeggio
  6. textX
  7. Подршка за Visual Studio Code textX-LS, textX алати - textX-dev
  8. Поставка пројектног задатка - дискусија
  9. parglare
  10. Трансформације, генерисање кода и интерпретирање - Jinja2, textX-jinja
  11. Студије случаја - DOMMLite, pyFlies
  12. Презентације пројеката и дискусија
  13. Ограничења, систем типова, scoping, linking.
  14. Коеволуција језика

Структура оцене

  • Предиспитне обавезе - 60%

    • Пројекат - 50%
    • textX тест - 10%
  • Теоријски део испита (усмени) - 40%

Пројекат

  • Тимски рад - тимови од 4±1 студента.
  • Обавезна употреба система за контролу верзија (Git).
  • Обавезна употреба система за управљање пројектом (GitHub).

Пројекат - расподела бодова

Активност бодови
Дизајн језика 10
Имплементација језика 20
Подршка за VS Code 12
- Основно (5)
- LSP (7)
GitHub активност 8
Укупно 50

И поред тимског рада сви бодови се добијају индивидуално.

Литература