Documente Academic
Documente Profesional
Documente Cultură
Ingineria Soft - D Bocu PDF
Ingineria Soft - D Bocu PDF
INGINERIA SOFTULUI
Dorin Bocu
Cuvnt nainte
Dei relativ nou, lumea informaticii impune respect prin problemele formulate,
conceptele i teoriile dezvoltate pentru rezolvarea acestor probleme.
Fundamentarea teoretic a universului informaional aflat n zona de impact cu
calculatorul este un exemplu de demers n spiral a crui dinamic i profunzime este greu de
egalat n alte domenii.
Permanenta schimbare a infrastructurilor informaionale orientate pe calculator
menine la cote de alert maxim efortul de redefinire a paradigmelor teoreticoaplicative din lumea softului.
Aproape toate tipurile de activitate uman pot fi organizate i desfurate cu totul altfel n
prezena calculatorului. Motivul acceptrii calculatorului n preajma omului sau n locul
acestuia? Operativitate, precizie, obiectivitate.
Despre consecinele n plan estetic i moral ale rtcirii omului n sofisticata jungl a
universului informaional planetar (n curs de configurare) este, probabil, prematur s
discutm i nici nu ne propunem aa ceva n aceast lucrare.
Desprinderea omului de condiiile lui naturale de via a nceput de mult, n preistorie,
odat cu descoperirea focului. n zilele noastre aceast desprindere continu cu o vitez (sau
grab) care, uneori, ne pune pe gnduri.
Din aceast uria epopee a desprinderii omului de natur ne propunem s analizm unele
aspecte care se refer, n fond, la nevoia acestuia de a crea o realitate virtual care s-l
ajute, s-l deconecteze i, dac se poate, s-l substitue.
Acest joc n care s-au angajat energii uriae are toate ansele s dureze deoarece multe
dintre abilitile omului sunt greu de modelat i, spre deliciul cercettorilor, unele dintre ele
aproape insurmontabile.
Aceast lucrare ncearc un lucru destul de dificil (innd cont de marea diversitate a
abordrilor n literatura de specialitate) i anume identificarea bazelor ingineriei sistemelor
soft.
Adresndu-se indeosebi studenilor de anul III de la specializarea informatic, dar i
tuturor celor interesai de tiina i, n egal msur, arta de a realiza sisteme soft, prezenta
lucrare poate fi nceputul unui drum lung, uneori complicat i, de ce nu, interesant.
Braov
27 noiembrie 2007
Dup unele aprecieri exist, nc, o diversitate prea mare de metodologii de dezvoltare a softului, fapt care
nu stimuleaz neaprat productivitatea specialitilor n IS. n jurul marilor firme productoare de soft se
cristalizeaz, progresiv, elemente i idei cu ajutorul crora se alimenteaz procesul de fundamentare a unor noi
MDS. Aceste MDS primesc, de regul, girul mediilor academice, dup care se ntorc la utilizatori, care le
consider adecvate pentru rezolvarea problemelor lor.
Schematiznd, avem situaia din Figura 1.1, adic un fel de circuit al apei n natur. Privind mai atent,
ns, observm c este vorba de un proces cu conexiune invers pozitiv care, pe termen lung, are ca scop
optimizarea suportului de care au nevoie specialitii n IS pentru a realiza sisteme soft.
Astfel se prezint IS dac privim lucrurile din avion. n realitate situaia este mult mai complex. Acest
fapt va iei la iveal n cele ce urmeaz, cnd aplicnd descompunerea top-down n conjuncie cu un permanent
efort de abstractizare, vom nelege mai bine structura i specificul unui demers IS.
Firme/Persoane implicate n
realizarea de sisteme soft
Laboratoare de cercetare
MDS nou
biblioteci cu legturi dinamice (DLL-Dynamic Link Library); o bibliotec DLL este, n esen, o colecie
de funcii care pot fi apelate din alte module executabile Windows. Nu discutm aici motivele care au
generat specificarea acestei tehnologii de ctre specialitii de la Microsoft(dei acesta ar fi un foarte
interesant studiu de caz ntr-o lucrare pe teme IS). Important este c, realizarea unei biblioteci DLL este un
exerciiu deosebit att din punct de vedere al elaborrii soluiei tehnice ct i din punct de vedere al
programrii. Aceasta deoarece, mai mult dect ntr-o aplicaie Windows ordinar, realizarea unei biblioteci
DLL pune la ncercare abilitile specialistului IS n ceea ce privete definirea de interfee optimale pentru
Am terminat, astfel, scurta trecere n revist a tipurilor de aplicaii suportate suportate de platforma
Windows. Evident, am pus n discuie elemente noi care ne-ar putea ajuta la definirea noiunii de sistem soft.
Continund mica noastr investigaie, ne putem ntreba dac un document HTML poate fi considerat sistem
soft? ntrebri asemntoare ne putem pune relativ la creaii precum: coleciile de fonturi utilizate de editoarele
de texte, aa zisele fiiere cu resurse promovate de mediile vizuale de programare, coleciile de clase gen MFC
(Microsoft Foundation Class), etc.
Este clar, sper, motivul pentru care, la nceputul acestui paragraf, am afirmat c este dificil de dat o definiie
viabil noiunii de sistem soft. Nu ar fi acesta singurul caz (Biblia opereaz cu noiunea de Dumnezeu fr s
ne-o defineasc. Cu toate acestea exist oameni care consider biblia o capodoper att din punct de vedere al
tipului de scriitur ct i din punct de vedere al modului de organizare a argumentaiei).
Contnd, mai ales pe valoarea ei didactic, propun urmtoarea definiie a noiunii de sistem soft.
Se numete sistem soft orice produs al IS care poate fi utilizat pentru a fundamenta sau realiza protocoale
efective i relativ autonome de prelucrare sau comunicare a datelor i informaiilor ntr-un context
informaional dat.
Aadar, atributele eseniale ale unui sistem soft sunt:
10 Capacitatea de a fundamenta / realiza protocoale efective de prelucrare / comunicare a datelor /
informaiilor.
Exemple.
-MFC poate fundamenta protocoale efective de prelucrare / comunicare date i informaii;
-Un sistem expert realizeaz un protocol efectiv de prelucrare / comunicare date / informaii;
-Un document HTML realizeaz un protocol efectiv de prelucrare / comunicare date / informaii, etc.
20 Protocolul fundamentat sau realizat are o autonomie relativ.
Ideea de baz a acestei autonomii relative const n faptul c protocolul este capabil, n anumite mprejurri,
de iniiativa n relaia cu mediul de interpretare sau de execuie a protocolului.
Ca un contraexemplu, o resurs Delphi, neintegrat ntr-un sistem complet de alte elemente ale unei aplicaii
Delphi, nu poate fi considerat sistem soft. Integrat, ns, poate fi considerat parte a unui sistem soft.
30 Protocolul opereaz ntr-un context informaional dat.
Nu prea avem motive s acceptm ca sistem soft o creaie IS care nu opereaz ntr-un context informaional
specific. Chiar dac nu este ntotdeauna evident, acest context informaional exist. De exemplu, un mediu vizual
de realizare a sistemelor soft este, el nsui, un sistem soft care opereaz cu un context informaional specific,
abstractizat de conceptele i principiile de utilizare a acestor concepte pentru a modela vizual soluia unei
probleme date.
Cititorul, mai mult sau mai puin avizat, ntrezrete, probabil, faptul c noiunea de sistem soft are un
coninut discutabil. Mai presus de orice discuie, ns, se afl faptul c n IS denumirea generic a produselor
finite este sistem soft.
Actualmente, omenirea triete un moment de cotitur din punct de vedere al modului de procesare a
informaiilor care o intereseaz. Acest moment de cotitur ar putea fi numit revoluie informaional.
Dup ce o mare parte din istoria omului a fost dedicat cuceririi redutelor substaniale i energetice, a
sosit timpul unor modificri importante n ceea ce privete valorificarea dimensiunii informaionale a tuturor
activitilor omului.
Diversificarea pe orizontal i pe vertical a produciei de sisteme soft nseamn modificarea permanent a
ofertei de tehnologii informaionale (TI), tot mai mult cerute de societatea informaional n curs de
cristalizare.
Circuitul producie TI - utilizare TI - redefinire cerine fa de TI producie TI are o dinamic a crei
trstur principal pare a fi efectul de autoaprindere.
Tvlugul informatizrii societii omeneti pare a fi n faza n care rostogolirea lui nu mai poate fi oprit
fr a prejudicia grav progresul metodelor de investigare i complexificare a realitilor substaniale i
energetice, fr s mai vorbim de cele informaionale.
Nu peste mult timp, o mare parte din locuitorii planetei vor fi nevoii s nvee meteugul utilizrii i
producerii TI.
Dup cum se poate observa i n alte domenii de activitate i n industria softului exist tendina de a:
-extinde permanent capabilitile interactive i de procesare ale sistemelor soft , innd cont de cerinele
concrete ale utilizatorilor dar i formnd la utilizatori obinuina de a nva tehnologii informaionale noi,
destinate modificrii comportamentului;
-crete sistematic calitatea sistemelor soft;
-diminua permanent costurile de producie.
Manifestarea efectiv a acestor trei tendine este posibil numai printr-un efort permanent de mbuntire a
elementelor suport n procesul de realizare a sistemelor soft.
Studiul critic al elementelor suport n procesul de realizare a sistemelor soft este de competena disciplinei
prezentat n literatura anglo-saxon sub denumirea Software engineering, care n limba romn s-ar traduce
convenabil prin Ingineria softului.
Dup ce am ncercat o scurt incursiune n lumea preocuprilor IS, voi prezenta, n continuare, o serie de
probleme care (de la nceputurile erei informaticii sau mai recent) menin treaz interesul specialitilor n IS
pentru regndirea permanent a paradigmelor.
Utilizatorul indirect (care poate fi ntruchipat de orice consumator inteligent de servicii furnizate de un
anumit sistem soft) dac se manifest constructiv este un partener cu care specialistul n IS trebuie s coopereze
strns deoarece soluia multora dintre problemele care pot s apar pe timpul realizrii unui sistem soft depinde
de acesta.
Utilizatorul indirect decide nceperea/nenceperea finanrii proiectului de realizare a unui sistem
soft; tot el este i cel care, n urma analizelor periodice cu privire la evoluia proiectului, poate decide
abandonarea/continuarea proiectului. Absolut trivial este faptul c ntr-o economie de pia fr finanare nu
se poate materializa nici o idee de proiect, orict de generoas i ambiioas ar fi aceasta . Acesta este
motivul pentru care managementul proiectului de realizare a unui sistem soft trebuie s trateze cu maximum de
profesionalism relaia cu utilizatorii indireci-variabile importante n ecuaia finanrii unui proiect.
Utilizatorul indirect i asum, n mod normal i rolul de furnizor de date cu privire la structura
proceselor informaionale modelate i, ca o prelungire fireasc, rolul de furnizor de elemente cu privire la
cerinele fa de sistemul soft n curs de realizare. Dac utilizatorul indirect nu i asum aceste dou roluri de
pe o poziie corect, specialistul n IS este n faa unei probleme al crei enun are geometrie variabil:
Utilizatorul indirect nu este capabil s descrie corect procesele informaionale modelate; cineva din echipa
de proiectare trebuie s fac acest lucru i, evident, nota de plat a proiectului se ncarc;
Utilizatorul indirect indic cerinele fa de sistemul soft derivate din poziia pe care el (utilizatorul
indirect) o are n ierarhia utilizatorilor indireci.
Apare, n acest fel, o problem nou i important pentru specialitii n IS, anume distilarea i asamblarea
viziunilor unilaterale ale utilizatorilor indireci pentru a obine o perspectiv sistemic asupra proceselor
modelate.
Utilizatorul indirect are, statistic vorbind, toate calitile unui om obinuit: poate face omisiuni, poate
emite judeci inconsistente, poate avea probleme n comunicarea datelor i informaiilor pe care le deine, etc.
Aceast posibilitate ar trebui s sporeasc semnificativ ncordarea cu care specialitii n IS culeg de la utilizatorii
direci date i informaii necesare evoluiei pozitive a proiectului.
Oricare ar fi situaia, specialitii n IS trebuie s acorde o atenie deosebit utilizatorilor indireci; prerea lor
fa de calitile unui sistem soft poate determina nmormntarea acestuia nainte de a se nate, sau asigurarea
condiiilor pentru ca sistemul soft s aib un ciclu de via pozitiv.
Noiunea de ciclu de via bate la u, dar de semantica aflat n spatele ei (destul de polimorf) vom
discuta mai multe n Capitolele 2 i 3..
Deocamdat, ciclul de via al unui sistem soft, conform unei metodologii date, descrie etapele prin care
trece un proiect de la faza de enun al problemei pn la soluia executabil pe calculator .a.m.d dac se pune
problema dezvoltrii, ntreinerii, etc.
Probleme generate sau descoperite de specialitii n IS
Nu este dect o confirmare a regulii faptul c IS este un univers ale crui probleme sunt inventate,
inventariate i rezolvate datorit dorinei specialitilor n IS de a optimiza procesul de realizare a sistemelor
soft.
Cele mai dificile probleme care pot apare n timpul realizrii unui sistem soft sunt, totui, problemele care
i au originea n laboratoarele IS sau se reflect n activitatea acestor laboratoare. Vom prezenta, n
continuare, enunul problemelor fundamentale pe care trebuie s le aib n vedere orice specialist n IS.
Pentru nenumrate motive (dintre care, unele le vom prezenta n continuare) procesul de realizare a unui
sistem soft trebuie sistematizat.
Aceast nevoie de sistematizare acoper mai multe dimensiuni:concepie, ealonarea n timp, reprezentarea
soluiei, documentarea, conducerea proiectului, etc.
Sistematizarea nseamn, n esen, introducerea de reguli de urmat pentru a asigura, teoretic, succesul unui
proiect. Nevoia de sistematizare intr n conflict cu tendina multor specialiti n IS de a se exprima ignornd
protocoalele, normele, regulile adoptate de colectivele din care fac parte.
Este din ce n ce mai greu de inut evidena tipurilor de sisteme soft cunoscute, pentru a valorifica creator
experiena acumulat prin realizarea lor, specificnd MDS infailibile i atotcuprinztoare. Dei la ora actual au
fost edificate MDS care impresioneaz puternic prin obiectivele propuse i mijloacele de atingere a acestor
obiective, omul rmne n continuare singurul n msur s nsufleeasc aceste MDS sau s le adauge
capabiliti noi n situaii problematice deosebite (A se vedea, de exemplu, OM,T i UML, dou MDS relativ
recente, cu aspiraii interesante pentru orice gnditor care nelege lumea orientat pe obie cte).
Prin sistematizarea procesului de realizare a sistemelor soft se urmrete crearea unor condiii
avantajoase pentu gestiunea complexitii problemelor specifice unui proiect. Oferirea de suport pentru
gestiunea complexitii este benefic pentru diviziunea muncii (dac se lucreaz n echip) i calitatea soluiei.
Exist o mare varietate de abordri care propun i elemente suport explicite pentru gestiunea complexitii.
Dintre aceste abordri s enumerm i noi cteva care au ca numitor comun modularizarea. Putem modulariza
orientat pe proceduri, putem modulariza orientat pe date, putem modulariza orientat pe obiecte. Rezultatul
trebuie s fie de fiecare dat acelai: Soluia=o colecie de module care coopereaz pentru rezolvarea unei
probleme date.
Prin sistematizarea procesului de realizare a sistemelor soft se pun bazele reutilizrii efortului de
modelare, n anumite circumstane. Astfel, aa dup cum vom vedea, ndeosebi n Capitolele 2 i 4, soluia
unei probleme poate fi elaborat pe mai multe nivele de abstractizare, fiecare nivel fiind dedicat descrierii unor
proprieti specifice ale soluiei. Regulile de baz n organizarea unei soluii pe nivele de abstractizare pare
simpl: nivelul de abstractizare al unei soluii scade odat cu creterea infuziei de informaie static i
dinamic n soluie.
Creterea infuziei de informaie static i dinamic nseamn trecerea soluiei de la o arhitectur cu o
anumit stabilitate structural la o arhitectur cu stabilitate structural diminuat . Este o legitate care
poate fi combtut constructiv doar prin utilizarea unei scheme de rafinare a soluiei care s limiteze
diminuarea stabilitii structurale a nivelului de abstractizare.
Teoretic vorbind, cu ct avem mai multe nivele de abstractizare, cu att mai mic este efortul de
regndire a unui anumit nivel de abstractizare. Practic, ns trebuie gsit un compromis eficient ntre
numrul de nivele de abstractizare propuse i efortul depus de specialiti n IS pentru obinerea soluiei n
acest context.
Astfel stnd lucrurile, o soluie obinut, s spunem, pe trei nivele de abstractizare (conceptual, logic,
operaional, a se vedea Figura 1.2) are cea mai mic stabilitate la nivel operaional. Dac apar modificri care
afecteaz acest nivel (i ele sunt cele mai plauzibile), atunci soluia este regndit, refcnd, n principal, nivelul
operaional. Aceasta nseamn c soluia are o rezisten structurat la modificri i c specialitii n IS fac
reutilizare de efort de modelare n obinerea unei soluii.
Comentariu la Figura 1.2
Cele trei nivele de abstractizare au o semantic apropiat perspectivei pe care o ofer teoria managementului
asupra actului de conducere, analizat pe vertical.
Comentariu la Figura 1.3
Schema din Figura 1.3 ilustreaz componentele managementului, structurat pe nivele; dei nu sunt vizibile,
ntre aceste componente exist relaii foarte interesante pentru cineva care proiecteaz sistemul informaional al
unei afaceri.
Nivel conceptual
(Ce face sistemul soft)
Soluia conceptual
Nivel logic
(Cine, cnd i unde
execut prelucrrile)
Soluia logic
Nivel operaional
(Cum se efectueaz
prelucrrile)
Sistem soft operaional
Figura 1.2 Exemplu de ciclu de abstractizare a soluiei unui sistem soft
Managementul de TOP, dac este specificat corect trebuie s aib cea mai mare stabilitate structural.
Managementul TACTIC formuleaz politicile necesare pentru ndeplinirea obiectivelor managementului de
TOP. Dac este necesar, stabilitatea structural a acestor politici poate fi schimbat. n sfrit, managementul
OPERATIV face tot ceea ce este necesar pentru a operaionaliza politicile stabilite de managementul TACTIC.
Nivelul operativ al managementului este supus, cu prioritate, schimbrilor atunci cnd se pune problema
adaptrii sistemului condus la condiii de performan noi.
Prin sistematizarea procesului de realizare a sistemelor soft se urmrete creterea permanent a
calitii acestora.
Este momentul s facem o scurt incursiune n semantica deosebit de complex a sintagmei calitatea
sistemelor soft.
Att n teorie ct i n practic se accept faptul c softul de calitate este rezultatul lurii n consideraie a o
serie de factori interni i externi procesului de configurare a soluiei finale a unui sistem soft.
n limbaj comun se vorbete despre necesitatea de a realiza sisteme soft fiabile, uor de folosit, structurate,
etc. Astfel de epitete asociate unui sistem soft caracterizeaz dou tipuri de proprieti ale sistemelor
soft:proprieti externe i proprieti interne.
Calitatea sistemelor soft i proprietile externe
Dintre proprietile externe care decid calitatea unui sistem soft, le considerm ca fiind foarte importante pe
urmtoatele:
-corectitudinea;
-robusteea;
-extensibilitatea;
-reutilizabilitatea;
-compatibilitatea;
-eficiena;
-portabilitatea;
-uurina n folosire.
Corectitudinea
Este abilitatea unui sistem soft de a executa toate sarcinile convenite cu utilizatorii i beneficiarii n faza de
specificare
Corectitudinea este o proprietate de maxim prioritate a sistemelor soft. Un sistem soft care face altceva
dect s-a stabilit de comun acord cu beneficiarii i utilizatorii lui este obligatoriu s fie corectat (dac efortul
necesar pentru a face acest lucru este asumat de cei care au greit) sau abandonat pentru a relua efortul de a gsi
o soluie care s aib, printre altele i atributul corectitudinii.
Dei se poate vorbi uor i mult despre corectitudine, este o prob de rezisten i de ndemnare
profesional specificarea corect a sistemelor soft.
Pentru teoreticienii IS corectitudinea, dincolo de acceptarea rutinei, este sinonim cu rigoarea n specificare
i proiectare, ceea ce nu este agreat de specialitii n IS adepi ai utilizrii unor limbaje cu suport natural n
specificare i proiectare.
Robusteea
Este abilitatea unui sistem soft de a reaciona adecvat n condiii anormale de utilizarea.
Este evident faptul c robusteea completeaz corectitudinea. n timp ce corectitudinea se refer la
comportamentul unui sistem relativ la o anumit specificare corect, robusteea apreciaz ce se ntmpl cu
sistemul soft n situaii care, n chiar procesul de specificare ar trebui identificate ca excepii.
Realizarea de sisteme soft robuste este o sarcin care ncepe n faza de specificare i se ntinde pn n faza
de programare. Pe acest traseu specialitii n IS trebuie s nfrunte dou clase mari de execpii:
Compatibilitatea
Este o msur a uurinei cu care componentele unui sistem soft se combin cu alte componente pentru a
forma aplicaii noi.
Firete, compatibilitatea este important deoarece, n general, sistemele soft nu pot fi dezvoltate n vid; ele
vor interaciona cu alte sisteme soft.
Secretul compatibilitii se afl n omogenitatea proiectrii i n acceptarea unor standarde de
comunicare ntre programe.
Aadar, pentru a realiza sisteme soft compatibile, efortul de proiectare trebuie s ia n calcul i cele dou
cerine formulate mai sus. Comunitatea IS nu se poate mndri cu impunerea unor standarde i principii de
detaliu n acest sens. Exist fani Windows care promoveaz tehnologiile, trebuie s recunoatem remarcabile,
ale Microsft-ului. Exist, ns, i fani Linux care promoveaz propriile lor idei i tehnologii n ceea ce privete
caracteristicile mediilor de dezvoltare a sistemelor soft. Am dat dou exemple de medii de dezvoltare a
softului. Mai sunt nenumrate altele al cror istoric nu este momentul s l facem; raiunea lor de a fi este
urmtoarea:
Lumea IS i datoreaz remarcabila dinamic unui permanent efort de inovare teoretic i n plan
aplicativ;
Lumea IS, n marea ei varietate, are nevoie de puncte de convergen pentru a face posibil
interoperabilitatea crescnd ntre sistemele soft.
Este destul de dificil de fcut o predicie relativ la dezvoltarea prghiilor de compatibilizare a sistemelor soft
n viitor. Actualmente, lumea aplicaiilor Internet se prefigureaz ca un cmp de desfurare a unor
btlii importante pentru noua fa a universului IS. Este nevoie de timp, rbdare i efort susinut pentru a
gsi noi formule de specificare a proprietilor fundamentale ale sistemelor soft, printre care se afl i
compatibilitatea.
Eficiena (Performana)
Este abilitatea unui sistem soft de a minimiza cererile de resurse hard (timp UC, memorie RAM, memorie
extern, etc.).
Comunitatea IS are dou atitudini tipice fa de eficien.
Exist softiti care fac o pasiune din optimizarea permanent a sistemelor la care lucreaz. Din
minile unor astfel de specialiti ies adevrate bijuterii din punct de vedere al performanelor. Preul pltit
mpingnd performana dincolo de un anumit prag logic este, n principal, diminuarea portabilitii softului
respectiv. ntr-o lume care viseaz la compatibilizarea sistemelor soft este greu de crezut c portabilitatea poate
fi sacrificat.
Exist i softiti care gndesc astfel: S facem sistemul soft corect nainte de a fi eficient cu orice
pre. Un astfel de slogan merge n aplicaiile n care absena performanei nu este critic pentru funcionarea
softului, mizndu-se pe un fapt absolut real n ultima vreme: Eficiena poate fi obinut pe seama progreselor n
materie de tehnologii hard. Ca de obieci, adevrul trebuie s fie undeva la mijloc, ceea ce nseamn c
specialistul IS trebuie s stpneasc arta de a obine performana cerut cu minimum de cheltuieli de resurse.
Portabilitatea
Este o msur a uurinei cu care un sistem soft poate fi transferat pe diferite platforme hard i medii de
operare.
Dat fiind marea diversitate de platforme hard i medii de operare, problema este real i dificil de rezolvat.
Esena acestei probleme const n faptul c orice sistem soft, ajuns n faza executabil, pe un calculator real,
trebuie s se neleag cu calculatorul respectiv. Aceasta nseamn c un cod execuatbil are o anumit structur
i instruciunile pe care le conine sunt recunoscute de procesorul mainii gazd. Structura codului executabil
este important pentru sistemul de operare, care supervizeaz ncrcarea codului executabil n memorie i
execuia acestuia, pas cu pas.
Uurina n folosire
Se refer la modul n care oameni cu diferite nivele de instruire pot nva s foloseasc sistemul soft pentru
rezolvarea unor probleme reale. Se refer, de asemenea, la uurina instalrii i operrii sistemului soft.
nchei prezentarea proprietilor externe ale sistemelor soft cu precizarea c problematica proprietilor
interne (structurare, modularizare, obiect orientare, etc.) reprezint un capitol la a crui scriere nc se lucreaz,
neexistnd un consens deplin al specialitilor asupra modului de articulare a acestora ntr-o explicaie stabil
structural.
i clienilor.La cellalt capt al balanei se afl domeniul soluiei n care se vehiculeaz concepte pe care le
nelesc specialitii n IS.
n format utilizator datele sunt organizate supralicitnd redundana, prelucrrile, fiind aplicate unor date n
care mustete redundana, nu sunt automat cea mai fericit alegere.
Tot att de delicat este i problema organizrii interfeelor deoarece n elaborarea acestora trebuie
gestionat optim contradicia dintre dorina de a oferi utilizatorului confort i pornirea natural a
specialistului n IS de a raionaliza interfaa cu utilizatorul.
Acestea sunt o parte din motivele pentru care o MDS trebuie s ofere suport pentru elaborarea treptat (pe
mai multe nivele de abstractizare) a soluiei pentru probleme de genul:
-organizarea optim a datelor utilizate de un sistem soft;
-organizarea optim a prelucrrilor specifice unui sistem soft;
-organizarea pe principii ergonomice i de eficien a interfeelor unui sistem soft.
Suportul oferit pentru rezolvarea problemelor semnalate mai sus depinde de metodologie. Rmnnd la
ideea de metodologie generic, ar trebui s spunem c acest suport poate reprezenta un set de concepte,
principii i reguli de operaionalizare a acestora cu ajutorul crora se reprezint proprietile de un
anumit tip ale procesului n curs de modelare.
De exemplu, proprietile informaionale ale procesului modelat, odat ce au fost identificate, caracterizate
i clasificate ne pot da o descriere a aspectelor statice ale procesului; n acest scop metodologiile ofer modele de
organizare a datelor, eventual pe mai multe nivele de abstractizare.
Proprietile comportamentale ale procesului pot fi descrise utiliznd modele capabile s surprind diferite
nuane ale dinamicii unui sistem.
Pare simplu, dar nu este aa. Pentru a obine o reprezentare ct mai exact a proprietilor informaionale i
comportamentale ale unui proces, trebuie s elaborm:
-modele care reprezint statica unui sistem;
-modele care reprezint dinamica unui sistem;
-modele care reprezint fluxurile informaionale ntr-un sistem
.a.m.d.
Altfel spus, sistemul modelat este privit din mai multe perspective, fiecare perspectiv permind descrierea
unui anumit tip de proprieti; laolalt, putem spune, fortnd puin lucrurile, perspectivele ne ajut s obinem o
imagine holografic asupra sistemului modelat. Pn unde merge acurateea acestei imagini?! Iat o ntrebare
cu mai mult de dou tiuri pentru cei care dezvolt softuri dar mai ales pentru cei care specific noi MDS.
n ceea ce privete capacitatea unei MDS de a oferi suport pentru rezolvarea problemelor de tip
OPA.
Oferta MDS privind rezolvarea problemelor de tip OPA este desemnat n literatura de specialitate prin
sintagma ciclul de via al sistemelor soft.
Ciclul de via al sistemelor soft este, alturi de ciclul de abstractizare, o caracteristic fundamental a MDS.
Este evident faptul c, la detaliu, fiecare MDS are propria propunere de ciclu de via. Fcnd abstracie de
metodologie, o prim perspectiv asupra semanticii noiunii de ciclu de via o obinem n Figura 2.1.
Diagrama din Figura 2.1 surprinde elementele eseniale pe baza crora ncepe s aib sens noiunea de ciclu
de via.
Adevrul este c, pentru sisteme soft de complexitate mare sau medie, ciclul de via al unei MDS trebuie s
propun reguli de etapizare/organizare a efortului de realizare a unui sistem soft reunite sub denumirea
Dezvoltare. Tot din ciclul de via face parte i utilzarea sistemului soft, de la care putem avea feed-back-uri
care pot genera modificri.
Analiza
Proiectarea
Implementarea
Testarea
Etape de dezvoltare
Figura 2.1. Coninutul generic al etapei de dezvoltare a unui sistem soft
Avnd ca pretext diagrama prezentat n Figura 2.1., pot prezenta comentariile de mai jos.
Analiza
Este etapa n care se constat c este necesar un sistem soft i se iau decizii n consecin.
Fie c se constat existena unei piee pentru un produs de uz general, fie c o anumit organizaie are
nevoie de un soft specializat, n mare msur aceast prim etap presupune mai degrab luarea unor decizii de
management i marketing dect abordarea unor probleme legate de studiul algoritmilor, de exemplu.
Dup luarea deciziei de dezvoltare a sistemului soft ncepe analiza propriu-zis, al crei scop principal este
identificarea necesitilor utilizatorului potenial al sistemului soft. De exemplu, n cazul unui produs de uz
general, care urmeaz a fi vndut pe o pia concurenial, trebuie stabilit un public int. Dac se construiete un
sistem soft de gestiune a stocurilor ce urmeaz a fi folosit n departamentul de aprovizionare al unei firme
constructoare de maini, atunci trebuiesc identificate necesitile i ateptrile celor care lucreaz n cadrul
acestui departament.
Unul dintre rezultatele formale ale etapei de analiz l reprezint un set de cerine pe care noul sistem soft ar
trebui s le satisfac. Acestea trebuiesc formulate din punctul de vedere al utilizatorului (direct sau indirect), sau
n limbajul de specialitate al IS.
Dup ce au fost identificate cerinele, acestea sunt transformate n specificaii tehnice. Ca un exemplu,
cerina ca accesul la datele sistemului s fie permis doar persoanelor autorizate se poate transforma n
specificaia c sistemul nu trebuie s rspund dect dup introducerea unei parole de exact unsprezece
caractere, confirmat de sistem.
Firete, se pot pune ntrebrile:
Care sunt regulile care guverneaz procesul de identificare i reprezentare a cerinelor fa de sistemul
soft?
i
Care sunt regulile care guverneaz domeniul de elaborare i reprezentare a specificaiilor tehnice?.
Rspunsul este simplu: metodologia ofer suport de tip ASS i suport de tip RDS care se folosete n aceast
etap a ciclului de via ct mai eficient cu putin.
Proiectarea
Este etapa n care soluia sistemului soft este specificat n detaliu.
n termeni generali vorbind, sistemul soft imaginat n etapa de analiz este descompus, progresiv, n
componente mai uor de modelat, numite, generic, module. Implementarea sistemelor complexe devine posibil
tocmai prin aceast descompunere modular. Astfel, mulimea detaliilor tehnice care trebuie luat n considerare
ar fi imposibil de stpnit. Proiectarea modular creeaz, totodat condiii pentru lucrul n echip i vine n
ntmpinarea efortului de ntreinere, dac acesta este reclamat.
Una dintre concluziile greu de combtut ale generaiilor de MDS poate fi formulat astfel:
O structur modular, chibzuit proiectat este benefic att pentru implementarea sistemului ct i
pentru modificarea sa ulterioar.
Probabil, acesta este unul dintre principalele motive pentru care modelarea orientat spre obiecte ctig tot
mai mult teren.
n faza de proiectare, ca i n cea de analiz suportul de tip ASS i RDS este esenial pentru a obine o
soluie tehnic de calitate.
Implementarea
Este etapa n care are loc scrierea efectiv a programelor, crearea fiierelor i, n consecin, dezvoltarea
bazei de date a sistemului soft astfel obinut.
Testarea
Este etapa strns legat de etapa anterioar deoarece, n mod normal, fiecare modul al sistemului este testat
n timpul implementrii.
ntr-un sistem bine proiectat (ceea ce ar face trimitere direct la o serie de posibili factori interni ai calitii
precum: decompozabilitatea modular, compozabilitatea modular, nelegerea modular, continuitatea modular
i protecia modular) fiecare modul poate fi testat n mod independent, utiliznd versiuni simplificate ale
celorlalte module pentru a simula interaciunea modulului int al testrii cu restul sistemului. Evident, pe msur
ce diferite module sunt finalizate i combinate, testarea individual face loc treptat testrii generale a ntregului
sistem.
Practica dovedete c testarea i complementara acestei activiti, care este depanarea, sunt, ndeosebi n
cazul sistemelor mari activiti greu de finalizat. Sistemele de mari dimensiuni pot conine foarte multe erori
chiar i dup efectuarea celor mai complexe teste. Multe erori pot rmne neobservate pe toat durata vieii
sistemului soft. Punerea la punct a unor strategii de eliminare a acestor erori este un obiectiv major al IS. Practica
ne arat c n aceast direcie mai sunt nc multe probleme de rezolvat.
n ceea ce privete capacitatea unei MDS de a oferi suport pentru rezolvarea problemelor de tip
RDS, putem, de asemenea, s facem o serie de consideraii cu caracter general.
Pe tot parcursul elaborrii soluiei unei probleme, aceasta trebuie documentat i reprezentat.
Soluia trebuie documentat deoarece exist mai multe categorii de persoane interesate n utilizarea acestei
documentaii (operatorii sistemului soft, cei care distribuie i instaleaz sistemul soft, programatorii care se
ocup de ntreinerea sistemului soft, partenerii proiectului de realizare a sistemului soft, etc.).
Documentaia de utilizare poate fi realizat sub forma unor ghiduri de utilizare tiprite sau poate fi
ncorporat n structura sistemului soft sub form de help interactiv. Spre binele autorilor sistemelor soft sau spre
binele celor care ar trebui s modifice sistemul soft este bine ca nsui codul surs al sistemului soft s fie
generos documentat.
Deoarece, de calitatea documentaiei depinde n mare msur i priza sistemului soft la segmentul de
pia cruia i se adreseaz, marile firme productoare de soft au transformat documentarea unui sistem soft
ntr-o activitate supus n mare msur standardelor, automatizrii, legilor pieei.
Se cunosc exemplele remarcabile oferite n aceast privin de firme precum Microsoft sau Borland.
Soluia trebuie reprezentat n fiecare etap a ciclului de via deoarece:
-permite schimbul de informaii de natur tehnic ntre partenerii de proiect;
-servete ca surs de documentare strict necesar celor care vor s aduc modificri sau dezvoltri
acestei soluii.
Att pentru documentarea ct i pentru reprezentarea soluiei se folosesc limbaje sau sisteme adecvate.
Astfel, pentru documentare se folosete, n esen, limbajul natural, manifestndu-se o grij deosebit pentru
rigoarea, claritatea, sugestivitatea i uurina n utilizare a diferitelor tipuri sau sisteme de documentare.
Programatorii, ndeosebi, sunt deja obinuii cu ncorporarea n mediile de programare sau n funcionalitatea
diferitelor sisteme soft a unor help-uri interactive de mare complexitate sau a tutorialelor care asist nvarea
operrii sistemelor soft. Ultima gselni n materie de documentare a sistemelor soft o reprezint capabilitile
de tip wizards care scutesc utilizatorii de grija de a memora anumite protocoale de utilizare a sistemelor soft,
lsndu-le ns ntotdeauna libertatea de a gndi care este cea mai bun alegere ntr-un anumit moment al
utilizrii softului n cauz.
n ceea ce privete reprezentarea soluiei, aducem la cunotina cititorului faptul c lucrurile sunt mai puin
aezate dect n cazul documentrii.
Limbajele alese pentru reprezentarea soluiei unui sistem soft pot fi:
-tributare cerinei de a fi intuitive, caz n care textul este combinat cu grafica conform unor reguli
specificate riguros din punct de vedere sintactic (a se vedea notaia utilizat n UML!);
-tributare excesului de formalizm, indispensabil, spun teoreticienii pentru a asigura un spor de
corectitudine n specificare, analiz, proiectare. Formalizmul excesiv este cerut i de, nc ipotetica, n zuin a IS
de a implica sisteme soft specializate n generarea automat a codului executabil pornind de la soluia tehnic (a
se vedea Z, Z++, VDM, VDM++, sisteme formale de reprezentare a soluiei unui sistem soft care au reuit
cteva strpungeri experimentale n lumea practic a IS i att deocamdat).
Referitor la notaie (cum se mai numete limbajul de reprezentare a soluiei) s precizm c aceasta n
manualele de prezentare a MDS este strns dependent de semantica metodologiei, adic limbajul de
reprezentare a soluiei respir acelai aer cu limbajul de abstractizare a soluiei.
n ceea ce privete capacitatea unei MDS de a oferi suport pentru rezolvarea problemelor de tip
OMP
Din cele expuse pn n acest punct al lucrrii s-a neles, presupun, faptul c lucrul n cadrul unui proiect de
dezvoltare a unui sistem soft ridic probleme deosebite din punctul de vedere al managementului. Deja, practica
lucrului n cadrul proiectelor de realizare a unor sisteme soft serioase a confirmat valabilitatea afirmaiei potrivit
creia:
Un management slab poate compromite uor ansele de reuit ale unei echipe de proiectare redutabil
profesional; un management bun poate gestiona eventualele probleme datorate nivelului profesional
necorespunztor al unora dintre membrii echipei de proiectare.
Lumea n care trim este, fr s exagerm deloc, opera diferitelor tipuri de management.
Specialiti sau nu n probleme de management, este bine s tim c exist discipline care studiaz
problemele fundamentale ale managementului, dar, complexitatea activitilor imaginate de om depind de mult
capabilitile explicative i operaionale ale unui tratat de bazele managementului, asistm la apariia unor
varieti noi de management cu obinuina cu care la un anumit timp dup apusul soarelui ne vine din ce n ce
mai greu s rezistm tentaiei de a ne culca. Printre aceste varieti de management se afl i managementul
proiectelor de realizare a sistemelor soft (MPRSS). Multe dintre principiile fundamentale ale teoriei
managementului opereaz i n cadrul MPRSS. Mai mult, putem afirma c, cel puin n cazul etapei de analiz
din ciclul de via al unui sistem soft cunotinele de management sunt de mare utilitate (dac sistemul soft este
realizat la cererea conducerii unei organizaii cu sau fr profit).
Multe din ntrebrile care se pun n etapa de analiz (ce obiective are de ndeplinit sistemul soft?, care sunt
mijloacele de ndeplinire a acestor obiective?, cum i mapeaz sistemul soft funciile pe domeniul activitilor
deservite?, etc.) primesc rspunsuri mult mai clare dac analistul are i cunotine de management. Spernd c v-
am convins, oarecum, de utilizarea unui management adecvat al procesului de dezvoltare a unui sistem soft, s
anticipm c n atenia MPRSS se afl trei tipuri fundamentale de activiti:
-gestiunea resurselor angajate n realizarea sistemului soft;
-asigurarea calitii sistemului soft;
-gestiunea riscurilor asociate procesului de realizare a sistemului soft.
Toate aceste trei tipuri de activiti se desfoar dup o planificare riguroas care presupune, n esen
stabilirea cadrului optim din punct de vedere organizatoric i logistic care permite valorificarea suportului
oferit de MDS pentru rezolvarea problemelor de tip ASS, OPA, RDS.
Nu ne va surprinde, aadar, s constatm c specialitii care depun eforturi pentru dezvoltarea suportului
metodologic de tip OMP propun o serie de modele calitative i cantitative cu ajutorul crora se ncearc
msurarea sau evaluarea rezultatelor activitilor mai sus precizate.
Date fiind particularitile acestor activiti n cazul proiectelor de realizare a unor sisteme soft, este de
ateptat ca multe direcii de aciune ale managementului s se supun unor legiti specifice.
Orice patron de firm soft va scpa de multe probleme n ziua n care din laboratorul de cercetare va iei pe
pia o metodologie care:
articuleaz att de bine contradiciile, certitudinile i incertitudinile din munca unui specialist n IS, nct
toate merg ca ntr-o linie de fabricaie a unor echipamente necesare pentru dotarea unor capsule spaiale.
Fericire sau ghinion, cert este c mai avem cale lung pn acolo. Nu cred c este cazul s v spun explicit
de ce. Doar att mai adaug: de vin este complexitatea unora dintre activitile specifice gndirii omeneti.
Nu ne rmne dect s alegem dintre nenumratele rele pe care le avem n fa pe cea mai puin costisitoare
din toate punctele de vedere.
Specificarea
cerinelor
Implementare
Figura 3.1 Un model primitiv de dezvoltare a softului
Specificarea
cerinelor
Diagrama de
structur
Implementare
Figura 3.2 Un model mbuntit de dezvoltare a softului
Tot ceea ce se poate spune despre modelele de dezvoltare sugerate de figurile de mai sus este faptul c
abstractizeaz frumos, dar ineficient procesul de dezvoltare a sistemelor soft de mare i medie complexitate.
Conform Figurii 3.1, specialistul n IS trebuie s aib abiliti remarcabile care s-i permit s fac un salt
uria de la cerine la codul care descrie, practic, n detaliu, soluia executabil a sistemului soft.
Exist oameni care pot face acest lucru. Diferitele nivele de abstractizare i faze de dezvoltare a softului se
nfirip n creierele acestora i capt contururi suficient de clare pentru a permite alimentarea cu materie prim
de calitate a procesului de codificare. Chiar i n cazul unor astfel de oameni, saltul de la cerine la cod este plin
de riscuri.
mbuntirea sugerat de Figura 3.2 este real dar insuficient. Ani la rnd, n laboratoarele de cercetare ale
IS s-au fcut eforturi extrem de diverse i uneori foarte originale, pentru gsirea celei mai bune formule de
desfurare n timp a procesului de abstractizare a soluiei unui sistem soft.
Toate aceste formule se concretizeaz ntr-o list lung de propuneri de cicluri de via, din care vom
analiza n continuare cteva exemple reprezentative.
Dei ciclul de via propus de o MDS funcioneaz optim n conjuncie cu o anumit strategie de
abstractizare a soluiei, specific MDS, n analiza pe care o fac n paragraful 3.2 voi insista doar pe elementele
care definesc particularitile unei MDS din punct de vedere al ciclului de via.
Avnd n vedere aceste dou exigene, voi trece la descrierea unor modele ale ciclului de via al sistemelor
soft reprezentative, urmnd s degajez o serie de concluzii generale dup prezentarea acestor modele.
Analiza
Proiectarea
Implementarea
Testarea
Utilizarea
i instruirea
Nu am considerat necesar s mai insist asupra coninutului fazelor prezentate n Figura 3.3. Paragraful 2.2 al
acestei lucrri conine suficiente informaii lmuritoare n acest sens.
Cu toate c are destui critici, modelul cascad a fost i este folosit, integral sau parial, ori de cte ori se
dorete un ciclu de via cu o structur echilibrat.
Validare
Proiectare
sistem
Testare
sistem
Proiectare
subsisteme
(componente)
Testare
subsisteme
(componente)
Codificare/
asamblare
componente
fost livrat, ceea ce creeaz foarte repede mprejurrile necesare pentru ca acesta (utilizatorul) s observe
eventualele neconcordane ntre cerinele lui fa de sistem i cele implementate efectiv .
MP ofer o abordare care, potenial, poate contribui la eliminarea omisiunilor i ambiguitilor care pot
exista n cerine.
n IS se numete prototip un sistem sau un sistem parial finisat care este construit rapid pentru a explora
anumite aspecte ale cerinelor fa de sistem i care nu este considerat sistem gata de livrarea final la
utilizator.
Un sistem soft aflat n faza de prototip se deosebete de un sistem soft gata de livrare prin o serie de
omisiuni asumate sau strecurate involuntar n faza de codificare (implementare).
Astfel c un prototip are, n mod obinuit, o funcionalitate incomplet (capacitate limitat de procesare a
datelor, performane reduse n timpul execuiei, siguran n funcionare problematic, etc.).
Dezvoltarea prototipului este posibil efectiv doar utiliznd instrumente pentru dezvoltarea rapid a
sistemelor soft (medii vizuale de proiectare, medii vizuale de programare, etc.).
Cnd realizm un prototip putem avea diferite obiective n minte.
Putem construi un prototip pentru a investiga cerinele utilizator; n acest scop ne putem focaliza efortul de
dezvoltare pe realizarea interfeei cu utilizatorul pentru a stabili ce date ateapt utilizatorul de la sistem i ce
date furnizeaz utilizatorul sistemului.
Prototipul poate fi folosit pentru a determina cel mai adecvat gen de interfa.
Putem construi un prototip pentru a stabili dac o platform de implementare anume poate suporta anumite
cerine de prelucrare.
n sfrit, un prototip ar putea s urmreasc determinarea eficienei unui limbaj particular, a unui SGBD
sau a unei infrastructuri de comunicaie.
O perspectiv mai clar asupra proprietilor modelului MP putem obine i din Figura 3.5.
Definire
obiective
prototip
Analiza
iniial
Specificare
prototip
Evaluare prototip
i stabilire
schimbri
Construire
protoip
Prototip
complet
Figura 3.5. Dezvoltarea rapid a softului
utiliznd prototipizarea
Aadar, fazele principale necesare pentru a pregti un prototip sunt:
Efectuarea unei analize iniiale;
Definirea obiectivelor prototipului ;
Specificarea prototipului;
Construirea prototipului;
Evaluarea prototipului i stabilirea schimbrilor de efectuat.
Aa cum se vede i din exemplele prezentate nu lipsesc nici exagerrile, multe din modelele specificate de-a
lungul timpului funcionnd frumos doar n nchipuirea creatorilor lor.
Ca o concluzie de bun sim, am putea spune c un model de dezvoltare este bun dac este agreat de un
numr mare de specialiti.
Acest lucru se poate ntmpla dac:
modelul este uor de nvat i operaionalizat;
modelul este bine ancorat n realitatea procesului de dezvoltare;
modelul ofer suport consistent de-a lungul ntregului proces de dezvoltare a sistemelor soft.
Cititorul ncepe, probabil, s fie de acord cu mine atunci cnd spun c n IS "nisipurile sunt mictoare",
multe probleme nerezolvate stau la vedere, deci cei care se simt cu muchii tari pot s ias la "interval".
Expediia noastr continu pentru c mai avem i alte necunoscute de scos la iveal n capitolele care
urmeaz.
Este, probabil, una dintre virtuile cel mai mult ncercat n IS. Sistemele soft mari (large software system)
pot fi abstractizate pe diferite nivele cu ajutorul modelelor, ceea ce simplific procesul de nelegere a SR
modelat (evident, este vorba de un exemplu de sistem informaional), evideniaz mai uor structura sistemului
sau permite anticiparea impactului pe care eventuale schimbri le pot produce asupra SR.
Oprim aici o analiz care ar putea fi continuat la alt nivel de abstractizare pentru a spune mai multe n
favoarea utilitii modelelor.
Convingerea mea, probat i de practic, este c merit s nvei s modelezi orict de dificil pare, la nceput,
universul paradigmei folosite.
Ce este un limbaj de modelare?
Cititorul bnuiete, probabil, c nu ajunge s vorbim frumos despre modele. Trebuie s spunem cte ceva i
despre climatul n care sunt elaborate aceste modele. Prima afirmaie pe care am mai fcut-o undeva i n
Capitolul 1, este c putem elabora modelel folosind un arsenalpropriu de elemente-suport. Teoretic, ns,
avem de nfruntat, cel puin trei probleme:
vom avea, precis, dificulti n a ne face modelele nelese de ali specialiti;
probabilitatea de a eua n ceea ce privete calitatea modelului poate fi destul de mare;
este extrem de redus ansa de a beneficia de toate avantajele pe care le ofer un mediu de dezvoltare.
Dac limbajul de modelare propriu este extrem de valoros, mai avem o ans n recunoaterea lui de o
comunitate ct mai larg de specialiti. i, astfel, se face trecerea la al doilea tip de climat propriu elaborrii
modelelor: cel n care se folosesc limbaje de modelare, recunoscute ca atare de comunitatea utilizatorilor,
purtnd, eventual, girul mediilor academice, beneficiind, n cel mai fericit caz i de recunoaterea ca
standard.
ntr-o lume a IS un limbaj de modelare care nu este un standard este condamnat la supliciul anonimatului
ceea ce echivaleaz cu moartea clinic a ideilor lansate de acel limbaj. Din fericire, chiar i aflat n moarte
clinic, un limbaj de modelare propus la un moment dat poate dinui, prin ideile lui valoroase, dac acestea au
fost fixate convingtor ntr-o lucrare de specialitate care a ajuns ntr-o bibliotec adevrat.
Abandonnd aceste consideraii care risc s provoace un veritabil derapaj tematic, voi ncerca s explic
cititorului ce este un limbaj de modelare n general i ce este un limbaj de modelare n IS.
n general vorbind, un limbaj de modelare poate fi definit ca o ierarhie de concepte, principii i procedee de
operaionalizare a acestora n vederea abstractizrii soluiilor problemelor care fac parte dintr-o anumit
clas tipologic.
Aceast definiie poate fi considerat satisfctoare pentru utilizatorii limbajelor de modelare. n fond,
acetia trebuie s fie buni mnuitori ai conceptelor, principiilor i procedeelor de operaionalizare a
acestora pentru a realiza modele crora li se poate aplica sintagma profesionale.
Pentru cei care specific limbaje de modelare sau pentru cei care realizeaz sisteme soft suport n procesul
de modelare orientate pe un anumit limbaj de modelare, definiia de mai sus este insuficient.
Utilizatorul unui limbaj de modelare este asemenea muncitorului care trebuie s tie s mnuiasc o trus
de scule, ntr-un context anume.
Persoana care specific un limbaj de modelare este asemenea inginerului care a proiectat trusa de scule,
abstractiznd o familie de contexte n care poate fi utilizat trusa.
Scoaterea pe pia a unui limbaj de modelare nseamn rezolvarea cu brio a dou probleme majore:
- Specificarea universului conceptual al limbajului
-Identificarea formalizmului de prezentare a universului conceptual
Amndou problemele sunt dificil de rezolvat astfel nct beneficiarii poteniali ai limbajului de modelare s
devin beneficiari efectivi n numr ct mai mare. Semnalez, n continuare, cteva dintre dificultile i
antagonismele cu care se confrunt un specificator de limbaje de modelare (SLM).
Primul obstacol pe care trebuie s-l depeasc un SLM este reprezentat de problema delimitrii
tipologice a sistemelor care urmeaz a fi modelate cu ajutorul limbajului . Demersul pentru rezolvarea
acestei probleme poate eua graios dac SLM implicat nu reuete s opreasc la timp elanul generalizrii sau
dac, din contr, nu gsete suficiente resurse pentru a extinde rezonabil oferta de aplicabilitate a limbajului.
A doua problem cu care se confrunt un SLM este, evident, specificarea universului conceptual. Este,
se poate spune, cea mai dificil dintre numeroasele probleme cu care se confrunt un SLM. Aceasta deoarce,
universul conceptual trebuie structurat astfel nct s poat fi utilizat, indiferent de complexitatea sistemului
modelat. n cazul problemelor de complexitate mic, amploarea efortului de abstractizare este redus; relativ
redus este, n general, i semantica pe care trebuie s o codificm cu ajutorul limbajului.
Aa cum, probabil, cititorul a dedus deja, confruntat cu exigenele unei probleme, adecvat tipologic,
limbajul de modelare trebuie s fac fa la dou comandamente eseniale:
-asigurarea de suport pentru cel care modeleaz n vederea rafinrii treptate a soluiei;
-asigurarea de suport pentru cel care modeleaz n vederea captrii semanticii sistemului modelat.
Amndou comandamentele apas greu pe umerii celor care vor s specifice limbaje de modelare. Pentru
mai mult rigoare n exprimare, de fapt, trebuie s spun cititorului c problema rafinrii treptate a soluiei
unei probleme arbitrare este greu de algoritmizat.
Acest fapt ar putea fi motivat, oarecum, de includerea aptitudinii de a rafina soluia unei probleme printre
abilitile de baz ale unei persoane inteligente.
Astfel c, nu avem algoritmi de rafinare treptat a soluiei unei probleme, indiferent ce limbaj de modelare
discutm; n schimb, orice limbaj de modelare ncearc s propun un "background" pentru alegerea celei mai
bune variante de rafinare.
Rutatea unei probleme de rafinare a soluiei unui enun dat este dubl:
algoritmizarea schemei de rafinare agreat de un limbaj nu poate fi realizat dect n linii mari ; pe
aceast baz apare al doilea factor de rutate: gsirea schemei de rafinare este o problem de alegere
dintr-o mulime, uneori inepuizabil, de variante.
Ca exemple de elemente suport pentru rafinarea treptat a soluiei unui sistem soft putem indica:
Descompunerea sistemelor n subsisteme i agregarea subsistemelor n sisteme (dou procedee de
abstractizare din teoria general a sistemelor care opereaz cu nelesul originar la nivele nalte de abstractizare).
Utilizarea modularizrii pentru obinerea soluiei unui sistem soft; este un procedeu care extinde
utilitatea principiului descompunerii din teoria general a sistemelor la specificul problemelor de modelare din
IS. La fel cum descompunerea sistemelor n subsisteme este consecina unui anumit mod de a nelege sistemul
modelat, modularizarea se poate baza pe abordarea top -down sau bottom-up. Indiferent de alegere avem nevoie
de criterii. Ca un exemplu, n cazul abordrii top-down putem avea descompunere bazat pe:
-criterii funcionale;
-criterii de organizare a datelor;
-abstractizarea fluxurilor de date;
-tipuri abstracte de date.
Fiecare dintre cerinele de mai sus propune, de fapt, o anumit manier de trecere de la domeniul problemei
ctre domeniul soluiei.
A treia problem n atenia unui SLM se refer la notaia prin intermediul creia se face transfer de
semantic dinspre limbajul de modelare ctre utilizatorul limbajului de modelare.
Este o problem care, rezolvat nesatisfctor, poate compromite inteniile conceptuale ale limbajului.
De regul, o notaie inspirat permite:
-vizualizarea procesului de modelare;
-specificarea soluiei unei probleme;
-realizarea soluiei;
-documentarea soluiei.
Vizualizarea procesului de modelare
Este o calitate care contribuie hotrtor la rezolvarea a dou probleme importante:
- sporirea semnificativ a accesibilitii limbajului de modelare; n opoziie total cu limbajele de
modelare vizuale se afl limbajele de modelare care se bazeaz pe o sintax exclusiv formal.
- asigurarea unui cadru sistematic pentru realizarea de medii CASE pentru promovarea modelrii vizuale
asistat de calculator.
Impactul pe care l are caracterul vizual al modelrii asupra productivitii muncii este uria, dac adugm
precizarea c mediile de dezvoltare asistat iau asupra lor mare parte din sarcinile de rutin sau susceptibile de a
fi automatizate.
Exist specialiti care pun n crca vizualizrii o anumit tendin de depreciere a specificrii soluiei unei
probleme (datorit oportunitii pe care o reprezint un mediu CASE pentru a prototipiza, de exemplu).
Chestiunea este discutabil deoarece, dac se lucreaz sub presiunea timpului, un mediu de dezvoltare nu
poate dect s ne ajute s scurtm termenele de execuie realiznd componente cu nalt grad de standardizare. De
asemenea, dac timpul nu preseaz, atunci ine oricum de liberul arbitru dac nainte de a ne repezi la tastatur
am reflectat suficient la problemele etapei n care ne aflm.
Specificarea soluiei unei probleme
Orice limbaj de modelare trebuie s posede n cel mai nalt grad nsuirea de a permite specificarea corect
i complet a soluiei unei probleme.
Cititorul care s-a confruntat, ca specialist IS, cu efectele devastatoare (asupra existenei unui sistem soft) ale
unei specificri incorecte i/sau incomplete nelege pe deplin greutatea acestei cerine. Raza de aciune a
calitii procesului de specificare a souliei unui sistem soft aduce atingere att factorilor interni ct i factorilor
externi ai calitii unui sistem soft.
Privind aceast cerin i din perspectiva exigenelor unui potenial mediu de dezvoltare, asociat limbajului,
adugm o nou dimensiune nelegerii capabilitilor unui limbaj de specificare a soluiei unui sistem soft.
Atrag atenia cititorului asupra utilitii unei dezbateri mai ample pe teme de corectitudine i completitudine.
Astfel, un specialist IS poate opera cu cel puin dou sensuri ale conceptului de corectitudine:
-corectitudinea de mapare
-corectitudinea formal.
Corectitudinea de mapare caracterizeaz modul n care cerinele beneficiarului sunt specificate n soluie.
Orice diferen ntre mesajul corespunztor unei cerine din domeniul problemei i mesajul aceleiai cerine n
domeniul soluiei trebuie interpretat ca un exemplu de specificare incorect.
Corectitudinea formal rspunde de acurateea formal a specificrii. Mesajul de baz al specificrii poate
fi prezent, deci avem corectitudine de mapare, dar acurateea specificrii din punct de vedere formal poate fi un
obstacol n comunicare sau n generarea automat corect a unor piese ale sistemului soft de ctre mediul de
dezvoltare.
n materie de specificare corect este cunoscut duelul dintre sistemele formale de specificare (Z, Z++,
VDM, VDM++) i sistemele intuitive de specificare.
n timp ce sistemele formale de specificare sunt puternic matematizate, ceea ce restrnge serios numrul
celor interesai de aceast abordare, sistemele intuitive ncearc s cultive rigoarea utiliznd masiv semantici
exprimate cu ajutorul limbajelor naturale.
Valenele semantice ale noiunii de completitudine a specificrii sunt, de asemenea, variate.
Analog corectitudinii, putem vorbi de completitudine de mapare, prin care nelegem prezena n sistemul
de cerine a tuturor elementelor vitale n momentul dezvoltrii softului, precum i a unor elemente-cadru care s
permit redefinirea, la nevoie, a sistemului de cerine.
Putem vorbi, de asemenea, de o completitudine structural, prin care desemnm finalizarea corect a
tuturor inteniilor de specificare ale proiectului.
Evident, efortul de specificare corect i complet are determinri adnci n structura ciclului de via i a
ciclului de abstractizare. Acest lucru va fi mai clar pentru cititor n momentul n care va trece de la nelegerea
pe buci a unei MDS la o viziune sistemic asupra utilitii ei.
Realizarea softului
O notaie chibzuit aleas trebuie s aib calitatea de a permite relativ uor transpunerea soluiei tehnice n
limbajul de programare ales. Ceea ce, probabil, pare simplu ca teorie este ns o sarcin dificil pentru SLM.
Pentru ca notaia unei MDS s faciliteze realizarea softului, la specificarea limbajului de modelare trebuie
depuse eforturi de unificare, pe ct posibil, a lumii conceptelor din domeniul soluiei tehnice cu lumea
conceptelor din domeniul programrii.
Aceast unificare este extrem de dificil ct timp n lumea limbajelor de programare se menin nc
deosebirile de abordri n ceea ce privete structura soluiei unei probleme.
ntr-o oarecare msur este chiar scuzabil o astfel de stare de lucruri. S ne gndim c n programare exist
nu doar variaiuni pe o anumit tem ci chiar teme diferite.
Programatorii cu experien tiu c ntr-un fel este s programezi ntr-un limbaj procedural, alta este optica
ntr-un limbaj de esen funcional, aproape cu totul alta este abordarea ntr -un limbaj suport pentru
programarea logic. De asemenea, este o lume principial nou i programarea obiect-orientat; plin de
surprize este i lumea limbajelor paralele.
Deosebirile de natur conceptual dintre limbajele prezentate mai sus (care nu au epuizat lista tipurilor de
limbaje existente!) sunt suficient de pregnante pentru a provoca derut, la primul contact, unui programator
crescut ntr-o alt paradigm.
De ce ne-am atepta s fie mai uoar soarta SLM n ceea ce privete ncercarea lor de unificare a
semanticilor diferitelor limbaje de programare ntr-o notaie ct mai robust.
Pentru a da un exemplu concret de ncercare n aceast direcie recomand ateniei cititorului notaia UML
care reuete un lucru demn de toat lauda: aducerea la numitor comun a numeroaselor MDS autoproclamate
obiect-orientate prin propunerea unei notaii n care i fac loc concepte fundamentale ale modelrii obiectorientate (clas, obiect, asociere, agregare, generalizare, motenire, mesaj, metaclas, metod, signatur, pachet,
ablon, stereotip, etc.), precum i o serie de concepte care in de reprezentarea diferitelor tipuri de arhitecturi ale
unui sistem soft n genere, modelarea n mediile de calcul paralele, etc.
Dei ambiia oricrui SLM n IS este de a vedea modelele obinute independente de limbajul n care va fi
transcris modelul, nu nseamn neaparat c are i susinere efectiv.
Revenind la cazul UML-ului, autorii lui clameaz independena fa de limbaje de programare, dar, n sinea
lor tiu c maparea soluiei tehnice pe soluia programat este perfect doar dac principiile fundamentale ale
limbajelor de modelare i programare sunt n rezonan.
Pentru ca lucrurile s progreseze mai sunt de nfptuit numeroase reforme n ceea ce privete:
-impunerea de standarde tehnologice n domeniul sistemelor de operare;
-definirea i implementarea unor standarde n ceea ce privete structura sistemelor soft.
Mediile vizuale de programare (de genul DELPHI, VISUAL C++, C-Builder, etc.) sunt exemple gritoare
de abordri compatibile cu o paradigm de modelare important cum este UML.
Documentarea soluiei
Notaia unui limbaj de modelare trebuie s dispun de resursele necesare pentru a permite:
Nivel
Meta-metamodel
Metamodel
Model
Obiecte(dat)
utilizator
Descriere
Desemneaz
infrastructura
conceptual, necesar pentru o
arhitectur de metamodelare.
Definete
limbajul
pentru
specificarea metamodelelor.
Desemneaz o instan a unui
meta-metamodel.
Definete limbajul necesar
pentru specificarea unui model.
Desemneaz o instan a unui
metamodel. Definete un limbaj
pentru descrierea domeniilor
informaionale.
Desemneaz o instan a unui
model. Definete un domeniu
informaional concret.
Exemple
MetaClase,
MetaAtribute,
MetaOperaii
Clas,
Atribut,
Operaie,
Component
CodProdus,
DenumireProdus,
Cantitate, etc.
<1111>, <eav
PVC>, 30
Perspectiva
logic sistem
(structural)
Funcionalitate
Perspectiva
componenete sistem
(implementaional)
Managementul softului
Reutilizare
Portabilitate
Perspectiva
contexte de
utilizare
(utilizator)
Mod de folosire
nelegere
sistem
Perspectiva
procese sistem
(comportamental)
Performan
Utilitate
Toleran la erori
Perspectiva
topologie sistem
(desfurare n mediul
de execuie)
Performan
Utilitate
Toleran la erori
Livrare i instalare
Accesibilitate
Figura 5. 2 Perspectiva arhitecturii 4+1
sistemului soft, aa cum este acesta vzut de diferite categorii de utilizatori i, prin intermediul acestora, de
diferii membri ai echipei de proiectare. Aspectele statice ale acestui tip de perspectiv sunt reprezentate cu
ajutorul diagramelor de contexte de utilizare. Aspectele dinamice sunt ncapsulate n diagrame de interaciune,
diagrame de stare, diagrame de activitate.
Scurta trecere n revist a modelului 4+1 ne atenioneaz, nc o dat, asupra complexitii abordrii
propuse de UML, precum i asupra necesitii de a ncepe explorarea notaiei UML care permite materializarea
abordrii 4+1.
Nume clas
CNP
Nume_I_Prenume
Atribute informaionale
creare()
eliberare()
adaugare()
Operaii
Ca i notaie vizual, o interfa este redat printr-un cerc cruia i se ataeaz numele interfeei (Figura
5.4).
IPacient
Figura 5.4. Reprezentarea unei interfee n UML
3.
colaborare - abstractizeaz o familie de clase, interfee i alte elemente care, prin cooperare,
reuesc s asigure un comportament care nseamn mai mult dect suma mecanic a
comportamentelor prilor.
De remarcat faptul c, o colaborare are att dimensiune structural ct i dimensiune comportamental.
Dintr-o perspectiv ceva mai larg privind, o colaborare reprezint implementarea unui ablon care
abstractizeaz o anumit funcie a unui sistem soft. Notaia pentru colaborare este o elips al crei contur este
realizat cu o linie ntrerupt, n interiorul creia se trece numele colaborrii.
Programare
pacient
Figura 5.5. Reprezentarea unei colaborri n UML
4.
Iniiere()
Suspendare()
6.
component - este o parte a unui sistem soft, reprezentat de un anumit gen de cod fizic, dedicat,
n general, realizrii uneia sau mai multor interfee.
Exemple de componente: unit-uri Pascal, ierahii de clase C++ specializate n lucrul cu octeii de iruri,
DLL-uri din lumea Windows, pachetele din Java etc.
Notaia UML pentru o component este ilustrat n Figura 6.8.
Evid_Pacient.java
nume component
Un nod - este un element fizic, care exist la un moment dat i reprezint o resurs de calcul (cel
puin memorie, i adesea capabiliti de prelucrare).
Una sau mai multe componente pot fi rezidente ntr-un nod sau pot migra de la un nod la altul. Notaia
UML, simplificat, pentru un nod este prezentat n Figura 5.9.
Server
Figura 5.9. Notaia UML, minimal pentru un nod
Acestea au fost cele apte tipuri de entiti cu funcii structurale, care formeaz fundamentul structural
al oricrui model UML autentic. Prezentarea pe care am fcut-o a avut ca scop introducerea notaiei pentru cele
apte EFS, semantica complet a conceptelor prezentate i a notaiilor asociate fiind o problem ce urmeaz a fi
pus n discuie, ulterior, n aceast carte sau, de ce nu, n alt carte, care prezint procesul de utilizare efectiv a
notaiei UML pentru rezolvarea unor probleme date.
Entitile cu funcii comportamentale (EFC)
EFC abstractizeaz aspectele dinamice ale unui sistem n cadrul modelelor UML. Prin urmare, EFC
sunt verbe ale modelelor UML (avnd i o reprezentare grafic sugestiv) care ncearc reprezentarea
comportamentului unui sistem, n timp i n spaiu. UML opereaz cu dou tipuri fundamentale de EFC.
1. interaciune - abstractizeaz un comportament care cuprinde o mulime de mesaje schimbate
ntre obiectele unui sistem, ntr-un context particular, n vederea ndeplinirii unui obiectiv
specific.
Prin urmare, la un anumit nivel de abstractizare, comportamentul unei familii de obiecte sau al unei operaii
individuale poate fi specificat ca o interaciune. O interaciune implic o serie de alte elemente, precum mesaje,
secvene de actiuni (comportamentul invocat de mesaje) i legturi ntre obiecte.
Notaia UML pentru mesaj este prezentat n Figura 5.10.
afieaz()
Dup cum se vede din notaia prezentat n Figura 5.10, sgeata care indic un mesaj ntre dou obiecte
are asociat i numele operaiei invocate.
2. main de stare (n engleza american, state machine) abstractizeaz, de data aceasta ,
comportamentul unui singur obiect sau al unei interaciuni dintre obiecte, pe timpul vieii
acestora, ca succesiune de aciuni-rspuns la anumite evenimente.
Aadar, comportamentul unei clase sau al unei colaborri ntre clase (cadrul natural de reprezentare al
interaciunilor) poate fi specificat cu ajutorul unei maini de stare. O main de stare implic o serie de alte
elemente, precum: stri, tranziii, evenimente (fapte ce pot declana o tranziie) i activiti (rspunsuri la
tranziii). Notaia UML pentru o stare este prezentat n Figura 5.11 (dreptunghi cu colurile rotunde, n interiorul
cruia se afl numele strii i, eventual, substrile asociate.
Ateptare
Figura 5.11. Notaia UML pentru stare
Interaciunile i mainile de stare sunt elemente comportamentale fundamentale, care pot fi incluse ntrun model UML. Semantic vorbind, aceste elemente sunt, n mod uzual, conectate cu alte elemente structurale,
ndeosebi clasele, colaborrile i obiectele.
Entiti cu funcii de grupare (EFG)
EFG reprezint elemente utile n organizarea modelelor UML, reprezentate ca nite casete n care un
anumit model poate fi descompus n ceea ce se consider a fi prile lui componente. Specia fundamental de
EFG este pachetul.
Un pachet este un mecanism de interes general al limbajului UML, utilizat pentru organizarea
elementelor n grupuri de elemente. La diferite nivele de abstractizare, ntr-un pachet pot fi grupate EFS, EFC i
chiar alte EFG, dac este nevoie.
Spre deosebire de componente (care se manifest, cumva, n timpul execuiei unui sistem soft), EFG au
o valoare de ntrebuinare pur conceptual (n timpul procesului de dezvoltare a sistemului). Notaia UML pentru
un pachet este ilustrat n Figura 5.12. Problematica EFG necesit o discuie mai ampl pentru a nelege
ntreaga semantic a subiectului.
Entiti cu funcie de documentare (EFD)
EFD reprezint prile explicative ale modelelor UML. De fapt, acestea sunt comentarii pe care le putei
folosi n descrierea modelelor UML pentru a lmuri anumite aspecte neclare ale acestora sau pentru a aduga
informaii suplimentare despre proprietile acestor modele. EFD sunt reprezentate n UML ca note.
Reprezentarea aferent notelor n UML este ilustrat n Figura 5.13.
Gestiune pacieni
Figura 5.12. Notaia UML pentru conceptul de pachet
Funcia calculeaz
vrsta pacientului
Figura 5.13. Notaia UML pentru conceptul de not
Relaii n UML
UML utilizeaz patru tipuri de relaii pentru a descrie aspectele de natur relaional ale modelelor:
Dependenele;
Asocierile;
Generalizrile;
Realizrile.
Aceste tipuri de relaii reprezint nucleul conceptelor de baz propuse de UML pentru descrierea relaiilor
dintre diferitele tipuri de entiti ale modelelor UML.
1. dependena - abstractizeaz o relaie semantic ntre dou entiti, caracterizat prin faptul c o
schimbare n una dintre ele poate afecta semantic cealalt entitate.
ntr-o astfel de relaie, despre entitatea n care se poate produce schimbarea se spune c este independent,
iar despre entitatea afectat se spune c este dependent. n lumea IS, o astfel de relaie se ntlnete foarte des,
n diferite ipostaze. Notaia UML pentru relaia de dependen este reprezentat n Figura 6.14.
0..1
Medic
Asist
*
Pacient
Figura 5.15. Notaia UML pentru asociere
3.
generalizarea - este abstractizarea unei relaii dintre dou concepte UML, compatibile, a crei
semantic este exprimat astfel:
Unul dintre concepte este concept tat, cellalt este concept fiu
Orice element din categoria conceptual tat poate fi substituit de un element din categoria
conceptual fiu. Acest lucru este posibil deoarece un element fiu motenete structura i
comportamentul elementului printe asociat.
realizarea - este abstractizarea unei relaii semantice ntre clasificatori, exprimat astfel: un
clasificator specific nite capabiliti pentru care alt clasificator fur nizeaz suportul necesar.
Ca un exemplu uzual, o interfa pentru a fi utilizat efectiv, trebuie s fie realizat de una sau mai multe
clase. Aadar, o anumit clas realizeaz o anumit interfa. Notaia UML pentru realizare este prezentat n
Figura 5.17.
Student
Ion : Student
matricol
: Student
Maria
Maria
<<instance Of>>
Student
ISecretar
DatePersStud.dll
IDecan
Figura 5.19. Interfeele i implementarea lor
Aa cum, probabil c ai ghicit, n Figura 5.19 sunt prezentate dou interfee implementate de o component
DLL. Multe dintre blocurile constructive UML suport genul de abordare prezentat pe relaia interfa /
implementare. De exemplu, colaborrile realizeaz contextele de utilizare, metodele implementeaz operaiile.
Mecanismele de extindere UML
Un limbaj de modelare, nchis din punct de vedere al notaiei, poate ajunge uor n situaia de a nu putea
exprima, cu mijloace recunoscute de toi utilizatorii lui, o anumit semantic din domeniul problemei sau din
domeniul soluiei.
Pentru acest motiv, UML a fost gndit ca un limbaj de modelare deschis-nchis (open-closed), prin
specificarea unor mecanisme de extindere care includ:
Stereotipurile (stereotypes);
Valorile etichetate (tagged values);
Constrngerile (constraints).
Un stereotip extinde vocabularul UML, permind specialitilor s creeze noi genuri de blocuri constructive,
pornind de la unele existente deja.
O valoare etichetat extinde proprietile unui bloc constructiv UML, permind specialitilor s adauge
informaii noi n procesul de specificare a blocului constructiv.
O constrngere extinde semantica unui bloc constructiv UML, permind specialitilor s adauge reguli noi
sau s le modifice pe cele existente.
EventQueue
<<exception>>
{ version=3.2
Overflow
author=ma}
add()
remove()
flush()
{ordered}
n figura 5.20 este prezentat un exemplu de clas stereotip (Overflow), aflat n relaie de dependen cu
clasa EventQueue, creia i-au fost adugate informaii referitoare la versiune i autor folosind sintaxa specific
valorilor etichetate i care are o metod (add()), pentru care obiectele cu care lucreaz (evenimentele) sunt
supuse constrngerii {ordered}.
Poligon
coordonate
atribute
perimetru()
aria()
afisare()
operaii
java::awt::Rectangle
(b)
Figura 6.2. Specificarea numelui unei clae n UML
Un nume de clas poate fi un ir de caractere de orice lungime, care conine litere, cifre i semne de
punctuaie, cu excepia simbolului ::, utilizat pentru a separa numele clasei de pachetul sau lanul de pachete
care o include. Evident, este necesar un compromis rezonabil ntre lungimea numelui i puterea lui de sugestie.
n practic, numele unei clase se obine prin juxtapunerea mai multor cuvinte care pot dezvlui semantica clasei
respective. De exemple, PoligonAbstract, TriunghiEchilateral, FereastraDeDialog, etc. Se observ cum,
pentru mai mult lizibilitate, fiecare cuvnt din structura numelui ncepe cu liter mare.
Atributele unei clase
Un atribut este numele unei proprieti ( a unei clase) care abstractizeaz un domeniu de valori pe care
instanele proprietii le pot lua.
O clas poate avea orice numr de atribute sau, la limit, nici un atribut.
Un atribut desemneaz, astfel, o anumit proprietate a realitii modelate, proprietate partajat de toate
instanele realitii respective. Ca formalizm de reprezentare, atributele sunt listate n compartimentul situat
imediat sub numele clasei, ca n Figura 6.3.
n funcie de nivelul de abstractizare al clasei (conceptualizare, specificare, implementare), atributele pot fi
listate doar ca nume, dar pot fi listate i ca nume, mpreun cu tipul definitor i, eventual, o valoare iniial. ca n
Figura 6.4.
Student
natricol
numePrenume
adresa
dataNasterii
Lista atributelor
Student
natricol : string[4]
numePrenume: string[40]
adresa: TAdresa
dataNasterii: TData
sex: char=F
Lista atributelor
adaugs()
stergs()
modifics()
afisez()
Lista operaiilor
Student
...
modificMatricol(m:string[4])
consultNume():string[40]
modificAdresa(a:TAdresa=)
...
Lista operaiilor
<<constructor>>
student()
student(m:string[4])
<<proces>>
modificAdresa(a:Adresa)
...
<<query>>
esteValid():boolean
afisez()
<<iterator>>
pentruToti(as:^Student)
...
Se cuvine s reamintim faptul c stereotipul este unul dintre mecanismele de extensie, de baz, ale
UML-ului, cu ajutorul cruia putem mbogi, progresiv, nsi semantica limbajului. Asupra acestui
mecanism de extensie vom mai reveni.
Responsabilitile unei clase
O responsabilitate este abstractizarea textual a unui serviciu furnizat de o clas. Este deja lmurit
faptul c, la definirea unei clase, este foarte important supoziia c toate obiectele acestei clase au acelai
comportament.
Aceast afirmaie, la un nivel de abstractizare mai nalt, nseamn c atributele i operaiile sunt doar
nite elemente-suport pentru ndeplinirea responsabilitilor clasei. Responsabilitile unei clase, n cazul n care
sunt definite, sunt listate ntr-un compartiment situat la baza simbolului grafic al clasei, ca n Figura 6.8
n practic, elaborarea modelului claselor poate ncepe prin specificarea responsabilitilor entitilor
candidate, nregistrate n vocabularul realizat n faza de analiz a cerinelor. n acest scop se pot folosi tehnici
precum card-urile CRC1 sau analiza bazat pe contexte de utilizare. n procesul de rafinare a modelului claselor,
responsabilitile sunt traduse ntr-un set de atribute i operaii care asigur ndeplinirea optim a
responsabilitilor.
CRC prescurtare de la Class Responsabilities Collaborators, o tehnic efectiv de explorare i identificare a responsabilittilor unei
clase
Student
Responsabilities
...
creare studeni
actualizare date personale studeni
validare date personale studeni
6.2
Relaii
n modelarea obiect-orientat exist trei tipuri de relaii care sunt considerate foarte importante:
dependenele, care abstractizeaz relaiile de utilizare existente ntre clase (rafinarea, versionarea, legarea);
generalizrile, care leag clasele generalizate de specializrile lor i asocierile, care reprezint relaiile
structurale dintre obiecte. Formalizmul UML pentru reprezentarea acestor trei tipuri de relaii, precum i maniera
de utilizare, pot fi urmrite, pentru nceput, n Figura 6.9.
dependen
Window
open()
close()
move()
display()
handleEvent()
Event
generalizri
asociere
ConsoleWindow
DialogBox
Control
unui copil care are aceeai signatur cu o operaie a printelui se spune c suprascrie (redefinete) operaia
printelui, procedeu prin care se pun bazele polimorfismului.
Relaia de asociere
O asociere este o relaie structural care specific faptul c instanele unei clase sunt conectate la
instanele altei clase. Conectarea de care am vorbit mai sus, trebuie neleas astfel: dat o instan a a clasei A,
n clasa B poate fi gsit cel puin o instan b, astfel nct perechea (a,b) abstractizeaz o anumit cerin a
modelului n curs de elaborare. ntr-un anumit sens putem vorbi de navigare de la un obiect al unei clase ctre un
obiect al altei clase i invers, dac cele dou clase sunt n relaie de asociere. O asociere la care particip exact
dou clase se numete asociere binar. Dei nu este o situaie uzual, pot exista i asocieri la care particip mai
mult de dou clase. Astfel de asocieri se numesc asocieri n-are. Formalizmul pentru reprezentarea unei asocieri
poate fi dedus analiznd Figura 6.10.
n practic, numele unei asocieri nu este obligatoriu, fiind folosit pentru a spori claritatea modelului.
nume asociere
Lucreaz pentru
Persoana
sensul navigrii
Firma
asociere
Figura 6.10. Numele unei asocieri
Relaia de agregare
O asociere obinuit ntre dou clase reprezint, aa cum am spus, o relaie structural ntre egali,
ceea ce nseamn c ambele clase sunt considerate, conceptual, la acelai nivel de importan n relaie.
Fcnd puin literatur, o asociere obinuit este abstractizarea unei relaii de parteneriat. n realitate, exist
nenumrate situaii, n care suntem nevoii s acordm un statut special unor asocieri n care ideea de parteneriat
nu mai opereaz. O astfel de situaie este cea n care trebuie s modelm o relaie ntreg/parte, n care una
dintre clase desemneaz o entitate mai larg (ntregul) care const din entiti mai mici (prile). Acest tip de
relaie se numete agregare i n literatura de specialitate mai este recunoscut i ca relaie has-a, spre
deosebire de is-a-kind of (generalizarea). Formalizmul grafic folosit pentru specificarea unei agregri este
prezentat n Figura 6.11.
Companie
1
ntregul
agregarea
multipliciti
*
Departament
partea
Ornamentele
Fornd puin exprimarea, dat fiind i lipsa unui cuvnt nou pentru o semantic parial nou, pentru a
conine ct mai mult semantic i pentru a transmite, diferitelor persoane interesate, ct mai mult din aceast
semantic, modelele UML sunt mpodobite cu o serie de elemente adiionale formalizmului de baz.
Ornamentele asociate modelelor UML sunt de dou tipuri: note i ornamente pentru vizualizarea i detalierea
specificrii.
Ne amintim c o not este un simbol grafic folosit pentru redarea constrngerilor sau comentariilor ataate
unui element sau unei colecii de elemente. Formalizmul pentru o not UML poate fi revzut n Figura 6.12.
text simplu
Aceast component
va fi livrat cel mai
trziu n 13/02/04
ncapsulare URL
A se vedea
http://www.rational.com
legtur la document
A se vedea Heap.doc
pentru detalii asupra
acestui algoritm
trei tipuri de clase poate fi considerat un stereotip, care extinde posibilitile de modelare ale UML -ului, ca n
Figura 6.13.
<<Boundary>>
<<Entity>>
PreluareDateStudent
PrelucrareDateStudent
<<Control>>
SupervizareBE
autor=Tudor Stelian
terminat=12/10/2001
Server
{procesoare=2}
{aplicatie=serv.exe}
serv.exe
{doarPeServer,
RamSize=600K}
ContFirma
ContPersonal
Firma
Persoana
{XOR}
lucrator
angajat
angajator
Persoana
*
Firma
0..1
ef
{Persoana.angajator=
Persoana.ef.angajator}
6.4 Diagrame
Introducere
n paragraful 5.3 am precizat deja rolul diagramelor (ca entiti cu funcii de grupare) n organizarea i
vizualizarea blocurilor constructive ale unui model UML. n practic s-a dovedit, deja, faptul c realizarea unor
diagrame de calitate contribuie la o mai bun nelegere, att a soluiei ct i a sistemului modelat. Necesitatea
diagramelor n modelarea UML are o justificare mult mai profund dect cea prezentat mai sus. Una dintre
provocrile importante n procesul de modelare a comportamentului unui sistem se numete stpnirea
complexitii. Exist motive de natur conceptual dar i motive de natur managerial pentru care, n ingineria
softului, se practic abordarea sistemic, cu necesara infuzie de elemente specifice. Aa se face c, la anumite
nivele de abstractizare a soluiei UML a unei probleme, se va vorbi n termeni de sisteme, subsisteme, modele i
diagrame care grupeaz aceste modele dup principii i reguli specifice diferitelor perspective ntlnite n
arhitectura soluiei UML a unui sistem soft. Aa cum am mai spus, n UML exist nou tipuri de diagrame,
utilizate pentru gruparea modelelor care descriu aspectele statice sau dinamice ale unui sistem.
Pentru descrierea aspectelor statice avem:
1.
2.
3.
4.
Abilitatea de a realiza diagrame de tipurile mai sus precizate, coerente, corecte i eficiente este tot ceea ce i
dorete, n ultim instan, un specialist n IS, n relaia cu UML. Fr aceast abilitate, mnuirea, cu randament,
a tool-urilo precum Rational Rose, ObjectiF, etc. este un vis imposibil.
Diagrame structurale
Cele patru tipuri de diagrame structurale UML servesc la vizualizarea, specificarea, construirea i
documentarea aspectelor statice ale unui sistem. Prin aspecte statice ale unui sistem nelegem relaiile
invariante dintre componentele sistemului. Referindu-ne la ingineria softului, din perspectiv UML, aspecte
statice ale soluiei unui sistem soft sunt: relaiile dintre clase, interfeele, colaborrile, ansamblul structurat
al componentelor, topologia hard care susine execuia sistemului. Odat definite relaiile dintre clase,
introducem un element de stabilitate, necesar pentru a putea continua efortul de realizare a soluiei. Odat
specificate interfeele, clienii lor se pot ocupa, n linite, de aspectele legate de utilizarea lor, etc..
Diagrame ale claselor
O diagram a claselor expune un ansamblu de clase, interfee i colaborri, mpreun cu relaiile dintre
ele. Diagramele claselor reprezint tipul de diagram cel mai des ntlnit n modelarea sistemelor obiect
orientate. Folosim diagramele claselor pentru a evidenia perspectiva design (structural) a sistemului . De
asemenea, putem observa faptul c diagramele claselor care includ clase active sunt utile pentru a evidenia
aspectele statice ale perspectivei proces a unui sistem.
Diagrame ale obiectelor
O diagram a obiectelor expune un ansamblu de obiecte, mpreun cu relaiile dintre ele. Folosim
diagramele obiectelor pentru a ilustra structuri de date, instantanee statice ale instanelor entitilor din
diagramele claselor. ntr-o oarecare msur, se subnelege faptul c diagramele obiectelor sunt destinate
evidenierii perspectivei design (static) sau perspectivei proces (static) a unui sistem, cum se ntmpl i n
cazul diagramelor claselor, dar lund n obiectiv instane din lumea real. Scopul unor astfel de diagrame este de
a sublinia, prin infuzia aferent de concret, semantica diagramelor claselor la care se raporteaz.
Diagrame ale componentelor
O diagrama a componentelor expune un ansamblu de componente, mpreun cu relaiile dintre ele.
Folosim acest tip de diagram pentru a ilustra aspectele statice ale perspectivei implementaionale a unui
sistem. Diagramele componentelor se afl n legtur cu diagramele claselor, datorit faptului c, n mod normal,
o component se mapeaz pe una sau maai multe clase, interfee sau colaborri.
Diagrame de desfurare
O diagram de desfurare expune un ansamblu de noduri, mpreun cu relaiile dintre ele. Folosim
acest tip de diagram pentru a ilustra aspectele statice ale perspectivei desfurare a hard-ului care susine
execuia unui sistem soft. Diagramele de desfurare se afl n legatur cu diagramele componentelor, datorit
faptului c, n mod uzual, un nod conine una sau mai multe componente.
Diagrame comportamentale
Dup cum am vzut, exist cinci tipuri de diagrame care pot fi folosite pentru a modela dinamica
(comportamentul) unui sistem soft.
1. Diagramele contextelor de utilizare (use case)
Acestea sunt diagrame care organizeaz comportamentul sistemului
2. Diagramele de sceven (sequence diagram)
Acestea sunt diagrame care se focalizeaz pe ordonarea n timp a mesajelor schimbate ntre obiecte.
3. Diagramele de colaborare (collaboration diagram)
Acestea sunt diagrame care se focalizeaz pe organizarea structural a obiectelor, care trimit i primesc
mesaje.
4. Diagramele hri de stare (statechart diagram)
Acestea sunt diagrame care se focalizeaz pe schimbrile de stare ale unui sistem dirijat de evenimente.
5. Diagramele de activitate (activity diagram)
Acestea sunt diagrame care se focalizeaz pe fluxul de control n procesul de trecere de la o activitate la
alta.
Diagramele contextelor de utilizare
O diagram context de utilizare expune un ansamblu de contexte de utilizare i actori (care pot fi
socotii un gen special de clas), mpreun cu relaiile eferente. Putem folosi diagramele context de utilizare
pentru a ilustra aspecte statice ale contextelor de utilizare a unui sistem (diferite tipuri de relaii ntre
contextele de utilizare) dar, mai ales, pentru a prefigura organizarea i modelarea comportamentului unui
sistem.
Diagrame de secven
O diagram de secven este o diagram de interaciune, care evideniaz ordonarea n timp a mesajelor
care rezolv problemele de comunicare dintre obiectele unei aplicaii. Astfel c, o diagram de secven expune
un ansamblu de obiecte i distribuia temporal a mesajelor, trimise i primite, de ctre aceste obiecte. Obiectele,
n mod uzual au nume, pot fi i instane anonime ale claselor, dar pot reprezenta i instane ale altor tipuri de
entiti precum: colaborri, componente sau / i noduri. Evident, utilizm o diagram de secven pentru a
reprezenta perspectiva dinamic a unui sistem.
Diagrame de colaborare
O diagram de colaborare este o diagram de interaciune care pune accent pe organizarea structural a
obiectelor care trimit sau primesc mesaje. O diagram de colaborare expune un ansamblu de obiecte, legturile
dintre aceste obiecte i mesajele trimise sau primite de aceste obiecte. n mod uzual, obiectele au un nume, pot fi
instane anonime ale claselor, dar pot fi i instane ale altor tipuri de entiti, precum colaborri, componente
sau/i noduri. O diagram de colaborare este, de asemenea, util pentru a reprezenta perspectiva dinamic a unui
sistem.
Diagrame hri de stare (DHS)
O DHS este o main de stare n structura creia intr elemente precum: strile obiectelor, tranziiile,
evenimentele i activitile care pot fi asociate acestor obiecte. Evident, i DHS sunt importante pentru a
reprezenta perspectiva dinamic a unui sistem. Mai mult, putem spune c DHS sunt utile pentru a accentua
comportamentul dirijat de evenimente al unui obiect, lucru absolut necesar n modelarea sistemelor
reactive.
Diagrame de activitate
O diagram de activitate expune fluxul activitilor din interiorul unui sistem (flux care poate fi
secvenial sau ramificat) precum i obiectele asupra crora acioneaz, sau de care sunt demarate aceste activiti.
Diagramele de activitate sunt importante pentru modelarea funciei unui sistem, ca flux de control, n dinamica
activitilor unui obiect sau a unui ansamblu de obiecte-partenere la rezolvarea unei probleme.
exprim sintetic n formula colecie de noduri i arce. O diagram de clase are un nume (ca orice alt tip de
diagram UML) i o reprezentare grafic, care depinde de structura entitilor coninute:
clase (prezen obligatorie i esenial n orice diagram a claselor);
interfee (prezen strict necesar cnd se modeleaz n spiritul obiectelor (componentelor)
programabile, care separ net interfeele de implementarea lor;
colaborri (este vorba de colaborri din perspectiv structural, care pot fi numite piesele mari ale
unei diagrame a claselor);
dependene, generalizri, relaii de asociere.
Asemenea altor tipuri de diagrame, diagramele claselor pot conine note i constrngeri. Dac necesitile de
abstractizare o impun, diagramele claselor pot conine pachete sau subsisteme, fiecare dintre acestea fiind
utilizate pentru a grupa elemente ale modelului n curs de elaborare, obinndu-se blocuri constructive cu o
semantic specific, accesibil unui anumit tip de beneficiar. Uneori, diagramele claselor pot conine i
instane.
ncercnd un rspuns la ntrebarea Pentru ce elaborm diagramele claselor?, reamintesc faptul c
intenia lor declarat este de a modela aspectele statice ale perspectivei design (structurale). Mergnd ceva mai
departe, trebuie s subliniez faptul c cerinele funcionale ale unui sistem soft trebuie s se mapeze
convenabil peste ansamblul modelelor care compun perspectiva design. De aceea se obinuiete s se afirme
c stabilitatea structural a design-ului static este esenial pentru longevitatea i calitatea unei soluii .
Din punctul de vedere al practicii, utilizm diagramele claselor n una din situaiile urmtoare:
AgentTraseu
SenzorColiziuni
Responsabilities
cutare traseu
evitare obstacole
Driver
Motor de Crm
MotorPrincipal
Motor
move(d:Directie;v:Viteza)
stop()
resetCounter()
stare status()
...
Ar
e
1
1..*
Angaja
t la
Catedr
{persistent}
nume:TNume
adaugProf()
stergProf()
Profesor
{persistent}
1..
*
nume:TNume
nmatric
ulat
Pred
*
Student
{persistent}
nume:TNume
matricol:integer
Curs
{persistent}
Frecvent
eaz
nume:TNume
codCurs:integer
Focalizarea pe un anumit aspect al perspectivei design view; este tiut faptul c perspectiva design
view a ntregului sistem poate fi reprezentat n mai multe diagrame ale claselor;
Cuprinderea doar a elementelor care sunt eseniale pentru a nelege respectivul aspect;
Furnizarea de detalii, conforme nivelului de abstractizare i ataarea doar a ornamentelor strict
necesare;
Nu va avea niciodat attea omisiuni nct s rite informarea greit a cititorului asupta semanticii
importante a clasei.
Complementar cerinelor de mai sus putem accepta urmtoarele reguli de stil:
Asocierea unei diagramei de clase cu un nume sugestiv (care s deconspire semantica diagramei);
Expunerea elementelor diagramei astfel nct s reducem la minimum liniile care se intersecteaz;
Folosirea notelor i a culorilor, ca prghii vizuale de dirijare a ateniei asupra aspectelor importante ale
diagramei.
7 MODELAREA ASPECTELOR
COMPORTAMENTALE. ELEMENTE-SUPORT
FUNDAMENTALE
7.1 Interaciuni
ntr-un sistem, interesant din punct de vedere comportamental, obiectele interacioneaz ntre ele utiliznd ca
tehnic de baz transmiterea de mesaje.
Se numete interaciune un comportament care se exprim printr-o serie finit de mesaje, schimbate ntre
obiectele situate n interiorul unui anumit context, pentru ndeplinirea unui anumit scop.
n practica modelrii vom folosi interaciunile pentru a modela aspecte dinamice ale colaborrilor, care
reprezint uniuni de obiecte jucnd roluri specfice, coopernd pentru realizarea unui anumit comportament,
despre care putem spune, cu rezerva de rigoare, c este mai mare dect suma mecanic a elementelor.
Aceste roluri reprezint instane prototipice ale claselor, interfee, componente, noduri i contexte de
utilizare. Aspectele lor dinamice sunt vizualizate, specificate, construite i documentate ca fluxuri de control care
pot cuprinde fire de execuie secveniale, precum i fluxuri mai complexe, care implic ramificri, iteraii,
recursii sau concuren.
Putem modela o interaciune n dou moduri: prin accentuarea ordonrii n timp a mesajelor (obinnd
modele numite diagrame de secven) sau prin accentuarea secvenrii mesajelor n contextul unor colecii
structurate de obiecte (obinnd modele numite diagrame de colaborare).
Este evident faptul c interaciunile bine structurate sunt asemenea algoritmilor bine structurai: eficiente,
simple, adaptabile i inteligibile.
S mai subliniem faptul c putem folosi interaciunile pentru a modela fluxuri de control n interiorul unor
operaii, clase, componente, contexte de utilizare sau la nivelul sistemului ca ntreg. Utiliznd diagramele de
interaciune, putem reflecta asupra acestor fluxuri n dou moduri. Mai nti, ne putem focaliza atenia asupra
modului n care sunt expediate mesajele n timp. n al doilea rnd, ne putem concentra atenia asupra relaiilor
structurate dintre obiectele aflate ntr-o interaciune i, pe acest temei, s considerm modul n care mesajele
circul ntre componentele contextului structurat.
UML furnizeaz o reprezentare grafic a mesajului, aa cum se poate vedea n Figura 7.1.
mesaj
CitesteUrmNote()
1:PrelNotMat(n)
f:Foaia_Matricola
n:Note
{ordered}
obiect
legtur
obiect
Figura 7.1. Mesaje, legaturi i secvenierea mesajelor
De exemplu, subsistemul Planificarea activitii didactice din cadrul sistemului informaional al unei
faculti este contextul n care instane ale unor clase, precum StatDeFuncii, PlanDenvmnt,
FormaieDeLucru vor interaciona pentru a contribui la rezolvarea problemei orarului semestrial al grupelor
de la fiecare specializare i, de ce nu, al fiecrui profesor n parte.
Interaciuni ntre obiecte descoperim i n procesul de implementare a unei operaii. Parametrii unei operaii,
orice variabil obiect local operaiei i orice obiecte globale (dar nc vizibile operaiei) pot interaciona pentru
a materializa algoritmul corespunztor implementrii operaiei.
Astfel, invocarea operaiei suma() care simuleaz adunarea a dou numere mari, fiecare numr fiind o
instan a clasei NumarMare, este evident c poate fi implementat astfel nct invocarea s aib sintaxa:
nr1.suma(nr2)
ceea ce inseamn interaciune ntre obiectul global nr1, obiectul transmis prin lista de parametrii ( nr2 ) i
un obiect local operaiei, folosit pentru a genera obiectul sum pe care l va returna operaia suma().
n al treilea i ultimul rnd, descoperim interaciuni n contextul unei clase. Altfel spus, putem folosi
interaciunile pentru a vizualiza, specifica, construi i documenta semantica unei clase. Revenind la exemplul
clasei NumarMare, pentru a ilustra comportamentul obiectelor acestei clase, putem imagina interaciuni care
arat cum colaboreaz atributele acestei clase pentru a permite ndeplinirea responsabilitilor asumate de clas,
la specificare.
Obiecte i roluri
Obiectele care particip ntr-o interaciune sunt sau lucruri concrete sau lucruri prototipice. n calitate de
lucru concret, un obiect reprezint un aspect din lumea real. De exemplu, p, o instan a clasei Persoana poate
desemna o persoan particular, ca lucru concret, sau o instan oarecare a clasei Persoana, ca lucru prototipic.
Legturi
O legtur este o conexiune semantic ntre obiecte. n general, o legtur este o instan a unei asocieri.
Aa cum rezult i din Figura 68, n momentul n care o clas are o asociere cu alt clas, putem avea i o
legtur ntre instanele celor dou clase; odat ce exist o legtur ntre dou obiecte, unul dintre ele poate
trimite un mesaj celuilalt.
O legtur specific o cale de-a lungul creia un obiect poate trimite un mesaj altui obiect sau chiar lui
nsui.
De cele mai multe ori, este suficient s specificm faptul c o astfel de cale exist. Dac este nevoie de mai
mult precizie n ceea ce privete aceast cale, putem ornamenta captul potrivit al legturii cu unul din
urmtoarele stereotipuri standard:
<<association>> - specific faptul c obiectul corespunztor este vizibil prin asociere;
<<self>> - specific faptul c obiectul corespunztor este vizibil deoarece el este executantul operaiei;
<<global>> - specific faptul c obiectul corespunztor este vizibil deoarece aparine unui domeniu
acoperitor;
<<local>> - specific faptul c obiectul corespunztor este vizibil deoarece aparine unui domeniu
local;
<<parameter>> - specific faptul c obiectul corespunztor este vizibil n calitate de parametru.
Persoana
1..*
afectare (d:Departament)
angajat
*
angajator
Firma
afectare(financiar)
p:Persoana
:Firma
Figura 7.2 Asociere i legtur
Mesaje
Presupunem c avem o colecie de obiecte i un set de legturi care conecteaz aceste obiecte. Un astfel de
model este un model static care poate fi asimilat cu o diagram de obiecte. Diagramele de obiecte modeleaz
starea coleciei de obiecte, la un moment dat i sunt folositoare atunci cnd dorim s vizualizm, s specificm,
s construim sau s documentm o structur static de obiecte.S presupunem, acum, c dorim s modelm
schimbarea strii unei colecii de obiecte de-a lungul unei perioade de timp.
Dac, prin absurd, am putea imagina un procedeu de fotografiere a coleciei de obiecte, la intervale succesive
de timp, atunci ar trebui s observm: obiecte care schimb mesaje ntre ele, provoac evenimente i invoc
operaii. n plus fa de perspectiva asociat scenariului de mai sus, ne putem propune vizualizarea explicit a
strii curente i a rolului instanelor individuale.
Un mesaj este specificarea unei comunicri ntre obiecte, care transmite informaia necesar pentru
producerea unei activiti. Primirea unei instane mesaj poate fi considerat o instan a unui eveniment. Ca
urmare a formulrii unui mesaj, o aciune rspuns va fi declanat. O astfel de aciune poate produce o schimbare
de stare.
n UML pot fi modelate urmtoarele tipuri de aciuni:
Call invocarea unei operaii a unui obiect; un obiect i poate transmite lui nsui un mesaj, ceea ce
este interpretat ca invocare local a unei operaii;
Return ntoarcerea unei valori la apelant;
Send expedierea unui semnal ctre un obiect;
Create crearea unui obiect;
Destroy distrugerea unui obiect; un obiect se poate, la nevoie, autodistruge.
UML ofer o notaie care permite deosebirea, sub aspect vizual, a acestor tipuri de aciuni, care pot fi
asociate unui mesaj. O prim prespectiv asupra acestei notaii poate fi observat n Figura 7.3, care este,
anticipnd, o diagram de secven.
c:Client
p:AsistentPlanificare
<<create>>
:AgentBilete
create
setItinerar(i)
calculRuta()
call
call (invocare
local)
ruta
return
destroy
<<destroy>>
notificare()
send
Figura 7.3. Mesaje i tipuri de aciuni asociate
Figura 7.3, dei ipotetic conine elementele fundamentale pentru a nelege importana noiunii de mesaj n
reprezentarea interaciunilor dintre obiecte. Obiectul c (de tip Client) creeaz un obiect anonim de tip
AgentBilete (folosind un mesaj asociat cu o aciune stereotipizat create); obiectul c apeleaz metoda
setItinerar() a obiectului anonim de tip AgentBilete (care primete ca parametru, un obiect i de tip
Itinerar); obiectul anonim apeleaz propria metod calculRuta() pentru a determina elementele
caracteristice ale rutei. Urmtorul mesaj este asociat cu o aciune de tip return, dup care urmeaz distrugerea
obiectului anonim de ctre obiectul i. n sfrit, avem i un exemplu de trimitere a unui semnal de la c la p.
Cititorul atent i curios simte infuzia de semantic dintr-o astfel de diagram, precum i numeroasele probleme,
nc neclare, asupra crora va trebui s revenim n continuare.
Secvenare
n practica descrierii interaciunilor dintre obiecte, un obiect trimite un mesaj altui obiect; receptorul, la
rndul lui, trimite un mesaj altui obiect .a.m.d. Acest potenial flux de mesaje formeaz o secven. Orice
secven are un nceput, care este localizat ntr-un proces sau fir de execuie. Secvena poate s fie activ, cel
mult ct timp este activ procesul sau firul de execuie.
Fiecare proces i fir de execuie din interiorul unui sistem definete un flux de control distinct i n interiorul
fiecrui flux mesajele sunt ordonate n secvene care in cont de succesiunea lor n timp. Pentru o mai bun
vizualizare a scevenelor de mesaje, n UML putem modela explicit ordinea de intrare a mesajului, relativ la
nceputul secvenei din care face parte, prin prefixarea mesajului cu un numr de secven, separat cu simbolul
: de mesaj. De domeniul uzualului este s specificm fluxuri de control procedurale, redate folosind o
sgeat de tipul celei din Figura 7.4.
2:selectN(S)
s:Student
2.2:Insert(m)
n:Note
2.2
f:FoaieMaricola
2.1:m=CalcMed()
p:Persoana
o:OreLucrate
2:generare(o)
f:Fluturas
Figura 7.5. Secven plata
n practica modelrii UML distincia dintre secvena plat i cea procedural este subtil. De exemplu,
modelarea interaciunilor din perspectiva contexte de utilizare se preteaz la utilizarea secvenelor plate. Odat
cu adncirea procesului de rafinare a soluiei vom fi nevoii s folosim i secvenele procedurale, omniprezente
n oferta limbajelor de programare pentru organizarea fluxurilor de prelucrare.
context de
utilizare
actor
Consultare
planuri de
invatamant
Decan
nume actor
Validare
utilizator
nume cu cale
Financiar::PreluarePontaj
actor
Client
generalizare
actor
ClientPersoanaFizi
ca
ClientPersoanaJuridica
2.
Consultare
planuri de
nvmnt
Gestiune
planuri
colaborare
realizare
context de utilizare
Figura 7.9. Realizarea unui context de utilizare
Trecerea de la posibilitatea de a asocia unui context de utilizare o colaborare care l realizeaz, n contextul
sistemului, ca ntreg, este o problem nou, care este rezolvat corect dac deciziile arhitecturale sunt luate n
zodia inspiraiei.
Relaia de generalizare
Generalizarea ntre contexte de utilizare este asemntoare generalizrii dintre clase. Mai exact, aceasta
nseamn c orice context de utilizare copil motenete comportamentul i semantica contextului de
utilizare printe; copilul poate aduga elemente de comportament noi sau poate suprascrie
comportamentul printelui. De asemenea, printele poate fi substituit de oricare dintre copii lui (dac ne
exprimm n termeni de instane).
De exemplu, n sistemul informaional al unei bnci putem avea un context de utilizare Validare utilizator
(responsabil de verificarea identitii unui utilizator). Putem, de asemenea, avea doi copii specializai ai acestui
context de utilizare (Verificare parol i Scanare retin). Fiecare dintre aceste dou contexte se comport la fel
ca Validare utilizator, putnd fi aplicate oriunde apare Validare utilizator, n plus, fiecare putnd aduga
propriul comportament (primul, prin verificarea unei parole textuale, al doilea prin verificarea ablonului retiniar
unic al utilizatorului).
Notaia pentru relaia de generalizare este cunoscut de la generalizarea ntre clase.
Relaia de includere
O relaie de includere ntre contexte de utilizare se refer la faptul c un context de utilizare de baz
ncorporeaz explicit comportamentul unui alt context de utilizare la o locaie specificat n baz .
Contextul de utilizare inclus nu poate opera singur niciodat, ci doar instaniat ca parte a unui context de utilizare
de baz, care l include.
Folosim relaia de includere pentru a evita descrierea aceluiai flux de evenimente de mai multe ori, prin
descrierea comportamentului comun ntr-un context de utilizare separat, care va fi inclus n unul sau mai multe
contexte de utilizare de baz. O relaie de includere se reprezint ca o relaie de dependen marcat cu
stereotipul include. n descrierea asociat contextului de utilizare de baz, includerea este marcat ca n
exemplul de mai jos.
Fluxul principal de evenimente:
Preluare nume utilizator i parol.
(Validare parol).
Configurare sesiune.
Start sesiune.
include
Relaia de extindere
O relaie de extindere ntr contexte de uilizare se refer la faptul c un context de utilizare de baz
ncorporeaz implicit comportamentul unui alt context de utilizare, la o locaie specificat indirect de
contextul de utilizare care realizeaz extinderea.
Folosim relaia de extindere pentru a modela o parte a unui context de utilizare pe care utilizatorul o percepe
ca fiind un comportament opional al sistemului. n acest mod, separm comportamentul opional de
comportamentul imperativ.
O relaie de extindere este redat ca o relaie de dependen, marcat cu stereotipul extend. Punctele de
extensie pot fi precizate ca simple etichete n fluxul principal de evenimente, ca mai jos:
Fluxul principal de evenimente:
include (Validare parol).
Configurare sesiune( setare_drepturi_suplimentare).
Start sesiune.
n exemplul de mai sus setare_drepturi_suplimentare este un punct de extensie. Ideea este c,
pentru un utilizator obinuit se face validarea parolei, configurarea standard a sesiunii i nceperea sesiunii.
Pentru un utilizator cu privilegii, va fi executat un context de utilizare care permite stabilirea resurselor
suplimentare necesare utilizatorului.
n sfrit, diagramele de contexte de utilizare mai pot conine pachete, folosite pentru a grupa elementele
modelului n uniti mai mari, cu scopul de a mri lizibilitatea modelului.
Uneori, diagramele de contexte de utilizare pot conine i instane ale contextelor de utilizare, ndeosebi
cnd dorim s vizualizm un sistem specific de execuie.
obiecte
legturi
mesaje
Atunci cnd este cazul, o diagram de interaciune mai poate conine note i constrngeri.
Diagrame de secven
Cum am mai spus, o diagram de secven pune accent pe ordonarea n timp a mesajelor. Cum se poate
vedea i n Figura 7.10, realizarea unei diagrame de secven presupune, plasarea, pentru nceput, a obiectelor
care particip la interaciune, n partea de sus a diagramei, de-a lungul axei absciselor, figurat simbolic.
Obiecte
s:Student
m:FoaieMatricola
n:Note
f:FluxFoiMatricole
Timpul
<<create>>
return
prelNote(m)
setDatePer()
insert(m)
<<destroy>>
linia vieii
print()
n sfrit, monopolizarea controlului de ctre o aciune (n sensul c aceasta nu poate pasa controlul aciunii
altui obiect) se indic, dac se consider necesar, ca un dreptunghi al crui interior poate suporta efectul de
umbrire.
Diagrame de colaborare
O diagram de colaborare pune accent pe organizarea obiectelor care particip la o interaciune. Dup cum
se poate vedea i n Figura 7.12, realizarea unei diagrame de colaborare poate ncepe prin reprezentarea
obiectelor care particip la interaciune, n calitate de vrfuri ale unui graf. n al doilea rnd, se adaug legturile
dintre obiecte, n calitate de arce ale grafului. n sfrit, legturile n cauz sunt mbogite semantic prin ataarea
de mesaje pe care obiectele le trimit sau le primesc.
n acest fel, persoana care urmrete o diagram de colaborare beneficiaz de indicaii vizuale clare relativ
la fluxul de control al interaciunii, fr a pierde din vedere organizarea structural a obiectelor care colaboreaz.
s:Student
1:<<create>>
2:setDatePers()
2.3:insert(m)
<<global>>
m:FoaieMatricola
f:FluxFoiMatricole
2.3.1:<<destroy>>
2.1:prelNote(m)
2.2
<<global>
>
n:Note
Figura 7.12. Diagram de colaborare
Diagramele de colaborare au dou caracteristici care le deosebesc de diagramele de secven. Mai nti, este
vorba de indicarea modului n care un obiect este legat de altul (=calea de acces la obiect).
n acest scop, putem ataa legturii un stereotip de cale la captul unei legturi, indicnd natura vizibilitii
obiectului vizat, pentru obiectul care expediaz mesajul. n Figura 7.12, f este global pentru m, de exemplu.
n al doilea rnd, este vorba de sistemul de secvenare prin ataare de numere de secven explicite. Pentru a
specifica ordonarea n timp a mesajelor, mesajul este prefixat cu un numr (ncepnd cu mesajul numrul 1),
incrementnd cu o unitate prefixul fiecrui mesaj nou (2,3,...).
n situaia n care avem imbricare de mesaje, se apeleaz la numerotarea zecimal Dewey (ceea ce
nseamn c, dac 1 este primul mesaj, atunci 1.1 poate fi primul mesaj imbricat n 1, 1.2 este al doilea mesaj
imbricat n 1, etc. ). Se poate vizualiza imbricarea mesajelor pe oricte nivele dorim. Dup cum se vede i n
Figura 7.12, de-a lungul aceleeai legturi putem reprezenta mai multe mesaje (eventual cu direcii de expediere
diferite) dar avnd numere de secven unice.
De cele mai multe ori, n practic modelm fluxuri de control secveniale. Atunci cnd este cazul , putem
modela i fluxuri de control mai complexe (iteraii sau ramificri). O iteraie nseamn o secven repetat de
mesaje. Pentru a modela o iteraie, trebuie s prefixm numrul de secven al mesajului cu o expresie iteraie de
tipul [i:=1..n] sau, pur i simplu * dac dorim s semnalm prezena iteraiei fr a specifica alte detalii.
O iteraie indic faptul c mesajul vizat i orice mesaj imbricat vor fi repetate n conformitate cu expresia
asociat iteraiei.
Pentru a indica mesaje cu execuie condiionat, mesajele n cauz pot avea numrul de secven prefixat cu
o clauz de condiie, de tipul [x0]. Un mesaj alternativ va avea acelai numr de secven, dar prefixat de o
condiie n relaia de SAU EXCLUSIV cu celelalte mesaje avnd acelai numr de secven.
UML nu impune o anumit sintax pentru expresiile din interiorul parantezelor drepte. Putem folosi
convenii pseudocod sau sintax specific unui anumit limbaj de programare.
Deoarece o diagram de activitate este un gen de main de stare, va avea toate caracteristicile unei maini
de stare. Aceasta nseamn c diagramele de activitate pot conine stri simple i compuse, ramificri (specifice
unor prelucrri secveniale sau paralele), etc.
Evident, asemenea tutror celorlaltor diagrame, diagramele de activitate mai pot conine i constrngeri.
Selectare etaj
I:=I+1
aciuni simple
Expresii
Start
V[I]:=I+10
Tranziiile
n momentul n care o aciune sau o activitate este terminat fluxul de control este preluat de urmtoarea
aciune sau activitate. Trecerea de la o stare la alta se numete tranziie i se reprezint ca o linie simpl
orientat (a se vedea Figura 7.14).
Semantic vorbind, acest gen de tranziii, se numesc tranziii fr declanator sau de terminare, deoarece
controlul trece de la starea surs la starea destinaie de ndat ce aciunea/activitatea din starea surs este
terminat.
starea de start
stri de aciune
tranziii
starea final
Figura 7.14. Reprezentarea tranziiilor n UML
n momentul n care aciunea unei stri surs date este terminat, se va executa aciunea specific ieirii,
dac exist vreuna. Dup care, necondiionat, are loc tranziia ctre urmtoarea aciune sau activitate. Urmeaz
executarea aciunii specifice intrrii n noua stare (dac exist) i executarea aciunii/activitaii asociate noii stri,
etc. Exist situaii n care fluxul de control evolueaz nedefinit, dar exist i foarte multe situaii n care acesta
nceteaz la ntlnirea unei stri finale.
Notaiile pentru starea iniial i starea final pot fi observate n Figura 7.14.
Ramificarea (branching) i unirea (merge)
Tranziiile secveniale, simple, sunt destul de obinuite, dar nu sunt singurele ntlnite n procesul de
modelare a fluxurilor de control. La fel ca n cazul schemelor logice (hrile de fluxuri flowchart-uri), putem
apela la ramificri pentru a specifica tranziii alternative, ghidate de o anumit expresie boolean. O ramificare,
se introduce, din punct de vedere al notaiei, ca un romb; poate avea o singur tranziie la intrare i dou sau mai
multe tranziii la ieire. Pe fiecare tranziie de ieire se indic o expresie boolean, evaluat la intrarea n
ramificare. Evident, expresiile boolene asociate tranziiilor care ies dintr-o ramificare (numite i expresii de
gard) trebuie s fie mutual exclusive. Un exemplu, n Figura 7.15.
Se mai adaug i faptul c simularea unei iteraii este destul de simpl, folosind ramificarea.
Diagrama din Figura 7.15 poate fi completat, ca semantic i din punct de vedere al notaiei, ca n Figura
7.16.
Do verificareCont(s)
ramificarea
(branch, n englez)
[else]
Do afisareStareCont()
[exist suma]
expresii de gard
Do tranzactie(s)
[else]
Do afisareStareCont()
[exista suma]
Do tranzactie(s)
bifurcaia
GtirePizza
PreparareSos
DestupareSticlVin
Combinare
mbinri
Folosind sintaxa UML, specificai cerinele fa de un sistem soft care automatizeaz fluxurile
informaionale ale unei case de schimb valutar.
2.
Folosind sintaxa UML, specificai cerinele fa de un sistem soft care automatizeaz fluxurile
informaionale ale secretariatului unei coli generale.
3.
Folosind sintaxa UML, specificai cerinele fa de un sistem soft care automatizeaz fluxurile
informaionale ale secretariatului unei faculti.
4.
Folosind sintaxa UML, specificai cerinele fa de un sistem soft care automatizeaz fluxurile
informaionale ale unei conferine tiinifice.
5.
Elaborai diagrama claselor aferent soluiei UML a problemei automatizrii fluxurilor informaionale
ale unei case de schimb valutar
6.
Elaborai diagrama claselor aferent soluiei UML a problemei automatizrii fluxurilor informaionale
ale secretariatului unei faculti.
7.
Elaborai diagrama claselor aferent soluiei UML a problemei automatizrii fluxurilor informaionale
ale secretariatului unei coli generale.
8.
Folosind sintaxa UML, s se reprezinte aspectele statice ale aplicaiei care automatizeaz fluxurile
informaionale ale unei case de schimb valutar.
9.
Folosind sintaxa UML, s se reprezinte aspectele statice ale aplicaiei care automatizeaz fluxurile
informaionale ale secretariatului unei coli generale.
10. Folosind sintaxa UML, s se reprezinte aspectele statice ale aplicaiei care automatizeaz fluxurile
informaionale ale secretariatului unei faculti.
11. Elaborai arhitectura UML a soluiei problemei informatizrii unei universiti.
12. Elaboraii arhitectura UML a soluiei problemei realizrii unei librrii virtuale care funcioneaz pe
lng o editur.
13. Elaborai arhitectura UML a soluiei problemei realizrii unui sistem de informare i documentare care
funcionez pe lng o primrie.
14. Elaborai arhitectura UML a soluiei problemei informatizrii fluxurilor informaionale ale unui birou
notarial.
BIBLIOGRAFIE SELECTIV
[1] Bennet, S., McRobb, S., Farmer, R., Object Oriented Systems Analysis and Design using UML, McGrawHill Publishing Company, 1999
[2] Booch, G., Rumbaugh, J., Jacobson, I., The Unified Modeling Language User Guide, Addison-Wesley,
1999
[3] Booch, G., Object Oriented Design with Applications, The Benjamin/ Cummings Publishing Company,
Inc., 1991
[4] Fowler, M., UML Distiled, Second Edition, Addison Wesley, 2000
[5] Meyer, B., Object Oriented Software Construction, Prentice-Hall, 1997
[6] Priestley, M., Practical Object Oriented Design, McGraw-Hill, 1997
[7] Quatrany, T., Visual Modeling with Rationale Rose and UML,
Addison-Wesley, 1998
[8] Rumbaugh, J., Jacobson, I., Booch, G., The Unified Modeling Language Reference Manual, AddisonWesley, 1999
CUPRINS
1