Skip to Content

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

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

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

    • MSc Вања Мијатов, vanja.mijatov на uns.ac.rs
  • Материјали са предавања су доступни на линку:

  • Материјали за вежбе биће доступни преко GitHub-a и Гугл групе.
  • Комуникација се обавља преко Гугл групе:

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

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

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

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

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

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

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

Циљ предмета

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

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

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

Пројекат

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

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

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

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

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

TODO UKS(312): Uvodno predavanje, upoznavanje sa predmetom

SCHEDULED: <2024-10-04 Fri 16:15-19:00>

TODO UKS(312): Python

SCHEDULED: <2024-10-11 Fri 16:15-19:00> v: Upoznavanje sa vežbama.

TODO JSD(312): Pauza - LangDev konferencija

SCHEDULED: <2024-10-18 Fri 13:15-16:00>

TODO UKS(312): Osnove upravljanja konfiguracijom softvera

SCHEDULED: <2024-10-25 Fri 16:15-19:00> v: Python osnove

TODO UKS(312): Django

SCHEDULED: <2024-11-01 Fri 16:15-19:00> v: Python napredni, alati(ipython, pdb, setuptools, virtualenv, pip)

TODO UKS(312): Postavka zadatka.

SCHEDULED: <2024-11-08 Fri 16:15-19:00> v: Django

TODO UKS(312): Upravljanje izvornim kodom

SCHEDULED: <2024-11-15 Fri 16:15-19:00> v: Zadatak. Diskusija. tehnička rešenja. Konsultacije

TODO UKS(312): DVCS

SCHEDULED: <2024-11-22 Fri 16:15-19:00> v: Konsultacije

TODO UKS(312): Git (prvi deo – do grana) + Git (drugi deo)

SCHEDULED: <2024-11-29 Fri 16:15-19:00> v: Konsultacije

TODO UKS(312): docker, docker-compose

SCHEDULED: <2024-12-06 Fri 16:15-19:00> v: Git, rad sa granama, alati, GitHub/Gitlab

TODO UKS(312): Kontrolna tačka - osnovni projekat

SCHEDULED: [2024-12-13 Fri 16:15-19:00] v: Docker

TODO UKS(312): Funkcionalni upravljači paketima - nix

SCHEDULED: [2024-12-20 Fri 16:15-19:00] v: Konsultacije

TODO UKS(312): Testiranje (pytest, PyUnit..) i pisanje dokumentacije (mkdocs, Sphinx)

SCHEDULED: <2024-12-27 Fri 16:15-19:00> v: Konsultacije

TODO UKS(312): Konsultacije

SCHEDULED: <2025-01-10 Fri 16:15-19:00> v: testiranje, pytest

TODO UKS(312): Konsultacije

SCHEDULED: <2025-01-17 Fri 16:15-19:00> v: konsultacije

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    1. Humble and D. Farley, /Continuous delivery: reliable software releases

    through build, test and deployment automation/ Addison-Wesley Professional, 2010

    1. Berczuk and B. Appleton, /Software configuration management patterns:

    effective teamwork, practical integration/, Addison-Wesley Professional, 2003

    1. 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