Skip to Content

Upravljanje konfiguracijom softvera

Opšte informacije

Šta predstavlja upravljanje konfiguracijom softvera?

  • Upravljanje konfiguracijom softvera (Software Configuration Management) predstavlja disciplinu koja se bavi kontrolisanom evolucijom složenih softverskih sistema.

Zašto koristiti UKS?

  • Softverski proizvodi često “žive” godinama pa čak i decenijama.
  • Softverski proizvodi su često izuzetno kompleksni.
  • Da bi obezbedili kontinualnu evoluciju moramo uvesti procese, tehnike i alate koji će to omogućiti.
  • Praksa je pokazala da je uspeh projekta direktno povezan sa upotrebom efikasnih SCM tehnika i alata.
  • Prva 4 na listi od 12 koraka za bolji razvoj softvera1 istaknutog softver inženjera, pisca i autora izuzetno popularnog servisa StackOverflow Joela Spolskog predstavljaju SCM tehnike (kontrola verzija izvornog koda, automatizovana i kontinualna izgradnja i praćenje grešaka).

Zašto koristiti UKS?

  • Podrška za paralelni rad. Ručno spajanje paralelnih izmena nije ni malo zabavno.
  • Upotreba SCM alata, pre svega distribuiranih sistema za kontrolu verzija je dovela do pojave tzv. društvenog kodiranja (Social Coding) i servisa kao što su GitHub, BitBucket i dr. Ovo je omogućilo eksploziju razvoja slobodnog softvera.
  • Zato što vam to traži poslodavac.
  • Zato što vam to traži klijent.
  • Savet: Ako firma ne koristi SCM tehnike (pre svega kontrolu verzija) zapitajte se da li želite da radite u takvoj firmi.

Cilj predmeta

  • Savladavanje teoretskih osnova discipline upravljanja konfiguracijom softvera (Software Configuration Management).
  • Osposobljavanje za uvođenje i primenu procesa upravljanja konfiguracijom softvera.
  • Upoznavanje sa industrijskim standardima, okvirima i alatima iz oblasti upravljanja konfiguracijom softvera.
  • Savladavanje modernih SCM tehnologija (Git, pytest, GitHub/GitLab, Docker, Docker Compose, Chef/Ansimble/Teraform).

Struktura ocene

  • Predispitne obaveze - 60%
  • Teorijski deo ispita - 40%

Projekat

  • Timski rad - timovi od 4±1 studenta.
  • Obavezna upotreba sistema za kontrolu verzija (Git).
  • Obavezna upotreba sistema za praćenje projekta (GitHub).

Projekat - raspodela bodova

Aktivnost Bodovi
Model 4
Implementacija projekta 26
Implementacija testova 6
Git 6
GitHub 10
SCM 8
Ukupno 60

I pored timskog rada svi bodovi se dobijaju individualno.

Plan izvođenja nastave

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

Projektni zadatak

  • Veb aplikacija za upravljanje Docker slikama.
  • Slično Docker Hub-u.
  • Detalji će biti prezentovani na vežbama.
  • Krajnji cilj: definisan SCM proces za upravljanje Docker slikama, podržan aplikacijom.

Osnove upravljanja konfiguracijom softvera

  • Osnovni pojmovi i koncepti.
  • Šta sve obuhvata SCM? Koji su razlozi uvođenja?
  • Tradicionalna i moderna shvatanja SCM discipline.
  • SCM procesi.
  • SCM obrasci i preporučena praksa (best practice).
  • SCM alati.
  • SCM industrijski okviri i standardi.

Upravljanje izvornim kodom (Source Code Management)

  • Algoritmi i modeli. Distribuirani i centralizovani sistemi.
  • Upravljanje alternativnih tokovima razvoja. Grananje.
  • Formiranje osnovne linije (Baseline).
  • Upravljanje konkurentnim radom. Optimističko i pesimističko zaključavanje.
  • Preporučena praksa.
  • Alati.

Sistemi za kontrolu verzija

  • Pregled osnovnih osobina najpopularnijih alata za kontrolu verzija (Subversion, Mercurial, Bazaar, Git).
  • Detaljno upoznavanje sa Git alatom.

Upravljanje promenama (Change Control)

  • Šta predstavlja upravljanje promenama?
  • Kakve sve promene mogu nastati i u kojim fazama životnog ciklusa?
  • Kako se promene prate? Životni ciklus zahteva za promenom.
  • Kako se analizira uticaj promena na komponente sistema?
  • Izveštavanje.

Upravljanje izgradnjom i uvođenje (Build and Deploy)

  • Šta predstavlja izgradnja a šta uvođenje softvera?
  • Zašto je potrebno postupak automatizovati?
  • Kako se izgradnja i uvođenje mogu automatizovati?
  • Šta predstavlja kontinualna izgradnja (Continuous Build) i kontinualna dostava (Continuous Delivery)?
  • Puppet, Teraform, Fabric, Docker, Kubernetes…

Upravljanje izdanjima (Release Management)

  • Šta predstavlja izdanje softvera?
  • Zašto je bitno da uvedemo upravljanje u ovaj segment?
  • Tehnike vođenja verzija izdanja?
  • Alternativna izdanja.
  • Sledljivost i povezivanje izdanja za komponente i njihove verzije od kojih je izdanje kreirano.

Literatura za predmet

    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