Управљање конфигурацијом софтвера
Упознавање са предметом
Креирано 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 |
И поред тимског рада сви бодови се добијају индивидуално.
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