scieee AI-readable full text Open interactive document viewer

Explotació d'una base de dades de grafs per a l'anàlisi d'impacte en l'enginyeria de requisits

Medina Martínez, Guillem

Full text

! ! ! ! Explotació! d’una! base! de! dades! de! grafs! per! a! l’anàlisi! d’impacte! en! l’enginyeria!de!requisits! ! ! ! ! Projecte!Final!de!Carrera! ! Realitzat!per!Guillem'Medina'Martínez' Dirigit!per!Patricio'Orlando'Letelier'Torres' València,!Juliol!de!2011! ! ! Agraïments! Vull! expressar! els! meus! sincers! agraïments! als! responsables! de! l'empresa! ADD! INFORMATICA!sense!els!quals!no!s'hauria!portat!a!terme!aquest!projecte.!A!Patricio,!el! meu!director!de!pfc,!que!m'ha!donat!aquesta!oportunitat!i!que!ha!confiat!en!mi!durant! tot!este!temps.!Als!becaris!del!grup!d'investigació!que!han!aconseguit!que!inclús!les! tasques!més!dures!foren!senzilles!amb!el!seu!suport!i!companyerisme,!en!especial!a! Maria!amb!la!que!he!treballat!conjuntament!durant!tot!este!temps!i!que!m'ha!ajudat! amb!la!seua!experiència!i!consells.! També!voldria!dedicar!este!projecte!als!meus!pares!i!abuelos(que!amb!el!seu!amor! incondicional!i!el!seu!gran!esforç,!m'han!anat!guiant!en!la!vida!i!han!aconseguit!que! estiga!avui!entregant!esta!memòria.!Moltes!gràcies,!no!seria!qui!soc!sense!vosaltres.! Als!meus!amics!i!amigues,!i!a!la!meua!xiqueta!que!m'han!animat!i!recolzat!quan!les! forces! més! flaquejaven! i! m'han! ajudat! a! desconectar! en! els! moments! que! més! ho! necessitava.!I!en!especial!als!amics!de!la!universitat!que!m'han!acompanyat!durant!tots! estos! anys! de! carrera,! i! amb! qui! he! compartit! grans! dificultats! però! tambe! rises! màximes.!Vosaltres!sou!els!que!sabeu!exactament!el!que!hem!passat,!i!sense!els!quals! la!meua!experiència!universitària!no!haguera!sigut!el!mateix.! Per!últim!voldria!fer!una!menció!especial!a!les!mosques!i!mosquits!que!m'han!visitat! estos!mesos!i!que!m'impedien!mantindre!la!concentració!necessària!per!poder!escriure! esta!memòria.! ! Índex&general& 1!Introducció .......................................................................................................... 6! 1.1!Motivació ...................................................................................................... 6! 1.2!Objectius....................................................................................................... 7! 1.3!Estructura'del'treball..................................................................................... 8! 2!Metodologia4TUNE9UP4i4TDRE .............................................................................. 9! 2.1!Introducció'a'l'anàlisi'd'impacte'de'canvis ..................................................... 9! 2.2!TUNEJUP ..................................................................................................... 12! 2.3!TDRE'i'el'mòdul'de'gestió'de'requisits ......................................................... 13! 2.3.1!Proves!d'acceptació!i!model!d'entitats ................................................................................ 15! 3!Bases4de4dades4orientades4a4grafs ..................................................................... 17! 3.1!Introducció'a'BDOG ..................................................................................... 17! 3.2!Comparativa'i'principals'avantatges ............................................................ 20! 3.3!BDOGs'existents.......................................................................................... 23! 3.3.1!DEX....................................................................................................................................... 23! 3.3.2!HiperGraph........................................................................................................................... 24! 3.3.3!Infogrid.................................................................................................................................24! 3.3.4!Neo4j.................................................................................................................................... 25! 3.3.5!InfiniteGraph ........................................................................................................................ 25! 3.3.6!AllegroGraph ........................................................................................................................ 26! 3.3.7!GraphDB............................................................................................................................... 26! 3.4!Neo4j .......................................................................................................... 27! 3.4.1!Característiques ................................................................................................................... 28! 3.4.2!Mode!Servidor!i!REST!API..................................................................................................... 32! 4!Infraestructura4per4a4l'AI.................................................................................... 36! 4.1!Model'de'dades........................................................................................... 36! 4.1.1!Consideracions!prèvies......................................................................................................... 36! 4.1.2!Definició!del!model .............................................................................................................. 37! 4.2!Gestor'de'termes......................................................................................... 45! 4.3!Neo4j'API .................................................................................................... 48! 4.3.1!Creació!d'una!API!REST!amb!tecnologia!.NET....................................................................... 49! 4.3.2!Alternatives!a!la!API!iniciada ................................................................................................ 51! 4.3.3!Característiques!de!la!llibreria!utilitzada.............................................................................. 53! 5!Mòdul4de4l'anàlisi4d'impacte .............................................................................. 564 5.1!Visualització'de'l'AI...................................................................................... 57! 5.2!Criteris'd'anàlisi'actuals'i'alternatives.......................................................... 66! 6!Conclusions4i4treball4futur .................................................................................. 69! 7!Referències ........................................................................................................ 74! ! ! 1 Introducció& 1.1 Motivació& Segons!la!definició!de!termes!de!la!norma!ISO!8402![1]!el!concepte!de!traçabilitat!es! defineix!com!l'aptitud(per(rastrejar(la(història,(l'aplicació(o(la(localització(d'una(entitat( mitjançant( indicacions( registrades.! En!l'àmbit! del!desenvolupament! software! aquest! concepte!està!directament!relacionat!amb!la!traçabilitat!dels!requisits,!documentant!la! seua!cronologia!i!les!seues!relacions!amb!altres!entitats.! La!traçabilitat!afecta!nombroses!activitats!dins!l'àmbit!de!l'enginyeria!del!software;!des! de! la! selecció! dels! test! de! regressió! passant! per! la! validació! dels! requeriments,! fins! l'anàlisi! d'impacte! de! canvis.! És! precisament! aquesta! última! una! de! les! principals! motivacions!per!mantindre!traçabilitat!en!un!producte!software.!! L'anàlisi!d'impacte!de!canvis!de!software!es!defineix!com!la(determinació(de(potencials( efectes(d'un(sistema(concret(com(a(resultat(d'un(canvi(en(el(software([2],!és!a!dir!que! donada!una!suposada!modificació!en!la!definició!d'un!sistema!i!abans!que!el!canvi!es! produïsca,! es! pot! preveure! el! seu! impacte,! directe! i! indirecte,! sobre! els! diferents! elements!que!conformen!el!software!proporcionant!més!informació!en!el!procés!de! desenvolupament!i!simplificant!la!tasca!posterior!de!manteniment.! Per!tal!que!l’anàlisi!no!siga!escassa!i!poc!satisfactòria!s'ha!de!recollir!un!gran!volum! d'informació!i!mantindre!les!relacions!de!traçabilitat!actualitzades.!Açò!pot!suposar!un! important!esforç!que!moltes!vegades!no!es!veu!rendibilitzat!a!causa!de!mecanismes! d'explotació! molt! rudimentaris.! Tot! i! això,! els! avantatges! que! aquesta! tècnica! ens! aporta!son!clars!i!si!aconseguirem!superar!els!impediments!inicials,!ens!aportaria!una! eina!molt!útil!per!integrar!en!les!nostres!metodologies!de!treball.! En! aquest! projecte! es! presenta! una! nova! tècnica! de! detecció! automàtica! de! les! relacions!d'interdependència!entre!requisits!on!s'intenten!solucionar!els!majors!reptes! detectats,!és!a!dir,!el!recull!i!el!manteniment!d'aquestes!relacions,!integrantjho!dins!la! metodologia!i!ferramenta!de!desenvolupament!TUNEjUP,!on!es!registraran!de!manera! automàtica!i!seran!posteriorment!explotades!indicant!a!l'equip!de!desenvolupament! quins!elements!es!poden!veure!afectats!pel!canvi!proposat.!La!infraestructura!elegida! per!emmagatzemar!les!relacions!ha!sigut!una!base!de!dades!de!grafs,!ja!que!ens!dóna! una!gran!flexibilitat!i!expressivitat!per!modelar!el!nostre!entorn!de!treball.! Encara! que! la! nostra! visió! solament! inclou! elements! de! tipus! requisit! o! proves! d'acceptació,! aquesta! tècnica! és! extrapolable! a! qualsevol! procés! on! puga! ser! útil! conèixer!l'impacte!dels!canvis!sobre!un!determinat!producte.! Aquest! projecte! final! de! carrera! s'ha! realitzat! en! el! context! d'una! beca! de! col·∙laboració,! pertanyent! a! un! conveni! universitatjempresa,! amb! una! PIME! de! desenvolupament! software! que! comercialitza! un! ERP! per! al! sector! sociosanitari.! L'objectiu! del! treball! era! aportar! un! mòdul! per! a! l'anàlisi! d'impacte! dels! requisits! i! integrarjho! dins! l'actual! ferramenta! de! suport! a! la! metodologia! TUNEjUP! ja! implantada.! El! treball! realitzat! ha! estat! implementat! seguint! les! restriccions! i! necessitats! específiques! de! l’empresa! per! tal! de! facilitar! la! tasca! als! seus! analistes,! programadors!i!testers!aportantjlos!la!màxima!informació!addicional!que!els!permet! optimitzar!els!processos,!reduir!errors!i!disminuir!costos.!! 1.2 Objectius& Els!objectius!específics!d’aquest!projecte!han!estat:! • Estudi!del!paradigma!de!bases!de!dades!orientades!a!grafs.! • Disseny!d'una!base!de!dades!de!grafs!per!representar!el!model!en!el!qual!es! basa!la!nostra!ferramenta!d'anàlisi!d'impacte.! • Creació!de!la!infraestructura!necessària!per!tal!de!suportar!a!l’anàlisi!d’impacte! sobre!proves!d’acceptació!així!com!un!element!de!comunicació!externa.! • Definició! d'una! interfície! per! interaccionar! i! visualitzar! els! resultats! de! la! ferramenta.! • Implementació!d'un!gestor!d'entitats!del!model.! • Integració!del!mòdul!en!un!entorn!de!gestió!de!requeriments!!basat!en!proves! d’acceptació!per!al!desenvolupament!software!amb!metodologies!àgils!(TUNEj UP).! • Validació!de!l’anàlisi!en!projectes!reals.! 1.3 Estructura&del&treball& En!esta!secció!es!presenta!de!forma!resumida!l’estructuració!del!treball!en!capítols:! El! capítol! 1! inclou! una! introducció! del! projecte! on! es! presenta! la! motivació,! els! principals!objectius!i!un!resum!de!la!seua!estructura.! El!capítol!2!esta!centrat!en!la!metodologia!TUNEjUP!i!en!general!en!els!processos!de! desenvolupament!TestjDriven!Requirements!Engineering!(TDRE),!que!es!tracta!d'una! proposta!de!gestió!de!requisits!sobre!el!marc!TestjDriven!Development!(TDD)!basat!en! proves!d'acceptació.!El!projecte!s'introdueix!dins!d'un!gestor!de!requisits!de!TUNEjUP!i! aporta!una!nova!ferramenta!addicional!per!a!seguir!aquesta!metodologia.! El! capítol! 3! explica! el! funcionament! bàsic! de! les! bases! de! dades! orientades! a! grafs! (BDOG)! que! són! la! infraestructura! elegida! per! donar! suport! al! projecte,! els! seus! principals! avantatges! i! inconvenients,! i! una! xicoteta! comparativa! amb! les! bases! de! dades!relacionals.!Es!farà!un!breu!resum!de!les!propostes!actuals!de!BDOGs!centrantj nos!en!Neo4j!que!ha!sigut!l’elegida.! El! capítol! 4! explica! la! infraestructura! creada! per! tal! de! donar! suport! al! recull,! manteniment! i! gestió! dels! termes! de! domini! que! s'utilitzaran! posteriorment! per! a! l'anàlisi!d'impacte.! En!el!capítol!5!es!mostra!el!mòdul!d'explotació!de!l'anàlisi!d'impacte!i!s'il·∙lustra!amb!un! exemple!que!engloba!tots!el!passos!del!procés!d'anàlisi.! El! capítol! 6! conclou! el! projecte! amb! les! conclusions! extretes! a! partir! de! la! nostra! proposta,!les!dificultats!abordades!i!el!treball!futur!que!ha!sorgit!en!realitzarjlo.! ! 2 Metodologia&TUNE@UP&i&TDRE& 2.1 Introducció&a&l'anàlisi&d'impacte&de&canvis& El!principal!propòsit!de!l'anàlisi!d'impacte!de!canvis!és!previndre!els!efectes!que!un! possible! canvi! tindrà! sobre! el! producte,! i! aconseguint! informació! sobre! les! parts! afectades!i!de!quina!forma!es!veuen!afectades!abans!de!produirjse!la!modificació.! Aquests!canvis!poden!anar!des!d’una!lleu!modificació!d'un!tipus!de!dades!d'un!camp! d'una! interfície! d'usuari! (que! veurà! afectades! altres! parts! de! la! IU! que! continguen! aquest!mateix!camp,!així!com!el!camp!associat!de!la!base!de!dades!y!la!lògica!interna! de!la!capa!de!dades);!fins!a!canvis!en!la!terminologia!del!model!d'entitats!de!l'aplicació! que!supose!grans!canvis!en!totes!aquelles!parts!del!projecte!relacionades!amb!aquesta! entitat,! per! exemple! un! software! de! gestió! o! ERP! (Enterprise! Resource! Planning)! comercial! es! pot! veure! afectat! globalment! si! el! concepte! factura!es!veu!modificat! afegint!alguna!informació!addicional!obligatòria.! Per!tal!de!poder!identificar!aquestes!associacions,!necessitarem!informació!sobre!les! relacions! entre! els! artefactes! del! producte,! tot! definint! el! concepte! artefacte! com! qualsevol!element!involucrat!en!el!producte:!terme!del!model!d'entitats,!especificació! del!producte,!parts!del!codi!font!o!elements!de!la!base!de!dades.! L'anàlisi!d'impacte!és!especialment!útil!durant!les!fases!de!manteniment!però!pot!ser! de!gran!ajuda!durant!totes! les!fases!del!procés!de!desenvolupament.[4]!Els!resultats! aportats!per!l'anàlisi!d'impacte!recolzen!decisions!en!diferents!fases!i!àmbits.!! En!fases!de!planificació,!ajuda!a!entendre!la!complexitat!del!canvi!a!realitzar!i!per!tant! facilita!la!tasca!d'estimar!l'esforç!i!l’avaluació!de!la!viabilitat!o!conveniència!d'aquest.! Durant!les!fases!d’anàlisi!i!disseny!ens!aporta!informació!addicional!per!especificar!el! canvi!d'una!manera!completa!i!coherent!amb!les!especificacions!ja!definides!que!es! voran!afectades.!Per!últim!per!als!àmbits!d'implementació!i!testeig!ens!proporciona! una!visió!primerenca!que!resulta!útil!per!tindre!una!aproximació!dels!canvis!en!el!codi! o!en!les!possibles!modificacions!de!les!proves!de!regressió!a!aplicar.! facilita!la!inserció!de!l'anàlisi!d'impacte!de!les!Pas!establint!relacions!automàticament! entre!Pas!que!referencien!el!mateix!element!del!domini.! Una!entitat!de!domini!pot!contindre!propietats,!atributs!i!relacions!amb!altres!entitats,! en! el! nostre! petit! exemple! podríem! definir! un! model! de! domini! amb! les! següents! entitats:!Un!usuari!registrat!es!podria!representar!amb!l'entitat!compte,!esta!té!una! sèrie!de!propietats!com!ara!nom!i!cognoms.!Per!altre!costat!esta!entitat!té!associats! dos!atributs!username(i(password!amb!les!seues!propietats!característiques.!Finalment! tenim!la!entitat!o!concepte!d'amistat!entre!usuaris!i!les!seues!propietats!naturals,!com! per! exemple! en! ser! una! relació! entre! dos! usuaris! i! ser! una! relació! bidireccional! i! la! entitat! petició! relacionada! amb! la! d'amistat! però! amb! la! gran! diferència! de! ser! unidireccional.!! ! FIGURA 3: Model del domini de l'exemple En! seccions! posteriors! d'aquesta! memòria! es! retornarà! a! l'exemple! exposat! i! es! completarà!i!s'especificarà!amb!més!detall!per!tal!de!mostrar!el!complet!procés!intern! de!la!anàlisis!d'impactes!dels!requisits.! ! 3 Bases&de&dades&orientades&a&grafs& A! continuació! es! presenta! el! concepte! de! base! de! dades! orientades! a! graf! (BDOG),! mostrant! els! seus! avantatges! i! inconvenients,! la! seua! base! teòrica,! les! principals! diferències!respecte!a!les!bases!de!dades!relacionals,!així!com!les!diferents!propostes! existents!en!el!mercat,!centrantjse!en!Neo4j!que!es!l’opció!finalment!elegida!per!a!la! implementació!del!projecte.! 3.1 Introducció&a&BDOG& Quan! parlem! de! bases! de! dades! ens! referim! a! conjunts! de! dades! organitzades! i! estructurades! típicament! de! manera! digital,! a! les! que! es! pot! accedir! mitjançant! un! sistema! de! gestió! de! bases! de! dades! que! facilita! l'obtenció,! actualització! i! esborrat! d'informació.!Les!bases!de!dades!segueixen!models!de!dades!que!son!representacions! abstractes!de!la!informació!en!allò!referent!al!seu!emmagatzemament,!organització!i! manipulació.!! En!l'actualitat!la!major!part!de!bases!de!dades!segueixen!el!model!relacional!basat!en! taules!d'esquema!fix!formades!per!tuples!d'informació,!que!es!relacionen!amb!altres! taules.!Les!consultes!sobre!la!informació!es!fan!mitjançant!el!llenguatge!SQL!i!per!tal!de! relacionar!les!dades!de!diferents!taules!s'utilitzen!les!operacions!Join!que!tendeixen!a! ser!molt!costoses!amb!grans!quantitats!de!dades.!No!obstant!això,!existeixen!altres! models!que!tot!i!no!tindre!sistemes!de!gestió!tan!avançats!i!complets!com!el!relacional,! poden!ser!més!adequats!per!a!determinats!àmbits.!! En!el!projecte!s'ha!decidit!utilitzar!un!model!de!base!de!dades!orientat!a!grafs!ja!que!es! tracta!de!la!manera!més!natural!i!intuïtiva!de!representar!el!sistema!de!relacions!de! traçabilitat.!Les!BDOG!emmagatzemen!la!informació!utilitzant!una!de!les!estructures! de!dades!més!comuns!i!estudiades!del!món!de!la!informàtica!i!les!matemàtiques:!els! grafs.!! Si!seguim!la!seua!definició!matemàtica!tenim!que!un!graf!G!es!una!parella!ordenada! G:='(V,E),!on!V!és!un!conjunt!de!vèrtex!o!nodes!i!E!és!a!un!conjunt!d'arestes!o!línies! que! representen! relacions! binaries! entre! dos! elements! de! V.! Aquesta! definició! tan! bàsica!ens!dóna!una!idea!d'una!representació!basada!en!punts!relacionats!amb!altres! punts,!per!exemple!a!i!b,!mitjançant!arcs!R!que!representen!les!relacions!d'adjacència! entre!estos!elements,!que!podem!definir!de!manera!més!compacta!com!aRb.!Direm! que!dos!vèrtex!son!adjacents!si!existeix!la!relació!aRb!en!el!conjunt!E.! Depenent!de!les!característiques!del!graf!aquest!pot!ser!dirigit!o!no!dirigit!depenent!si! les!seues!arestes!tenen!sentit.!A!més,!pot!ser!cíclic!o!acíclic!depenent!de!l'existència!de! camins!auto!conclusius!o!no,!definint!un!camí!de!llargada!n!com!a!un!conjunt!de!vèrtex! v0,v1,v2,...vn!on!existeix!una!aresta!viN1Rvi!per!cada!i=1,2,3...n.!Altres!propietats!a!tindre! en!compte!de!grafs!és!que!poden!ser!ponderats,!cada!node!del!graf!pot!contindre!un! valor! que! represente! un! pes,! cost,! llargada,...! poden! ser! etiquetats! de! manera! que! cada!node!i!fins!i!tot!cada!aresta!del!graf!siguen!distingibles!i!puguen!tindre!bucles,!es! defineix!un!bucle!com!una!aresta!on!els!seus!dos!extrems!són!el!mateix!node.!Si!un! graf!té!bucles!s'anomena!multigraf!en!cas!contrari!graf!simple.! ! FIGURA 4: Graf etiquetat, simple, acíclic i no dirigit ! La!Figura!2!mostra!la!representació!gràfica!del!graf!següent:! V:= {1,2,3,4,5,6,7}! E:= {{1,2},{2,3},{2,4},{4,5},{4,6},{6,7}}! Com!ja!he!comentat!anteriorment!aquesta!estructura!és!una!de!les!més!estudiades! dins!el!món!de!la!matemàtica!i!la!computació!des!del!1736,!quan!Leonhard!Euler!va! publicar!el!seu!article!científic!sobre!el!problema!dels!ponts!de!Königsberg!on!utilitzant! una!abstracció!en!forma!de!graf!per!representar!les!diferents!parts!de!la!ciutat!i!els! ponts!que!les!interconnectaven,!va!concloure!que!no!era!possible!recórrer!els!7!ponts! existents!sense!recórrerjne!algun!més!d'una!vegada.!Aquest!article!va!establir!l'inici!de! l'estudi!sobre!les!propietats!i!operacions!dels!grafs!que!actualment!es!coneix!com!la! teoria! de! grafs.! Parlar! de! la! teoria! de! grafs! no! és! l'objecte! d'este! projecte! final! de! carrera,!però!s'ha!d'entendre!la!seua!importància!i!maduresa!per!assimilar!la!solidesa! teòrica!que!hi!ha!darrere!de!les!BDOG.!! Els!grafs!son!una!potent!ferramenta!que!ens!permeten!modelar!una!gran!quantitat!de! sistemes,! la! seua! utilització! i! estudi! al! llarg! dels! últims! tres! segles! ens! han! permés! estudiar!problemes!matemàtics!que!actualment!trobem!representats!en!molts!àmbits.! Buscar!el!camí!més!curt!entre!dos!nodes,!trobar!el!cicle!hamiltonià!o!eulerià!d'un!graf,! el!problema!del!viatger!o!qualsevol!qüestió!relacionada!amb!fluxos!son!solament!una! xicoteta! part! dels! problemes! clàssics! que! ens! han! aportat! una! gran! quantitat! d'algorismes! utilitzats! en! aplicacions! actuals.! Es! per! açò! que! no! es! estrany! vore! implementacions! basades! en! Kruskal,! Dijkstra,! FordjFulkenson,! algorismes! A*! o! qualsevol! algorisme! de! recorregut! en! aplicacions! actuals! de! GPS,! control! de! flux! de! xarxes,!distribució!de!circuits!electrònics!o!xarxes!socials.! Les!BDOG!utilitzen! tota!aquesta!experiència!prèvia! per! crear!un!model! de! bases!de! dades!robust!i!flexible!gracies!a!les!propietats!innates!dels!grafs!on,!depenent!de!les! diferents!implementacions,!s'han!anat!afegint!mecanismes!utilitzats!actualment!en!les! bases! de! dades! relacionals! com! el! control! de! les! transaccions! i! la! concurrència,! així! com!mecanismes!de!persistència,!índex,!recuperació!de!dades!o!fins!i!tot!llenguatges! de!tipus!query.!A!més,!per!tal!d’estendre!la!informació!que!contenen,!s'han!modelat! els! nodes! com! a! un! conjunt! de! parells! {key,( value}! anomenats! propietats! on! emmagatzemar!les!característiques!del!node.! A! continuació! exposaré! d'una! manera! més! exhaustiva! els! principals! avantatges! que! aquest! tipus! de! bases! de! dades! ofereix! respecte! altres,! mostrant! en! quins! àmbits! destaca!la!seua!potència!i!fent!una!xicoteta!comparativa!amb!el!model!més!utilitzat,! les!bases!de!dades!relacionals.! 3.2 Comparativa&i&principals&avantatges& Com!ja!s'ha!exposat!en!el!punt!anterior,!les!BDOG!ens!aporten!un!nou!model!de!dades! completament!diferent!al!model!relacional!predominant!en!el!món!de!la!informàtica.! Les!seues!diferències!ens!poden!resoldre!problemes!i!reduir!el!cost!computacional!en! determinants! àmbits,! destacant! especialment! en! aquells! on! l'explotació! de! les! relacions!siga!predominant.!Tot!i!que!una!comparativa!directa!entre!models!no!ens!pot! mostrar!de!manera!objectiva!quin!es!més!òptim,!sí!que!podem!fer!una!comparativa! general!entre!les!seues!propietats!per!vore!quines!s’adeqüen!millor!al!nostre!sistema.! Les!principals!característiques!que!ens!aporten!les!BDOG!son:! • Flexibilitat'a'canvis'en'l'estructura'de'dades.!Els!canvis!en!el!model!produeixen! modificacions! en! el! conjunt! de! nodes,! relacions! o! propietats! que! es! corresponen! amb! les! seues! operacions! bàsiques! i! permeten! una! ràpida! evolució.!En!les!Bases!de!Dades!Relacionals!(BDR)!les!modificacions!sobre!el! model!es!corresponen!en!modificacions!de!les!estructures!fixes!de!les!taules,! les!claus!alienes!corresponents!,!així!com!l'actualització!de!les!dades!actuals!i! de!les!restriccions!i!possibles!problemes!que!estes!puguen!aportar.! • Conjunt'de'dades'semiJestructurades.!La!definició!dels!models!no!és!prefixada! com!ho!son!les!taules!de!les!BDR,!en!canvi,!els!nodes!i!relacions!contenen!pocs! camps!obligatoris!(identificadors),!als!que!s'afegeixen!propietats!(parells!{key,( value})!en!funció!de!les!necessitats!del!model!i!no!per!la!seua!rigidesa.!Aquesta! característica!a!més!de!donarjnos!una!gran!flexibilitat!alhora!de!representar!el! nostre!sistema!ens!millora!el!cost!espacial!de!la!informació!a!emmagatzemar.! També!cal!destacar!que!les!propietats!son!de!longitud!variable,!evitant!haver! de!definir!el!seu!volum!i!que!poden!combinar!valors!complexos!i!plurivalents.! • Intuïtiu' amb' models' Orientats' a' Objectes' (OO).' Així! com! en! les! BDR! es! necessari! definir! un! mapping4entre! els! objectes! de! la! capa! de! domini! i! les! taules!del!model!de!relacional!de!persistència,!no!existeix!un!desajust!inherent! entre! el! model! d'objectes! i! l'orientat! a! graf,! ja! els! primers! poden! ser! representats!directament!com!a!grafs.!A!més!en!les!BDOG!la!representació!de! les!dades,!els!esquemes!i!les!seues!consultes!estan!unificats!en!la!figura!del! graf.!  Consultes' optimitzades' per' a' l'explotació' de' les' relacions.' Les! consultes! realitzades!en!les!BDOGs!son!àmplies,!no!estan!emmarcades!per!taules!com!les! de! les! BDRs,! evitant! així! les! costoses! operacions! join,! i! estan! optimitzades! específicament! per! a! sistemes! fortament! interconnectats,! recorrent! les! relacions!entre!els!nodes!seguint!uns!criteris!de!cerca!i!donant!com!a!resultat! un!subgraf!amb!els!nodes!o!relacions!que!els!hagen!satisfet.!A!més!ens!aporten! un! nou! nivell! d’expressivitat! ja! que! podem! recórrer! les! dades! de! manera! jeràrquica!i!ens!faciliten!la!navegació!a!traves!dels!distints!nivells!de!profunditat! de!les!relacions.! ! En!aquest!exemple!podem!vore!com!es!definiria!un! sistema!simple!en!els!dos!models.!En!la!BDR!! qualsevol!element!A?,!B?!i!C?!han!de!tindre!les! mateixes!propietats,!en!canvi!els!elements!de!! la!BDOG!son!completament!independents!i!no!es! classifiquen!seguint!cap!tipus.! ! Les! BDR! per! altre! costat! poden! ser! més! eficient! que! les! BDOG! en! els! casos! on! els! elements! del! sistema! estiguen! dèbilment! relacionats,! així! com! en! totes! aquelles! FIGURA 5: Representació d'un sistema seguint el models de BRD (dalt) i BDOG (dreta)[11] consultes!que!impliquen! poques! taules!amb!independència!del! nombre! de! registres! que! continguen.! D’altra! banda,! també! cal! destacar! la! maduresa! i! estabilitat! dels! sistemes!de!gestió!de!bases!de!dades!relacionals!que!aporten!ferramentes!addicionals! al!propi! model!que! milloren!la! usabilitat!de! l'usuari.!Índex,! triggers,! mecanismes!de! modelatge!o!generació!automàtica!de!consultes,!per!exemple,!son!eines!que!hi!trobem! de!manera!habitual!i!que!normalment!encara!no!estan!implementades!en!els!sistemes! de! gestió! de! BDOGs.! Un! dels! principals! problemes! que! he! enfrontat! al! realitzar! el! projecte! està! directament! lligat! a! aquest! punt,! ja! que! es! tracta! d'una! tecnologia! relativament!nova!que!encara!no!esta!àmpliament!estesa.! Com!hem!dit!amb!anterioritat!les!BDR!no!son!ni!millor!ni!pitjor!que!les!BDOG!però!cal! saber! elegir! correctament! quina! serà! la! més! apropiada! per! a! modelar! el! nostre! sistema.!En!el!nostre!cas!hem!elegit!un!model!de!bases!de!dades!seguint!els!següents! criteris:! • El!nostre!sistema!es!pot!modelar!de!manera!natural,!elegant!i!simple!com!un! graf!on!els!nodes!son!PAs!i!Elements!de!Domini!(EDs)!interconnectades!entre! elles! mitjançant! diferents! tipus! de! relacions! a! explotar! posteriorment! per! a! l'anàlisi!d'impacte.! • Modificació! incremental! del! domini.! Els! principals! objectes! a! considerar! en! l'anàlisi!d'impacte!en!la!versió!inicial!son!les!PAs!i!els!EDs,!però!s'espera!que! l'anàlisi! es! puga! estendre! per! incloure! altres! elements! con! nodes,! clients! o! inclús!classes!del!codi.!Com!hem!dit!anteriorment!les!BDOG!ens!aporten!gran! flexibilitat!envers!canvis!de!l'estructura.! • Heterogeneïtat! dels! diferents! elements! del! domini.! Els! EDs! poden! ser! molt! diversos!i! cada! un!serà!representat! per!un!conjunt! distint!de!propietats.!Per! exemple! l'element! factura! no! tindrà! les! mateixes! característiques! que! l'ED! client.!A!diferència!de!les!BDR!on!no!hi!ha!una!manera!simple!de!representar! aquestes!diferències!(a!no!ser!que!es!malgaste!espai!amb!camps!buits),!en!les! BDOG!els!nodes!no!estan!tipats!i!poden!tindre!diverses!conjunts!de!propietats! de!manera!natural!! • Importància! de! les! relacions! en! el! nostre! sistema.! El! nostre! sistema! es! vol! dissenyar!principalment!per!tal!d'explotar!les!relacions!de!traçabilitat!entre!els! artefactes,!les!BDOG!estan!especialment!orientades!a!la!navegació!d'aquestes! relacions.! Una! vegada! escollit! el! model! de! bases! de! dades,! el! següent! pas! tracta! d'elegir! concretament!quina!de!les!bases!de!dades!existents!en!el!mercat!s'adequa!millor!a!les! nostres!necessitats!i!restriccions.! 3.3 BDOGs&existents& Tot!i!ser!un!enfocament!relativament!nou!en!l'àmbit!de!les!bases!de!dades!(almenys!a! la! pràctica),! en! els! darrers! anys! han! eixit! molts! projectes! relacionats! amb! aquest! model.! Per! estudiar! quina! era! la! BDOG! a! utilitzar! es! va! definir! una! sèrie! de! criteris! basats!en!les!restriccions!tecnològiques!de!l'empresa!i!la!maduresa!del!projecte!de!bd.!! En! l'empresa! s'utilitza! .Net! de! Microsoft! per! desenvolupar! software,! per! tant! era! important! utilitzar! alguna! BDOG! que! ens! aportara! una! api! de! comunicació! en! C#! o! almenys! algun! element! de! comunicació! mitjançant! servicis.! Un! altre! aspecte! a! considerar! era! la! maduresa! del! projecte,! tant! d'estabilitat! com! de! completesa,! la! documentació!associada!i!en!general!el!volum!d'usuaris!que!conformava!la!comunitat.! Per!últim!també!calia!centrarjse!en!el!tipus!de!llicència!del!producte,!preferiblement! alguna!llicència!opensource!que!ens!permetrà!utilitzarjla!sense!cap!cost!addicional!per! a! l'empresa.! Seguint! aquests! criteris,! vàrem! estudiar! un! conjunt! d'opcions! buscant! informació!per!internet!i!posantjnos!en!contacte!amb!els!desenvolupadors.!Cal!tindre! en! compte! que! les! BDOG! estudiades! actualment! poden! tindre! característiques! diferents!de!quan!es!va!prendre!la!decisió:! 3.3.1 DEX& Es!tracta!d'un!projecte!d'investigació!dut!a!terme!pel!DAta!MAnagement!group! de!la!universitat!politècnica!de!Catalunya!(DAMAjUPC)!que!es!comercialitza!per! l'empresa!SparsityjTechnologies.!Dex!es!una!llibreria!de!gestió!de!grafs!escrita!en! C++!i!Java!que!aporta!una!API!pública!en!aquest!últim!llenguatge!per!a!la!seua! comunicació!i!gestió!directa,!les!seues!transaccions!són!parcialment!ACID!ja!que! solament!suporten!consistència!i!aïllament.!El!seu!model!de!dades!consisteix!en! grafs! amb! múltiples! relacions! per! node,! direccionals,! amb! nodes! i! relacions! tipades.!Té!una!llicència!comercial!en!funció!del!volum!de!la!base!de!dades.! Aquesta! opció! va! ser! descartada! ja! que! no! oferia! cap! eina! de! comunicació! alternativa! a! la! API! de! Java,! la! documentació! era! escassa,! i! a! més! la! llicència! suposaria!un!cost!extra!per!a!l'empresa.!També!cal!destacar!que!no!existia!una! comunitat! real! al! darrere! fent! ús! d'aquesta! que! donara! suport! o! que! ens! mostrara!un!ús!real!de!la!base!de!dades.! 3.3.2 HiperGraph& Aquest! és! un! projecte! desenvolupat! per! l'empresa! Kobrix! Software! i! distribuït! utilitzant!una!llicència!LGPL.!El!model!de!dades!utilitzat!es!un!poc!diferent!de!la! resta,!ja!que!es!tracta!d'un!model!basat!en!hipergrafs,!és!a!dir!que!cada!aresta! pot! connectar! més! de! dos! nodes.!En! HiperGraph! tots! els! elements! son! àtoms! tipats! amb! propietats! preestablertes! que! poden! estar! relacionats! amb! 0..n! elements.! El! seu! sistema! de! transaccions! es! parcialment! ACID,! ja! que! no! ens! assegura!la!durabilitat.!Esta!base!de!dades!et!permet!treballar!amb!un!entorn! local! o! utilitzant! un! sistema! distribuït! basat! en! protocols! P2P.! La! comunicació! amb!la!BD!es!fa!mitjançant!la!seua!API!de!Java.! Tot!i!ser!un!projecte!amb!una!llicència!poc!restrictiva!per!al!nostre!us!amb!una! comunitat!d'usuaris!al!darrere!i!basarjse!en!un!model!orientat!a!objectes,!va!ser! descartat!per!estar!en!una!fase!inicial!de!desenvolupament!i!oferir!exclusivament! una!API!de!Java!com!a!element!comunicador.! 3.3.3 Infogrid& Desenvolupada! inicialment! per! l'empresa! NetMesh,! actualment! es! tracta! d'un! projecte! de! codi! obert! distribuït! amb! una! llicència! AGPLv3.! Infogrid! es! tracta! d'una!base!de!dades!de!grafs!(amb!múltiples!relacions!per!node,!direccional!on! cada! node! i! relació! pot! contindre! propietats)! implementada! en! Java,! especialment! pensada! per! al! desenvolupament! d'aplicacions! web! basades! en! servicis! REST,! ja! que! cada! objecte! de! la! base! de! dades! té! una! url! associada! seguint! els! estàndards! REST.! La! gestió! i! navegació! de! la! base! de! dades! es! fa! mitjançant!la!seua!API!nativa!de!Java!i!ens!ofereix!posteriorment!un!accés!als! elements!mitjançant!servicis!web.!! Infogrid! era! un! projecte! a! considerar! ja! que! oferia! totes! les! propietats! que! necessitàvem!del!graf!i!a!més!es!tractava!d'un!projecte!de!codi!obert,!però!va!ser! descartat!ja!que!no!vàrem!trobar!documentació!associada!respecte!a!la!gestió!de! les! transaccions! ni! tampoc! hi! havia! una! alternativa! a! la! API! nativa! de! Java! respecte! a! les! operacions! sobre! el! graf,! tot! i! tindre! un! accés! als! elements! mitjançant!servicis!REST!la!comunicació!pel!que!fa!a!les!accions!era!confusa.! 3.3.4 Neo4j& Aquesta!és!la!opció!finalment!elegida!per!donar!suport!a!la!anàlisis!d'impacte!del! requisits.! Aquesta! BDOG! ens! aporta! totes! les! propietats! que! hem! enumerat! anteriorment!i!gràcies!a!ser!un!projecte!de!codi!obert!amb!una!llicència!flexible! com!és!la!AGPLv3!suposa!l'opció!més!adequada!a!les!nostres!necessitats.!En!el! punt!següent!es!dóna!una!explicació!més!detallada!de!Neo4j!amb!totes!les!seues! característiques,! millores! al! pas! del! temps! i! parlarem! de! la! API! que! estem! utilitzant.!! 3.3.5 InfiniteGraph& Desenvolupada!per!una!companyia!amb!el!mateix!nom,!InfiniteGraph!es!tracta! d'una! BDOG! desenvolupada! en! Java! que! ofereix! una! API! molt! simple! de! comunicació! en! el! mateix! llenguatge! i! una! capa! de! persistència! especialment! optimitzada! per! al! seu! escalat! i! distribució.! Es! tracta! d'un! dels! projectes! més! madurs!entre!les!propostes!estudiades!i!ens!aporta!moltes!de!les!característiques! necessàries!per!a!la!implementació!del!nostre!mòdul.!El!seu!model!de!dades!esta! basat!en!grafs!direccionals!on!nodes!i!relacions!poden!tindre!propietats!i!cada! node!pot!estar!relacionat!amb!0...n!nodes.!InfiniteGraph!suporta!concurrència!i! aporta!un!sistema!transaccional!plenament!ACID!de!sessions,!a!més!conté!una! col·∙lecció! d'algorismes! de! cerca! de! camins,! un! sistema! complex! d'indexació! i! cerca!i!un!complet!framework!de!creació!de!traversals!configurable!per!recórrer! el!graf.! Tot!i!ser!una!de!les!millors!opcions!analitzades!fins!al!moment,!es!va!descartar!el! seu!ús!en!un!primer!moment,!ja!que!encara!que!hi!havia!anunciat!un!binding!per! a!c#!(a!dia!de!avui!encara!no!l'han!implementat!ni!esta!programada!la!seua!versió! de!publicació),!en!el!moment!no!oferia!cap!element!de!comunicació!que!no!fora! la! API! de! Java,! a! més! la! seua! llicència! comercial! suposaria! un! cost! extra! addicional.! una!llicència!de!pagament!OEM!que!permet!a!les!empreses!utilitzar!i!distribuir! software!que!utilitza!Neo4j!inclús!tractantjse!d'aplicacions!de!codi!tancat.! Aquesta!llicència!tant!flexible!és!perfecta!per!al!nostre!projecte,!ja!que!encara! que! anem! a! dissenyar! un! mòdul! de! codi! tancat,! la! ferramenta! serà! exclusivament! d'ús! intern! de! la! companyia! i! per! tant! no! es! distribuirà! i! ens! donant!la!possibilitat!d'utilitzar!l'edició!Community!que!no!suposarà!cap!cost! addicional!per!a!l'empresa.! • Comunitat! i! documentació.! Un! dels! principals! avantatges! de! Neo4j! és! precisament! l'extensa! documentació! que! aporten! en! la! seua! web,! amb! un! manual! molt! complet! i! diversos! exemples! d'implementacions! reals.! A! més,! gràcies!a!ser!un!projecte!de!codi!obert!amb!una!extensa!comunitat,!existeix!un! wiki!amb!informació!addicional!sobre!Neo4j!i!les!seues!ferramentes,!així!com! altres!projectes!derivats!i!una!llista!de!correus!molt!activa!on!expressar!els!teus! dubtes.! • Cicle! de! desenvolupament.! Neo4j! és! una! base! de! dades! que! basa! els! seu! desenvolupament! en! cicles! curts! d'aproximadament! 6! mesos,! on! cada! mes! s'allibera!una!versió!milestone!per!a!que!la!comunitat!vaja!provant!el!rendiment! i! les! millores,! aconseguint! així! feedback! que! s'utilitza! per! a! les! futures! implementacions.! En! cada! release! es! millora! el! rendiment! de! les! operacions! actuals,!s'ofereixen!noves!ferramentes!i!es!completen!les!APIs!actuals.!! Aquesta! manera! de! treballar,! acosta! els! desenvolupadors! de! Neo4j! a! la! comunitat!i!guien!la!seua!creació!en!allò!que!els!és!més!demandat.!Per!exemple! en! les! últimes! versions! alliberades! s'ha! afegit! l'opció! de! crear! plugins! per! al! servidor,!així!com!un!sistema!de!transaccions!complexes!mitjançant!la!interfície! REST!o!el!llenguatge!Cypher!basat!en!pattern!matching!per!a!la!cerca!de!node.! 3.4.2 Mode&Servidor&i&REST&API& Abans! d'aprofundir! en! l'especificació! de! l'API! que! Neo4j! posa! al! nostre! abast,! començaré!fent!una!introducció!d’alguns!conceptes!o!explicacions!que!s’hi!relacionen.! Primer!de!tot!cal!remarcar!l'arquitectura!modular!en!la!que!es!basa!Neo4j.!!Consisteix! en!un!nucli!central!format!al!mateix!temps!per!altres!mòduls!més!atòmics!com!ara!els! mecanismes!de!persistència,!control!de!transaccions!i!concurrència!o!la!gestió!d’índex! lucene,!envoltat!per!una!capa!externa! que! defineix! la!interfície!o!API!pública!de!les! accions!que!es!poden!fer!sobre!la!base!de!dades.!El!nucli!central!o!kernel!ja!pot!ser! utilitzat!com!a!base!de!dades!integrada!dins!de!l'aplicació!(mode!embedded).! D’altra! banda! en! aquest! kernel! se! li! poden! acoblar! altres! mòduls! que! estenen! les! capacitats!o!possibilitats!de!la!base!de!dades,!entre!elles!podem!trobar!el!mòdul!de! backjup!o!alguns!altres!de!monitorització!o!visualització.!Però!el!que!ens!interessa!en! aquest!punt!és!aquell!que!converteix!Neo4j!en!un!servidor,!actuant!com!a!wrapper( sobre!el!nucli,!i!afegint!tota!la!infraestructura!associada!a!la!xarxa!com!ara!protocols!de! transferència! o! el! propi! administrador! web.! A! més! de! tota! aquesta! infraestructura,! Neo4j!ens!aporta!uns!servicis!de!comunicació!independents!de!la!tecnologia!utilitzada! que!fan!servir!crides!al!protocol!http!per!tal!d’accedir!als!recursos!de!la!base!de!dades.! Aquests!servicis!estan!basats!en!l'arquitectura!REST.! REST!és!un!acrònim!per!a!Representational(State(Transfer!i!és!tracta!d'una!arquitectura! software!per!a!recursos!distribuïts!que!es!fonamenta!en!unes!idees!simples,!aquestes! son!les!més!destacades:!! • Totes! les! comunicacions! al! servici! es! duran! a! terme! mitjançant! crides! del! protocol!HTTP.! • Tots!els!recursos!que!volem!oferir!en!el!nostre!servici!han!de!tindre!una!URL! associada!a!la!qual!poder!accedir!amb!l'ús!de!crides!GET.! • La! manipulació! dels! recursos! i! operacions! disponibles! es! farà! mitjançant! les! crides! POST! (creació),! PUT(modificació)! i! DELETE! (eliminació).! A! aquestes! comunicacions! se'ls! pot! aportar! informació! addicional! per! al! servici! que! sol! estar!emmagatzemada!en!XML!o!JSON.! Neo4j! aporta! un! conjunt! de! servicis! REST! per! tal! de! comunicarjse! amb! el! servidor! definint! una! interfície! d'operacions! disponibles.! A! continuació! enumeraré! les! operacions!i!mostraré!algun!exemple!amb!la!informació!adjunta!a!alguna!crida!o!al!seu! resultat:! • Obtenció!de!recursos:!es!fa!una!crida!GET!sobre!la!URL!del!recurs,!actualment! podem! accedir! a! nodes,! propietats! del! nodes,! relacions! dels! nodes,! tipus! de! relacions,!propietats!de!les!relacions.!Exemple!de!l'obtenció!de!les!propietats! del!node!1:! Crida!:!GET!!!$servidor/node/1/properties! Resultat!200:OK!{!"nom":!"Guillem",!"cognoms":!"Medina!Martínez"}! • Eliminació!de!recursos:!es!fa!un!GET!sobre!la!URL!de!l'element!a!eliminar.!El! servidor!tornarà!un!codi!200!o!40x!en!funció!de!si!ja!pogut!eliminar! o! no! el! recurs.!! • Creació! i! modificació! de! recursos:! es! fa! una! crida! POST/PUT! en! funció! de! si! estem! creant! o! modificant! sobre! la! URL! de! l'element! amb! el! que! volem! interactuar,! com! en! el! cas! anterior! estos! poden! ser! nodes,! relacions! o! propietats!associades!a!algun!dels!altres!dos!elements.!Exemple!de!la!creació! del!node!2!amb!la!propietat!nom:! Crida:!POST!!!$servidor/node!{!"nom":!"Pep"}! Resultat!201:!Ok!node!creat!!http://$servidor/node/_idNouNode! • Gestió! dels! Índex:! Utilitzant! les! crides! ja! exposades! podem! crear! índex,! eliminarjlos,!llistar!índex!de!nodes!o!relacions,!indexar!i!desindexar!elements!i! buscar!elements!dins!de!l'índex!per!coincidència!exacta!de!cadenes!o!utilitzant! el!llenguatge! de! queries!suportat!per! Lucene.!No!entrarem! en! més!detall! en! estes!crides!perquè!encara!no!han!sigut!utilitzades!en!el!projecte.! • Cerca! de! camins! entre! dos! nodes:! la! interfície! REST! de! Neo4j! ens! dóna! l'oportunitat! d'utilitzar! alguns! dels! algorismes! ja! codificats! que! ofereixen,! actualment!es!dóna!suport!a!shortestPath,( allPaths,( allSimplePaths( i!Dijkstra.( Tampoc!entrarem!en!detall!en!els!elements!d'este!punt.!! • Traversals:!per! tal! de!recórrer!el! graf,!l'API!ens! permet! fer!un! post! sobre!un! node!inicial,!travessarjlo!seguint!uns!criteris!i!retornar!un!conjunt!d'elements! del!tipus!que!nosaltres!definim.!Este!és!un!exemple!de!traversal:! Crida:!POST!/node/1/traverse/node!! {! ! "order":!"depth_first",!! ! "relationships":![!! ! ! {!"type":!"KNOWS",!"direction":!"out"!},!! ! ! {!"type":!"RELATED"!}! !!],! ! "prune_evaluator":!{! ! ! "language":!"javascript",! ! ! "body":!"position.endNode().getProperty('date')>1234567;"! !},!! !! "return_filter":!{! ! ! "language":!"builtin",! ! ! "name":!"all"! !},! ! "max_depth":!2! }! En!la!crida!podem!vore!que!començant!des!del!node!1!volem!travessar!el!graf!i! que!ens!torne!el!conjunt!de!nodes!que!complisquen!els!criteris!demarcats!en!el! fitxer! JSON! ! adjunt.! En! aquest! cas! indicant! que! es! vol! recórrer! el! graf! per! profunditat,! solament! travessant! les! relacions! KNOWS! en! direcció! d'eixida! i! RELATED!en!ambdues!direccions,!amb!una!profunditat!màxima!de!dos!salts!on! es! retornaran! tots! els! nodes! pels! que! s'haja! passat! però! esporgant! aquelles! branques!del!graf!on!el!node!tinga!una!propietat!date!amb!un!valor!superior!a! 1234567.! Resultat:!200!OK!i!com!hem!demanat!que!ens!torne!un!conjunt!de!nodes,! [!! ! {!"self":!"http://localhost:7474/db/data/node/64",! ! !!!"data":!{!"name":!"Guillem"!},! !!!!...! !},! ! {!"self":!"http://localhost:7474/db/data/node/635",! ! !!"data":!{!"name":!"Pep"!},!!!!! !!!!...!!!! ! }! !]! Esta!és!la!interfície!que!utilitzarem!per!definir!l'anàlisi!d'impacte!sobre!les!PAs!i! on!definirem!els!criteris!que!volem!utilitzar!per!ferjho.! 4 Infraestructura&per&a&l'AI& En!esta! secció!s’exposarà! el! conjunt!d’elements! creats!per! a! l’anàlisi! d'impacte! dels! requisits.!Començarem!explicant!el!model!de!dades!utilitzat!mostrant!la!seua!evolució! des!de!les!primeres!versions!fins!l'actual,!a!continuació!definirem!el!gestor!de!termes! creat! per! tal! de! organitzar! el! model! d'entitats! del! domini! de! l'aplicació! i! per! últim! s'explicaran!les!modificacions!sobre!l'API!Rest!per!a!C#!de!Neo4j!que!s'han!fet!per!a! aquest!projecte.!! 4.1 Model&de&dades& 4.1.1 Consideracions&prèvies& Quan!parlem!del!model!de!dades!s'ha!de!recordar!que!estem!utilitzant!el!paradigma!de! BDOG! per! tal! de! definir! i! organitzar! la! informació.! Aquesta! decisió! canvia! la! representació!del!coneixement!i!per!tant!les!estratègies!utilitzades!per!tal!de!dissenyar! el!model!de!dades,!és!així!com!les!definicions!mitjançant!un!model!entitatjrelació,!que! són! tant! utilitzades! en! les! bases! de! dades! relacionals! per! la! seua! senzilla! correspondència,! no! tenen! sentit! en! el! nostre! context.! Per! tal! de! definir! el! nostre! model!de!dades!hem!de!trobar!una!representació!clara,!intuïtiva!i!que!ens!mostre!tota! la!informació!rellevant!sobre!l'estructura!de!les!dades.! En!la!literatura!acadèmica!referent!als!models!de!dades!de!grafs![13]!!se'ns!mostra!una! gran! varietat! de! possibles! definicions,! tot! i! això! no! existeix! un! acord! o! estàndard! generalitzat!sobre! el! qual!basarjnos,! així!que! açò! ens!dona! una!llibertat! a! l'hora!de! representar!la!nostra!base!de!dades.!Analitzant!les!propostes!existents!(GOOD,!LDM,! GROOVY,!HML,!SimaticjXT,!GDM,!GOAL,!RDF,!...)!s'ha!arribat!a!la!conclusió!que!ninguna! d'elles!satisfeia!d'una!manera!simple!les!necessitats!del!projecte!en!ser,!depenent!de!la! situació,! massa! complexes,! poc! intuïtives! i! clares! o! en! estar! basades! en! una! implementació! del! paradigma! de! grafs! diferent! a! la! nostra,! com! per! exemple! els! hipergrafs.!! Finalment!s'ha!optat!per!utilitzar!una!definició!pròpia!amb!diverses!característiques!de! les! propostes! anteriors.! Inicialment! definirem! l'esquema! de! dades! en! dos! nivells! de! profunditat,!en!el!primer!nivell!mostrarem!una!representació!simplificada!amb!els!tres! dominis!de!nodes!que!tractarem!i!en!el!segon!especificarem!tots!els!tipus!de!nodes!i! relacions!definides,!així!com!les!seues!possibles!restriccions!i!propietats!obligatòries.! D’altra!banda!definirem!una!representació!d'una!instància!de!la!base!de!dades!basada! en!els!esquemes!definits.!Per!últim!enumerarem!les!modificacions!que!s'han!de!dur!a! terme!per!a!la!seua!implementació!en!Neo4j!i!les!possibles!millores!d'optimització.! Un!altre!aspecte!a!considerar!a!l'hora!de!dissenyar!un!model!de!dades!de!grafs!és!la! seua! flexibilitat.! A! diferència! de! les! bases! de! dades! relacionals! basades! en! rígides! taules!i!camps!tipats,!en!les!BDOG!el!model!evoluciona!d'una!manera!natural!afegint! nous!tipus!de!nodes!(que!no!nodes!tipats,!ja!que!solament!es!tracta!d'una!definició! abstracta)!i!nous!tipus!de!relacions!entre!aquests.!Son!precisament!estos!tipus,!i!en! especial!els!de!les!relacions,!els!que!cal!definir!amb!més!deteniment!ja!que!seran!els! utilitzats! per! explotar! la! informació! de! la! base! de! dades! mitjançant! els! criteris! de! recorregut!dels!traversals.! En!aquest!projecte!es!mostrarà!solament!l'última!versió!utilitzada!del!model!de!dades,! remarcant! en! alguns! casos! perquè! s'ha! optat! per! aquesta! opció! i! definint! algunes! possibles!modificacions!futures.! 4.1.2 Definició&del&model& Com!ja!hem!definit!en!el!punt!anterior,!el!model!de!dades!vindrà!representat!per!una! sèrie!de!esquemes!propis!que!anirem!explicant!detingudament.!Inicialment!es!mostra! una! representació! abstracta! que! podríem! caracteritzar! com! a! nivell! 0! de! l'esquema! general!del!nostre!model!de!dades!que!expressa!d'una!manera!global!l'arquitectura!de! la!base!de!dades!i!la!seua!organització,!aquest!primer!esquema!es!interesant!per!tal! d’introduir!conceptes!en!els!que!es!profunditzarà!posteriorment!! Com! es! pot! vore! en! la! imatge! inferior,! el! model! esta! dividit! en! dos! seccions! completament! diferenciades! ! i! ,! encara! que! estiguen! interconnectades,! representen! dos!conjunts!d'elements!distints!des!d'un!punt!de!vista!conceptual.!! FIGURA 8: Esquema de nivell 0 del model de dades Per! un! costat! hem! de! destacar! els! components! etiquetats! com! "Elements! de! l'estructura";! aquesta! terminologia! es! refereix! als! contenidors! naturals! de! la! ferramenta!de!suport!per!a!la!metodologia!TUNEjUP!en!la!que!estem!basant!la!nostra! anàlisi!d'impacte.!En!esta!secció!englobem!les!proves!d'acceptació!que!son!l'element! bàsic!sobre!les!que!definirem!les!relacions!de!traçabilitat!i!per!altre!costat!els!nodes,! que!seguint!la!seua!pròpia!definició!TUNEjUP,!son!contenidors!de!proves!d'acceptació! utilitzats! per! organitzarjles! en! nivells,! creant! una! jerarquia! de! requisits! per! facilitar! l'accés!i!la!navegació!entre!elles.! Per! tant,! seguint! estes! idees,! els! nodes! de! la! BDOG! que! formaran! els! conjunts! etiquetats!com!a!"Nodes"!i!"PAs",!son!representacions!d'elements!ja!existents!en!la! base! de! dades! relacional.! Com! la! quantitat! existent! d'aquests! elements! és! molt! elevada!i!el!nombre!de!proves!que!estem!utilitzant!actualment!per!a!l'anàlisi!d'impacte! és!considerablement!reduït,!s'ha!optat!per!afegir!incrementalment!aquests!elements! estructurals!en!crear!una!relació!de!traçabilitat!sobre!una!de!les!proves,!ja!siga!una!de! les!anteriorment!definides!o!de!les!recentment!creades.! Per!tal!de!no!caure!en!equivocacions!terminològiques,!a!partir!d'aquest!moment!ens! referirem!a!Nodes(quan!voldrem!fer!referència!a!un!element!de!l'estructura!jeràrquica! de!requisits!i!a!nodes((en!minúscula)!quan,!en!canvi,!fem!referència!a!l'element!bàsic! de! les! bases! de! dades! orientades! a! grafs! que! utilitzarem! per! a! modelar! tots! els! conceptes!que!volem!emmagatzemar.! D’altra!banda,!i!tornant!a!la!figura!superior,!podem!vore!com!els!elements!pertanyents! al! conjunt! de! les! proves! d'acceptació! estan! relacionats! amb! una! entitat! que! hem! dibuixat! amb! un! núvol.! Esta! representació! ve! influenciada! per! la! idea! que! aquestes! entitats! o! termes! del! domini! son! un! conglomerat! de! conceptes! desiguals! que! únicament! tenen! en! comú! el! fet! que! poden! ser! utilitzats! com! a! enllaç,! entre! les! diferents!proves!d'acceptació!gràcies!a!les!relacions!de!traçabilitat.! No! existeix! una! definició! formal! de! què! és! un! terme! dins! aquesta! amalgama!de! nocions.!En!un!principi!el!núvol!s'ha!constituït!amb!elements!d’allò!que!es!pot!conéixer! com! entitats! del! domini! d'acció! de! l'empresa! en! la! qual! s'ha! dut! a! terme! aquest! projecte!i!que,!en!aquest!cas!,!tracta!de!terminologia!associada!al!món!sociosanitari!i! de!gestió!de!residents.!Seguint!aquesta!idea,!en!el!conjunt!actual!podem!trobar!termes! relacionats!amb!treballadors!específics!d'aquestes!entitats,!temes!relacionats!amb!els! comptes! d'usuaris/residents! i! amb! la! seua! informació,! conceptes! referents! a! la! facturació!de!les!diverses!entitats!i!fins!i!tot!aspectes!legals!lligats!a!les!aplicacions!de!la! companyia!com!ara!la!llei!de!protecció!de!dades.! Aquesta! seria! una! primera! versió! del! concepte! termes! del! domini! que! englobaria! únicament! a! les! entitats! implicades! explícitament! en! el! context! de! l'empresa,! en! futures! modificacions! i! a! petició! dels! responsables! del! projecte! s'espera! ampliar! la! definició!d'aquest!concepte!per!tal!que!incloga!altres!aspectes!que!també!poden!ser! útils!com!a!elements!d'enllaç!de!l'anàlisi!com!referències!a!altres!PAs,!Nodes!o!altres! entitats!com!ara!clients!de!l'empresa!o!el!conjunt!de!programes!desenvolupats.! Una!vegada!definit!l'esquema!general!del!model!de!dades!es!convenient!aprofundir!en! la!implementació!real!de!l’esquema!en!la!nostra!BDOG,!detallant!amb!més!exactitud!el! conjunt! de! nodes,! relacions! i! propietats! fonamentals! que! el! defineixen,! indicant! les! seues!característiques!més!importants.! ! FIGURA 9: Esquema 1 de la part estructural del model de dades Centrantjnos!únicament!en!el!subconjunt!format!per!les!parts!estructurals!del!model! de! dades,! definim! l'estructura! com! un! conjunt! de! nodes! de! tipus! Node! connectats! mitjançant! relacions! de! tipus! "format! per"! com! es! pot! vore! en! la! imatge! superior.! Encara!que!en!l'estructura!real!de!la!ferramenta!els!Nodes!també!estiguen!relacionats! amb!altres!Nodes,!aquesta!informació!no!es!rellevant!per!a!l'anàlisi!d'impacte!i!per!tal! d'evitar!la!reiteració!d'informació,!solament!es!veurà!reflectida!la!idea!general!que!un! node!es!un!contenidor!format(per(PAs,!en!la!definició!de!la!imatge!també!s'apunta!al! fet!que!un!node!pot!contindre!moltes!PAs,!però!en!canvi!una!PA!solament!pot!estar! relacionada!amb!un!únic!node.! Encara!que!la!relació!"format!per"!es!mostra!en!la!imatge!com!un!vincle!direccional! que!va!des!d'un!Node!fins!a!una!PA,!s'ha!de!comentar!que!el!fet!de!representar!el!nexe! amb!una!punta!blanca,!denota!que!esta!direccionalitat!no!té!una!implicació!real!en!la! definició! de! la! base! de! dades,! però! en! canvi! si! que! la! té! des! d'un! punt! de! vista! conceptual.! Finalment! destacar! que! encara! que! els! nodes! de! la! base! de! dades! Neo4j! no! estan! tipats! i! per! tant! no! estan! lligats! a! cap! estructura! prefixada,! per! als! elements! de! l'estructura!que!tenen!una!relació!directa!amb!els!seus!homònims!en!la!base!de!dades! relacional,! hem! definit! un! conjunt! simple! per! representar! la! informació! bàsica! a! explotar.!Per!tant,!els!Nodes!únicament!estaran!definits!per!la!propietat!"ID"!que!es! correspon!amb!el!identificador!de!la!taula!GRNodos!de!la!ferramenta!i!les!PAs!es!voran! definides!per!un!ID!i!un!tipus.!Aquest!binomi!es!deu!al!fet!que!en!l'arquitectura!del! gestor! de! requisits,! existeixen! dos! tipus! de! proves! d'acceptació! (propostes! i! proves! actuals)!associades!a!taules!diferents!i!per!tant!l'identificador!associat!al!node!de!la!PA! ha!de!tindre!marcat!el!context.!Cal!destacar!que!en!cas!d'afegir!informació!addicional! sobre!els!nodes!de!les!estructures,!no!es!vora!utilitzada!en!l'explotació!de!les!relacions! de!traçabilitat.! Per!altra!banda,!si!ens!centrem!en!el!nucli!del!model!de!dades!centrat!en!els!termes! del!domini,!podem!trobar!una!definició!més!detallada!com!la!que!es!veu!en!la!imatge! inferior.! ! FIGURA 10: Esquema de nivell 1 de la part del domini del model de dades En! la! part! esquerra! de! la! imatge! podem! vore! la! secció! relacionada! amb! les! proves! d'acceptació!i!que!es!correspon!amb!la!part!dreta!de!la!imatge!anterior.!Aquesta!esta! relacionada!amb!dos!tipus!de!nodes!anomenats!termes!i!atributs!per!un!conjunt!de! relacions!de!traçabilitat!que!són!la!base!de!l'anàlisi!d'impacte.! Aquestes!relacions!estan!tipades!i!categoritzades!en!funció!de!la!secció!en!que!s'han! definit!dins!de!la!descripció!de!la!prova,!aleshores!seguint!les!opcions!actuals!trobem!5! tipus!de!nexes!que!poden!ser!explotats!de!manera!diferent,!creant!algoritmes!d'anàlisi! més! complexos! i! que! s'ajusten! més! a! les! necessitats! de! l'empresa.! Els! tipus! de! connexions!que!tenim!definides!actualment!són:!!relacions!de!les!condicions!prèvies!a! la!prova,!relacions!dels!passos!a!seguir!en!la!seua!definició,!relacions!en!els!resultats! esperats,!relacions!en!les!observacions!addicionals!dels!analistes!i!per!últim!relacions! en!les!motivacions!de!cada!prova!d'acceptació.! Per!finalitzar!esta!secció,!només!comentar!que!per!fer!la!interfície!gràfica!s'han!utilitzat! les! llibreries! de! windows( forms! de! la! companyia! Infragistics! (utilitzades! en! tota! la! ferramenta!de!suport!de!TUNEjUP)!i!internament!el!navegador!utilitza!una!interfície! simple!de!connexió! amb! la!base!de!dades! orientada!a!grafs!mitjançant! l'API!que!es! descriu!en!el!punt!següent.! 4.3 Neo4j&API& Un!dels!principals!inconvenients!que!vàrem!trobar!a!l'hora!d'interactuar!amb!la!base! de!dades!orientada!a!grafs!és!la!incompatibilitat!tecnològica!que!ja!es!va!comentar!al! capítol!3.!Neo4j!esta!implementada!en!Java!i!ofereix!una!API!pública!de!comunicació! en! aquest! llenguatge! de! programació,! mentre! que! la! ferramenta! de! suport! a! la! metodologia! TUNEjUP! on! volem! integrar! el! nostre! mòdul,! esta! desenvolupat! amb! tecnologies!.NET,!més!concretament!codificada!amb!el!llenguatge!C#.! Encara!que!NeoTechonologies!no!ofereix!cap!wrapper!o!embolcall!tecnològic!directe! per! a! una! comunicació! senzilla! amb! el! framework!de!Microsoft,! si! que! ofereix! la! possibilitat! d'executar! la! base! de! dades! com! a! servidor! i! comunicarjse! amb! ella!! mitjançant! crides! HTTP,! gràcies! al! servici! REST! implementats.! Inicialment! es! varen! plantejar! altres! solucions,! com! la! creació! pròpia! d'una! capa! d'interconnexió! entre! ambdues! tecnologies! o! bé! crear! un! client! extern! en! Java! que! caldria! instal·∙lar! posteriorment!en!totes!les!màquines!per!tal!que!tots!els!agents!pogueren!comunicarj se!amb!la!base!de!dades,!però!en!determinar!la!senzillesa!de!la!interfície!REST!aquestes! idees!es!van!deixar!de!banda.! Una! vegada! decidit! que! aquest! seria! l'element! de! comunicació! emprat! en! el! nostre! projecte!calia!determinar!si!Neo4j!oferia!de!manera!oficial!una!implementació!en!.NET! de!la!seua!API!REST.!En!accedir!als!recursos!de!la!seua!pàgina!web!es!podia!vore!que! solament!existien!APIs!per!als!llenguatges!de!programació!Python,!Ruby!i!Java,!però! segons!alguns!emails!escrits!pels!responsables!del!projecte,!la! implementació! de! C#! estava!programada!en!el!seu!product(backlog!per!a!futures!versions.! Actualment,!després!d'un!any!de!prendre!aquestes!decisions,!les!prioritats!del!grup!de! desenvolupament!de!Neo4j!han! canviat! notablement!i!es!centren!en!optimitzacions! temporals!i!espacials!i!en!general!noves!característiques!i!ferramentes,!i!no!s'espera! aquesta!funcionalitat!en!ninguna!de!les!properes!actualitzacions!de!software.!A!més,! en!créixer!la!comunitat!de!desenvolupadors!al!voltant!del!projecte,!s'espera!que!tot! allò!relacionat!amb!APIs!o!plugins!per!al!servidor!siguen!aportacions!externes!per!part! d'aquesta! comunitat.! Després! de! diverses! consideracions,! i! en! no! saber! una! data! concreta!de!publicació!d'aquesta,!es!va!optar!per!crearjne!una!des!de!cero,!basantjnos! en!les!especificacions!i!el!disseny!de!les!APIs!ja!implementades.!! 4.3.1 Creació&d'una&API&REST&amb&tecnologia&.NET&& La!llibreria!que!es!va!definir!s'havia!d'encarregar!principalment!de!3!punts!claus:!en! primer!lloc!serialitzar!i!deserialitzar!objectes!de!C#!a!format!JSON,!a!continuació!crear! un! mecanisme! per! fer! les! corresponents! crides! HTTP! al! servici! REST! de! la! base! de! dades! i! finalment! oferir! una! interfície! per!a! utilitzar! en! la! nostra! capa! d'accés! a! dades.[14]! Per! començar! la! implementació! de! l'API! ens! vàrem! decidir! per! crear! un! nucli! de! comunicació!HTTP!utilitzant!la!llibreria!de!HttpWebRequest!i!el!seu!pare!en!l'esquema! d’herència,! WebRequest.! Es! va! construir! un! esquema! en! dos! capes! on! en! la! més! profunda! es! creaven! crides! bàsiques! encarregades! d'enviar! peticions! i! extraure! les! respostes! de! les! contestacions! del! servidor,! i! s'envoltava! d'una! capa! que! cridava! internament!a!la!prèviament!definida,!indicant!el!tipus!de!crida!HTTP!(get,!post,!put!o! delete)!que!s'anava!a!utilitzar!i!retornant!la!resposta!ja!extreta.! A! continuació,! calia! definir! els! elements! que! serien! visibles! des! de! la! nostra! capa! d'accés! a! dades! i! al! mateix! temps! crear! les! classes! necessàries! per! ferjho! possible.! Aquestes!classes! serien! també!utilitzades! per! serialitzarjles!en!format! json!utilitzant! alguna!de!les!llibreries!existents.!Veient!la!implementació!d'altres!APIs!i!en!general,! coneixent!el!domini!de!les!bases!de!dades!de!grafs!i!havent!treballat!anteriorment!en! la!creació!de!clients!REST,!s'arriba!a!la!conclusió!que!els!dos!elements!inicials!que!cal! definir!en!forma!de!classes!son!els!nodes!i!les!relacions.! Els!nodes!són!els!elements!bàsics!de!les!bases!de!dades!i!s'identifiquen!amb!un!número! únic!(identificador!o!clau!primària)!i!una!URL!associada!al!recurs!corresponent!en!la! BDOG,!a!més,!els!nodes!tenen!un!conjunt!de!propietats!que!es!poden!representar!com! una!array!de!tuples!del!tipus!(clau,!valor)!i!una!array!de!relacions!(entrant!i!eixint)!que! representen! les! connexions! amb! altres! nodes.! Per! altre! costat! els! nodes! tenen! una! sèrie! d'operacions! naturals! que! podem! representar! mitjançant! nodes! com! ara! la! modificació! (creació/alteració/eliminació/obtenció)! d'una! propietat! o! les! seues! relacions.! D’altra!banda,!les!relacions!denoten!vincles!entre!nodes!i!venen!identificades!al!mateix! temps! per! una! URL! i! un! número! únic.! Les! relacions! a! més! tenen! un! tipus! obligatòriament!i!un!node!inicial!i!final,!també!caldria!denotar!si!es!tracta!d'una!relació! unidireccional! o! bidireccional! (boolea).! Com! també! hem! definit! en! els! nodes,! les! relacions!poden!tindre!propietats!que!es!vorien!representades!pel!mateix!vector!de! tuples! i! un! conjunt! d'operacions! naturals! relacionades! amb! les! seues! propietats,! el! tipus! o! els! nodes! inicials! que! podríem! modelar! com! a! mètodes! públics.! A! banda! d'aquests! dos! elements! fonamentals,! es! podria! considerar! la! necessitat! d'altres! abstraccions! referents! a! les! propietats! o! als! índex,! però! es! poden! anar! definint! posteriorment!seguint!l'esquema!que!es!va!crear!en!funció!de!les!necessitats!futures.!! Després! de! codificar! les! classes! anteriors,! caldria! implementar! els! seus! mètodes! utilitzant!d’una!banda,!el!nucli!de!comunicació!HTTP!ja!creat,!creant!les!URLs!en!funció! de!l'objecte!i!l'operació!a!realitzar!i!d’altra!banda!caldria!utilitzar!alguna!de!les!llibreries! de!json!de!la!plataforma!.NET!com!ara!JSON.NET,!JSON!to!.NET,!fastJSON!o!JSONFx!per! tal!de!serialitzar!els!objectes!C#!en!text!en!format!vàlid!per!a!poder!enllaçar!en!la!crida! HTTP.!! A! més! de! tota! aquesta! feina! per! tal! de! crear! aquest! mecanisme! elemental,! cal! considerar!que!cada!crida/operació!que!ens!permet!utilitzar!el!servici!REST!de!Neo4j! utilitza!elements!molt!diferents!i!per!tant!cal!fer!modificacions!sobre!el!model!inicial.!A! més,!posteriorment!s'ha!de!crear!una!eina!de!deserialització!que!permeta!utilitzar!les! respostes! de! la! base! de! dades! i! per! altre! costat! cal! definir,! dissenyar! i! crear! un! mecanisme! independent! que! s'encarregue! de! l'ús! dels! traversals( necessari! per! a! l'anàlisi!d'impacte.! En!definir!la!quantitat!de!treball!a!realitzar!per!tal!de!crear!aquesta!API,!es!va!vore!que! la! quantitat! d'hores! necessàries! per! a! la! seua! implementació! superava! de! llarg! la! quantitat!d'hores!disponibles.!Cal!considerar!que!aquest!projecte!s'ha!implementat!en! un! conveni! empresajuniversitat! i! que! el! temps! dedicat! a! l'empresa! no! s'inverteix! completament!en!l'elaboració!del!nostre!projecte,!si!no!que!la!major!part!del!temps,!es! dedica!a!la!modificació!del!software!de!suport!a!la!metodologia!TUNEjUP!que!utilitza!la! companyia.!Tenint!en!compte!esta!situació,!es!va!decidir!buscar!alternatives!a!la!nostra! llibreria!dins!de!la!comunitat!de!desenvolupadors!de!Neo4j.! Encara!que!la!llibreria!finalment!no!es!va!acabar!d'implementar,!els!esforços!i!temps! emprat! no! s'han! de! considerar! perduts,! ja! que! els! coneixements! apressos! en! esta! experiència!van!servir!com!a!aprenentatge!en!l'ús!de!la!base!de!dades!i!en!la!resolució! de!problemes!futurs!relacionats.! 4.3.2 Alternatives&a&la&API&iniciada& Una!vegada!decidit!que!havíem!d'utilitzar!fonts!externes!per!comunicarjse!amb!la!base! de!dades,!vàrem!contactar!amb!la!comunitat!mitjançant!la!llista!de!correus!de!Neo4j! preguntant!l'existència!de!projectes!oberts!de!clients!REST!en!.NET.!La!contestació!per! part!dels!desenvolupadors!no!es!va!fer!esperar!(la!llista!de!correus!és!molt!activa,!amb! una!mitja!de!20!correus!diaris)!i!ens!encaminaren!a!tres!llocs!webs!amb!projectes!a! considerar.! El! primer! d'ells! [14]! tractava! més! d'un! conjunt! de! consells! respecte! al! correcte! desenvolupament!del!nostre!propi!client,!que!d'un!client!en!si.!En!aquest!s’hi!tractaven! temes! lligats! amb! l'arquitectura! de! la! nostra! llibreria! i! una! xicoteta! comparativa! respecte!a!les!llibreries!externes!a!utilitzar!per!tal!de!treballar!amb!el!format!JSON.!! Aquesta!alternativa!oferia!un!arxiu!comprimit!amb!un!seguit!de!fitxers!de!codi!en!el! llenguatge!de!programació!C#!amb!un!xicotet!exemple!d'implementació!d'un!client.!El! principal!problema!d'aquesta!opció!es!troba!precisament!en!la!seua!codificació,!ja!que! es!tracta!d'un!exemple!molt!puntual,!poc!intuïtiu!i!còmode!per!treballar!com!a!API!per! utilitzar! des! de! la! capa! d'accés! a! dades.! A! més,! per! tal! de! poder! utilitzarjlo! en! un! projecte!real!cal!estendre!la!seua!funcionalitat!amb!un!cost!temporal!tant!alt!com!el! que!ens!va!fer!abandonar!la!idea!de!crear!el!nostre!propi!client.! La!següent!alternativa![16]!!tracta!d'un!projecte!software!de!codi!obert!allotjat!en!els! servidors!de!la!plataforma!codeplex,!es!molt!similar!a!l'anterior!precisament!perquè! esta!basat!en!els!consells!i!el!codi!inicial!que!l'article!anterior!oferia.!Tot!i!ser!en!un! principi! l’alternativa! més! recomanada,! el! seu! desenvolupament! es! va! vore! aturat! abruptament! sense! cap! publicació! i! deixant! la! llibreria! sense! funcionalitats! tant! bàsiques!com!la!modificació!i!obtenció!de!propietats!per!als!nodes!i!les!relacions.! L'última!alternativa!a!analitzar[15]!es!tracta!d'un!projecte!acadèmic!suec!que,!com!la! resta,!també!havia!estat!recentment!abandonat!quan!vàrem!decidir!treballar!amb!la! base!de!dades!Neo4j.!Aquesta!llibreria!tot!i!tampoc!estar!completament!acabada,!si! que! contenia! una! implementació! de! totes! les! crides! bàsiques! relacionades! amb! la! creació,!modificació,!eliminació!i!obtenció!de!nodes,!relacions!i!propietats,!fet!que!va! decantar!la!nostra!decisió!envers!l'ús!d'esta!opció.! Una!vegada!decidit!que!començaríem!amb!la!utilització!d'aquesta!API,!es!varen!fer!una! sèrie! de! proves! simples! que! ens! permeteren! comprovar! si! la! implementació! funcionava!correctament!i!per!tant!era!apta!per!a!la!utilització!en!el!nostre!mòdul!per!a! l'anàlisi!d'impacte.!En!aquests!tests!mitjançant!les!crides!definides,!es!va!poder!crear! satisfactòriament! una! estructura! simple! de! nodes! i! relacions! amb! propietats,! i! juntament!amb!la!senzillesa!i!usabilitat!de!la!seua!interfície!de!comunicació,!va!reforçar! la!nostra!decisió!i!la!dels!responsables!de!l'empresa.! Amb!el!projecte!amb!llum!verda!i!amb!la!definició!del!que!seria!la!primera!versió!del! model!de!dades,!vàrem!crear!un!prototip!de!base!de!dades!seguint!el!nostre!esquema,! i! vàrem! intentar! carregarjla! amb! informació! que! emulara! el! que! nosaltres! considerarem!un!comportament!natural!del!mòdul!d'anàlisi,!però!en!aquest!punt!és!on! començaren!els!problemes.!En!intentar!introduir!una!quantitat!superior!a!500!o!600! nodes!prototips,!el!flux!d'informació!quedava!completament!aturat!i!la!informació!no! s'emmagatzemava! correctament.! Els! errors! encara! eren! més! greus! ja! que,! en! estar! treballant! amb! software! relativament! nou,! cal! considerar! que! Neo4j! acabava! de! publicar!la!seua!primera!versió!release,!i!sense!existir!documentació!associada!al!seu! ús!real!en!projectes,!començarem!a!dubtar!de!l'estabilitat!de!la!pròpia!BDOG.! Després!de!moltes!proves!per!trobar!l'origen!del!problema,!es!va!arribar!a!la!conclusió! que!l'error!estava!en!el!codi!utilitzat,!i!descartàrem!així!el!possible!dèficit!de!rendiment! de!la!base!de!dades.!Finalment!trobàrem!l'origen!del!bug!en!el!nucli!de!comunicació!de! l'API.!Com!que!la!definició!i!arquitectura!del!nucli!era!molt!semblant!a!la!que!nosaltres! havíem! definit! per! a! la! nostra! versió! de! la! llibreria,! vàrem! poder! utilitzar! els! coneixements!i!el!codi!previ!per!solucionar!l'error.!A!partir!d'aquest!moment!no!hem! tingut!més!problemes!de!rendiment!respecte!a!la!base!de!dades.! A!banda!del!problema!esmentat,!s'han!anat!detectant!altres!errors!de!menor!mesura! en!l'API!utilitzada,!referents!a!crides!concretes!de!la!seua!interfície.!Per!exemple,!entre! les!opcions!d'obtenció!de!les!relacions!d'un!node,!hi!ha!una!crida!que!permet!passar! com! a! paràmetre! un! enumerat! amb! el! conjunt! de! tipus! de! relacions! que! volem! considerar!per!al!filtrat!d'aquesta!consulta,!però!desafortunadament!aquesta!funció!no! ens!torna!el!resultat!esperat.! En! no! haver! utilitzat! totes! les! funcions! definides! per! la! llibreria! i! en! no! existir! una! bateria! de! proves! completa! i! correcta,! ja! que! l'existent! consisteix! en! un! conjunt! de! proves!unitàries!molt!bàsiques!que!no!detectaven!ni!tan!sols!el!nostre!error!inicial!de! rendiment,!es!molt!complicat!saber!exactament!l'estat!i!la!usabilitat!actual!de!l'API,!i! s’han!trobat!errors!com!aquest!en!anar!utilitzant!les!possibilitats!que!ens!ofereix.!Tot!i! així! hem! decidit! seguir! utilitzant! aquesta! interfície! que! ens! aporta! uns! altres! valor! afegits,!i!en!cas!de!trobarjnos!en!altres!errors!relacionats!amb!alguna!crida!concreta,! els!anirem!solucionant!en!funció!de!les!necessitats!i!el!temps!de!què!disposem.! 4.3.3 &Característiques&de&la&llibreria&utilitzada& Les! principals! característiques! que! ens! han! fet! decidirjnos! finalment! per! aquesta! llibreria!de!comunicació!estan!basades!en!la!senzillesa!i!claredat!de!la!seua!interfície! pública.!Aquesta!segueix!una!estructura!general!similar!a!la!que!ens!vàrem!plantejar!en! l'etapa!de!creació!de!la!nostra!pròpia!API,!basant!totes!les!crides!en!la!figura!del!node!i! la! relació.! Sobre! aquestes! es! poden! executar! comandes! de! modificació! amb! ells! mateixos!o!sobre!propietats!relacionades,!açò!permet!que!els!elements!de!d'intercanvi! d'informació!siguen!molt!intuïtius!des!d'un!punt!de!vista!orientat!a!objectes!com!el!que! es!treballa!en!projectes!.NET,!i!més!concretament!C#.! Un!altre!aspecte!a!considerar!són!els!missatges!de!tornada!de!la!base!de!dades!i!la! facilitat!amb!la!que!podem!explotar!la!informació!consultada.!La!llibreria!utilitzada!ens! torna!d'una!manera!simple,!mitjançant!una!variable!booleana,!el!resultat!satisfactori!o! advers! de! l'operació! realitzada! en! el! cas! de! tractarjse! d'una! inserció,! modificació! o! eliminació.!D’altra!banda,!en!el!cas!de!tractarjse!d'una!consulta,!aquesta!API!de!Neo4j! ens! aporta! un! mètode! de! consulta! dels! resultats! utilitzant! el! LanguagejIntegrated! Query!(LINQ)!de!Microsoft.! LINQ! segons! la! definició! que! podem! trobar! en! la! web! del! projecte,! és! un! conjunt! d'extensions!per!al!Framework!.NET!que!engloba!consultes!integrades!en!el!llenguatge,! conjunts!i!operacions!de!transformació.!És!una!extensió!de!C#!i!Visual!Basic!amb!una! sintaxis! nativa! per! a! consultes,! i! aporta! llibreries! de! classes! per! aprofitar! els! seus! avantatges.! En! definitiva,! la! integració! d'aquest! framework! amb! l'API! utilitzada! de! Neo4j! mitjançant!la!llibreria!JSON.net,!ens!facilita!la!manipulació!de!les!dades!retornades!per! la!base!de!dades!i!aporta!un!conjunt!de!ferramentes!addicionals!que!ens!permeten! utilitzar! nous! filtres! o! sistemes! d'ordenació! des! de! la! part! del! client,! açò! es! especialment!útil!en!relació!a!operacions!no!natives!des!d'un!punt!de!vista!orientat!a! grafs!que!tendeixen!a!ser!molt!costoses,!però!que!son!molt!reduïts!seguint!els!patrons! de!LINQ.!Per!posar!un!exemple!concret,!la!cerca!exacta!per!text!no!es!una!operació! nativa! de! Neo4j! que! tinga! associada! una! crida! en! http.! Tot! i! ser! possible! la! seua! definició! mitjançant! la! codificació! de! filtres! en! Javascript!dins!el!JSON! associat! a! un! traversal,!pot!ser!més!simple!i!òptim!en!determinades!situacions!definir!amb!Neo4j!el! conjunt!de!dades!sobre!el!que!es!vol!aplicar!el!filtre!de!text!i!posteriorment!amb!la! clàusula! Where! de! LINQ! seleccionar! aquells! termes! que! acompleixen! els! criteris! definits.! Si! es! ben! cert! que! aquesta! llibreria! te! entre! els! seus! punt! forts! la! facilitat!d'ús!i!el! complet! conjunt! d'operacions! disponibles,! també! cal! remarcar! alguna! de! les! seues! deficiències,!com!ara!el!fet!que!les!crides!d’entravessament!o!traversals!no!funcionen! correctament!o!ho!facen!de!manera!molt!limitada,!tot!i!ser!una!de!les!ferramentes! claus!en!l'apartat!de!consultes!i!explotació!de!la!informació.! Per!tal!d'aportar!solucions!respecte!al!recorregut!del!graf,!en!les!primeres!versions!del! software!es!va!implementar!un!algorisme!iteratiu!molt!poc!eficient,!basat!en!la!crida! node.getRelations(...)! dels! nodes! implicats! en! l'anàlisi! d'impacte.! Posteriorment! s'ha! intentat!estendre!la!funcionalitat!de!l'API!internament!per!suportar!tot!allò!referent!a! les!crides!traversal,!però!la!manca!de!temps!i!la!rigidesa!de!l'estructura!de!la!llibreria! no!han!permés!moltes!vegades!durjho!a!terme.! Cal! destacar! que! en! començar! el! projecte! les! prioritats! dels! responsables! estaven! centrades! en! l'anàlisi! d'impacte! pròpiament! dit,! però! mentre! passava! el! temps,! el! criteri!s'ha!vist!modificat!fins!l'actualitat,!on!els!majors!esforços!estan!centrats!en!el! desenvolupament!del!gestor!de!termes!i!en!general!en!la!definició!i!l'ús!dels!elements! de!domini!per!part!de!tots!els!agents!de!la!companyia.!! Aquest!canvi!en!els!criteris!ha!vist!minvat!el!temps!dedicat!a!l'anàlisi!d'impacte!i!els! seus! criteris! i! per! tant,! per! tal! de! poder! dur! a! terme! les! consultes! utilitzant! els! traversals,!s'ha!decidit!utilitzar!únicament!el!nucli!de!l'API!per!a!la!seua!realització.!Per! tal!de!portarjlo!endavant!i!utilitzar!les!possibilitats!que!ens!aporta!l'arquitectura!de!la! llibreria,!s'ha!decidit!definir!la!URL!i!el!text!en!format!JSON!associat!a!la!crida!a!la!base! de! dades,! i! crear! manualment! la! petició! HTTP! que! s'enviarà! al! servidor! i! filtrar! posteriorment! el! resultat! retornat! amb! la! mateixa! llibreria! JSON! utilitzada! per! la! llibreria.! Per!últim!ens!agradaria!remarcar!que!la!importància!real!del!projecte!resideix!en!la! infraestructura!creada!i!la!seua!integració!amb!la!ferramenta!de!suport,!més!que!en!el! propi!algorisme!d'anàlisi!d'impacte!que!tot!i!ser!l'objectiu!final!del!nostre!projecte,!es! pot!redefinir!i!evolucionar!en!el!temps!modificant!criteris!com!ara!nivell!de!profunditat! d'impacte!o!camp!de!l'impacte!en!la!definició!de!les!proves!d'acceptació,!simplement! canviant!la!consulta!o!traversal(associat.! ! 5 Mòdul&de&l'anàlisi&d'impacte& Tot! allò! desenvolupat! i! explicat! en! el! punt! anterior! defineix! la! infraestructura! del! nostre! projecte! creada! per! tal! de! dur! a! terme! el! nostre! objectiu! principal:! l'anàlisi! d'impacte!dels!requisits.!! Fentjne!un!resum!general,!podem!dir!que!per!tal!de!reduir!costos!de!desenvolupament! i!manteniment,!volem!tindre!una!ferramenta!d'anàlisi!que!ens!permetrà,!en!les!etapes! inicials! dels! nostres! projectes,! tindre! informació! que! ens! facilitarà! la! pressa! de! decisions!i!el!disseny!enfront!de!canvis!o!de!millores!en!les!especificacions!del!nostre! producte.! La!metodologia!utilitzada!en!l'empresa,!amb!la!que!s'ha!treballat!per!implementar!el! mòdul,! defineix! aquesta! especificació! mitjançant! requisits! software! en! forma! de! proves!d'acceptació,!i!es!caracteritza!per!tindre’n!una!gestió!mitjançant!un!esquema!de! contenidors!(nodes)!jerarquitzats!seguint!una!estructura!de!graf!acíclic!dirigit,!d’altra! banda! les! proves! d'acceptació! segueixen! un! flux! basat! en! estats! (nou,! modificació,! regressió,!eliminació!o!actual)!que!defineix!els!seu!cicle!de!vida.!El!nostre!nou!mòdul! d’anàlisi! d’impacte! ve! integrat! dins! aquest! context! de! definició! dels! requisits! i! esta! especialment!dissenyat!pensant!en!el!sistema!de!treball!de!l'empresa.! Com! hem! pogut! observar! en! el! punt! anterior,! s'han! creat! diversos! elements! per! sostindre! el! nostre! mòdul! d’anàlisi,! però! per! tal! de! visualitzar! d'una! manera! simple! com!interactuen!entre!ells!per!dur!a!terme!el!nostre!objectiu!prioritari,!ens!basarem!en! un!parell!d'exemples!que!ens!conduiran!per!l'activitat!diària!dels!agents!del!grup!de! desenvolupament!i!mostren!com!interactuar!amb!el!nou!mòdul!d'anàlisi!d'impacte.! Així!mateix,!definirem!els!criteris!i!el!comportament!actual!de!l'anàlisi,!puntualitzant! possibles! alternatives! al! model! i! les! seues! conseqüències.! A! més,! s’explicaran! els! actuals!nivells!d'anàlisi!d'impacte!i!els!elements!involucrats!en!el!procés.! 5.1 Visualització&de&l'AI& Per!tal!de!mostrar!l'ús!del!nostre!mòdul!de!l'anàlisi!d'impacte,!utilitzarem!com!a!base! el! domini! d'exemple! que! vàrem! definir! en! el! punt! 2.3.1! d'aquest! treball.! Hi! vàrem! situar!un!domini!relacionat!amb!elements!bàsics!d'una!xarxa!social,!com!poden!ser:!un! compte( d'usuari,( una! petició( d'amistat,( o! el! propi! concepte! d'amistat.! Per! tal! de! recordar!la!seua!definició!tornem!a!mostrar!la!imatge!ja!que!ens!acompanyarà!per!tota! la!definició!dels!exemples!utilitzats.! ! FIGURA 3: Model del domini Comencem! posantjnos! en! la! pell! d'un! dels! analistes! de! la! xarxa! social! que! estem! desenvolupant.!El!client!en!un!intent!per!millorar!la!seguretat!de!la!tota!la!informació! relacionada! amb! els! usuaris,! ha! decidit! enfortir! els! criteris! de! validesa! de! les! claus! d'accés.! Després! d'una! reunió! entre! els! dos! agents,! s'ha! decidit! que! la! contrasenya! d'inici! de! sessió! podrà! ser! un! conjunt! alfanumèric! amb! una! longitud! mínima! de! 12! caràcters.! Aquesta! modificació! s'ha! d'implementar! per! exemple! en! la! creació! d'un! usuari!dins!la!xarxa!social.! Abans! de! començar! a! definir! la! prova! o! proves! d'accés! relacionades! amb! el! nou! requisit!hem!d'anar!a!la!seua!actual!estructura!de!requisits!per!seleccionar!els!nodes! que!es!voran!afectats!amb!la!nostra!modificació!i!vore!si!actualment!ja!existeix!alguna! prova!d'acceptació!relacionada!amb!allò! que! volem!definir!o!si,!per!contra,!hem!de! definir!una!proposta!nova.!! funcionalitat,!ja!que!no!tenim!cap!manera!simple!de!definir!que!l’element!és!opcional! o! quines! son! les! seues! característiques,! ni! tampoc! podrem! crear! relacions! amb! el! concepte!de!text!.!Una!solució!millor!per!tant!es!basaria!en!definir!el!text!de!la!petició! com!un!atribut!associat!al!propi!terme!Petició,!amb!una!sèrie!de!propietats!associades! al! text! com! ara! la! seua! dimensió! màxima,! definint! així! les! seues! característiques! i! donant!opció!a!crear!relacions!amb!esta!nova!entitat.! Des!del!punt!de!vista!de!l'analista,!en!rebre!la!descripció!del!nou!requisit!per!part!del! client,!començaria!pensant!sobre!quin!node!o!nodes!de!l'arbre!de!requisits!es!vorien! centrats! aquests! canvis,! que! en! este! cas! concret! es! tractaria! del! node! "Petició! d'amistat".!En!cas!de!no!existir!es!crearia!i!es!continuaria!amb!la!creació!d'una!prova! nova!que!definira!el!funcionament!d'aquesta!opció.!! Durant!el!procés!de!definició!de!la!nova!descripció,!en!voler!relacionar!la!prova!amb!el! text! de! la! petició,! se! n’adonaríem! de! la! inexistència! d'aquest! element! gràcies! a! la! ferramenta!que!explicarem!a!continuació!i!per!tant!mitjançant!el!gestor!de!termes!que! ja! hem! explicat! anteriorment! definiríem! el! nou! concepte,! com! podem! vore! en! la! imatge!inferior.!Una!vegada!definit!començaríem!a!escriure!les!Condicions,!els!Passos!i! els!Resultats!que!descriurien!la!nova!funcionalitat!al!mateix!temps!que!crearíem!les! relacions!de!traçabilitat!amb!les!entitats!corresponents.! ! Figura 19: Gestor de termes mostrant les característiques de l'atribut 'Text’ associat al terme 'Petició' Per! tal! de! crear! aquestes! relacions! de! traçabilitat! s'ha! optat! per! desenvolupar! una! utilitat!pròpia!que,!inclosa!en!el!control!d'usuari!encarregat!de!la!definició!textual!de!la! prova! d'acceptació,! actue! com! una! funció! d'autocompletar! o! com! s'anomena! normalment! IntelliSense,( que! es! tracta! d'una! implementació! que! s'utilitza! en! programes!de!desenvolupament!integrat!com!Eclipse!o!Visual!Studio.!Aquesta!elecció! ve!fonamentada!entre!altres!raons,!per!la!seua!gran!senzillesa!i!usabilitat!així!com!pel! fet! que! tots! els! desenvolupadors! del! grup! de! treball! siguen! conscients! del! seu! ús! gràcies!a!la!ferramenta!de!Microsoft!esmentada!anteriorment.! Una!vegada!elegit!el!sistema!amb!el!qual!els!usuaris!podran!definir!les!relacions!de! traçabilitat!s'ha!de!remarcar!quina!serà!l'organització!que!es!s’utilitzarà!per!a!la!seua! explotació.!En!el!nostre!cas!s'ha!optat!per!una!estructura!per!nivells,!on!en!el!primer!es! mostraran!tots!les!entitats!de!domini!definides!en!el!gestor!de!termes!i!on!cada!un!dels! seus!subnivells!associats!oferiran!totes!aquelles!entitats!i!atributs!associats/relacionats! amb! el! terme! del! primer! nivell.! En! futures! modificacions! del! mòdul,! si! finalment! s'afegeixen!els!Nodes!i!les!PAs!com!a!elements!per!a!l'anàlisi,!s’influirà!un!nou!nivell! inicial!que!filtrarà!els!elements!de!primer!nivell!en!seccions,!per!tal!d'ajudar!a!la!cerca! d'allò!que!volem!relacionar.! ! FIGURA 20: Exemple de creació d'una relació de traçabilitat mitjançant intelisense En!la!imatge!superior!podem!vore!la!utilitat!explicada,!aplicada!a!l'exemple!que!hem! estat!seguint.! Després!de!definir! relacions!amb! els!termes! Compte( i( Petició,! l'usuari! esta! creant! una! nou! vincle! amb! l'atribut! Text! que! vindrà! representat! per! la! cadena! "Petició.Text".!! Finalment!caldria!remarcar!que!a!causa!de!l'arquitectura!utilitzada,!les!relacions!per!a! l'anàlisi! que! es! fan! sobre! un! element! poden! tindre! diferents! camins! d'accés,! per! exemple! el! concepte! Text! que! hem! estat! utilitzant! anteriorment! podria! tindre! referències!mitjançant!les!cadenes!"Petició.Text",!però!també!"Compte.Petició.Text"!ja! que! hi! ha! una! relació! des! de! l'entitat! Compte! fina! l'entitat! Petició.! Actualment! no! s’està!fent!cap!tipus!de!distinció!entre!ambdues!terminologies!en!l'anàlisi!d'impacte,!ja! que!en!la!base!de!dades!la!relació!de!traçabilitat!es!fa!directament!entre!la!PA!i!l´últim! node! representat! en! la! cadena! i! no! es! té! en! compte! la! ruta! d'accés.! En! posteriors! versions!s'espera!aquesta!nova!funcionalitat!emmagatzemant!el!camí!com!a!propietat! de!la!relació!per!poder!filtrar!els!resultats!amb!un!nou!criteri.! 5.2 Criteris&d'anàlisi&actuals&i&alternatives& En! els! exemple! anteriors! hem! vist! com,! davant! els! canvis! en! una! PA! i! tenint! una! estructura!ben!definida!de!relacions!de!traçabilitat!que!afecten!aquesta!prova,!podem! trobar! amb! molta! facilitat! uns! altres! elements! que! es! voran! afectats! per! aquesta! modificació.!Per!tal!de!fer!possible!aquesta!anàlisi!doncs,!és!completament!necessari! que!el!nostre!sistema!o!la!nostra!jerarquia!de!requisits!estiga!ben!informada,!és!a!dir,! amb!un!ampli!conjunt!de!relacions!entre!proves!d'acceptació!i!entitats!del!model!de! domini.!! Aquesta!és!una!tasca!àrdua!i!complexa!que!no!es!pot!implementar!en!un!temps!definit,! però! que! amb! la! seua! integració! i! el! seu! ús! dins! de! la! ferramenta! de! suport! anirà! millorant!gradualment!la!riquesa!de!l'anàlisi!d'impacte.!! Amb!un!sistema!complex!interrelacionat,!es!pot!donar!la!situació!que!amb!els!nostres! criteris!bàsics!d'anàlisi!els!resultats!esperats!no!siguen!satisfactoris.!Açò!es!pot!deure!a! un!elevat!nombre!de!connexions!entre!PAs,!que!ens!aporte!una!quantitat!tan!gran!de! relacions!d'impacte!que!no!ens!siga!realment!útil.! Hem! definit! precisament! una! primera! implementació! simple,! ja! que! els! algorismes! utilitzats!per!a!l'anàlisi,!han!de!ser!entitats!flexibles!que!evolucionen!amb!el!temps!en! funció! del! conjunt! d'informació! emmagatzemada! o! els! criteris! establerts! pels! responsables!de!la!companyia.!A!més,!en!la!fase!actual!en!la!que!es!troba!el!projecte! s'ha!decidit!donar!importància!a!la!part!del!mòdul!encarregada!de!la!inserció!de!noves! relacions!de!traçabilitat!i!integració!en!el!software!TUNEjUP.! Seguint!esta!idea!bàsica!i!simple!s'ha!definit!per!tant!un!algoritme!d'explotació!basat! en!aquests!criteris!fonamentals:!! ! j!Per!a!l'anàlisi!sobre!les!relacions!d'una!PA,!es!tornaran!totes!aquelles!proves! relacionades! directament! amb! els! termes! inclosos! en! la! definició! de! la! PA! analitzada,! independentment! del! camp! on! s'hagen! definit! dins! de! la! descripció.! ! j!Per!a!l'anàlisi!sobre!les!relacions!dels!Nodes,!es!tornarà!el!conjunt!de!nodes! que!continguen!les!proves!relacionades!amb!les!PAs!contingudes!en!el!node! analitzat! seguint! els! mateixos! criteris! que! en! l'anàlisi! d'una! única! PA,! i! remarcant!la!prova!origen!(del!node!analitzat)!i!destí!(nodes!afectats)!de!cada! una!d'elles.! Aquesta! primera! versió! pot! ser! d'utilitat! en! un! sistema! inicial! on! la! quantitat! de! interconnexions!no!siga!molt!elevada,!però!amb!sistemes!més!rics!aquests!criteris!ens! aportaran!un!nombre!tan!gran!de!relacions!que!no!es!podrà!traure!profit!real!de!la! informació!i!per!tant!seria!contraproduent.!Per!tant,!en!un!sistema!com!el!nostre!una! part! important! és! l'evolució! dels! algorismes! d'explotació,! que! s'han! d'anar! desenvolupant!i!madurant!al!mateix!temps!que!va!creixent!la!base!de!dades!orientada! a!grafs.!Es!per!açò!que!la!flexibilitat!del!nostre!model!i!al!mateix!temps!l'estabilitat!de! la!infraestructura!creada!ens!faciliten!aquesta!tasca,!es!precisament!en!aquest!punt!on! resideix!la!importància!del!nostre!mòdul!d'anàlisi!d'impacte.! Dins! d'aquesta! possible! evolució! algorítmica! es! poden! tindre! en! compte! diversos! criteris!que,!en!major!o!menor!mesura,!ja!s'han!anat!comentat!en!aquest!treball.!Per! un!costat,!una!característica!important!a!tindre!en!compte!és!el!nivell!de!profunditat! en!l'explotació!de!les!relacions.!Actualment!podríem!dir!que!utilitzem!un!únic!nivell!de! profunditat! marcat! per! les! relacions! directes! entre! PAs! i! termes,! però! també! es! podrien!definir!altres!criteris!amb!més!profunditat!on!termes!molt!relacionats!entre!si! donarien!com!a!resultat!relacions!indirectes!de!segon!nivell.! D’altra!banda,!un!possible!filtrat!a!tindre!en!consideració!podria!vindre!caracteritzat! per!la!secció!on!s'ha!definit!la!relació!de!traçabilitat!dins!de!la!descripció!de!la!prova! d'acceptació.!Encara!que!en!un!primer!moment!siga!estrany!fer!aquesta!distinció,!pot! ser!una!característica!interesant!per!garbellar!la!gran!quantitat!de!resultats!obtinguts.! A!més,!s'ha!de!tindre!en!compte!que!no!es!igual!una!relació!basada!en!els!passos!de!la! prova!(gran!importància)!que!en!algun!altre!camp,!com!per!exemple!les!observacions.! A!banda!com!havíem!comentat!anteriorment!també!podem!utilitzar!la!ruta!d'accés!al! terme,!dins!el!text!de!la!descripció,!per!decidir!la!importància!de!les!relacions.!Aquesta! afirmació!també!ens!obre!la!porta!a!definir!la!possibilitat!de!mostrar!la!informació!per! nivells! de! prioritat! en! funció! dels! criteris! ja! esmentats,! de! tota! manera! aquestes! implementacions!s'han!d'anar!estudiant!i!discutint!amb!els!responsables!de!l'empresa! dins!del!context!.! Seguint!esta! última! idea! de! les! prioritats,! es! poden! anar! definint! internament! en! el! gestor!de!terme!associant!nivells!d'importància!a!les!entitats,!ja!que!no!tots!els!termes! utilitzats!en!la!creació!de!relacions!poden!tindre!una!diferent!preponderància!i!fins!i!tot! no!ser!interesant!des!del!punt!de!vista!de!l'explotació.!Finalment!destacar!que!com! aquestes!idees,!en!podem!definir!moltes!altres!que!basen!la!seua!implementació!en!la! modificació! parcial! de! l'estructura! de! les! relacions,! com! ara! afegir! propietats! a! les! relacions! més! destacades.! Encara! que! aquestes! mesures! poden! tindre! un! cost! més! elevat! a! nivell! d'implementació,! també! poden! aportarjnos! una! gran! complexitat! en! l'anàlisi.!Totes!aquestes!possibles!modificacions!s’aniran!implementant!amb!el!temps! per!vore!el!seu!impacte!real!en!un!sistema!complex!com!el!que!esperem.! ! 6 Conclusions&i&treball&futur& En!l'actualitat!les!empreses!de!desenvolupament!software!produeixen!projectes!!en!un! ambient!o!ecosistema!inhòspit,!on!els!clients!exigeixen!cada!vegada!aplicacions!més! completes,!estables!i!que!els!represente!un!menor!cost,!tant!temporal!com!monetari.! Aquesta!situació!obliga!a!emprar!ferramentes!avançades!de!codificació!i!suport!i!noves! metodologies!que!permeten!reduir!les!despeses!de!desenvolupament!i!manteniment! de!les!nostres!creacions.! Dins! d'aquesta! política! la! companyia,! amb! la! que! hem! treballat! per! implementar! aquest! projecte,! va! decidir,! anys! enrere,! treballar! conjuntament! amb! la! Universitat! Politècnica! de! València! per! tal! de! crear! una! metodologia! i! ferramenta! àgil! que! els! ajudarà! en! el! seu! treball! diari.! D'aquesta! unió! es! va! concebre! el! que! coneguem! actualment! com! TUNEjUP.! Després! de! més! de! huit! anys! treballant! amb! aquesta! metodologia!i!gràcies!als!bons!resultats!que!ha!suposat!la!seua!implementació!en!la! manera! de! treballar! dels! seus! agents,! ha! portat! a! ambdues! institucions! a!seguir! apostant!per!la!seua!evolució.! Des! de! les! primeres! versions! s'han! anat! afegint! diversos! mòduls,! entre! els! que! cal! destacar!el!gestor!de!requisits!que!ha!passat!a!ser!una!part!essencial!del!flux!de!treball! dels!agents!i!és,!sense!cap!mena!de!dubte,!la!secció!on!més!esforços!s'han!destinat! durant!els!últims!mesos.!En!aquest!context!podem!englobar!el!nostre!mòdul!d'anàlisi! d'impacte!dels!requisits,!que!basa!la!seua!arquitectura!en!l'actual!estructura!jeràrquica! dels! requisits! per! tal! d'aportar! una! nova! ferramenta! avançada,! que! permetrà! als! desenvolupadors!dur!a!terme!les!seues!tasques!d'una!manera!més!informada.! Conèixer!les!conseqüències!que!les!possibles!millores!o!nous!requisits!tinguen!sobre!el! producte!actual!abans!d'implementarjles,!és!un!gran!avantatge!que!pot!marcar!una! diferència! en! les! fases! d'anàlisi,! implementació! i! testeig.! Així,! els! desenvolupadors! poden!centrar!d'una!manera!més!òptima!els!seus!esforços!en!les!àrees!del!software! que! es! vegen! realment! afectades! pels! canvis! proposats,! i! minimitzar! el! temps! que! normalment!s'empra!en!fer!una! cerca! manual!i!el!que!és! més! important,!reduir!els! costos!associats!a!les!etapes!de!manteniment.! El! nostre! treball! s'ha! desenvolupat! incrementalment! seguint! les! necessitats! i! les! indicacions!directes!dels!responsables!de!l'empresa.!Cal!considerar!que!encara!que!el! nostre!mòdul!ja!siga!operatiu!i!estiga!en!funcionament,!el!conjunt!del!projecte!encara! es!troba!en!fases!inicials!i!necessitarà!de!moltes!iteracions!i!una!forta!utilització!per!tal! de!comptar!realment!amb!una!eina!madura.! El! projecte! s'ha! desenvolupat! dins! un! marc! de! col·∙laboració! empresajuniversitat! on! s'han!invertit,!sense!comptar!les!hores!emprades!en!altres!projectes!relacionats!amb!la! ferramenta! de! suport! de! TUNEjUP,! una! mitja! de! huit! hores! setmanals! per! la! seua! realització.!Es!tracta!d'un!temps!molt!limitat!per!dur!a!terme!el!global!del!projecte,!si! tenim!en!compte!que!moltes!d'aquestes!hores!es!varen!utilitzar!per!fer!un!estudi!previ! de!les!diferents!alternatives!i,!una!vegada!feta!l'elecció,!per!posar!a!punt!la!base!de! dades! orientada! a! grafs! que! es! trobava! encara! en! fases! inicials.! Així! i! tot! s'ha! aconseguit! implementar! una! primera! versió! del! mòdul! completament! funcional! que! anirà!evolucionant!a!mesura!que!augmentarà!el!seu!ús!i!les!necessitats!específiques! dels!usuaris.! Per!tal!d'evitar!problemes!i!situacions!no!desitjades!a!causa!de!la!integració!de!la!nova! ferramenta! en! la! metodologia! de! treball! diari! dels! agents! de! la! companyia,! es! va! decidir! aplicar! una! integració! gradual! dins! l'empresa.! Seguint! aquesta! idea,! es! va! involucrar! inicialment! al! departament! d'I+D+i! per! tal! d'analitzar! el! funcionament! actual,!aportar!millores!i!aconseguir,!en!definitiva,!una!ferramenta!madura!que!evitara! pèrdues!de!eficiència!en!el!conjunt!de!la!plantilla!pels!possibles!errors.!Durant!aquest! últim! any! hem! estat! treballant! conjuntament! amb! aquest! departament! a! través! de! reunions! periòdiques! de! seguiment,! on! es! discutien! aspectes! molt! diversos! com! la! usabilitat!d'alguns!elements!gràfics,!l'anàlisi!d'allò!que!ja!estava!en!funcionament!i!el! que!és!més!important,!la!planificació!de!les!accions!futures.!Després!d'aquesta!bona! experiència! col·∙laborativa,! continuarem! treballant! conjuntament! per! millorar! la! ferramenta!abans!d'obrirjho!a!la!resta!de!departaments.! Una!de!les!qüestions!a!tindre!en!compte!respecte!al!projecte!desenvolupat,!és!que!no! es!pot!comptabilitzar!de!cap!manera!simple!i!acurada!la!millora!real!que!ens!aporta.! L'efectivitat!del!nostre!mòdul!es!podrà!començar!a!notar!a!mitjà!i!llarg!termini,!i!tot!i! així,!en! tractarjse! d'una! ferramenta! d'informació! i! ajuda! a! la! pressa! de! decisions,! solament!podem!utilitzar!estadístiques!relacionades!amb!les!conseqüències!esperades! del! nostre! projecte! com! ara! l'increment! o! la! disminució! en! el! nombre! d'errors! relacionats! amb! una! versió! o! en! l'eficiència! temporal! en! la! implementació! de! les! unitats!de!treball.!De!tota!manera,!qualsevol!estudi!que!férem!relacionat!amb!aquests! elements,!ens!aportaria!únicament!una!lleugera!idea!no!demostrable!de!l'impacte!de! la! ferramenta,! ja! que! hi! han! massa! factors! externs! interferint! en! aquest! tipus! de! característiques.! Tot!i!això,!com!que!es!tracta!d'una!eina!demanada!expressament!pels!propis!agents!de! la! companyia! i! desenvolupada! seguint! les! seues! necessitats,! els! usuaris! estan! molt! satisfets! amb! els! avanços.! A! més,! independentment! de! la! falta! de! resultats! computables,!s'espera!una!major!productivitat!per!part!de!tots!els!agents!de!l'empresa! ja! que! tant! els! analistes,! com! els! programadors,! com! els! testers! podran! detectar! situacions!i!modificacions!en!fases!inicials!de!desenvolupament!que!optimitzen!i!baixen! costos! en! fases! més! tardanes! con! la! de! manteniment.! A! més! a! més,! la! ferramenta! aporta!als!programadors!i!als!analistes!informació!relacionada!amb!les!àrees!del!codi! que!s'han!de!vore!modificades!agilitzant!el!procés!de!implementació.! Una!altre!avantatge!per!a! la! viabilitat! del! projecte!i!la!satisfacció!dels!responsables,! esta!relacionada!amb!el!baix!cost!que!suposa!aquest!canvi!per!a!la!companyia.!Com!ja! havíem! especificat! en! seccions! inicials! d'aquesta! memòria,! l'experiència! mostra! que! mantindre!les!relacions!de!traçabilitat!per!poder!dur!a!terme!una!anàlisi!d'impacte!útil,! moltes!vegades!suposen!un!cost!tan!elevat!que!la!informació!aportada!no!compensa! l'esforç!realitzat.!En!canvi,!amb!la!nostra!integració!amb!la!ferramenta!TUNEjUP,!hem! aconseguit!que!aquest!manteniment!es!faça!de!manera!natural!seguint!la!metodologia! diària!a!la!que!ja!estan!acostumats!els!agents,!sense!introduirjhi!grans!canvis.!A!més,!la! nostra!implementació!ha!aportat!noves!ferramentes!que!integren!altres!recursos!(com! el!registre!d'entitats!de!domini),!que!ja!s'estaven!utilitzant!dins!de!l'eina!de!gestió!de! les! unitats! de! treball,! simplificant! la! gestió,! optimitzant! el! temps! relacionat! amb! aquestes!tasques!i!permetent!la!seua!explotació.! A! nivell! personal,! he! de! destacar! que! un! dels! aspectes! que! més! m'ha! aportat! en! desenvolupar!i!implementar!aquest!projecte,!ha!estat!el!fet!de!conéixer!i!treballar!amb! Neo4j!i!en!general!amb!les!bases!de!dades!orientades!a!grafs.!Anteriorment!sempre! havia!utilitzat!emmagatzemament!de!dades!basat!en!sistemes!relacionals!representats! mitjançant!diagrames!entitatjrelació.!Però!aquesta!experiència!m'ha!permés!conèixer! uns!altres!paradigmes!dins!de!la!família!coneguda!col·∙loquialment!com!NOSQL,!i!m’ha! aportat!nous!punts!de!vista!i!coneixements!que!podré!utilitzar!en!futurs!projectes.! En!concret,!he!quedat!gratament!sorprès!amb!les!prestacions!que!Neo4j!ens!aporta.! Denota! un! sistema! molt! fàcil! d'utilitzar! i! modelar,! amb! gran! flexibilitat! i! que! per! a! determinades!situacions!pot!ser!més!òptim!que!els!sistemes!tradicionals,!tant!a!nivell! de!costos!computacionals!com!a!nivell!de!gestió!i!desenvolupament.!Actualment,!l'únic! punt!negatiu!comú!a!totes!les!bases!de!dades!de!grafs,!es!la!falta!de!maduresa!dels! seus! sistemes! de! gestió! i! ferramentes! de! suport.! No! obstant,! amb! l'increment! de! projectes!relacionats!amb! xarxes!socials!i! altres! dominis!on! la! representació!natural! esta!basada!en!grafs,!i!amb!el!creixement!de!la!comunitat!de!desenvolupadors!i!de!les! empreses!interessades!en!el!seu!creixement,!estic!segur!que!en!un!període!de!temps! relativament!curt!tindrem!ferramentes!de!gestió!que!puguen!competir!amb!les!d'altres! paradigmes!més!tradicionals.! Tornant!amb!el!mòdul!que!hem!desenvolupat!i!com!ja!s'ha!comentat!anteriorment!el! projecte! actual! es! únicament! la! primera! etapa! d'un! sistema! complex! que! ha! de! mantindre!una!evolució!constant.!En!seccions!prèvies!de!la!memòria!ja!s'han!comentat! quines!podrien!ser!algunes!de!les!tasques!a!realitzar!en!un!futur!i!aquestes!engloben! seccions!molt!diferents!del!mòdul!implementat.!! D’una!banda,!a!nivell!d'infraestructura,!s'ha!d'optimitzar!l'API!de!comunicació!amb!el! servidor! de! base! dades,! per! tal! d'utilitzar! les! noves! ferramentes! implementades! en! Neo4j:!índex,!auto!indexació,!llenguatges!de!tipus!query,!millores!en!el!traversal,!etc.!A! més,!cal!enriquir!el!model!de!dades!utilitzat!per!tal!d'aportar!més!criteris!de!selecció!i! incloure,!entre!altres,!els!nodes!i!les!PAs!com!a!termes!del!model!de!domini.! També!cal!destacar!modificacions!relacionades!amb!la!visualització!i!la!usabilitat,!on! cal!destacar!una!possible!representació!dels!resultats!en!un!format!més!net,!basat!en! grafs.! A! més,! s'ha! de! millorar! la! integració! de! l'actual! mòdul! per! tal! d'aportar! més! informació! als! programadors! i! als! testers! en! el! seu! treball! diari! i! la! sincronització,! mitjançant! la! creació! de! ferramentes,! que! permeten! tindre! actualitzades! les! descripcions!de!les!proves!en!relació!a!les!denominacions!dels!termes!de!domini.!A! banda!de!totes!aquestes!mesures!concretes,!s'han!de!continuar!modificant!els!criteris! utilitzats!en!l’anàlisi!d'impacte!per!tal!d'aconseguir!l'evolució!desitjada.! Finalment!destacar!que!aquesta!experiència!m'ha!motivat!per!continuar!treballant!en! temes!relacionats!amb!metodologies!i!eines!de!suport,!i!continuaré!amb!el!projecte! exposat!per!tal!d'aconseguir!una!ferramenta!madura!d'anàlisi!d'impacte!de!requisits! que!siga,!senzilla!d'utilitzar!i! mantindre,!i!que!al!mateix!temps!aporte!resultats!útils! amb!una!representació!clara!i!concisa.!Com!hem!pogut!vore,!el!camí!per!aconseguirjho! és!llarg,!però!l'experiència!acumulada!en!aquesta!fase!inicial!del!projecte!ens!ha!deixat! veure! les! majors! carències! del! sistema! actual! i! les! millores! que! poden! marcar! la! diferència.!