Управљање конфигурацијом софтвера
Опште информације
- Број ЕСПБ: 6
- Фонд часова: 3+2
- Предметни наставник: Проф. др Игор Дејановић (igord на uns ac rs)
-
Предметни асистент:
- MSc Вања Мијатов, vanja.mijatov на uns.ac.rs
-
Материјали са предавања су доступни на линку:
- Материјали за вежбе биће доступни преко GitHub-a и Гугл групе.
-
Комуникација се обавља преко Гугл групе:
- https://groups.google.com/g/kzi-uks
- Обавезно се пријавите!
- Консултације се обављају по потреби уз најаву на имејл
-
Договор о усменим испитима се обавља преко групе:
- https://groups.google.com/d/forum/dejanovic-ispiti
- Не заборавите да се пријавите када положите практични део!
Шта представља управљање конфигурацијом софтвера?
- Управљање конфигурацијом софтвера (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 |
| Имплементација пројекта | 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)
- Шта представља издање софтвера?
- Зашто је битно да уведемо управљање у овај сегмент?
- Технике вођења верзија издања?
- Алтернативна издања.
- Следљивост и повезивање издања за компоненте и њихове верзије од којих је издање креирано.
Литература за предмет
-
- Humble and D. Farley, /Continuous delivery: reliable software releases
through build, test and deployment automation/ Addison-Wesley Professional, 2010
-
- Berczuk and B. Appleton, /Software configuration management patterns:
effective teamwork, practical integration/, Addison-Wesley Professional, 2003
-
- 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