Documente Academic
Documente Profesional
Documente Cultură
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.
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.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.
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.
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.
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.
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).
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: