Sunteți pe pagina 1din 13

CAPITOLUL 2.

Complemente

O paradigm e o anumit abordare a procesului de proiectare software, care descrie cum se realizeaz
elemente de proiectare, ce metode, unelte i proceduri se aplic la fiecare faz. n acest capitol vom trata unele
probleme conexe ale ciclului de via al programelor, spre exemplu categoriile mari de metode de analiz i
proiectare, respectiv cele dou paradigme de baz: proiectarea structurat i proiectarea orientat pe obiecte. De
asemenea, vom prezenta nite problematici suplimentare, de folos n activitatea curent: despre module de
program i reguli euristice de modularizare i despre arhitecturi specifice aplicaiilor n reea.

2.1. Metode de analiz i proiectare


Aceste metode trebuie s permit partiionarea problemei ntr-o manier care s structureze detaliile n mod
ierarhic i s permit dezvoltarea reprezentrii sistemului.
Cele mai multe metode sunt dirijate de informaie. Aceasta este caracterizat prin 3 atribute: fluxul datelor,
coninutul datelor i structura acestora. Metodele sunt orientate spre urmrirea cu predilecie a unuia din atribute.
a) O abordare orientat pe fluxul datelor (dataflow) este, de exemplu metoda MASCOT (vezi cap.4).
Acesta este util cnd informatia este prelucrat secvenial i nu exist o structur de date ierarhic. n cadrul
abordrii se consider c informaia este transformat pe msur ce parcurge sistemul. Metoda se folosete mai ales
n controlul proceselor i n analiza numeric.
Schema grafic de reprezentare a fluxului de date se numete diagram de flux de date DFD. Se ntlnesc n
asemenea reprezentri diverse convenii grafice (pentru surse/consumatori de informaie, pentru transformri,
pentru depozite de date i pentru canalele de comunicaie).
b) Metode orientate pe structura datelor -> au urmatoarele caracteristici:
- identific obiecte de date numite entitai sau elemente i operaii asupra acestor obiecte numite aciuni sau
procese ;
- presupun c structura informaiei este ierarhic;
- structura datelor se reprezint folosind secvenele, seleciile i repetiiile pentru elementele de date,
printr-un fel de gramatic;
- pun la dispoziie un set de pai pentru a realiza corespondena ntre structurile de date i structurile de
program.
Aceste modele se aplic la sisteme cu structuri ierarhice de informaie: sisteme de baze de date, aplicaii de
sisteme de operare, aplicaii CAD/CAM.
n cadrul metodei nu se acord mult importan conceptului de modularitate. Un exemplu de aplicare a
metodei este metodologia Warnier-Orr.
Exemplu de diagram de entiti pentru un program care se ocup de vnzri; partea de primire comenzi

Formal sunt asemntoare cu DFD ns cercurile sunt productori sau consumatori nu transformri.
Perechea cerere-rspuns din aceste metodologii se numete tranzacie (e specific bazelor de date).
Pentru dezvoltarea aplicaiei se poate ntocmi diagrama de linii de asamblare (ALD). La fiecare pas din
ALD un element de informaie (spre exemplu informaia dintr-o comand) se reunete cu o procedur pentru a
produce elementul de informaie al pasului urmtor (mai sus n ierarhie).

expeditie

&
proces generare
nota plata

Info. comanda
Nr. comanda

&
&
proces asigurare comanda
proces expeditie

Rezultatele aplicaiei se pot reprezenta prin prototipuri pe hrtie pentru ieirea sistemului.

2.2. Proiectarea orientat pe obiecte


Aceast abordare inverseaz metodologiile funcionale, fragile mai ales la reutilizare (la mici
schimbri ale cerinelor trebuie restructurat masiv ntreg sistemul). O abordare orientat spre obiecte (AOO) se
focalizeaz pe obiectele din domenial aplicaiei, adic entitile independente care modeleaz realitatea. La
aceste obiecte se stabilesc ulterior proceduri de acces. Termenul orientat spre obiecte nseamn organizarea
programului ca o colecie de obiecte, fiecare nglobnd structuri de date i avnd asociat un anumit
comportament. n programarea structurat, structurile de date i comportamentul entitilor nu sunt conectate
dect (relativ) slab.
Tehnicile Programrii Orientate pe obiecte (POO), interconectarea elementelor de date i operaiile de
prelucrare asupra acestora ntr-un mod care modularizeaz nu numai prelucrarea ca n programele structurate ci
i informaia de prelucrat.
Aceast metod aplic explicit trei principii ale ingineriei programrii: - abstractizarea, ascunderea,
modularizarea. Pune la dispoziie un mecanism care permite obinerea celor 3 caracteristici fr complicaii sau
compromisuri.
Comport urmtoarele date:
1. Definirea problemei
2. Dezvoltarea unei strategii pentru implementarea prin program a problemelor din lumea real
3. Formalizeaz strategii prin:
a) identific obiectele i atributele lor
b) identific operaiile care se pot aplica obiectelor
c) stabilete interfaa prin indicarea relaiilor dintre obiecte i operaii
d) decizii asupra problemelor de proiectare n detaliu pentru a furniza o descriere pentru

implementare pentru obiecte.


4. Aplicarea recursiv a pailor 2, 3, 4 pn la ncheierea proiectului.
Este implementat de regul n limbaje precum C++, C# sau JAVA (mai sunt i altele, mai puin
utilizate). Principalele platforme tehnologice din spatele acestor limbaje sunt Microsoft.NET pentru C# i C++
i Eclipse (IBM) pentru JAVA.
Scopul POO este de a mpinge spre utilizator efortul de proiectare dnd posibilitatea unei largi game de
utilizatori de a-i avea propriul software, dezvoltat exact dup propriile necesiti, dar totodat permind
accesul la o gam extrem de larg de elemente de program (ierarhii de clase) foarte bine elaborate i testate,
care implementeaz majoritatea funcionalitilor i comportamentelor dorite de utilizator (deci POO
ncurajeaz puternic reutilizarea).
Dup unii autori, o teorie tiinific (Thomas Kuhn-Structura revoluiilor tiinifice) poate fi privit
ca o paradigm despre modul nostru de a privi lumea. O teorie evolueaz pentru a explica aparentele excepii de
la faptele explicate satisfctor de respectiva teorie, pn se ajunge la un moment de criz, cnd excepiile nu
mai ajung s fie explicate. n aceast situaie, adepii teoriei vechi adaug noi caracteristici eteroclite pentru a
explica excepiile, iar reformatorii, adepii unor teorii noi, construiesc un nou model. Pn cnd noua teorie se
maturizeaz i ajunge s domine, ntre cele dou tabere nu exist un dialog coerent. n aceast perspectiv
adepii tehnicilor OO (TOO) i privesc pe ceilali ca producnd sisteme greu de modificat sau reparat,
concentrndu-se prea insistent pe eficiena programelor, n timp ce tabra cealalt consider c TOO conduc
spre programe mari i lente.
n prezent, TOO s-au maturizat i nu se mai pune problema unui conflict ntre adepii diverselor
paradigme. Fiecare abordare are domeniul su predilect. Astfel, pentru aplicaii care trebuie s fie foarte rapide
se mai scriu programe prin metode altele dect OO. Pe de alt parte, performanele aplicaiilor nu mai depind
semnificativ, relativ la cerine, de aspectele structurale ale programelor, datorit creterii performanelor
sistemelor de calcul. De aceea, dezavantajul codului lent nu mai este important.
ntr-o perspectiv simplificatoare, un program este considerat un sistem alctuit dintr-o cutie neagr
avnd intrri, care sufer transformri, i diverse ieiri. n aceasta abordare, dou programe care traduc identic
intrrile n ieiri, pot fi comparate doar prin alte criterii referitoare la comportamentul programelor, spre
exemplu dup dimensiuni tradiionale ale programelor: corectitudine, tratarea erorilor i excepiilor, eficiena,
portabilitatea i independena de periferice. Exist ns dou dimensiuni de apreciere care nu se refer la
comportare: mentenabilitatea (proprietatea unui program de a fi uor de schimbat pentru a fi eliminate defecte)
i extensibilitatea (proprietatea ca un program s poat fi modificat pentru a trata noi clase de intrri).
Paradigma OO este potrivit pentru a ajuta la mbuntirea celor dou caliti non-comportamentale.
Abordarea orientat pe obiecte (AOO) nu refuz modelul cutiei negre dar reduce granularitatea (fineea
mpririi n cutii negre) de la program la obiect. Obiectele dintr-un program devin ele nsele cutii negre ce
conin informaii i prezint o anumit comportare. Reprezentarea datelor sau comportamentul unui obiect dat
pot fi modificate independent.
n AOO criteriile de comportare a programului sunt doar o parte a criteriilor folosite. Accentul este pus
pe identificarea obiectelor i pe modelarea acestor obiecte cu comportarea lor i cu relaiile ntre ele. O abordare
de felul acesta deplaseaz modelarea comportrii lumii la modelarea obiectelor existente n aceast lume i a
comportrii lor individuale, n sens metafizic clasic (Aristotel). Un programator care implementeaz un
program OO poate determina ct de uor de ntreinut i extins este un program, prin aprecierea izolrii
obiectelor unele de altele i prin aflarea a ce este cerut pentru a aduga un obiect nou.

2.3. Proiectarea structurat


Este metoda "clasic" de programare, bazat pe descompunerea problemei n probleme tot mai simple
(abordarea top-down).
Unii definesc "Proiectarea structurat" ca ansamblul de reguli de proiectare n modul cel mai bun cu
putin pentru componentele din sistem precum i pentru legturile i interdependenele dintre acestea.
Alii prefer s considere c "Proiectarea structurat" const n a decide care componente trebuie
utilizate i n ce mod acestea trebuie conectate pentru a se soluiona o problem bine definit.

2.3.1. Programarea structurat


Proiectarea structurat este strns legat de programarea structurat. Aceasta este un mod specific de
organizare i codificare a programului astfel nct acesta s fie uor de scris, de depanat sau modificat. Ea se
bazeaz pe combinarea unor structuri simple, iterate ntr-un mod logic i clar, ceea ce permite abordarea
eficient a funciilor la orice grad de complexitate. Scopul proiectrii structurate const n stabilirea structurii
programelor n vederea obinerii de programe uor de scris, de depanat i modificat.
Limbajul PASCAL este ideal pentru aceast structurare (cu toate acestea, PASCAL nu mai e aa folosit,
generalizndu-se mai degrab utilizarea limbajului C, chiar i sau cteodat mai ales n companiile care
dezvolt aplicaii pentru sisteme dedicate Continental Automotive sau Alcatel-Lucent). Programarea
structurat pune accent pe analiza funcional, adic pe stabilirea funciilor sistemului i apoi descompunerea
fiecruia, prin abordare top-down.
Iat cteva elemente ale programrii structurate ("reet)" :
- programarea fr instrucie de salt necondiionat;
- programarea de sus n jos -> top-down (aceasta presupune descompunerea unei probleme de sus n
jos, prin nlocuirea fiecrei subprobleme cu mai multe, mai simple, acestea la rndul lor fiind
descompuse mai departe, .a.m.d., pn la nivelul instruciilor)
- controlul complexitii prin teorie i disciplin
- utilizarea n program doar a structurilor de control fundamentale: blocurilor de procesare, decizie i
reunire. Exist chiar o teorem n teoria general a programelor care afirm c orice program poate
fi transpus, prin eventuala introducere a unor variabile, aciuni i teste suplimentare, ntr-o schem
logic structurat (care s conin deci doar structuri de control fundamentale, iar din fiecare bucl
s avem doar o singur ieire).
Abordarea structurat este ntr-un fel modul natural de a gndi inginerete. Unii ingineri software cad
n pcatul ignorrii aspectelor specifice programrii structurate, fiind extrem de preocupai s fie buni
programatori n paradigma POO. Se ajunge la paradoxul c respectivii pot realiza uor programe complexe
orientate pe obiecte dar nu sunt n stare s implementeze un algoritm de calcul care presupune o reprezentare
sub forma unei scheme logice. Pentru a fi un inginer sofware complet, trebuie ca respectivul s i dezvolte
inclusiv abiliti de nelegere structurat a realitii.

2.3.2.

Cuplarea modulelor

Elementele componente ale sistemului de programe se numesc module (v. Modularitatea ca principiu al
IP). Intre elementele componente exist conexiuni. O conexiune este referirea n interiorul unui modul la alt
modul (spre exemplu, prin identificatorul modulului referit).
Modulele de program trebuie s fie interdependente ntr-un grad c mai mic cu putin. Msura acestei
interdependene se numete cuplare. Aceasta exprim gradul n care trebuie cunoscut un modul n vederea
asigurrii unei funcionaliti corecte a modulului interconectat. Conexiunea este minimal dac la apelarea
unui modul i se transmite doar adresa la care rezultatele trebuie returnate. De obicei ntre module exist o
conexiune normal, adic modulul are mai multe intrri, fiecare intrare fiind minimal n raport cu transferul
de date, iar modulul apelat poate s cedeze controlul modulului apelant ntr-un punct oarecare, indicat de
modulul apelant la activare. Implicit, vor exista i conexiuni patologice (altfel dect normale). Acestea cresc
gradul de cuplare i sunt de evitat.
Gradul de cuplare depinde de numrul de argumente transmise, dac acestea sunt date sau comenzi
(acestea din urm produc un cuplaj mai strns deoarece implic decizii n modulul destinatar al comenzii). Nu
ntotdeauna cuplarea scade cu numrul de conexiuni ntre module (spre exemplu un numr mai mic de comenzi
produce un cuplaj mai strns dect un numr mai mare de variabile oarecare).
n practic se impune tendina de cuplare intrare/ieire, cu coninut ct mai redus de comenzi. Astfel,
modulele sunt cuplate ntre ele prin legarea ieirilor modulului apelant la intrrile modulului apelat.
Cuplarea se poate realiza i prin zone comune de date. Aceast metod este de evitat (desigur n
msura n care este posibil) ntruct proasta funcionare a unuia din module afecteaz funcioanrea tuturor
celorlalte. De aceea, dac nu se poate evita utilizarea acestor zone comune, acestea se partiioneaz din punct de
vedere logic n zone mai mici, utilizate de un numr redus de module.

2.3.3. Reguli euristice de proiectare structurat

Aceste principii au rezultat din experien, din observaii empirice (bun-sim tehnic):
a. dimensiunea modulului. Ideal, elementele unui modul de program ar trebui s fie caracterizate de
coeziune funcional, adic acesta s conin elementele necesare realizrii funciei propuse. Practica
arat c majoritatea funciilor pot fi realizate cu module de 20-80 instrucii. Dac numrul de instrucii
este mai mic de 15-20, modulul se include n alt modul.
b. fan-out este mulimea modulelor asupra crora acesta i exercit controlul (deci modulele de la
nivelul ierarhic inferior). De obicei se consider c acesta poate fi maxim 7. Dac crete peste 9 (cnd se
manifest suprtor efectul pancaking plcint, adic distribuire, mprtiere excesiv) se impune
restructurarea programului. La un fan-out sub 3-4 se recomand includerea nivelului ierarhic inferior n
modulul de la nivelul ierarhic superior
c. fan-in este numrul de module ce utilizeaz un modul dat. Acesta trebuie corelat cu dimensiunea
modulului n vederea optimizrii raportului modularizare/timp de execuie.
d. relaiile dintre intrri i comenzi se recomand a se crea sisteme n care nu exist module la nivelul
ierarhic inferior care condiioneaz activitatea unui modul la nivelul ierarhic superior.
Dac apar astfel de situaii, trebuie astfel restructurat sistemul nct elementele de decizie s avanseze n
ierarhia modulelor pentru a se putea respecta regula enunat.

2.4.

Modele arhitecturale. Modelul Client/Server

Toate organizaiile din ziua de azi, guvernamentale, economice i majoritatea ntreprinderilor, mari sau
mici, recunosc rolul central pe care aplicaiile software l au n cadrul lor, aplicaiile avnd rolul reducerii
costurilor i mbuntirii serviciilor fat de competiie. Aceast dezvoltare i necesitatea utilizrii pe o arie
mare a unor date de interes comun a dus la apariia, utilizarea i proiectarea modelului Client/Server, care ofer
date distribuite, portabilitate ntre platforme i un acces standardizat la resurse.
Termenul de Client/Server provine de la metoda tradiional de accesare a unui computer central numit
server de ctre computere aflate la distan sau clienti intr-o infrastructur de reea. Severele utilizeaz baze de
date relaionale n stocarea i ntreinerea datelor ntre care exist referine. Aceste referine sunt meninute
printr-o tehnologie denumit integritate referenial (referential integrity) care ofer mecanisme care acioneaz
asupra datelor (trigger) i proceduri de stocare (stored procedure).
Acest model este o combinaie a trei tehnologii: sistemul relaional de management al bazelor de date
(DBMS), reeaua i interfata client (bazat pe GUI/PC). Fiecare element contribuie n funcionarea platformei
avnd rolul su, dar independent n execuia funciilor sale.
Foarte mult lume consider clientul i serverul ca fiind dou entiti hardware, dar de fapt sunt entiti
software. Trebuie neles c modelul Client/Server implic o entitate software (clientul) care efectueaz cereri,
acestea fiind ndeplinite de o alt entitate software (serverul). Clientul este cel ce transmite o cerere server-ului,
acesta o interpreteaz i apoi o efectueaz. Pentru a putea ndeplini cererea serverul poate referi o surs de
informaie (baze de date), s efectueze procesri asupra datelor, s controleze periferice sau s efectueze cereri
adiionale altor servere. n foarte multe arhitecturi, un client poate face cereri la multiple servere i un server
poate deservi mai multi clieni.
Relaia ntre client i server este una de comand/control, clientul iniiaz cererea i serverul este cel ce
o ndeplineste transmind rezultatul clientului, aplicaia fiind procesat prin divizarea ei ntre cele dou entiti
iar transferul de date este bidirectional. Un server nu iniializeaz niciodat un dialog cu clienii. Clientul poate
funciona pe un server hardware i s efectueze cereri de la un server care ruleaz pe un alt server hardware sau
pe un PC sau clientul i serverul pot funciona pe acelasi computer.
Spre deosebire de un sistem file/server n care datele sunt aduse de pe file server pentru a fi procesate pe
o masin local n acest sistem comenzile sunt transmise asupra bazelor de date localizate pe server, rezultatul
fiind transmis napoi clientului pentru a fi vizualizat.

Arhitectura afecteaz toate aspectele software, ea trebuie s ia n considerare complexitatea aplicaiei,


nivelul de integrare i interfaare cerut, numrul utilizatorilor, rspndirea lor geografic natura reelelor i toate
tipurile de tranzacii necesare nainte de a decide tipul arhitecturii.
De asemenea alegerea arhitecturii afecteaz timpul de dezvoltare, flexibilitatea precum i ntretinerea
aplicaiei. La majoritatea aplicatiilor end user se urmreste: prezentare, procesare i date. Arhitecturile
Client/Server definesc cum aceste trei componente sunt mprite intre entitile software i distribuite n reea,
exist o varietate de moduri cum pot fii divizate i implementate, utilizarea unor astfel de arhitecturi putnd
aduce multe beneficii n viitor companiei permitnd adaptarea la diferite standarde i tehnologii.

Cteva din caracteristicile acestei arhitecturi sunt:


Centralizarea informaiei - ntr-un astfel de mediu , datele sunt stocate pe un server central i exista un singur
punct de control care administreaz cererile aplicaiilor i platformelor. Aceste servere de baze de
date utilizeaz un sistem de management al bazelor de date (DBMS) pentru a defini, stoca i
manipula date .Serverul este generic; programatorii neavnd nevoie s cunoasc un limbaj anume
pentru a accesa date. Utiliznd tehnicile de identificare o organizaie poate crea magazii de date de
la diferite servere distribuite n diferite zone geografice .Aceasta tehnic maximizeaz
performantele fr a compromite modelul centralizat i reduce probabilitatea existenei de date
redundante n aplicaii.
Serverul procesor central - prelund acest avantaj , organizaiile pot reduce procesarea redundant prin
utilizarea procedurilor trigger i de stocare. Server-ul este orientat n procese standard ca : meninerea unor
reguli, validri, i referine de integritate iar prin intermediul funciilor de stocare pe un server comun datele pot
fi manipulate corect din punct de vedere logic i viabile pentru o varietate de limbaje i unelte ale lor.
Performan - serverul este un computer dedicat s proceseze un set limitat de cereri de la clienti. Singura sa
functie este s proceseze cererile asupra bazelor sale de date. SQL ofer facilitti eficient de
utilizare a traficului in reea deoarece doar subseturi ale datelor sunt transmise n reea , n plus
serverele i DBMS sunt desemnate s gestioneze baze de date masive fr o degradare simtitoare a
performantelor.
Securitate - serverele ce lucreaz pe platforme ca UNIX, Linux , Windows sau altele pot oferi o mai mare
securitate pentru managementul bazelor de date in comparaie cu file server-ele standard.
Mecanismele de duplexing, mirroring i copiere permise administratorilor asigur evitarea
dezastrelor, de asemenea aceste baze de date permit definirea de useri i parole care permit
evitarea accesului unor persoane neautorizate.
Referitor la costurile unor astfel de arhitecturi, server-ele sunt cele ce necesit procesoare rapide,
memorie, hard disc-uri mari i un sistem de operare special. Licentierea, instalarea i ntretinerea unor sisteme
ca Oracle, Sybase sau Informix necesit sute de mii de Euro iar dezvoltarea unor aplicaii necesit memorie,
masini noi i noi sisteme de operare. Cu toate acestea n prezent multe organizatii s-au acomodat foarte usor

acestui mediu client/server care ofer o excelent infrastructur pentru a asigura informatie organizatiei
asigurnd integritate, vitez i securitate.
Cele mai populare tipuri de arhitecturi sunt cu doua entiti(two-tier) i cu trei(three-tier).
Arhitectura two-tier
n aceast implementare, cele trei componente ale unei aplicaii (prezentare, procesare i date) sunt
divizate ntre dou entiti (tiers): codul aplicatiei client i baza de date server. O aplicatie client dezvolt un
limbaj i un mecanism de interschimb pentru a transmite cererea server-ului. Prezentarea este detinut n
exclusivitate de client, procesarea este mprtit ntre client i server i datele sunt stocate i accesate de pe
server. PC-ul client si asum ntreaga responsabilitate a functionrii logice a aplicatiei, timp n care motorul
bazei de date verific integritatea. ntr-o astfel de topologie motorul datelor (data engine) este cel ce proceseaz
cererile clientului, limbajul utilizat fiind o form a SQL, transmiterea unei cereri presupune c aplicatia client s
cunoasc sintaxa serverului sau aceasta s fie tradus printr-o aplicatie (API), totodat s se cunoasc serverul,
cum sunt organizate datele i denumirea lor. Datele transmise clientului pot fi manipulate de acesta cum
doreste, datele de pe server fiind centralizate. Aceste medii detin o varietate de structuri de date, totodat aceste
arhitecturi bine n medii eterogene, aplicatia client detinnd controlul orice modificare care apare n cadrul unui
sistem ducnd doar la modificarea aplicatiei client.
Sistemul de securitate ntr-un astfel de mediu este complicat deoarece un user trebuie s detin parole
pentru fiecare server SQL, iar cresterea utilizatorilor poate duce la compromiterea securittii bazelor aflate pe
server. n prezent majoritatea aplicaiilor client/server sunt proiectate s lucreze cu produse middleware care
duc la cresterea securittii, ele detinnd unelte de acces la date.

Arhitectura three-tier
Aceast arhitectur a aprut datorit limitrilor arhitecturii precedente, ea aduce ca noutate separarea
prezentrii, procesrii i datelor n entiti (tiers) software distincte. Aceleasi tipuri de unelte care n arhitectura
precedent erau utilizate pentru prezentare, acum ele sunt dedicate doar pentru prezentare.
Cnd clientul solicit o cerere pentru acces la date sau o procesare a datelor, cererea se face la nivelul de
mijloc care este un server. Acest nivel poate efectua procesri de date sau cereri asemeni unui client la alte
servere. Serverele din nivelul mijlociu pot fi multi-treaded i pot fi accesate de clienti multipli, asemeni unei
aplicaii separate. Sistemele three-tier pot fi implementate utiliznd o varietate de tehnologii, mecanismul de
cerere al clientului de la server n majoritatea sistemelor este utilizat apelul procedurilor remote(RPC). Apelul
unor astfel de proceduri de ctre client asigur sistemului o flexibilitate foarte mare n comparaie cu apelurile
SQL efectuate de client n arhitectura precedent, aceasta datorit faptului n care parametrii necesari cererii
efectuate de client sunt foarte usor transmise i specificatiile structurilor de date care preiau datele primite (if
any), acest lucru permitnd organizatiilor sau structurilor back-end (aflate pe servere) s poat s-si modifice
configurrile n sistem, datele s poat fi organizate ierarhic, relational sau obiectual permind firmelor s
simplifice trecerea la noi tehnologii legate de organizarea bazelor de date, fr a fi nevoie de modificri la
nivelul aplicaiei client.
O exemplificare a acestei abordri este prezentat n figura urmtoare:

De regul, cele 3 nivele sunt stratificare astfel: prezentare (pentru interaciunea cu clienii), logica
aplicaiei (business logic), respectiv acces la date. n figura umtoare, sunt exemplificate i posibile tehnologii
aferente fiecrui nivel:

La nivelele de acces la date i de logic, de fapt pot coexista mai multe servere (pentru sisteme
complexe, cu ncrcare mare), aa cum se prezint n figura urmtoare:

Un alt avantaj al acestei arhitecturi este acela c avnd entiti software separate (acces la date, respectiv
logica aplicaiei) se poate realiza o alocare flexibil a resurselor. Entitile mijlocii (servere) pot fi alocate
dinamic i repartizate n funcie de necesittile firmei. Traficul de reea este redus avnd server-le nivelului
mijlociu, prelund date de la structuri precise nainte s le distribuie la clienti n reea, PC-urile client fiind
dedicate doar prezentrii, memoria i discurile fiind reduse.
Din punct de vedere al dezvoltrii software modularitatea ofer posibilitatea introducerii simple a unor
noi module, precum i reutilizarea acestora n aplicaii asemntoare, astfel reducndu-se costurile.
n concluzie aceast arhitectur ofer o via lung aplicaiilor, indiferent de modificrile aprute n
afaceri, cod reutilizabil, ntreinere uoara i uurin n migrarea ctre noi platforme server i medii.

2.5. Middleware
2.5.1. Definiie i obiectiv
Sub denumirea de middleware (marf din mijloc) se nelege un software de conectivitate care const dintr-un
set de servicii care permit rularea proceselor multiple pe una sau mai multe echipamente/maini n vederea
interaciunii de-a lungul unei reele. Middleware este esenial pentru procesul de migrare de pe aplicaii de tip
mainframe ctre aplicaii de tip client/server i pentru comunicarea de-a lungul platformelor eterogene. Aceast
tehnologie s-a dezvoltat n anii 90 pentru a asigura interoperabilitate n procesul de trecere la arhitecturi de tip
client/server.
Cele mai cunoscute iniiative n middleware sunt:
Distributed Computing Environment (DCE) de la Open Software Foundation's Object Management Group
Common Object Request Broker Architecture (CORBA),
COM/DCOM, Microsoft (Component Object Model (COM), DCOM, and Related Capabilities)

2.5.2. Descriere
Serviciile middleware sunt ansambluri de aplicaii software distribuite care fac legtura ntre aplicaii i
sistemul de operare i serviciile de reea ntr-un nod al reelei.

Utilizarea Middleware
Serviciile middleware furnizeaz un set de Application Programming Interfaces (API) care ofer o
funcionalitate mai mare dect sistemul de operare i serviciile de reea, asigurnd
ca o aplicaie s apar plasat transparent n reea, putnd interaciona cu o alt aplicaie sau serviciu
ca aplicaiile s fie disponibile i sigure
ca o aplicaie s fie scalabil, dar fr a-i pierde funcionalitatea
Middleware poate fi ntlnit sub urmtoarele forme:
monitorizri ale tranzaciilor de procesare (TP, Transaction Processing Monitor Technology) furnizeaz
instrumente i medii de dezvoltare i punere n practic a aplicaiilor distribuite;
apeluri de proceduri la distan (RPC, Remote Procedure Call) permite ca logica unei aplicaii s fie
distribuit de-a lungul reelei. Logica programelor pe sisteme aflate la distan poate fi executat simplu
doar prin apelarea unei rutine;
Middleware orientat pe mesaje (MOM, Message-Oriented Middleware) furnizeaz schimbul de date
program-ctre-program, permind crearea aplicaiilor distribuite. MOM este asemntor e-mail-ului prin
faptul c este asincron i necesit ca la recepia mesajelor s fie interpretat nelesul acestora i s aib loc
aciunile potrivite;
Intermediari de cerere obiect (ORBs, Object Request Brokers) permit ca obiectele cuprinse ntr-o aplicaie
s fie distribuite i accesibile de-a lungul reelelor eterogene.
Midlleware se bazeaz pe tehnologii informaionale moderne cum sunt XML, SOAP, servicii Web i SOA. Este
o parte din software care conecteaz dou sau mai multe aplicaii software astfel nct acestea s fac schimb
de date.
Programatorii nu vor trebui s nvee noi limbaje de programare pentru a lucra cu tehnologia middleware, ci pot
folosi limbajele cu care sunt familiarizai, cum sunt C++ sau Java. Exist 3 modaliti principale prin care se
poate folosi middleware cu limbajele existente. Prima este cea n care sistemul care folosete middleware
furnizeaz o bibliotec de funcii care vor fi apelate pentru a utiliza middleware. O a doua modalitate const n
utilizarea unui limbaj de definire a unei interfee externe (IDL, Interface Definition Language); n aceast
abordare, fiierul IDL descrie interfaa componentei aflate la distan i se utilizeaz o mapare de la IDL la
limbajul de programare pentru codul utilizat de ctre programator. Cea de a treia modalitate const n
posibilitatea ca limbajul i sistemul runtime s asigure suportul nativ al distribuiei; spre exemplu, RMI
(Remote Method Invocation) din Java.

2.5.3. Utilizare
Serviciile middleware rezolv problemele de conectare i interoperabilitate n multe aplicaii, dar nu sunt un
panaceu. Exist limitri ale punerii n practic, datorate distanei dintre principii i punerea lor n practic.
Multe servicii middleware folosesc implementri de firm, determinnd dependena aplicaiilor de produsele
unui singur vnztor. Numrul mare de servicii middleware reprezint n sine o barier n utilizarea acestora.
Pentru a avea un mediu de prelucrare simplu de utilizat dezvoltatorii trebuie s selecteze un numr redus de
servicii care s satisfac funcionalitatea. Chiar dac serviciile middleware cresc gradul de abstractizare n
programarea aplicaiilor distribuite, nc mai rmn multe sarcini de proiectare n seama celui care dezvolt
aplicaia (spre exemplu, dezvoltatorul trebuie s decid ce funcionalitate s asocieze cu clientul respectiv
serverul aplicaiei distribuite). Pentru a obine rezultate bune este necesar nelegerea problemelor aplicaiei i
valoarea pe care pot s o aib serviciile middleware pentru a ajuta aplicaia distribuit.
Pentru a determina tipurile de servicii middleware cerute de ctre situaie dezvoltatorul trebuie s identifice
funciile necesare, care pot fi ncadrate n urmtoarele clase:
Servicii pentru sisteme distribuite care includ comunicare critic, program-ctre-program i servicii de
management al datelor. Acest gen de servicii include RPC, MOM i ORB.
Servicii care fac posibile aplicaiile, care dau acces aplicaiilor la servicii distribuite i la reeaua suport.
Acest tip de servicii includ TP i servicii de baze de date (spre exemplu SQL, Structured Query
Language).
Servicii middleware de management care permit ca aplicaiile i funciile de sistem s fie monitorizate
continuu pentru a asigura performane optime ale mediului distribuit
Exist deja un numr semnificativ de servicii de tip middleware i de furnizori pentru acestea. Aplicaiile de tip
middleware vor continua s se nmuleasc odat cu creterea reelelor eterogene.
Un exemplu de aplicaie middleware este sistemul de gestionare a transportului de mrfuri pentru
compania Delta Airlines, care utilizeaz tehnologia middleware pentru a conecta
40 000 de terminale
din 32 de ri folosind servicii Unix i IBM.
Costurile legate de utilizarea tehnologiei middleware (spre exemplu, costul licenelor) n cadrul costurilor legate
de dezvoltarea unui sistem sunt dependente de sistemul de operare i de tipurile platformelor. Implementrile
middleware sunt unice i depind de furnizor. Aceasta nseamn o dependen de furnizor n ceea ce privete
suportul tehnic i ntreinerea i de asemenea pentru viitoare mbuntiri. Aceast dependen poate avea efecte
negative asupra flexibilitii sistemului i asupra mentenabilitii acestuia. Totui, atunci cnd se face evaluarea
costului dezvoltrii unei soluii middleware unice, dezvoltatorul i cel care face ntreinerea pot considera ca i
acceptabil acest efect relativ negativ.
2.5.4. Tipuri de middleware
n continuare sunt prezentate cteva tipuri de middleware, fr a acoperi ntreaga gama de aplicaii care este
extrem de larg.
Middleware orientat pe mesaje (Message Oriented Middleware) o categorie larg care include stocare
asincron i posibiliti de retransmitere a mesajelor ntre aplicaii i de asemenea include brokeri de integrare
care realizeaz transformri de mesaje i rutri sau coordonare de procese de business.
Middleware Obiect (Object Middleware) categorie format din brokeri asociai cu cereri de obiecte (Object
Request Borkers).
RPC Middleware (Remote Procedure Call Middleware ) categorie care susine procedurile de apel pe
sisteme la distan. Spre deosebire de MOM, RPC reprezint interaciunile sincrone dintre sisteme i este uzual
folosit n cadrul unei aplicaii.
Database Middleware permite accesul direct la structuri de date i asigur interaciunea direct cu bazele de
date. Exist gateways pentru baze de date i o varietate de opiuni de conectare. Pachetele ETL (Extract,
Transform, Load) sunt incluse n aceast categorie.
Middleware de tip tranzacie categorie care include monitorizri de procese de tranzacie tradiionale (TPM,
Transaction Processing Monitors) i servere de aplicaii Web.
Portaluri exist surse n literatur care includ i acest gen de aplicaii n middleware (enterprise portal servers)
deoarece acestea fcailiteaz integrare de tip front end, permind interaciunea ntre desktop-ul utilizatorului
i sistemele i serviciile back end.

2.6. Arhitectura orientat pe servicii


Aceast concept (Service Oriented Architecture SOA) este o abordare bazat pe standarde, pentru a permite
gestionarea serviciilor fcute disponibile de diverse pachete software, care s permit astfel refolosire i
reconfigurare uoar.
Acest concept, promovat de mai multe companii (inclusiv IBM i Microsoft) permite utilizarea n aplicaii a
software-ului elaborat de mai multe companii, asigurndu-se astfel interoperabilitatea. Standardele SOA includ
protocoale de comunicaie cu serviciile, descrieri de date, definirile mecanismelor utilizate, regulile de utilizare
etc.
Serviciile sunt scrise pe baza unor protocoale comune de comunicaie, interschimbabile, pentru a ocoli astfel
problemele ridicate de interfeele specifice aplicaiilor, care variaz i de la platform la platform, sau odat cu
limbajul de programare sau sistemul de operare.
Serviciile asigur un mecanism de rspuns la ntrebrile pe care o aplicaie le adreseaz alteia, pentru a cere
informaii.
Exemple din ngrijirea sntii: Aflarea adresei pacientului, D-mi rezultatele analizelor de
laborator ale acestui pacient sau Caut costul acestei reete
Multe organizaii definesc soluiile lor bazate pe servicii n termeni de servicii i conexiuni. Astfel, un serviciu
este n general implementat ca o entitate software grosier (course-grained), accesibil, care exist ntr-o
singur instan i interacioneaz cu aplicaiile sau alte servicii prin intermediul unui cuplaj slab, bazat pe un
model de comunicare prin mesaje:

Un serviciu este o funciune bine definit, auto-suficient i nu depinde de context, stare sau alte servicii.
Serviciile sunt ceea ce serviciile Web (Web Services) conecteaz mpreun. Un serviciu este captul unei
conexiuni. Abordarea SOA reprezint o evoluie n cadrul abordrilor de procesare distribuit care se distinge
prin aceea c face o separare strict a responsabilitilor i intereselor (concerns) prin utilizarea unor interfee
externe standard. n timp ce principiile nu sunt legate de o tehnologie anume, SOA este de regul implementat
prin Servicii Web deoarece acest cadru tehnologic ofer condiii pentru aplicarea celor mai importante principii
(separarea responsabilitilor i intereselor si definirea standardelor de interfa) ale SOA.
Cei 7 pai de utilizare n practic a conceptelor asociate SOA sunt:
1. Crearea/Expunerea Serviciilor
2. nregistrarea Serviciilor
3. Securizarea Serviciilor
4. Gestiunea (monitorizarea) Serviciilor
5. Medierea i Virtualizarea Serviciilor
6. Administrarea SOA
7. Integrarea Servicilor
SOA exprim o perspectiv asupra arhitecturii software care definete utilizarea seviciilor care corespund
cerinelor utilizatorilor. ntr-un mediu SOA, resursele din reea sunt fcute disponibile ca servicii independente
care pot fi accesate fr ca utilizatorul s cunoasc detalii despre implementarea specific platformei. Uzual,
SOA se bazeaz pe standarde de acces specifice Serviciilor WEB (SOAP Simple Object Access Protocol,
REST) care sunt folosite pe scar larg de industria software. Interfeele Serviciilor WEB sunt descrise n
termeni de WSDL (Web Services Description Language) pentru a putea fi nregistrate n directori publici i
cutate n depozite UDDI (Universal Description, Discovery and Integration repositories). Suportul pentru
transportul informaiei este formatul XML (Extensible Markup Language).

Tehnologii posibile pentru implementare sunt:

SOAP (Simple Object Access Protocol utilizat de serviciile WEB n Microsoft.NET), RPC (Remote
Procedure Call)

REST

DCOM

CORBA

Web services

DDS

Java RMI

WCF (implementarea Microsoft's a serviciilor WEB, acum parte a WCF Windows Communication
Services)

Apache Thrift

SORCER

Manifesto SOA:
The manifesto provides a broad definition of SOA, the values it represents for the signatories and some guiding
principles. The manifesto prioritizes:

Business value over technical strategy

Strategic goals over project-specific benefits

Intrinsic interoperability over custom integration

Shared services over specific-purpose implementations

Flexibility over optimization

Evolutionary refinement over pursuit of initial perfection

S-ar putea să vă placă și