Lekcija 11 Flashcards
11.1 Šta je implementacija sistema? Da li je to programiranje, ili rad sa drugim aspektima razvoja softvera? Koji? Objasnite svaki od ovih aspekata.
Implementacija obuhvata razvoj programa primenom programskih jezika visokog ili niskog nivoa, ili pak, korišćenje opštih, gotovih sistema koji se onda prilagođavaju zahtevima korisnika.
- Ponovno korišćenje: Savremeni softverski sistemi koriste ponovno
upotrebljive komponente ili sisteme. Pri razvoju svog softvera, trebalo bi u što većoj meri da koristite već razvijen i provere kod, a to obezbeđuje primena ranije razvijenih i primenjenih softverskih komponenti. - Upravljanje konfiguracijom: Prilikom procesa razvoja, kreiraju se mnoge verzije svake od softverskih komponenata. Ako ne vodite računa o njima, primenom posebnog sistema za upravljanje konfiguracijom softvera, može se desiti da koristite pogrešne verzije komponenti u vašem sistemu. Konfiguraciju softvera čini skup softverskih komponenta sa ispravnim verzijama.
- Razvoj na razvojnom serveru a za rad na ciljnom serveru: Obično se
softver razvija na serveru koji ne mora da bude istog tipa kao i server na kome će softver raditi. To otvara puno izazova u razvoju o kojima se mora voditi računa.
11.2. Ponovna upotreba softvera: Šta je to? Koja je korist od ovoga? Koji su nivoi primene ponovljivosti softvera? Objasniti primenu na svakom nivou. Koji su troškovi primene upotrebljenog softvera, odn. ranije razvijenog softvera/softverskog proizvoda?
Korišćenjem ranije razvijenog softvera, ubrzava se razvoj novog softvera, smanjuje se rizik neuspeha i smanjuju se troškovi razvoja.
Ponovna upotreba softvera je moguća na više različitih nivoa:
- Apstraktni nivo: Na ovom nivou nema direktne ponovne upotrebe softvera, već se koristi znanje primenjeno prilikom projektovanja softvera. Koriste se projektni šabloni i strukturni šabloni kao apstraktna znanja za ponovno korišćenje.
- Nivo objekta: Na ovom nivou ponovno se koriste objekti iz biblioteke. Pri razvoju softvera, treba naći pogodnu biblioteku objekata i koristiti objekte čije metode obezbeđuju potrebnu funkcionalnost (na primer, JavaMail biblioteka).
- Nivo komponente: Komponente su kolekcije objekata i klasa objekata koje zajedno rade na obezbeđivanju odgovarajućih funkcija i servisa. Pri ponovnoj upotrebi neke komponente, integracijom nekoliko ranije razvijenih softverskih sistema najčešće je potrebna određena promena softvera ili njegova dopuna, da bi se komponenta prilagodila potrebama novog korisnika, tj. softvera u koji se ugrađuje (na primer, grafički korisnički interfejs - GUI).
- Nivo sistema: Na ovom nivou se upotrebljava ponovo ceo softverski sistem. U tom slučaju se njegova konfiguracija (komponente i dr.) prilagođava specifičnim potrebama korisnika (npr. SAP). Na ovaj način se može novi sistem kreirati konfigurisanjem novog sistema.
Postoje i određeni troškovi karakteristični kod ponovnog korišćenja softvera:
- Trošak vremena utrošenog za nalaženje i analizu softvera koji se može ponovno upotrebiti, a sa stanovišta zadovoljenja potreba korisnika.
- Trošak nabavke softvera u cilju zadovoljenja za ponovno korišćenje. Veliki sistemi, koji se kupuju radi prilagođavanja, mogu da budu i vrlo skupi.
- Troškovi prilagođavanja kupljenog softvera, tj. softtverskih komponenti u skladu sa zahtevima.
- Troškovi integracije softverskih komponenti namenjenih za ponovnu upotrebu.
11.3. Upravljanje konfiguracijom softvera: Šta je konfiguracija softvera? Koja je korist od upravljanja konfiguracijom? Koji su izazovi povezani sa konfiguracijama softvera? Koje su tri osnovne aktivnosti upravljanja konfiguracijom? Opišite upravljanje konfiguracijom za svaku od ovih aktivnosti. Navedite neki softverski alat za upravljanje konfiguracijom softvera?
Konfiguracija softvera je skup određenih verzija softverskih komponenata. Moguće je da se za različite korisnike koriste različite verzije softverskih komponenata.
Upravljanje konfiguracijom je opšti proces upravljanja promenama softverskog sistema. Cilj primene sistema za upravljanje konfiguracijom je da se podrži proces integracije sistema tako da svi članovi razvojnog tima mogu da na kontrolisan način pristupaju kodu softvera i njegovoj dokumentaciji, da pronađu promene do kojih je došlo, i da izvrše prevođenja u izvršni oblik i da povežu sve komponente koje čine sistem.
Postoje tri osnovne aktivnosti upravljanja konfiguracijom:
- Upravljanje verzijama, kojim se obezbeđuje praćenje različitih verzija softverskih komponenata, kao i koordinacija rad više programera. Na taj način se sprečava da jedan programer promeni kod koji je drugi programer prethodno pripremio i ubacio u sistem.
- Integracija sistema, kojom se obezbeđuje pomoć softverskim inženjerima da definišu verzije komponenata koje čine svaku verziju sistema. To omogućava automatsku izradu izvršnog koda sistema (tj. njegovu kompilaciju i povezivanje) sastavljanog od različitih komponenata.
- Praćenje problema, koji omogućava korisnicima da prijave greške (bagove) i druge probleme u radu sistema, a razvojnom timu omogućava da koordiniše rad na otklanjanju prijavljenih grešaka i rešavanju problema.
Svaki alat koji se bavi upravljanju konfiguracijama softvera (npr. ClearCase) mora da podrži sve tri navedene aktivnosti.
11.4. Navedite specifičnosti razvoja sledećih softverskih sistema: a) ugrađeni sistemi, b) posrednički softver (middleware)
U slučaju ugrađenih računarskih sistema, često se koriste simulatori koji vrše simulaciju rada određenih hardverskih uređaja, kao što su senzori, događaju u okruženju u kojima će sistem raditi. Simulatori ubrzavaju proces razvoja ugrađenih sistema, jer omogućavaju da svaki inženjer razvoja ima svoju izvršnu platformu, te ne mora da preuzima softver sa zajedničkog servera. Međutim, skup je razvoj simulatora, te se oni koriste samo u slučaju najpopularnijih hardverskih arhitektura (uređaja).
Ukoliko izvršno okruženje koristi određeni posrednički softver (middleware), tj. Serverski softver za upravljanje radom aplikacija, kao i za druge softvere, onda se i oni moraju koristiti prilikom testiranja sistema. Nije praktično da sav taj softver instalirate na vašem računaru, pre svega zbog problema sa licencama. Zato se najčešće razvijen softver prebacuju na testiranje na izvršnu platformu.
11.5. Koji se softverski alati koriste u okviru razvojnih platformi? Čemu služi server za razvoj softvera/razvojni server)? Šta su to integrisane razvojne platforme (IDE)? O čemu se mora voditi računa pri primeni razvojnih platformi?
Razvojna platforma treba da obezbedi sledeće softverske alate:
- Integrisan kompajler i sistem za promenu sintakse, radi kreiranja, promene i prevođenja (kompilacije) izvornog koda.
- Sistem za otklanjanje grešaka za softver pisan u određenom programskom jeziku.
- Grafički alati za rad sa softverskim modelima, kao što su UMPL modeli.
- Alati za testiranje, kao što su JUnit, koji mogu da automatski izvršavaju skup testova nove verzije programa.
- Alati za podršku projektima razvoja softvera, koji organizuju kod za različite razvojne projekte.
Radi podrške razvojnom timu, koristi se i zajednički server, na kome se nalaze sistemi za upravljanje promenama i konfiguracijama, a i za upravljanje zahtevima.
IDE je skup softverskih alata koji podržavaju različite aspekte razvoja softvera.
11.6. Razvoj softvera sa otvorenim izvornim kodom: Šta je to? Šta je karakteristično za ovakav način razvoja softvera? Ko nosi odgovornost za razvoj ovog softvera? Šta treba da imate u vidu kada odlučujete da li da koristite softver otvorenog koda ili komercijalni softver? Koji je poslovni model primene softvera sa otvorenim izvornim kodom?
Razvoj softvera sa otvorenim kodom je pristup razvoju softvera u kome je izvorni kod softvera javno dostupan a pozivaju se dobrovoljci da učestvuju u njegovom daljem razvoju.
Pretpostavka je da će kod softvera biti kontrolisan i razvijan od tima dobrovoljaca, a ne i od krajnjih korisnika softvera. Po pravilu, svaki od njih može da izvesti o primećenim greškama u kodu i da ih otkloni, kao i da proizvede nova svojstva i novu funkcionalnost softvera. Međutim, u praksi, uspešan razvoj softvera sa otvorenim izvornim kodom još uvek zavisi od osnovne grupe koja razvija softver i koja kontroliše promene na softveru.
Za kompanije koje su uključene u razvoj softvera otvorenog koda, postoje dva otvorena pitanja:
- Da li da proizvod koji razvijaju oslone na upotrebu komponenata otvorenog koda?
- Da li da pristup softvera otvorenog koda uopšte primene za njihov razvoj softvera?
11.7. Licence za korišćenje softvera otvorenog koda: Ko je vlasnik softvera? Ko ima prava da ga menja i koristi? Opišite prava i obaveze koje predviđaju licence namenjene sistemima sa otvorenim kodom: a) GNU opšta javna licenca b) GNU ograničena javna licenca c) Berkli licenca standarde distribucije. Koji mogući problema prate korišćenje softvera sa otvorenim kodom? Koje preporuke bi dali vašem direktoru koji razmišlja da razvoj novog softverskog proizvoda zasnuje na korišćenju komponenti koji su otvorenog koda.
Preuzimanje softvera otvorenog koda je najčešće potpuno besplatno. Međutim, ako želite da imate dokumentaciju i podršku tima koji razvija softver, onda najčešće treba da platite tu uslugu. Softver otvorenog kod je često vrlo pouzdan zbog velike populacije korisnika ili učesnika u razvoju, koji sami otklanjaju uočene greške i nedostatke.
Vlasnik softvera može da postavi ograničenja za njegovo korišćenje, uključujući i korišćenje posebne dozvole za korišćenje softvera sa otvorenim kodom.
Iako je u principu korišćenje softvera sa otvorenim izvornim kodom besplatno, to ne znači da njegov korisnik može da radi šta hoće sa njim. S pravne tačke gledišta, onaj koji je razvio kod (kompanija ili pojedinac) je vlasnik softvera, ili dela koji je razvio. On može da postavi ograničenja za njegovo korišćenje, uključujući i korišćenje posebne dozvole za korišćenje softvera sa otvorenim kodom. Neki od njih smatraju da softverski sistem koji se razvije korišćenjem softvera otvorenog koda, takođe treba da bude softver otvorenog koda.
Drugi pak prihvataju da sistem koji je razvijem uz podršku softvera sa otvorenim kodom, može da se koristi bez ikakvih ograničenja.
Licence (dozvole) za korišćenje softvera sa otvorenim kodom se mogu podeliti u tri kategorije:
- GNU opšta javna licenca (GNU General Public License – GPL): Ona u principu zahteva da softver koji je razvijen sa softverom koji ima licencu tipa GPL, takođe mora da se koristi sa GPL licencom. To znači da i tako razvijen softver mora da bude softver otvorenog koda.
- GNU ograničena javna licenca (GNU Lesser General Public License – LGPL): Ova je varijanta GPL licence koja dozvoljava da vi napravite softversku komponentu korišćenjem softvera otvorenog koda, bez obaveze da vaša komponenta bude softver otvorenog koda.
- Berkli licenca standardne distribucije (Berkley Standard Distribution License – BSD): Ovo nije recipročna licenca (kao GPL) jer vas ne obavezuje da vaš softver koji ste razvili korišćenje softvera otvorenog koda bude takođe softver otvorenog koda. To znači da ne morate da ga javno nudite i da kao svoj kod, možete da ga prodajete. Jedino što mora da uradite, to ja da jasno navedete koje komponente koje koristite su otvorenog koda i ko je njihov autor.
11.8. Definišite dijagrame klasa i sekvencijalne dijagrama za softverski sistem dat sledećim opisom: Sistem upravlja procesom realizacije službenih putovanja zaposlenih u firmi ABC. Sistem treba da obezbedi odobrenje za službeni put, izvore finansiranja puta, rezervacije karata, hotela i dr., izveštaj lica koje je išlo na službeni put, isplatu dnevnica, plaćanje računa za karte, hotel i dr., izradu konačnog finansijskog obračuna, i arhiviranje celokupne dokumentacije vezane za službeni put. (povezan zadatak: 5.8 i 6.16)
PP