Enterprise Architect – kas sellist CVSi tuge me tahtsimegi?

Enterprise Architect (EA) on muidu täiesti OK vaese mehe analüüsi ja disaini dokumenteerimise abivahend, kui otsida töövahendeid, millega nagu actually tööd ka teha saab. Jah, tal ei ole normaalseid reverse engineeringu omadusi nagu näiteks Togetheril, aga ta ei maksa ka tuhandeid dollareid per litsents. Üldiselt tundub featureset täitsa muljetavaldav. Kuna vahend ise reklaamib ühe oma olulise featurena “Team Based Modeling” nimelist omadust, siis uurisin tiba, et mismoodi see mulle kasulik võiks olla. Seni oleme EA mudeleid jaganud läbi CVSi pandud binaarse EA projektifaili, aga selle CVSis hoidmisega on omad probleemid – näiteks on muutusi ebamugav trackida. Samuti oli tüütu ekspordi ja impordiga eri tegelaste poolt tehtud mudeield mergeda.

Oleks ju tore, kui EA seda ise teeks mõtlesin.

EA lahendab CVSi probleemi suhteliselt robustselt (rustikaalselt ütleks Imre Kose). Nimelt siis saab versioonikontrollida eraldi igalt mudeli packaget (või folderit kui soovite). Sisuliselt tähendab see seda, et sellest packagest tehakse juba mainitud XMI eksportfail, mis läheb versioonikontrolli ning mida siis saab muutmiseks “Checkout”ida ning muudatuste CVSi viimiseks uuesti commitida (Check In). EA pakub sulle selleks integreeritud menüüsid ja aknaid, lisaks veel ka selliseid featuure, mis peaksid takistama erinevatel tegelastel samaaegselt arendades mudelit “segi ajamast”. Näiteks kui package on “välja tsekkimata” siis tema sisu muuta ei saa: ei saa redigeerida diagramme, lisada klasse/vms. muid elemente jne. Muutmiseks teed “check out” – see lukustab package su lokaalsels mudelis lahti.

Microsofti VSS-iga, millega integreerimiseks EA vist eeskätt mõeldud on võiks sellest ju piisatagi – seal lukustub repositorys fail ära, kui keegi selle “välja checkib”. CVSile sama loogika ei päde – nimelt ei keela keegi sama packaget välja tsekkimast mitmel inimesel (üldjuhul ongi see hädavajalik, sest teise package elementide (klasside jne) kasutamiseks on reeglina vajalik, et neid muuta saaks). Põhimõtteliselt tundub see ju toimivat, aga probleemid tekivad olukorras, kui oletame näiteks, et Jüri ja Andres on muutnud oma lokaalses mudelis sama packaget ning Jüri on oma muudatused ilusti CVSi ära commitinud.

Korralik mees nagu Andres on, teeb ta enne enda muudatuste commitimist CVSi update….ja ta muudatused lokaalses failis kirjutatakse üle. Või paremal juhul öeldakse, et ei saa updateda sest sinu mudel on muutunud. Ok, EA pakub võimaluse tuvastada, mis muutnund on võrreldes sinu mudeliga – jah diff-imise tool on täiesti olemas. Panuseid sellele, et te sellest ka midagi kasu saate muidugi teha ei tasuks. Diffimise tool nimelt suudab sulle muudatused mõneti struktureeritud XMLi erinevustena välja tuua. Struktureerimine on siis sellisel tasemel nagu et diagramm A on muutunud ja erinevused on “üsna mitteinimloetaval” kujul. OK, ma ei olekski oodanud graafilist merge vahendit (st. tegelt oleks oodanud küll, aga ma saan aru, et see pole paarisaja dollarise töövahendi juures reaalne) aga mul võiks ju vähemalt XMLi kujul mergemise võimalus olla.

No mõni kavalam mees muidugi mergeks XMId käsitsi ära. Et teeks CVS up ja resolviks konfliktid. No see on põhimõtteliselt tõesti tehtav. Iseasi küsimus on selles, kas seda on lihtne teha. Esiteks on kahtlane, kas inimsilm suudab eristada klassifikaatoreid nimedega EAPK_7D070206_A5EA_4dd4_A19C_B6B3C0D67F8A ja EAPK_7D070206_A5BC_4dd4_A19C_B6B3C0D67F8A teiseks on vea tegemine suhteliselt fataalne su lokaalsele mudelile – EA igaljuhul vigase XMI importimise järel mudelit enam avada ei suuda. Aga see ongi võibolla just see väike põnevusmoment su igavas elus, mida vajad.

Seega minu hinnangul ei ole sellest “sisseehitatud” tiimimodelleerimise toest mingit kasu – midagi mugavamaks see küll ei tee. Mingeid lisavõimalusi (kui mitte arvestada osaliselt struktureeritud XMLi diffi) see ei paku. Merge võimalust pole – seega ei saa sa praktikas ka paralleelset arendust teha. Ok, asjast oleks kasu, kui ma saaksin vähemalt “lukustatud” packagest objekte kasutada ja nendest oma lukustamata packagesse diagramme teha aga ei saa – jälle ikaldus.
Põhimõtteliselt ainsa lahendusena mis mulle pähe tuli tuleks kõne alla mõne XMLi toetava mergemisvahendi kasutamine, mis suudaks CVSi markeritega faili lugeda ja mergeda (võibolla näiteks Eclipsel on mõni plugin) aga kõige vähem muret tundub olevat ikkagi, kui hoida CVSis EA projekti faili. Kas sellist CVSi tuge me tahtsimegi?

6 thoughts on “Enterprise Architect – kas sellist CVSi tuge me tahtsimegi?”

  1. 3D programmidel ei ole kah tiimitöö võimalusi – see on minu, ilmselt aegunud, info. Aga selge see, et üks inimene ei tee Shreki üksi.

    Muidugi huvitav on kui jamad, koledad, bugised, ebamugavad ja aeglased need igasugu diagrammieditorid on. Samas kümentes kordades keerukamad 3D editorid on märksa paremad. Seal on keegi nagu mõelnud, et peale ostmist neid ka kasutatakse.

    Eriti irooniline on sealjuures see, et firmad kes peaks aitama oma toodetega meie softi kvaliteeti tõsta ei suuda ise kvaliteetset softi teha. Seda on muidugi näha ka mujal kui diagrammieditorides.

  2. ütleks nii palju, et kui soovitakse tegeleda ühe projekti (EAP) faili kallal samaagselt (teamwork), siis CVS ei ole just see õige koht.
    Ei tasuks minu arvates segi ajada versioonihaldust ja keskset teamwork repository (kui nüüd eelnevast jutust õigesti aru sain).

    Mina kasutan asja järgmiselt:
    CVS – versioonihaldus, kus hoian erinevaid package’eid, kuna vaja trackida erinevaid versioone neist
    Oracle – seal siis teamwork repository (alternatiiviks EAP failipõhine repository nuditud funktsionaalsusega).

    Oracle (võid kasutada ka teisi andmebaasimootoreid) repository ongi mõeldud sama mudeli (EAP faili) jagamiseks mitme muutja vahel. Tulemuseks tunduvalt parem olukord ja kõigil on kogu aeg up to date mudel (möendus – kui sul giagramm lahti, siis see ei uuene automaatselt “kohe” vaid vahest on vaja refresh teha. samas kui muutma hakkad ja sul on viimane versioon, siis karjub ka).

  3. Ok, hea teada, et see baasis mudeli hoidmine actually teamworki võimaldab. Kahtlustasingi, et päris nii sitt rühmatöö tugi EA-l olla ei saa.

    Kuidas sellel baasis mudeli hoidmisel offline töö võimalus on? Et kui oled teinud baasis asuva mudeli, siis offlines töötamiseks pead sellest esmalt XMI expordi tegema, importima selle lokaalsesse mudelisse ning seejärel syncimisel export->importima jälle (ehk siis analoogliselt nagu CVSiga) ?

  4. offline osas jään praktilise vastuse võlgu, kuna pole vaja olnud (ei tööta kodus… vaid ainult töö juures. pealegi soovitatakse tavapraktikas selliseid asju vältida, kuna inimene peab vahest puhkama ka. kliendi juures olles saab kasutada muid vahendeid).
    teoreetiliselt:
    1. tee lock muudetavatele objektidele
    2. neile export
    3. tee muudatused lokaalselt
    4. kasuta importi
    5. unlock

  5. täiendus ellmisele:
    lock/unlock funktsionaalsuse kasutamiseks on vajalik user security sisse lülitada.

Leave a Reply

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