You are on page 1of 61

SOFTVERSKO INENJERSTVO

1. 1.1 1.2. 1.3. 1.4.

1.5. 1.6. 1.7. 1.8.

Softver i softversko inenjerstvo Pojmovno odreenje softvera Paradigme arhitekture softvera Pojmovno odreenje softverskog inenjerstva Struktura softverskog inenjerstva 1.4.1. Metode 1.4.2. Alati 1.4.3. Postupci Ciljevi i znaaj softverskog inenjerstva Karakteristike softverskog inenjerstva Komponente softvera Vrste softverskog inenjerstva

1.1. Pojmovno odreenje softvera

Pre trideset godina, manje od 1% javnosti je bilo u mogunosti da inteligentno objasni znaenje pojma "softver". Meutim, sada sve vei deo te javnosti smatra da i razume softver.

Da li je to tako?

Softverski proizvod (engleski: consumer software package) predstavlja softversku podrku raunarskim sistemima, a ine ga skup raunarskih programa, datoteke i odgovarajua dokumentacija, namenjeni realizaciji odreenih zadataka (definicija preuzeta iz standarda JUS ISO 9127/94). Za razliku od softverskog proizvoda, softver se sastoji iz skupa raunarskih programa i datoteka sa istom namenom koju ima softverski proizvod. Kako su, prema usvojenim standardima, softver i odgovarajua pratea dokumentacija nerazdvojivi, upakovani za prodaju kao jedinstvena celina i prodaju se zajedno, u nastavku se ova dva pojma poistoveuju.

Iz izloenog se vidi da softverski proizvod predstavlja jedinstvo raunarskih programa, struktura podataka sadranih u datotekama i dokumentacije koja opisuje nain funkcionisanja i upotrebe programa. Pri tome, posebno se istie znaaj dokumentacije, koju projektanti i programeri esto zanemaruju, ali bez koje se softver ne moe smatrati kompletnim. Informacije sadrane u prateoj dokumentaciji su esto jedino sredstvo putem koga proizvoa softvera i/ili distributer mogu komunicirati sa kupcem ili korisnikom. Samo ukoliko dokumentacija sadri dovoljno informacija, korisniku se omoguuje uspeno korienje softvera.

Za pojam softvera vezan je i pojam softverska podrka. Ona predstavlja rad na odravanju softvera i pratee dokumentacije u funkcionalnom stanju. Mogu je pruati: proizvoa (organizacija koja je razvila softver), predstavnik (organizacija koja plasira softver na tritu), distributer (organizacija koja neposredno prodaje softver korisniku) ili neka druga organizacija.

1.2. Paradigme arhitekture softvera

Prvu, najraniju etapu karakterie razvoj softvera koji su realizovali proizvoai raunarske opreme, razvijajui kompletan neophodni softver (operativne sisteme, programske jezike, pomone programe i dr.) za svoje proizvode. To je bio softver batch orijentacije, projektovan i razvijan za pojedinane potrebe naruilaca. Celi postupak od inicijalizacije, preko projektovanja do implementacije i odravanja softvera je obavljala ista osoba, te projektno-programska dokumentacija nije postojala. U raunarskim centrima je bila realizovana koncentracija vrhunskih kadrova znaajnih za razvoj softvera.

Meutim, ubrzani razvoj raunarske opreme, uslovio je da se menjaju i zahtevi korisnika prema softveru. Vii zahtevi u odnosu na softver isticali su potrebu za viim nivoom znanja onih koji softver razvijaju. Sopstvenim snagama organizacije su sve tee mogle da prate takav razvoj. Vii trokovi razvoja softvera uslovljavali su i postepeni rast zahteva za sredstvima odnosno kapitalom potrebnim za razvoj. Samo veoma velike raunarske kue su dozvoljavale sebi taj luksuz i pravo da odravaju raunarske centre u celini i da se bave istovremeno razvojem, kako raunarske opreme, tako i softvera.

Drugu etapu karakterie softver razvijen za viekorisniki rad u on line reimu rada i pojava prvih sistema za upravljanje bazama podataka. Sedamdesetih godina se pojavljuju prve softverske kue. One su u poetku razvijale specifini softver za odreenu raunarsku opremu, da bi se kasnije usmerile ka razvoju univerzalnijeg softvera upotrebljivog na razliitoj opremi. U ovim organizacijama se koncentrisalo kvalitetno osoblje, koje je timskim radom i dobrom koordinacijom poslova dolazilo do najkvalitetnijih reenja.

Kada bi se eleli ukratko navesti faktori, koji su uslovili potrebu novog naina razvoja softvera, onda bi to bili: eksplozija informacija, pojava softverskih kua, raznovrsna i brojna primena raunara, potreba za softverom koji se lako upotrebljava i nije skup, brze i dinamine promene u drutvu, zahtevi za visokim nivoom kvaliteta softvera, brza realizacija, odnosno krae vreme dostupnosti i zahtevi za univerzalnom primenom.

Treu etapu razvoja karakterie softver za podrku distribuiranih raunarskih sistema koji meusobno komuniciraju i pojava personalnih raunara, koja je jo vie iskazivala potrebu da se izmeni nain razvoja softvera, odnosno potrebu da se brzo i jeftino dolazi do univerzalnih i opte primenljivih programa. Javlja se vei uticaj i potreba korisnika za jedinstvenim nainom korienja softvera i smanjenjem trokova u primeni raunara. Takoe, pojavljuju se i snanija sredstva za razvoj softvera.

Softver je postao opte prihvaeni pojam, a potreba za raunarskom opremom sve vea. Poela je realizacija industrijske proizvodnje softvera, umesto, do tada akluelne, pojedinane zanatske proizvodnje. Softver se proizvodi na identian nain kao i svi ostali industrijski proizvodi. Danas, razvoj softvera predstavlja znaajnu industrijsku granu.

Trite je postavljalo takve zahteve i imalo oekivanja prema softveru, kakve nije mogla zadovoljiti pojedinana zanatska ve samo industrijska proizvodnja. To su: zadovoljenje raznovrsnih potreba odnosno opta primenljivost softvera, razvoj softvera na kompleksan nain uz raunarsku podrku i CASE alate, uobiajeno primenjen model prototipskog razvoja softvera, realizacija jeftinijeg softvera za korisnika obzirom da se ukupni trokovi dele na veliki broj kupaca, mnogo krae vreme realizacije softvera, savremeniji i delotvorniji softveri koji se uobiajeno realizuju u softverskim kuama sa kompetentnijim i strunijim osobljem i visok nivo kvaliteta softvera.

etvrtu etapu razvoja softvera karakteriu dalji razvoj softvera za primenu snanih personalnih raunara, raunara povezanih u mree i paralelnu obradu. Takoe, iz eksperimentalne u iroku upotrebu se stavljaju nove vrste informacionih sistema kakvi su ekspertni sistemi, vetaka inteligencija i neuronske mree, kao i objektno orijentisane tehnologije. Posebno znaajno za ovu poslednju etapu u razvoju je ruenje mita po kome samo softverske kue razvijaju raunarske programe. Naime, korisnici, primenom tehnika etvrte generacije, i sami razvijaju softver i menjaju ustaljenu praksu i nain razvoja softvera.

Teorijske osnove industrijskog razvoja softverskih proizvoda opisao je sredinom osamdesetih godina Brad Cos. On, razvoj sloenog sistema softverskog proizvoda, definie kao proces povezivanja manje sloenih gotovih objekata i komponenti. Do ovakvog naina industrijskog razvoja dolazi se evolucijom iz zanatskog razvoja, koji i dalje postoji, ali prestaje biti dominantan nain.

Da bi se mogla organizovati industrijska proizvodnja potrebno je obezbediti sve delove koji ulaze u konkretan proizvod. Ti delovi moraju biti meusobno usaglaeni, odnosno neophodno je da postoje standardi po kojima se oni razvijaju. Kako je razvoj softvera vrlo dinamian, donoenje zvaninih standarda nije sposobno da ga prati, pa se na tritu prvo pojavljuju standardi koji predstavljaju zajedniki dogovor odreene grupe proizvoaa ili standardi neke velike korporacije (Microsoft) koji su na tritu opte prihvaeni.

Takvi standardi se nazivaju industrijski standardi i predstavljaju osnovu za pokretanje procedure i donoenje zvaninih standarda od strane meunarodnih ili nacionalnih organizacija koje se bave standardizacijom (npr. International Standard Organisation ISO, American National Standard Institute ANSI, Savezni zavod za standardizaciju).

Trite softverskih prizvoda belei rast koji nadmauje rast trita hardvera i ta se razlika stalno poveava. Vidljiviji su osnovni trendovi koji karakteriu trite softverskih proizvoda. Uoljiv je stalni trend smanjivanja cena. Razvojne i korisnike mogunosti softverskih proizvoda najprisutnije su na desktop okruenjima. Sve su ee investicije u skladita podataka koja obezbeuju vane informacije i u Internet proizvode. iri se trite serverskih operativnih sistema i aplikacija, posebno na klijent-server platformi.

Odnos cena i performansi raunara smanjen je za proteklih 20 godina milion puta, a prema Murovom zakonu (Moor) predvia se isti trend i za dva nastupajua perioda od po 20 godina, nakon ega se oekuje da e doi do zasienja i ovaj odnos e biti znatno umanjen. Kao posledice Murovog zakona, ustanovljeni su osnovni softverski zakoni, koji opisuju trendove razvoja softvera:

softver se iri kao gas, stopom rasta od 33,9% godinje, softver e se iriti sve dok ne bude ogranien Murovim zakonom, rast softvera omoguava odravanje Murovog zakona o rastu hardvera, rast softvera je ogranien jedino ljudskim ambicijama i mogunostima i softver je "nepoderiv" proizvod, to omoguava njegovo korenje neogranieno dugo (iz ega je proiziao i problem 2000. godine, jer niko nije oekivao da e se softverska reenja tako dugo odrati u produkciji). Najznaajnije posledice ovih zakona su da e razvoj softvera predstavljati najvaniju industrijsku granu i u 21. veku i da e se softverska kriza i dalje nastaviti.

Softversko inenjerstvo nema za cilj samo izradu softverskog proizvoda, nego i razvoj na trokovno delotvoran nain, koji podrazumeva da se sa konano definisanim obimom resursa u predvienom roku postigne proizvod visokog kvaliteta. Pri tome, kritini kriterijumi kvaliteta koji odreuju dobro razvijen softverski proizvod su: odavanje - mogunost prilagodavanja softvera izmenjenim zahtevima kupca, odgovornost - pouzdanost, sigurnost, bez tete uslovljene grekama u sistemu, efikasnost - bez nepotrebnog korienja resursa sistema i upotrebljivost sa odgovarajuim korisnikim interfejsom i adekvatnom dokumentacijom.

U zavisnosti od karaktera sistema koji bi se razvijao i predmeta razvoja, mogu se razlikovati razliite grane u razvoju softvera: softverski inenjering, sistemski inenjering, informacijski inenjering i inenjering znanja.

1.3. Pojmovno odreenje softverskog inenjeringa

Pojam softverski ininjering se, prvi put pominje krajem ezdesetih godina na konferenciji o krizi softvera, prouzrokovanoj treom generacijom raunara (prije svega IBM S/360), koja je svojom snagom inicirala razvoj velikih softverskih sistema. Poto za ove sisteme nisu postojali odgovarajui teorijski modeli razvoja, realizacija projekata pojedinih informcijskih sistema je trajala izuzetno dugo, kasnila po vie godina, to je viestruko uveavalo planirane trokove razvoja, komplikovalo odravanje, a sama realizacija je bila na vrlo niskom nivou. Tako je poeo rad na teorijskim aspektima metodologija razvoja softvera, kasnije na njihovoj primeni u praksi, da bi se danas jasno formirala disciplina koja prouava razvoj informacijskih tehnologija, poznata pod nazivom softverski inenjering.

Softverski inenjering nema za cilj samo izradu softverskog proizvoda, nego i razvoj na trokovno delotvoran nain, koji podrazumeva da se sa konano definisanim obimom resursa u predvienom roku postigne proizvod visokog kvaliteta. Pri tome, kritini kriterijumi kvaliteta koji odreuju dobro razvijen softverski proizvod su: odavanje - mogunost prilagoavanja softvera izmenjenim zahtevima kupca, odgovornost - pouzdanost, sigurnost, bez tete uslovljene grekama u sistemu, efikasnost - bez nepotrebnog korienja resursa sistema i upotrebljivost - sa odgovarajuim korisnikim interfejsom i adekvatnom dokumentacijom.

U zavisnosti od karaktera sistema koji bi se razvijao i predmeta razvoja, mogu se razlikovati razliite grane u razvoju softvera: softverski inenjering, sistemski inenjering, informacijski inenjering i inenjering znanja. Pojmovno softverski inenjering se moe definisati kao stroga primena inenjeringa, naunih i matematikih principa i metoda u ekonominoj proizvodnji kvalitetnog softvera.

Softverski inenjering je prvi definisao Fritz Bauer jo 1968. godine na konferenciji koju je organizovao Nauni komitet NATO. Upotrebio ga je kao termin koji oznaava primenu principa inenjeringa u cilju ostvarivanja ekonominog softvera, efikasnog i pouzdanog u realnosti na raunarskim mainama. Nakon toga su nastale brojne definicije, ali su sve one posebno naglaavale potrebu primene inenjeringa u razvoju softvera.

Najprecizniju definiciju softverskog inenjeringa nalazimo u standardnom reniku termina softverskog innjeringa koji je 1990. godine objavio IEEE (Institute for Electronics, Energetics and Engineering), a prema kojem softverski inenjering podrazumeva primenu sistematinog, disciplinovanog i merljivog pristupa razvoju, uvoenju i odravanju softvera, tj. primeni inenjeringa na softver.

1.4. Struktura softverskog inenjeringa


Softverski inenjering je posledica hardverskog i sistemskog inenjeringa. Strukturu softverskog inenjeringa sainjavaju tri kljune komponente: Metode, alati i postupci (procedure). Njihovo jedinstvo opredeljuje kvalitet razvoja, pa je zbog toga znaajno da se odaberu one komponente koje se postavljenim zadacima i problemima u razvoju najlake prilagoavaju.

Donoenje prave odluke nije jednostavan zadatak zbog: individualnog i kreativnog karaktera postupka projektovanja, razliitosti pojedinih sistema za koji se razvija softver i razliitog okruenja sistema, te nije mogue dati recept za izbor.

1.4.1.Metode

Metode predstavljaju neophodan i uz odreene pretpostavke propisani sistematski nain na koji se izvravaju pojedini zadaci softverskog inenjeringa. Metode pokrivaju iroki spektar zadataka meu kojima su: planiranje i procenjivanje projekata, analiza sistemskih i softverskih zahteva, projektovanje strukture podataka, definisanje arhitekture programa, kodiranje, testiranje i odravanje.

Svaki proces razvoja softvera je celishodno obaviti primenom odreenih metoda. Izabrati odgovarajui metod koji e se primeniti u razvoju nije jednostavno, obzirom da su raspoloive brojne mogunosti. Metode se mogu meusobno kombinovati nezavisno od toga koja je metoda najpogodnija za reavanje datog problema. Najznaajnija tenja prilikom pravilnog izbora metoda je minimizacija trokova razvoja i obezbeenje visoko - kvalitetnog proizvoda. Metode u softverskom inenjeringu uvek uvode specijalne jezike ili grafike notacije i grupe kriterijuma u defnisanju kvaliteta softvera.

Metode razvoja treba da budu nezavisne i neutralne od primene. Drugim reima, moraju obezbediti reenje razliitim problemima na razliite naine.

Naravno, ne postoji takav razvoj kojem nedostaju principi i metode, ali ne postoje ni metode koje se mogu primeniti u reavanju svakog problema. U tom smislu, primarni i veoma odgovoran zadatak je izabrati za korisnika, sistem i proces razvoja najpogodniju i najprilagodljiviju metodu. Pravilan izbor ne podrazumeva definisanje jedne odreene metode, nego, u zavisnosti od kompleksnosti i vrste problema, kombinaciju vie razliitih metoda.

Metode razvoja softvera se mogu grupisati prema razliitim kriterijumima, ali ih je veoma teko jednoznano razvrstati. Najee se grupiu s obzirom na faze razvoja softvera u kojima se primenjuju. Kao izraz potreba za reavanjem sve sloenijih problema putem raunara, pojavile su se metodologije. One predstavljaju jedinstveni sistem metoda, ijim povezivanjem je omogueno projektantima da na sistematski nain pokriju vie faza ili sve faze razvoja softvera.

1.4.2.Alati

Alati obezbeuju automatizovanu ili poluautomatizovanu podrku u primeni metoda Oni predstavljaju pomo neophodnu da bi se automatizovala primena softverskog inenjeringa u oblasti: upravljanja projektom odnosno planiranja, procenjivanja, terminiranja, rasporeivanja, modeliranja odnosno prototipskog razvoja i simulacije, analize, projektovanja, kodiranja, dokumentovanja, testiranja, integracije elemenata sa sistemom, upravljanja konfiguracijom, kontrole kvaliteta softvera, upravljanja podacima i dr.

U stvarnosti, danas svaka metoda poseduje odreeno pomono sredstvo, instrument, alat. Kada su alati na takav nain integrisani u jedan sistem da se rezultati kreirani od jednog alata mogu upotrebiti i od drugog alata, tada govorimo o CASE alatima. CASE alati ine posebnu grupu alata, koji automatizuju metode i procedure razvoja softvera i istovremeno skrauju vreme, smanjuju trokove izrade i podiu kvalitet proizvoda.

1.4.3.Postupci
Postupci predstavljaju "lepilo" koje povezuje metode i alate. Postupkom se naziva niz konkretnih koraka koje je potrebno izvriti prilikom reavanja datog problema ili grupe problema primenom odreene metode. Postupak moe imati alternative, meusobnim povezivanjem vie postupaka mogu se kreirati i potpuno novi postupci. Postupci definiu: redosled izvoenja metodolokih koraka i primene pojedinih metoda, koji se rezultati trebaju realizovati u pojedinim metodolokim koracima, kakve kontrole treba ugraditi u razvoj softvera u cilju obezbedenja kvaliteta i koordinacije izmena i putokaze za softver menadere u ocenjivanju izvrenog razvoja.

Za primenu odreenog postupka se, takoe ne moe dati recept, jer priroda sistema koji se razvija i oekivanja korisnika se meusobno znaajno razlikuju.

Pojam sistemskog inenjeringa

Optiji pojam, od pojma softverski inenjering, je sistemski inenjering. On obuhvata aktivnosti specificiranja, projektovanja, primene, provere, instaliranja i odravanja sistema kao celine. Sistemski inenjering podrazumeva i niz prateih komponenti koje nisu strogo informatike, a koje omoguuju funkcionisanje sistema. Da bi se realizovao proces sistemskog inenjeringa kao niz interdisciplinarnih aktivnosti potrebno je angaovati niz timova sa razliitim znanjima i ulogama, koji e zajedniki defnisati sistem. Kada je sistem jednom definisan, ne preporuuje se ulazak u redizajn sistema bez preke potrebe, jer su sve kasnije izmene izuzetno komplikovane i skupe.

1.5.Ciljevi i znaaj softverskog inenjerstva

Znaaj inenjerstva je u sistematskom pristupu razvoju, uvoenju i odravanju softvera kroz faze njegovog ivotnog ciklusa. Treba posebno naglasiti da ne postoji jedno najbolje reenje ili pristup u reavanju problema razvoja softvera. Ipak kombinovanjem velikog broja iroko obuhvatnih metoda u svim fazama razvoja softvera, kvalitetnih alata za automatizovanje ovih metoda, snanih blokova za implementaciju softvera, boljih tehnika za obezbjeenje kvaliteta softvera i to je najvanije filozofijom koordinacije, kontrole i upravljanja, moe se postii disciplina u razvoju softvera ili softverski inenjering.

Primena softverskog ininjeringa ukljuuje: izradu pouzdanog softvera, izradu softvera koji radi po originalnim specifikacijama, izradu softvera koji je prilagodljiv promenama u svim fazama ivotnog ciklusa, izradu softvera koji se moe ponovo koristiti na razliitim sistemima, razvoj zavisan od raspoloivih resursa, razvoj izveden na vreme, efektivan razvoj sa aspekta trokova, razvoj koji zadovoljava korisnike zahteve i razvoj koji obezbeuje kvalitetan proizvod.

Softverski inenjering predstavlja strogo definisan pristup koji ine principi i ciljevi koji se primenjuju u razliitim fazama razvoja softvera. Ciljevi softverskog inenjeringa su prema tome: ostvarenje pouzdanosti, promenljivosti, jasnosti, prilagodljivosti, ponovljivosti, efikasnosti, prenosivosti i mogunosti odravanja softvera.

Koncept, sottverskog inenjeringa u realizaciji ciljeva poseduje veoma znaajne prednosti u odnosu na zanatlijski - pojedinano razvijeni proizvod, a to su sledee: trokovi razvoja softverskih proizvoda su veoma visoki ali je proizvod, obzirom na brojnost primene, jeftin, vreme raspoloivosti softverskih proizvoda je krae, odnosno period vremena od nastanka ideje do njene realizacije je skraen i rezultat razvoja su softverski proizvodi koje karakterie visok nivo kvaliteta, odnosno ovakav nain razvoja softverskih proizvoda predstavlja garanciju kvaliteta.

Prema tome, pojedinano razvijeni proizvod je skup, njegov razvoj traje dugo, kupac/korisnik mora ekati da mu se proizvod razvije i nije siguran da e dobiti proizvod koji i oekuje. Tek na kraju razvojnog perioda e videti da li proizvod ispunjava njegova oekivanja.

1.6. Karakteristike softverskog inenjeringa

Karakteristike softverskog inenjeringa, kao to su jedinstvenost i kompleksnost, su proste (opte) kategorije koje utiu na proces razvoja softverskih proizvoda. Odreene kategorije konkretnih zahteva ukljuuju i druge karakteristike kao to su: pouzdanost, doputenost greaka (tolerantnost), performantnost i kompatibilnost. Kod postojeih sistema, posebna panja se posveuje i odluivanju kao odgovarajuem procesu u ivotnom ciklusu, kako u tehnikom tako i u upravljakom smislu.

Planiranje razvoja mora uzeti u obzir i razmatranje tehnikih karakteristika koje su potrebne u svakom pojedinom projektu sistema. To su: karakteristike sistema (veliina, kompleksnost, savremenost), karakteristike zahteva (priroda, stepen definisanosti), potrebna obuka, trokovi projekta, raspoloive svrsishodne metodologije/Metode, savremeni CASE proizvodi, tehnike efektivnog upravljanja projektom i dr.

to se tie modela procesa, oni moraju ukljuivati i procese razmatranja razloga greaka, definisanja okvira greaka i definisanja ema naina samokorekcije. Primenjeni modeli ivotnog ciklusa zahtevaju i realizaciju osobina prilagodljivosti, fleksibilnosti i tolerantnosti. Navedene karakteristike odreuju: karakter rizika, ogranienja, upotrebu modela procesa, zahtevanu tehnologiju razvoja, primenljivost standarda i organizacijsku odgovornost.

Primarna osobina dobrog sistema softverskog inenjeringa je da finalni proizvod postigne ciljeve softverskog inenjeringa koji zadovoljavaju potrebe i zadovoljavaju kupca. Softverski inenjering koji ukljuuje maksimum moguih ciljeva i principa softverskog inenjeringa poseduje i sledee osobine: funkcionalnost - korektno i tano, performantnost - vrijeme pristupa, protok i brzina, efektivnost, temeljitost u analizi zahteva,

robustnost - mogunost ponovne upotrebe proverenih komponenti, upotreba odgovarajuih metodologija, odgovarajua dokumentacija za operativni rad i odravanje, upotreba CASE alata, sposobnost prilagoavanja promenama tokom evolucije sistema, dobro definisani korisniki interfejs, lakoa upotrebe softvera i dr.

Meu navedenim karakteristikama, posebno su znaajne one karakteristike softverskog inenjeringa koje ukazuju na mogunost prototipskog razvoja softvera i na mogunost ponovnog korienja razvijenih delova ili celine softvera.

1.7. Komponente softvera

Trend projektovanja softverskih proizvoda na osnovu elemenata ranijih aplikacija nezavisno razvijenih, sa razliitim alatima, u razliitim jezicima i na razliitim platformama, postaje sve izraeniji. Ove, prethodno testirane komponente, pruaju mogunosti jednostavnijeg i pouzdanijeg sklapanja u softverski proizvod, zatim njihovo viestruko korienje i nezavisno poboljanje mogunosti i performansi.

Pojam softverskih komponenti podrazumjeva sistemski ili aplikativni softver pomou kojeg se upravlja fizikim ili logikim resursima sistema. Da bi se softverske komponente mogle koristiti pri navedenom nainu projektovanja potrebno je da zadovoljavaju jedinstven model razmene podataka meusobno, da postoji mogunost neposrednog programiranja aktivnosti koje se odvijaju izmeu komponenti, zatim da se u istoj datoteci mogu nai razliiti podaci i da se mogu izvravati na razliitim platformama.

Skladita softverskih komponenti koje zadovoljavaju opisane uslove i mogu se viestruko koristiti u razliitim programima nazivaju se repozitorijumi. Pri formiranju, izmenama i upotrebi komponenti iz repozitorijuma treba voditi rauna o tome da li nova verzija utie i kako utie na izvrenje pojedinih programa koji je koriste. Takoe je potrebno pratiti proces zamene komponenata novim verzijama u pojedinim programima i pri tome voditi rauna o prilagoavanju komponente softverskom proizvodu.

Softverske komponente mogu se klasifikovati u sledee funkcionalne grupe: seniorske (skupljaju informacije iz okoline sistema), pokretake (prouzrokuju izmene u okolini sistema), raunske (na osnovu odreenih ulaza proraunavaju izlaze), komunikacijske (omoguavaju komunikaciju ostalih softerskih komponenti), koordinacijske (koordiniraju operacije ostalih komponenti) i interfejsi (transformiu prezentaciju izlaza jedne komponente u oblik razumljiv drugoj).

Tehnologije, grupisane oko servisa WWW (World Wide Web) na Internetu svojim snanim razvojem nametnutim optom primenljivou, a zasnovane na specifinim funkcijama WWW interfejsa, otvorile su prvo pravo trite gotovih softverskih komponenti razliitih proizvoaa. Ove komponente karakterie standardizacija okruenja koja je nezavisna od platforme i operativnog sistema na kojima se one koriste. primenom ovih komponenti ubrzava se razvoj novih, ime uee gotovih komponenti postaje dominantno u realizaciji distribuiranih informacijskih sistema.

Drugi poznati primer softverskih komponenti predstavljaju takozvani abloni (design patterns) koji se primenjuju u objektno orjentisanom dizajnu i programiranju. Pod ovim terminom podrazumevaju se tipske uloge, strukture, odnosi i mehanizmi obuhvaeni jedinstvenim reenjem koje je zajedniko za vie softverskih proizvoda. Vrlo je popularna literatura u kojoj su dati i detaljno opisani brojni abloni koji se mogu efikasno koristiti u razvoju objektno orijentisanih programa. Za njihov opis, pored imena, potrebno je navesti i niz drugih specifikacija kao to su namena, primenljivost, struktura, uesnici i njihove veze, implementacija, primeri korienja i drugo.

1.8. Vrste softvera

Razlikujemo dve klase softverskih proizvoda: generiki proizvodi su samostalni sistemi koje je izradila razvojna organizacija i prodaje ih na otvorenom tritu zainteresovanim kupcima, proizvodi po meri su sistemi specijalno formirani za odreenog kupca.

Do 1980. dominirali su proizvodi po meri, koji su se izvodili na velikim raunarima i bili su skupi, jer je kompletan razvoj plaao jedan kupac. Trite personalnih raunara donelo je trinu prevagu generikih proizvoda, koji se prodaju u hiljadama primeraka i zbog toga su znatno jeftiniji. Ipak, jo uvek se vie napora ulae u izradu proizvoda po meri. Integrisana aplikativna reenja sa znaajnim referencama i znatno niim cenama utiu na to da se danas trite sve vie orijentie na generike proizvode.

Danas se razlikuje vie razliitih klasifikacija softverskih proizvoda po raznim kriterijumima. U ovom tekstu bie data njihova klasifikacija prema funkcijama. Svrha ove klasifikacije je grubi prikaz najveeg dela onoga to se na tritu vodi pod pojmom softverski proizvodi. Prema ovoj klasifikaciji, na prvom nivou razlikujemo: softverske proizvode opte namene (operativne sisteme, sistemske programe i kontrolne i dijagnostike programe) i softverske proizvodie posebne namene (aplikativne programe i korisnike softverske proizvode).