Professional Documents
Culture Documents
Teorija Za Drugi Kolokvijum
Teorija Za Drugi Kolokvijum
1.
Posebna grupa alata, koja automatizuje metode i procedure razvoja softvera i istovremeno:
skrauju vreme,
smanjuju trokove izrade i
podiu kvalitet razvijenog softverskog proizvoda.
To su programi koji automatizuju i podravaju jednu ili vie faza ivotnog ciklusa razvoja
sistema.
Namera ove tehnologije jeste da ubrza procese razvijanja sistema i pobolja njegov kvalitet.
CASE tehnologija
Poveanje produktivnosti u razvoju softvera pomou softvera
Inenjersko projektovanje softvera pomou raunara.
Softverski proizvod namjenjen automatizaciji izrade softvera
Njihova namena je:
Poveanje produktivnosti projektanata
Skraenje vremena izrade softvera |
Poveanje kvaliteta softvera
Unapreenje performansi sistema
Skup integrisanih raunarskih sistema za inenjering (CASE) i alate koji pomau razvoj
aplikacija u razvoju softvera, a koriste se za analizu poslovnih zahteva, projektovanje
aplikacija, generisanje koda aplikacije itd
2.
Komercijalni:
IBM Rational Rose
Borland Together
Microsoft Visio
Enterprise Arhitect
Besplatni:
Poseidon
Smart Drawn
Dia
ArgoUML
1.
Dizajn patern
Reenje uestalog problema u dizajnu
Abstrakuje strukturu dizajna koji se ponavlja
Sastoji se od klasa i/ili objekata
Zavisnosti
Strukture
Interakcije
Konvencije
Eksplicitno imenuje i specificira strukturu i dizajn
Destilie iskustvo u dizajnu
Dizajn patern ima 4 osnovna dela:
Ime
Problem
Reenje
Posledice
Jezika i implementaciona nezavisnost
Mikro arhitektura
Usklaenost sa postojeim metodologijama
Nema mehanike primene
Programer mora prevesti reenje u konkretne pojmove u kontekstu aplikacije
2.
Composite (Sastav)
Apstraktna osnovna klasa (Component) definie jedinstveno ponaanje.
Primitive i Composite klase su podklase.
Composite definie ponaanje komponenti koje imaju decu i uva komponente decu.
Posledice:
Dobre
Olakava dodavanje novih vrsta komponenti.
Pojednostavljuje posao klijentu koji obino ne znaju da li imaju posla sa listom ili sa
sloenom komponentom.
Loe
Moe da dovede do previe uoptenog dizajna, ime se tee postavljaju ogranienja za
komponente sastava.
Command (Komanda)
Poznat takoe kao Action (akcija), Transaction (transakcija)
Namena
Enkapsulira zahtev kao objekat ime omoguava parametrizaciju klijenata sa razliitim
zahtevima, redovima za ekanje, ili zahtevima za formiranje dnevnika rada, i podrava
operacije ije se dejstvo moe ponititi.
Kada hoete da parametrizujete objekte akcijom koju treba da izvre
Kada elite da navedete, poreate i izvrite zahteve u razliito vreme
Kada hoete da podrite ponitavanje akcije.
Kada hoete da podrite evidentiranje promena da bi se one mogle ponovo primeniti
Problem
Potrebno je da prosleuje zahteve objekata bez ikakvog znanja o operaciji koja se
zahteva ili o primaocu zahteva
Template method (ablonski metod)
Namena
Definie skelet algoritma u nekoj operaciji preputajui implementaciju nekih koraka potklasi.
Template metod dozvoljava da potklase redefiniu neke korake altoritma ne menjajui
strukturu altoritma.
Za impementiranje nepromenljivih delova algoritma na jednom mestu i preputanje
implementacije ponaanja koje se menja potklasama.
Kada ponaanje zajedniko za potklase treba izdvojiti i staviti u zajedniku klasu da bi se
izbeglo dupliranje koda.
Za kontrolu proirivanja potklasa. Moete da definiete ablonski metod koji na odreenim
takama poziva priljuene operacije i tako doputa proirivanje samo u tim takama.
Observer (posmatra)
Namena
Definie zavisnost jedan prema vie meu objektima da bi prilikom promene stanja jednog
objekta svi
zavisni objekti bili obaveteni i automatski aurirani.
Takoe poznat kao: Zavisnici (Dependents), izdavanje-pretplata (publish- subscribe)
Problem
Kako upravljati zajednikim sporednim efektom (npr. potreba za odravanjem konzistentnosti
izmeu povezanih objekata) podele sistema u kolekciju kooperirajuih klasa bez vrstog
spajanja klasa, - to smanjuje mogunost ponovne upotrebe klasa.
Resenje:
Observer patern opisuje kako uspostaviti ove relacije.
Kljuni objekti u ovom paternu su subjekat i posmatra.
Subjekat moe imati bilo koji broj zavisnih posmatraa.
Svi posmatrai se obavetavaju kada subjekat promeni stanje.
Na osnovu toga svaki posmatra e zatraiti od subjekta da sinhronizuje svoje stanje sa
njegovim.
Primenjivost:
Kada apstrakcija ima dva aspekta ok kojih jedan zavisi od drugoga. Enkapsuliranje tih
aspekata u zasebne objekte omoguava njihovo nezavisno menjanje i viekratnu upotrebu.
Kada promena u jednom objektu zahteva promene u drugim objektima, a ne znate koliko
drugih objekata treba promeniti
Kada objektu treba omoguiti da obavetava druge objekte bez ikakve pretpostavke o tome
koji su to objekti. Drugim reima, kada ne elite da ti objekti budu tesno vezani.
Adapter
Konvertuje interfejs klase u drugi interfejs koji klijenti oekuju.
Adapter omoguava saradnju klasa koje inae ne bi mogle da sarauju zbog nekompatibilnih
interfejsa.
Namena
Konvertuje interfejs klase u drugi interfejs koji klijenti oekuju. Adapter omoguava saradnju
klasa koje inae ne bi mogle da sarauju zbog nekompatibilnih interfejsa.
Takoe poznat kao: Wrapper (uvija)
Problem:
Editor za crtanje (DrawingEditor) omoguava korisnicima da crtaju i rasporeuju grafike
elemente. TextShape se znatno tee implementira, pa je korisno iskoristiti postojei tekst
editor (TextView) koji nije projektovan u skladu sa klasama Shape.
Resenje:
Jedan nain reavanja problema je da se napravi klijentska klasa (TextShape) koja e
adaptirati editor (TextView) i modifikovati interfejs da odgovara aplikaciji. Ovo se moe uraditi
na dva naina:
- Dodatnim izvoenjem TextView klase ili
- uvanjem reference na TextView klasu unutar TextShape klase.
6
Drugi metod ima prednost nad prvim jer se klijentska hijerarhija ne poveava u dubinu
Prototype (prototip)
Namena
Odreuje vrste objekata koji se prave koristei prototipski primerak i pravi nove objekte
kopiranjem tog prototipa.
Problem:
Okruenje u primeru obezbeuje apstraktnu klasu Graphic za grafike komponente, npr.
beleke i note. Osim toga, ona obezbeuje apstraktnu klasu Tool za definisanje alata poput
onih u paleti.
Okruenje takoe definie GraphicTool podklasu za alate koji kreiraju instance grafikih
objekata i dodaje ih u dokument.
GraphicTool klasa pripada okruenju dok su alati za beleke i note specifini u naoj
aplikaciji. GraphicTool ne zna kako da kreira instance naih muzikih klasa. Mogli bismo da
napravimo podklase
GraphicTool za svaku vrstu muzikog objekta, ali tako bi nastalo mnogo podklasa koje bi se
razlikovale samo po vrsti muzikog objekta koji instanciraju. Sastavljanje objekata je
fleksibilna alternativa za potklase.
Primenjivost:
Prototype treba da se koristi kada sistem ne sme da zavisi od toga kako se njegovi proizvodi
prave,
sastavljaju i predstavljaju,
Kada se klase koje treba instancirati odreuju u vreme izvravanja, na primer dinamikim
uitavanjem
1. Objasniti pojam testiranja softvera.
Testiranje softvera predstavlja proces analize elementa softvera kako bi se utvrdila razlika
izmeu postojeeg stanja i zahteva (tj., bagovi) i kako bi se ustanovile karakteristike softvera
2. Objasniti pojam pouzdanosti softvera.
Pouzdanost je sposobnost sistema ili njegove komponente da izvri zahtevane funkcije pod
definisanim uslovima u odreenom vremenskom periodu.
3. Objasniti pojmove validacija i verifikacija softvera.
Validacija:
proces evaluacije sistema ili komponente za vreme ili na kraju procesa razvoja da bi se
utvrdilo da li zadovoljava zahteve definisane od korisnika
Validacija: Da li kreiramo pravi proizvod?
Verifikacija:
proces evaluacije sistema ili komponente kako bi se utvrdilo da li proizvod korektno
implementira odreenu funkciju
Verifikacija: Da li kreiramo proizvod na pravi nain?
7
Da bi postigao ovo, tester mora razumeti softver i pokuati da razvije mentalnu sliku
toga kako bi softver mogao da otkae.
Dobar test nije redundantan.
Vreme i resursi testiranja su ogranieni. Nema svrhe izvravati test koji ima istu svrhu
kao i ve izvreni test.
Dobar test treba da bude najbolji svoje vrste.
U grupi testova koji imaju istu namenu potrebno je izabrati onaj sa najveom
verovatnoom otkrivanja greaka.
Dobar test ne treba da bude ni previe jednostavan ni previe sloen.
18. Navesti i objasniti osnovne aktivnosti procesa testiranja softvera.
Testiranje se sastoji od sledeih aktivnosti:
Planiranje testiranja
(odreduje se predmet, cilj i razlog testiranja (na osnovu zahteva, modela i drugih ulaza
testiranja), gde se testiranje vri, kada se vri i ko izvrava testove)
Dizajn testova
(odreduje kako se sprovodi testiranje na osnovu artefakta tj. test primera)
Implementacija testova
(pravljenje viestruko upotrebljivih test scriptova koji realizuju test primere)
Izvravanje testova
(izvravanje implementacije testa radi provere funkcionalnosti sistema)
Evaluacija testova
(procena testova tj. validnosti izvravanja testa, analiza izlaza, pregled zbirnih
rezultata, uticaj promene zahteva i ulaza na plan testiranja)
19. Navesti i objasniti osnovne tehnike testiranja softvera.
Tipovi testiranja:
Recenzija (review)
formalni stastanak na kome se artefakt ili skup artefakata predstavlja korisniku ili
drugim stranama koje uestvuju u procesu odobravanja ili komentarisanja.
Inspekcija (inspection)
fomalna tehnika procene u kojoj se artefakti detaljno pregledaju. Pregled vre osobe
koje nisu autori, da bi se lake uoile greke i drugi problemi.
Pregledi (walkthrough)
Tehnika pregleda u kojoj autor upoznaje ostale clanove tima sa elementima artefakta
koji je izgradio. Ostali lanovi uestvuju aktivno u raspravi.
1. Jedinino testiranje (unit testing)
primenjuje se na pojedine klase, module ili komponente programskog koda. Ova
tehnika deli se na tehnike bele i crne kutije.
2. Integraciono testiranje
primenjuje se na softverski sitem kao celinu.
3. U testiranja vieg reda spadaju:
testiranje sigurnosti (security testing): da li su funkcije dostupne onim i samo onim
korisnicima kojima su i namenjene.
13
4. Regresiono testiranje
na osnovu jednom razvijenog testa vie puta se sprovodi testiranje softvera (tipicno
nakon neke izmene u softveru da bi se utvrdilo da nisu pokvarene funkcionalnosti
softvera).
14
Sistemska testiranja
Sistemski inzenjering
Generator izvetaja:
oblikuje izvetaj o rezultatima testiranja.
Dinamiki analizator:
broji koliko puta se pojedina naredba programa izvrila tokom testiranja.
1. Pojam odravanja softvera.
Proces modifikovanja softverskog sistema ili komponente nakon isporuke radi otklanjanja
greaka, poboljanja performansi ili drugih atributa, ili prilagoavanja promenljivom okruenju.
Odravanje programa nakon to je stavljen u upotrebu
Softverski proizvod se podvrgava modifikaciji koda ili dokumentacije usled problema ili
potrebe za unapreenjem.
Cilj je modifikovanje postojeeg softverskog proizvoda dok se istovremeno ouvava njegov
integritet
Izmene se implementiraju modifikovanjem postojeih komponentii dodavanjem novih
komponenti sistemu
2. Pojam evolucije softvera.
Skup aktivnosti, tehnikih I upravnih, koje obezbeuju da softver nastavi da ispunjava
organizacione I poslovne ciljeve na isplativ nain
Sve programerske aktivnosti iji je cilj generisanje nove verzije softvera na osnovu starije
operacione verzije
Primena aktivnosti I procesa odravanja softvera kojima se generie nova operativna verzija
softvera sa novim funkcionalnostima ili karakteristima u odnosu na prethodnu operativnu
verziju pri emu su obuhvaene I aktivnosti obezbeivanja kvaliteta
3. Navesti i objasniti vrste odravanja softvera.
Adaptivno odravanje
Modifikacija softverskog proizvoda izvrena nakon isporuke da bi se ouvala
upotrebljivost softverskog proizvoda u promenjenom ili promenljivom okruenju."
Korektivno odravanje
Ispravljaju se uoene greke. Moe se raditi o grekama u kodiranju, u oblikovanju,
odnosno u specifikaciji."
Perfekcijsko odravanje
Modifikacija softverskog proizvoda nakon isporuke radi unapreenja performansi ili
dodavanja novih karakteristika.
Preventivno odravanje
Modifikacija softverskog proizvoda nakon isporuke radi utvrivanja I korigovanja
latentnih greaka u softverskom proizvodu pre nego to one nanesu tetu."
4. Navesti i objasniti osnovne razloge za evoluciju softvera.
Promene korisnikih zahteva
17
---------------------------------------------------------------------------------------------------------------------------Navesti i objasniti sve komponente koje utiu na ukupne trokove kojima se postie efikasno
upravljanje kvalitetom softvera
---------------------------------------------------------------------------------------------------------------------------Objasniti namenu i problem koji se reava korienjem Singleton dizajn paterna
---------------------------------------------------------------------------------------------------------------------------Objasniti ta su to legacy sistemi i koji su razlozi za njihovo korienje uprkos problemima
---------------------------------------------------------------------------------------------------------------------------Objasniti razliku izmeu pojmova verifikacija i validacija
---------------------------------------------------------------------------------------------------------------------------Objasniti namenu i problem koji se reava korienjem Facade dizajn paterna
---------------------------------------------------------------------------------------------------------------------------Navesti i objasniti osnovne razloge za evoluciju softvera
---------------------------------------------------------------------------------------------------------------------------Navesti i objasniti osnovne faktore kvaliteta softvera
---------------------------------------------------------------------------------------------------------------------------Objasniti namenu i problem koji se reava korienjem Adapter dizajn paterna
---------------------------------------------------------------------------------------------------------------------------Navesti i objasniti osnovne vrste odravanja softvera
---------------------------------------------------------------------------------------------------------------------------Objasniti namenu i problem koji se reava korienjem Command dizajn paterna.
---------------------------------------------------------------------------------------------------------------------------Objasniti razliku izmeu pojmova white-box testiranje i black-box testiranje.
---------------------------------------------------------------------------------------------------------------------------Navesti i objasniti osnovne Lehman-ove zakone odravanja softvera.
---------------------------------------------------------------------------------------------------------------------------21