Ce este un arhitect de sistem?

Ca sa pot explica ce inteleg eu prin profesia de arhitect de sistem, voi face o paralela cu profesia de arhitect in constructii:
Se iau doua proiecte, o cusca pentru caini si o cladire cu apartamente pentru locuit.

Aproape orice persoana poate proiecta si construi o cusca pentru un caine. Proiectarea si construirea acesteia necesita in medie o singura persoana, un desen pe o bucata de hartie (se poate si fara) si un set de unelte relativ simple. Costurile sunt reduse, iar timpul consumat poate varia de la o ora la cateva zile (pentru cei mai inceti sau perfectionisti).

Cand incercam sa construim un bloc de locuinte, se cam schimba lucrurile. Apar mai multe diferente fata de cusca ce tin de dimensiunile constructiei, de costurile implicate, de numarul de persoane implicate si nivelul lor de cunostinte necesare, de materialele si tehnologiile folosite. Riscul de incendiu sau de cutremur este diferit in cazul cladirii fata de cusca de caine, putem spune ca nici nu se compara.

Cusca cainelui este realizata la cererea/ideea proprietarului patrupedului si va fi folosita de catel/catei, deci sunt implicate in medie doua parti interesata (in engleza stakeholders) – stapanul si catelul.

Cladirea este insa sub atentia mai multor parti interesate: proprietarul terenului, constructorul (firma sau echipa de constructori), statul prin reprezentantii sai care trebuie sa se ingrijeasca ca viitoarea cladire sa fie ridicata conform normelor de siguranta si legilor in vigoare, viitorii locatari ai acestei cladiri si nu in ultimul rand, proiectantul/arhitectul. Arhitectul este persoana care analizeaza, defineste si proiecteaza cladirea dupa cerintele proprietarului. Job-ul lui este sa verifice calitatea terenului, sa extraga din discutiile cu proprietarul imaginea acestuia despre viitoarea cladire, scopul si utilitatea ei. Totodata, el trebuie sa se asigure ca viitoarea cladire va fi ridicata respectand legile in vigoare, ca va avea utilitatea ceruta si in final, ca va utilizata conform scopului dorit. In ziua de azi, a construi o cladire fara girul unui arhitect implica o multime de riscuri, care de multe ori depasesc valoarea de vanzare/utilizare a acesteia.

Rolul unui arhitect de sistem est similar cu cel al unui arhitect, doar domeniul de activitate se modifica. Arhitectul de sistem se implica in proiectarea si construirea de…sisteme, in special in zona software.

Daca o firma are nevoie de un simplu program de evidenta a persoanelor ce intra pe poarta (o cusca de caine) va angaja un programator care va realiza un mic program ce va tine evidenta persoanelor ce tranziteaza firma. Daca insa managementul firmei doreste sa integreze monitorizarea tranzitului pe poarta cu alte mici programe (emiterea de facturi, pontajul angajatilor, monitorizarea prin sistem video, sistemele de alarma in caz de efractie) atunci in mod normal intervine arhitectul de sistem.

Teoria spune ca acesta, impreuna cu Analistul Business va analiza, defini si crea o arhitectura software care va satisface nevoile firmei/beneficiarului. Apoi, impreuna cu Managerul de proiect, va tine sub monitorizare dezvoltarea solutiei propuse.

Arhitectura sistemelor este ceea ce cu care se ocupa arhitectii de sistem. Conform standardului IEEE 1471-2000, arhitectura de sistem este definita ca: organizarea fundamentala a unui sistem cu toate componentele sale, relatiile dintre acestea si fata de mediul inconjurator (a componentelor), precum si principiile care guverneaza designul si evolutia acestuia.

Sa traducem: Arhitectul de sistem coopereaza cu beneficiarul pentru a intelege necesitatile pe care trebuie sa le acopere software-ul ce va fi construit si uneori suplineste si rolul Analistului Business si analizeaza si necesitatile de business. Apoi va creiona procesele pe care software-ul va trebui sa le indeplineasca si modalitatile prin care isi va atinge scopurile propuse. Beneficiarul, in acelasi timp, va numi persoanele care vor aduce cunostinte si informatii in acest proiect, si care vor coopera pe toata perioada de dezvoltare cu echipa de programatori. Cand toata aceasta poveste este gata, arhitectul va prezenta dosarul complet programatorilor, procesul de arhitectura se va transforma din unul de viziune si design in unul de management.

Ceea ce am scris mai sus este complementar cu ceea ce se intampla intr-o firma de software, in care beneficiarul este clientul extern. Totusi, personal sunt mai inclinat in a trata problematica ce apare atunci cand beneficiarul nu este clientul extern, ci cel intern, si cand arhitectul lucreaza nu intr-o firma de software ci intr-o firma din alt domeniu.
Astfel, arhitectul de sistem are un job putin diferit si mult mai greu in aceasta situatie.
El trebuie sa analizeze, defineasca si creeze (impreuna cu o echipa de programatori) cerintele clientilor interni, sa le prioritizeze si sa le integreze intr-o imagine de ansamblu.

Astfel, el va ajuta echipa de programatori sa isi gaseasca calea de urmat (ce sa programeze, ce sa creeze) intr-un mediu complex, dinamic si nesigur, prin mentinerea unei priveliste de ansamblu asupra nevoilor clientilor, a unei balante intre sarcini, prin integritate si consecventa/fermitate.

Majoritatea programatorilor (pe langa manageri, actionari si cei mai multi oameni de pe Pamant) simt nevoia de siguranta. Idealul lor este sa aiba un set de specificatii fixe dupa care sa lucreze, sa creeze programe, care nu se vor modifica continuu si un orar de urmarit, un deadline care nu se va modifica niciodata. Acest set de cerinte ii va izola de surprizele realitatii (cel putin asa vad programatorii lucrurile): persoane incompetente, erorile umane, lipsa de colaborare in partea persoanelor implicate, neintelegerile aparute din comunicarea proasta, piata in continua schimbare, schimbari fizice, chimice si mecanice neprevazute precum si cele generate de mama natura: cutremure, inundatii, incalzirea globala, viitoarele glaciatiuni.

Din pacate toate aceste “surprize” de mai sus fac parte din viata reala iar capacitatea noastra de oameni de a controla aceste fenomene este inca limitata. Managementul riscului poate ajuta, dar nu va anula aceste fenomene si nu va reduce efectul lor la 0 (zero).

Astfel, una din sarcinile arhitectului de sistem devine putin mai clara: deoarece siguranta nu poate fi atinsa 100%, el poate sa creeze anumite procese astfel incat cel putin, surprizele neplacute sa fie evitate, el poate sa ii ajute pe programatori sa conceapa “programe” prin care surprizele neplacute sa fie cat mai putine iar gradul de siguranta sa fie mai mare decat in mod obisnuit ar fi. Pe scurt, arhitectul de sistem va organiza toate etapele prin care trece un program de la nivelul de idee pana la functionare 100% astfel incat amenintarile si interactiunea continua si consumatoare de timp a echipei de programatori sa fie minime.

Calitatile pe care ar fi bine sa le aiba un arhitect de sistem(pentru ca le va folosi la maxim) sunt:

  • Know-how;
  • Bun simt;
  • Pragmatism;
  • Atitudine critica;
  • Capacitate de socializare;
  • Pasiune;
  • viziune.

Cateva intrebari la care arhitectul de sistem se gandeste tot timpul:

  • Prin ceea ce construim acum atacam adevarata problema sau cerinta?
  • Este acest program pentru clientul extern sau intern?
  • Designul ales este adecvat sau nu?
  • Datele cu care lucram provin din informatii reale/tehnice, dorinte sau idei?
  • De cati oameni avem nevoie pentru implementare?
  • Cum se va integra acest proces sau multime de procese in strategia firmei?

Va urma…

This entry was posted in Radu's work and tagged . Bookmark the permalink.

6 Responses to Ce este un arhitect de sistem?

  1. claudiu says:

    Buna ziua,

    Sunt student la o facultate de profil informatic si sunt interesat cum as putea ajunge arhitect de sistem , ce cursuri trebuie sa fac ?.O mica indrumare va rog .
    Multumesc!

    • ignatescu_manea says:

      salut
      cursuri in Romania mai sunt ceva, eu personal m-am instruit singur citind si aplicand cartile lui Gerrit Muller, cauta pe google dupa Project Gaudi, cartile sunt disponibile online.

  2. Cristi says:

    Buna ziua, as dori sa stiu. Dupa parerea dvs. pentru a ajunge arhitect de sistem ce fel de facultate de informatica ar trebui sa urmez. Una cu profil ingineresc sau una cu profil economic?

    • ignatescu_manea says:

      salut
      cel mai bine ar fi sa fie facultatea de informatica, merge si informatica economica. insa in job-ul asta conteaza cel mai mult experienta, adica sa lucrezi efectiv in domeniu. eu sunt de profesie economist, cu liceu de informatica si apoi facultatea de economie. insa de 2 ani lucrez in domeniul acesta si pot sa spun ca experienta trage cel mai greu la cantar, plus ce inveti de unul singur, in Romania neexistand studii pentru asa ceva. daca vrei, te pot indruma spre cateva materiale de lecturat.

  3. Cristi says:

    Totusi.. din ce am citit observ ca cel mai mult conteaza calitatile de conducator, de manager. Asta ma face sa ma gandesc la faptul ca este importanta atat experienta in domeniul informaticii(cea tehnica) cat si cea de manager. Astfel ma duce cu gandul la o facultate la care se invata ambele. Cea de informatica-economica are in structura cuprinse atat laturi ce tin de management cat si laturi ce tin de tehnica.

    • ignatescu_manea says:

      salut. depinde unde ai citit si ce ai citit:) sunt mai multe optiuni pentru a ajunge sa activezi ca si arhitect de sistem, experienta este destul de importanta. eu pot sa spun doar cazul meu: liceu informatic cu inclinatii spre programare la nivel basic dar fara a profesa in asa ceva, facultate cu profil economic, diverse job-uri in comert, it (administrator de internet -cafe), job important si greu intr-o firma de distributie ca suport pentru activitatea de vanzari, implementare catalog de identificare/vanzare piese auto si acum project manager/arhitect de sistem. e bun profilul informatica economica dar din cati absolventi cunosc eu, toti s-au indreptat spre IT pur si nu spre economic dupa terminarea facultatii.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>