Управљање конфигурацијом софтвера

Упознавање са предметом

Проф. др Игор Дејановић (igord at uns ac rs)

Креирано 2025-11-04 Tue 13:35, притисни ESC за мапу, Ctrl+Shift+F за претрагу, "?" за помоћ

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

  • Број ЕСПБ: 6
  • Фонд часова: 3+2
  • Предметни наставник: Проф. др Игор Дејановић (igord на uns ac rs)
  • Предметни асистент:
    • MSc Вања Мијатов, vanja.mijatov на uns.ac.rs
  • Материјали са предавања су доступни на линку:
  • Материјали за вежбе биће доступни преко GitHub-a и Гугл групе.
  • Комуникација се обавља преко Гугл групе:
  • Консултације се обављају по потреби уз најаву на имејл
  • Договор о усменим испитима се обавља преко групе:

2. Шта представља управљање конфигурацијом софтвера?

  • Управљање конфигурацијом софтвера (Software Configuration Management) представља дисциплину која се бави контролисаном еволуцијом сложених софтверских система.

3. Зашто користити УКС?

  • Софтверски производи често “живе” годинама па чак и деценијама.
  • Софтверски производи су често изузетно комплексни.
  • Да би обезбедили континуалну еволуцију морамо увести процесе, технике и алате који ће то омогућити.
  • Пракса је показала да је успех пројекта директно повезан са употребом ефикасних УКС техника и алата.
  • Прва 4 на листи од 12 корака за бољи развој софтвера1 истакнутог софтвер инжењера, писца и аутора изузетно популарног сервиса StackOverflow Џоела Сполског представљају УКС технике (контрола верзија изворног кода, аутоматизована и континуална изградња и праћење грешака).

4. Зашто користити УКС?

  • Подршка за паралелни рад. Ручно спајање паралелних измена није ни мало забавно.
  • Употреба УКС алата, пре свега дистрибуираних система за контролу верзија је довела до појаве тзв. друштвеног кодирања (Social Coding) и сервиса као што су GitHub, BitBucket и др. Ово је омогућило експлозију развоја слободног софтвера.
  • Зато што вам то тражи послодавац.
  • Зато што вам то тражи клијент.
  • Савет: Ако фирма не користи УКС технике (пре свега контролу верзија) запитајте се да ли желите да радите у таквој фирми.

5. Циљ предмета

  • Савладавање теоретских основа дисциплине управљања конфигурацијом софтвера (Software Configuration Management).
  • Оспособљавање за увођење и примену процеса управљања конфигурацијом софтвера.
  • Упознавање са индустријским стандардима, оквирима и алатима из области управљања конфигурацијом софтвера.
  • Савладавање модерних УКС технологија (Git, pytest, GitHub/GitLab, Docker, Docker Compose, Chef/Ansimble/Teraform).

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

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

7. Пројекат

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

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

Активност Бодови
Модел 4
Имплементација пројекта 26
Имплементација тестова 6
Git 6
GitHub 10
УКС 8
Укупно 60

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

9. План извођења наставе

10. Пројектни задатак

  • Веб апликација за управљање Docker сликама.
  • Слично Docker Hub-у.
  • Детаљи ће бити презентовани на вежбама.
  • Крајњи циљ: дефинисан УКС процес за управљање Docker сликама, подржан апликацијом.

11. Основе управљања конфигурацијом софтвера

  • Основни појмови и концепти.
  • Шта све обухвата УКС? Који су разлози увођења?
  • Традиционална и модерна схватања УКС дисциплине.
  • УКС процеси.
  • УКС обрасци и препоручена пракса (best practice).
  • УКС алати.
  • УКС индустријски оквири и стандарди.

12. Управљање изворним кодом (Source Code Management)

  • Алгоритми и модели. Дистрибуирани и централизовани системи.
  • Управљање алтернативних токовима развоја. Гранање.
  • Формирање основне линије (Baseline).
  • Управљање конкурентним радом. Оптимистичко и песимистичко закључавање.
  • Препоручена пракса.
  • Алати.

13. Системи за контролу верзија

  • Преглед основних особина најпопуларнијих алата за контролу верзија (Subversion, Mercurial, Bazaar, Git).
  • Детаљно упознавање са Git алатом.

14. Управљање променама (Change Control)

  • Шта представља управљање променама?
  • Какве све промене могу настати и у којим фазама животног циклуса?
  • Како се промене прате? Животни циклус захтева за променом.
  • Како се анализира утицај промена на компоненте система?
  • Извештавање.

15. Управљање изградњом и увођење (Build and Deploy)

  • Шта представља изградња а шта увођење софтвера?
  • Зашто је потребно поступак аутоматизовати?
  • Како се изградња и увођење могу аутоматизовати?
  • Шта представља континуална изградња (Continuous Build) и континуална достава (Continuous Delivery)?
  • Puppet, Teraform, Fabric, Docker, Kubernetes…

16. Управљање издањима (Release Management)

  • Шта представља издање софтвера?
  • Зашто је битно да уведемо управљање у овај сегмент?
  • Технике вођења верзија издања?
  • Алтернативна издања.
  • Следљивост и повезивање издања за компоненте и њихове верзије од којих је издање креирано.

17. Литература за предмет

  • J. Humble and D. Farley, Continuous delivery: reliable software releases through build, test and deployment automation Addison-Wesley Professional, 2010
  • S. Berczuk and B. Appleton, Software configuration management patterns: effective teamwork, practical integration, Addison-Wesley Professional, 2003
  • M. Handbook, Configuration management guidance, tech. rep., MIL-HDBK-61A (SE), Department of Defense–United States of America, 2001
  • Scott Chacon and Ben Straub, Pro Git. APress, 2014.
  • Beazley, David M. Python essential reference Addison-Wesley Professional.
  • The Python Tutorial