Komponentno orijentisano programiranje

S Vikipedije, slobodne enciklopedije

Komponentno orijentisano programiranje (KOP) (takođe poznato kao razvojna komponenta na bazi (RKB)) je ogranak softverskog inženjerstva koja ističe odvajanje problema u pogledu funkcionalnosti široko dostupnim tokom određenog softverskog sistema. To je ponovni pristup zasnovan na definisanju, implementaciji i komponovanja labavo spregnutih nezavisnih komponenti u sistemima. Ova praksa ima za cilj da dovede do jednako širokog stepena koristi i u kratkom roku i dugoročno za samo softver i za organizacije koje sponzorišu takav softver.

Softversko inženjerski praktikanti smatraju komponente kao deo početne platforme za servis orijentaciju. Komponente igraju ovu ulogu, na primer, u veb servisima, a odnedavno, u servis orijentisanoj arhitekturi (SOA), pri čemu komponentu konvertuje veb servis u servis, a potom nasledi dalje karakteristike koje prevazilaze obične komponente.

Komponente mogu proizvesti ili konzumirati događaje i mogu se koristiti i u događaj-pokretnoj arhitekturi (DPA).

Definicija i karakteristike komponenti[uredi | uredi izvor]

Pojedinačna softverska komponenta je softverski paket, veb servis, izvor na internetu, ili modul koji sažima skup povezanih Funkcija (ili podataka).

Svi procesi sistema su postavljeni u odvojene komponente, tako da svi podaci i funkcije unutar svake komponente su semantički povezane (kao sa sadržajem nastave). Zbog ovog principa, za komponente se često kaže da su modularne i kohezivne.

Što se tiče sistemske koordinacije, komponente komuniciraju jedne sa drugima preko interfejsa. Kada komponenta pruža usluge ostatku sistema, ona ih usvaja pod uslovom da interfejs navodi usluge koje druge komponente mogu da se koriste, i kako one mogu da rade. Ovaj interfejs se može posmatrati kao potpis komponente - klijent ne treba da zna o unutrasnjim poslovima komponente (implementacija) kako bi koristio to. Ovaj princip rezultata u komponenti nazivaju enkapsulirani. UML ilustracije u okviru ovog člana predstavljaju obezbeđen interfejse od strane lollipop-simbola priključenog na spoljašnje ivice komponente.

Međutim, kada komponenta treba da koristiti neku drugu komponentu u cilju funkcije, ona usvaja da se koristi interfejs koji navodi usluge koje su mu potrebne. U UML ilustracijama u ovom članku, koriste se interfejsi u predstavljanju otvorene utičnice piključene na spoljašnje ivice komponente.

Jednostavan primer nekoliko softverskih komponenti - na slici u okviru hipotetički odmor-rezervacionog sistema predstavljenog u UML 2.0.

Još jedna važna osobina komponenti je da su zamenljive, tako da komponenta može da zameni drugu (na dizajn vremena ili komponenti), ako je komponenta naslednik i ispunjava zahteve početne komponente (izražena preko interfejsa). Prema tome, komponente se mogu zameniti bilo sa ažuriranom verzijom ili alternativom bez narušavanja sistema u kojoj komponenta djeluje.

Kao opšte pravilo za inženjere zamenom komponente, komponenta B može odmah da zameni komponentu A, ako komponenta B obezbeđuje barem ono što komponenta A, i ne koristi više od onoga što komponenta A koristi.

Softverske komponente su često u obliku objekata (ne klase) ili kolekcije predmeta (iz Objektno-orijentisanog programiranja), u nekom binarnom ili tekstualnom obliku, pridržavajući se neki opis interfejs jezika (OIJ), tako da komponenta može postojati samostalno od drugih komponenti u kompjuteru. Drugim rečima, komponenta deluje bez promene svog izvornog koda. Iako ponašanje izvornog koda komponente može da se menja na osnovu proširenja aplikacije, pod uslovom svog pisca.

Kada se komponenti pristupi ili deli u izvršenju konteksta ili mrežnim vezama, tehnike, kao što su serijalizacije u Makišu se često koriste da dostave komponentu svog odredišta.

Upotrebljivost je važna karakteristika za kvalitetnu softversku komponentu. Programeri treba da osmisle i sprovedu softverske komponente na takav način da mnogi različiti programi mogu da ih ponovo koristite. Osim toga, komponenta bazirana na testiranju upotrebljivosti treba uzeti u obzir kada softverske komponente direktno komuniciraju sa korisnicima.

Potrebno je uložiti značajne napore da se napiše softverska komponenta koja je efikasna za višekratnu upotrebu. Komponenta treba da bude:

  • u potpunosti dokumentovana
  • ispitana
    • robusna - sa sveobuhvatnim proverama ulaznog-važenja
    • može da vrati odgovarajuće poruke o greškama ili vraća kodove
  • dizajnirana sa svešću da će biti stavljena za nepredviđene namene

Godine 1960, e, programeri su izgradili naučne podrutinske biblioteke koje su za višekratnu upotrebu u širokom spektru inženjeringa i naučnih aplikacija. Iako ove podrutinske biblioteke ponovo koriste dobro definisane algoritme na efikasan način, one su imale ograničen domen primene. Komercijalni sajtovi rutinski stvaraju aplikacije za višekratnu upotrebu modula napisanih na Asembler-u, KOBOL, PL/1 druge i treće generacije jezika koji koriste oba sistema i korisničke aplikacione biblioteke.

Od 2010. godine, modernu višekratnu upotrebu komponente obuhvataju obe strukture podataka i algoritme koji se primenjuju na strukturama podataka. To [pojašnjenje potrebno] se nadovezuje na prethodne teorije softverskih objekata, softverske arhitekture, softverskih ramova i dezena softvera, kao i opsežne teorije objektno orijentisanog programiranja i objektno orijentisano projektovanje svih njih. Ona tvrdi da softverske komponente, kao što je ideja o hardverskoj komponenti, koja se koristi na primer u oblasti telekomunikacija,[1] može na kraju biti zamenljiva i pouzdana. S druge strane, tvrdi da je greška što se fokusira na nezavisne komponente umesto okvire (bez kojih ne bi postojala).[2]

Istorija[uredi | uredi izvor]

Ideja da softver treba da bude komponenta - izgrađena od montažnih elemenata - prvi put je istaknuta na obraćanju Daglasa Mekilroia na konferenciji o NATO softverskom inženjeringu u Garmiš-Partenkirhenu, Nemačkoj, 1968. godine, pod nazivom Masovna proizvodnja softverskih komponenti.[3] Konferencija je krenuli da se suprotstavi tzv softverskoj krizi. Sledeće uključivanje Mekilroi je bilo o cevima i filterima u Juniksu operativnom sistemu prva implementacija infrastrukture za ovu ideju.

Bred Koks od Steptone u velikoj meri definiše savremeni koncept softverskih komponenti. On ih je nazvao Softver ICs i krenuo je  da stvori infrastrukturu i tržište za ove komponente[4] izmišljanjem Objective-S programskog jezika. (On sažima ovaj stav u svojoj knjizi Objektno orijentisanog programiranja - evolutivni pristup 1986)

Softverske komponente koriste se u dva različita konteksta i dve vrste: (1.) uz komponente i delove da izgrade jednu izvršnu, ili (2.) svako izvršnu tretira kao komponentu u distribuiranom okruženju, gde komponente sarađuju međusobno koristeći internet ili intranet komunikacioni protokol za IPK (Inter proces komunikacije). Navedeni pripada bivšim vrstama.

IBM-je vodio put sa svojim sistemom objekt modelom (SOM) početkom 1990-ih. Kao reakcija Microsoft otvara put za stvarno raspoređivanje komponenti softvera sa OLE i COM.[5] Od 2010. godine postoji mnogo uspešnih modela softverskih komponenati.

Razlike iz objektno orijentisanog programiranja[uredi | uredi izvor]

Kritičari objektno orijentisanog programiranja (OOP) tvrde da softver treba da bude napisan u skladu sa mentalnim modelima stvarnih ili izmišljenih objekata koje zastupa. OOP i srodnih disciplina objektno-orijentisana analiza i objektno-orijentisanog dizajna sa fokusom na modeliranju u stvarnom svetu [uredi] interakcije i pokušava da stvori "imenice" i "glagole" koji se mogu koristiti na više čitljiv način, idealno krajnjim korisnicima, kao i od strane programera koji kodiraju to krajnjim korisnicima.

Komponentno orijentisano programiranje, s druge strane, ne pravi takve pretpostavke, i umesto toga navodi da programer treba da izgradi softver lepljenjem zajedno montažnih elemenata - slično kao i u oblasti elektronike i mehanike. Pojedini vršnjaci [ko?] će čak govoriti o modularizingu sistemimama kao softverske komponente nove paradigme programiranja. Primer za moguću paradigme: mnogi stručnjaci smatraju da evoluira potreba prilagodljiv je važnija od ponovne upotrebe, jer 80% softverskog inženjerstva se bavi održavanjem ili otpuštanjem nove verzije. Zato je poželjno da se izgradi kompleksan sistem sastavljanjem od visoko kohezivnih labava spregnutih velikih komponenti gde trošak redizajniranja svake od takvih usvojivih komponenti (ili zamena boljim komponentom) se minimizira.

Neki [ko?] tvrde da su ranije kompjuterski naučnici napravili ovu razliku, sa teorijom "pismenog programiranja" Donalda Knuta optimistički pod pretpostavkom da je sličnost između intuitivnih i formalnih modela, a Edsger Dajkstra teorija u članku okrutnosti Realli nastave informatike, koji je izjavio da je programiranje jednostavno i samo grana matematike.[6][7]

U oba oblika, ovaj pojam je doveo do mnogih akademskih rasprava [Veasel vords] o prednostima i manama ova dva pristupa i mogućih strategija za objedinjavanje oba. Neki [ko?] razmatraju različite strategije ne kao konkurente, ali kao opise istih problema sa različitih tačaka gledišta.

Jedan pristup za stvaranje softverskih komponenata zasnovan koristeći objektno-orijentisano programiranje je raspodeljeno izračunavanje. Međutim, programski interfejs zasnovan ne inherentnim podrškama distribuiranih sistema, i mnogi računarski sistemi se inherentno distribuiraju u 21. veku. Programming Interface zasnovan na OOP smislu može se produžiti do distribuiranih sistema za distribuirane modele komponent objekta; Međutim, mnogi su tvrdili u poslednjih nekoliko godina da ODMOR API ili glumac modela su pogodniji za pristup.

Arhitektura[uredi | uredi izvor]

Računar koji radi nekoliko softverskih komponenti se često naziva aplikativni server. Ova kombinacija aplikacija servera i softverskih komponenti se obično naziva raspodeljeno izračunavanje. Tipična realnom svetu primenjena je u, na primer, finansijskim aplikacijama ili poslovnim softverima.

Modeli[uredi | uredi izvor]

Model komponenta je definisanje standarda za komponentne implementacije, dokumentaciju i primenu. Primeri komponentnih modela su: Enterprise JavaBeans (EJB) modela, Component Object Model (COM). NET model i uobičajen zahtev objekta broker Arhitektura (Corba) komponenta model. Komponenta model određuje kako interfejsi treba da budu definisani i elementi koji treba da budu uključeni u definiciji interfejsa.

Tehnologije[uredi | uredi izvor]

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ Foukalas, Fotis; Ntarladimas, Yiorgos; Glentis, Aristotelis; Boufidis, Zachos (2005). „Protocol Reconfiguration Using Component-Based Design”. Distributed Applications and Interoperable Systems. Lecture Notes in Computer Science. 3543. str. 148—156. ISBN 978-3-540-26262-6. doi:10.1007/11498094_14. 
  2. ^ Wallace, Bruce (May 19, 2010). "A hole for every component, and every component in its hole". Existential Programming. There is no such thing as a Component
  3. ^ McIlroy, Malcolm Douglas (January 1969). "Mass produced software components" (PDF). Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7-11 Oct. 1968. Scientific Affairs Division, NATO. str. 79.
  4. ^ Rainer Niekamp. "Software Component Architecture" Arhivirano na sajtu Wayback Machine (28. mart 2012) (PDF). Gestión de Congresos - CIMNE/Institute for Scientific Computing, TU Braunschweig. str. 4. Pristupljeno 2011-07-29. The modern concept of a software component largely defined by Brad Cox of Stepstone, => Objective-C programming language
  5. ^ Raphael Gfeller (December 9, 2008). "Upgrading of component-based application"[mrtva veza]. HSR - Hochschule für Technik Rapperswill. str. 4. Pristupljeno 2011-07-29. 1990, IBM invents their System Object Model. 1990, as a reaction, Microsoft released OLE 1.0 OLE custom controls (OCX)
  6. ^ "Dijkstra, Wybe Edsger". Encyclopedia.com. Pristupljeno 2011-07-29. In his view, the key to a good computing science program was to consider it as a branch of mathematics.
  7. ^ Donald E. Knuth (September 1983). "Literate Programming" (PDF). Literate Programming/The Computer Journal. str. 15. Pristupljeno 2011-07-29. Thus, WEB may be only for the subset of computer scientists who like to write and to explain what they are doing. My hope is that the ability to make explanations more natural will cause more programmers to discover the joys of literate programming, because I believe it’s quite a pleasure to combine verbal and mathematical skills; but perhaps I’m hoping for too much. The fact that at least one paper has been written that is a syntactically correct ALGOL 68 program22 encourages me to persevere in my hopes for the future. Perhaps we will even one day find Pulitzer prizes awarded to computer programs.
  8. ^ MASH defines assets as people, property and information and management as monitoring, control and configuration. Presented at the 2013 IEEE IoT conference in Mountain View MASH includes a full IDE, Android client and runtime. "MASH YouTube channel"
  9. ^ A component-oriented approach is an ideal way to handle the diversity of software in consumer electronics. The Koala model, used for embedded software in TV sets, allows late binding of reusable components with no additional overhead. [1]
  10. ^ Component model for embedded devices like TV developed by Philips based on paper by van Ommering, R.: Koala, a Component Model for Consumer Electronics Product Software [2] Arhivirano na sajtu Wayback Machine (9. август 2014)
  11. ^ Arad, Cosmin (April 2013). "Programming Model and Protocols for Reconfigurable Distributed Systems" (PDF). Doctoral Dissertation. Stockholm, Sweden: KTH Royal Institute of Technology. ISBN 978-91-7501-694-8.
  12. ^ Remedy IT - AXCIOMA

Dodatna literatura[uredi | uredi izvor]


Spoljašnje veze[uredi | uredi izvor]