Upravljanje konfiguracijom softvera
Upoznavanje sa predmetom
Kreirano 2024-09-30 Mon 13:37, pritisni ESC za mapu, m za meni, Ctrl+Shift+F za pretragu
1. 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:
- Konsultacije se obavljaju po potrebi uz najavu na email
- Dogovor o usmenim ispitima se obavlja preko grupe:
2. Šta predstavlja upravljanje konfiguracijom softvera?
- Upravljanje konfiguracijom softvera (Software Configuration Management)
predstavlja disciplinu koja se bavi kontrolisanom evolucijom složenih
softverskih sistema.
3. 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).
4. 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.
5. 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).
6. Struktura ocene
- Predispitne obaveze - 60%
- Teorijski deo ispita - 40%
7. Projekat
- Timski rad - timovi od 4±1 studenta.
- Obavezna upotreba sistema za kontrolu verzija (Git).
- Obavezna upotreba sistema za praćenje projekta (GitHub).
8. 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.
9. Plan izvođenja nastave
10. 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.
11. 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.
12. 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.
13. Sistemi za kontrolu verzija
- Pregled osnovnih osobina najpopularnijih alata za kontrolu verzija
(Subversion, Mercurial, Bazaar, Git).
- Detaljno upoznavanje sa Git alatom.
14. 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.
15. 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…
16. 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.
17. Literatura za predmet
- 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