SADRŽAJ
PREDGOVOR……………………………………………………………………………………………………..xv
I. UVOD………………………………………………………………………………………………………………………1
1. Softversko inženjerstvo………………………………………………………………………………..4
2. Paradigme razvoja softvera……………………………………………………………………………7
3. Paradigma razvoja proceduralnog softvera…………………………………………………..8
4. Paradigma razvoja objektno-orijentisanog softvera………………………………………8
5. Paradigma razvoja softvera orijentisanog na procese…………………………………..8
II. UPRAVLjANjE SOFTVERSKIM PROCESOM…………………………………………………….1
6. Model vodopada……………………………………………………………………………………………..4
7. Spiralni model……………………………………………………………………………………………..7
8. Iterativni model…………………………………………………………………………………………..8
9. Agilni modeli i Skram…………………………………………………………………………………..8
10. DevOps…………………………………………………………………………………………………………..8
10.1. Planiranje (Plan)………………………………………………………………………………………………21
10.2. Kodiranje (Code)……………………………………………………………………………………………….22
10.3. Konstrukcija softvera (Build)…………………………………………………………………………22
10.4. Testiranje softvera (Test)……………………………………………………………………………….22
10.5. Izdavanje nove verzije softvera (Release)………………………………………………………..22
10.6. Postavljanje softvera u produkciono okruženje (Deploy)………………………………..22
10.7. Eksploatacija i operativni rad softvera (Operate)………………………………………22
10.8. Nadgledanje i praćenje (Monitor)………………………………………………………………………22
11. Evaluacija softverskog procesa………………………………………………………………23
12. Otvorene inovacije i softver otvorenog kôda………………………………………….39
III. ANALIZA I PROJEKTOVANjE…………………………………………………………………………..1
13. Prikupljanje zahteva i analiza poslovnog sistema……………………………………42
13.1. Pregled tradicionalnih tehnika za analizu zahteva…………………………………….43
13.2. Analiza zahteva pomoću UML-a………………………………………………………………………..44
13.3. Modelovanje poslovnih procesa i BPMN……………………………………………………………45
13.4. Izvršna specifikacija poslovnih procesa………………………………………………………45
14. Projektovanje softvera…………………………………………………………………………..45
14.1. Apstrakcija i modelovanje u projektovanju softvera……………………………………..47
14.2. Modularnost……………………………………………………………………………………………………47
14.2.1 Sprega između modula…………………………………………………………………………….180
14.2.2 Kohezija………………………………………………………………………………………………….180
14.2.3 Razdvajanje nadležnosti……………………………………………………………………….180
14.2.4 Moduli u softveru orijentisanom na procese………………………………………180
14.3. Aktivnosti i zadaci u projektovanju softvera……………………………………………..47
15. Metode razvoja softvera orijentisanog na procese…………………………………..48
15.1. Razvoj softvera vođen podacima……………………………………………………………………..53
15.2. Razvoj softvera vođen modelom……………………………………………………………………….54
15.3. Fabrike softvera……………………………………………………………………………………………54
16. Arhitektura softvera……………………………………………………………………………..55
16.1. Paterni arhitekture softvera…………………………………………………………………….56
16.2. Antipaterni…………………………………………………………………………………………………..56
16.3. Arhitekturni stilovi u projektovanju softvera…………………………………………..56
16.4. Taksonomija paterna i arhitekturnih stilova………………………………………………56
16.5. Arhitekturni paterni opšte namene……………………………………………………………56
16.5.1 Patern klijent-server arhitekture…………………………………………………….180
16.5.2 Paterni višeslojne arhitekture…………………………………………………………180
16.5.3 Patern master-worker…………………………………………………………………………….180
16.5.4 Patern peer-to-peer arhitekture………………………………………………………….180
16.5.5 Patern posrednika – broker arhitektura…………………………………………….180
16.5.6 Patern virtuelizovanog srednjeg sloja…………………………………………………180
16.5.7 Patern filtriranja toka podataka…………………………………………………….180
16.5.8 Patern arhitekture u formi mikrokernela…………………………………………180
16.6. Paterni projektovanja korisničkog interfejsa……………………………………………..56
16.6.1 Model View Controller……………………………………………………………………………….180
16.6.2 Model View Presenter……………………………………………………………………………….180
16.6.3 Model View View Model……………………………………………………………………………180
17. Paterni arhitekture orijentisane na procese………………………………………….56
17.1. Domenom vođeno projektovanje softvera………………………………………………………..58
17.1.1 Domen…………………………………………………………………………………………………….180
17.1.2 Rečnik termina u okviru domena……………………………………………………………180
17.1.3 Povezan kontekst………………………………………………………………………………….180
17.1.4 Domenski model……………………………………………………………………………………..180
17.1.5 Upotreba domenskog modela…………………………………………………………………..180
17.2. Koncepti modelovanja softvera orijentisanog na procese……………………………59
17.2.1 Agregacije u modelima softvera orijentisanog na procese………………….180
17.2.2 Događaj…………………………………………………………………………………………………..180
17.2.3 Servis…………………………………………………………………………………………………….180
17.2.4 Proces……………………………………………………………………………………………………180
17.2.5 Interakcija procesa – aplikacija…………………………………………………………180
17.2.6 Informacioni sistem…………………………………………………………………………..180
17.2.7 B2B mreže………………………………………………………………………………………………180
17.3. Informacioni model softvera orijentisanog na procese……………………………..59
17.3.1 Metapodaci i podaci događaja………………………………………………………………180
17.3.2 Metapodaci i podaci procesa……………………………………………………………….180
17.4. Paterni skladištenja događaja………………………………………………………………………59
17.4.1 Event store……………………………………………………………………………………………….180
17.4.2 Informaciono jezero…………………………………………………………………………….180
17.5. Paterni obrade događaja…………………………………………………………………………………59
17.5.1 Patern osnovne obrade događaja……………………………………………………………180
17.5.2 Komunikacija i sinhronizacija procesa – Pub/Sub patern……………………..180
17.5.3 Obrada tokova događaja…………………………………………………………………………180
17.5.4 Obrada kompleksnih događaja…………………………………………………………………180
17.5.5 Lambda i Kappa arhitekture…………………………………………………………………180
18. Servisno-orijentisane arhitekture…………………………………………………………65
18.1. REST API…………………………………………………………………………………………………………….56
18.1.1 Preporuke i ograničenja za REST API……………………………………………………….180
18.1.2 REST API za veb servise……………………………………………………………………………180
18.1.3 Model zrelosti za REST API……………………………………………………………………180
19. Mikroservisi………………………………………………………………………………………..65
19.1. Aplikacioni programski interfejs mikroservisa…………………………………………..56
19.2. Komunikacija mikroservisa s okruženjem…………………………………………………………56
19.3. Aplikaciona logika mikroservisa……………………………………………………………………56
19.4. Primena mikroservisa u razvoju softvera orijentisanog na procese……………..56
19.5. Koreografija i orkestracija mikroservisa……………………………………………………..56
19.6. Raspodela opterećenja u mikroservisnim arhitekturama………………………………56
19.6.1 Reverzni proksi……………………………………………………………………………………..180
19.6.2 API proksi……………………………………………………………………………………………….180
19.7. Upravljanje podacima u mikroservisnim arhitekturama…………………………………56
19.7.1 CAP teorema………………………………………………………………………………………….180
19.8. Upravljanje transakcijama u mikroservisnim arhitekturama………………………..56
19.8.1 Dvofazni protokol izvršavanja transakcija – 2PC………………………………180
19.8.2 Saga patern…………………………………………………………………………………………..180
19.9. Upravljanje transakcijama u mikroservisnim arhitekturama………………………..56
19.9.1 Postavljanje više instanci servisa na jedan server…………………………….180
19.9.2 Postavljanje jedne instance servisa na jedan server…………………………….180
19.9.3 Postavljanje jedne instance servisa po virtuelnoj mašini…………………180
19.9.4 Postavljanje jedne instance servisa u jedan kontejner…………………………180
19.9.5 Postavljanje mikroservisa u serverless okruženje…………………………………..180
20. Softverske platforme i ekosistemi……………………………………………………….65
IV. INFRASTRUKTURA……………………………………………………………………………………………..1
21. Virtuelizacija……………………………………………………………………………………….67
21.1. Evolucija i istorija razvoja virtuelizacije……………………………………………………67
21.2. Tipovi virtuelizacije……………………………………………………………………………………..68
21.2.1 Potpuna virtuelizacija……………………………………………………………………….180
21.2.2 Virtuelizacija podržana kernelom………………………………………………………180
21.2.3 Virtuelizacija podržana hardverom…………………………………………………….180
21.2.4 Paravirtuelizacija………………………………………………………………………………180
21.3. Virtuelizacija računarskih mreža…………………………………………………………………67
21.4. Virtuelizacija skladištenja podataka…………………………………………………………68
21.4.1 Izbor hipervizora i tipa virtuelizacije…………………………………………….180
22. Kontejneri……………………………………………………………………………………………..67
22.1. Koncepti Linux kernela u kontejnerskoj virtuelizaciji………………………………….67
22.1.1 Linux procesi………………………………………………………………………………………….180
22.1.2 Kreiranje procesa…………………………………………………………………………………..180
22.1.3 Organizacija procesa…………………………………………………………………………….180
22.1.4 Međuprocesna komunikacija…………………………………………………………………..180
22.1.5 Kontrola i ograničavanje resursa – kontrolne grupe (cgroups)………………180
22.1.6 Izolacija resursa – oblasti imenovanja (namespaces)……………………………180
22.2. Ekosistem kontejnera……………………………………………………………………………………..68
22.3. Životni ciklus kontejnera…………………………………………………………………………….67
22.4. Umrežavanje kontejnera…………………………………………………………………………………..68
22.5. Fajl sistemi kontejnera…………………………………………………………………………………67
22.6. Upravljanje volumenima u kontejnerskom okruženju…………………………………………68
22.7. Registar kontejnera………………………………………………………………………………………..67
22.8. Standardizacija kontejnerskog ekosistema……………………………………………………68
22.8.1 OCI Image-spec………………………………………………………………………………………..180
22.8.2 OCI Runtime-spec……………………………………………………………………………………..180
22.9. Container runtime i container engine……………………………………………………………………67
22.10. Cloud native pristup razvoju softvera……………………………………………………………68
22.11. Orkestracija kontejnera……………………………………………………………………………….68
22.11.1 Single host orkestracija – Docker Compose…………………………………………….180
22.11.2 Multi-node orkestracija……………………………………………………………………….180
23. Kubernetes………………………………………………………………………………………………67
23.1. Kubernetes arhitektura…………………………………………………………………………………..67
23.1.1 API server……………………………………………………………………………………………….180
23.1.2 Etcd skladište………………………………………………………………………………………180
23.1.3 Scheduler…………………………………………………………………………………………………180
23.1.4 Controller Manager…………………………………………………………………………………..180
23.1.5 Kubelet……………………………………………………………………………………………………180
23.1.6 Kube-proxy………………………………………………………………………………………………180
23.1.7 Container runtime…………………………………………………………………………………….180
23.1.8 Interakcija i sinhronizacija komponenti Kubernetes-a……………………….180
23.2. Pôd…………………………………………………………………………………………………………………..67
23.3. Kontroleri………………………………………………………………………………………………………67
23.3.1 ReplicaSet………………………………………………………………………………………………..180
23.3.2 Deployment Controller………………………………………………………………………………180
23.3.3 StatefulSet……………………………………………………………………………………………….180
23.4. Umrežavanje u Kubernetes-u……………………………………………………………………………….67
23.4.1 Kubernetes mrežni servisi aplikacionog nivoa……………………………………..180
23.5. Funkcionalnosti Kubernetes klastera…………………………………………………………….67
23.5.1 Generisanje i raspoređivanje pôdova………………………………………………………180
23.5.2 Balansiranje opterećenja……………………………………………………………………..180
23.5.3 Skaliranje performansi………………………………………………………………………..180
23.5.4 Obrada neplaniranih prekida i oporavak………………………………………………180
23.5.5 Bezbednost…………………………………………………………………………………………….180
23.5.6 CI/CD………………………………………………………………………………………………………180
24. Paterni postavljanja softvera u produkciono okruženje………………………….69
Recenzije
Još nema komentara.