Upravljanje konfiguracijom softvera

Upoznavanje sa predmetom

Prof. dr Igor Dejanović (igord at uns ac rs)

Kreirano 2024-09-30 Mon 13:37, pritisni ESC za mapu, m za meni, Ctrl+Shift+F za pretragu

1. Opšte informacije

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