Upravljanje konfiguracijom softvera
Opšte informacije
- Broj ESPB: 6
- Fond časova: 3+2
- Predmetni nastavnik: dr Igor Dejanović (igord na uns ac rs)
-
Predmetni asistent:
- MSc Vanja Mijatov, vanja.mijatov na uns.ac.rs
-
Materijali sa predavanja su dostupni na linku:
- Materijali za vežbe biće dostupni preko GitHub-a i Gugl grupe.
-
Komunikacija se obavlja preko Gugl grupe:
- https://groups.google.com/g/kzi-uks
- Obavezno se prijavite!
- Konsultacije se obavljaju po potrebi uz najavu na email
-
Dogovor o usmenim ispitima se obavlja preko grupe:
- https://groups.google.com/d/forum/dejanovic-ispiti
- Ne zaboravite da se prijavite kada položite praktični deo!
Š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
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
-
- 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