Sisteme integrate de Sisteme integrate de Sisteme integrate de Sisteme integrate de proiectare i programare proiectare i programare proiectare i programare proiectare i programare
Elemente introductive n ingineria softului (Suport de curs pentru semestrul I)
Dorin Bocu Dorin Bocu Dorin Bocu Dorin Bocu
Motto-ul cursului
Nevoia de a cunoate a dus la inventarea conceptelor. Nevoia de a explica cunoaterea a dus la inventarea meta-conceptelor. Nevoia de a ascunde o parte din cunoatere a dus la inventarea limbajelor de modelare. nainte de a fi un "stil de interpretare", arta de a modela este un mod de" a face compoziie".
Autorul
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 teoretico- aplicative 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 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.
Capitolul 1 Probleme a cror rezolvare depinde esenial de ingineria sistemelor soft
Sistemele care se adapteaz uor la condiiile de mediu sunt nzestrate cu subsisteme informaionale performante i fiabile. De exemplu, conducerea unei afaceri astfel nct aceasta s funcioneze fr sprijin din afar, ba chiar s fie generatoare de resurse ale dezvoltrii, este o problem complex care pretinde persoanelor implicate cunotine i abiliti remarcabile relativ la achiziionarea datelor necesare pentru cunoaterea strii afacerii, interpretarea corect a datelor i a conexiunilor dintre acestea i, pe aceast baz, elaborarea de decizii. Cunoscnd modul de a gndi i aciona al unor manageri, fcnd haz de necaz, deducem, i din cele spuse mai sus, c pentru a avea timp s doarm, unii manageri confund informarea sistematic cu arta de a supravieui ct mai mult informndu-se fr metod.
1.1 Ce este ingineria sistemelor soft? Mai nti, s observm frecvena destul de mare cu care ntlnim sau vom ntlni sintagma ingineria softului. Pentru comoditate o voi nota, prescurtat i IS. Din dorina de a nchega repede un dialog cu cititorul, anticipez c:
Ingineria softului este o ramur a tiinei calculatoarelor, n permanent evoluie, care fundamenteaz teoretic o parte din activitile specifice realizrii sistemelor soft.
Spunem o parte deoarece realizarea unui sistem soft are, de regul, n spate, cunotine din multe alte ramuri ale tiinei calculatoarelor precum i din alte domenii (algoritmic, programarea calculatoarelor, limbaje formale, cercetri operaionale, psihologie, teoria general a sistemelor, etc.). Tentant i interesant problema definirii riguroase a sintagmei tiina calculatoarelor. Autorul acestei lucrri vede n spatele acestei sintagme domenii precum: algoritmica, teoria matematic a algoritmilor (calculabilitate i decidabilitate), bazele matematice ale sistemelor de calcul, bazele logice ale sistemelor de calcul, teoria formal a specificrii limbajelor de programare, problematica limbajelor de programare, bazele contructive ale sistemelor de calcul (un domeniu de mare complexitate i cu o dinamic remarcabil), inteligena artificial (un domeniu n care cutrile sunt din ce n ce mai ramificate i mai profunde), ingineria softului, teoriile dezvoltate n jurul problematicii bazelor de date, teoriile dezvoltate n jurul arhitecturilor de tip reea, etc. Este clar, sper i pentru cei care nc mai vd n informatic un exerciiu de utilizare inspirat a tastaturii, faptul c tiina calculatoarelor este variat ca preocupri, solicit intens intelectul i, nc un amnunt important, viteza cu care afirmaiile din informatic devin istorie este mult mai mare dect viteza cu care se ntmpl acelai lucri n fizic, sau matematic, de exemplu. Care sunt, totui, acele activiti specifice realizrii sistemelor soft care cad sub incidena IS? Le putem rezuma astfel:
1 0 Abstractizarea soluiei unui sistem soft, prin care desemnm demersul conceptual n urma cruia specialistul n IS trece de la enunul problemei la soluia acesteia.
2 0 Organizarea procesului de abstractizare (modelare) a soluiei unui sistem soft. ndeosebi n cazul sistemelor soft de complexitate mare i medie modul de organizare a efortului de modelare poate influena hotrtor calitatea unui sistem soft.
3 0 Reprezentarea soluiei unui sistem soft de-a lungul ntregului proces de modelare; documentarea complet a soluiei sistemului soft. Este vorba, n esen, de rezolvarea eficient a unor probleme de comunicare ntre participanii la realizarea unui sistem soft, precum i de rezolvarea unor probleme de comunicare ntre realizatorii sistemului i diferitele categorii de beneficiari ai sistemului soft.
4 0 Optimizarea managementului procesului de realizare a unui sistem soft. Ca n orice alt tip de industrie i n industria softului conteaz enorm (pentru lansarea pe pia cu succes a unui sistem soft) calitatea actului de management.
Sloganul cheie n IS ar trebui s fie: Cum se poate sistematiza ,eventual automatiza, procesul de realizare a unui sistem soft de calitate, ieftin i obinut n timp util?. IS ncearc (n diferite chipuri i de mai mult timp) s ne nvee cum poate deveni realitate acest slogan. Modalitatea prin care IS rezolv aceast problem este (simplificnd lucrurile) propunerea de metodologii de dezvoltare a softului (MDS). Istoria MDS este lung i destul de dificil de sintetizat fr a omite numeroase aspecte interesante. Firul cluzitor al acestei istorii ar putea fi, totui, definit astfel:
1 0 Fiecare metodologie dorete s instaureze o anumit rigoare n procesul de elaborare a soluiei unui sistem soft.
2 0 Fiecare metodologie se individualizeaz prin accentul pe care l pune pe un anumit element definitor (unul sau mai multe concepte de baz, unul sau mai multe principii de baz, formalizmul de reprezentre, etc.).
3 0 Fiecare metodologie dorete s ofere suport ct mai consistent pentru realizarea de sisteme soft de calitate.
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.
Figura 1.1 Binomul cercetare-aplicaii n evoluia MDS
Firme/Persoane implicate n realizarea de sisteme soft Idei, cerine, soluii pariale noi Laboratoare de cercetare
MDS nou 1.2 Ce este un sistem soft? Destul de dificil un rspuns de tip definiie la aceast ntrebare deoarece diversitatea creaiior care concureaz la calitatea de sistem soft este din ce n ce mai mare. Astfel, poate fi sistem soft un program executabil, obinut cu ajutorul unui compilator C++. Tot sistem soft putem considera i un sistem de programe executabile care coopereaz pentru rezolvarea unei probleme date. De ce n-am socoti sistem soft un compilator, un SGBD sau chiar un sistem de operare? Tot un sistem soft poate fi considerat, cu deplin temei, un control ActiveX. De fapt, cnd vine vorba de tehnologiile soft de ultim or (ndeosebi cele promovate de Microsoft) noiunea de sistem soft face fa unor conotaii cu totul remarcabile (DLL-urile, controalele OLE, obiectele programabile, ali derivai ai tehnologiilor COM i DCOM, etc.). Evident, se poate ncerca, pentru a face mai mult ordine n prezentare, o clasificare a aplicaiilor recunoscute de platforma Microsoft/Win32. Aceste tipuri de aplicaii sunt:
aplicaia de tip consol; este aplicaia care aduce n lumea Windows caracteristicile de baz ale unei aplicaii cu interfa orientat pe text.
aplicaii Win32 tradiionale; o astfel de aplicaie are toate elementele care sunt prezente ntr-o aplicaie Windows complet (fereastr de afiare, bar de meniuri, bar cu instrumente, bar de stare, etc.). O stfel de aplicaie, spre deosebire de aplicaia de tip consol are mari disponibiliti de cooperare cu sistemul de operare Windows.
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 funcii, specificarea/scierea de cod generic, specificarea/scrierea de cod reentrant, cunoaterea particularitilor programrii sub Windows, etc..
Controalele ActiveX; sunt un gen de mini-aplicaii care pot fi ncapsulate n orice obiect de tip container. Container poate fi fereastra cadru a unei aplicaii, sau un document HTML. Reprezentnd, de fapt, extinderea tehnologiei OLE la cerinele universului INTERNET, ActiveX permite programatorilor s sporeasc gradul de funcionalitate al programelor fr prea mult efort. Prin utilizarea tehnologiei ActiveX, programatorul consimte s respecte o serie de reguli, s surmonteze o serie de obstacole, dar are i avantajul de a beneficia de efortul de modelare al altor specialiti n IS, n caz de convergen de interese cu acetia.
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:
1 0 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.
2 0 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.
3 0 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.
1.3 Probleme cu care se confrunt specialitii n IS Familiarizai oarecum cu ncrctura semantic de baz a noiunilor discutate n paragrafele 1.1 i 1.2, n acest paragraf vom analiza unele dintre problemele care au jucat i joac un rol important n evoluia IS. De menionat faptul c i acesta este un subiect n care abordrile abund deoarece universul problemelor IS poate fi analizat din mai multe puncte de vedere iar n interiorul unui punct de vedere utiliznd formalizme diferite. De exemplu, problema elaborrii soluiei unui sistem soft poate fi discutat, la un nivel de formalizm socotit convenabil, n scopul dezvoltrii abilitilor unui specialist n IS sau n vederea informrii exacte a managerilor cu privire la particularitile i utilitatea unui astfel de demers. Specialistul n IS vrea s nvee ct mai multe detalii despre arta de a realiza sisteme soft de calitate. Managerul care se instruiete pe probleme de IS este interesat de cunoaterea invarianiilor unui astfel de demers pentru a decide n cunotin de cauz modul n care, cu minimum de resurse se pot obine maximum de rezultate (att pe termen scurt ct i, eventual, pe termen mediu sau lung) prin automatizarea fluxurilor informaionale ale afacerii n conducerea creia este implicat. Pentru a clarifica unele probleme de limbaj care ar putea s apar n continuare, s precizm faptul c n literatura de specialitate anglo-saxon se consider c trei categorii de indivizi sunt foarte importani pentru succesul sau eecul unui proiect de realizare a unui sistem soft. Aceste categorii sunt:
-utilizatorii direci (end-users) ai sistemelor soft; -utilizatorii indireci (clients) ai sistemelor soft; -specialitii n IS.
Probleme datorate perspectivei utilizator direct Opernd la extreme, utilizatorul direct al unui sistem soft este sau un individ avnd afiniti cu lumea IS sau un individ a crui cultur informatic este structurat, modest, n jurul abilitilor necesare pentru utilizarea sistemului soft. n primul caz este vorba de un utilizator a crui prere despre calitile sistemului soft poate fi deosebit de activ i pertinent. Al doilea tip de utilizator este, n general, sensibil la confortul oferit de utilizarea sistemului soft. Ambele categorii de utilizatori, ntr-o form sau alta, se pot considera la originea revendicrii pernanente: sporirea interactivitii sistemului soft cu utilizatorul direct, promovnd mijloace de comunicare ct mai ergonomice. n mod evident, interactivitatea sistem soft-utilizator direct n sensul de mai sus presupune proiectarea i realizarea efectiv a unor interfee ergonomice. ntr-o interfa ergonomic, utilizatorul direct gsete funcionalitatea dorit de o manier care nu pune la ncercare nici nelegerea, nici rbdarea i nici sntatea acestuia. Practica a demonstrat i demonstreaz faptul c este o art s proiectezi interfee inteligibile, este o sarcin mult mai complicat s realizezi interfee care rspund operativ i dau dovad de maxim ngduin fa de capriciile utilizatorului direct; n sfrit, destul de pretenioas este i misiunea de a realiza interfee care nu numai c nu duneaz facultilor psihice ale utilizatorului direct, ba chiar, ncearc reconfortarea lor. Muli factori care determin calitatea unui sistem soft (problem asupra creia vom reveni, pe larg, n acest capitol) i gsesc o form de manifestare i n modul n care se exprim o interfa n relaia cu utilizatorul. De exemplu, robusteea unui sistem soft, considerat un factor extern de calitate, msoar abilitatea unui sistem soft de a rezista la iniiative din partea utilizatorului direct (transmise prin intermediul interfeei) care depesc cerinele specificate ale sistemului soft.
Probleme datorate perspectivei utilizator-indirect 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. Simbolic vorbind, funcia obiectiv care st la baza optimizrii are multe variabile i o expresie necunoscut. De aceea nu se poate vorbi serios despre o optimizare n sens matematic ci despre efortul permanent de a imagina procedee de stpnire a complexitii problemelor care apar n timpul realizrii unui sistem 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. Pentru a menine n echilibru pozitiv nevoia de sistematizare i tendina unor specialiti n IS de a ajunge la soluie dnd cu tifla sistematizrii, este nevoie de mult abilitate din partea celor care specific paradigme de modelare a softului (dac cititorul mi ngduie aceast exprimare). Istoria a reinut de-a lungul erei informaticii exemple de paradigme n care normarea i formalizmul au descurajat pe muli amatori de sistematizare, exemple de paradigme care au soluionat satisfctor doar o parte din probleme, lsnd la latitudinea specialitilor n IS rezolvarea altora, exemple de paradigme care mbin elegant formalizmul cu puterea de sugestie n rezolvarea unui numr ct mai mare de probleme, etc. Din pcate (sau poate din fericire) universul IS, la capitolul probleme posibile, este deschis. 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 obiecte). 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.
Figura 1.2 Exemplu de ciclu de abstractizare a soluiei unui sistem soft
Figura 1.3 Piramida managementului din perspectiv sistemic.
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.
Nivel conceptual (Ce face sistemul soft) Nivel logic (Cine, cnd i unde execut prelucrrile) Nivel operaional (Cum se efectueaz prelucrrile) Soluia conceptual Soluia logic Sistem soft operaional 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. Punctul de vedere pe care l prezentm reprezint o sintez a expunerii fcut pe aceast tem n [10]. 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:
Excepiile externe sistemului soft; Excepiile interne sistemului soft. Frontiera dintre aceste dou clase de excepii trebuie privit cu mult circumspecie deoarece, n realitate este oricnd posibil ca, potenial, o excepie extern s induc o excepie intern i invers. De asemenea, s mai observm c n timp ce excepiile externe pot fi nfruntate descurajnd iniiativele nespecificate ale utilizatorului, problematica excepiilor interne este mult mai complicat. n cazul sistemelor care gestioneaz relaia cu utilizatorul prin intermediul unei interfee cu o semantic deosebit de complex, excepiile externe, nainte de a fi inhibate trebuie identificate. Iat, deci, nc o problem de care specialitii n IS se lovesc dac doresc s scoat pe pia sisteme soft care rmn pe picioare la apariia unor excepii. Se poate formula i un fel de principiu relativ la odiseea tratrii excepiilor ntr-un sistem soft:
n timp ce interfaa unui sistem soft i sporete receptivitatea fa de curiozitatea i comoditatea utilizatorilor, efortul de tratare complex i corect a posibilelor excepii crete astfel nct poate deveni o problem care nu poate fi rezolvat dect prin metoda aproximaiilor succesive.
Este cazul sistemelor de operare, de exemplu, a cror robustee este, adeseori, rezultatul unui proces de ajustare pe banii i pe rbdarea diferitelor categorii de utilizatori.
Extensibilitatea Este abilitatea unui sistem soft de a se adapta uor la modificri n faza de specificare Problema extensibilitii este o problem de situare pe scala complexitii: programele mici sunt uor de modificat; sistemele soft din ce n ce mai mari devin tot mai dificil de adaptat la modificri. Rmnnd n sfera afirmaiilor valabile, dar generale, putem aduga c dou principii sunt utile n realizarea de sisteme soft extensibile. Acest principii sunt:
Simplitatea proiectrii Ideea de baz este c o arhitectur simpl este ntotdeauna mai uor de modificat dect o arhitectur complex. Inevitabil, ns, vine ntrebarea: cnd spunem c un sistem soft are o arhitectur simpl? Un rspuns complet i precis la aceast ntrebare nu ncape n paginile acestei cri. Simplitatea este un deziderat urmrit de orice creator care se respect. Faptul c exist destule creaii ale omului care uimesc prin dificultatea cu care i transmit mesajul (inepii literare, subproduse cinematografice, discursuri politice sterile, etc.) dovedete caracterul imprevizibil al modului n care un creator ajunge s opereze cu avantajele simplitii n munca sa. Nu se poate algoritmiza obinerea simplitii pentru c, n forma ei cea mai nalt de exprimare, este sinonim cu creaia. O creaie plsmuit cu talent va provoca ntotdeauna exclamaii de genul:Ce simplu era!, Foarte uor de neles!, Nici c se putea mai bine!, Cum de nu mi-a trecut prin cap?!, etc. O creaie plsmuit doar pentru a umple fizic unul din multele goluri care exist n viaa oamenilor provoac exclamaii de tipul:Doamne, ce mbcseal!, Nu neleg mai nimic!, Mai bine lips!, Aa ceva puteam i eu s fac!, etc. Nu este pierdere de vreme s urmrim simplitatea i n IS. Doar c, i aici, obinerea ei cere timp, pentru a lefui soluia unei probleme, astfel nct s putem obine un sistem soft care este, cel puin:
-lizibil; -corect modularizat; -eficient n timpul execuiei. Sunt nenumrate motive, ns, pentru care n IS se sacrific simplitatea, asigurndu-se, de exemplu, corectitudinea i robusteea. Enumerm cteva dintre aceste motive: necesitatea scurtrii termenelor de execuie, modificarea paradigmelor de modelare, modificarea limbajelor de programare, modificarea sistemelor de operare, creterea puterii de calcul a sistemelor hard (frecven de lucru foarte mare+ dimensiuni, de vis altdat, ale memoriei RAM).
Descentralizarea Dac extensibilitatea este dorit cu orice pre i poate c nu exist suficient timp pentru a obine un sistem soft cu arhitectur simpl, atunci mai avem un punct de sprijin n descentralizare: cu ct autonomia modulelor care compun sistemul soft este mai mare cu att mai mare este probabilitatea ca o schimbare simpl s afecteze un numr redus de module.
Reutilizabilitatea Este abilitatea componentelor unui sistem soft de a putea fi utilizate la dezvoltarea mai multor aplicaii diferite. Necesitatea reutilizrii unor componente soft se ntemeiaz pe observaia c, adeseori, sisteme soft diferite pot fi construite pe baza unor soluii-ablon similare. Promovarea sistematic a reutilizrii influeneaz ali factori de apreciere a calitii sistemelor soft, precum corectitudinea i fiabilitatea. Reutilizarea este un factor cardinal n multe paradigme de programare i modelare. Astfel, programatorii Windows pot utiliza n procesul de realizare a propriilor aplicaii, potenialul MFC (Microsoft Foundation Class). De asemenea, mediile vizuale de programare (Delphi, Visual Basic, Visual C++, CBuilder, etc.) ofer exemple consistente de reutilizare.
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. Schema clasic n care apare problema portabilitii este prezentat n Figura 1.4. Orice dificultate n portarea unui sistem soft de pe o platform pe alta este surmontabil dac :
se fac modificrile necesare n codul surs(uneori aceste modificri pot fi dramatice); Exist compilatorul care tie s genereze cod executabil pentru platforma int (dac nu exist, trebuie cumprat, ceea ce nseamn c portabilitatea poate s coste). Orice dificultate n portarea unui sistem soft de pe o platform pe alta este surmontabil dac :
se fac modificrile necesare n codul surs(uneori aceste modificri pot fi dramatice); Exist compilatorul care tie s genereze cod executabil pentru platforma int (dac nu exist, trebuie cumprat, ceea ce nseamn c portabilitatea poate s coste).
Figura 1.4 Dependena de platform i efectele asupra portabilitii n varianta clasic Evident, ar fi mult mai bine dac aceste dou probleme nu ar exista. Din pcate probelmele exist i specialitii n IS trebuie s ia n calcul la specificare i aspecte care afecteaz portabilitatea sistemului soft. O situaie aproape diametral opus celei prezentate n Figura 1.5 o reprezint soluia Java pentru asigurarea portabilitii aplicaiilor. De remarcat faptul c situaia descris n Figura 1.5 este posibil n condiiile n care toat comunitatea recunote o anumit versiune de compilator Java. Trecerea de la o versiune la alta se face respectnd regulile de portare potrivit crora documentul neles de o versiune oarecare a unui sistem soft este totdeauna neles de o versiune mai nalt, nu i invers.
Figura 1.5 Soluia Java la problema portabilitilor sistemelor soft.
Cod surs/care poart amprenta mediului de execuie i a mainii gazd scontate Compilator/care poart amprenta mediului de execuie int i a mainii gazd scontate
Cod executabil/dedicat perechii (mediu de execuie, main gazd) recunoscut de compilator.
Cod Java Compilator Java Bytecode Java (Independent de platform) Interpreter Java (Pentium) Interpreter Java (Power PC) Interpreter Java (SPARC) Aceasta este, pn la data scrierii acestei cri singura modalitate de a dezvolta sisteme ct de ct portabile. Se pltete, ca de fiecare dat, tribut pentru acest ctig, la capitolul performan n timpul execuiei. Dar, ce mai conteaz, omenirea viseaz cu ochii deschii, ceea ce nseamn c ntr-o bun zi vom ajunge s dm alt sens i portabilitii.
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. Despre unele dintre aceste subiecte vom avea un cuvnt de spus n Capitolul 4.
Capitolul 2 Ce este o metodologie de dezvoltare a softului?
De mult (nu putem spune exact cnd deoarece nu tim nici cnd a nceput povestea omului) s-a nscut ideea de paradigm . Poate, la nceput paradigma avea nelesul pe care ni-l dezvluie Dicionarul explicativ al limbii romne. n zilele noastre, cnd natura de-abia se mai regsete printre creaiile omului, nu putem supravieui dect inventnd, devornd i iar inventnd paradigme din ce n ce mai sofisticate. Cnd spun nu putem supravieui m refer la toi cei care, realmente sau doar nchipuindu-i, cultiv o veche ndeletnicire chinezeasc (autoreflexia) pentru a descoperi mcar o parte din taina cunoaterii att de bine ascuns n proiectul Homo Sapiens.
2.1 De ce avem nevoie de MDS? n Capitolul 1 am prezentat o serie de consideraii, a zice cu pretenii de stabilitate structural, referitoare la universul IS. Este, ns, prea devreme pentru a-mi nchipui c ucenicii ntr-ale producerii softului sau creatorii de soft dup reete proprii au devenit adepi convini ai promovrii reetelor IS. n acest paragraf vom inventaria o serie de probleme concrete de care, vrnd-nevrnd, specialistul n IS (afiliat sau nu la o metodologie) se lovete. Procednd astfel legitimm o stare de lucruri ntlnit i n alte domenii ale cunoaterii.
Structura discursului n IS este determinat att de cerine epistemologice specifice ct i de nevoia de organizare a diferitelor forme de manifestare a existentului n procesul de realizare a sistemelor soft.
Evident, o parte din cerinele epistemologice specifice le-am surprins n Capitolul 1. n acest paragraf vom ncerca s evideniem o parte dintre formele de manifestare a existentului n procesul de realizare a sistemelor soft. Dei ne-ar place s semene cu o problem de matematic, este corect s spunem c nu este chiar aa. n matematic, o problem poate suna cam n genul:
Dat triunghiul oarecare ABC, s se afle locul geometric al punctelor M, interioare triunghiului, pentru care S ABM =S ACM .
Nu este cazul s intru prea adnc n consideraii metodice pe marginea rezolvrii acestei probleme. i totui, cineva care vrea s rezolve aceast problem are nevoie de trei puncte de sprijin:
1 0 Posibilitatea de a ncadra problema ntr-o clas tipologic. Dac aceast clas nu exist, gloria rezolvitorului sporete, specificnd clasa respectiv. n cazul nostru, fiind o problem de loc geometric, rigoarea ne cere s identificm locul geometric, dup care s facem verificarea c fiecare punct al locului geometric satisface proprietatea care a stat la baza identificrii locului.
2 0 Odat stabilit clasa tipologic, trebuie s avem control asupra semanticii noiunilor care intervim n enunul problemei. n cazul nostru ne confruntm cu noiuni precum: loc geometric, interiorul unui triunghi, aria unui triunghi i, de ce nu, triunghi.
3 0 Pentru a gsi rezolvarea ne trebuie abilitatea de a valorifica avantajele prezentate la punctele 1 0 i 2 0 n vederea obinerii soluiei problemei. n general, aceast abilitate o au persoanele care sunt capabile de inferen. Abilitatea de a comite inferene autentice o au oamenii inteligeni. Evident, cine rezolv o problem faceun fel de descoperire, deci este un fel de creator. Folosesc sintagma un fel de deoarece face descoperire autentic cel care rezolv primul o problem sau propune i rezolv o problem nou. n cazul problemei noastre, pentru a ne face mai bine nelei ne-ar prinde bine reprezentarea din Figura 2.1.
Figura 2.1.
Din enunul problemei, avem, n mod evident: -ABC oarecare; -M interiorului ABC; S ABM =S ACM .
Tot din enunul problemei face parte i prelungirea lui AM care intersecteaz BC n O i ca urmare avem posibilitatea imediat de a proiecta B i C pe prelungirea lui AM n B ' , respectiv C ' . Acum este momentul inferenei specifice problemei:
S AMB = 2 ' BB AM
S AMC = 2 ' CC AM
S AMB =S AMC BB=CC BBOCCO BO=CO Mmedianei din A a ABC, etc.
n IS situaia este puin modificat. Trecerea de la enun la soluie, n cazul problemelor de complexitate mijlocie sau mare (n care, de regul, se cere modelarea comportamentului unui anumit proces informaional) este mult modificat. Astfel, n forma iniial, enunul problemei poate sesiza nite carene ntr-o activitate care pot fi eliminate prin utilizarea calculatoarelor sau poate intui nite avantaje ntr-o activitate dac se apeleaz la suportul calculatoarelor. n ambele cazuri, pentru a obine enunul complet al problemei se trece la analiza informaional a problemei. Scopul acestei activiti este obinerea unui enun complet al problemei care cuprinde cerinele fa de sistemul soft sub forma unei soluii cu nivel nalt de abstractizare. Activitatea de analiz informaional este dificil i este primejdios ca, din diferite motive, s nu incluzi printre cerine un anumit aspect informaional. Dac s-a pus punct analizei informaionale, trebuie s se treac la elaborarea soluiei tehnice (un fel de documentaie constructiv a sistemului soft). Dei elaborarea soluiei tehnice nseamn descrierea pn la detaliu a componentelor sistemului soft i a legturilor dintre acestea, ceea ce nseamn infuzie treptat de elemente concrete n soluie, n paralel se desfoar i activiti cu pronunat caracter de abstractizare (pentru a elimina redundanele, pentru a optimiza prelucrrile, pentru a optimiza legturile dintre date, pentru a spori rezistena sistemului la modificri, etc.).
De foarte multe ori se poate spune c obiectul analizei informaionale ca i obiectul activitii de obinere a soluiei tehnice au afiniti cu nisipurile mictoare. Ce-i de fcut? Trebuie mult rbdare i abilitate pentru a sesiza invarianii procesului ceea ce ar permite nceperea efortului de modelare.
n situaia n care calvarul obinerii soluiei tehnice a fost depit ncepe activitatea de transpunere a soluiei tehnice n acord cu exigenele de sintaz, semantic i pragmatic specifice unui limbaj de programare. N-a zice c nu exist nisipuri mictoare i n aceast ncercare! n mod cert, numitorul comun al problemelor de matematic cu problemele de informatic este complexitatea. n cazul matematicii predomin complexitatea structural; n cazul informaticii, de cele mai multe ori predomin complexitatea spaial. Dac la aceste elemente se adaug altele, precum: necesitatea reprezentrii soluiei pentru a fi neleas de diferite categorii de utilizatori, necesitatea de a partaja anumite tipuri de resurse n procesul de elaborare a soluiei unui sistem soft, necesitatea de a armoniza efortul de dezvoltare n cazul n care se lucreaz n echip, etc. ne facem o imagine mai precis asupra amnuntelor care alctuiesc specificul unei probleme n IS. Pentru a nfrunta toate aceste probleme i multe altele, comunitatea specialitilor n IS a ncercat nc din epoca de nceput a erei informaticii s ngrdeasc liberul arbitru n procesul de dezvoltare a softului, lsnd, totui, loc de manifestare spiritului creator, prin iniiative de genul:
-studiul teoretic al proprietilor algoritmilor: formalizare a reprezentrilor; clasificarea algoritmilor;
-studiul teoretic al unor metode generale de elaborare a algoritmilor (Backtracking, Greedy, Divide et Impera, Programarea dinamic);
-elaborarea unor metode de programare (programarea structurat, programarea obiect- orientat);
-elaborarea unor metode de analiz a sistemelor informaionale (procedee de investigare, mod de reprezenatare, concepte utilizate, etc.);
-elaborarea unor metode de elaborare a soluiei tehnice (Top-down, HIPO, Warnierr- Orr, etc.);
-dezvoltarea unor elemente suport pentru specialitii n IS (sisteme de documentare, generatoare de programe, medii de dezvoltare a soluiei cu ajutorul calculatorului, etc.);
-specificarea unor procedee de cuantificare a muncii depuse de specialitii IS pentru realizarea sistemelor soft;
-elaborarea unor metode de planificare a efortului de dezvoltare a sistemelor soft.
Acumulrile n direciile semnalate mai sus sunt impresionante; evoluia abordrilor n IS, att teoretice ct i practice, seamn, metaforic vorbind, cu evoluia populaiilor n sistemele genetice; clauzit de legiti, aparent stochastice, comunitatea specialitilor n IS produce generaii succesive de elemente suport n dezvolatrea softului, le evalueaz, n practic, reine ceea ce este valoros n ele i promoveaz ca parte component n generaiile urmtoare. De la o perspectiv fragmentat sau incomplet asupra procesului de dezvoltare a softului s-a ajuns n ultimii ani la elaborarea unor metodologii unitare de dezvoltare a softului, creaii ale specialitilor n IS puse n slujba specialitilor n IS, cea mai mare parte din viaa unui sistem soft.
2.2. ncercare de caracterizare a unei metodologii generice de dezvoltare a softului n Capitolul 1, paragraful 1.1 am prezentat o list de activiti specifice realizrii sistemelor soft. Aceste activiti sunt:
-abstractizarea soluiei unui sistem soft (ASS);
-desfurarea n timp a (=organizarea) procesului de abstractizare a soluiei unui sistem soft (OPA);
-reprezentarea i documentarea evoluiei unui sistem soft (RDS);
-optimizarea managementului procesului de realizare a unui sistem soft (OMP).
Putem s definim o metodologie generic de dezvoltare a softului astfel:
Un set finit de concepte, principii, norme, convenii i reguli de operaionalizare a acestora, pentru a da rspunsuri satisfctoare problemelor care apar n activitile de tip AAS, OPA, RDS, OMP.
S ncercm, n continuare, o serie de precizri relativ la semantica acestei definiii. (Despre pragmatica acestei definiii, nc nu putem spune mare lucru. Dac am fi vorbit despre o metodologie anume, alta era situaia n ceea ce privete pragmatica.)
Orice metodologie care urmrete priza la public trebuie s fac fa contradiciilor, inerente pentru semantica binomului MDS-specialist n IS. Una dintre contradicii se refer la dorina de a oferi un set relativ restrns de concepte, principii i reguli de utilizare a acestora n opoziie cu aspiraia legitim a oricrui autor de MDS de a oferi sintax care s permit descrierea unei semantici, ct mai bogat posibil. Alt contradicie se refer la nclinaia spre formalizm a spiritelor riguroase n opoziie cu nclinaia spre intuitiv a altora. Nu n ultimul rnd (pentru c mai sunt i alte exemple) semnalez contradicia dintre necesitatea de a standardiza mare parte a procesului de dezvoltare a sistemelor soft i nevoia de exprimare liber resimit de unii specialiti. n alt plan ne ntlnim cu contradicia dintre nevoia de a crete productivitatea muncii i necesitatea de a realiza sisteme soft de calitate. Cei care specific MDS se strduiesc s menin echilibrul ntre aceste contradicii prin diferite mijloace. De exemplu, referitor la prima contradicie, metodologia UML ofer o semantic foarte bogat cu ajutorul unui set bine ales de concepte i principii, oferind i cteva mecanisme de extensie cu ajutorul crora semantica metodologiei poate fi mbogit.
n ceea ce privete capacitatea unei MDS de a oferi suport pentru rezolvarea problemelor de tip ASS, suntem datori cu o serie de precizri importante. Pentru o MDS recomandrile pe care aceasta le face pentru a transforma enunul unei probleme de informatic n soluie executabil pe un calculator real, practic definesc nsi substana metodologiei. Aceste recomandri desemneaz, conform literaturii de specialitate, ciclul de abstractizare al unei MDS. Pentru un specialist n IS prima ntrebare pe care i-o pune n faa unei probleme noi este destul de lung.
Cum s derivez din datele problemei o soluie, respectnd termenele de execuie, fr s dezamgesc utilizatorul direct, ntmpinnd exigenele curente i de perspectiv ale utilizatorului indirect i, chiar dac pare un pic utopie, fr s m stresez peste msur?.
Fr ndoial, o astfel de ntrebare poate avea o serie de conotaii etice, filozofice, etc. dar nu acestea l preocup pe specialistul n IS.
Evideniind doar ingredientele eseniale ale unei probleme de IS, avem:
-Date -Prelucrri -Interfee
Toate aceste ingrediente exist n domeniul problemei n format utilizator. n domeniul problemei, pentru descrierea soluiei se folosesc concepte pe care le neleg, probabil, oricare dintre participanii la un proiect, dar, n orice caz, ar trebui s le neleag participanii din sfera utilizatorilor 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.2. Diagrama din Figura 2.2. 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. Pentru a obine date noi asupra semnificaiei noiunii de ciclu de via prezentm diagrama din Figura 2.3.
Figura 2.3. Coninutul generic al etapei de dezvoltare a unui sistem soft
Analiza Proiectarea Implementarea Testarea Etape de dezvoltare
Figura 2.2 Ciclul de via al unui sistem soft (dintr-o perspectiv rudimentar)
Avnd ca pretext diagrama prezentat n Figura 2.3., 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:
Problem Dezvoltare Utilizare Abandonare soft Modificare 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, conform i celor specificate n [3]) 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.
Mult vreme MDS s-au bazat pe secvenialitatea propus n Figura 2.3., care sugereaz c trecerea dintr-o etap nou este posibil numai dup trimiterea lucrului n etapa precedent. A rezultat astfel un proces de dezvoltare cunoscut sub numele modelul cascad (waterfall model). Acest nume subliniaz faptul c procesul de dezvoltare poate decurge ntr-o singur direcie. Studiile de specialitate arat c abordarea propus de modelul cascad este ntr-o contradicie flagrant cu nevoia de a tatona profunzimile soluiei unei probleme (prin ncercri), resimit de spiritul creativ al rezolvitorului.
n timp ce modelul cascad schieaz un mediu de rezolvare a problemei riguros structurat, rezolvarea creativ se desfoar ntr-un mediu n care structurarea temporar poate fi abandonat n favoarea sugestiilor unor strfulgerri de intuiie.
n ultimii ani, preocuprile IS ncearc s reflecte aceast contradicie, beneficiind i de suportul oferit de instrumentele ingineriei soft asistate de calculator (Computer Aided Software Engineering CASE). Utilizarea acestor instrumente CASE faciliteaz parcurgerea etapelor de analiz, proiectare i implementare, ntr-o form sau alta prezente n orice MDS. n aceste condiii este mai uor s se revin, n caz de eroare, sau chiar s se planifice o dezvoltare n spiral a soluiei sistemului soft (a se vedea paradigma RAD Rapid Application Development asupra creia vom reveni n Capitolul 3).
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, nzuin 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.
Capitolul 3 Ciclul de via al unui sistem soft
nclinaia omului spre rigoare si are izvorul n apetitul lui pentru improvizaie. Formele de manifestare a rigorii n IS au un defect la urma urmei pozitiv: rmn destul de repede n urma timpului. De aceea, "forfota" din laboratoarele de cercetare a IS se va menine pentru mult vreme dac nu vom gsi ceva mult mai bun de pus n locul actualelor paradigme. Ce s punem n loc? Ceva mai simplu care s poat nmagazina mult mai mult complexitate. Iat, aadar, tema fundamental a cercettorilor IS n mileniul 3: Generarea complexitii cu ajutorul unor sisteme cu structur simplificat. Subtilitile temei sunt cunoscute din alte ncercri ale omului. Ceea ce trebuie descoperit este foarte aproape de cea mai mare necunoscut a omului: gndirea. Nu ne rmne dect s nvm s gndim ciclic i asimptotic la aceast mare necunoscut.
3.1 Ciclul de via al sistemelor soft. nc o introducere S ne reamintim, la acest nceput de capitol, ideea de baz a capitolelor 1 i 2: nevoia de sistematizare a procesului de dezvoltare a sistemelor soft. Nimeni nu contest faptul c se pot ntlni abordri de genul celor reprezentate n Figura 3.1 i n Figura 3.2.
Figura 3.1 Un model primitiv de dezvoltare a softului
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.
3.2. Ciclul de via al sistemelor soft. Exemple. Schimbrile care s-au produs, n timp, n ceea ce privete tehnologiile informaionale i MDS s-au reflectat i n ciclul de via al sistemelor soft, fie prin schimbarea etapelor acestuia, fie prin modificarea strategiei de parcurgere a acestor etape. Specificarea cerinelor Implementare Specificarea cerinelor Diagrama de structur Implementare Un studiu comparativ al diferitelor exemple de MDS evideniaz o serie de elemente interesante. Numrul fazelor ciclului de via specific unei MDS poate varia de la trei (analiz, proiectare, implementare) pn la douzeci sau mai multe. Este evident faptul c, i n acest domeniu, concurena, beia teoretic i ruperea contactului cu realitatea zmislesc, din cnd n cnd, adevrai montri metodologici. Pentru a trece cu brio examenul practicii, o MDS trebuie s manifeste o preocupare deosebit pentru dou dintre trsturile ciclului de via asociat:
-numrul de faze s fie justificat att de o analiz punctual ct i de consideraii de ansamblu n ceea ce privete versatilitatea operaionalizrii ciclului de via;
-fiecare faz a ciclului de via s fie acoperit satisfctor de elemente suport pentru rezolvarea problemelor de tip ASS, RDS, OMP.
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.
3.2.1. Modelul cascad( MC) Numit i water-fall, este un exemplu de ciclu de via care a fcut istorie. El afost lansat la ap la nceputul deceniului 7 de ctre W. W. Royce i const ntr-o descompunere a ciclului de via al unui sistem soft n faze secveniale. Fazele sunt descompuse n activiti. Trecerea de la o faz la alta se realizeaz dup ce precedenta a fost parcurs integral. S mai reinem i faptul c MC se aplic la nivel de sistem. Alte informaii cu privire la model n Figura 3.3.
Figura 3.3. Modelul cascad Definirea cerinelor Utilizarea i instruirea Analiza Proiectarea Testarea Implementarea
Avantaje recunoscute ale modelului cascad
Ofer un control total asupra fazelor, n sensul c acestea fiind ordonate devin previzibile, evideniindu-se clar ntinderea lor ca o colecie de activiti i subactiviti specifice; Este uor de nsuit de ctre partenerii unui proiect, inclusiv de cei cu experien redus; Fiecare faz este acompaniat de o documentaie destul de bine structurat.
Dezavantaje ale modelului cascad
Aplicndu-se la nivel de sistem, evident c nu ofer suport prea consistent pentru controlul complexitii n cazul sistemelor mari;
Dei, dup cum reiese i din Figura 3.3, nu este descurajat abordarea iterativ a unor faze sau componente ale lor, restriciile de timp impuse de programarea calendaristic a fazelor limiteaz ofertele benefice ale posibilitii de revenire la o etap anterioar. Acest fapt nu este tocmai convenabil dac inem cont de faptul c, n practic, nu numai c sunt necesare reluri ale fazelor, mai mult se simte nevoia lucrului n paralel la o scar mai mare dect o permite modelul cascad;
Evident, sistemul se pred doar dup parcurgerea etapelor anterioare, ceea ce nseamn o lung perioad de timp pn cnd utilizatorul vede sistemul la lucru, ceea ce nu este convenabil pentru nici una din faze (utilizatorul are destul timp s emit alte pretenii fa de sistemul soft);
MC nu ofer suport adecvat pentru abordarea dinamic a proceselor de modelat;
MC nu are protecie explicit fa de modificrile care pot interveni pe parcursul dezvoltrii sistemului soft.
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.
3.2.2 Modelul V (MV) Acest model preia ideile de baz ale modelului cascad, integrndu-le ntr-o concepie ierarhic de controlare a modului n care sunt parcurse fazele de dezvoltare. (A se vedea Figura 3.4) Modelul, prezentat n Figura 3.4, descrie o strategie de organizare a procesului de abstractizare n care se propune o perspectiv mai clar asupra elementelor de feed-back ale procesului, o abordare mai modern a relaiei sistem-componente, o delimitare mai precis a interferenelor procesului cu utilizatorul sistemului soft rezultat. Adevrul este c marile mutaii produse n lumea tehnologiilor informaionale orienteaz eforturile specialitilor n IS ctre posibilitatea abordrii unui sistem orientat pe componente, de o manier iterativ-incremental (ceea ce nseamn mai mult dect oferta modelului V) cu o atenie deosebit fa de utilizator. n actuala etap de dezvoltare a IS utilizatorul a devenit un partener ale crui opinii trebuie luate n seam pentru ca sistemul soft s poat trece cu bine examenul pieei.
Figura 3.4. Modelul V
A mai sublinia faptul c n cadrul MV se face o distinie clar ntre verificare i validare, ca activiti specifice laturii din dreapta a V-ului modelului. Verificarea se refer la testarea sistemului, n diverse faze de dezvoltare, din punct de vedere al corectitudinii logice. n schimb, validarea permite verificarea corectitudinii specificrii cerinelor iniiale fa de sistemul soft. Figura 3.4 ne arat c validarea stabilete dac sistemul, n forma lui final, corespunde sau nu cerinelor. Faptul c validarea este posibil doar cnd sistemul ajunge n forma final este un punct slab al modelului, ndeosebi n situaia n care procesul de modelat are afiniti structurale sau conjuncturale cu nisipurile mictoare. n acord cu [12], s menionm faptul c MV, n forma consacrat aparine lui Ould, care l-a adus n faa comunitii specialitilor n IS n 1990.
3.2.3 Modelul incremental (MI) Putem considera c este o alt form a MC. ncercnd s repare unele dintre neajunsurile criticate la MC i MV, MI se expune criticilor venind din alt direcie. S vedem, mai nti oferta MI sub form grafic (Figura 3.5). Dup cum se observ n Figura 3.5, dup dou faze desfurate la nivel de sistem (definirea cerinelor i analiza) care permit obinerea unei perspective arhitecturale asupra sistemului modelat, MI propune, pe aceast baz, descompunerea proiectului n subproiecte care genereaz o cascad de activiti paralele care permit obinerea componentelor necesare sistemului final. Fa de MV, MI ofer posibilitatea atingerii scopului final n dou variante: sistem global livrat la sfrit sau componente livrate distinct. n categoria avantajelor MI considerm:
MI se bazeaz pe posibilitatea de a aplica principiul Divide et impera;
MI permite livrarea de componente realizate n intervale de timp scurte;
Definirea cerinelor Validare Proiectare sistem Testare sistem Proiectare subsisteme (componente) Testare subsisteme (componente) Codificare/ asamblare componente Proiectul sau sistemul final poate fi realizat de mai multe echipe sau persoane datorit modularizrii lui.
Figura 3.5. Modelul incremental Dintre dezavantajele imediate considerm:
Imposibilitatea aplicrii MI n toate cazurile; exist situaii n care, pur i simplu nu exist elementele necesare aplicrii principiului Divide et impera n sensul pe care l presupune o modularizare de calitate;
Componentele pot fi realizate numai dup ce ntregului sistem i se definete arhitectura, totul derulndu-se conform exigenelor principiului top-down de abstractizare; o cerin destul de dur care sugereaz cunoaterea i formularea cerinelor din faza iniial de abordare a sistemului;
Posibilitatea de a realiza sistemul soft dintr-o sum de componente, pune n faa echipei (echipelor) care particip la realizarea sistemului soft probleme deosebite de integrare a componentelor pentru a obine sistemul executabil.
Evident, calitatea demersului de abstractizare a soluiei poate salva sau compromite MI.
3.2.4 Modelul spiral (MS) A fost lansat de un specialist n IS cu preocupri ndelungate legate de ciclul de via al dezvoltrii sistemelor soft, B.W.Boehm. La baza MS stau dou convingeri:
natura inerent iterativ a dezvoltrii i nevoia de planificare i evaluare a riscurilor fiecrei iteraii;
Arhitectura sistemului deficiena nregistrat la MV n care validarea se efectueaz prea trziu, l determin pe Boehm s propun realizarea acesteia ct mai devreme posibil, de ct mai multe ori, prin construirea de prototipuri, ca n Figura 3.6. n varianta Boehm, echipa de dezvoltare i utilizatorii se angajeaz treptat n proiect, diminund riscurile la nivel de prototip. Interesant este i posibilitatea valorificrii experienei acumulate n planificarea activitilor din prototipul urmtor. De precizat faptul c MC se regsete n fiecare iteraie. Ca elemente ce condiioneaz utilizarea cu succes a modelului semnalez:
-profesionalismul echipei de dezvoltare;
-flexibilitatea n aciune a echipei (=utilizarea resurselor, definirea activitilor de ntreprins).
Figura 3.6. Modelul spiral
3.2.5 Modelul evolutiv (ME) Este cunoscut faptul c abordarea obiect orientat asigur un nalt grad de mapare a domeniului problemei peste domeniul soluiei ceea ce faciliteaz dezvoltarea incremental a sistemelor soft. ntr-o opoziie net cu aspectul monolitic, aspectul evolutiv al ciclului de via se regsete n toate metodologiile obiect-orientate. Pornind de la aceast constatare putem spune c, n principiu, modelul evolutiv const n efectuarea unei investigaii iniiale, elaborarea unei strategii pentru descompunerea proiectului n segmente (pri), fiecare segment avnd o valoare deosebit pentru client. Segmentele sunt dezvoltate i livrate n mod iterativ, contribuind la sporirea gradual a performanelor sistemului. Fiecare segment trece prin toate fazele de dezvoltare a sistemelor: definirea cerinelor, analiz, proiectare, implementare, testare, utilizare.
La terminarea unui segment, clientul intr n posesia unei forme cvasi-finite a sistemului. Puternica orientare a modelului evolutiv ctre lumea utilizatorilor are un impact deosebit asupra implicrii acestora n dezvoltarea segmentelor sistemului. Reuita utilizrii modelului evolutiv const n specificarea unei arhitecturi deschise, flexibile, prin implicarea tuturor prilor interesate, inclusiv a utilizatorilor, dar i a unor specialiti IS profesioniti. ME preia caracteristica esenial a modelului circular, o form existent printre modelele tradiionale. Concepia modelului circular se baza pe ciclul unui sistem, realizat prin cercuri complete. La nchiderea unui ciclu se trece la o nou versiune a sistemului sau la un sistem nou.
3.2.6 Modelul tridimensional (MT) A fost lansat n Frana i este susinut de adepii metodologiei MERISE. Modelul surprinde dezvoltarea sistemelor printr-o redare grafic bazat pe trei axe care descriu: ciclul de via al sistemului, ciclul de via al proiectului i ciclul de abstractizare (Figura 3.8). STUDIUL INIIAL DESCOMPUNERE N SEGMENTE SEGMENT_1 DEFINIRE CERINE ANALIZA PROIECTARE IMPLEMENTARE TESTRI UTILIZARE SEGMENT_n DEFINIRE CERINE ANALIZA PROIECTARE IMPLEMENTARE TESTRI UTILIZARE INTEGRARE SISTEM Ciclul de via al sistemului soft surprinde timpul vieii acestuia i perioadele principale dup care se efectueaz schimbri majore, precum: creterea semnificativ a volumului datelor i tranzaciilor de prelucrat i nregistrat, modificarea platformelor hard sau soft, etc. Toate acestea determin aciunile de ntreprins n timpul realizrii sau ntreinerii sistemului. Ciclul de abstractizare trateaz nivelurile succesive ale specificaiilor, pornind de la elaborarea nivelului conceptual. ntrebarea de baz este: Ce face sistemul?. Rspunsul la aceast ntrebare este independent de aspectele tehnice i organizatorice. Urmeaz elaborarea nivelului logic (Cine execut prelucrrile? Cnd i unde?). Rspunsul la aceste ntrebri trebuie s fie independent doar de aspectele tehnice (platforma hard, sistemul de operare, limbajul de programare ales pentru implementare, etc.). n sfrit, ajungem la elaborarea nivelului fizic (Cum se execut prelucrrile?).
Figura 3.8. Modelul tridimensional
Evident, cantitatea de informaie acumulat la nivelul fizic este cea necesar pentru a avea ceea ce n alte metodologii numim soluia tehnic a problemei. Ciclul de via al proiectului ntreinere Implementare Studiul tehnic Studiul detaliat Studiul preliminar Ciclul de via al sistemului Sistem generaia 1 Sistem generaia 2 Nivelul fizic Nivelul logic Nivelul conceptual Ciclul de abstractizare Dup aceast soluie tehnic se poate face implementarea cu minimum de efort dac limbajul ales este bine stpnit. De semnalat virtuile explicite ale aezrii soluiei pe trei nivele de abstractizare. Cea mai mare ar fi introducerea unei ierarhii a rezistenei soluiei la diferite tipuri de modificri. n aceast ierarhie, nivelul fizic preia ocurile datorate modificrilor cu dinamica cea mai nalt (platform soft, platform hard), nivelul logic preia ocurile datorate modificrilor organizaionale (cu o frecven mai redus dect, s zicem, ocurile tehnice), nivelul conceptual preia ocurile cele mai grave care pot afecta un sistem n genere din punct de vedere structural. n tratarea relaiei dintre date i prelucrri lipsesc virtuile abordrii obiect orientate. n sfrit, ciclul de via al proiectului ofer o perspectiv asupra efortului de dezvoltare a soluiei unei probleme, izomorf cu viziunea clasic asupra ciclului de via al sistemelor soft. Aadar, dup cum se spune i n [12], dezvoltarea unui sistem soft nseamn orientarea permanent i simultan pe cele trei axe. Recunoatem un smbure de adevr n afirmaia c luarea n consideraie a ciclului de via al sistemului permite o planificare riguroas a evoluiei sistemului i a schimbrilor de efectuat, n timp ce ciclul de abstractizare permite obinerea unei soluii care nu depinde de opiunile tehnice ceea ce uureaz extinderea sistemului n viitor. Nefiind un model cu priz la autorii consacrai ai domeniului, muli specialiti pun sub semnul ntrebrii viabilitatea clamat, de altfel cu destul talent de ctre specialitii francezi n IS.
3.2.7 Modelul fntn artezian (MA) Acest model i are originea n modelul spiral i n altele care au adus mbuntiri ale acestuia. Deoarece modelul spiral i are originea n modelul cascad iar MA preia idei din variante mbuntite ale modelului spiral, s-ar prea c MA este un model cruia ar trebui s-i acordm oarecare atenie. n acest sens pledeaz i semantica Figurii 3.9. Analiza Figurii 3.9 ne arat c modelul este aplicabil n cazul dezvoltrii de sisteme obiect orientate, cum de altfel ne spun i prinii modelului (Brian-Sellers Henderson i J.M. Edwards) n lucrrile dedicate prezentrii modelului. ntre timp, inteniile valoroase ale acestui model ca i inteniile valoroase ale altor modele prezentate deja au fost preluate de paradingma UML de modelare obiect orientat a sistemelor soft.
3.2.8 Modelul prototipizrii (MP) Multe modele de dezvoltare se bazeaz pe utilizarea, n anumite momente, a abordrilor iterative (de exemplu, analiza poate implica o serie de sarcini care sunt iterativ repetate pn cnd modelele analizei sunt considerate complete). Dei promite un cadru mai realist de dezvoltare a softului o astfel de abordare poate fi uor descumpnit de constatarea c, n zilele noastre utilizatorul final sau indirect tie s foloseasc sistemul odat ce acesta a 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.
Figura 3.9. Modelul fntn artezian
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. FOND SOFTWARE Studiul cerinelor i al fezabilitii Proiectare sistem
Analiza Proiectare componente Codificare Testare componente Testare sistem ntreinere Evaluare Utilizare aplicaie O perspectiv mai clar asupra proprietilor modelului MP putem obine i din Figura 3.10.
Figura 3.10. 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.
Efectuarea unei analize iniiale ntreaga activitate de dezvoltare a softului folosete resurse valoroase. nceperea unui exerciiu de prototipizare fr o analiz iniial este posibil s conduc la o activitate nestructurat i greit focalizat care va produce un soft proiectat nesatisfctor.
Definirea obiectivelor prototipului Prototipizarea este de dorit s aib obiective clar stabilite. Un exerciiu de prototipizare poate implica multe iteraii, fiecare iteraie avnd drept rezultat o anumit mbuntire a Analiza iniial Definire obiective prototip Specificare prototip Construire protoip Evaluare prototip i stabilire schimbri Prototip complet prototipului. Pentru participanii la un exerciiu de prototipizare, la un moment dat poate fi dificil de stabilit dac prototipizarea trebuie sau nu s continue. Pentru evitarea unei astfel de posibiliti definirea clar a obiectivelor de ndeplinit poate fi de mare folos.
Specificarea prototipului Dei prototipul nu este realizat n perspectiva unor operaii de extindere este, evident, important s aib un comportament scontat. De aceea, este absolut firesc s lum n calcul posibilitatea unor modificri care s apropie prototipul ct mai mult de comportamentul scontat. Aceste modificri sunt mult mai uor de fcut dac softul este realizat potrivit unor principii de proiectare profunde.
Construirea prototipului Deoarece este important ca prototipul s fie realizat rapid este firesc ca n aceast faz s se apeleze la un mediu de dezvoltare rapid a plicaiilor (Delphi, Visual Basic, Visual C, C-Builder, etc.).
Evaluarea prototipului i stabilirea schimbrilor de efectuat Motivul principal pentru care realizm un prototip este testarea i explorarea anumitor aspecte ale sistemului soft de realizat. Prototipul trebuie evaluat n conformitate cu obiectivele identificate la nceperea exerciiului de prototipizare. Dac obiectivele nu au fost ndeplinite, evaluarea are drept consecin o serie de modificri care urmresc apropierea prototipului de obiectivele asumate. Dup cum se vede i din Figura 3.10, ultimele trei faze sunt parcurse ciclic, pn cnd toate obiectivele asumate de exerciiul de prototipizare sunt ndeplinite. n cele ce urmeaz putem prezenta avantajele acestui model dar i o serie de aspecte de care ar trebui s inem cont nainte de a ne aventura n prototipizare.
Avantaje: Ilustrarea timpurie a funcionalitii sistemului ajut la identificarea tuturor dezacordurilor dintre specialistul IS i client; Cerinele client omise au anse s fie identificate; Dificultile legate de proiectarea interfeei pot fi contientizate i rezolvate; Realizabilitatea i utilitatea sistemului soft pot fi testate chiar dac, prin natura lui, prototipul este incomplet.
Probleme:
Clientul poate percepe prototipul ca parte a sistemului final dar nu poate nelege amploarea efortului cerut, uneori, de realizarea formei finale a sistemului, motiv pentru care are senzaia c acesta (sistemul final) trebuie livrat mai curnd dect este posibil n realitate; Prototipul poate distrage atenia de la aspectele funcionale (uneori critice pentru sistem) ctre problemele de interfa (fetiizate oarecum de nevoia de a da permanent satisfacie clientului/utilizatorului); Prototipizarea se bazeaz pe o implicare semnificativ a utilizatorului; Managementul care se bazeaz pe modelul MP are de luat decizii dificile de-a lungul ntregului ciclu de via.
3.2.9 Modelul OMT OMT (prescurtare de la Object Modeling Technique) este un model de dezvoltare al crui artizan este J. Rumbaugh. Urmrind s ofere suport pentru dezvoltarea obiect-orientat a sistemelor soft, modelul are urmtoarele faze:
Noutatea modelului poate fi sintetizat astfel: dezvoltarea obiect-orientat a sistemelor soft este un proces conceptual independent de limbajul de programare pn la ultima faz. Vom sesiza aceast deplasare de accent i din scurta prezentare a coninutului fazelor n cele ce urmeaz.
Analiza Pornind de la enunul problemei, analiza are ca rezultat construirea unui model al lumii reale n care sunt evideniate proprietile importante ale acesteia. Activitatea n aceast faz debuteaz prin efortul de a nelege problema deoarece enunul problemei este rareori complet sau corect. Modelul obinut n faza de analiz este o abstractizare precis i concis a ceea ce trebuie s fac sistemul, nefiind relevant, deocamdat cum o va face. n acest model se opereaz cu obiecte din domeniul aplicaiei, analistul nefiind preocupat de obiecte din domeniul implementrii precum: structur de date, procedur recursiv, etc. Un model bun poate fi neles i criticat de specialiti n IS, care nu sunt neaprat programatori. Modelul analizei nu trebuie s conin nici o decizie de implementare. Ca un exemplu, o clas Window ntr-un sistem de monitorizare a ferestrelor aplicaiilor la o staie de lucru ar putea fi descris n termeni de atribute i operaii vizibile utilizatorului.
Proiectarea sistemului Specialitul IS implicat n aceast faz trebuie s ia decizii de nivel nalt relativ la arhitectura de ansamblu a sistemului. Astfel, sistemul int poate fi organizat n subsisteme innd cont att de arhitectura propus ct i de analiza structural. Proiectantul trebuie s decid ce caracteristici de performan trebuie s optimizeze, s aleag o strategie de abordare a problemei i s fac o tratativ de alocare a resurselor.
Proiectarea claselor n aceast faz este elaborat un model care se bazeaz pe modelul realizat n faza de analiz, cruia i se adaug detalii de implementare. Proiectantul adaug detalii n conformitate cu strategia stabilit pe timpul proiectrii sistemului. Obiectivul fazei l reprezint, n esen, specificarea structurilor de date i a algoritmilor necesari pentru implementarea fiecrei clase. Clasele de obiecte din faza de analiz sunt nc semnificative dar sunt completate cu algoritmi i structuri de date din domeniul soluiei alese astfel nct s se mbunteasc performanele sistemului. Att obiectele din domeniul aplicaiei ct i obiectele din domeniul soluiei sunt descrise de aceleai concepte i notaii de esen obiect-orientat, dei ele exist n planuri conceptuale diferite.
Implementarea Clasele i relaiile dintre ele aa cum au rezultat n faza de proiectare a claselor sunt acum descrise n conformitate cu exigenele unui limbaj de programare, innd cont de particularitile de organizare a bazelor de date sau de anumite elemente hard specifice. Principial vorbind, activitatea de programare ar trebui s fie o parte relativ mic i mecanic a ciclului de dezvoltare a sistemului soft, deoarece se presupune c toate decizile dificile au fost deja luate n faza precedent. S mai adugm faptul c pentru descrierea soluiei unui sistem de-a lungul celor trei faze care premerg implementarea, se folosesc trei tipuri de modele: modelul obiectelor (care descrie obiectele din sistem i relaiile dintre ele), modelul dinamic (care descrie interaciunile dintre obiectele sistemului) i modelul funcional (care descrie transformrile pe care le suport datele din sistem). Susinute de o notaie consistent, aceste modele au fcut din OMT un element hotrtor n specificarea uneia dintre cele mai importante paradigme de modelare: UML.
3.2.10 Modelul Raional (RUP) RUP (Rational Unified Process) este ciclul de via considerat cel mai adecvat pentru paradigma de modelare UML, asupra creia vom face o serie de consideraii n capitolul 4. Scopul RUP, redus la esene, ar putea fi formulat astfel:
asigurarea cadrului pentru realizarea unor sisteme soft de calitate deosebit, care corespund n cel mai nalt grad cerinelor utilizatorilor, dispunnd de buget i grafic de execuie predictibile.
RUP reunete o parte dintre cele mai bune idei ale MDS curente ntr-o form care este potrivit pentru o mare varietate de proiecte de dezvoltare a softului sau chiar proiecte de modelare organizaional. n ceea ce privete elementele de management, RUP furnizeaz, potenial vorbind, o abordare disciplinat a problemelor legate de gestiunea sarcinilor i responsabilitilor n interiorul unei firme care dezvolt soft.
Caracteristici ale RUP
RUP descrie un proces iterativ. n cazul sistemelor simple, pare absolut rezonabil un scenariu de rezolvare secvenial unidirecional a problemei. Exist ns, n practica IS, nenumrate probleme a cror rezolvare nseamn dezvoltarea unor sisteme de mare complexitate sau de-a dreptul sofisticate. Pentru astfel de sisteme, abordarea secven unidirecional este total nerealist. Alternativa o reprezint abordarea iterativ care sprijin nelegerea progresiv a problemei prin rafinri succesive i creterea incremental a soluiei efective pe baza unor cicluri multiple. Abordarea iterativ ofer flexibilitate n acomodarea la cerine noi sau modificri tactice la nivelul obiectivelor sistemului modelat. De asemenea, abordarea iterativ permite participanilor la proiect s identifice i s rezolve riscurile nainte ca acestea s devin o povar n procesul de dezvoltare a proiectului. Activitile RUP pun accent pe realizarea i ntreinerea unor modele spre deosebire de alte metodologii care fetiizeaz rolul documentelor care nsoesc reprezentarea soluiei. Modelele, ndeosebi cele realizate cu ajutorul UML permit reprezentri cu semantic bogat ale sistemelor soft n curs de dezvoltare. Aceste modele pot fi vizualizate n diferite moduri iar informaia asociat lor poate fi manevrat electronic n regim on-line. Deplasarea accentului spre modele urmrete minimizarea cheltuielilor necesare pentru generarea i ntreinerea documentelor i, totodat, maximizarea informaiilor cu coninut relevant.
Dezvoltarea sistemelor soft conform RUP este centrat pe arhitectur. RUP este un model care conine suport pentru dezvoltarea i fundamentarea timpurie a arhitecturii sistemului soft. Identificarea unei arhitecturi robuste faciliteaz lucrul n paralel la proiect, minimizeaz efortul de reproiectare i mrete probabilitatea de a reutiliza unele componente ale sistemului. De asemenea, o arhitectur robust este de dorit i din punct de vedere al managementului dezvoltrii sistemului soft.
FAZE Fluxuri de lucru n interiorul fazelor Iniiere Elaborare Consturc ie Tranziie Modelare afacere
Specificare cerine
Analiz i proiectare
Implementar e
Testare Configurare hard
Fluxuri suport
Management ul schimbrilor
Management ul proiectului
Asigurarea mediului de lucru
Iteraie Iteraie Iteraie
Iteraii prelimin are #1 #2 #n #n+ 1 #m #m+1
Figura 3.11. Ciclul de via RUP
Activitile de dezvoltare sub RUP sunt dirijate de contextele de utilizare (use case- driven). RUP pune mare accent pe construirea sistemelor lund n consideraie modul n care sistemul, odat livrat, va fi utilizat.
RUP suport tehnicile obiect-orientate. Fiecare model n cadrul RUP este obiect-orientat, realizat conform notaiei furnizate de UML, de preferat.
RUP este un proces configurabil. Cu toate c nici un proces nu este potrivit pentru toate firmele de dezvoltare a softului, RUP este configurabil, astfel nct s corespund cerinelor unor organizaii mergnd pe scara complexitii de la echipe de dezvoltare mici pn la firmele mari i foarte mari.
RUP ncurajeaz preocuprile pentru controlul calitii i managementului riscului.
Evaluarea calitii este realizat pe tot parcursul dezvoltrii soluiei, cu implicarea progresiv a tuturor participanilor, utiliznd metrici i criterii obiective. Managementul riscului este, de asemenea, o constant a unui proces RUP, ceea ce permite identificarea n fa a riscurilor care ar putea duna succesului unui proiect.
Faze i iteraii n RUP O faz, n IS, este intervalul de timp cuprins ntre dou repere majore ale procesului, n care sunt ndeplinite un set precis de obiective, se realizeaz o serie de piese ale sistemului soft (artifacts, n literatura american) i se decide trecerea sau nu n faza urmtoare, dac este cazul. RUP const n urmtoarele patru faze:
Iniiere (Inception);
Elaborare (Elaboration);
Construire (Construction);
Tranziie (Transition).
Se poate vedea viziunea Rational asupra procesului de dezvoltare a unui sistem soft, din perspectiv sistematic urmrind ideile prezentate n Figura 3.11. Cititorul atent poate s observe marele potenial ncapsulat n modelul RUP. Dac adugm i precizarea c acest model este susinut integral de instrumentele CASE elaborate de firma Rational Software, cititorul trebuie s fie de acord cu faptul c toat vlva care se face n jurul UML i RUP are explicaii care au depit deja faza confruntrilor teoretice. Pentru edificare, n continuare voi oferi cteva explicaii pe marginea coninutului celor patru faze.
Iniiere Este faza n care se face ceea ce n limba romn s-ar numi studiul de oportunitate care trebuie s precizeze:
-domeniul proiectului; -criteriile pentru aprecierea reuitei; -evaluarea riscurilor;
-estimarea resurselor necesare; -un grafic de execuie preliminar raportat la cele patru faze principale
Cu tehnologiile de dezvoltare existente este ct se poate de uzual s se realizeze un prototip executabil care ajut la ntrirea celor precizate mai sus.
Elaborare n aceast faz este analizat domeniul problemei, se stabilete un fundament arhitectural robust, se realizeaz planul proiectului i se elimin factorii de risc nalt ai proiectului. Deciziile arhitecturale trebuie luate avnd o viziune bine conturat asupra ntregului sistem. Aceasta nseamn c cea mai mare parte a cerinelor fa de sistem trebuie specificate corect. Pentru validarea arhitecturii propuse se poate implementa un sistem orientat pe contextele de utilizare (use case) semnificative).
Construcie n aceast faz, procednd iterativ i incremental se elaboreaz un produs complet, capabil s porneasc spre comunitatea utilizatorilor lui. Aceasta implic descrierea cerinelor omise n faza de elaborare, proiectarea pn la detaliu a sistemului i completarea implementrii i testrii acestuia.
Tranziie n timpul acestei faze softul este livrat utilizatorilor. Odat ajuns la utilizatori este posibil s apar cerine de dezvoltare adiional, este posibil, de asemenea, s fie scoase la iveal bug-uri scpate sau plantate cu iscusin. n practic, aceast faz debuteaz cu o versiune beta a sistemului care este nlocuit, treptat de versiunea consolidat a acestuia. Teoretic, la terminarea acestei faze se decide dac obiectivele ciclului de via au fost ndeplinite i se evalueaz posibilitatea de a ncepe un nou ciclu de dezvoltare. Cititorul deduce din Figura 3.11 faptul c fiecare faz a modelului RUP poate fi obiectul mai multor iteraii, o iteraie fiind un ciclu de dezvoltare complet n cadrul unei versiuni a sistemului soft executabil, avnd ca rezultat un subset al produsului final, care se va mbogi funcional de la iteraie la iteraie pn cnd ajunge s ndeplineasc condiiile de livrare la utilizatori.
3.3 Concluzii Dei din motive didactice am ncercat s focalizez atenia cititorului pe noiunea de ciclu de via, acesta va nelege, probabil, legtura indisolubil dintre ciclul de via i celelalte componente ale unei MDS. ndeosebi binomul ciclu de via ciclu de abstractizare trebuie neles profund de ctre practicanii IS care vor s valorifice la maximum potenialul unei MDS. Exemplele prezentate arat, pe de o parte, dificultile ntmpinate de-a lungul timpului de specialiti IS n ncercarea lor de a spori randamentul metodologiilor de dezvoltare a softului, pe de alt parte tendina permanent a MDS de a oferi o perspectiv ct mai realist asupra procesului de dezvoltare a sistemelor soft. 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.
Capitolul 4 Abstractizarea soluiei unui sistem soft
Avem nevoie de modele pentru a explica, cu un interes anume, dinamica unui sistem bnuit de noi c ar exista sau care exist sub ochii notri, n toat complexitatea lui. Elabornd modele, mbogim lumea sistemelor, care, privind lucrurile cu obiectivitate tiinific, par a deschide una dintre marile pori ctre tainele alctuirii universului. O ntrebare, veche de cnd lumea, ar fi : Cum elaborm modelele? De cnd a nceput s se nfiripe, tiina n genere nu face altceva dect s ne nvee cum putem dibui modele n cele mai neateptate coluri de univers.
4.1. Modelarea. Limbaje de modelare Dup Capitolul 3, n care libertatea de micare a gndirii a fost oarecum ngrdit de exigenele subiectului abordat, iat-ne din nou pe un teritoriu vast, complex i n continu prefacere: universul modelrii. Activitatea de elaborare a modelelor se bazeaz, prin definiie, pe un mare consum de energie intelectual.
Cu att mai mare este efortul de modelare cu ct orizontul epistemologic al celui implicat n efort este nestructurat sau structurat neconcludent.
Ori de cte ori este vorba despre activiti care se bazeaz pe muchii gndirii, trebuie s ne asumm deopotriv riscurile, frumuseea i noutatea pe care o presupune rezolvarea unei probleme. Chiar i atunci cnd drumul este, pe alocuri, bttorit pentru a reui avem nevoie de dou tipuri de abiliti:
abiliti de elaborare sistematic a realitii, metod de modelare n domeniul de care aparine problema.
Pentru a fi meseriai adevrai ne mai trebuie doar atta ndoial n ceea ce tim la un moment dat ct s ne fie permanent treaz dorina de a ti mai multe n fiecare clip.
Ce este un model?
Un model este reprezentarea ntr-un anumit mediu a unui obiect, proces sau fenomen din acelai mediu sau dintr-un mediu diferit. Vom numi sistem real (SR) obiectul, procesul sau fenomenul supus procesului de modelare.
Modelul surprinde aspectele considerate importante ale unui SR, dintr-un anumit punct de vedere, simplificnd sau omind celelalte aspecte ale SR. Ingineria, arhitectura, astronomia, fizica i, de ce nu, IS folosesc intens modele. Odat realizate, modelele pot fi fizice (n construcii, n muzeologie, etc.) sau pot lua forma unor reprezentri adecvate pe un suport de memorie extern (hrtie, floppy-disk, hard- disk, etc.).
n IS proprietile modelelor sunt reprezentate cu ajutorul limbajelor.
Fcnd abstracie de cele fizice, modelele se impun ateniei celor care le studiaz prin semantica i notaia lor. Mai pe nelesul unui specialist IS, nelegerea unui model este o problem de sintax, semantic i, pentru a fi toate bune, trebuie s fie i o problem de pragmatic. Dac singurul merit al unui model s-ar rezuma la faptul c genereaz problemele mai sus menionate, probabil c, ndeosebi n zilele noastre, ne-am lepda de ele. Realitatea este c avem nenumrate motive pentru care acest lucru nu se ntmpl.
Modelarea poate fi utilizat pentru reprezentarea unor sisteme de cunotine n vederea simplificrii nelegerii acestora de ctre persoanele interesate.
n lumea IS se folosesc frecvent astfel de modele pentru a capacita utilizatorii n procesul de specificare a cerinelor fa de un sistem soft, de exemplu.
Elaborarea de modele pare a stimula creativitatea celor care proiecteaz un anumit sistem.
nainte de a fi ceea ce este n forma final, un sistem este descris dintr-o serie de perspective care prilejuiesc realizarea a o serie de modele preliminare. Sistemul final este aproximarea unui SR, obinut prin agregarea sintaxei i semanticii tuturor modelelor preliminare asociate. Dac ar fi s dm un exemplu din lumea IS, atunci sintaxa i semantica unui sistem soft ar putea fi rezultatul agregrii a trei tipuri fundamentale de modele: -modele care descriu aspectele statice ale SR modelat; -modele care descriu aspectele dinamice ale SR modelat; -modele care descriu aspectele funcionale ale SR modelat.
Un model poate fundamenta realizarea unui sistem de organizare, clasificare, vizualizare i editare a informailor despre sistemele mari.
Altfel spus, nu ne putem imagina procedee de simplificare a efortului de modelare ntr-un anumit domeniu dac nu rezolvm problema paradigmei-cadru de modelare. Sistemele dinamice pot fi modelate utiliznd, s zicem, paradigma UML.
Cu ajutorul modelelor putem simplifica procesul de alegere a unei soluii alternative.
Numeroase sunt situaiile n care factorii care condiioneaz la un moment dat procesul de realizare a unui sistem soft complic peste msur decizia de continuare a procesului. O modalitate de a iei din impas ntr-o astfel de situaie o reprezint elaborarea de modele alternative i alegerea celui mai bun pe baza evalurii avantajelor i riscurilor asociate acestora.
Modelele au fost dintotdeauna i elemente suport pentru stpnirea sistemelor complexe.
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.
Comentnd, pe scurt, doar descompunerea funcional, putem semnala faptul c aceasta a aprut i s-a consolidat ca metod n perioada de glorie a programrii structurate. Dintre autorii remarcabili care au abordat descompunerea funcional, amintesc pe civa mai reprezentativi: De Marco, Yourdon i Constantine, Jackson, Page-Jons, Warnierr-Orr. Descompunerea funcional este cea care premerge, n IS, analiza i proiectarea structurat. La limit, descompunerea funcional a fost introdus cu scopul de a permite controlul complexitii problemelor opernd cu tehnici de tipul divide et impera. Aadar, fiecare funcie este descompus n subfuncii .a.m.d pn cnd se obin componente (uniti de prelucrare) uor de transpus n instruciunile limbajului de programare ales. Descompunerea funcional (DF) poate fi neleas, reinnd esenialul, ca o ecuaie de tipul:
DF = FUNCII + SUBFUNCII + INTERFEE FUNCIONALE
Evident, n cadrul descompunerii funcionale, preocuparea de baz a specialistului n IS este s identifice prelucrrile necesare n sistem i interfeele funcionale asociate.
Avantaje ale utilizrii DF:
-simplitate n utilizare ntruct, orice s-ar spune, este o cale natural de rezolvare a unei probleme.
-obinerea, cu destul lejeritate, a cerinelor utilizatorului.
-generarea de soluii pe diferite nivele de abstractizare (sistem, subsistem, funcie, subfuncie), fapt benefic pentru controlul complexitii problemelor n diferite ipostaze.
Dezavantaje ale utilizrii DF:
-concentrarea eforturilor asupra aspectelor funcionale conduce la acumularea natural a multor date redundante.
-nu exist reguli precise pentru operaionalizarea DF.
-interaciunile non-ierarhice dintr-o soluie orientat pe funcii sunt dificil de evideniat.
Pentru eliminarea acestor dezavantaje au fost propuse o serie de principii suplimentare (n contextul modularizrii n genere) care urmresc un control sporit asupra coeziunii modulelor i cuplrii lor. Termenul coeziune se refer la gradul de nrudire a componentelor interne ale unui modul ceea ce, n termeni mai precii, msoar gradul de specializare al modulului. O apreciere corect a importanei coeziunii este posibil dac privim evoluia unui proiect de-a lungul ntregului ciclu de via. Dac, deci, n perspectiva apropiat sau mai ndeprtat sunt necesare modificri ale unui modul, acestea sunt mai uor de controlat i de localizat dac modulele sunt nalt coezive.
Coeziunea poate avea mai multe forme de exprimare. Fundamentale n procesul de abstractizare a soluiei unui sistem soft sunt coeziunea logic i coeziunea funcional.
Coeziunea logic a unui modul rezult ca urmare a faptului c elementele lui interne permit realizarea unor activiti de aceeai natur. De exemplu, putem presupune c am proiectat un modul care se ocup de comunicarea sistemului soft cu lumea exterioar. Ceea ce unete componentele unui astfel de modul este faptul c toate activitile au legtur cu ideea de comunicare. Evident, ns, comunicarea se poate referi la multe lucruri diferite (preluarea datelor, afiarea datelor, raportarea unor erori, etc.). O form mai puternic de coeziune este coeziunea funcional care msoar gradul de integrare al componentelor unui modul n vederea realizrii unei singure activiti. Problema care apare aici este: Ce se nelege prin ideea de activitate?. Rspunsul depinde, n mare msur, de contextul n care se pune ntrebarea.
Termenul cuplare este introdus n modularizare pentru a msura gradul de interconectare a modulelor. Interconectarea modulelor este obligatorie pentru ca acestea s formeze un sistem coerent. ns, raiunile de dezvoltare i ntreinere ne pun din nou n faa unei cerine de tipul o modificare efectuat ntr-un modul nu trebuie s afecteze imprevizibil comportarea celorlaltor module. Simplu i firesc. Pentru ca s fie i adevrat este clar c un obiectiv constant al modularizrii trebuie s fie maximizarea independenei modulelor, ceea ce se obine prin minimizarea cuplrii acestora. Cuplarea modulelor se poate realiza prin control i prin date. Cuplarea prin control apare atunci cnd unul dintre module cedeaz controlul ctre alt modul. Cuplarea prin date se refer la partajarea datelor de ctre modulele unui sistem soft. Indiferent de tipul cuplrii este important ca aceasta s fie ct se poate de vizibil deoarece cuplarea implicit (ascuns) este cauza multor erori, ndeosebi de programare. Prin incursiunea fcut sper c am reuit s atrag atenia cititorului asupra complexitii decizilor cu care se confrunt un limbaj de modelare i, n egal msur, un specialist IS n relaia cu o problem de modelare. Singura certitudine n procesul de modelare a soluiei unui sistem soft ar putea fi rezumat astfel: orice decizie luat n procesul de modelare genereaz probleme noi. Datoria specialistului n IS este de a ine sub control influenele nedorite ale acestor probleme. De fapt, ntreaga evoluie n materie de modelare merge pe ideea de nlocuire a unei paradigme vechi de modelare cu o paradigm nou, atenund sau eliminnd defeciunile vechii paradigme, introducnd probleme noi care, asumate corect de ctre specialistul n IS, nu pot afecta semnificativ calitatea sistemului soft. S mai facem o precizare necesar: apariia unei paradigme noi de modelare nu nseamn negarea tuturor ideilor vechilor paradigme. Astfel, de la descompunerea funcional la modelarea obiect-orientat este, sincer vorbind, cale lung. Aceasta nu nseamn, ns, c elementele de abordare funcional au disprut cu totul. Ele sunt n continuare prezente dar la un anume nivel de abstractizare a soluiei. Relum o idee pe care am mai vehiculat-o n acest capitol:
suportul oferit de o MDS pentru abstractizarea soluiei unui sistem soft trebuie s l ajute pe specialistul n IS s fac trecerera de la domeniul problemei ctre domeniul soluiei conservnd ct mai multe dintre avantajele pe care experiena n materie de modelare le-a certificat.
Pentru efectuarea unei treceri, specialistul n IS trebuie s gseasc n limbajul de modelare universul conceptual adecvat. Deoarece sistemele reale, supuse modelrii suport adeseori modificri, uneori strructurale, ceea ce creaz premize pentru apariia, n timp, a unor semnificaii particulare la nivelul sistemului real este evident c limbajul de modelare trebuie s posede, att ct este posibil i mecanisme pentru extinderea controlat a semanticii limbajului de modelare (a se vedea exemplul oferit de UML n aceast privin). nchei aici consideraiile pe marginea celei de-a doua probleme cu care se confrunt un SLM.
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 obiect-orientate (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:
-reprezentarea i documentarea arhitecturii sistemului;
-reprezentarea i documentarea cerinelor fa de sistemul soft;
-reprezentarea i documentarea soluiei tehnice la diferite nivele de abstractizare;
-reprezentarea i documentarea activitilor specifice managementului dezvoltrii sistemelor soft.
Sistemele soft adevrate (n sensul c au complexitate medie sau mare) trebuie s adauge lng codul surs (izomorf, practic, cu codul executabil al sistemului soft) o serie de alte produse tipice ingineriei softului care, laolalt, alctuiesc documentaia constructiv i de prezentare a sistemului soft. Documantarea complet a unui sistem soft este o prob de profesionalism pe care firmele de soft mari au transformat-o ntr-un veritabil bussines pe seama cererii de documantaie, n cretere, din partea utilizatorilor diverselor tehnologii informaionale lansate pe pia.
A patra problem n atenia unui SLM se refer la stabilirea limbajului cu care este definit limbajul de modelare. Crile care popularizeaz limbajele de modelare apeleaz, de regul, la o combinaie ntre limbajul natural i elemente de descriere formal pentru a realiza compromisul optim ntre rigoare i accesibilitate. Documentaia de referin a unui limbaj de modelare poate apela la un limbaj special pentru descrierea proprietilor limbajului de modelare. Situaia este similar cu cea ntlnit n domeniul limbajelor de programare, unde se cunosc formalizme de descriere a anumitor proprieti ale limbajelor de tipul:
-diagrame de sintax
-sintaxa BNF
Evident, exist i excepii interesante n ceea ce privete alegerea limbajului cu ajutorul cruia se specific un limbaj de modelare. Este vorba de sistemele formale de specificare a softului (Z, Z ++ , VDM, VDM ++ ) care apeleaz, esenial, la un formalizm matematic care poate veni dinspre teoria mulimilor, logic, calculul lambda, etc. Poate fi, de asemenea, vorba despre limbajele de modelare, gen UML, care conin n ele nsele resursele pentru specificarea semanticii lor.
4.2. Arhitectura unui limbaj de modelare Un limbaj de modelare care se respect i propune (cel puin din cauza cerinelor formulate n paragraful 4.1.) s se prezinte n faa utilizatorilor cu o concepie arhitectural clar. nelegerea arhitecturii unui limbaj de modelare este benefic att pentru utilizatorii limbajului ct i pentru cei care i studiaz fundamentele. Efectul cunoaterii arhitecturii unui limbaj de modelare asupra unui utilizator al acestui limbaj este similar efectului pe care l are, n general vorbind, structurarea asupra unui demers de cunoatere a unui sistem. Arhitectura unui sistem este datoare s explice tuturor celor interesai:
-care sunt subsistemele fundamentale ale sistemului; ce semantic ncapsuleaz aceste subsisteme?
-care sunt dependenele fundamentale ntre subsistemele evideniate mai sus; care este semantica esenial a acestor dependene?
-care este formalizmul utilizat pentru descrierea i reprezentarea elementelor prezentate mai sus?
Este evident faptul c, prin clarificarea aspectelor arhitecturale ale unui limbaj de modelare, SLM definete orizontul strategic al posibilitiilor de operare cu capabilitile de modelare ale limbajului. Este posibil ca, pentru muli utilizatori, cunoaterea acestui orizont s nu fie deloc o prioritate. Aceasta deoarece alii decid pentru ei ce limbaj de modelare trebuie s foloseasc iar utilizarea efectiv a limbajului nu trebuie s treac neaparat prin nelegerea subtilitilor asociate perspectivei arhitecturale. Pentru a ne forma o idee asupra utilitii cunoaterii arhitecturii unui limbaj de modelare ne putem inspira din obinuina pe care i-au fcut-o unii productori de soft de a scoate pe pia manuale de utilizare i manuale de referin pentru sistemele soft pe care le produc. Manualele de referin manifest o atenie sporit fa de elementele arhitecturale i fa de, s-i spunem, evoluia universului conceptual al obiectului descris. Manualele de utilizare ncearc, mai degrab, s prezinte utilizatorului scenarii pe baza crora se poate utiliza semantica obiectului respectiv. O astfel de abordare este prezent i n politica firmei Rational Software Corporation de promovare a limbajului de modelare UML, de exemplu. Aa cum se ntmpl, n general, arhitectura unui limbaj de modelare este rezultatul unui efort special de clasificare i ierarhizare conceptual, efort pe care l-am putea numi metamodelare. La ora actual specialitii IS n materie de limbaje de modelare precum i organismele care se ocup de promovarea standardelor n domeniu agreeaz dezvoltarea de arhitecturi pentru limbaje de modelare cu patru nivele de abstractizare. Care sunt aceste nivele i ce funcii ndeplinesc ele se poate vedea n Figura 4.1. Specialitii n IS, interesai de utilizarea intens a limbajelor de modelare prefer s nlocuiasc abordarea arhitectural cu o abordare pragmatic. Pentru un utilizator de limbaj de modelare scenariul cel mai plauzibil este urmtorul:
1. Dintr-un motiv anume, n atenia specialistului IS, ajunge o anumit realitate informaional, cu veleiti sistemice i structurale obiective.
2. Specialistul IS stabilete determinarea obiectiv i subiectiv a realitii informaionale respective. n determinarea obiectiv includem acele aspecte ale realitii informaionale care exist i se manifest independent de atitudinea specialistului IS. n determinarea subiectiv intr n joc exact atitudinea specialistului IS fa de aspectele obiective ale realitii informaionale. Din momentul n care atitudinea specialistului fa de realitatea informaional ncepe s se structureze, practic, ncepe procesul de modelare a realitii informaionale. Acest proces presupune:
Nivel Descriere nivel Exemple de concepte Meta-metamodel Reprezint infrastructu-ra necesar pentru meta-modelarea arhitecturii. Definete limbajul pentru specificarea metamodelelor. Meta clase, Meta operaii, meta atribute, etc. Metamodel Este o instan a unui meta- metamodel. Definete limbajul pentru specificarea unui model. Clas, atribut, Operaie, etc. Model Este o instan a unui metamodel. Definete limbajul necesar pentru descrierea unui anumit domeniu informaional. Matricol, Adresa, Medie-la-admitere, etc. Obiecte utilizator (date utilizator) Un obiect utilizator este o instan a unui model. Un obiect utilizator specific un anumit domeniu informaional. 111, Calea Victoriei 81 Bl 2, Sc A, Ap. 20, 10
Figura 4.1. Arhitectura standard pe patru nivele a unui limbaj de modelare
permanente i obligatorii procese de abstractizare. Se face abstractizare atunci cnd schim elementele arhitecturale ale modelului, ceea ce nseamn generalizare. Se face abstractizare atunci cnd optm pentru o soluie alternativ n procesul de rafinare a modelului, ceea ce nseamn specializare.
permanente i obligatorii eforturi de reprezentare a diferitelor nivele de abstractizare, scopurile urmrite fiind:
-rezolvarea problemelor de comunicare; -obinerea specificaiilor complete ale modelului.
Foarte bine! Nu s-ar putea s m exprim i mai concret n legtur cu cele dou dimensiuni ale procesului de modelare semnalate mai sus?
Voi ncerca acest lucru n continuare. Aadar, dat o problem adevrat (= volum mare de informaii, stabilitate structural n mod nativ perisabil), specialistul n IS execut sarcini de genul:
Identificarea fluxurilor informaionale eseniale; este tiut faptul c multe dintre creaiile omului, inclusiv limbajele naturale, apeleaz la redundan pentru a-i consolida virtuile semantice. Excesul de semantic se justific dac exist beneficiari imediai pentru acest exces. Dac beneficiarii nu exist, atunci excesul de semantic ntemeiat pe redundan trebuie eliminat. n aceast ncletare pentru identificarea fluxurilor informaionale, specialistul IS trebuie s fie, n egal msur, un culegtor harnic de date despre fluxurile informaionale dar i un abil mnuitor al procedeelor de clasificare, ierarhizare, codificare, abstractizare i documantare a acestor fluxuri informaionale. Rezultatul acestui demers: un tablou ct se poate de complet al tipurilor de date considerate importante pentru rezolvarea problemei.
Identificarea cerinelor fa de sistemul soft care soluioneaz problema. Acest tip de demers este complementar celui semnalat mai sus. Odat enunate aceste cerine, specialistul IS trece la definirea lor. Din nou se pune mare accent pe abstractizare pentru a alege din mulimea alternativelor calea cea mai apropiat de cerinele imediate dar i cea mai potrivit din punct de vedere al posibilitilor de evoluie. Rezultatul demersului: o perspectiv de nivel de abstractizare nalt asupra proprietilor eseniale ale soluiei:
-date -funcii -componente -resurse angajate.
Proiectarea soluiei sistemului soft. Numeroasele obiective i restricii asumate pn la nceperea proiectrii reprezint cadrul de valorificare a acumulrilor din activitile specificate generic mai sus. Un bun proiectant nelege rolul nsemnat jucat de abilitatea de a-i impune i gestiona o sumedenie de factori de constrngere, inereni n procesul de realizare a unui soft de calitate. Nenumrate sunt momentele de cumpn n realizarea unui sistem soft. i aceasta se ntmpl deoarece procesul de dezvoltare a unui sistem soft nu este liniar i are multe elemente de descoperire n structura lui.
Consider c abilitatea de baz a unui specialist IS avnd competene n analiz, proiectare sau implementare rmne capacitatea de a abstractiza metodic.
Este o abilitate care se formeaz prin exerciiu autoimpus i autocenzurat. Dorina de a obine bijuterii n IS, transformat n exerciiu de plcere, iat secretul evoluiei profesionale i n materie de paradigme n IS.
4.3. Complemente. Elemente de teoria general a sistemelor Am mai fcut referiri scurte la importana, consider eu, major a teoriei generale a sistemelor (TGS) n cunoatere, n modelare, n economie, politic, etc. Greu de gsit un col n lume cruia s nu i se potriveasc ceva din abordarea TGS. n acest paragraf voi ncerca s explicitez o serie de idei care, sub presiunea necesitii, se manifest i implicit. Pentru nceput s observm c, n general vorbind, noiunea de sistem, n jurul creia vom articula discursul acestui paragraf, are un dublu neles. Cu mai mult sau mai puin discernmnt, numim sistem: un obiect, fenomen sau proces cu existen material l vom numi sistem real (SR) supus la un moment dat ateniei unui observator oarecare; tot sistem numim i un model care aproximeaz comportamentul unui SR. Aadar, atragem atenia vorbitorilor de TGS asupra acestei surse de ambiguitate pe care o pot activa cu mare uurin, dac nu i menin atenia treaz. Prima ntrebare pe care ne-o punem n TGS este, evident, urmtoarea: Ce este un sistem?.
4.3.1. Definiia i caracteristicile unui sistem n TGS se numete sistem o colecie de componente interconectate astfel nct se poate spune c evolueaz n comun pentru ndeplinirea unui obiectiv predefinit.
La scara universului se poate vorbi, despre omniprezena unor variate tipuri de sisteme care respect definiia de mai sus i care se integreaz n sisteme din ce n ce mai complexe deoarece, chiar i filozofic vorbind, interdependenele sunt eseniale pentru a discrimina multe dintre proprietile unui sistem. Dintre proprietile sistemelor (reale sau teoretice) importante i pentru o corect utilizare a paradigmei TGS n IS voi prezenta, n continuare, pe cele mai importante.
Orice sistem are un mediu n care exist. Este dincolo de nelegerea omeneasc posibilitatea existenei unui sistem fr nici o alt conexiune cu alte sisteme. Noiunea de sistem nchis este o utopie teoretic. Contientizarea mediului n care exist un sistem real, de exemplu, poate fi esenial pentru calitatea modelrii acestuia, dac se urmrete acest lucru.
Orice sistem este delimitat de mediul n care exist de un anumit tip de frontier. Frontiera unui sistem este o noiune cu o semantic discutabil. Nici ntr-un caz, frontiera unui sistem nu este utilizat pentru a realiza nchiderea acestuia. Frontiera este o noiune cu ajutorul creia se realizeaz o delimitare ntre dinamica intern a unui sistem i dinamica relaiilor sistemului cu mediul nconjurtor. Avem nevoie de o cunoatere exact a frontierelor pentru a face raionamente corecte relativ la proprietile unui sistem. Interfaa sistemului cu mediul este dependent de structura frontierei sistemului. n teorie, nu se poate ncepe procesul de modelare a unui SR dac nu au fost convenite frontierele acestuia.
Orice sistem are intrri i ieiri. Intrrile sunt semnale (mesaje) ale mediului ctre sistem. Ieirile sunt rspunsuri pe care sistemul le d mediului n care se afl.
Orice sistem are interfa. Interfaa permite comunicaia ntre dou sau mai multe sisteme. n IS, n jurul conceptului de interfa s-au dezvoltat tehnologii soft importante pentru viitorul tehnologiilor informaionale (COM, DCOM, CORBA, etc.).
Orice sistem poate avea, potenial, subsisteme. Este o constatare care, sub lupa filozofilor este asociat cu posibilitile de observare ale omului, inerent limitate att n perspectiv microscopic ct i n perspectiv macroscopic. Cert este c orice subsistem poate fi, la rndul lui, neles ca sistem care, de asemenea, se poate descompune n subsisteme. Operatorul de descompunere a sistemelor n subsisteme este recursiv i se aplic cu maximum de discernmnt. Afirmaia de bun sim n ceea ce privete acest operator este c nu se descompune ceea ce din perspectiva intereselor imediate de modelare sau cunoatere este invizibil.
Orice sistem care rezist n timp are un mecanism de control. Problema durabilitii n timp a sistemelor are legtur nemijlocit cu problema stabilitii structurale a sistemelor la care vom face referiri n 4.3.2. Mecanismele de control ale sistemelor pot fi de tip feedback sau, uneori, de tip feed- forward. Controlul pe baz de feedback presupune dirijarea informaiilor despre ieirile sistemului ctre subsistemul de control. Controlul pe baz de feed-before presupune colectarea permanent de date despre intrri i transmiterea acestora ctre subsistemul de control. Dei nu am spus explicit acest lucru, cititorul nelege faptul c subsistemul de control poate modifica comportamentul sistemului (n condiiile meninerii unei anumite stabiliti structurale) pentru a asigura o relaie scontat ntre intrri i ieiri. Sistemele pe baz de feedback reacioneaz mai lent la semnalele mediului. Sistemele pe baz de feed-before sunt mai sensibile la schimbrile de mediu ceea ce le mrete capacitatea de adaptare. Problema principal o reprezint costurile proiectrii sistemelor de control de tipurile mai sus menionate. Sistemele de control orientate feed-before sunt mai scumpe i mai dificil de implementat.
Ultima remarc pe care o adugm noiunii de sistem este urmtoarea: un sistem are ntotdeauna proprieti care nu sunt deductibile direct din proprietile prilor. Aceste proprieti le putem numi proprieti integratoare (emergent properties, n englez). Cu ct aceste proprieti integratoare se manifest mai pregnant cu att mai mare este gradul de organizare a sistemului. Iat, aadar, alt subiect de care specialitii n IS sunt ct se poate de interesai: gradul de organizare a sistemelor. Dac am continua am ajunge la consideraii savante privind msurarea entropiei unui sistem din perspectiv probabilist-informaional ceea ce nu ne propunem, de fapt, n aceast lucrare. Este momentul s atragem cititorului atenia asupra puternicului impact pe care gndirea holist (sistemic-integratoare) l poate avea asupra calitii modelelor elaborate n IS. Ca un rezumat al ideilor prezentate n paragraful 4.3.1. v invit s analizai semantica Figurii 4.2. A ncheia acest paragraf atrgnd atenia cititorului asupra faptului c elementele introductive pe care le-am prezentat sunt, n mod sigur, un nceput de drum pentru specialitii IS interesai n surprinderea i modelarea proprietilor numeroaselor tipuri de sisteme informaionale care populeaz nvmntul, lumea afacerilor, sistemele nuclearo-energetice, etc. ...
4.3.2. Structura unui sistem n definiia dat unui sistem se face trimitere la relaiile dintre componentele unui sistem. tiu c printre filozofi exist adevrate certuri n legtur cu problema clasificrii i individualizrii acestor relaii. Pentru exigenele muncii n IS este important s tim c nelegerea unui sistem este, pe lng o problem de delimitare n spaiu i o problem de evoluie n timp. n evoluia n timp a unui sistem se pot deosebi dou tipuri fundamentale de relaii ntre componentele unui sistem: relaii stabile i relaii accidentale (ntmpltoare).
Ansamblul relaiilor stabile dintre elementele unui sistem formeaz structura sistemului.
Figura 4.2. Componentele fundamentale ale unui sistem i relaiile dintre ele
Pentru un specialist n IS, mai important dect faptul c structura unui sistem poate fi abstractizat de un sistem de ecuaii de nu tiu care tip, este cunoaterea faptului c un proces de modelare a unui sistem real este posibil s aib succes doar dac acestui sistem real i se poate asocia o perspectiv din care s se ntrezreasc un anumit gen de stabilitate structural. Zic un anumit gen de stabilitate structural ca o recunoatere a faptului c modelarea sistemelor nseamn, de fapt, aproximarea comportamentului lor dintr-o perspectiv concordant cu obiectivele asociate sistemului modelat. Astfel c nu este deloc o ntmplare faptul c una dintre primele cerine ale succesului n modelarea specific IS o reprezint specificarea corect a binomului obiective+diagnostic stabilitate structural relativ la dezvoltarea unui sistem soft. Cu ncredinarea c cititorul care a ajuns n acest punct al crii a fost provocat la studierea mai atent a utilitii TGS n abstractizarea soluiei sistemelor soft i nu numai, pun punct paragrafului 4.3.
4.4. Complemente. Principii ale modelrii cu impact deosebit n IS Dei unii dintre cititori vor fi de prere c afirmaiile pe care le voi face n continuare le erau de mult cunoscute, acest fapt nu m mpiedic s le fac gndindu-m la cei care nu au avut nc fora necesar pentru a se ridica la nivelul acestor principii n deplin cunotin de cauz. Aadar, este vorba de patru principii care, coroborate cu abilitile de gndire sistemic i cu abilitile de modelare specifice IS, v pot ajuta s traversai cu succes jungla de obstacole care se dezvolt, n mod natural, ntre enunul problemei i soluia acesteia.
Ce face sistemul Intrri Ieiri Cum este controlat sistemul Fluxuri de control Feed-back Feed-before Frontier sistem Mediul nconjurtor al sistemului
Primul principiu Alegerea tipului de model pe care urmeaz s l creai are o influen profund asupra modului n care abordai problema i deci asupra caracteristicilor soluiei acesteia. Aa cum insinuam i n alt context al prezentului capitol, acest principiu atrage atenia explicit asupra efectelor pe care le pot produce, asupra soluiei n ultim faz, diferitele opiuni fcute de specialistul IS pe parcursul abstractizrii soluiei. Pentru a convinge cititorul asupra greutii acestui principiu n IS, trebuie s l informm c, pornind de la o aceeai problem ntr-un fel arat soluia dac este tributar obinuinelor de abordare specifice unui dezvoltator de baze de date, altfel arat soluia dac este tributar obinuinelor de abordare ale analizei structurate .a.m.d. Alegerea tipului de model poate influena semnificativ calitatea sistemului soft, costurile i beneficiile datorate utilizrii acestuia.
Al doilea principiu Fiecare model poate fi exprimat la diferite nivele de abstractizare (precizie). Mesajul exact al acestui principiu poate fi neles dac privim lucrurile din interiorul exigenelor unui laborator de modelare. Ca un exemplu n acest sens s ne amintim faptul c n IS un sistem soft, nainte de a ajunge n stadiul final de dezvoltare, trece prin mai multe nivele de abstractizare. Fiecare nivel de abstractizare conine informaiile ateptate de o anumit categorie de participani la dezvoltarea softului i reprezint un element-suport pentru gestiunea complexitii procesului de abstractizare.
Al treilea principiu Cele mai bune modele sunt modelele conectate la realitate. Mesajul de baz al principiului este simplu dar de mare utilitate: modelai transfigurnd realitatea modelat ct mai puin. Problema transfigurrii realitii modelate este neleas mai uor dac ne punem ntrebri asupra modului n care domeniul problemei se mapeaz peste domeniul soluiei. Ideal este ca tehnica de modelare pe care o folosim s permit chiar maparea dup mai multe perspective dac acest lucru este benefic pentru procesul de modelare. Din nou fac trimitere la UML care instituionalizeaz, aproape, cerina conjugrii obiect-orientate cu abordarea multi-perspectiv.
Al patrulea principiu: Un singur model nu este suficient. Fiecare sistem netrivial este cel mai bine aproximat de un set limitat de modele relativ independente. Sistemele netriviale sunt sisteme a cror complexitate trebuie structurat pentru ca modelul rezultat s ncapsuleze toat semantica relevant a sistemului modelat. Structurarea complexitii sistemului modelat poate s nsemne i necesitatea ca sistemul modelat s fie descris din mai multe perspective, obinndu-se astfel descrieri cu relativ autonomie semantic, care suprapuse (combinate) permit obinerea unei imagini holografice asupra sistemului modelat.
Pun punct Capitolului 4 cu sperana c cititorul a neles care sunt problemele n domeniul abstractizrii soluiei unui sistem soft i, de ce nu, va pune chiar umrul la clarificarea, la alt nivel de abstractizare, a acestor probleme.
Capitolul 5 Managementul proiectelor n industria softului
Succesul unei aciuni depinde, esenial, de modul n care i sunt gestionate problemele. nc mai exist manageri care viseaz cu ochii deschii c subalternii lor (ruinai, automotivai, din patriotism i pe mai nimic) sunt gata n orice clip s mearg pn la sacrificiul suprem pentru salvarea incompetenei efilor. Iertat fie nedumerirea ngrmdit n acest preambul de capitol. Un om se poate schimba nvnd i luptnd mpotriva obinuinei. O echip, ai crei membri nu sunt clone ale unui aceluai prototip uman (deosebit din punct de vedere al calitilor), are nevoie de conductor pentru a ajunge s funcioneze, ct de ct, ca un tot. n industria softului este nevoie de conductori care tiu managementul unei afaceri n genere i nc ceva pe deasupra. Acel nc ceva pe deasupra ne va interesa, cu predilecie, n Capitolul 5.
5.1. Scurt introducere Nu este n intenia acestei cri s dezvolte teme ale teoriei managementului, n genere. Mult lume, ns, este convins de faptul c managementul proiectelor soft (MPS) i asum, ntr-un context particular, aceleai probleme i aceleai principii de baz pentru rezolvarea lor. De aceea nu mi se pare deloc o glum introducerea n planurile de nvmnt ale instituiilor de nvmnt superior care pregtesc specialiti IS a unor cursuri de iniiere n teoria managementului. Exist cel puin dou motive pentru care este nevoie de o astfel de abordare.
Aceste cunotine i ajut pe managerii din industria softului s aib succes n afacerile pe care le conduc;
Cunoaterea principiilor dup care se structureaz i se operaionalizeaz managementul n cazul unei afaceri oarecare, este de mare utilitate pentru cei care, n definitiv, produc tehnologii informaionale pentru a ntmpina o cerin de baz al actului de management: optimizarea fluxurilor informaionale (vitez, calitate, spectru problematic).
Practica demonstreaz destul de convingtor faptul c un specialist IS care lucreaz la soluia unei probleme formulat de managementul unei afaceri, trebuie s intre metodic n semantica specific acestui management. n lipsa unui orizont minimal, specialistul va trebui s nvee ct mai multe dac nu vrea s bjbie pn la obinerea soluiei tehnice. Cei pii, dar i nepiii, contientizeaz faptul c este greu s modelezi temeinic bazndu-te doar pe inspiraia de moment. Concretiznd, n faa problemei realizrii unui sistem soft, managementul se lovete, n mod natural, de ntrebri de tipul: Ct va costa sistemul?, Cnd va fi terminat?. Acestea sunt doar dou din ntrebrile la care un rspuns corect este destul de dificil. Foarte multe proiecte "i-au dat bugetul iniial de mai multe ori peste cap" i au fost finalizate mult timp dup termenul estimat al predrii. De aceea, printre obiectivele de baz ale MPS vom regsi:
Planificarea sarcinilor proiectului; Estimarea succesului sau a eecului proiectului, raportat la planul de dezvoltare adoptat; Estimarea timpului i a forei de munc necesare pentru finalizarea proiectului, ca ntreg i pe etape.
5.2. Teme fundamentale n managementul softului 5.2.1. Introducere Poate, cu riscul de a schematiza prea tare, voi ncerca s introduc cititorul n universul preocuprilor fundamentale ale unei persoane implicate n MPS. Aadar, pe lista subiectelor MPS vom regsi, n mod necesar, consideraii referitoare la:
Fiecare dintre aceste subiecte ncearc s abstractizeze o categorie deosebit de probleme, abilitatea managerului fiind cea care va rezolva problema convertirii cunotinelor despre aceste subiecte ntr-o strategie coerent de conducere a proiectelor soft. Cititorul informat intuiete, probabil, c n industria sofutlui, la fel ca n orice alt domeniu de activitate, managementul se structureaz att pe vertical (ca urmare vom avea mai multe nivele de management) ct i pe orizontal (ca urmare, este plauzibil s avem mai multe arii de management).
Amploarea procesului de structurare a managementului n industria softului depinde de complexitatea activitilor desfurate i de atitudinea managementului de top fa de delegarea structural a competenelor manageriale.
Ca de obicei, n IS, nu exist reete infailibile nici n MPS. Se poate vorbi ns, despre exemple concrete de structurare a MPS i despre o anumit perspectiv asupra procesului de structurare a MPS. Exemplele concrete de structurare a MPS (veritabile studii de caz) pot oferi date interesante despre relaia dintre anumite tipuri de procese i managementul asociat acestora. Aceste date pot fi valorificate efectiv dac se operaionalizeaz, de exemplu, perspectiva asupra procesului de structurare a MPS prezentat n Figura 5.1.
Figura 5.1. Dezvoltarea iterativ i incremental a managementului n industria softului
Activitate de dzvoltare a softului cu obiective iniiale limitate. Management cu structur simplificat. Diversificare/complexificare a activitii de dezvoltare a softului. Exist indicii c performanele actualului sistem de management sunt criticabile? NU Restructurare sistem de management DA 5.2.2. Dezvoltarea sistemelor soft din perspectiv managerial 5.2.2.1. Produse. Procese. Resurse. MPS manifest un interes deosebit fa de o serie de aspecte ale dezvoltrii softului care devin obiect de activitate pe toat durata dezvoltrii unui sistem soft. Astfel, din perspectiv MPS, dezvoltarea softului nseamn:
Produsele realizate n timpul dezvoltrii softului n ceea ce privete produsele realizate n timpul dezvoltrii unui sistem soft, managementul are o atitudine, evident pragmatic, fiind preocupat de:
cerinele pe care acestea trebuie s le ndeplineasc;
structura pe care acestea se bazeaz n timpul funcionrii.
n ceea ce privete cerinele, acestea pot fi: -cerine funcionale (ce trebuie s fac sistemul?) -cerine de calitate (ct de bine va lucra sistemul?) -cerine n ceea ce privete resursele (ct va costa sistemul, n ultim analiz).
Primele dou cerine sunt i n atenia MPS dar i preocup ndeosebi pe cei care lucreaz n analiz, proiectare i/sau programare. Al treilea tip de cerin este de competena managementului, folosind, evident, datele furnizate de specialitii care lucreaz n analiz, proiectare, programare. Tot din punct de vedere al managementului este util s se tie, cu precizie, care sunt tipurile de documente care nsoesc realizarea unui sistem soft. Aadar, din punct de vedere managerial, putem spune c un sistem soft nu se rezum doar la codul executabil al acestuia; el const dintr-o serie de documente care, n mod uzual, pot fi:
-un document care cuprinde cerinele fa de sistemul soft, cerine care sunt rezultatul unui consens al tuturor celor interesai, ntr-o form sau alta, n dezvoltarea sistemului soft;
-documentul care descrie specificarea cerinelor, structurate la nivel de sistem i, respectiv la nivel de componente;
-documentul care descrie soluia tehnic a sistemului soft, elaborat n faza de proiectare, de obicei. Schematiznd, un astfel de document va conine informaii structurate astfel:
descrierea soluiei sistemului soft ca ntreg;
descrierea coleciilor de date;
descrierea interfeei cu utilizatorul;
descrierea prelucrrilor asociate funciilor sistemului soft.
-codul surs al sistemului soft;
-datele de test ale sistemului soft, structurate pe module i la nivelul sistemului ca ntreg;
-documentaia utilizator care nsoete sistemul soft; n aceast categorie putem include:
ghidul de instalare a sistemului soft;
manualul de referin al sistemului soft;
sistemul de help on-line;
suporturile de curs pentru instruire n utilizarea sistemului soft, etc.
Toate aceste tipuri de documente trebuie realizate la standarde de calitate deosebite dac se dorete meninerea sistemului soft pe o traiectorie ascendent n topul preferinelor clienilor. Este momentul s spunem c, vorbind despre clieni, din punct de vedere managerial acetia pot fi:
clieni pentru care dezvoltm un sistem soft dedicat;
clieni pentru care dezvoltm un sistem soft de interes general.
S mai adugm faptul c, dintre toate documentele care nsoesc realizarea unui sistem soft unele sunt destinate a fi livrate clientului, altele sunt pentru uzul intern al firmei productoare de soft.
Procesele desfurate n timpul dezvoltrii softului Dac dorete s se implice n gsirea unui rspuns ct mai bun la ntrebarea Cum este realizat sistemul soft?, MPS trebuie s exercite un control metodic asupra modului n care se desfoar activitile pe baza crora sunt realizate documentele menionate mai sus, n acest paragraf. Ideea de control metodic poate avea nelesuri diferite pentru manageri diferii. A sugera cititorului s priveasc aceast idee din perspectiv pragmatic: cel care investete n dezvoltarea unui sistem soft este preocupat ca procesul de dezvoltare a softului s fie structurat pe principii de eficien i calitate. Eficiena micoreaz costurile de producie, calitatea micoreaz costurile cu ntreinerea sau dezvoltarea. Iat motive destul de puternice pentru ca un manager s fie preocupat de coninutul unui proces de dezvoltare a softului. Din punct de vedere al managerului, problemele care apar n dezvoltarea softului se vd astfel:
1.Deoarece producerea unui document este posibil ca urmare a unei activiti specifice, ntregul proces de dezvoltare a softului va fi ntotdeauna o sum de activiti care de fapt formeaz un sistem de activiti, dac lum n seam nenumratele interdependene dintre acestea.
2.Activitile de dezvoltare tipice pentru un sistem soft ar putea fi considerate:
analiza cerinelor;
specificarea formal a sistemului i a prilor acestuia;
proiectarea arhitecturii sistemului i a componentelor acestuia;
implementarea sistemului;
testarea componentelor sistemului;
integrarea componentelor n sistem i testarea sistemului;
scrierea manualelor i a altor tipuri de documentaii utilizator;
instalare sistem;
ntreinerea sistemului pe timpul exploatrii.
Deducem c este sarcina MPS s defineasc procesele de dezvoltare pentru a indica:
-care sunt documentele i produsele care urmeaz a fi realizate; -ce activiti vor fi desfurate; -cnd va primi clientul documentele i produsele pe care le ateapt; -cnd vor fi desfurate activitile.
De aceea este imperios necesar ca activitile de dezvoltare s fie organizate, ceea ce implic desfurarea unor activiti adiionale procesului de dezvoltare a softului. Aceste activiti adiionale dau consisten unui proces paralel cu procesul de dezvoltare a softului: procesul de management al proiectului de realizare a unui sistem soft. Am vzut c activitile de dezvoltare au ca rezultat o mare varietate de documente. Activitile de management au ca rezultat esenial planurile pe baza crora se desfoar activitile de dezvoltare. Prevederile i implicaiile acestor planuri sunt negociate cu clientul, deoarece conin multe elemente de interes pentru acesta (resurse, termene de execuie, etc.).
Factorul uman implicat n dezvoltarea sistemelor soft Proiectele soft de medie i mare complexitate presupun o participare semnificativ din punct de vedere al factorului uman. M refer, n primul rnd, la specialitii n IS care se implic n desfurarea activitilor de dezvoltare. Atunci cnd se lucreaz n echip la rezolvarea unei probleme, gestiunea relaiilor dintre membrii echipei devine o problem important. Aa cum ne nva tratatele de management ntre membrii unei echipe de dezvoltare pot apare: relaii profesionale (de colaborare sau de subordonare), relaii de natur general-uman (simpatie, antipatie, indiferen, etc.), relaii legate de partajarea unor resurse comune (ncperile n care se lucreaz, grupurile sanitare, biblioteca, etc.) .a.m.d. Este sarcina managerului s gseasc soluiile cele mai simple pentru optimizarea funcionrii acestui complex de relaii. Evident, managementul este interesat, n primul rnd, de eficientizarea relaiilor profesionale. De aceea, managementul proiectelor soft va propune un model de organizare a membrilor unei echipe de dezvoltare. Cu toate c mai exist i vistori care vd o echip de proiectare ca o sum natural de preocupri convergente, practica recunoate ca valabile modelele ierarhice de organizare. Astfel c este posibil un model de organizare a membrilor unei echipe de dezvoltare, pentru un proiect mare, ca n Figura 5.2. Un astfel de model ncapsuleaz, evident, o serie de elemente birocratice, indispensabile pentru bunul mers al activitilor ntr-o echip de dezvoltare. Tot managementul este cel care trebuie s gseasc cea mai corect dimensionare a structurii birocratice a unui proiect, n funcie de mrimea proiectului i prioritile acestuia. O astfel de structur birocratic este necesar pentru a asigura, i din punct de vedere managerial, abstractizarea efortului de dezvoltare a unui sistem soft. Pentru o mai bun nelegere a rolului managementului n dezvoltarea sistemelor soft, n paragraful 5.2.2.2 voi face o scurt trecere n revist a ideilor de baz ale teoriei generale a managementului din perspectiv informaionial.
Figura 5.2 Model ierarhic, ipotetic, de organizarea a membrilor unei echipe de proiectare
5.2.2.2. Informaie i management Sistemele informaionale pot mbunti considerabil procesul de elaborare a deciziilor manageriale. Veritabila industrie de sisteme informaionale bazate pe calculator a impus concepte precum: sisteme de management informaional (SMI) i sisteme informaionale executive (SIE). Semnificaia precis a acestor concepte o voi prezenta n cele ce urmeaz.
Informaia i funciile managementului Managementul este, n general, descris ca un proces de conducere care implic urmtoarele funcii: planificarea, organizarea, coordonarea i controlul. Aceste funcii ale managementului au fost identificate i expuse pentru prima dat de ctre Henri Fayol, un pionier al teoriei managementului din Frana.
Planificarea Ca funcie a managementului, planificarea presupune estimarea evoluiei proceselor i fenomenelor viitoare, respectiv, a efectelor pozitive i negative pe care aceasta le poate genera asupra sistemului condus. Tot de previziune ine i capacitatea managementului de a pregti din timp strategii i scenarii de aciune pentru minimizarea riscurilor i maximizarea gradului de realizare a obiectivelor urmrite.
Manager de proiect Colec- tiv de asigu- rare a calitii Colectiv de verifi- care i validare Colectiv de mode- lare a soluiei Colec- tiv de progra- mare Colectiv pentru a- sigurarea suportu- lui hard Integrare Subsistem 1 Subsistem n ....... Organizarea Ca funcie a procesului de management, organizarea definete ansamblul proceselor de conducere prin intermediul crora se divizeaz activitatea sistemului condus, stabilindu-se i delimitndu-se subactivitile i sarcinile corespunztoare acestora. Altfel spus, organizarea nseamn gruparea dup criterii de funcionalitate i eficien a sarcinilor i delegarea responsabilitii necesare ndeplinirii lor.
Coordonarea Ca funcie a procesului de management, coordonarea const n ansamblul proceselor prin care se sincronizeaz deciziile i aciunile personalului unui sistem organizaional (n cadrul previziunilor i organizrii anterior stabilite), cu scopul asigurrii resurselor necesare, n timp util, de calitatea stabilit i n cantitatea dorit, pentru atingerea obiectivelor sistemului organizaional. ndeplinirea acestei funcii a sistemului de management este posibil cu ajutorul unui sistem de comunicare adecvat la toate nivelele de management.
Controlul Prin control desemnm ansamblul proceselor de urmrire a modului n care se desfoar diferite aciuni sau ntreg procesul de management, ct i de reglare a activitilor organizaiei prin gsirea unor metode eficiente de identificare i eliminare a efectelor perturbaiilor aprute n funcionarea sistemului. Schematiznd i dezvoltnd puin subiectul avem Figura 5.3. Cititorul are ocazia s-i formeze o imagine ceva mai cuprinztoare asupra dificultilor meseriei de manager. Pe lng faptul c pretinde competen, uneori interdisciplinar, pentru a menine n echilibru diferitele tendine care se pot manifesta la nivelul sistemului condus i la diferite niveluri de management, meseria de manager este marcat de numeroase responsabiliti, att fa de indivizii sau grupurile profesionale conduse ct i fa de organizaie n ansamblu. Poate c, n acest moment, cititorul i-a modificat oarecum atitudinea i fa de MPS.
Pentru a nu eua, un proiect soft are nevoie de un management eficient, elastic, corect dimensionat.
Toate aceste caliti ale actului de management(eficient, elastic, corect dimensionat) depind de virtuile sistemelor informaionale pe care se bazeaz managementul. Dintre componentele sistemelor informaionale un rol esenial l joac, dup cum am ami spus SMI, SAD, SIE.
SMI (Sistemele de management informaional) Numite n diferite lucrri i sisteme de raportare a informaiilor, aceste sisteme au fost primul tip de sistem informatic-suport pentru actul de management. SMI produc date i informaii necesare pentru fundamentarea multora dintre deciziile zilnice ale managerilor. Beneficiari obinuii ai SMI: managerii de nivel tactic i operaional.
SAD (Sistem de asistare a deciziilor) Sunt sisteme de informare bazate pe calculator care furnizeaz suport informaional interactiv managerilor n timpul procesului de elaborare a deciziilor. Astfel de sisteme pot folosi: modele analitice, baze de date specializate, sisteme expert, etc. Beneficiari obinuii ai SAD: managerii de nivel tactic i strategic.
Figura 5.3.c Niveluri de management
Management strategic Management tactic Management operativ Planificare i control al aciunilor de interes general; competena managerului de top Planificare i control al aciunilor la nivelul subunitilor componente; competena managerului mediu Planificare i control al operaiilor zilnice; competena managerilor care au contact direct cu nivelul operativ Date i informaii Planificarea Stabilire obiec- tive i dezvolta- re strategii i tactici Organizarea Delegarea responsabilit- iilor la nivel de individ i de grup Coordonarea Conducerea personalului prin motivare i comunicare Controlul Evaluarea i ajustarea performanelor organizaionale Figura 5.3.a Funciile managementului Interpersonal Leader profesional Legtur cu mediul Leader formal Informaional Supervizor Difuzor Leader de opinie Decizional Antreprenor Gestiune conflict Alocare resurse Negociere Figura 5.3.b Rolurile managementului SIE (Sisteme informaionale executive) Sunt sisteme informaionale care combin multe dintre nsuirile SIM i SAD. Atunci cnd au fost dezvoltate pentru prima dat, SIE au fost focalizate pe ideea de asigurare a managerilor de nivel top cu informaii strategice. Astfel de sisteme trebuie s permit managerilor de top un acces rapid la informaii despre factorii de succes critici din perspectiva ndeplinirii obiectivelor asumate de organizaie. n lucrarea [11] subiectul de fa este amplu dezvoltat i, ceea ce este important, dintr-o perspectiv pregnant pragmatic, ceea ce l ajut pe cititor s neleag mai bine relaia dintre informaie i management care, n alt plan este nimic altceva dect relaia dintre informaie i putere. nchei aici mica incursiune n lumea managementului, invitnd cititorul s-i completeze cultura i cu o serie de cunotine care ar putea s fac lumin ntr-o zon n care, altfel, poate bntui improvizaia. Cu perspectiva asupra managementului modificat n acord cu cele spuse n 5.2.2.2, putem aborda probleme cheie ale MPS ca n paragraful 5.2.2.3.
5.2.2.3. Esenial i la obiect despre MPS Aadar, MPS este un caz particular de management de proiect, care la rndul lui este un caz particular de management n genere. Prin urmare, putem defini MPS rspunznd la ntrebrile:
1. Ce activiti desfoar managerii n industria softului?
2. Ce rol joac managerii ca i componente ale MPS?
Rspunsul la aceste ntrebri mi cere s precizez urmtoarele:
Activiti desfurate/competene ale managerilor:
-Planificarea (=stabilire obiective i organizarea modului de ndeplinire a acestora);
-Urmrirea evoluiei proiectului prin msurarea progreselor realizate n raport cu planul;
-Efectuarea coreciilor necesare pentru ca evoluia proiectului s aib o curb ascendent, n limitele planului stabilit;
-Tratarea excepiilor, adic efectuarea unor corecii majore la planul de execuie pentru a evita un posibil eec al proiectului.
Aceste tipuri de activiti sunt desfurate la diferite nivele de management:
-la nivel strategic (privesc ntreaga firm de dezvoltare a softului, pe o perioad de cteva luni sau chiar mai mult);
-la nivel de proiect (privesc derularea unui proiect, n acord cu termenele de execuie asociate);
-la nivel de echip de proiectare (privesc o faz n dezvoltarea unui sistem soft);
-la nivel individual (privesc desfurarea activitilor la nivel individual de pe o zi pe alta).
Aspectele fundamentale pe care se structureaz aceste activiti sunt:
resursele; este vorba, n principal, de utilizarea celei mai importante resurse n IS, timpul de lucru al specialitilor IS; deci, clasica, de-acum, problem: cine, ce i unde face?.
calitatea; este vorba de calitatea sistemului soft n curs de dezvoltare, adic, trebuie clarificat care sunt obiectivele urmrite din acest punct de vedere i care sunt modalitile de ndeplinire a acestor obiective.
riscurile; este vorba de apariia unor situaii care pot afecta evoluia corect a proiectului; din punctul de vedere al managementului, problema este: -cum pot fi identificate aceste situaii? i -cum pot fi prevenite aceste situaii?
Dezvoltarea sistemelor soft folosete intens capacitile explicative i de reprezentare ale modelelor:
-diferite modele pentru structura i proprietile produselor realizate n timpul dezvoltrii sistemului soft;
-diferite modele pentru structura i proprietile proceselor specificate n diferite planuri de dezvoltare.
La fel ca i n alte domenii, se face uz de dou tipuri fundamentale de modele: -modele calitative i -modele cantitative.
Modelele calitative (indiferent dac este vorba de produse sau procese) sunt utilizate pentru descrierea structurii acestora n termeni de componente i relaii ntre componente. Modelele calitative pot admite mai multe tipuri de reprezentri (de tip diagram cazul UML, matematizate grafuri sau arborescene, formale codul surs ntr-un limbaj de programare). Sunt posibile, dac se pltete tributul necesar rigorii, transformri de la o reprezentare la alta, dac acest lucru este n beneficiul evoluiei spre succes a proiectului.
Modelele cantitative i propun cuantificarea atributelor msurabile ale produselor sau proceselor, precum i a interaciunilor dintre acestea. Efectiv, aceste modele se reduc la diferite tipuri de ecuaii matematice.
n managementul proiectelor, modelele calitative sunt folosite pentru a descrie: -cum este compus procesul de dezvoltare din activiti;
-ce documente produce un proces i ce documente sunt necesare pentru a desfura un proces;
-cum se constituie ntr-o faz activitile care coopereaz pentru a produce un produs livrabil ctre un anume tip de client;
-cum se nlnuie fazele pentru a forma un proces complet.
De asemenea, se poate spune c, n managementul proiectelor modelele cantitative sunt folosite pentru a descrie: -atributele care msoar calitatea i resursele implicate n dezvoltarea unui sistem soft;
-cum pot fi estimate valorile acestor atribute la nceputul proiectului;
-cum pot fi actualizate valorile acestor atribute n timpul derulrii proiectului pentru a menine un trend favorabil ndeplinirii obiectivelor proiectului.
Putem aborda acum i subiectul numit n MPS Planificarea iniial a unui proiect. Este o activitate deosebit de important a managementului care trebuie abordat cu maxim profesionalism. Multe dintre deciziile care determin succesul unui proiect depind de calitatea planificrii iniiale. Abordarea corect a acestui subiect presupune:
1 0 Stabilirea obiectivelor Obiectivul fundamental al unui proiect de dezvoltare a softului este realizarea unui sistem care corespunde cel puin cerinelor clienilor. Spun cel puin clienilor (care corespund, dup cum am vzut n Capitolul 1, factorilor externi ai calitii unui sistem soft i nu numai) deoarece exist i cerine fa de sistemele soft care in de exigenele de natur intern, asumate de specialitii IS n procesul de modelare. n mod uzual, obiectivul fundamental descris mai sus are trei subobiective importante:
obiective sistem ce servicii ateapt clientul de la sistem astfel nct s rezulte i nite beneficii; costurile asociate dezvoltrii i folosirii sistemului soft; efectele secundare ale utilizrii sistemului soft alte avantaje pe care clientul le poate avea dac utilizeaz sistemul soft.
Problema derivat din ncercarea de stabilire a obiectivelor unui sistem soft este urmtoarea: de multe ori clientul nu poate defini exact propriile lui cerine, ceea ce, mai devreme sau mai trziu, poate afecta proiectul. De asemenea, la stabilirea obiectivelor nu trebuie uitat faptul c este dreptul clientului s atepte beneficii din utilizarea sistemului soft care depesc costurile de dezvoltare i utilizare.
2 0 Planificarea iniial n acord cu cele spuse relativ la stabilirea obiectivelor, planificarea iniial va ncerca s determine ct mai exact:
-ce produse trebuie livrate clientului pentru a garanta ndeplinirea obiectivelor asumate;
-ca urmare, ce activiti sunt necesare;
-n consecin, ce documente trebuie realizate n aceste activiti;
-n sfrit, ce alte activiti sunt necesare pentru a produce aceste documente.
Oriunde exist dubii, acestea pot fi tratate n aceast etap prin categorisirea articolelor (documente, activiti, funcii, etc.) ca fiind:
-imperative (aceste articole sunt neaparat necesare pentru ntmpinarea cerinelor clientului);
-de dorit (aceste articole ar putea fi foarte folositoare, dar este posibil satisfacerea cerinelor clientului i fr producerea lor);
-opionale (aceste articole pot fi folositoare, dar, n mod sigur, este posibil satisfacerea cerinelor importante ale clientului fr ele.
Rezultatul planului iniial va fi o list care cuprinde:
-activitile posibile;
-documentele care vor fi livrate clientului;
-documentele interne;
-clasificarea acestora dup importana lor pentru proiect.
5.2.3. Managementul riscului 5.2.3.1. Dereglare i risc Din activitatea cotidian a unui angajat al unei firme este cunoscut faptul c treburile nu merg ntotdeauna cum i-ar dori acesta. Lipsa de organizare sau presiunea exercitat asupra activitii de factori aleatori pot provoca dereglri (incidente, disfuncii) ale acestei activiti.
Voi numi dereglare orice situaie care poate apare n desfurarea unei activiti i care dac nu este combtut de management poate aduce prejudicii desfurrii activitii conform planului.
Trivial, dar trebuie spus c orice dereglare are circumstane care o produc (=cauze) i rezultate n caz de ignorare a dezvoltrii dereglrii (=efecte). Evident, este de competena managerului s identifice cauzele dereglrii pentru a aciona asupra lor. Este cunoscut prostul exemplu dat de unii manageri care se lupt cu efectele deoarece nelepciunea i competena pe care o au nu i ajut s obin o reprezentare ct mai precis asupra cauzelor dereglrii.
Se numete risc n procesul de management orice dereglare care reprezint o ameninare la adresa ndeplinirii obiectivelor eseniale ale unui proiect.
n IS, obiectivele eseniale ale unui proiect pot fi: cerinele fa de sistem, costurile estimate ale ntregului ciclu de via, etc. n acest moment putem observa c, odat aprut un risc n procesul de management, atunci acesta implic:
-o dereglare a unei activiti;
-probabilitatea ca dereglarea s apar (altfel spus, probabilitatea de manifestare a cauzelor apariiei dereglrii);
-impactul pe care dereglarea l va avea asupra succesului proiectului, dac apare (cu alte cuvinte, msura efectelor dereglrii asupra activitii).
Din punct de vedere al tipului de impact putem vorbi despre:
-riscuri binare (la care efectele sunt pe principiul totul sau nimic);
-riscuri scalate (la care efectele dereglrilor asociate pot varia pe o scal valoric dat); deci sunt riscuri cu manifestare gradat dup circumstanele n care apare i se dezvolt o anumit dereglare.
Motivul pentru care managementul unui proiect este pndit de riscuri are o explicaie foarte simpl: lipsa informaiilor sau cunotinelor relativ la ceea ce urmeaz s se ntmple n evoluia proiectului. Altfel spus, n timpul dezvoltrii unui proiect putem s ne confruntm cu evenimente, practic, nepredictibile dar i cu evenimente care pot fi puse pe seama lipsei de informare. Aadar, putem vorbi despre evenimente incerte sau despre estimarea incert a proprietilor evenimentelor. Ca un exemplu, n IS este uzual ca specialitii s vorbeasc astfel:
-S-ar putea ca cerinele fa de sistemul soft s se schimbe;
-S-ar putea ca unii membri ai echipei s fac grip la iarn; -S-ar putea s nu se gseasc pe pia un anume echipament, la preul scontat.
Toate aceste posibiliti descriu nite evenimente incerte. Tot aa de bine, specialitii IS se pot exprima astfel:
-Nu tim ct poate dura iniierea utilizatorilor n folosirea sistemului soft;
-Nu avem date despre performanele echipamentului cutare.
n ambele situaii prezentate mai sus, datele exist pe undeva dar nu au ajuns singure la urechea celor interesai.
5.3.2.2. Identificarea riscurilor n IS Att teoreticienii (care nainte de a ajunge teoreticieni au fost buni practicieni) ct i marea parte a practicienilor sunt contieni de numeroasele riscuri pe care le presupune dezvoltarea unui sistem soft. n IS, am mai spus-o i altundeva n carte, ne aflm pe un teren minat. Bucuria de a izbuti n faa unei provocri a proiectului poate fi uor umbrit de o ncercare neateptat. Faptul c multe proiecte importante au euat datorit modului superficial n care au identificat i cuantificat riscurile arat importana cunoaterii acestor riscuri. Cauze comune ale riscurilor n dezvoltarea sistemelor soft sunt:
cerinele fa de sistemul soft sunt neclare sau susceptibile de a fi modificate;
utilizarea unor tehnologii noi fr a avea cunotinele i deprinderile necesare;
dificulti n estimarea timpului de execuie i a altor resurse necesare;
dificulti n estimarea performanelor sistemului;
ncrederea oarb n furnizorii de componente i n posibilitatea de a termina proiectul cu indivizi cu abiliti ndoielnice;
lipsa standardelor i a unor reguli minimale de urmat n procesul de dezvoltare a softului.
ncercnd o clasificare a acestor cauze, oarecum, dup originea lor, avem:
Cauze care pot fi puse pe seama clientului -necunoaterea cerinelor proprii fa de sistemul soft; -neimplicarea corect i efectiv n efortul de dezvoltare a proiectului; -necunoaterea clar a beneficiilor i costurilor proiectului.
Cauze care pot fi puse pe seama mediului n care va lucra sistemul soft -nivel de organizare deficitar; -probabilitate mare de producere a unor schimbri majore.
Cauze care pot fi puse pe seama tehnologiei folosite -aceasta nu furnizeaz facilitile cerute de dezvoltarea sistemului; -aceasta nu are suficient performan n raport cu obiectivele sistemului.
Cauze care pot fi puse pe seama resurselor disponibile -nu exist timp suficient pentru proiect; -oamenii implicai n proiect sunt insuficieni; -echipamentele disponibile pentru proiect sunt insuficiente sau uzate moral.
Cauze care pot fi puse pe seama echipei de dezvoltare -necunoaterea tehnologiilor; -necunoaterea metodologiei de dezvoltare; -incapacitatea de a rezolva probleme punctuale; -dependena exagerat de anumii membri ai echipei.
Toate motivele de ngrijorare reprezentate de aceste cauze (i nc multe altele) este bine s fie luate n serios de managementul unui proiect de sistem soft care trebuie s procedeze metodic i n problema riscurilor asociate proiectului, adic:
-identificnd riscurile i clasificndu-le;
-descriind riscurile pn la un nivel la care cauzele care le produc devin clare;
-cuantificnd riscurile (probabilitatea de apariie i mrimea impactului n caz de apariie).
5.2.3.3. Reducerea riscului n MPS Evident c n faa ameninrilor de tot felul la adresa succesului unui proiect, managementul trebuie s ia msuri de reducere a riscului de manifestare a acestor ameninri. Deoarece trebuie s fie foarte clar pentru managerii din IS, voi sublinia, nc odat, ideea c:
Managementul unui proiect de dezvoltare a unui sistem soft trebuie s desfoare o activitate metodic pentru reducerea riscurilor care pot prejudicia succesul proiectului.
Ce poate face managementul n acest scop? Cteva direcii de aciune ar putea s fie:
Obinerea de informaii pentru a diminua impactul necunoscutului asupra anselor de reuit ale proiectului prin: -organizarea de experimente i efectuarea de msurtori;
-efectuarea de cercetri i construirea de modele;
-construirea i evaluarea unor prototipuri, etc.
ncercarea de a preveni evoluia riscurilor prin: -contientizarea oamenilor-cheie ai proiectului asupra ameninrilor la adresa proiectului;
-proiectarea i implementarea unor procedee de monitorizare a activitilor;
-perfecionarea profesional a membrilor echipei.
Mandatarea ctre un grup specializat a problemei managementului riscurilor unui proiect.
A aminti cititorului c exist metodologii de dezvoltare a softului care se autointituleaz risk-driven (deci pun n centrul ateniei preocuparea de a diminua riscurile la care poate fi expus un proiect). A aminti n acest sens modelul spiralei (Boehm i Papaccio).
Ca un fel de concluzie a paragrafului 5.2.3 voi spune c planul de dezvoltare a unui sistem soft poate fi modificat semnificativ n bine dac managementul i exercit cu abilitate i funcia de gestiune a riscurilor care pot amenina succesul unui proiect. Dac managementul unui proiect nelege rolul conducerii preventive printre ameninrile naturale la adresa proiectului, atunci costurile, termenele de livrare i calitatea sistemului soft pot fi salvate de la abateri nedorite. 5.2.4. Tehnici de reprezentare a MPS Managerul unui proiect, n general, managerul unui proiect de dezvoltare a unui sistem soft, n particular, dispun de numeroase tehnici pentru reprezentarea i descrierea planurilor de proiectare. Cititorul a neles, probabil, faptul c unul dintre rezultatele importante ale activitii managementului n IS este reprezentat de planurile de dezvoltare. Pentru reprezentarea acestor planuri se folosesc modele de tip reea sau diagrame Gantt. Toate aceste tipuri de reprezentare urmresc, n esen, acelai lucru: identificarea aspectelor critice ale planurilor de dezvoltare cu scopul de a focaliza atenia managementului asupra acestor aspecte. nainte de a trece la descrierea succint a tehnicilor de analiz a drumurilor critice ale unui plan de dezvoltare trebuie s informez cititorul c exist sisteme soft dedicate asistrii managementului proiectelor n general (CA Super-Project, Rational Rose).
5.2.4.1. Analiza drumului critic Tehnica cunoscut sub denumirea CPA (prescurtare de la Critical Path Analysis) a fost dezvoltat la sfritul anilor 50 pentru a fi folosit n dezvoltarea unor proiecte mari ale marinei americane. La origine, cunoscut ca metoda PERT (Project Evaluation and Review Technique), mai este numit i analiza de tip reea, fiind folosit intens n nenumrate proiecte. Istoricul CPA i PERT arat c PERT este mai elaborat dect CPA. n esen, ns, ambele abordri folosesc pentru reprezentarea proiectelor concepte precum activitile i evenimentele. Terminarea unei activiti echivaleaz cu producerea unui eveniment n mersul proiectului. Un astfel de eveniment mai este desemnat i ca reper (milestone n englez) n dezvoltarea proiectului. Fiecare reper reprezint nceputul unor activiti care sunt direct dependente de terminarea activitilor precedente. Deoarece pentru prezentarea ideilor de baz ale analizei de tip reea m voi limita la semantica CPA, voi mai spune c CPA se bazeaz pe analiza dependenelor secveniale ntre activiti i folosete durata estimat pentru fiecare activitate cu scopul de a deduce o estimare a duratei proiectului. De asemenea, CPA permite identificarea dependenelor dintre activiti care sunt critice pentru evoluia proiectului. Etapele care trebuie parcurse pentru a elabora o analiz CPA sunt prezentate mai jos.
Etapa 1 Tabelarea tuturor activitilor i reperelor proiectului Aceast etap presupune ntocmirea de tabele care conin informaii similare celor prezentate n Figura 5.4.
Activitate Descriere Reper Activiti precedente Durata estimat Personal necesar A Interviuri utilizator 2 5 u.t. 2 B Pregtire contracte de utilizare 3 2 u.t. Cel de la A C Rafinare contexte de utilizare 4 A,B 2 u.t. 3 D Schimabre ecrane interfa utilizator 5 C 2 u.t. 2 E Rafinare proiectare ecrane utilizator 6 D 2 u.t. 2 F Identificare clase 7 C 2 u.t. 3 G Analiza relaiilor dintre clase 8 F 4 u.t. 3 H Schiare diagram clase 9 F 5 u.t. 3 I Rafinare diagram clase 10 G,H 4 u.t. 4
Figura 5.4. Un exemplu de proiect de activiti n IS
Etapa 2 Determinarea dependenelor dintre activiti Anumite activiti nu pot ncepe pn cnd altele nu s-au terminat. Predecesorii activitilor sunt reprezentai n coloana patru a tabelului de tipul celui din Figura 5.4. Ca un exemplu, activitatea rafinare contexte de utilizare trebuie s fie terminat nainte de a trece la identificarea claselor.
Etapa 3 Estimarea duratei fiecrei activiti Pentru rezolvarea acestei probleme exist mai multe abordri datorit elementelor incerte implicate n estimarea duratei activitilor. Una dintre cele mai mult folosite formule este:
6 ) * 4 ( MPT MLT MOT ED + + =
unde: -ED este durata estimat a activitii (Expected Duration); -MOT este aprecierea cea mai optimist asupra duratei activitii (Most Optimistic Time); -MLT este aprecierea cea mai probabil asupra duratei activitii (Most Likely Time); -MPT este aprecierea cea mai pesimist asupra duratei activitii (Most Pessimistic Time).
Odat calculat durata estimat a unei activiti, aceasta este trecut n coloana 5 a unui tabel asemntor celui din Figura 5.4.
Etapa 4 Elaborarea diagramelor CPA Exist dou stiluri principale de notaii utilizate n elaborarea diagramelor CPA, desemnate prin activiti n nod sau activiti pe muchii. Amndou tipurile de notaii folosesc acelai tip de informaii dei arat diferit. n cele ce urmeaz voi adopta soluia activiti pe muchii. n aceast variant fiecare reper este reprezentat printr-un cerc cu trei compartimente. Un compartiment este etichetat cu numrul reperului iar celelalte dou vor indica termenul cel mai devreme de ncepere a activitii (TDI), i, respectiv, termenul cel mai ntrziat de ncepere a activitii (TII). Ilustrm cele spuse n Figura 5.5.
11 15 7 18 24 8 D 7 Numr reper Termenul cel mai devreme de ncepere pentru activitatea D Termenul cel mai ntrziat de ncepere pentru activitatea D Durat activitate Etichet activitate Figura 5.5. Exemple de notaie CPA Diagrama CPA, parial completat, relativ la datele indicate n Figura 5.4. este prezentat n Figura 5.6. Voi face cteva observaii relativ la Figura 5.6. Mai nti, acolo unde apar sgei punctate spunem c avem activiti fictive, a cror durat este 0. Astfel de activiti fictive sunt dictate de raiuni de tipul:
Conform datelor din Figura 5.4. activitile G i H depind de terminarea activitii F (reperul 7);
De asemenea, G i H sunt predecesori pentru I (reper 9, unde ncepe activitatea I). Deoarece nu este obligatoriu ca G i H s se termine n acelai timp, fiecare activitate are nevoie de reper separat.
Figura 5.6. Diagrama CPA parial completat pentru un exemplu din Figura 5.4.
Practic, activitatea fictiv n discuie face legtura necesar ntre reperele 8 i 9.
Etapa 5 Completarea datelor de tip TDI i TII pentru fiecare reper Pentru completarea cu date de tip TDI a diagramei CPA se folosete procedeul mersului nainte prin diagram, de la reperul considerat de start pn la reperul final i completarea cu date astfel:
1) TDI pentru reperul de start, n mod convenional este 0. 2) Pentru reperele care au un singur predecesor valoarea TDI se obine prin nsumarea la valoarea TDI a predecesorului, a duratei estimate a activitii acestor repere; 3) Pentru reperele care au mai muli predecesori valoarea TDI se obine prin nsumarea la valoarea TDI cea mai mare (din lista valorilor TDI ale predecesorilor) a duratei estimate a activitii asociate alegerii respective. 4) Evident, nainte de a calcula valoarea TDI pentru un reper, valorile TDI pentru toi predecesorii trebuie s fie deja calculate.
Urmnd o astfel de procedur s-au obinut valorile TDI n diagrama CPA din Figura 5.6. Pentru completarea cu date de tip TII a diagramei CPA se folosete procedeul mersului napoi prin diagram, de la reperul considerat final pn la reperul de start i completarea cu date astfel:
1) TII pentru reperul final este considerat, convenional, egal cu TDI al acestui reper; 0 1 18 10 14 9 9 7 7 4 5 3 11 6 9 5 2 2 13 8 E 2 I 4 H 5 F 2 C 2 A 5 B 2 D 2 G 4 activitate fictiv 2) Pentru toate reperele care au un singur succesor, valoarea TII se obine scznd din valoarea TII a succesorului (deja calculat) durata activitii corespunztoare; 3) Pentru reperele care au mai muli succesori se fac toate diferenele dintre TII ale succesorilor i duratele activitilor asociate, alegndu-se ca valoare pentru TII ale reperelor n cauz, diferena cea mai mic; 4) Din nou se presupune c, ajungnd s calculm valoarea TII a unui reper, toi succesorii au fost deja examinai.
Forma complet a diagramei CPA prezentat n Figura 5.6. o avem n Figura 5.7.
Figura 5.7. Diagrama CPA complet pentru exemplul prezentat n Figura 5.4.
Etapa 6 Identificarea drumului critic Dup completarea cu valori a etichetelor TDI i TII ale reperelor se poate calcula timpul de ateptare al reperelor ca diferen dintre TDI i TII. Aceast diferen reprezint timpul cu care o activitate poate fi ntrziat fr a provoca probleme de ncadrare n grafic celorlaltelor activiti ale proiectului. O succesiune de repere pentru care diferenele ntre TDI i TII sunt 0 se numete drum critic. n Figura 5.7. activitile care aparin unui drum critic au muchiile marcate cu o bar vertical dubl. Drumurile critice rein, n mod deosebit atenia managementului unui proiect, datorit faptului c orice ntrziere pe o traiectorie critic poate afecta evoluia proiectului.
5.2.4.2. Diagrame Gantt Aceste diagrame (denumite astfel dup inventatorul lor Henry Gantt) reprezint o tehnic extrem de simpl i eficient de reprezentare a ealonrii n timp a activitilor unui proiect. Tehnica folosete barele orizontale pentru a reprezenta activitile proiectelor. ntr-o astfel de diagram axa orizontal reprezint timpul, fiind etichetat cu repere de tip uniti de timp (ore, zile, sptmni) fcnd mai uoar urmrirea evoluiei proiectului n timp. Activitile sunt aezate pe vertical, imediat n stnga diagramei, de sus n jos. Lungimea barei asociate fiecrei activiti n diagram este proporional cu durata activitii. S mai adugm faptul c diagramele Gantt arat n mod foarte sugestiv care sunt timpii de ateptare asociai activitiilor i pot, de asemenea, da informaii cu privire la alocarea n timp a resursei personal. Prezentm exemplul din Figura 5.4. din perspectiva diagramelor Gantt, n Figura 5.8. 0 0 1 18 18 10 14 14 9 9 9 7 7 7 4 5 5 3 11 18 6 9 16 5 2 5 2 13 14 8 E 2 I 4 H 5 F 2 C 2 A 5 B 2 D 2 G 4 5.2.4.3. Alte precizri asupra problemei reprezentrii planurilor de dezvoltare a sistemelor soft MPS are nevoie de o logistic de calitate pentru a monitoriza evoluia activitilor unui proiect din mai multe considerente, dintre care voi enumera cteva n continuare:
1.Prin utilizarea tehnicilor de reprezentare de tip CPA sau diagrame Gantt (DG) funcia de control a managemenrului are o foarte solid fundamentare metodologic. Se elimin controlul dup ureche sau bazat pe intuiia genial a managerului de proiect. 2.Prin utilizarea tehnicilor CPA sau DG riscurile rezultate din planificare pot fi estimate i, ca atare, se pot lua din timp msuri de diminuare sau eliminare a acestora. 3.Prin utilizarea tehnicilor CPA sau DG se instituie un cadru sistematic pentru controlul diferitelor tipuri de resurse ale proiectelor (personalul uman i productivitatea acestuia). 4.O planificare riguroas dar echilibrat influeneaz hotrtor costurile unui proiect. 5.Utilitatea acestor tehnici depinde de acurateea instrumentelor cu ajutorul crora se stabilesc duratele activitilor i necesarul de personal pe activitate. Aceste elemente se obin cu ajutorul altor tehnici (metrici), a cror importan o subliniez, dar informez cititorul c n aceast carte nu voi dezvolta acest subiect.
ZILE 4 3 3 3 2 2 3 3 Numr angajai Activiti A B C D E G F H I ZILE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 10
9
8
7
6
5
4
3
2
1 Numr de angajai Figura 5.8. Diagram Gantt a activitilor i pentru alocarea angajailor pe activitile proiectului Voi atrage, totui, atenia cititorului c este vorba despre metode de estimare a mrimii proiectelor (gen COCOMO), nc controversate, deci nc insuficiente din punct de vedere al obiectivitii tiinifice. Cititorul trebuie s mai afle, n ncheiere, c subiectul managementului proiectelor soft i preocup insistent i pe dezvoltatorii de medii CASE care ncearc s integreze n acestea i elemente suport pentru MPS.
Capitolul 6 Aspecte metodologice n abordarea unor probleme de dezvoltare a unor sisteme soft
Fr aplicaii orice teorie moare repede. Fr exemple de aplicare orice paradigm rmne o vorb goal. Dei n aceast carte nu am prezentat pe larg o metodologie anume, voi folosi (acolo unde este cazul), pentru ilustrarea unora dintre ideile repetate insistent n celelalte capitole ale crii, o serie de elemente preluate dup Object Modelling Technique (OMT) n contextul unei probleme pretext. Complexitatea problemei puse n discuie nu este devastatoare; adevrul este c nici nu caut aa ceva n aceast carte. Problema are, ns, destule elemente care necesit din partea celui care le abordeaz reflecie , metod i spirit creator, nainte de a se repezi la tastatur, cum au obiceiul muli dintre softitii zilelor noastre.
\ 6.1 Inteniile acestui capitol Pentru specialistul n IS aflat n faa unei probleme ntrebarea cea mai important rmne : "Cum se poate abstractiza enunul respectivei probleme astfel nct soluia obinut s aib mcar o parte din nsuirile unui sistem soft de calitate?". Atrag atenia cititorului c nu vreau s minimalizez cu nimic rolul celorlaltor prghii metodologice n dezvoltarea sistemelor soft. Exist, ns, un motiv simplu pentru care, n aceast carte, voi insista mai mult pe elementele de abstractizare: prezentarea limbajului pe care l propune o metodologie pentru modelarea (=abstractizarea) soluiei unui sistem soft este un exerciiu de maxim seriozitate care, eventual, poate face obiectul altei cri. De aceea, soluia problemei-pretext pe care o voi aborda n acest capitol va fi reprezentat folosind limbajul natural i, eventual, reprezentri grafice uor de neles sau care fac parte din categoria conveniilor de reprezentare cunoscute de marea majoritate a specialitilor n IS. S mai precizm, n sfrit, c problema este interesant tipologic, fapt care, sper eu, va menine treaz atenia cititorului.
6.2 Problem pretext pentru modelarea orientat obiect Pledoaria acestui paragraf are dou motivaii:
1 0 Din ce n ce mai muli specialiti n IS ar vrea s adere la "religia OO" dar, mai nti, trebuie ca cineva s-i conving. Ctigarea de adereni autentici (nu formali) ai "religiei OO" nseamn s faci din aceti adereni practicani din convingere. tiu c nu este simplu, dar voi ncerca.
2 0 Modelarea OO este o ocazie de a abstractiza de o manier care poate sensibiliza i ncnta chiar i pe specialitii n IS recunoscui pentru ndrjirea cu care i apr vechile principii.
Problema pretext asupra creia m opresc are urmtorul enun preliminar:
Modelarea orientat obiect a unei stive generice
Odat cu mine, nelege i cititorul c, nainte de a trece la rezolvarea propriuzis a problemei, trebuie s desluim, mcar n parte, semantica sintagmei "modelare orientat obiect".
6.2.1 Ce este modelarea orientat obiect? Iat o ntrebare bun la care este greu de dat un rspuns care s mulumeasc pe toat lumea. n IS, de exemplu, se vorbete despre orientare obiect n modelarea informaiilor, analiza i proiectarea sistemelor i, evident, n programare. Prezentarea pe care o fac va pune accent pe "liniile de for" ale sintagmei OO, dac mi este ngduit exprimarea. Mai nti, i voi reaminti cititorului c, indiferent dac se afl n domeniul problemei(DP) sau n domeniul soluiei (DS), specialistul n IS se confrunt, n esen, cu dou tipuri de probleme:
organizarea datelor;
organizarea prelucrrilor.
Din perspectiv clasic, pentru rezolvarea acestor dou probleme exist modele i metode de abordare specifice. Aa se face c vor exista modele de organizare a datelor (relaional, reea, ierarhic, fiiere clasice) i metode de organizare a prelucrrilor (orientate pe funcii, dirijate de date, dirijate de evenimente, etc.). Rezultatul unui demers din perspectiv clasic, n mare, este cel prezentat n Figura 6.1.
Figura 6.1 Maniera clasic de obinere a soluiei tehnice a unei probleme
Obiecia fundamental adus paradigmei ilustrat de Figura 6.1 se refer la sensibilitatea deosebit a soluiei tehnice n faa modificrilor de orice tip. Originea acestei sensibiliti se afl n autonomia relativ a celor dou modele, benefic pentru dezvoltarea separat, de calitate, a modelelor, avnd n vedere o serie de cerine pe termen scurt fa de soluie ca ntreg, dar generatoare, n mod natural, de dependene ntre modele, care nu favorizeaz continuitatea modular, extensibilitatea, portabilitatea, reutilizabilitatea, aspecte ale calitii unui sistem soft relevante pe termen lung. Foarte sintetic spus domeniul problemei se mapeaz slab pe domeniul soluiei. Att din interiorul laboratoarelor IS ct i din afara acestora s-a exercitat o presiune permanent pentru aezarea pe baze noi a relaie dintre date i prelucrri. O variant, validat practic ca eficient, de reaezare a relaiei date-prelucrri o reprezint modelarea orientat obiect. Imperativul cheie al paradigmei OO pare a fi asigurarea unor condiii naturale de mapare sporit a domeniului problemei pe domeniul soluiei. Pentru realizarea acestui deziderat era nevoie de o modificare radical de abordare, pe care voi ncerca s o prezint n continuare n ceea ce are ea esenial.
Aa cum rezult din Figura 6.2 modelarea OO a soluiei unei probleme se face pe trei nivele de abstractizare. Conceptele eseniale (i specifice) ale modelrii OO se regsesc la primul nivel de abstractizare, numit n majoritatea metodologiilor OO modelul claselor. S mai semnalez cititorului c suportul pentru maparea DP pe DS se regsete, n principal, la primele dou nivele de abstractizare.
Problema Determinare cerine fa de sistemul soft Modelul datelor Modelul prelucrrilor Soluia tehnic
Figura 6.2 Maniera OO de obinere a soluie tehnice a unei probleme
Concepte fundamentale n elaborarea modelului claselor Am afirmat n mai multe rnduri faptul c sistemele reale care suport un proces de modelare informaional reprezint punctul de plecare n demersul de dezvoltare a unui sistem soft care deservete un anumit sistem real. Obiectele care populeaz sistemul real i sunt importante din punct de vedere al cerinelor formulate fa de sistemul soft pot fi caracterizate informaional i comportamental. n limbaj IS se spune c un obiect din lumea real poate fi abstractizat de o list de atribute informaionale i de o list de atribute comportamentale.
Conceptul de clas Toate obiectele care sunt abstractizate de aceeai list de atribute informaionale i de aceeai list de atribute comportamentale formeaz o clas.
Punnd n valoare afirmaia de mai sus este evident c obiectele care populeaz sistemul real sunt partiionate n funcie de raportarea lor la o anumit list de atribute informaionale i comportamentale. Paradigma OO merge mai departe i afirm c a defini o clas n spirit OO nseamn:
1 0 A stabili lista de atribute informaionale (necesare i suficiente att din punct de vedere al logicii interne a obiectelor abstractizate de aceast clas ct i din punct de vedere al cerinelor de reprezentare a relaiilor cu obiecte avnd alte clase definitoare). 2 0 A declara aceast list ca fiind privat(=ascuns) fa de clienii clasei. 3 0 A stabili lista de atribute comportamentale (necesare i suficiente att din punct de vedere al logicii interne a obiectelor abstractizate de aceast clas ct i din punct de vedere al solicitrilor formulate de ctre obiecte avnd alte clase definitoare). 4 0 Declararea ca publice a acelor atribute comportamentale care abstractizeaz mulimea serviciilor adresate obiectelor avnd alte clase definitoare (mulimea acestor atribute se numete interfa).
Aplicarea consecvent a conceptului de clas astfel formulat nseamn, n paradigma OO, promovarea sistematic a principiului ncapsulrii. Problema Determinare cerine fa de sistemul soft Abstractizarea soluiei ca o colecie de clase, interconectate (asocieri, generalizri, agregri) Abstractizarea structurii de control a fiecrei clase Abstractizarea transformrilor suportate de fluxurile de date Dup cum se poate deduce, ncapsularea are dou obiective precise: abstractizarea similaritilor informaionale i comportamentale ale unei colecii de obiecte; abstractizarea serviciilor oferite clienilor de ctre obiectele din colecia menionat mai sus.
Conceptul de obiect n paradigma OO se numete obiect o instan a unei clase n modelare, ca i n programare, un obiect este caracterizat prin:
identitate; o list de valori asociat listei de atribute informaionale; mulimea atributelor comportamentale partajate mpreun cu alte obiecte avnd aceeai clas definitoare.
Din punct de vedere al identitii, un obiect are o identiate fizic, asigurat de sistemul care monitorizeaz procesul de declarare a obiectelor, ct i o identitate logic, datorat protocoalelor pe baza crora, pentru fiecare obiect cu identitate fizic, recunoscut, se atribuie nite valori atributelor informaionale aferente.
Conceptul de atribut informaional n modelarea OO exist deja consens n ceea ce privete sintaxa de principiu i semantica unui atribut informaional, n sensul c un atribut informaional se specific prin:
Aadar, orice atribut informaional are nume, tip i, eventual, valoare implicit. Semantica atributului informaional depinde, evident, de contextul n care acesta este utilizat.
Operaii i metode Descrierea comportamentului obiectelor unei clase este realizat, la cel mai nalt nivel de abstractizare de operaii. Exist un consens relativ i n ceea ce privete specificarea unei operaii n modelarea OO. Sintaxa de specificare a unei operaii este, n general:
Aadar, o operaie poate s returneze o dat de un tip specificat sau nimic, are un nume i poate face schimb de date cu apelantul n toate modurile posibile prin intermediul listei de parametri. Cititorul este contient de faptul c, specificnd o operaie (nu implementnd-o), descriem, practic, utilitatea acestei operaii i modul de folosire a acesteia.
n aceast faz a expunerii este cazul s pregtesc cititorul pentru noi dezvluiri n ceea ce privete potenialul modelrii OO. Din nenumrate motive (nevoia de rafinare treptat a soluiei, nevoia de reutilizare a efortului de modelare, nevoia de specificare a unor contexte polimorfice) soluia orientat obiect a unei probleme poate fi rezultatul unor eforturi de abstractizare care se desfoar pe trei direcii:
pe orizontal, obinndu-se clase avnd aproximativ acelai nivel de abstractizare i structuri informaionale i comportamentale dizjuncte; pe vertical, obinndu-se lanuri de derivare, prin intermediul crora se gestioneaz similaritile partajate de clase; n adncime, obinndu-se, dac este cazul, alternative (replici) la o soluie dat. Dei, formulat ca idee i nc nefolosit, abstractizarea n adncime, cu un suport adecvat la nivelul limbajelor de programare ar putea constitui soluia sistematic pentru o problem mai veche :problema polimorfismului de nivel sistemic.
Revenind la ideea abstractizrii OO pe vertical (deoarece problema de care ne vom ocupa va fi abordat din aceast perspectiv), voi prezenta, cu intenia de a comenta, situaia din Figura 6.3.
Figura 6.3 O ierarhie de clase Figura 6.3 ne sugereaz urmtoarele:
1 0 Clasa referit cu 1 abstractizeaz similaritile provenind de la cele dou lanuri de derivare. Abstractizarea, dup cum spune i psihologia gndirii, este o operaie tipic de generalizare. De aceea, n procesul de abstractizare pe vertical, o relaie posibil ntre clase este relaia de generalizare (privit de jos n sus) sau relaia de derivare (spacializare) dac privim de sus n jos. Conform Figurii 6.3 clasa referit de 2 generalizeaz clasa referit de 4 i n acelai timp specializeaz clasa referit de 1, ntr-o anumit direcie. Cititorul este invitat s dea dovad de mult rbdare din punct de vedere al apetitului pentru comunicarea ideilor n modelarea OO. Exist un exces de limbaj, n mare parte scuzat de dorina celor care comunic, de a surprinde noi faete ale unui fenomen att de complex cum este modelarea OO. Ca un exemplu, ntr-un lan de derivare, o clas care generalizeaz se numete superclas, clas de baz sau clas printe iar o clas care specializeaz se numete clas derivat, clas motenitoare sau clas urma. Oarecum ngrijorat de amploarea pe care o ia aceast "scurt prezentare" a fenomenului OO, trebuie totui s mai adaug c specializarea se poate realiza n dou moduri:
prin adugarea de noi atribute; prin redefinirea unor atribute comportamentale.
A
A B A C A B D 1 2 3 4 Atunci cnd este prezent fenomenul de redefinire a atributelor comportamentale, versiunea unui atribut comportamental la nivelul clasei rdcin se numete operaie, versiunile situate n clasele derivate direct sau indirect din clasa rdcin se numesc metode. Paradigma OO abstractizeaz eforturile de gestiune a similaritilor n relaiile dintre clase ridicnd la rang de principiu ideea de motenire. Pentru cititorul atent motenirea reprezint o poart larg deschis ctre utilizarea efortului de dezvoltare, dac principiul motenirii este judicios aplicat i n deplin respect fa de ncapsularea OO. Evident c, cititorul curios va dori s afle i ce alte tipuri de relaii se mai pot concepe ntre clase. i voi spune c aceste relaii mai pot fi: de asociere, de agregare, de asociere ca i clase, etc.). Tot cititorului curios i voi mai spune c modelarea OO mai susine fervent nc un principiu important, principiul polimorfismului, a crui nelegere este, parial, condiionat de nelegerea conceptului de mesaj.
Conceptul de mesaj n modelarea OO se numete mesaj apelul unei metode a unui obiect, formulat de ctre un client al obiectului respectiv.
Evidente sunt urmtoarele dou lucruri:
orice mesaj trebuie s primeasc un rspuns; obiectele comunic ntre ele cu ajutorul mesajelor.
Acum suntem n msur s spunem c, n condiii tehnice dependente de limbajul de programare un mesaj avnd aceeai structur sintactic poate primi rspunsuri diferite, n funcie de contextul n care s-a creat obiectul care este destinatar al mesajului. O operaie care se poate comporta astfel se numete operaie polimorfic. Nu-i rmne cititorului dect dorina de a alege o paradigm OO pentru a se familiariza cu toate exigenele ei n ceea ce privete: notaia utilizat, structura ciclului de via, structura procesului de management al softului, etc.
6.2.1 Elemente de modelarea pe marginea problemei propuse S ne reamintim c problema pretext a paragrafului 6.2 este:
Modelarea orientat obiect a unei stive generice
Un curs de structuri de date ne nva c stiva este o structur de date n care operaiile de inserare i extragere a elementelor sunt restricionate n sensul c:
1 0 Operaia de inserare (numit i PUSH n majoritatea implementrilor) se face ntotdeauna naintea ultimului element introdus, dac acest ultim element introdus exist. Ultimul element introdus este referit de o variabil special a stivei numit vrf sau top. Dac stiva este vid, atunci vrful stivei (care are o valoare special ) este actualizat astfel nct s refere elementul introdus. De remarcat c la inserarea unui element n stiv putem avea depire superioar, n situaia n care capacitatea predefinit a stivei este saturat.
2 0 Operaia de extragere (numit i POP n majoritatea implementrilor) se refer la elementul din vrful stivei, dac acesta exist. n urma unei operaii de extragere, vrful stivei este actualizat. De remarcat, de asemenea, c n situaia n care se foreaz o extragere de element dintr-o stiv vid, spunem c avem depire inferioar.
Exprimndu-ne n limbaj OO, operaiile obligatorii pentru o stiv sunt operaiile PUSH() i POP(). Evident, cnd modelm comportamentul unei stive, ne pot fi de folos i alte operaii a cror natur depinde de contextul n care este folosit stiva. Exemple de astfel de alte operaii voi prezenta n propunerea de soluie la aceast problem.
Stiva pe care vrem s-o modelm trebuie s fie generic
Cititorul a neles, probabil, c o structur de date este un tip de dat structurat, prin urmare este viabil n momentul n care cunoatem, printre altele, tipul elementelor care populeaz structura. Astfel c putem avea stive de ntregi, stive de numere reale, stive de iruri de caractere, etc.
O structur de date devine generic dac este specificat n aa fel nct s permit aplicarea acelorai operaii asupra unor tipuri diferite de date
Dac la cerina genericitii adugm i cerina de a putea avea drept suport pentru pstrarea stivei memoria RAM sau o specie adecvat de memorie extern, problema ncepe s-i contureze un enun consistent. Sunt n msur (poate cititorului o s i se par prea devreme, dar m va nelege dup ce va aborda singur o astfel de problem) s formulez urmtoarele cerine fa de sistemul soft pe care vreau s-l dezvolt:
1 0 Codul rezultat trebuie gndit astfel nct s poat fi partajat de orice client (programator) interesat; 2 0 Fiecare client s poat opera cu un tip de dat propriu; 3 0 Fiecare client s poat opta pentru suportul adecvat pentru stiv (RAM sau memorie extern); 4 0 Protocolul de lucru cu stiva s fie ct mai simplu; 5 0 Se vor avea, pe ct posibil, n vedere, cerine precum: structurarea, modularizarea, orientarea pe obiect, lizibilitatea, documentarea, etc.
Ultimele dou cerine se refer, evident, la cod. Inventarul faptic al enunului problemei n cauz, mpreun cu cerinele mai sus formulate ne ngduie s evideniem, din perspectiv orientare-obiect, urmtoarele clase candidate (Figura 6.4).
Figura 6.4 Clase candidate la soluia OO a problemei
Este clar c aceste clase prezint similariti de comportament. Intenia n acest moment este de a schia soluia problemei ca o ierarhie de clase, avnd aliura din Figura 6.5.
Stiva_RAM Stiva_M_Extern
Figura 6.5 Ierarhia de clase asociat soluiei problemei
Dup cum se vede, s-a introdus o clas abstract (TAbsStiva) a crei menire este de a colecta similaritile venind pe cele dou ramuri:
Ramura din stnga TRamStiva modeleaz stiva RAM se deriveaz din TAbsStiva
TVideoStiva modeleaz stiva utiliznd ca surs de date pentru stiv memoria video n mode text; se deriveaz din TRamStiva
Ramura din dreapta TMVStiva modeleaz stiva pstrat pe o memorie extern (virtual) se deriveaz din TAbsStiva deoarece n comportamentul clasei TMVStiva apar elemente care fac improprie derivarea din una dintre clasele TRamStiva sau TVideoStiva.
Schema prezentat n Figura 6.5 poate fi considerat modelul claselor pentru problema noastr. n treact fie spus, clasele prezentate n ierarhia din Figura 6.5 nu exceleaz prin dinamism, deci sunt triviale din punct de vedere modelului dinamic (structura de control, n Figura 6.2). Pentru a spori semantica schemei din Figura 6.5 prezentm, n extenso, definiiile claselor (rezultate n urma unui proces de abstractizare-ncapsulare uor de intuit de cititorul curios).
*Init(LE:intreg pozitiv) *Done() ;virtual; boolean GetAllocateError; TAbsStiva TRamStiva TVideoStiva TMVStiva Push( X: referin la element de inserat) ; virtual boolean Pop(X: referin la elementul extras) ; virtual Clear() ;virtual; RollUp() ;virtual; RollDn() ;virtual
Dup cum se vede din definiia clasei TabsStiva, toate operaiile fac parte din interfa, nefiind declarate ca private. De asemenea, cititorilor care au ncercat gustul programrii OO n Pascal, C++ sai Java trebuie s le atrag atenia asupra operaiilor speciale (marcate cu asterisc) , Init (constructor de clas) i Done (destructor de clas), operaii care joac un rol important n alocarea dinamic a memoriei pentru obiecte, iniializarea lor i a tabelelor cu metode virtuale n caz c este cazul. S mai adugm faptul c unele operaii ale clasei sunt urmate de clauza virtual ceea ce atrage atenia asupra inteniei redefinirii acestor operaii n descendeni. Se observ c atributele informaionale care au putut fi incluse n lista de atribute informaionale a clasei TAbsStiva sunt: -Lungime_Element; un ntreg pozitiv care va pstra lungimea n octei a elementului stivei;
-Numar_curent_de_elemente; un ntreg pozitiv care pstreaz numrul de elemente din stiv; la crearea unei instane valoarea este 0.
-Eroare_de_alocare_memorie: camp boolean care ajut la monitorizarea erorilor de alocare.
Invit cititorul la refelecie pe tema implicaiilor pe care le are genericitatea asupra procesului de modelare i, n final s urmreasc codul Pascal care implementeaz ideile prezentate mai sus.
TramStiva (derivat din TAbsStiva) Top: referin la element stiv (autoreferire) atribut privat *Init(LE:intreg pozitiv) *Done() ;virtual; boolean GetAllocateError; Push( X: referin la element de inserat) ; virtual boolean Pop(X: referin la elementul extras) ; virtual Clear() ;virtual; RollUp() ;virtual; RollDn() ;virtual
TMVStiva (derivat din TAbsStiva) Buffer :referin la o zon de memorie tampon Mesaj_Eroare : ir de caractere Nume_extern_fiier_asociat stivei :ir de caractere atribute private Hfiier :Handle de fiier *Init(LE:intreg pozitiv) *Done() ;virtual; boolean GetAllocateError; Push( X: referin la element de inserat) ; virtual boolean Pop(X: referin la elementul extras) ; virtual Clear() ;virtual; RollUp() ;virtual; RollDn() ;virtual
TvideoStiva (derivat din TRamStiva)
PushScreen() boolean PopScreen()
nainte de a prezenta codul surs care "materializeaz" inteniile de proiectare prezentate mai sus voi mai aduga o serie de observaii de interes pentru cititor.
1 0 Utilizatorul ierarhiei de clase poate beneficia de comportamentul polimorfic al ntregii ierarhii. Singura lui obligaie este s fac jonciunea cu codul aferent ierarhiei, n programul client. 2 0 Genericitatea impune ca n protocolul de utilizare a ierarhiei, la un moment dat s se "coboare" la nivel de octet. Acest efort, ns, este derizoriu n comparaie cu prelucrrile asumate n ierarhie. 3 0 Utilizatorul ierarhiei beneficiaz, totodat i de facilitile oferite de ierarhie penru depistarea posibilelor erori. Evident, tratarea unei erori este de competena clientului. 4 0 Alegerea limbajului este o sarcin relativ comod pentru problema noastr. Am ales limbajul Pascal pentru a m face mai uor neles. n realitate aceast alegere nseamn c mi- am pus codul obinut la dispoziia comunitii programatorilor de Pascal i, eventual, Delphi. Cunosctorii de C++ tiu, ns, c suportul oferit de C++ pentru programare OO i programarea n genere este mult mai interesant.
n sfrit, despre semantica ierarhiei, cel mai mult ne vorbete codul Pascal, ncapsulat ntr-un unit, pe care l prezint n continuare.
6.2.3 Implementarea modelului Cititorul are la dispoziie n acest paragraf unit-ul Pascal care ncapsuleaz toate specificaiile convenite n paragraful 6.2.2 precum i o mic aplicaie care folosete una dintre capabilitile unit-ului. Artificiile Pascal folosite pentru a rezolva problema genericitii pot fi uor nelese urmrind comentariile incluse n codul surs i avnd cunotine elementare de lucru cu structurile dinamice n Pascal. Cititorul poate trage nvminte i din analiza atent a modului n care conceptele OO din modelare i gsesc suport n Pascal, limbaj care s-a nscut, iniial cu alte scopuri dect promovarea principiilor OO.
unit StivaGen; { ---------------------------------------------------- Unit-ul ncapsuleaz soluia orientat obiect pentru stiva avand ca suport:
-Memoria RAM; -Hard disc-ul;
Autor: Dorin Bocu Ianuarie 2001 ---------------------------------------------------- }
{ ---------------------------------------------------- Interfaa unit-ului ---------------------------------------------------- } interface const Screen_Bytes = 4000; var { ---------------------------------------------------- Variabile necesare pentru recuperarea adresei memoriei video ---------------------------------------------------- } VideoMode :byte absolute $0040:$0049; VideoAddress :word; VideoPtr :pointer; type
{ ---------------------------------------------------- Declaraii de tipuri necesare pentru a specifica structura nodului listei suport pentru stiva RAM ---------------------------------------------------- } GenStivaPtr = ^GenStivaRec; GenStivaRec = record DataPtr : Pointer; NextLink : GenStivaPtr end;
{ ---------------------------------------------------- Clasa care modeleaz stiva cu suport memoria externa ---------------------------------------------------- } PTMVStiva=^TMVStiva; TMVStiva = object(TAbsStiva) constructor Init(ElementSize : word; Filename: string); destructor Done ;virtual; function GetErrorMessage : string; procedure Push(X:pointer) ;virtual; function Pop(X:pointer):boolean ;virtual; procedure Clear ;virtual; procedure RollUp ;virtual; procedure RollDn ;virtual; private DataBuffer:pointer; {pointer la buffer -ul de date } ErrorMessage, {messaj eroare } VMfilename : string;{nume extern fisier} VMfile : file; {variabila fisier } end;
{ ---------------------------------------------------- Clasa care modeleaz o stiv RAM care utilizeaz ca sursa de date memoria video ---------------------------------------------------- }
PTVideoStiva=^TVideoStiva; TVideoStiva= object(TRamStiva) procedure PushScreen; function PopScreen:boolean; end;
function TAbsStiva.GetAllocateError:boolean; begin GetAllocateError := AllocateError end;
function TAbsStiva.Pop(X:pointer):boolean; begin end;
procedure TAbsStiva.Clear; begin end;
procedure TAbsStiva.RollUp; begin end;
procedure TAbsStiva.RollDn; begin end;
{ --------------------------------------------------- Funcie utilizator care foreaz sistemul s returneze nil n caz de apel new sau getmem nesoluionat. Soluie Pascal!!!!! --------------------------------------------------- } function HeapErrorHandler(Size : word):integer;far;
begin HeapErrorHandler := 1 end;
{ --------------------------------------------------- Implementare metode TRamStiva --------------------------------------------------- } constructor TRamStiva.Init(ElementSize:word); begin ElemSize := ElementSize; if ElemSize = 0 then ElemSize := 1; Height := 0; AllocateError := false; Top := nil; end;
destructor TRamStiva.Done;
begin Clear end;
procedure TRamStiva.Push(X:pointer); var p : GenStivaPtr; begin AllocateError := false; if Top <> nil then begin new(p); { alocare element nou in stiva} if p = nil then begin AllocateError := true; exit; end;
getmem(p^.DataPtr, ElemSize); if p^.DataPtr = nil then begin AllocateError := true; exit; end; move(X^, p^.DataPtr^, ElemSize); p^.NextLink := Top; Top := p end else begin new(Top); if Top = nil then begin AllocateError := true; exit; end; getmem(Top^.DataPtr, ElemSize); if Top^.DataPtr = nil then begin AllocateError := true; exit; end; move(X^, Top^.DataPtr^, ElemSize); Top^.NextLink := nil end; inc(Height) end;
function TRamStiva.Pop(X:pointer):boolean; var p:GenStivaPtr; begin if Height > 0 then begin Move(Top^.DataPtr^, X^, ElemSize); FreeMem(Top^.DataPtr, ElemSize); { dealocare data } p :=Top; Top:=Top^.NextLink; dispose(p); { dealocare nod stiva } dec(Height); Pop:=true end else Pop:=false end;
procedure TRamStiva.Clear; var x:Pointer; begin GetMem(x, ElemSize); while Pop(x) do freemem(x, ElemSize); end;
procedure TRamStiva.RollUp; var old_top, next_one: GenStivaPtr; begin if (Top = nil) or (Height < 2) then exit; old_top := Top; Top := Top^.NextLink; old_top^.NextLink := nil; next_one := Top^.NextLink; while next_one^.NextLink <> nil do next_one := next_one^.NextLink; next_one^.NextLink := old_top; end;
procedure TRamStiva.RollDn; var last_one, next_one : GenStivaPtr; begin if (Top = nil) or (Height < 2) then Exit; last_one := nil; next_one := Top; while next_one^.NextLink <> nil do begin last_one := next_one; next_one := next_one^.NextLink; end; next_one^.NextLink := Top; Top := next_one; last_one^.NextLink := nil end;
{ --------------------------------------------------- Implementare metode TMVStiva --------------------------------------------------- } constructor TMVStiva.Init(ElementSize:word; Filename :string); begin if ElementSize = 0 then ElementSize := 1; ElemSize := ElementSize; VMfilename := Filename; Height := 0; assign(VMfile, VMfilename); {$I-} rewrite(VMfile,ElemSize); {$I+} if IOresult <> 0 then begin ErrorMessage:='Nu se poate deschide fisierul ' +VMfilename; exit; end; GetMem(DataBuffer,ElemSize); if DataBuffer=nil then begin AllocateError :=true; ErrorMessage :='Eroare alocare dinamica' end else begin AllocateError :=false; ErrorMessage :='' end; end;
destructor TMVStiva.Done; begin Clear; freemem(DataBuffer, ElemSize); end;
function TMVStiva.GetErrorMessage:string; begin GetErrorMessage:=ErrorMessage end;
procedure TMVStiva.Push(X:Pointer); begin inc(Height); seek(VMfile, Height-1); blockwrite(VMfile, X^, 1); end;
function TMVStiva.Pop(X:Pointer):boolean; begin if Height > 0 then begin dec(Height); seek(VMfile, Height); blockread(VMfile, X^, 1); Pop := true end else Pop := false; end;
procedure TMVStiva.RollUp; var I:word; begin seek(VMfile, Height-1); blockread(VMfile, DataBuffer^, 1); seek(VMfile, Height); blockwrite(VMfile, DataBuffer^, 1); for I := Height-1 downto 1 do begin seek(VMfile, I-1); blockread(VMfile, DataBuffer^, 1); seek(VMfile, I); blockwrite(VMfile, DataBuffer^, 1); end; seek(VMfile, Height); blockread(VMfile, DataBuffer^, 1); seek(VMfile, 0); blockwrite(VMfile, DataBuffer^, 1); end;
procedure TMVStiva.RollDn; var I:word; begin seek(VMfile, 0); blockread(VMfile, DataBuffer^, 1); seek(VMfile, Height); blockwrite(VMfile, DataBuffer^, 1); for I:=2 to Height do begin seek(VMfile, I-1); blockread(VMfile, DataBuffer^, 1); seek(VMfile, I-2); blockwrite(VMfile, DataBuffer^, 1); end; seek(VMfile, Height); blockread(VMfile, DataBuffer^, 1); seek(VMfile, Height-1); blockwrite(VMfile, DataBuffer^, 1); end;
{ --------------------------------------------------- Implementare metode TVideoStiva --------------------------------------------------- } procedure TVideoStiva.PushScreen; begin Push(VideoPtr) end;
function TVideoStiva.PopScreen:boolean; begin PopScreen:=Pop(VideoPtr); end;
{ --------------------------------------------------- Secvena de initializare a unit-ului in care variabila unitului SYSTEM HeapError este forat la valoarea <adresa functiei HeapErrorHandler> care ar putea trata excepiile la alocarea dinamic a memorie. De asemenea se stabilete adresa memoriei video --------------------------------------------------- } begin HeapError:=@HeapErrorHandler; if VideoMode=7 then VideoAddress:=$B000 else VideoAddress:=$B800; VideoPtr:=Ptr(VideoAddress,0); end.
program Apl_Stiva_cu_sursa_de_date_memoria_video; {$M 8192, 0, 655350} { --------------------------------------------------- Autor: Dorin Bocu Ianuarie 2001 --------------------------------------------------- } uses crt, StivaGen;
var S : TVideoStiva; I, NumarEcran : byte; AKey : char;
{ --------------------------------------------------- Procedura umple ecranul cu un caracter dependent de numrul de ecran primit ca parametru --------------------------------------------------- } procedure FillScreen(var SN : byte); var row : byte; C : char; AString : STRING; begin inc(SN); clrscr; C := chr(64 + SN); FillChar(AString[1], 80, C); AString[0] := chr(80); writeln('Numar ecran ', SN); for row := 2 to 24 do write(AString); end; { --------------------------------------------------- Programul principal --------------------------------------------------- } begin clrscr; { --------------------------------------------------- Apelare constructor motenit de la TRamStiva --------------------------------------------------- } S.Init(Screen_Bytes); NumarEcran := 0;
{ --------------------------------------------------- Pregtete trei ecrane cu informaii i le salveaz n RAM --------------------------------------------------- } for I:=1 to 3 do begin FillScreen(NumarEcran); S.PushScreen; delay(1000); end; clrscr; write('Asteptati va rog ...'); delay(1000); { --------------------------------------------------- Refacere ecrane prin apel succesiv al metodei Pop --------------------------------------------------- } while S.PopScreen do delay(1000); gotoxy(1,25); clreol; write('Apasati o tasta ... '); AKey := readkey; S.Done; end.
Capitolul 7 Asigurarea calitii n cadrul unei firme productoare de soft
...Exist oameni sau naiuni pentru care teoria lucrului bine fcut poate fi un motiv de bclie individual sau, de ce nu, naional. Defeciunea provine de la nelegerea greit a importanei detaliilor (care nu necesit anvergur spiritual deosebit, ci comportament binevoitor) asupra chestiunilor paradigmatice (care sunt un prilej de etalare a profunzimii potenelor intelectuale). Problema ar suna cam aa: <Presupunnd c suntem inteligeni, cum putem dobndi nelepciunea necesar pentru a folosi decent aceast inteligen?!>
(Extras din monologul pronunat de autor, n surdin, cu prilejul unei cltorii, neateptate, ntr-un autoturism Mercedes)
7.1 Introducere Aa cum am mai spus i n Capitolul 1, este nevoie de soft de calitate, produs n timp util i la preuri competitive, pentru a face fa rigorilor supravieuirii pe piaa concurenial. Expresia n timp util nseamn respectarea termenelor convenite pentru livrarea produselor. Expresia la preuri competitive nseamn ncadrarea proiectului n restriciile bugetare convenite. Este evident faptul c cele dou cerine pot fi ndeplinite prin crearea tuturor condiiilor pentru creterea continu a productivitii muncii. Preocuparea sistematic pentru creterea productivitii muncii poate, ns, intra n conflict cu cerina de a menine calitatea la standarde nalte, dac nu se studiaz cu atenie impactul oricrei inovaii n procesul de dezvoltare, asupra calitii. Metoda clasic pentru a face fa posibilelor conflicte dintre cele dou cerine se bazeaz pe delegarea competenelor n materie de calitate, ctre persoane sau colective care se ocup, exclusiv, de toate problemele presupuse de monitorizarea abaterilor de la calitate. Altfel spus:
Figura 7.1 Metoda clasic de asigurare a calitii
Mi se pare o abordare total depit n condiiile actuale. Calitatea trebuie s fie, n esen, creaia operativului. Majoritatea mijloacelor de promovare efectiv a calitii este concentrat n minile celor care lucreaz nemijlocit la dezvoltarea softului (analiti, proiectani, programatori, etc). De aceea, alternativa corect la Figura 7.1 mi se pare a fi cea prezentat n Figura 7.2. Cteva consideraii pe marginea strategiei schiate n Figura 7.2, n cele ce urmeaz.
Activitile n ingineria softului (IS) se deosebesc mult de activitile din alte domenii de activitate. n locul muchilor se folosete mult gndirea. Rutina exist, dar nu n prim plan, cum se ntmpl n alte industrii. n prim plan se afl creativitatea specialistului n IS, care, n fiecare proiect este obligat s fac fa la cerine noi, indiferent de faza n care se afl dezvoltarea unui sistem soft. Pentru a se manifesta, creativitatea are nevoie de libertate de aciune. Pentru a nu produce sub nivelul standardelor, creativitatea trebuie s se raporteze contient la standarde.
Figura 7.2. Metoda propus pentru managementul calitii ntr-o firm modern de soft
Factorii care determin calitatea n IS sunt din ce n ce mai sofisticat distribuii i articulai n cmpul de aciune al unui specialist IS. Multe probleme din IS pot fi rezolvate optim prin alegerea tehnologiei (tehnologiilor) adecvate exigenelor proiectului. Am vrut s subliniez, nc odat, faptul c asigurarea calitii este o problem de strategie, dac discutm despre principii de promovare a standardelor de calitate i este o problem de competena operativului, dac discutm despre mijloacele de operaionalizare a acestor principii. Ideea care se degaj, cred c este clar.
O component a managementului firmei Monitorizeaz abaterile de la calitate ale ...
Operativului
Managementul firmei Asigur un transfer sistematic de resurse i competene, pentru asigurarea calitii, ctre nivelul...
Operativ Dac se dorete, neaprat, implicarea managementului n rezolvarea problemelor de calitate (ceea ce este imperativ pentru o firm care se respect), abordarea ideal este urmtoarea: Stabilirea principiilor fundamentale care trebuie respectate n procesul de dezvoltare a softului (la nivelul conducerii firmei); Convenirea mijloacelor de operaionalizare a principiilor; aceste mijloace pot fi independente de proiect sau, dac este cazul, dependente de proiect.
Din perspectiv obiect orientat, situaia se reprezint ca n Figura 7.3. Fcnd analogie cu o abordare clasic din ingineria softului, competenele n materie de asigurare a calitii softului, n cadrul unei firme, pot fi structurate pe trei nivele de abstractizare: -Nivelul conceptual (Conducerea firmei); -Nicelul specificare (Coordonatorii de proiecte); -Nivelul implementare (Membrii colectivelor de dezvoltare, repartizai pe proiecte)
Figura 7.3. Propunere de abordare, la nivel sistemic, a problemei calitii ntr-o firm de soft
Managementul calitii la nivelul conducerii firmei -Conceptualizarea factorilor generici care determin calitatea unui sistem soft; -Conceptualizarea factorilor de calitate identificai de firm; -Modaliti de aciune.
Managementul calitii la nivelul coordonatorilor de proiecte -Specificarea factorilor generici care determin calitatea unui sistem soft; -Specificarea factorilor de calitate identificai de firm; -Modaliti de aciune.
Managementul calitii la nivelul colectivelor de dezvoltare (La nivelul conducerii firmei) Principii fundamentale n asigurarea calitii (La nivelul coordonatorilor de proiecte) Mijloace de operaionalizare a principiilor independente de proiect (La nivelul colectivului de proiectare 1) Mijloace de operaionalizare specifice Proiect_1 (La nivelul colectivului de proiectare k) Mijloace de operaionalizare specifice Proiect_k -Implementarea factorilor generici care determin calitatea unui sistem soft; -Implementarea factorilor de calitate identificai de firm; -Modaliti de aciune.
7..2 Idei pentru programul de asigurare a calitii n cadrul unei firme oarecare de soft
7.2.1 Nivelul conceptual (Conducerea firmei) Ori de cte ori este nevoie, la acest nivel trebuie reflectat asupra urmtoarelor trei tipuri de probleme:
-factori socotii, n genere, ca fiind importani pentru calitatea softului, pe care firma vrea s i monitorizeze. Descrierea lor la nivel conceptual.
-factori identificai de conducerea firmei ca fiind importani pentru calitatea unui proiect anume. Descrierea lor la nivel conceptual.
-modaliti de aciune la nivel conceptual.
Observaie Problema calitii softului este condiderat n literatura de specialitate o problem dificil, deoarece enunul ei se modific odat cu tehnologiile folosite pentru dezvoltarea softului. Marea diversitate a abordrilor din punct de vedere tehnologic m-a determinat s propun cele dou tipuri de factori ai calitii, n vederea monitorizrii.
FACTORII GENERICI AI CALITII Literatura de specialitate distinge trei categorii de factori generici ai calitii.
-factori care se refer la comportarea unui sistem soft dup ce a fost dat n exploatare: -Corectitudinea; -Fiabilitatea; -Performana; -Eficiena; -Securitatea.
-factori care se refer la comportarea unui sistem soft n cazul n care apar modificri: -modularitatea; -stilul de codificare i documentare;
-factori care se refer la comportarea unui sistem soft n cazul n care acesta migreaz spre alte platforme hard sau de operare: -portabilitatea -reutilizabilitatea
nelesul dat la nivel conceptual acestor factori l prezentm, n reluare, pe scurt, n continuare.
Corectitudinea se refer la abilitatea unui sistem soft de a executa toate sarcinile convenite la specificarea cerinelor.
Fiabilitatea se refer la capacitatea sistemului soft de a-i conserva calitatea n timpul exploatrii. n unele cri, fiabilitatea sistemelor soft se mai numete i robustee n exploatare.
Performana se refer la modul n care sistemul soft, n format executabil, satisface cerinele de performan convenite (timpii de rspuns la interogri, n medie sau minimali i maximali, etc.).
Eficiena se refer la abilitatea sistemului soft de a utiliza eficient posibilitile mainii fizice pe care acesta este executat.
Observaie n condiiile n care resursele hard critice ale sistemelor de calcul i mbuntesc permanent indicii de performan, s-ar prea c performana i eficiena nu mai sunt nite prioriti, potrivit opiniei unor specialiti. Opinia mea este c trebuie s monitorizm, n continuare, aceti factori deoarece, oricnd pot ajuta un proiect s ctige btlia cu alte proiecte similare.
Securitatea se refer la abilitatea sistemului soft de a minimiza pierderile de date n timpul avariilor la alimentare sau n cazul unor ncercri de utilizare neautorizat.
Modularitatea este un atribut de importan major al oricrui sistem soft de complexitate medie i mare. Modularitatea trebuie planificat i urmrit judicios deoarece de realizarea ei n condiii optime depinde esenial disponibilitatea unei soluii de a se adapta la condiii noi de execuie i de a face fa la cerine noi (reutilizabilitatea i exetnsibilitatea). Modularizarea corect este, practic, visul oricrui specialist n ingineria softului i mai ales al oricrui programator iscusit. Practic, a modulariza corect nseamn :
arhitectur simpl a soluiei + descentralizarea optim a capabilitilor acesteia.
Stilul de codificare i documentare poate susine sau compromite evoluia unui sistem soft, att n faza de proiect ct i n perioada de utilizare efetctiv. Stabilirea unui set minimal de reguli i elemente suport pentru activitile de codificare i documentare trebuie s fie o prioritate pe agenda celor care urmresc calitatea softlui n cadrul firmei.
Portabilitatea soluiei unui sistem soft msoar capacitatea sistemului soft de a face fa, cu eforturi minimale, la exerciii de migrare pe alte platforme hard i de operare. n condiiile n care varietatea arhitecturilor hard existente pe pia este n cretere iar lumea mediilor de operare tinde s se dezvolte, nc n dispre fa de standardizarea tehnologiilor de baz, este firesc s se aib, permanent n atenie i acest factor al calitii.
Reutilizabilitatea este un vis al oricrei firme de dezvoltare a softului. Ideea este urmtoarea: dac un proiect, prin generalitatea lui, are disponibilitate spre reutilizare, n ansamblu sau pe componentele, atunci reutilizabilitatea trebuie planificat sistematic.
FACTORI DE CALITATE IDENTIFICAI DE FIRM <De studiat problema cu ntregul echipaj al firmei>
MODALITI DE ACIUNE LA NIVEL CONCEPTUAL.
S-ar putea sugera, de exemplu, urmtoarele direcii de aciune.
1. Pentru fiecare proiect se va alege procesul de dezvoltare cel mai adecvat. Putem, de exemplu adopta urmtoarea atitudine: Mrimea i caracteristicile proiectelor aflate n lucru ne-au condus la ideea c tipul de proces ideal, n cadrul firmei de soft XXXXX , este modelul RAD (Rapid Application development).
2. Alegerea limbajului de modelare i a tools-urilor care promoveaz conceptele acestuia. n aceast direcie sugerm o anumit constan a opiunilor deoarece nvarea unui limbaj de modelare este o problem de timp i de bani. Ultimele evoluii n domeniu m determin s sugerez utilizarea UML-ului, n combinaie cu tools-uri carre l promoveaz, precum: Rational Rose, ObjectiF, etc..
3. Evaluarea lunar a calitii soluiei unui proiect, indiferent de nivelul de abstractizare la care s-a ajuns.
7.2.2 Nivelul specificare (Coordonatorii de proiecte)
Specificarea corectitudinii Atenia coordonatorilor de proiecte se va focaliza pe: -Completitudinea listei cerinelor; -Claritatea formulrii cerinelor; -Identificarea relaiilor dintre cerine; -Identificarea conflictelor dintre cerine si explorarea soluiilor de compromis.
Specificarea performanei Atenia coordonatorilor de proiecte se va focaliza pe: -completitudinea listei indicatorilor de performan; -Claritatea formulrii indicatorilor de performan; -Identificarea relaiilor dintre indicatori -Identificarea conflictelor dintre indicatori i explorarea soluiilor de compromis.
Specificarea eficienei Atenia coordonatorilor de proiecte se va focaliza pe: -Selectarea indicatorilor de performan ai soluiei, sensibili la indicatorii de performan ai resurselor hard critice; -Identificarea protocoalelor de mapare a indicatorilor selectati peste indicatorii de performanta ai resurselor hard critice
Specificarea fiabilitii Atenia efilor de proiecte se va focaliza pe: -Identificarea componentelor (interne i externe sistemului soft) care pot afecta sigurana n funcionare a acestuia; -Stabilirea strategiei de asigurare a fiabilitii pentru fiecare component n parte: -elemente-suport conceptuale; -elemente-suport la nivelul limbajului de programare; -elemente-supot la nivelul mediului de dezvoltare.
7.2.3 Nivelul implementare (membrii colectivelor de dezvoltare, repartizai pe proiecte) La acest nivel se impun msuri care s asigure un feed-back permanent pe traseul calitatea la nivel conceptualcalitatea specificatcalitatea la nivel de operativcalitatea la nivel conceptual.
Msurile preconizate sunt de doua tipuri: -punctuale; -anticipative.
Msurile punctuale Constituie un ansamblu de activiti, convenite de management, pentru a verifica modul n care se realizeaz transferul de competene n domeniul calitii de la nivel de management spre nivelul operativ. Pentru ca aceste activiti s se poat desfura corect este necesar s se accepte urmtoarele condiii minimale: -un proces de dezvoltare, care va permite implementarea feed-back-ului n domeniul calitii; -un limbaj de modelare i reprezentare adecvat, ceea ce va facilita procesul de urmrire a calitii.
Msurile anticipative Constituie ansamblul activitilor de informare i formare sistematic a tuturor partenerilor unui proiect, n acord cu reponsabilitile curente i de perspectiv.
Msuri concrete pentru promovarea calitii la nivel operativ
-Elaborarea riguroas a documentaiei sistemelor soft -documentaie tehnic; -documentaie de utilizare -documentaie de prezentare Persoana care rspunde de calitate va defini abloanele pe baza crora se vor elabora aceste tipuri de documentaii. efii de proiecte vor furniza toate datele necesare pentru elaborarea documentaiilor. Tools-ul folosit va fi ObjectiF, de exemplu.
-Planificarea riguroas a procedurilor de testare (de urmrit paragraful 7.3 pentru mai multe detalii relativ la rolul testrii n asigurarea calitii softului)
-ncadrarea efortului de dezvoltare ntr-un model de dezvoltare convenabil; -Utilizarea, pentru elaborarea i reprezentarea soluiei, a unui limbaj de modelare adecvat
Pentru testare, practica recomand combinarea tehnicilor top-down i bottom-up. Ca model de dezvoltare, la mrimea i natura aplicaiilor de la firma de soft XXXXX recomand prototipizarea. Ca limbaj de modelare propun UML-ul.
-Accentuarea preocuprilor pentru managementul proiectelor i pe alte coordonate care influeneaz calitatea (reutilizarea efortului de dezvoltare, nivelul de informare, planificarea calendaristic, identificarea i gestiunea riscurilor, climatul de lucru etc.) 7.3 Prin testare spre sisteme soft de calitate 7.3.1 Consideraii preliminare
Activitatea de testare nu genereaz direct calitate, dar, planificat judicios, poate contribui la realizarea softului de calitate.
Una dintre formulrile care au fcut carier n dezbaterile pe tema calitii softului sun, sec, astfel: Testarea complet a componentelor unui sistem soft poate fi considerat strategia de baz pentru asigurarea calitii softului. n aceast seciune a crii nu voi relua discuia pe marginea factorilor care determin calitatea unui sistem soft. Este esenial, ns, s constatm c factori precum corectitudinea, robusteea i performana, evaluai cu superficialitate, pot compromite ansele de reuit ale unui proiect. De fapt, lucrurile sunt foarte simplu de formulat: Dac sistemul soft ajunge la utilizator cu bug-uri, costurile pe care le implic remedierea (fix-area) acestor bug-uri sunt, statistic vorbind, net superioare costurilor pe care le presupune prevenirea lor n timpul proiectrii. De aici, al doilea principiu care ar trebui s fie ncorporat obligatoriu n orice strategie de testare: Procesul de testare a soluiei unui sistem soft trebuie s nceap, dac se poate, nc din fazele timpurii ale proiectrii. Admind ca fiind, realmente posibil, implementarea acestui ultim principiu, se pune ntrebarea: Cum trebuie organizat procesul de testare a soluiei unui sistem soft de-a lungul diferitelor stadii de abstractizare prin care aceasta trece. ntrebarea este destul de complicat, fie c o abordm din perspectiv istoric, fie c ncercm s punem cap la cap ultimele idei relativ la topic. Se cuvine s adugm o remarc banal, de altfel: Testarea nu este o activitate paralel cu procesul de dezvoltare. Organizarea judicioas a testrii este o necesitate din punct de vedere al managementului i efectiv posibil doar cu aportul echipei de dezvoltare, s spunem, din prima linie. Aceasta deoarece cunostinele absolut necesare pentru a organiza testarea soluiei unui sistem soft sunt cel mai coerent articulate n mintea echipei de dezvoltare din prima linie. Ca un exemplu, n UML, comportamentul diferitelor obiecte care contribuie la dinamica unei aplicaii este capturat cu ajutorul modelelor vizuale de la diferite nivele de abstractizare. n jurul acestor modele se pot dezvolta, ulterior, componente, a cror testare i integrare progresiv este absolut natural. Exist, ns, o condiie esenial pentru ca lucrurile s mearg pe acest fga: Soluia trebuie dezvoltat orientat pe componente. Experiena arat c dezvoltarea orientat pe componente asigur numeroase avantaje dezvoltatorilor (reutilizabilitate, fiabilitate, manevrabilitate n timpul testrii) dar solicit o atenie deosebit n timpul proiectrii interfeelor componentelor, n principal.
Se impune din ce n ce mai pregnant ideea c dezvoltarea softului trebuie s devin o activitate n care improvizarea unei soluii tinde s fie nlocuit, sistematic, cu un efort planificat de abstractizare i verificare a soluiei. n sprijinul unei astfel de atitudini poate veni accesul constant la noutile n materie de metode de abstractizare i introducerea, pe acest temei, a obinuinei de a utiliza instrumentele CASE pentru a optimiza diferitele tipuri de activiti care contribuie la asigurarea calitii soluiei unui sistem soft. Aadar, problemele de calitate n ingineria softului sunt de natur sistemic i, n consecin, necesit o abordare sistemic. Fiind o problem al crei enun are geometrie variabil, problema calitii va avea rezolvri nuanate, n funcie de: tipul proiectului, viziunea managementului asupra calitii, tipul de proces utilizat n dezvoltare, metoda de abstractizare folosit,etc. . Simplificnd, n mod voluntar, lucrurile, calitatea soluiei unui sistem soft poate fi asigurat dac managementul proiectului a reuit s specifice clar modul n care, pe parcursul dezvoltrii se va verifica aderena soluiei la factorii de calitate monitorizai. Beneficiarul principal al unui soft de calitate este clientul. Din punctul lui de vedere calitatea nseamn regsirea cerinelor i implementarea optim a acestor cerine. Beneficiarul unui soft de calitate poate fi i firma productoare de soft, pentru care calitatea nseamn tot ceea ce ateapt clientul plus cerine precum: adaptarea flexibil la cerine noi, localizarea ocurilor provocate de modificri ale soluiei, etc.. Dup acest scurt tur de orizont n problematica calitii softului, este cazul s fixm nite idei concrete relativ la posibilitatea de a asigura efectiv calitatea ntr-un proces de dezvoltare.
7.3.2 Despre prototipizare, testare i asigurarea calitii Modelarea obiect orientat a soluiei unui sistem soft permite integrarea unor metode variate de asigurare a calitii. Aa cum am mai subliniat i cu alt prilej, prototipizarea este un model de dezvoltare adecvat pentru o gam larg de proiecte. Din acest motiv voi ncerca s evideniez virtuile prototipizrii n materie de asigurare a calitii. Reordonnd ideile prezentate n Capitolul 3, se poate vorbi, pentru nceput, de prototipizare explorativ, pe timpul fazei de analiz, ca pretext pentru a defini clar domeniul problemei i alte cerine fa de sistemul soft. Acest tip de prototipizare poate fi folosit i pentru a evalua(=testa) eventualele soluii alternative. Odat cu trecerea n faza de proiectare putem vorbi despre prototipizare experimental, care poate fi un mod de a evalua(=testa), grosier vorbind, utilizabilitatea soluiei dezvoltate. Criteriile de calitate urmrite, n principal, sunt: performana i ceea ce am putea numi, implementabilitatea n genere. Ambele tipuri de prototipizare se desfoar, n principiu, dup regulile evoluiei iterative i incrementale a seriilor de prototipuri ctre produsul complet. Este evident faptul c, nainte de elaborarea fiecrui prototip este necesar formularea explicit i documentarea att a aspectelor referitoare la modificri sau extinderi ct i a aspectelor referitoare la testarea prototipului. Testarea trebuie organizat (ce date se folosesc, cum se obin aceste date, ce strategie de testare folosim, admind c soluia este corect modularizat, care sunt criteriile convenite ntre dezvoltatori i utilizatori pentru aprecierea prototipului?). Ideea obsesiv este una singur: Indiferent de perspectiva din care este urmrit, asigurarea calitii trebuie s devin o preocupare permanent, eventual susinut de tools-uri specializate (Rational Quality Architect, de exemplu, dac se folosesc tools-uri de la Rational). Efortul de organizare a procesului de testare a soluiei unui proiect ar trebui s se structureze pe dou tipuri fundamentale de activiti: planificarea logic a testrii i planificarea calendaristic a testrii. Ca un exemplu, planificarea logic a testrii soluiei unui proiect oarecare ar putea cuprinde:
Testarea modulului XXXX
-Testare funcionalitate; -verificarea corectitudinii specificrii i modelrii cerinelor; -verificarea eficienei i a performanei; -verificarea integritii bazei de date n situaia n care baza de date este utilizat n mod concurent; -Testare robustee (=verificarea comportrii modulului n situaii anormale de utilizare); -Testare protocoale de securitate(dac este cazul); -Stress testing-ul (urmrirea implicaiilor acestuia asupra corectitudinii i performanei);
Testarea modulului YYYY -Elaborare de aplicaii pentru evaluarea funciilor modulului YYYY;
Testarea modului n care coopereaz tehnologiile folosite la n cadrul aplicaiei XXXX.
Realizarea feed-back-ului ntre echipa de dezvoltare i echipa de testare, respectiv, echipa de dezvoltare i utilizatori.
n ceea ce privete planificarea calendaristic, aceasta va lua n calcul testarea care va fi efectuat de ctre programatori i testarea care va fi efectuat de ctre utilizatori.
Bibliografie
[1] Barden, R., Stepney, S., Cooper, D., Z in Practice, Prentice Hall, 1994,
[2] Bennet, S., McRobb, S., Farmer, R., Object Oriented Systems Analysis and Design using UML, McGraw-Hill Publishing Company, 1999
[3] Bocu, D., Introducere n programarea calculatoarelor utiliznd limbajul Pascal, Editura Albastr, 1999
[4] Bocu, D., Iniiere n ingineria sistemelor soft, Editura Albastr, 2001
[5] Bocu, D., Iniiere n modelarea obiect orientat a sistemelor soft utilizand UML, Editura Albastr, 2002
[6] Booch, G., Rumbaugh, J., Jacobson, I., The Unified Modeling Language User Guide, Addison-Wesley, 1999
[7] Booch, G., Object Oriented Design with Applications, The Benjamin/ Cummings Publishing Company, Inc., 1991
[8] Brookshear, J., G., Introducere n informatic, Editura Teora, 1998
[9] Fowler, M., UML Distiled, Second Edition, Addison Wesley, 2000
[10] Hicks, J., O., Management Information Systems, West Publishing Company1993,
[11] Lano, K., Formal Object-Oriented Development, Springer, 1995
[13] OBrien, J., A., Management Information Systems, Mc Grow-Hill Companies, 1996
[14] Oprea, D. , Analiza i proiectarea sistemelor informaionale economice, Editura Polirom,1999
[15] Priestley, M., Practical Object Oriented Design, McGraw-Hill, 1997
[16] Quatrany, T., Visual Modeling with Rationale Rose and UML, Addison-Wesley, 1998
[17] Roman, D., Ingineria programrii obiectuale, Editura Albastr, 1996
[18] Rumbaugh, J., Jacobson, I., Booch, G., The Unified Modeling Language Reference Manual, Addison-Wesley, 1999
[19] Wetherbe, J., C., Vitalari, N., P., Sistem Analysis and Design-Best Practices, Wesp Publishing Company, Fourth Edition, 1994
[20] Wu, S.,Y, Wu, M.,S., Sistem Analysis and Design, West Publishing Company, 1994
[21] Priestley, M., Practical Object Oriented Design, McGraw-Hill, 1997
[22] Roman, D., Ingineria programrii obiectuale, Editura Albastr, 1996
Precizri cu privire la evaluarea pregtirii studenilor
La aceast disciplin evaluarea va consta n:
1. Verificarea cunotinelor teoretice acumulate, printr-o lucrare scris, pentru care se acord note de la 1 la 10. 2. Elaborarea unui proiect n cadrul activitilor de laborator
Fiecare proiect va conine obligatoriu urmtoarele seciuni:
1. Enunul problemei. 2. Specificarea cerinelor fa de sistemul soft elaborat n cadrul proiectului. 3. Elemente de proiectarea soluiei: a) Diagrama claselor b) Interfee c) Funciile sistemului soft d) Consideraii relativ la implementarea funciilor 4. Ghid de utilizarea a sistemului soft 5. Ghid de instalare a sistemului soft 6. Consideraii relativ la stabilitatea / exetensibilitatea soluiei
O abordare ușoară a comunicării profesionale: Ghidul practic de comunicare profesională și cele mai bune strategii de comunicare în afaceri din punct de vedere scris și interpersonal
O abordare simplă a SEO: Cum să înțelegi elementele de bază ale optimizării pentru motoarele de căutare într-un mod simplu și practic, printr-o cale de descoperire nespecializată pentru toată lumea