Osnove Industrijskog Razvoja Softvera - Udžbenik –
Total Page:16
File Type:pdf, Size:1020Kb
TEHNIČKI FAKULTET “MIHAJLO PUPIN” ZRENJANIN OSNOVE INDUSTRIJSKOG RAZVOJA SOFTVERA - UDŽBENIK – RADNA VERZIJA Autori: Doc. dr Ljubica Kazi Prof. dr Dragica Radosav Prof. dr Biljana Radulović Aleksandar Žarkov Miša Varga Marija Subić ZRENJANIN, 2018. SADRŽAJ I ORJENTACIONA ISPITNA PITANJA 1. CAS - STANDARDI SWEBOK I PMBOK, PARADIGME INDUSTRIJSKOG RAZVOJA SOFTVERA UVOD - savremeni proces industrijskog razvoja softvera, upravljanje softverskim projektima, paradigm industrijskog razvoja softvera(objektno- orjentisani razvoj, agilni razvoj, kvalitet programskog koda, model-bazirani razvoj, test-bazirani razvoj, distribuirani timski razvoj), standardi, radne pozicije i alati ************************************************************ 2. CAS - PROCES RAZVOJA SOFTVERA, ARHITEKTURA INFORMACIONOG SISTEMA I SOFTVERA PROCES RAZVOJA SOFTVERA I AGILNI PRISTUP - Proces razvoja softvera (Rational unified process, Basic unified process - BUP), radne uloge u BUP i artefakti, kategorizacija softvera i softverskih projekata, zakoni evolucije softvera, karakteristike agilnog pristupa razvoju softvera, komparacija agilnih metoda razvoja softvera, uloga modelovanja i dokumentovanja u agilnom pristupu razvoja softvera, disciplinovani agilni pristup razvoju softvera ARHITEKTURA informacionog sistema, ARHITEKTURA softvera - definicija, ciljevi, principi, tipovi softverske arhitekture, arhitekturni paterni, UML za prikaz softverske arhitekture. ************************************************************ 3. CAS - DISTRIBUIRANI SISTEMI, SOFTVERSKE ARHITEKTURE DISTRIBUIRANI SISTEMI - distribuirano/paralelno/konkurentno racunarstvo, definicija distribuiranih sistema, karakteristike distribuiranih sistema, prednosti, rizici/problemi, tipovi (distribuirani računarski sistemi, distribuirani informacioni sistemi, distribuirani embedded sistemi), distribuirani računarski sistemi (klaster, grid, cloud), distribuirani informacioni sistem (distribuirana baza podataka,distribuirana obrada podataka-softverske komponente), distribuirano programiranje - osnovni pojmovi (poruka, protokoli za razmenu poruka, aninhrona-sinhrona komunikacija, softverski servisi, distribuirani objekti, udaljeno pozivanje procedura). SOFTVERSKE ARHITEKTURE - klijent-server arhitektura, višeslojna objektno- orjentisana arhitektura,MVC pristup, prezentacioni sloj, middleware i razlika prema srednjem aplikativnom sloju, workflow management sistemi (orkestracija web servisa i jezik WS-BPEL), poslovni entiteti, sistemi za upravljanje poslovnim pravilima, sloj za rad sa podacima (DAL, pojam CRUD), Servisno-orjentisana arhitektura (SOA). ************************************************************ 4. CAS - SOFTVERSKE ARHITEKTURE (dopuna) Standardna dokumentacija u razvoju softvera. Uloga softverske arhitekture u SCRUM agilnom pristupu razvoja softvera. Tipovi arhitektura u organizaciji enterprise arhchitecture - business architecture, software application architecture, information architecture, information technology architecture). Istorijat razvoja softverskih arhitektura. Osnovni principi arhitekturnog dizajna. Arhitektonski stil. Osnovne vrste arhitekturnih stilova. Osnovni dizajn paterni objektno-orjentisanog razvoja i komponente višeslojne arhitekture. Servisno bazirane arhitekture (SOA i mikroservisi). Arhitekturni paterni - tradicionalni slojeviti, orjentisani na događaje (medijator i broker tip), mikrokernel. Arhitekture mobilnih aplikacija. PRIMERI: VIŠESLOJNA PHP WEB APLIKACIJA, VIŠESLOJNA ASP.NET MVC APLIKACIJA UZ PRIMENU WEB SERVISA, DISTRIBUIRANE BAZE PODATAKA, TEHNOLOGIJE DISTRIBUCIJE PODATAKA MOBILNIH APLIKACIJA ************************************************************ 5. CAS - KVALITET SOFTVERA Kvalitet softvera (različiti pogledi u odnosu na učesnike - development team, project sponsor, users, tri aspekta kvaliteta softvera: procesa razvoja, funkcionalnosti i strukture) Standardi kvaliteta softverskog proizvoda (ISO 9126, ISO/IEC 25010:2011) - karakteristike: funkcionalnost, pouzdanost, iskoristivost, efikasnost, podesnost za održavanje, portabilnost. Kvalitet softverskog proizvoda i kvalitet proizvoda u korišćenju Standardi kvaliteta procesa razvoja softvera (ISO/IEC 15504 baziran na standardu za životni ciklus razvoja softvera ISO/IEC 12207). Pet nivoa zrelosti organizovanja procesa razvoja softvera prema CMMI. Metrička zasnovanost podrške odlučivanju i upravljanju. Softverske metrike za kvalitet artefakta i aplikativnog softvera u oblasti informacionih sistema. Van Belle-ov framework (sintaksni, semantički, pragmatički aspekt) za vrednovanje modela u razvoju informacionih sistema. Primer metričkih modela za model poslovnih procesa, model softverskih funkcija, konceptualni model podataka. Metrički model za vrednovanje kvaliteta podataka koji se koriste od strane aplikativnog softvera. McCall-ov model sa 3 nivoa vrednovanja softvera (user's view, manager's view, developer's view) Preporuke i konvencije za pisanje kvalitetnog koda. Elementi programskog stila. Čitljivost programskog koda. Refaktorisanje programskog koda (unapređivanje kvaliteta, prvenstveno strukture i performansi programskog koda bez izmene funkcionalnosti), uobičajen katalog tehnika refaktorisanja. Primeri situacija kada treba refaktorisati programski kod i predlog načina kako realizovati refaktorisanje. ************************************************************ 6. CAS - TESTIRANJE SOFTVERA Faze razvoja softvera, najvažniji artefakti i radne pozicije, struktura idejnog, glavnog i detaljnog projekta. Opis posla business analyste, solution architect, agile product owner, scrum master. Standardni proces razvoja i dokumenti Struktura dokumenata: software requirements dokument, software architecture dokument, project charter, project plan, user story Merenje uspeha projekta ili procesa razvoja, zbog unapredjenja CMM zrelosti. Metricki sistem. KPI - key performance indicators, KSI - key success indicators. Strateski plan kontinualnog unapredjenja. Testiranje softvera - standard ANSI/IEEE 829 za software test documentation. Definicija "software bug". Posao testera. Artefakti testiranja. V model povezanosti ulaznih artefakta i faza razvoja softvera i obuhvata i vrste testiranja. Test dokumentacija. Pojmovi (precision/accuracy, verification/validation, quality/reliability, testing/quality assurance. Metode testiranja (black box-white box, static'dynamic, visokog nivoa- niskog nivoa, varijante (kombinacije). Oblasti testiranja. Test to pass-to fail, equivalence partitioning, tehnike ponavljanja, stress i load. Tehnike statičkog white box testiranja - review, walktrough, inspections. Forsiranje grešaka. Karakteristike kvaliteta dobrog korisničkog interfejsa. Tipovi testiranja - adhoc, primenom metoda, alfa verzija, beta testiranje, automatizacija testiranja Struktura dokumenata: test plan. Struktura test slučaja. Agilno testiranje - principi. ************************************************************ 7. CAS DISTRIBUIRANI TIMSKI RAZVOJ SOFTVERA Distribuirani razvoj softvera, kolokacijski rayvoj, taksonomija distribucije (objekti distribucije - ljudi, artefakti, zadaci; organizacija distribucije - fizička distribucija, organizaciona distribucija, vremenska distribucija), koordinacija-kooperacija- kolaboracija, Organizacione forme distribuiranog razvoja softvera(virtualni timovi, outsourcing, open-source razvoj), prednosti distribuiranog razvoja softvera, karakteristike open-source razvoja softvera, primeri realizovanih rešenja u open- source organizaciji, problemi distribuiranog razvoja softvera, standard ISO/IEC 15940 za razvojna softverska okruženja, funkcionalne karakteristike alata za podršku kolaborativnom razvoju softvera, tehnološka rešenja za pojedinačne funkcionalne elemente alata kolaborativne podrške, primeri alata za pojedine funkcionalne aspekte alata za podršku kolaborativnom razvoju softvera. ************************************************************ 8. CAS ODRŽAVANJE softvera Definicija održavanja softvera, pozicija u životnom ciklusu softvera, održavanje u ugovornom periodu probnog korišćenja i nakon probnog korišćenja, troškovi održavanja u odnosu na ceo životni ciklus razvoja softvera, tipovi održavanja (korektivno, adaptivno, preventivno, perfektivno), održavanje softvera u agilnom razvoju softvera, grupe aktivnosti u održavanju softvera (primarni procesi, procesi podrške, organizacioni procesi), planiranje izmena softvera, koraci i aktivnosti u održavanju softvera, modeli održavanja softvera (quick-fix, Boehmov, Ozbornov, Iterativni model unapređenja softvera, Reuse-oriented model), SLA (Service level agreement), reinženjering, reverzni inženjering, upravljanje konfiguracijom softvera (definicija), softverski alati za praćenje verzija softvera - tri modela (model sa lokalnim podacima, klijent-server model, distribuirani model). ************************************************************ 9. CAS - PRINCIPI pravilnog dizajna objektno-orjentisanog softvera i REUSABILITY programskog koda MODELOVANJE SOFTVERA PRIMENOM UML - PONAVLJANJE ISTORIJAT OBJEKTNO-ORJENTISANOG PRISTUPA OSNOVNI POJMOVI OBJEKTNO-ORJENTISANOG PROGRAMIRANJA OSNOVNI PRINCIPI OBJEKTNO-ORJENTISANOG PROGRAMIRANJA HEURISTIČKA UPUTSTVA pravilnog dizajna objektno-orjentisanog softvera DIZAJN PRINCIPI OBJEKTNO-ORJENTISANOG PROGRAMIRANJA (SOLID) REUSABILITY PROGRAMSKOG KODA ************************************************************ CAS 10 - SCRUM metodologija, SLOJEVI I PODSLOJEVI VISESLOJNE APLIKACIJE, DIZAJN PATERNI, MVC UVOD I KONTEKST TEORIJSKIH KONCEPATA - ISKUSTVA FIRME Levi 9 (Continuous delivery