scieee AI-readable full text Open interactive document viewer

Diseño y prototipado de una plataforma web sobre base cartográfica para el análisis de riesgos en entornos industriales

Santana Pacheco, Nayarit

Abstract

Según el Real Decreto 1196/2003 del 19 de Septiembre, donde se aprueba la Directriz básica de Protección Civil para el control y planificación ante el riesgo de accidentes graves en los que intervienen sustancias peligrosas, las empresas que almacenen sustancias peligrosas deben realizar un plan de autoprotección denominado: Plan de Emergencias, dónde se realizará el análisis y evaluación de los riesgos además de otra serie de medidas que no competen a este proyecto. El proyecto ha consistido en la creación de un prototipo de plataforma web para el análisis de riesgos en entornos industriales. La plataforma genera una serie de resultados que además pueden ser representados en un visor. Está compuesta de tres partes: aplicación web o cliente, servidor web y base de datos. La aplicación web pretende servir de ayuda a los analistas de riesgos. Estos analistas, en primer lugar deberán hacer un estudio donde se determinen cuáles son los riesgos existentes, a continuación han de recopilar todos los datos para el estudio. Una vez dispongan de estos datos, podrán utilizar la aplicación para establecer cuáles serían las consecuencias en caso de producirse alguno de los accidentes. Los resultados obtenidos se calcularán en base a unos modelos matemáticos e indicarán de forma analítica y/o visual el alcance del accidente.

Full text

        Diseñoyprototipadode unaplataformawebsobre basecartográficaparael análisisderiesgosen entornosindustriales    IngenieríaInformática ProyectodeFindeCarrera          Autor: NayaritSantanaPacheco  Tutores: D.FranciscoMarioHernándezTejera D.BlasJ.GalvánGonzález  Fecha:Septiembrede2013                                          ProyectofindecarreradelaEscueladeIngenieríaInformáticadelaUniversidaddeLas PalmasdeGranCanariapresentadoporlaalumna:  TítulodelProyecto:DISEÑOYPROTOTIPADODEUNAPLATAFORMAWEBSOBREBASE CARTOGRÁFICAPARAELANÁLISISDERIESGOSENENTORNOSINDUSTRIALES  Autor: NayaritSantanaPacheco  Tutores: D.FranciscoMarioHernándezTejera D.BlasJ.GalvánGonzález   DEDICATORIA  Amispadresymihermana,portodosuapoyoyamor.                                            AGRADECIMIENTOS  Quieroagradecertodoelapoyoylaayudaproporcionadapormistutores:D.Mario HernándezTejerayD.BlasJ.GalvánGonzález,quemehanapoyadoyhandadola libertadsuficienteentodomomentoyhanconfiadoenmitrabajo.  Megustaríadarleslasgraciasprincipalmenteamispadresyamihermana,que siempremehandadofuerzasparaseguiradelanteynotirarlatoalla,quehanhecho quecreaenmíyenmisposibilidadesysiempremehandadotodosuamory confianza.Sinellosestonohabríasidoposible.  QuisieraagradecerleamicompañeroSamuelportodalaayudaquemehaprestadoy pordarmeánimosduranteelproyecto,sinduda,sucompañíayapoyohahechomás llevaderoestetrabajo.TambiénquerríaagradeceraalgunosmiembrosdelCEANI,a AndrésCacereño,quemehaproporcionadolasbasesnecesariassobrelosriesgosen entornosindustrialesysehaprestadoarevisarlosresultadosobtenidos.Ymuy especialmenteaJuanPedroRamosPonce,quemehaayudadoguiándomey supervisándomedurantetodoelprocesodedesarrollo.  Porúltimonopuedoolvidarmedemisamigos,atodosellosgraciasporlapacienciay elapoyo,porentendermisausenciasymostrarmesiempresucompresiónyamistad. EspecialmentequieronombraraMiguelÁngel,quedíaadíahaaguantadomisnervios ysiemprehaencontradolaformadeanimarmeyrelajarme.      Índice  Capítulo1.Introducción........................................................................................13 1.1.Estructura de la memoria ................................................................................................................. 13 Capítulo2.Estadoactualdeltema........................................................................15 2.1. PHAST ............................................................................................................................................ 15 2.2. ZEUS ............................................................................................................................................... 17 2.3. Propiedades Comunes ..................................................................................................................... 21 Capítulo3.Objetivos.............................................................................................23 Capítulo4.Recursosnecesarios.............................................................................25 Capítulo5.Metodología........................................................................................27 5.1. Análisis ............................................................................................................................................ 27 5.2. Diseño .............................................................................................................................................. 27 5.3. Implementación ............................................................................................................................... 28 5.4. Validación ....................................................................................................................................... 28 Capítulo6.Análisis................................................................................................29 6.1. Descripción del problema / Contextualización de la plataforma ..................................................... 29 6.1.1. Accidentes graves ..................................................................................................................... 29 6.1.2. Legislación sobre “accidentes graves” ..................................................................................... 30 6.1.3. Real Decreto 1254/1999 y posteriores modificaciones............................................................. 30 6.1.4. Real Decreto 1196/2003 ........................................................................................................... 31 6.1.5. Zonas de afección más importantes .......................................................................................... 31 6.2. Ámbito de la plataforma desarrollada .............................................................................................. 32 6.3. Modelos matemáticos utilizados ..................................................................................................... 33 6.3.1. Método equivalente TNT .......................................................................................................... 33 6.3.2. Fuga de Líquido Inflamable ..................................................................................................... 36 6.4. Análisis de requisitos y casos de uso ............................................................................................... 38 6.4.1. Roles ......................................................................................................................................... 38 6.4.2. Requisitos funcionales .............................................................................................................. 39 6.4.3. Casos de uso ............................................................................................................................. 42 6.4.4. Requisitos no funcionales ......................................................................................................... 68 6.5. Modelo del dominio ........................................................................................................................ 69 Capítulo7.Diseño.................................................................................................71 7.1. Arquitectura básica de la plataforma ............................................................................................... 71 7.2. Tecnologías utilizadas ..................................................................................................................... 73 7.2.1. Servidor web ............................................................................................................................. 73 7.2.2. Cliente ...................................................................................................................................... 77 7.2.3. Servidor BBDD ........................................................................................................................ 79 7.3. Patrones y otros aspectos de diseño ................................................................................................ 79 7.3.1. Servidor web ............................................................................................................................. 80 Estado actual del tema 16  4. Unavezrealizadalasimulaciónseobtendránunaseriedetablasygráficaspara cadaunodelosaccidentessimulados.Enelmapasepodránapreciarlasáreas queseveríanafectadasporcadaaccidenteyenquémedida,yaquecadauna tendráunarepercusiónmayoromenorsobrelazona.  Paralavisualizacióndelosresultados,alaizquierdadelmapaincluyenunaleyenda indicandocadaunadelaszonasdeafecciónmostradas,encadaunaseindicaelvalor depresiónquetendríatodoelsectorqueseveadelimitadoporesecírculo.Enla Figura1seobservacomoenelmapaestándibujadastodaslaszonasdeafeccióndel accidentesimulado.    Fig. 1. Zonas de afección del accidente simulado  PHASTtienelaaparienciacaracterísticadeunaaplicacióndeescritorio(Figura2), incluyendoensucabeceraunmenúdeherramientasprincipal.Asuizquierdadispone deunmenúdetipoárboldondesepuedenverlosdistintosaccidentesquehansido definidos,indicandoencadacaso(atravésdeiconospreestablecidos)eltipode accidentedelquesetrata.  Universidad de Las Palmas de Gran Canaria 17  Fig. 2. Apariencia del PHAST   Lasecciónderechacontienedosventanas:  ‐ Laprimeramuestraunagráficadondequedanrepresentadoslosvalores obtenidostraslasimulacióndelaccidenteseleccionado(enelmenúdeárbol delaizquierda).  ‐ Lasegunda,muestralosmismosvaloresperorepresentadosenunatabla  Porúltimo,enlaseccióninferior,laaplicacióndisponedeunaventanaparaindicarlo quevasucediendoatravésdemensajes.   2.2.ZEUS  ZEUS,cuyassiglassignificanZonasdePlanificaciónparaExplosionesindustriales,se tratadeunprogramaparaelcálculodeconsecuenciasyzonasdeplanificaciónpara accidentesgravesdetipomecánico.Estaaplicaciónfuedesarrolladaenelmarcodela tesisdelIngenieroQuímicoFernandoDíazAlonso(UniversidaddeMurcia),yllevapor título:Análisisdeconsecuenciasyzonasdeplanificaciónparaexplosionesindustriales accidentales(enelámbitodelasdirectivasseveso).  Estado actual del tema 18 Laaplicaciónfuecreadaconelfindefacilitartodosloscálculosllevadosacaboparala obtencióndelasmagnitudespeligrosasylaszonasdeplanificaciónexpuestasenla tesis.Porestemotivonosepuedehacerunacomparaciónexhaustiva,dadoquese tratadeunaaplicacióndesarrolladaparaunusocasipersonal.Apesardeello,abarca varioscasosdentrodelosfenómenospeligrosos*detipomecánico,siempredentrode unentornoindustrial,parasermásexactos,explosionesindustrialesaccidentales producidaspor:  ‐ Explosivos ‐ Sustanciasinestablesopirotécnicas ‐ Nubesdevapornoconfinadas ‐ Estallidoderecipientes  EnlaFigura3,sepuedeverlapantallaprincipaldelaaplicación,concretamentela pantallaprincipal.   Fig. 3. Pantalla principal de ZEUS   Laprimerainformaciónquesolicitalaaplicaciónparaempezaratrabajarconsisteenla eleccióndelmodelomatemáticoqueseemplearáalahoraderealizarloscálculos. Unavezhayasidoelegidoelmodelo,semostraráunapantalladetrabajodonde solicitarálainsercióndeunaseriededatosbásicosparapoderllevaracabola simulacióndelmismo(Figura4).  Universidad de Las Palmas de Gran Canaria 19  Fig. 4. Pantalla de inserción de datos  Cadapantalladetrabajoserádiferenteenfuncióndelaexplosión,perotodastendrán varioselementoscomunes,comoson:  ‐ Barradeherramientas.Labarradeherramientascontienelasopcionesbásicas decualquieraplicación,comoporejemplo:guardar,abrir,nuevo,salir,etc.,así comoalgunasopcionesadicionalesdeidiomayotraspropiasdeltemaquese estátratando(Figura5).    Fig. 5. Menú  ‐ Datosdeentrada.Enestasecciónserádondesesolicitaránlosdatos necesarios,asícomolaeleccióndediversasopcionesquedeterminaránel comportamientodelmodelo(Figura6).   ‐ Botóndecalcular.Presionandoelbotón“Calcular”queapareceenlasección inferiordelaFigura6,laaplicaciónllevaráacabotodosloscálculosnecesarios paraobtenerlosresultados.  Estado actual del tema 20  Fig. 6. Datos de entrada para el TNT  Trascalcularlosresultados,laaplicaciónmostraráunconjuntodegráficasytablascon losvaloresobtenidos(Figura7).   Fig. 7. Resultados de simulación Universidad de Las Palmas de Gran Canaria 21 2.3.PropiedadesComunes  TantoenelcasodePHASTcomodeZEUS,seofrecelaopcióndecrearnuevas sustanciaspeligrosas,perolaformadehacerloestotalmentedistinta(Figura8).  ‐ EnelcasodePHAST,cuandosedeseeañadirunanuevasustancia,setendrán quedefinirtodasaquellascaracterísticaspropiasdelasustancia,quepuedan llegarasernecesariasenelconjuntodemodelosmatemáticosquepodrán utilizarla  ‐ enelcasodeZEUS,cuandosepretendaañadirunanuevasustancia,tambiénse deberáindicarelmodelomatemáticoenelqueseutilizará,deestaforma,sólo seránecesariorellenaraquellaspropiedadesnecesariasparaelcorrecto funcionamientodelmodelo.   Fig. 8. Formulario de nueva sustancia   Apesardehaberrealizadounabúsquedaintensivasobrelasaplicacionesparael cálculodeanálisisderiesgos,aquellasqueseencuentranestánobsoletasonoestána disposicióndelusuariocomún,conlocualnosehapodidorealizarunestudio comparativocomoconPHASTyZEUS.Apesardeello,semuestraunabreve descripciónsobresufuncionamiento.Entreestasaplicacionescabedestacar:  Estado actual del tema 22  ‐ CIRMA:laDirecciónGeneraldeProtecciónCivilyEmergencias(Ministeriodel Interior)realizóunanálisisexhaustivosobrelaafecciónyvulnerabilidaddel medioambienteporaccidentesgravesocurridosenestablecimientosafectados porelRealDecreto1254/1999.Ademástambiénelaboróunapropuestade metodologíaparaelanálisisderiesgosambientales.  Esteprograma“gestionaelCálculodelíndicederiesgomedioambientaldelos escenariosaccidentalesquesedefinanparaunestablecimiento,enbasealos índicesglobalesdeconsecuenciasmedioambientalesobtenidosyasus probabilidades/frecuencias.”  ElRealDecreto1254/1999yanoseencuentraenvigor,porloquecomose comentabaanteriormente,estaaplicaciónadíadehoyestáobsoleta.  ‐ SHELLFRED5.0“(Incendio,Fugas,Explosión,Dispersión,esunsoftwareque permitesimularlasconsecuenciasdelasfugasdeunproducto,tanto accidentalescomointencionadas.”  ‐ ALOHA5.3delaEPA:“esunprogramaqueseutilizacomomodelode dispersiónatmosféricaparaevaluarescapesdevaporesdesustanciasquímicas peligrosas.”  ‐ EFFECTSTNO5.5:“esunprogramaquecalculalosefectosfísicosdebidosa escapesdesustanciaspeligrosas. Calculariesgosmedioambientales Contieneunabasededatosdepropiedadesfísicasdemásde100sustancias peligrosas.”  ‐ RISKCURVESTOOLBOX4.0.:“seutilizapararealizarelanálisiscuantitativodel riesgoenlaindustriaquímicaopetroquímica.Calculatodotipoderiesgos, comoporejemploriesgosdelasaludoriesgosdeltransporte. Análisisdelosresultadosdelriesgo. Indicasiunsistemaseencuentrabalanceadoconsumedio. EstábasadoenelYellowBook,GreenBookyelPurpleBook.”   Universidad de Las Palmas de Gran Canaria 23 Capítulo3. Objetivos  Lamotivaciónpararealizaresteproyectosurgedelanecesidaddeproporcionarleal CEANIunaherramientaqueayudeenelestudiodelosanálisisderiesgos,facilitándole eldesarrollodeplanesdeemergenciaenloquealplanteamientodeaccidentesse refiere,pudiendoobtenerlaszonasafectadasenbasealosmodelosmatemáticos desarrollados.  Elobjetivoprincipaldeesteproyectoconsisteendesarrollarunaplataformawebpara elanálisisderiesgosenentornosindustriales.Parapodersatisfacerestosobjetivos,se planteaunaplataformacompuestapor:  ‐ Basededatos:entodaplataformaquealmacenedatossenecesitahaceruso deunabasededatos.Enestecasoalmacenarádostiposdedatos: o losquefaciliteelsistema o losqueaporteelusuarioencadacasoparapoderresolverunaccidente enconcreto  ‐ WebService:esteelementodelaplataformaproveeráunconjuntodeservicios propiosdelosanálisisderiesgos.Enlamayoríadeloscasoselwebservicese veráobligadoaaccederalabasededatos.Enunoscasospararecuperardatos delusuarioyenotrosparautilizarlosdatosproporcionadosporelsistema.  ‐ Aplicaciónweb:lapartevisibleparaelcliente,queaccederáalosservicios ofrecidosporelwebservicepararealizarlamayoríadesusfunciones.    App Web Usuario 1 Usuario 2 Usuario 3 Web Service BBDD App Web App Web  Fig. 9. Arquitectura de la plataforma  Objetivos 24 Elprincipalobjetivoacubrirporestaplataformaespoderdefinirlosescenariosdonde sucedenlosaccidentes,posicionarlossobreunmapaymostrarlaszonasqueseverían afectadasencasodequesellegasenaproducir.Aunqueenelcapítulodelanálisisse haceunestudiomásexhaustivodetodoslosrequerimientosdelaaplicación,para satisfaceresteobjetivoprincipal,sehandecubrirlossiguientesobjetivosbásicos:  ‐ Definirnuevosescenariospararealizarlassimulaciones  ‐ Guardarlosescenariosdefinidosparasuusoposterior ‐ Podermodificarlosescenariosdefinidos ‐ Crearnuevosaccidentesasociadosalescenario ‐ Posicionarlosaccidentesenelmapa ‐ Visualizardeformagráficalosresultadosobtenidosenlassimulaciones ‐ Visualizarenformadetextolosresultadosobtenidosenlassimulaciones ‐ Definirnuevaszonasdeafección ‐ Definirnuevassustancias ‐ Definirnuevosrecursos ‐ Cargarmapasdelusuario      Universidad de Las Palmas de Gran Canaria 25 Capítulo4. Recursosnecesarios   Dadalanaturalezadelproyecto,duranteelestudioydesarrollodelmismohasido necesarioutilizardiversosrecursos,tantohardwarecomosoftwarequeselistaránalo largodeestasección,indicandoencadacasoaquiénpertenece.  Lamayoríadelosrecursosutilizadosparaeldesarrollodelproyectohansidoprovistos porLaDivisióndeComputaciónEvolutivayAplicaciones(CEANI)delInstituto UniversitariodeSistemasInteligentesyAplicacionesNuméricasenIngeniería(SIANI), pertenecientealaUniversidaddeLasPalmasdeGranCanaria;ademásdelosrecursos quesenombraránacontinuación,tambiénhansidoutilizadaslasinstalacionesdel centroaniveldeunazonadondeestablecerlosrecursosprestados.   Recursos Hardware Propietario Ordenador con procesador Intel Pentium 4 a 3.00 GHz y 3 GB de memoria RAM CEANI Pantalla Dell 19’’ CEANI Pantalla Phillips 17’’ CEANI Ordenador portátil Dell Inspiron 1545 de 15,4’’ (Intel Core Duo – 2GHz y 4GB de memoria RAM) Alumno Pantalla LG 17’’ Alumno Impresora láser blanco y negro CEANI Impresora multifunción Lexmark Alumno Pendrive 4 GB TDK Alumno Disco duro portátil WD 160 GB Alumno Tabla 1. Recursos utilizados a lo largo del desarrollo del proyecto  Eldesarrollonohasidoorientadoalcontextodelsoftwarelibre,sinembargotambién sehallegadoautilizaralgunadeestasherramientas.Acontinuaciónsedetallael conjuntodeprogramasquehansidoutilizados. Análisis 32 ‐ Zonadeintervención:Esaquellaenlaquelasconsecuenciasdelosaccidentes producenunniveldedañosquejustificalaaplicacióninmediatademedidasde protección.  ‐ Zonadealerta:Esaquellaenlaquelasconsecuenciasdelosaccidentes provocanefectosque,aunqueperceptiblesporlapoblación,nojustificanla intervención,exceptoparalosgruposcríticos.  ‐ Efectodominó:laconcatenacióndeefectoscausantesderiesgoquemultiplica lasconsecuencias,debidoaquelosfenómenospeligrosospuedenafectar, ademásdeloselementosvulnerablesexteriores,otrosrecipientes,tuberíaso equiposdelmismoestablecimientoodeotrosestablecimientospróximos,de talmaneraqueseproduzcaunanuevafuga,incendio,estallidoenellos,quea suvezprovoquennuevosfenómenospeligrosos.   6.2.Ámbitodelaplataformadesarrollada Comosehavenidoexplicandohastaahora,laplataformadesarrolladaeneste proyectoserviríacomoherramientaeneláreadelAnálisisdelriesgo.Unavezsehayan identificadolospeligrosdeaccidentesgraves,seprocedealcálculodeconsecuencias delosmismos.   Fig. 11. Ubicación de la aplicación dentro del estudio de los riesgos  Lafasedecálculodeconsecuenciascapturalosdatosnecesariosdelafaseanteriory, losresultadosobtenidos,estáncalculadosenbaseaunconjuntodemodelos matemáticosquedefinenelcomportamientodelaccidenteencasodehaberse producido.  Universidad de Las Palmas de Gran Canaria 33 Losresultadosconseguidosporlosmodelosmatemáticosdefiniránlasdistintaszonas queseveríanafectadasporelaccidente,quedandosometidasaunadeterminada presiónquevendrádefinidaporelvalorumbralestablecido(porejemplo:zonade alerta,zonadeintervención...).Cadavalorumbralproporcionaráunazonadeafección distinta.     Fig. 12. Ejemplo   6.3.Modelosmatemáticosutilizados  Elconjuntodemodelosmatemáticosqueseutilizanparaelcálculodeconsecuencias noesdedominiopúblico,portanto,sehandesarrolladoaquellosqueestaban disponibles:  6.3.1.MétodoequivalenteTNT  ElTNT(trinitrotolueno)esunexplosivoconvencional.Hasidounodelosexplosivos másutilizadosanivelmilitar,locualhapermitidoquesusefectossehayanestudiado ampliamente.Estemétodopermitepredecirdeunaformarápidaysencillalosdaños ocasionadosporlaexplosióndeunanubedevapornoconfinada,calculándoloapartir delamasadeTNTqueequivaldríaalacantidaddehidrocarburoimplicado,esdecir, queproduciríaelmismoniveldedaños.Porende,esunodelosmétodosmás utilizados.  Lafórmulaqueseutilizaparaelcálculodelresultadoes:  Análisis 34    󰇧 󰇨    Donde:  WTNT:masaequivalentedeTNT Wexp:masadelexplosivo (WTNT/Wexp)explosivo:equivalenciadeTNTporunidaddemasadeexplosivo   Existeunatabladereferenciadondeseindicanloscoeficientesparacalcularlas equivalenciasdedistintoshidrocarburosconrespectoalTNT:   ExplosivoEquivalencia(sobrepresión)Equivalencia(impulso) Nitroglicerina1.691.69 PETN1.771.77 ÁcidoPícrico1.061.06 RDX1.571.57 Trinitrobenceno1.111.11 2.4.‐Dinitrotolueno0.770.77 NitratoAmónico0.560.56 Peróxidodeciclohexanona0.190.19 Cloratosódico0.150.15 Nitrometano1.341.34 ComposiciónA‐31.091.076 ComposiciónC‐41.371.19 Coclotol(70/30)1.141.09 HBX‐11.171.16 HBX‐31.140.97 H‐61.381.15 MinolII1.201.11 Pentolita1.381.14 Picratol0.900.93 TNETB1.361.10 Tritonal1.070.96   UnavezsetienelamasadelexplosivosepuedecalcularlamasadeTNTequivalentea lacantidaddesustanciaqueparticipaenlaexplosión:   WTNT=Wexp*coeficientedelatabla Universidad de Las Palmas de Gran Canaria 35 Acontinuaciónsecalculaladistanciaescalada(z’)alaqueseoriginaunadeterminada presión,enbasealassiguientesecuaciones  1.1310 11000;1.1310󰆒󰇛.󰇜 11000400;1.8310󰆒󰇛.󰇜   Enfuncióndelvalorumbraldelazonaquesedeseecalcular,seutilizarálaprimeraola segundaecuación.Laprimeraseráparavalorescomprendidosentre1.1310y 11000pascalesylasegundaparavalorescomprendidosentre11000y400pascales.  Teniendolaz’calculada,sólofaltaríaobtenerelresultadodelmodelo,queserála distanciadeláreaafectadapartiendodesdeelcentrodelaccidente.     󰇛󰇜/   despejandoelvalorquefaltaporcalcular:  󰇛󰇜/   siendozelresultadodelmodelo.  LaDirectrizbásicadeproteccióncivilparaelcontrolyplanificaciónanteelriesgode accidentesgravesenlosqueintervienensustanciaspeligrosas,establecelosvalores umbralesparalaestimacióndelaszonasdeplanificaciónanteemergencias.Encuanto alriesgodeimpulsosysobrepresionessehanestablecidolosvaloresumbrales siguientes:  6.3.1.1.Valoresumbralesparalazonadeintervención  ‐ Valorlocalintegradodelimpulsodebidoalaondadepresión:150milibar segundo(15000pascales)  ‐ Sobrepresiónlocalestáticadelaondadepresiónde125milibar(12500 pascales) 6.3.1.2.Valoresumbralesparalazonadealerta  ‐ Valorlocalintegradodelimpulsodebidoalaondadepresión:100milibar segundo(10000pascales) Análisis 36  ‐ Sobrepresiónlocalestáticadelaondadepresiónde50milibar(5000 pascales)  6.3.1.3.Valoresumbralesparalazonadeefectodominó  ‐ Sobrepresiónlocalestáticadelaondadepresiónde160milibar(16000 pascales)   6.3.2.FugadeLíquidoInflamable  Cuandolacisternaquecontieneunasustancialíquidapierdesucapacidadde retención,ellíquidosefugayseextiendeocupandounasuperficiequedependedela existenciadeobstáculosqueimpidansuprogresión.Siellíquidoesinflamable,laparte quepudieraestarevaporandodesdelasuperficiedelcharcogenerado(es dependientedelavolatilidaddelasustancia)essusceptibledeocasionarelincendio. Estoocurrecuandolosvaporesemitidossemezclanconelaireycuandosesobrepasa ellímiteinferiordeinflamabilidadyseaportalaenergíadeactivaciónnecesaria.Estos vaporessonloquearderealmente.Esteincidentesedenomina“incendiodecharco”.  6.3.2.1.Elefectodelosincendios  Sonprovocadosporlaoxidaciónrápida,noexplosiva,desustanciascombustibles, produciendollama,quepuedeserestacionaria(incendiodecharco,dardodefuego)o progresiva(llamarada,boladefuego),peroqueentodosloscasosdisipalaenergíade combustiónmayoritariamenteporradiaciónquepuedeafectaraseresvivose instalacionesmateriales.  Silamateriasobrelaqueincideelflujoderadiacióntérmicanopuededisiparloala mismavelocidadquelorecibe,ésteprovocaunincrementodesutemperatura.Sieste incrementonoselimita,seproducenalteracionesirreversiblesycatastróficas,que puedenculminarenlacombustiónofusiónyvolatilizacióndelamateriaexpuesta.  Enlasproximidadesdelpuntodondesedesarrollalallama,setienetransmisióndel calortantoporconveccióncomoporradiaciónyconducción.Asípues,laúnicaforma deevitaromitigarsusefectoseslautilizacióndeequiposdeprotecciónindividual frentealcaloroelfuegooproteccionesadecuadas.Encontraposición,apartirdeuna ciertadistanciadelfocodelincendio,latransmisióndelcalorseefectúa exclusivamenteporradiación,disminuyendosuintensidadalaumentardicha distancia.Estohacequecualquierpantallaopacaalaradiacióntérmicapueda constituirunamedidadeprotecciónsumamenteeficaz.  Lavariablepormediodelacualsedescribenlosfenómenospeligrososdeltipo térmicoeslaDosisderadiación,D,recibidaporlossereshumanosprocedentesdelas llamasocuerposincandescentes.Estaesexpresadamediante: Universidad de Las Palmas de Gran Canaria 37   D=Im4/3texp   Donde:  ‐ Imeslaintensidadmediarecibida,enkW/m² ‐ texpeltiempodeexposición,ensegundos.  Estaexpresiónesválidaparaintensidadessuperioresa1.7kW/m²,paravalores inferioresalanterior,eltiempodeexposiciónesprácticamenteirrelevante,estoes,se consideraqueendichascondiciones,lamayoríadelapoblaciónpuedeestarexpuesta durantedilatadosperíodosdetiemposinsufrirdaño.  Confinesdeplanificación,enlosincendiosdecortaduración,inferioresaunminuto, eltiempodeexposiciónsehacecoincidirconladuracióndeéstos;paralosdemayor duración,seestablececomotiempodeexposicióneltranscurridohastaquelos afectadosalcancenunazonaprotegidafrentealaradiaciónodondelaintensidad térmicaseainferiora1.7kW/m².  Paraesteúltimocasoyconobjetodedeterminarlasdistanciasquedelimitanlaszonas deintervenciónyalerta,serecomiendaseguirelmodeloderespuestadelapoblación antelagénesisdeincendios,propuestoporTNO,enelqueseestableceunprimer períododereaccióndeunoscincosegundos,dondelapoblaciónpermaneceestáticay acontinuaciónseproducelahuída,alejándosedelincendioaunavelocidadmediade 4m/s.  LaDirectrizbásicadeproteccióncivilparaelcontrolyplanificaciónanteelriesgode accidentesgravesenlosqueintervienensustanciaspeligrosas,establecelosvalores umbralesparalaestimacióndelaszonasdeplanificaciónanteemergencias.Estosse indicanacontinuaciónparaelcasodeocurrenciadeincendios:  6.3.2.2.Valoresumbralesparalazonadeintervención  Unadosisderadiacióntérmicade250(kW/m²)4/3∙s,equivalentealascombinaciones deintensidadtérmicaytiempodeexposiciónqueseindicanacontinuación.  I,kW/m² 76543 texp,s20 25 30 40 60  6.3.2.3.Valoresumbralesparalazonadealerta  Unadosisderadiacióntérmicade115(kW/m²)4/3∙s,equivalentealascombinaciones deintensidadtérmicaytiempodeexposiciónqueseindicanacontinuación.  Análisis 38 I,kW/m² 65432 texp,s11 15 20 30 45   6.3.2.4.Valoresumbralesparalazonadeefectodominó  Radiacióntérmica:8kW/m².  6.3.2.5.Utilizacióndelmodelo  Debidoaquelosmodelosdecálculodeestasmagnitudesfísicasresultanmuycostosos computacionalmente,elequipodelCEANI,queesquienhaproporcionadoeste modelo,haoptadoporelempleodeRedesNeuronalesparaaproximarlosresultados alosaportadosporherramientassoftwaredereconocidoprestigiointernacionalpara lasquesehanimplementadoloscitadosmodelos.  Aunquelasredesneuronalesrequierenunimportanteesfuerzodecómputodurante suentrenamiento(sehanrealizadomásde900simulacionesysehanentrenadomás de3000redes),unavezentrenada,elprocesodecálculoserealizadeformacasi inmediata.   6.4.Análisisderequisitosycasosdeuso  Durantelafasedeanálisissehacontadocon2tiposdeexpertos,porunladoel analistaderiesgos,queseráelfuturousuariodelaaplicacióny,porotrolado,los expertosentecnologíasdelainformación.Atravésdeentrevistasycuestionariosse hanobtenidoelconjuntoderequisitosfuncionalesynofuncionalesquedefinenel comportamientodelaplataforma.  6.4.1.Roles Seencuentrandostiposdeusuariosqueharánusodelaplataformaalolargodelciclo devidadelamisma.Ambosseconsideranactoresprincipales,yaqueharánuso directo.  - Usuariodelaaplicación:seráelencargadodehacerusodelaaplicaciónweb. Utilizarátodalafuncionalidadpararealizarelcálculodeconsecuencias, partiendodelosdatosobtenidosenlaidentificacióndelosriesgos.Elexpertoo analistaderiesgosseráestetipodeusuario.  - AdministradordelaBBDD:seráelencargadodeactualizarlosdatosdela aplicación,modificándoloscuandoseanecesariooincluyendonuevosdatos quepodránutilizartodoslosusuarios.Laactualizacióndelosdatossehará directamenteatravésdelSistemaGestordeBasedeDatos(SGBD). Universidad de Las Palmas de Gran Canaria 39 6.4.2.Requisitosfuncionales  Losrequisitosfuncionalesdescribenlastareasespecíficasqueelsistemadebeser capazdellevaracabo.  Acontinuaciónsepresentaelconjuntoderequisitosfuncionalesquesatisfacenlas necesidadesdescritasporelusuarioexpertoatravésdelasentrevistasylos cuestionarios.Cadarequisitosedescribiráenunatablamodelocuyoscamposson [Durán,A.&Bernárdez,B.‐2002]:  RF‐X<nombredescriptivo> Autores<autordelaversiónactual> Fuentes<fuentedelaversiónactual> Actoresasociados<nombredelosactores> RequisitosasociadosRx‐y<nombredelrequisito> DescripciónElsistemadeberácomportarsetalcomosedescribeenlos siguientescasosdeuso. Importancia<Importanciadelobjetivo> Estabilidad<Estabilidaddelobjetivo> Comentarios<Comentariosadicionalessobreelobjetivo> Identificadorynombredescriptivo:cadarequisitosedebeidentificarporuncódigo únicoyunnombredescriptivo.Losidentificadoresdelosrequisitosfuncionales comienzanconRF.  AutoresyFuentes:estosdoscamposcontienenelnombredelosautores (desarrolladores)ydelasfuentes(clientesousuarios),delaversiónactualdel requisito,deformaquelarastreabilidadseaefectiva,llegandohastalaspersonasque hicieronlapropuestadenecesidaddelrequisito.  Actoresasociados:estecampocontieneelnombredeltipodeusuario(rol)quellevará acabolaacciónasociadaalrequisitofuncional.  Requisitosasociados:enestecamposeindicanotrosrequisitosqueestánasociados poralgúnmotivoconelrequisitoqueseestádescribiendo,deestaformaseconsigue tenerunarastreabilidadhorizontal,esdecir,sepodránobtenertodaslasrelaciones existentesentreelconjuntoderequisitos.  Descripción:estecampo,talycomosunombreindica,recogeladescripcióndel requisitofuncional,seexplicaelobjetivoalquehacereferencia.  Importancia:estecampoindicalaimportanciadelcumplimientodelrequisitoparalos clientesyusuarios.Sepuedeasignarunvalornuméricooalgunaexpresiónqueindique elgradodeimportancia,como:vital,urgente,importante,etc.  Estabilidad:estecampoindicalaestabilidaddelrequisito,esdecir,unacuantificación delaprobabilidaddequepuedasufrircambiosenelfuturo.Estaestabilidadsepuede Análisis 40 establecermedianteunvalornuméricoomedianteunaexpresiónqueindiqueelgrado deestabilidad,como:alta,mediaobaja,oPD(pordeterminar)siesqueaúnnoseha determinado.  Comentarios:enestecamposepuedeañadircualquierotrainformaciónsobreel requisitoquenoencajeenloscamposestablecidosenlatabla.     RF‐1Gestionarusuarios AutoresNayaritSantanaPacheco FuentesAnalistadeRiesgos,NayaritSantanaPacheco ActoresasociadosUsuario Requisitosasociados‐ DescripciónLosusuariostienenquepoderloguearseenlaaplicaciónpara poderhacerusodelamisma.Encasodenoteneracceso,deben podercrearunnuevousuario ImportanciaVital EstabilidadMedia ComentariosComocamposobligatoriosparaelusuariosedebenguardar: - Nombredeusuario - Contraseña - Email Comocamposopcionalessedebenguardarlosdatospersonales.    RF‐2Gestionarsustancias AutoresNayaritSantanaPacheco FuentesAnalistadeRiesgos ActoresasociadosUsuario Requisitosasociados‐ DescripciónLosusuariosdebenteneraccesoallistadodesustancias disponibles,crearnuevassustancias,modificarlas,eliminarlasy ademáspoderversuspropiedades. ImportanciaVital EstabilidadAlta Comentarios    RF‐3Gestionarrecursos AutoresNayaritSantanaPacheco FuentesAnalistadeRiesgos ActoresasociadosUsuario Universidad de Las Palmas de Gran Canaria 41 Requisitosasociados‐ DescripciónLosusuariosdebenteneraccesoallistadoderecursos disponibles,crearnuevosrecursos,modificarlos,eliminarlosy ademáspoderversuspropiedades. ImportanciaMedia EstabilidadAlta Comentarios    RF‐4Gestionarmapas AutoresNayaritSantanaPacheco FuentesAnalistadeRiesgos ActoresasociadosUsuario Requisitosasociados‐ DescripciónLosusuariosdebenteneraccesoallistadodemapasdisponibles, subirnuevosmapasyversuspropiedades ImportanciaVital EstabilidadAlta ComentariosLosmapasdebenserimágenesenformato:.jpg,.gif,.png,.tiff Elusuariotienequepoderestablecerlascoordenadasdelmapa     RF‐5Gestionarzonas AutoresNayaritSantanaPacheco FuentesAnalistadeRiesgos ActoresasociadosUsuario Requisitosasociados‐ DescripciónLosusuariosdebenteneraccesoallistadodezonasderiesgo disponibles,crearnuevaszonas,modificarlasyeliminarlas, ademásdeversuspropiedades ImportanciaImportante EstabilidadAlta Comentarios    RF‐6Gestionarescenarios AutoresNayaritSantanaPacheco FuentesAnalistadeRiesgos ActoresasociadosUsuario RequisitosasociadosRF2,RF3,RF4,RF5 DescripciónLosusuariosdebenteneraccesoalconjuntodeescenarios disponibles,crearnuevosescenarios,modificarlos,eliminarlosy Análisis 48 CU‐8Eliminarsustancia Autor: NayaritSantanaPacheco Requisitosasociados:RF2 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereeliminarunasustancia Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Lasustanciaeseliminadadelaaplicación Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionalasustanciaquedeseaborrar 2. Seleccionalaopcióndeborrarsustancia 3. Laaplicaciónlanzaunaadvertenciadeseguridad 4. Elusuarioconfirmaquedeseaborrarlasustancia 5. Lasustanciaeseliminadadelaaplicación Extensiones(oFlujosAlternativos): 5.1.1. Lasustanciaestásiendoutilizadaenalgúnaccidente 5.1.2. Laaplicaciónlanzaunaalertaindicandoquenosepuedeborrarla sustanciaporqueestásiendoutilizada 5.1.2. Lasustancianoseborradelaaplicación ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 5.2.1. Elusuarionoguardalosdatos,ensulugarcancela 5.2.2. Lasustancianoseborradelaaplicación Requisitosespeciales:    Universidad de Las Palmas de Gran Canaria 49  Fig. 15. Diagrama que cubre el Requisito funcional 3 (RF-3)   CU‐9Verlistado Autor: NayaritSantanaPacheco Requisitosasociados:RF3 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereverellistadodelosrecursosdisponibles Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Elusuariovisualizatodoslosrecursos Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioaccedealasecciónderecursos 2. Laaplicaciónmuestraellistadoderecursosdisponibles Extensiones(oFlujosAlternativos): Requisitosespeciales:    CU‐10Verrecurso Autor: NayaritSantanaPacheco Requisitosasociados:RF3 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereverlaspropiedadesdeunrecurso Análisis 50 Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Elusuariovisualizalaspropiedadesdelrecurso Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioaccedealasecciónderecursos 2. Seleccionaelrecursoquequierever 3. Laaplicaciónmuestralaspropiedadesdelrecursoseleccionado Extensiones(oFlujosAlternativos): 2.1. Elusuarioseleccionaelrecursoincorrecto 2.2. Laaplicaciónmuestralaspropiedadesdelrecursonodeseado Requisitosespeciales:    CU‐11Crearrecurso Autor: NayaritSantanaPacheco Requisitosasociados:RF3 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquieredefinirunnuevorecurso Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Elusuariopuedeutilizarelnuevorecursodefinido Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionalaopcióndecrearnuevorecurso 2. Rellenatodosloscamposobligatorios 3. Guardalosdatos Extensiones(oFlujosAlternativos): 3.1.1. Elusuariointentaguardarelrecursosinhaberrellenadoloscampos obligatorios 3.1.2. Laaplicaciónlanzaunmensajedeavisoindicandoquefaltandatos ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 3.2.1. Elusuarionoguardalosdatos,ensulugarcancela 3.2.2. Losdatosnoseguardanenlaaplicación Requisitosespeciales:    CU‐12Modificarrecurso Autor: NayaritSantanaPacheco Requisitosasociados:RF3 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquieremodificaralgunadelaspropiedadesdeunrecurso Universidad de Las Palmas de Gran Canaria 51 Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Elusuariopuedeutilizarelrecursoactualizado Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionaelrecursoquedeseamodificar 2. Seleccionalaopcióndemodificarrecurso 3. Cambialosdatosquequiereactualizar 4. Guardaloscambios Extensiones(oFlujosAlternativos): 4.1.1. Elusuariointentaguardarloscambiosdejandoalgúncampoobligatorio vacío 4.1.2. Laaplicaciónlanzaunmensajedealertaindicándolo ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 4.2.3. Elusuarionoguardalosdatos,ensulugarcancela 4.2.4. Elrecursomantienelaspropiedadesquetenía Requisitosespeciales:    CU‐13Eliminarrecurso Autor: NayaritSantanaPacheco Requisitosasociados:RF3 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereeliminarunrecurso Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Elrecursoeseliminadodelaaplicación Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionaelrecursoquedeseaborrar 2. Seleccionalaopcióndeborrarrecurso 3. Laaplicaciónlanzaunaadvertenciadeseguridad 4. Elusuarioconfirmaquedeseaborrarelrecurso 5. Elrecursoeseliminadodelaaplicación Extensiones(oFlujosAlternativos): 5.1.1. Elrecursoestásiendoutilizadoenalgúnaccidente 5.1.2. Laaplicaciónlanzaunaalertaindicandoquenosepuedeborrarelrecurso porqueestásiendoutilizado 5.1.3. Elrecursonoseborradelaaplicación ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 5.2.1. Elusuarionoguardalosdatos,ensulugarcancela 5.2.2. Elrecursonoseborradelaaplicación Requisitosespeciales:   Análisis 52  Usuario Crear mapa Gestionar mapas Ver mapa Ver listado Eliminar mapa Comprobar si mapa utilizado <<Extend>> <<Extend>> <<Extend>> <<Extend>> <<Extend>>  Fig. 16. Diagrama que cubre el Requisito Funcional 4 (RF-4)    CU‐14Verlistado Autor: NayaritSantanaPacheco Requisitosasociados:RF4 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereverellistadodelosmapasdisponibles Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Elusuariovisualizatodoslosmapas Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioaccedealaseccióndemapas 2. Laaplicaciónmuestraellistadodemapasdisponibles Extensiones(oFlujosAlternativos): Requisitosespeciales:    CU‐15Vermapa Autor: NayaritSantanaPacheco Requisitosasociados:RF4 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereverlaspropiedadesdeunmapa Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Elusuariovisualizalaspropiedadesdelmapa Escenarioprincipaldeéxito(oFlujoBásico): Universidad de Las Palmas de Gran Canaria 53 1. Elusuarioaccedealaseccióndemapas 2. Seleccionaelmapaquequierever 3. Laaplicaciónmuestralaspropiedadesdelmapaseleccionado Extensiones(oFlujosAlternativos): 2.1. Elusuarioseleccionaelmapaincorrecto 2.2. Laaplicaciónmuestralaspropiedadesdelmapanodeseado Requisitosespeciales:    CU‐16Crearmapa Autor: NayaritSantanaPacheco Requisitosasociados:RF4 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquieredefinirunnuevomapa Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Elusuariopuedeutilizarelnuevomapadefinido Escenarioprincipaldeéxito(oFlujoBásico): 4. Elusuarioseleccionalaopcióndecrearnuevomapa 5. Rellenatodosloscamposobligatorios 6. Guardalosdatos Extensiones(oFlujosAlternativos): 6.1.1. Elusuariointentaguardarelmapasinhaberrellenadoloscampos obligatorios 6.1.2. Laaplicaciónlanzaunmensajedeavisoindicandoquefaltandatos ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 3.2.1. Elusuarionoguardalosdatos,ensulugarcancela 3.2.2. Losdatosnoseguardanenlaaplicación Requisitosespeciales:    CU‐17Eliminarmapa Autor: NayaritSantanaPacheco Requisitosasociados:RF4 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereeliminarunmapa Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Elmapaeseliminadodelaaplicación Escenarioprincipaldeéxito(oFlujoBásico): Análisis 54 1. Elusuarioseleccionaelrecursoquedeseaborrar 2. Seleccionalaopcióndeborrarrecurso 3. Laaplicaciónlanzaunaadvertenciadeseguridad 4. Elusuarioconfirmaquedeseaborrarelrecurso 5. Elrecursoeseliminadodelaaplicación Extensiones(oFlujosAlternativos): 5.1.1. Elmapaestásiendoutilizadoenalgúnaccidente 5.1.2. Laaplicaciónlanzaunaalertaindicandoquenosepuedeborrarelmapa porqueestásiendoutilizado 5.1.4. Elmapanoseborradelaaplicación ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 5.2.1. Elusuarionoguardalosdatos,ensulugarcancela 5.2.2. Elmapanoseborradelaaplicación Requisitosespeciales:      Fig. 17. Diagrama que cubre el requisito funcional 5 (RF-5)    CU‐18Verlistado Autor: NayaritSantanaPacheco Requisitosasociados:RF5 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereverellistadodelaszonasdisponibles Universidad de Las Palmas de Gran Canaria 55 Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Elusuariovisualizatodaslaszonas Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioaccedealaseccióndezonas 2. Laaplicaciónmuestraellistadodezonasdisponibles Extensiones(oFlujosAlternativos): Requisitosespeciales:    CU‐19Verzona Autor: NayaritSantanaPacheco Requisitosasociados:RF5 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereverlaspropiedadesdeunazona Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Elusuariovisualizalaspropiedadesdelazona Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioaccedealaseccióndezonas 2. Seleccionalazonaquequierever 3. Laaplicaciónmuestralaspropiedadesdelazonaseleccionada Extensiones(oFlujosAlternativos): 2.1. Elusuarioseleccionalazonaincorrecta 2.2. Laaplicaciónmuestralaspropiedadesdelazonanodeseada Requisitosespeciales:    CU‐20Crearzona Autor: NayaritSantanaPacheco Requisitosasociados:RF5 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquieredefinirunanuevazona Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Elusuariopuedeutilizarlanuevazonadefinida Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionalaopcióndecrearnuevazona 2. Rellenatodosloscamposobligatorios Análisis 56 3. Guardalosdatos Extensiones(oFlujosAlternativos): 3.1.1. Elusuariointentaguardarlazonasinhaberrellenadoloscampos obligatorios 3.1.2. Laaplicaciónlanzaunmensajedeavisoindicandoquefaltandatos ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 3.2.1. Elusuarionoguardalosdatos,ensulugarcancela 3.2.2. Losdatosnoseguardanenlaaplicación Requisitosespeciales:    CU‐21Modificarzona Autor: NayaritSantanaPacheco Requisitosasociados:RF5 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquieremodificaralgunadelaspropiedadesdeunazona Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Elusuariopuedeutilizarlazonaactualizada Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionalazonaquedeseamodificar 2. Seleccionalaopcióndemodificarzona 3. Cambialosdatosquequiereactualizar 4. Guardaloscambios Extensiones(oFlujosAlternativos): 4.1.1. Elusuariointentaguardarloscambiosdejandoalgúncampoobligatorio vacío 4.1.2. Laaplicaciónlanzaunmensajedealertaindicándolo ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 4.2.1. Elusuarionoguardalosdatos,ensulugarcancela 4.2.2. Lazonamantienelaspropiedadesquetenía Requisitosespeciales:    CU‐22Eliminarzona Autor: NayaritSantanaPacheco Requisitosasociados:RF5 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereeliminarunazona Precondiciones: Elusuarioestálogueado  Universidad de Las Palmas de Gran Canaria 57 Garantíasdeéxito(Postcondiciones): Lazonaeseliminadadelaaplicación Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionalazonaquedeseaborrar 2. Seleccionalaopcióndeborrarzona 3. Laaplicaciónlanzaunaadvertenciadeseguridad 4. Elusuarioconfirmaquedeseaborrarlazona 5. Lazonaeseliminadadelaaplicación Extensiones(oFlujosAlternativos): 5.1.1. Lazonaestásiendoutilizadaenalgúnaccidente 5.1.2. Laaplicaciónlanzaunaalertaindicandoquenosepuedeborrarlazona porqueestásiendoutilizada 5.1.3. Lazonanoseborradelaaplicación ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 5.2.1. Elusuarionoguardalosdatos,ensulugarcancela 5.2.2. Lazonanoseborradelaaplicación Requisitosespeciales:      Fig. 18. Diagrama que cubre el requisito funcional 6 (RF-6)   CU‐23Verlistado Autor: NayaritSantanaPacheco Requisitosasociados:RF6 ActorPrincipal:Usuario Análisis 64 Precondiciones: Elusuarioestálogueadoytieneseleccionadoelescenario Garantíasdeéxito(Postcondiciones): Elaccidenteesactualizado Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionaelaccidentequequieremodificar 2. Seleccionalaopciónmodificar 3. Elusuariomodificaloscamposquequiereactualizar 4. Elusuarioguardaloscambios Extensiones(oFlujosAlternativos): 4.1.1. Elusuarionoguardaloscambios,ensulugarcancela 4.1.2. Elaccidentemantienesuformaoriginal ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 4.2.1. Laaplicaciónlanzaunavisoindicandoquesehandejadocampos obligatoriossinrellenar 4.2.2. Elusuariorellenaloscamposquefaltan 4.2.3. Guardalosdatos Requisitosespeciales:    CU‐35(Re)Posicionaraccidente Autor: NayaritSantanaPacheco Requisitosasociados:RF6 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereposicionarunaccidentedeunescenario Precondiciones: Elusuarioestálogueadoytieneseleccionadoelescenario.Elescenariotieneunmapa asociado Garantíasdeéxito(Postcondiciones): Elaccidentequedaposicionadoenelmapa Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionaelaccidentequequiereposicionar 2. Seleccionalaopciónposicionar 3. Elusuarioseleccionalaposicióndondequiereubicarelaccidente 4. Elusuarioguardaloscambios Extensiones(oFlujosAlternativos): 4.1.1. Elusuarionoguardaloscambios,ensulugarcancela 4.1.2. Elaccidentemantienesuposiciónoriginal Requisitosespeciales:    CU‐36Añadirrecurso Autor: NayaritSantanaPacheco Requisitosasociados:RF6 Universidad de Las Palmas de Gran Canaria 65 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereañadirunrecursoaunescenario Precondiciones: Elusuarioestálogueadoytieneseleccionadoelescenario Garantíasdeéxito(Postcondiciones): Elescenariotieneasociadounnuevorecurso Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionalaopcióndeañadirnuevorecurso 2. Rellenalosdatossolicitadosporlaaplicación 3. Guardalosdatos Extensiones(oFlujosAlternativos): 3.1.1. Elusuarionoguardalosdatos,ensulugarcancela 3.1.2. Elescenarioconservaelnúmeroderecursosinicial ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 3.2.1. Laaplicaciónlanzaunavisoindicandoquenosehancubiertoloscampos obligatorios 3.2.2. Elusuariorellenatodosloscamposobligatorios 3.2.3. Guardalosdatos 3.2.4. Elescenariopasaatenerunrecursomás Requisitosespeciales:    CU‐37Eliminarrecurso Autor: NayaritSantanaPacheco Requisitosasociados:RF6 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereeliminarunrecursodeunescenario Precondiciones: Elusuarioestálogueadoytieneseleccionadoelescenario Garantíasdeéxito(Postcondiciones): Elescenariotieneasociadounrecursomenos Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionaelrecursoquequiereborrar 2. Seleccionalaopciónborrar 3. Laaplicaciónlanzaunaadvertenciadeseguridad 4. Elusuarioconfirmaelborradodelrecurso Extensiones(oFlujosAlternativos): 4.1. Elusuarionoconfirmaelborradodelrecurso 4.2. Elescenarioterminaconelnúmeroderecursosinicial Requisitosespeciales:     Análisis 66 CU‐38Modificarrecurso Autor: NayaritSantanaPacheco Requisitosasociados:RF6 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquieremodificarunrecursodeunescenario Precondiciones: Elusuarioestálogueadoytieneseleccionadoelescenario Garantíasdeéxito(Postcondiciones): Elrecursoesactualizado Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionaelrecursoquequieremodificar 2. Seleccionalaopciónmodificar 3. Elusuariomodificaloscamposquequiereactualizar 4. Elusuarioguardaloscambios Extensiones(oFlujosAlternativos): 4.1.1. Elusuarionoguardaloscambios,ensulugarcancela 4.1.2. Elrecursomantienesuformaoriginal 4.2.1. Laaplicaciónlanzaunavisoindicandoquesehandejadocampos obligatoriossinrellenar 4.2.2. Elusuariorellenaloscamposquefaltan 4.2.3. Guardalosdatos Requisitosespeciales:    CU‐39(Re)Posicionarrecurso Autor: NayaritSantanaPacheco Requisitosasociados:RF6 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereposicionarunrecursodeunescenario Precondiciones: Elusuarioestálogueadoytieneseleccionadoelescenario.Elescenariotieneunmapa asociado Garantíasdeéxito(Postcondiciones): Elrecursoquedaposicionadoenelmapa Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionaelrecursoquequiereposicionar 2. Seleccionalaopciónposicionar 3. Elusuarioseleccionalaposicióndondequiereubicarelrecurso 4. Elusuarioguardaloscambios Extensiones(oFlujosAlternativos): 4.1.1. Elusuarionoguardaloscambios,ensulugarcancela 4.1.2. Elrecursomantienesuposiciónoriginal Requisitosespeciales: Universidad de Las Palmas de Gran Canaria 67  CU‐40Simularaccidente Autor: NayaritSantanaPacheco Requisitosasociados:RF6 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereobtenerlosresultadosdelaszonasafectadasenun accidente Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Laaplicacióngeneralosresultadossolicitados Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionaelescenario 2. Seleccionaelaccidente 3. Seleccionalaopcióndesimular 4. Laaplicaciónmuestradeformagráficaynuméricalaszonasafectadasenbase alaszonasasociadasalaccidente Extensiones(oFlujosAlternativos): Requisitosespeciales:    CU‐41Generarinforme Autor: NayaritSantanaPacheco Requisitosasociados:RF6 ActorPrincipal:Usuario Personalinvolucradoeintereses: Usuario:elusuarioquiereobtenerlosresultadosdelaszonasafectadasenun documento,convaloresnuméricos Precondiciones: Elusuarioestálogueado Garantíasdeéxito(Postcondiciones): Laaplicacióngeneralosresultadossolicitadosenundocumento Escenarioprincipaldeéxito(oFlujoBásico): 1. Elusuarioseleccionaelescenario 2. Seleccionalaopcióndegenerarinforme 3. Laaplicacióngenerauntextoconlosdatossolicitados 4. Elusuarioalmacenaeltexto Extensiones(oFlujosAlternativos): Requisitosespeciales:     Análisis 68 6.4.4.Requisitosnofuncionales  Losrequisitosnofuncionalesequivalenalasrestriccionesestablecidas,limitando,de estaforma,lasopcionesparaconstruirunasolución.Enlassiguientestablasse describencadaunodelosrequisitosnofuncionalesdefinidos[Durán,A.&Bernárdez, B.–2002]:   RNF‐1Servidor.NET AutoresNayaritSantanaPacheco FuentesExpertosenTI Actoresasociados‐‐‐ Requisitosasociados‐‐‐ DescripciónElservidorwebqueofrecelosserviciosqueconsumiráelcliente debeserdesarrolladoenlaplataforma.NET ImportanciaAlta EstabilidadAlta Comentarios‐‐‐    RNF‐2SGBDSQLSERVER2008 AutoresNayaritSantanaPacheco FuentesExpertosenTI Actoresasociados‐‐‐ Requisitosasociados‐‐‐ DescripciónElservidorwebqueofrecelosserviciosqueconsumiráelcliente debeserdesarrolladoenlaplataforma.NET ImportanciaAlta EstabilidadAlta Comentarios‐‐‐    RNF‐3ClienteRIA AutoresNayaritSantanaPacheco FuentesExpertosenTI Actoresasociados‐‐‐ Requisitosasociados‐‐‐ DescripciónElclientedebeserunaRichInternetApplication ImportanciaAlta EstabilidadAlta Comentarios‐‐‐    Universidad de Las Palmas de Gran Canaria 69  6.5.Modelodeldominio  Unavezexpuestoslosrequisitosfuncionalesynofuncionalesdelaplataformaylos respectivoscasosdeuso,seharealizadoundiagramadelmodelodeldominio.Eneste diagramaseexponenlosconceptosmásdestacadosqueseobtienencomoconclusión delanálisis,asícomolasrelacionesentreellos.  Elobjetivodeestediagramanoesmostrartodalafuncionalidad,conélsepretende ayudaravisualizarlosconceptosmásdestacadosdelproblemayvercomose relacionan.Estasclasesyrelaciones,unavezllegadosalafasedediseño,pasaránaser cadaunodeellosunaclase.Deigualforma,enlafasedediseñoprobablemente apareceránnuevasclasesyrelaciones,ademásdemodificarlasplanteadaseneste modelo. Análisis 70 Fig. 19. Modelo del dominio Universidad de Las Palmas de Gran Canaria 71 Capítulo7. Diseño  Unavezrealizadoelanálisisdelaplataformaydecadaunodesuscomponentes,seha realizadoeldiseñodelamisma.Acontinuaciónseencuentraunadescripciónde:  - Arquitecturautilizada  - Tecnologíaselegidas - Diseñodecadapartedelaplataforma o Patronesempleados o Diagramasdeclases  7.1.Arquitecturabásicadelaplataforma   Eldiseñoarquitectónicorepresentalaestructuradelosdatosyloscomponentesdela plataforma,suspropiedadesvisiblesexternamente,asícomolasrelacionesentreellos ytodoasumiendounestiloarquitectónico.  Elestiloarquitectónicoseráelqueestablezcaloscomponentesqueformaránpartede laplataformaycómointeractuaránentreellos.Enestecaso,dadalanaturalezadela aplicación,sehaelegidounaarquitecturacliente‐servidorde3capas.    Fig. 20 Arquitectura cliente-servidor de 3 capas Diseño 72 Laarquitecturacliente‐servidoresunaarquitecturadistribuidadondelosdatosyel procesamientosedistribuyenentrevariosprocesadores.Loscomponentesprincipales son: ‐ Unconjuntodeservidoresindependientesqueproporcionanserviciosaotros subsistemas  ‐ Unconjuntodeclientesqueaccedenalosserviciosproporcionadosporlos servidores  ‐ Unaredquepermitealosclientescomunicarseconlosservidoresyaccedera estosservicios  Paraquelacomunicaciónsepuedaestablecercorrectamente,losclientesdeberán conocerelnombredelosservidoresdisponibles,sinembargo,estosservidoresno necesitaránconocerlaidentidaddelosclientes.  Enunaarquitecturacliente‐servidorsencilla,lafuncionalidaddelsistemarecae principalmenteenelservidoroporelcontrarioenelcliente,peroaldividirelsistema en3capasseconsiguendistribuirlasresponsabilidades:  ‐ Capa1:clientes  ‐ Capa2:servidorweb  ‐ Capa3:servidordedatos    Fig. 21. Comunicación entre capas   Universidad de Las Palmas de Gran Canaria 73 Acontinuaciónsemuestracomoejemplo,loquepodríaserunacomunicaciónentrelos distintoscomponentesdelaarquitectura:  1. Elcliente,enfuncióndelapeticióndelusuario,accederáaalgunodelos serviciosofrecidosporelservicioweb  2. Éste,asuvez,accederáalservidordedatosparaobtenerlosdatosrequeridos.  3. Losdatosserándevueltosalservidortrasunaconsulta.  4. Elservidorharáeltratamientonecesariosobreesosdatos,asícomolas comprobacionespertinentesydevolverálarespuestaalcliente  5. Elclientemostrarálarespuestaalusuario.    7.2.Tecnologíasutilizadas  Dadalanaturalezadelproyecto,sehanutilizadodiversastecnologíasparallevara caboeldesarrollodetodalaplataforma.Acontinuaciónsedescribencadaunade ellas,indicandoenqueparteseutilizajuntoconunadescripcióndelamisma.  7.2.1.Servidorweb  BasadoenunaArquitecturaOrientadaaServicios(SOA),sehautilizadoWindows CommunicationFoundation(WCF)paracrearlosserviciosweb.Nosehanestudiado otrastecnologíasexistentesdadoqueveníaimpuestasuutilizaciónatravésdelos requisitosnofuncionalesdescritosenelcapítulodelanálisisdelaplataforma.  WCF,disponibledesdelaversión3.0de.NET,fuecreadaconelfindepermitiruna programaciónrápidadesistemasdistribuidosyeldesarrollodeaplicacionesbasadas enarquitecturasSOA,conunaAPIsimple.Seconsideraunframeworkparalacreación deestetipodeaplicaciones.Permiteenviardatoscomomensajesasíncronosdesdeun extremodelservicioaotro.ElserviciowebpuedeestarhospedadoenunservidorIISo serhospedadoenunaaplicación.Losmensajespuedensertansimplescomoun carácterounapalabraqueseenvíacomoXML,otancomplejoscomounasecuencia dedatosbinarios.  7.2.1.1.Mensajeríayextremos  WCFsebasaenlanocióndecomunicaciónbasadaenmensajes,ycualquiercosaque sepuedamodelarcomounmensaje.EstohabilitaunaAPIunificadaentodoslos mecanismosdetransportediferentes.Elmodelorealizaunadiferenciaciónentre clientes,quesonlasaplicacionesqueinicianlacomunicaciónyservicios,quesonlas Diseño 80 definidospor:sunombre,elproblemaqueresuelven,lasoluciónqueproporcionany lasconsecuenciasdesuuso/aplicación.  Lospatronesusualmentesedividenen3tipos,clasificándolosenfuncióndeltipode problemaqueresuelven:creacionales,estructuralesydecomportamiento.Conel pasodeltiempoysuusoextensivo,hanidosurgiendonuevospatronesespecíficosde unadeterminadatecnología,comopuedeserJ2EE,peroquetambiénpuedenllegara seraplicadosenotrastecnologías.  Acontinuaciónsedetallanlospatronesutilizadosencadaunodeloscomponentesde laplataforma.Paraelloseofreceráunabrevedescripcióndelpatrónutilizadoyun diagramadeclasesexplicativo.  7.3.1.Servidorweb  Enelservidorwebsehanutilizadolossiguientespatrones: 7.3.1.1.DataAccessObject(DAO)  EneldiseñodelservidorwebsehautilizadoelpatrónDataAccessObject(DAO).El DAO,surgidodentrodelámbitodeldesarrolloJ2EE(Java2Platform,Enterprise Edition),proporcionauncomponentedesoftwarequesuministraunainterfazcomún entrelaaplicaciónyunoomásdispositivosdealmacenamientodedatos.  Anivellógico,elsiguientediagramarepresentalaformaenquesehaaplicadoel patrónsobreelservidor.    Fig. 27. Aplicación del DAO sobre el servidor  ElDAOmanejalaconexiónconlafuentededatosparaobteneryalmacenardatos,de estaforma,elDAOconsigueaislarlaaplicacióndelatecnologíautilizadaparael almacenamientodelosdatos.  Universidad de Las Palmas de Gran Canaria 81 7.3.1.2.DataTransferObject(DTO)  Paraelpasodedatosentreelservidorylaaplicaciónwebtambiénsehautilizadoun patrónpertenecientealámbitodedesarrolloJ2EE,setratadelpatrónDataTransfer Object(DTO).  ElDTOseaplicaparaconseguirqueunobjetoseaserializableparalatransferenciade datossobrelared.Parasatisfacerestepunto,sehacreadounaclaseporcadatipode datocomplejoqueseutilizatantoenlaentrada,comoenlasalidadedatosdelas operacionesproporcionadasporelservicio.Deestaformaseconsiguetransferirsólo losdatosnecesarios.Enlasiguientefigurasepuedeverunejemplodelmismo.    Fig. 28. Ejemplo del uso del patrón DTO  7.3.2.Cliente  Enelclientesehanutilizadolossiguientespatrones:  7.3.2.1.DataTransferObject(DTO)  Comoseexplicóanteriormenteenlaseccióndepatronesutilizadosenelservidor,el patrónDataTransferObjectseutilizaparaelpasodedatosentreelservidoryla aplicaciónweb,esdecir,elcliente.Existeunaseriededatosquenoesnecesario almacenarenlaBBDD,porquesonparaelusointernodelcliente,conlocualcarecede sentidoenviarlosalservidor,porestemotivoseutilizanlosDTOenestaparte.  7.3.2.2.ModelViewController(MVC)  ElModelViewController(MVC)esunpatrónarquitectónicoqueseparalosdatosyla lógicadelainterfazdeusuario,dentrodelaaplicación.ElModeloeselobjetode aplicación,dondeestaríanalmacenadoslosdatos,laVistaeslarepresentacióndel modeloenpantallayelControladordefinelaformaenlaquelainterfazreaccionaala entradadelusuario.  Aldesacoplarelmodelodelavista,puedenrealizarsediferentesrepresentacionesdel mismomodelo.Estasvistasseactualizaránsiemprequehayauncambioenelmodelo. Estaseparaciónevitarátenerquerealizarcambiosencadavistacadavezquese Diseño 82 produzcauncambioenelmodelo.Paragestionarestasactualizacionesestáel controlador,queseráelencargadodecomunicarsetantoconlavistacomoconel modelo.Enalgunoscasoslavistaseactualizacuandoseproduceuncambioenel modelo,sinquellegueaintervenirelcontrolador.   Controller ModelView  Fig. 29. Patrón Modelo Vista Controlador  7.3.2.3.Singleton  ElpatrónSingletonseutilizaparagarantizarquelaclasesobrelaqueseapliquesólo tendráunainstancia,loqueproporcionaráunpuntodeaccesoglobalaella.Alutilizar elpatrónModeloVistaControlador,elusodelpatrónSingletonsehaceobligatorio, dadoqueesnecesarioasegurarlaexistenciadeunaúnicainstanciaparaelmodelo.    Fig. 30. Patrón Singleton aplicado a la clase Modelo  7.3.2.4.Capadeservicios  Nosetratadeunpatróndediseño,sinembargo,sehaconsideradonecesariohacer unaseparaciónlógicadentrodelcliente,aislandoenunaclaselacomunicaciónconel servidor.Deestaforma,cadavezquealgunodeloscontroladoresdelclientetieneque interactuardealgunaformaconelservidorweb,necesitapasarporlacapade serviciosyentoncesseráéstalaencargadadelacomunicaciónenambossentidos. Cuandolacapadeserviciosrecibelarespuestadelservidor,lanzaunavisoal controladorquehahecholallamada.  Universidad de Las Palmas de Gran Canaria 83  Fig. 31. Capa de Servicios   7.4.Basededatos  Trasrealizarunestudioexhaustivosobrelosriesgosenentornosindustriales,junto conlaayudayconocimientoproporcionadoporelexpertoenlamateria,yposterioral análisisdelaplataforma,sehaobtenidoelsiguientediseñoparalabasededatos.Aquí estánalmacenados,enprimerlugar,losdatosproporcionadosdesdeuninicioporla plataformaparatodoslosusuariosy,acontinuación,losdatosquevayaalmacenando cadausuarioconelusodelamisma(siguientepágina).   Acontinuaciónsedetallaelcontenidodecadatablaycadaunodesuscampos, indicandoencadacasoeltipodedatoquerepresentayparaquéresultanecesario.  7.4.1.TablaTUserType  Almacenalosdistintostiposdeusuarioexistentes.Encasodecrearsenuevostiposde usuariosbastaríaconactualizarlatabla.  Loscamposquecomponenlatablason:  NombreTipoNULLFKDescripción userTypeIdint(auto)  ‐‐‐ Identificadordelatabla userTypevarchar(20)  ‐‐‐ nombredeltipodeusuario      Diseño 84  RScenarioAccident PK scenarioAccidentId positionX positionY FK1 scenarioId FK2 accidentId RScenarioResource PK scenarioResourceId scenarioResourceName scenarioResourceDescription positionX positionY FK1 resourceId FK2 scenarioId RSubstanceProperties PK substancePropertyId propertyName propertyType propertyMeasure FK1 mathModId RSubstanceValues PK substanceValueId value FK1 substancePropertyId FK2 substanceId TAccident PK accidentId accidentName accidentDescription documentation FK1 mathModId FK2 substanceId FK3 userId FK4 accidentTypeId TAccidentType PK accidentTypeId accidentType TMap PK mapId mapName mapDescription url xmax ymax xmin ymin FK1 userId TMathematicalModel PK mathModId mathModName FK1 accidentTypeId TResource PK resourceId resourceType userDescription color isGlobal FK1 userId TScenario PK scenarioId scenarioName scenarioDescription FK1 userId FK2 mapId TSubstance PK substanceId substanceName userDescription isGlobal FK2 userId FK1 substanceTypeId TSubstanceType PK substanceTypeId substanceType TUser PK userId name lastName1 lastName2 username userPassword email registerDate FK1 userTypeId TUserType PK userTypeId userType TZone PK zoneId zoneName description zoneValue color isGlobal FK1 userId FK2 mathModId TAccidentTNT PK accidentTntId equivalence mass FK1 accidentId TAccidentFLI PK ifAccFugLiqInf diameter leakType windSpeed leakDuration FK1 accidentId TZone PK zoneId zoneName description zoneValue color isGlobal FK1 userId FK2 mathModId TSimulatedZone PK simulatedZoneId lastValue updated FK1 zoneId FK2 accidentId Universidad de Las Palmas de Gran Canaria 85 7.4.2.TablaTUser  Almacenatodoslosdatosreferentesalusuariodelaaplicación,tantodatospersonales comodatosdelregistro.Cadavezqueunusuariosedadealtaenlaaplicaciónsecrea unnuevoregistroenlatabla.  Latablaestácompuestaporlossiguientescampos:  NombreTipoNULL FKDescripción userIdint(auto)  ‐‐‐ Identificadordelatabla namevarchar(20)x ‐‐‐ Nombrerealdelusuario lastName1varchar(20)x‐‐‐ Primerapellidodelusuario lastName2varchar(20)x ‐‐‐ Segundoapellidodelusuario userNamevarchar(10)  ‐‐‐ Nombreporelqueelusuarioserá identificadodentrodelaaplicación userPasswordvarchar(32)  ‐‐‐ Contraseñadelusuarioqueserá necesariaparaloguearseenla aplicaciónyasíhacerusodetodas lasfuncionalidadesdelamisma.La contraseñaestáalmacenada codificadaconMD5. emailvarchar(100)  ‐‐‐ Direccióndecorreo(email)del usuario registerDatedate  ‐‐‐ Fechaenlaqueelusuariorealizóel registroenlaaplicación userTypeIdint  TUserTypeTipodeusuarioalquepertenece 7.4.3.TablaTSubstanceType  Almacenalosdistintostiposdesustanciasexistentes.  Latablaestácompuestaporlossiguientescampos:  NombreTipoNULLFKDescripción substanceTypeIdint(auto)  ‐‐‐ Identificadordelatabla substanceTypevarchar(20)  ‐‐‐ nombrecaracterísticoqueidentificaal tipodesustancia   7.4.4.TablaTSubstance  Almacenaelconjuntodesustanciasproporcionadasporlaaplicación,asícomolas sustanciascreadasporelusuario.Seclasificanenfunciónde:  Diseño 86 ‐ Eltipodesustanciaalquepertenecen  ‐ Elusuarioquelahacreado   Latablaestácompuestaporlossiguientescampos:  NombreTipoNULL FKDescripción substanceIdint(auto)  ‐‐‐ Identificadordelatabla substanceNamevarchar(20)  ‐‐‐ Nombrepropiodela sustanciaporelquepuede seridentificada isGlobalbit  ‐‐‐ Indicativodesiesuna sustanciacreadaporun usuarioconcretooes globalatodoslosusuarios userDescriptiontextxdescripcióndelasustancia substanceTypeIdint  TSubstanceTypeTipodesustanciaalque pertenece userIdint TUserUsuariopropietariodela sustancia mathModIdint  TMathematicalModelModelomatemáticoparael quesehaalmacenadola sustancia.Solosepodrá utilizarlasustanciapara estemodelomatemático  7.4.5.TablaTAccidentType  Almacenacadaunodelostiposdeaccidentequesepuedenllegaradar.  Latablaestácompuestaporlossiguientescampos:  NombreTipoNULLFKDescripción accidentTypeIdint(auto)‐‐‐ ‐‐‐ Identificadordelatabla accidentTypevarchar(20) ‐‐‐ ‐‐‐ Nombrequeidentificaaltipodeaccidente  7.4.6.TablaTAccident  Almacenatodoslosaccidentesquehansidogeneradosporlaaplicación, independientementedequiénhayasidoelcreadordelosmismos.Estaránclasificados porelmodelomatemáticoalquepertenecen.Dadoqueseconoceelmodelo matemáticoyelmodelomatemáticosóloperteneceráauntipodeaccidente,nose necesitaráhacerreferenciaaltipodeaccidentealqueperteneceelaccidente. Sehaceunareferenciaalatabladondesealmacenanlosmodelosparasaberaqué modeloperteneceelaccidenteyenotratablapoderestablecerlaspropiedadesquese tendránquerellenar.  Universidad de Las Palmas de Gran Canaria 87 Latablaestácompuestaporlossiguientescampos:  NombreTipoNULLFKDescripción accidentIdint(auto)‐‐‐ ‐‐‐ Identificadordelatabla accidentNamevarchar (20) ‐‐‐ ‐‐‐ Nombreporelquese identificaalaccidente accidentDescription textx‐‐‐ Descripciónasociadaal accidente documentationtextx ‐‐‐ Campoutilizadopara documentarelaccidente deformatécnica mathModId  int‐‐‐ TMathematicalModel Identificadordelmodelo matemáticoalque perteneceesteaccidente substanceIdint ‐‐‐ TSubstanceIdentificadordela sustanciaqueseestá utilizandoenelaccidente userIdint‐‐‐ TUserReferenciaalusuario creadordelaccidente   7.4.7.TablaTMap  Almacenatodoslosdatosnecesariosparapoderhacerusodelmapaenlaaplicación.  Sehacereferenciaa:  ‐ TUser:parasaberaquéusuarioperteneceelmapa  Latablaestácompuestaporlossiguientescampos:  NombreTipoNULLFKDescripción mapIdint(auto)‐‐‐ ‐‐‐ Identificadordelatabla mapNamevarchar(20) ‐‐‐ ‐‐‐ Nombreporelqueseidentificaal mapa mapDescriptiontextx‐‐‐ Descripciónasociadaalmapa urlvarchar(max) ‐‐‐ ‐‐‐ Urldondeestáguardadoelmapa xmaxfloat‐‐‐ ‐‐‐ Coordenadaxmáximadelmapa ymaxfloat ‐‐‐ ‐‐‐ Coordenadaymáximadelmapa xminfloat‐‐‐ ‐‐‐ Coordenadaxmínimadelmapa yminfloat ‐‐‐ ‐‐‐ Coordenadaymínimadelmapa userIdint‐‐‐ TUserUsuarioalqueperteneceelmapa     Diseño 88 7.4.8.TablaTResource  Almacenalosdatosnecesariosparaidentificaruntipoderecurso.Losrecursosson conceptosqueestándentrodelámbitodelosriesgos,siendoporejemplo:extintores, mangueras,etc.  SehacereferenciaalatablaTUser,parasaberaquéusuarioperteneceeltipode recurso.  Latablaestácompuestaporlossiguientescampos:  NombreTipoNULLFKDescripción resourceIdint(auto)‐‐‐ ‐‐‐ Identificadordelatabla resourceTypevarchar(20) ‐‐‐ ‐‐‐ Nombreconelqueseidentificaeste tipoderecurso isGlobalbit‐‐‐ ‐‐‐ Indicativodesiesunrecursocreado porunusuarioconcretooesglobala todoslosusuarios userDescriptiontextx ‐‐‐ Descripciónasociadaaltipode recurso colorint‐‐‐ ‐‐‐ Colorasociadoaltipoderecurso, todoslosrecursosdeestetipose pintaránenelmapaconestecolor userIdint ‐‐‐ TUserUsuarioalqueperteneceestetipode recurso   7.4.9.TablaTMathematicalModel  Almacenaelconjuntodemodelosmatemáticosofrecidosporlaaplicaciónpararealizarlas simulaciones.  Latablaestácompuestaporlossiguientescampos:  NombreTipoNULLFKDescripción mathModIdint(auto)‐‐‐ ‐‐‐ Identificadordelatabla mathModNamevarchar(20) ‐‐‐ ‐‐‐ Nombrequeidentificaalmodelo matemático accidentTypeIdint‐‐‐ TAccidentType Tipodeaccidenteparaelquese puedeaplicarelmodelo   7.4.10.TablaRSubstanceProperties  Almacenaelnombredelaspropiedadesquesenecesitanconoceracercadeuna sustanciaparapoderutilizarladentrodeunmodelomatemático.Sealmacenadeesta Universidad de Las Palmas de Gran Canaria 89 formaynodirectamentecomocolumnasdelatabla,paranotenerquerellenar propiedadessobreunasustanciaqueposteriormentenoserándeutilidad,deesta formasólosetendránaquellaspropiedadesquerealmenteseutilicen,yseirán añadiendomás,amedidaquetambiénsevayanañadiendonuevosmodelos matemáticos.  Sehacereferenciaalatabladondesealmacenanlosmodelosmatemáticosparasaber quépropiedadessenecesitanconocersobreunasustanciaenfuncióndelmodeloenel quevayanaserutilizadas.  Latablaestácompuestaporlossiguientescampos:  NombreTipoNULLFKDescripción substancePropertyId int(auto)‐‐‐ ‐‐‐ Identificadordela tabla propertyNamevarchar(10) ‐‐‐ ‐‐‐ Nombreque identificaala propiedad propertyTypevarchar(10)‐‐‐ ‐‐‐ Tipodelavariable quealmacenaráel valordeesta propiedad propertyMeasurevarchar(10) ‐‐‐ ‐‐‐ Unidadenlaquese mideesta propiedad mathModIdint‐‐‐ TMathematicalModelIdentificadordel modelomatemático dondesevaahacer usodeesta propiedad  7.4.11.TablaRSubstanceValues  Almacenalosvaloresdecadaunadelaspropiedadesdeunasustanciaespecífica.Comosevio enlatablaanterior(RSubstanceProperties),elmodelomatemáticoeselqueestablecelas propiedadesdeunasustanciaqueseránnecesariasparapoderejecutarloy,porotrolado,se tienenlassustanciasofrecidasporlaaplicación,asíquelatablaRSubstanceValuesrecogelos valorespropiosdelasustanciaparacadaunadeesaspropiedades.Elvalorseguardaráenun campodetextoporquenosepuedeconseguirquecadaregistrodeestatablatengauntipo distintoencadacolumna,asíqueayudadosporlatablaRSubstanceProperties,quealmacena eltipodedatodeestapropiedad,alahoradeprogramarsepodráhacerunaconversióndesde textohastaeltipoespecífico.  Sehacereferenciaa:  ‐ TSubstance:almacenalassustancias,parasaberdequésustanciasetrata  ‐ RSubstanceProperties:almacenalaspropiedadesdelosmodelosmatemáticos,para sabercuántosyquévaloreshayquealmacenarenlatablaactual Implementación 96  Fig. 33. Documentación de la API del visor  Elvisorofrecelasiguientefuncionalidad:  ‐ Mostrarpuntos/cuadrados,queenestecasoseránutilizadosparamostrar:  o Accidentes o Recursos  ‐ Mostraráreasenformadecírculoyrellenarlas,enestecasosehautilizado paramostrarlasáreasafectadasenelsupuestocasodequesucedieseel accidentedeclarado.Alpermitirrellenarlazona,seutilizauncolorparapoder diferenciarlas  ‐ Lasformasquesehayandeclaradoenelvisorpodránsermostradasu ocultadas  Universidad de Las Palmas de Gran Canaria 97  Fig. 34. Plataforma utilizando la funcionalidad del visor  Tantoenlafigura32comoenlafigura34sepuedeobservaruncuadroenlasección inferiorderecha,dentrodelvisor.Estecuadronoexisteenlaversiónfinaldela plataforma,perosetratadeundepuradorofrecidoporlaapidelvisor.Conesta opciónsepuederevisarentiempodeejecuciónsilapartegráficaseestácreandoy/o eliminandodeformacorrecta.   8.1.2.Accesoalservidor  Comosecomentóenlafasedediseño,paraaccederalservidorsehacreadounacapa deservicios.Estaclaseeslaencargadadeconectarconelservidorparahacerlas peticiones.  LaclaseServicestiene2atributosprincipales:  public class Services extends EventDispatcher { private var webService:WebService; private var wsdl:String; ...   ‐ LavariablewebService,detipoWebService,definelaconexiónconelservidor. EstaclaseproveeaccesoawebservicesremotosbasadosenSOAP.  ‐ Lavariablewsdlalmacenaladirecciónwsdldelwebservice,necesariapara realizarlaconexiónconelmismo. Implementación 98   Paraeltratamientodelresultadodevueltoporelservidor,laclaseServicedefineun eventoparalanzardetipoServiceResultEvent.  [Event(name="ServiceResultEvent", type="events.ServiceResultEvent.SERVICE_RESULT_EVENT")]   Estetipodeeventosehacreadoespecíficamenteparalanzarelresultadodevueltopor elservidor.Laclasequelodefinetiene2atributosprincipales:  public var message:String; public var resultEvent:ResultEvent;  EnmessagesepuedealmacenarelmensajedeseadoyresultEventseráelvalor devueltodesdeelservidor.  LaclasequehacelallamadaaServicessesuscribealeventoenconcretoquele interesadeestetipo.Acontinuaciónsepresentaunejemplodecómounaclasese suscribeaestetipodeevento,paraposteriormentepodertratarlo: services.addEventListener(EventsConstant.SET_SCENARIO_EVENT,setScenari oServiceEventHandler); services.setScenarioService(modelLocator.scenarioAux,modelLocator.user .userId);   Enlaprimeralínealaclasellamadorasesuscribealevento:SET_SCENARIO_EVENT, queesdetipoServiceResultEvent.Enestamismainstruccióndefinelafunciónquese harácargodeltratamientodelevento:setScenarioServiceEventHandler.Enlasegunda líneahaceelllamamientoaunafunciónconcretadeServicespasándolelosparámetros necesarios.  Porotrolado,dentrodelaclaseServices,lallamadaalservidorseestablecedela siguienteforma:  public function setScenarioService(scenario:Scenario, userId:int):void { var object:Object=converter.scenarioToObject(scenario); webService.setScenario.addEventListener(ResultEvent.RESULT, setScenarioServiceResultHandler); Universidad de Las Palmas de Gran Canaria 99 webService.setScenario.addEventListener(FaultEvent.FAULT, setScenarioServiceFaultHandler); webService.setScenario.resultFormat="object"; webService.setScenario.send(object,userId); } private function setScenarioServiceResultHandler(event:ResultEvent):void { var serviceResultEvent:ServiceResultEvent = new ServiceResultEvent("",event,EventsConstant.SET_SCENARIO_EVENT); dispatchEvent(serviceResultEvent); }  EnprimerlugarsesuscribealeventoRESULTyaleventoFAULTdelservidor,para saberenquémomentosehaobtenidounarespuestapositivaonegativadelmismo.A continuaciónseestablecelaformaencómosequiererecibirlarespuesta,enestecaso seráunobjeto.PorúltimosehacelallamadaalafuncióndelwebService.  LafunciónquesehadefinidoparatratareleventoRESULTdelservidor,enestecaso setScenarioServiceResultHandler,serálaencargadadelanzareleventodetipo ServiceResultEvent,paraquelaclasellamadorahagaeltratamientonecesarioconel resultadodevueltoporelservidor.   8.2.Servidor  Dentrodelservidorseconsiderarelevantelapropiaconfiguracióndelservidoryla formaencómosecomunicaconlaaplicacióncliente.Parapoderenviaryrecibirdatos sedebendefinirunaseriedeestructurasqueseexplicaránacontinuación.   8.2.1.ABCdelEndpoint  Comoseexplicóanteriormente,enelcapítulo7–sección:Tecnologíasutilizadas,para lacomunicaciónentreclienteyservidorsedebenestablecerlosendpointsoextremos. Cadanuevoendpointdefiniráunnuevocanaldecomunicaciónyunaformadistintade comunicarseentreclienteyservidor.Éstevendrádefinidoporelcomúnmente conocidocomoABCdelendpoint:Address,BindingyContract.  8.2.1.1.AddressyBinding  LaconfiguracióndelwebServicesedefineenelarchivoWeb.configdelservidor.Se debeestablecerladireccióndondeestáalojado(baseAddress),elendpointyeltipode binding.  <system.serviceModel> <services> Implementación 100 <service behaviorConfiguration="SimulatorService" name="Servicios.Simulador"> <host> <baseAddresses> <add baseAddress="http://193.145.154.10:8082/Servicios/"/> </baseAddresses> </host> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="" contract="Servicios.ISimulador"/> </service> </services> <behaviors> <serviceBehaviors> <behavior name="SimulatorService"> <serviceMetadata httpGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel>   8.2.1.2.Contract  Existendiversostiposdecontratos,comoyaseexplicóenelcapítuloanterior.Enel siguientecuadrosepresentaunejemplodelosquesehanutilizadoenesteproyecto. Loscontratosutilizadoshansido:ServiceContract,quedefineelcontratodelservicio, OperationContract,quedefinelosparámetrosdeentradayeltipodelvalordelasalida delasoperacionesdelwebServicey,DataContract,queseutilizaparadefinirlostipos dedatoscomplejosqueusaelservicio.     namespace Servicios { [ServiceContract] public interface ISimulador { [OperationContract] List<Substance> getAllSubstances(int userId); ... ... namespace Servicios { [DataContract] public class Accident { ... ...   Universidad de Las Palmas de Gran Canaria 101  8.2.2.UtilizacióndelmodeloFLI(FugadeLíquidoInflamable)  Enelcapítulo6,referentealanálisisdelaplataforma,alahoradeexponerlos distintosmodelosdesarrolladosenlamisma,seindicólaformaenqueseibaausar estemodelo.Dadasucomplejidadanivelcomputacional,elequipodelCEANI,quefue quienproporcionólaformadecalcularlosresultados,optóporlaelaboracióndeuna redneuronalqueentrenóenbaseaunelevadonúmerodemuestrasproporcionado porunsoftwareprofesionalutilizadoampliamenteenestecampo.  Parapoderhacerusodelaredneuronalfuenecesariocargarlasdistintassustancias sobrelasqueseharíaelcálculo,queenestecasohansido:  ‐ Acetona ‐ Gasoil ‐ Gasolina ‐ Tolueno  Esdecir,loscálculosqueelprogramaofrecesiemprehandeserparafenómenos peligrososdondeparticipenalgunadeestassustancias.Estosedebeaquelared neuronalfueentrenadaparacadaunadeestassustanciasenbasealosvaloresde muestraindicadosanteriormente.  Acontinuaciónsemuestraelejemplodecómosehizousodelassustanciasdentrodel servidor,paraelcálculodelaszonasafectadasporelderrame:    public double fli(float zoneValue, int substanceId, float diameter, float windSpeed, int leakType, float leakDuration) { BasicNetwork AcetonaNetwork = null; BasicNetwork GasoilNetwork = null; BasicNetwork GasolinaNetwork = null; BasicNetwork ToluenoNetwork = null; double radioOutput = 0.0; double diameterNorm = Normalize(diameter, 400, 10, 0.9, 0.1); double WindNorm = Normalize(windSpeed, 8, 1, 0.9, 0.1); double DiaNocheNorm = leakType==0 ? 0.1 : 0.9; double DurationNorm = Normalize(leakDuration, 120, 30, 0.9, 0.1); double zonaNorm = Normalize(zoneValue, 8, 4, 0.9, 0.1); //Primero: se cargan las redes, en función de la sustancia switch (substanceId) { case 19: Implementación 102 string AcetonaPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Substances/acetona.eg"); AcetonaNetwork = (BasicNetwork)EncogDirectoryPersistence.LoadObject(new FileInfo(AcetonaPath)); double[] radioNorm = new double[1]; AcetonaNetwork.Compute(new double[] { diameterNorm, WindNorm, DiaNocheNorm, DurationNorm, zonaNorm }, radioNorm); radioOutput = Denormalize(radioNorm[0], 230, 25, 0.9, 0.1); break; case 20: string GasoilPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Substances/gasoil.eg"); GasoilNetwork = (BasicNetwork)EncogDirectoryPersistence.LoadObject(new FileInfo(GasoilPath)); DurationNorm = Normalize(leakDuration, 180, 30, 0.9, 0.1); double[] radioNorm1 = new double[1]; GasoilNetwork.Compute(new double[] { diameterNorm, WindNorm, DiaNocheNorm, DurationNorm, zonaNorm }, radioNorm1); radioOutput = Denormalize(radioNorm1[0], 130, 20, 0.9, 0.1); break; case 21: string GasolinaPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Substances/gasolina.eg"); GasolinaNetwork = (BasicNetwork)EncogDirectoryPersistence.LoadObject(new FileInfo(GasolinaPath)); double[] radioNorm2 = new double[1]; GasolinaNetwork.Compute(new double[] { diameterNorm, WindNorm, DiaNocheNorm, DurationNorm, zonaNorm }, radioNorm2); radioOutput = Denormalize(radioNorm2[0], 160, 15, 0.9, 0.1); break; case 22: string ToluenoPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Substances/tolueno.eg"); ToluenoNetwork = (BasicNetwork)EncogDirectoryPersistence.LoadObject(new FileInfo(ToluenoPath)); double[] radioNorm3 = new double[1]; Universidad de Las Palmas de Gran Canaria 103 ToluenoNetwork.Compute(new double[] { diameterNorm, WindNorm, DiaNocheNorm, DurationNorm, zonaNorm }, radioNorm3); radioOutput = Denormalize(radioNorm3[0], 140, 10, 0.9, 0.1); break; } //Se calcula el valor return radioOutput; } ... private double Normalize(double input, double MaxInput, double MinInput, double MaxOutput, double MinOutput) { return ((input - MinInput) / (MaxInput - MinInput)) * (MaxOutput - MinOutput) + MinOutput; } private double Denormalize(double input, double MaxInput, double MinInput, double MaxOutput, double MinOutput) { return ((input - MinOutput) / (MaxOutput - MinOutput)) * (MaxInput - MinInput) + MinInput; }                    104     Universidad de Las Palmas de Gran Canaria 105 Capítulo9. Conclusiones   Enprimerlugarseconsideraimportantedestacarlaexperienciaquehaaportadoeste proyecto.DesdeeliniciodelosestudiosdelaIngenieríaInformática,sevan planteandodistintosproblemasquesehandesolucionar,sinembargo,normalmente setratadeproblemasacotados,seccionesdeunproyectomayoroproblemas relativamentepequeños.Esteproyectohabrindadolaoportunidaddeenfrentar directamenteunproyectomayor,partiendodesdeeliniciodelprocesohastasu consecución,obteniendoelproductorequeridoy,deestaforma,obligandoapasar portodoelprocesoquerequiereelaborarunproyectodeprincipioafin.  Apesardeserunproyectoindividual,sehautilizadouncomponentedesarrolladoen otroproyecto.Elhechodehabertenidoqueintegrarotroproductotambiénaporta unamayordificultad,siendonecesarioestudiarytrabajarconladocumentación generadaparaesecomponente.Alsernecesariaesacomunicaciónentrelosdos proyectos,sehatenidoquetrabajarenconjuntoparaobtenerlasespecificacionesde entradaydesalida.Estacomunicacióntambiénhaofrecidolaoportunidaddetrabajar engrupoyconocertodoloqueelloimplica.  Paraeldesarrollodelproyectosehanutilizadolenguajesdeprogramación desconocidos,aligualqueelusodeunaarquitecturaclienteservidor.Todoloquese hatenidoqueleeryestudiar,todoloquesehatenidoqueinvestigarparapoder utilizarlo,seconsideraquehaaportadounenriquecimientoanivelcurricular.Quizáno seaunaexperienciademostrable,peroindependientementedeesedetalle,esalgo quesehapodidoaprenderparautilizarenunfuturoparaeldesarrolloprofesional.  Ademásdeloqueesteproyectohaaportadopersonalyprofesionalmente,también seríaconvenientedestacarloqueesteproyectopuedeaportaralasociedad, concretamentealámbitoquelecompete,elestudiodelosriesgosdeaccidentesen entornosindustriales.Comosehaidoexplicandoalolargodetodalamemoria,el estudiodelosriesgosenentornosindustrialesesmuyimportanteparaconseguirque sereduzcanlosaccidenteslaborales.Estaplataformaporsísolanopuedehacerel estudio,perosipuedecontribuirenelmismoaportandolosresultadosdeloscálculos basadosenlosmodelosmatemáticos.  Alolargodelosaños,losestudiossobreprevenciónderiesgoslaboraleshanido ganandolaimportanciaquemerecenyactualmenteesunodeloscamposmás relevantes.Porestemotivoexistelaobligatoriedadderealizarlosplanesde emergenciainteriorenlasempresas,incluyendoelestudioderiesgosdeaccidentes graves.Estaplataformaofrecealosexpertoslaposibilidadderealizartodoslos cálculosnecesarios(paralosmodelosqueestándesarrollados)yademásposicionarlos enunmapadelsitiosobreelqueseestérealizandoelestudio.Alpoderposicionarlos accidentesyalobtenerlasáreasqueseveríanafectadasporlosmismos,entreotras cosas,sepodría: 112   Universidad de Las Palmas de Gran Canaria 113 AnexoI.Manualdeusuario  Acontinuaciónseindicanlospasosbásicosparapodercrearunescenarioyrealizar unasimulación.  A1.1.Accesoalaaplicación  Parateneraccesoalaaplicaciónhayqueaccederalasiguientedirección:  http://193.145.154.10:8082/CLIENTE/General.html  Unavezseaccedeaestawebsepresentalapantallaprincipaldelaaplicación,que muestra:  ‐ lacabecera, ‐ unpequeñoresumensobreparaqueesutilizaday ‐ elaccesoalregistrooaliniciodesesión    Fig. 35. Pantalla principal   A1.2.Registrodeusuarios  Elregistrodeunnuevousuarioseconsigueaccediendoalenlaceproporcionadoenla pantallaprincipal:RealizarRegistro.Paracompletarloseránnecesariosalmenoslos camposmarcadoscomoobligatorios,esdecir,losqueestánseñaladosconun asterisco. Manual de usuario 114  Fig. 36. Pantalla de registro de usuario  A1.3.Login  Paraaccederalaaplicaciónyatodoslosdatosquehacargadoelusuario,sedebe elegirlaopcióndeloginenlapantallaprincipaleingresarlosvaloressolicitados: usuarioycontraseña.Laaplicacióncomprobarálaveracidaddelosdatos,unavezse hacomprobadoqueelusuarioexiste,secargarántodoslosdatos.    Fig. 37. Inicio de sesión  Universidad de Las Palmas de Gran Canaria 115  Fig. 38. Listado de escenarios del usuario   A1.4.Modos  Dentrodelaaplicaciónsepuedetrabajarendosmodosdistintos: ‐ modocreación ‐ modosimulación  A1.4.1.Modocreación  Elmodocreaciónseestablececuandoseestácreandounnuevoescenario.Existen algunascaracterísticasquenosonaccesiblesdesdeestemodo.Estosedebeaque  A1.4.2.Modosimulación  Cuandounusuarioyahaguardadounescenarioyaccedeposteriormenteparasu tratamiento,sedicequeestamosenmodosimulación.Enestemodoestánaccesibles todaslascaracterísticasdelaaplicación,entreotraslasimulacióndelosaccidentes.   A1.5.Crearunnuevoescenario  Parapodercrearunnuevoescenario,unavezseaccedealapantallaprincipaldespués dehaberselogueado,sedebepulsarenelbotónseñalizadoconun“+”.Acontinuación laaplicaciónpasaaotrapantalladondesehanderellenarunaseriedecampos.  Manual de usuario 116 Enprimerlugarsedebeindicarunnombreyunadescripción,siendolasegunda opcional.   Fig. 39. Formulario para crear un nuevo escenario A1.5.1.Asociarunmapa  Encasodequererposicionarlosaccidentesy/orecursossobreunmapa,setendráque haberasociadounopreviamente.Paraasociarunmapaalescenarioqueseestá creando,sehadeseleccionarelbotón“seleccionarmapa”.Enlapantallaseveráel listadodemapasquetieneelusuarioyentoncespodráelegirelmapadeseadoparael escenarioencreación.Encasodequenosequieraasociarningúnmapa,elusuario debeseleccionarelcheckboxindicadoparatalfin.  A1.5.2.Crearnuevoaccidente  Acontinuación,paracrearunnuevoaccidentesehadepicarsobreelbotónseñalizado conun“+”dentrodelapestañaAccidentes,dentrodeEscenarios.  Universidad de Las Palmas de Gran Canaria 117  Fig. 40. Panel de nuevo accidente  Comosepuedeobservarenlafiguraanterior,unavezsehaseleccionadolaopciónde nuevoaccidentesedespliegaunanuevaventana.Enestaventanasesolicitanlosdatos básicosparacrearelnuevoaccidente.  Cuandoseestácreandounnuevoaccidentesedeshabilitanelrestodeopcioneshasta quenoseterminayseguardaosecancela.  Laventanadenuevoaccidenteestádivididaen4secciones:  1. Datosgenerales:aquísepidendatosquenoafectanalassimulaciones,tales comoelnombreyladescripcióndelaccidente  2. Posicionamiento:sedalaopcióndeposicionarelaccidentesobreelmapa desdeelmomentodecreación.Apesardecontarconunmapaasociadonoes obligatorioposicionarlosaccidentes. Existen2formasdeposicionarelaccidente:  o Posicionamientomanual:elusuariopuedeintroducirlascoordenadasa mano.Laposiciónindicadadebeestardentrodelascoordenadasdel mapaquefueronestablecidasporelusuariocuandologuardó o Posicionamientoatravésdelmapa:elusuariopinchasobrelaposición dondedeseamarcarelaccidenteylaaplicaciónrecogelaposición exactaencoordenadas. Manual de usuario 118  Fig. 41. Posicionamiento del accidente  3. Tipo:enestasecciónsedebenseleccionarlaspropiedadesquedefiniránal accidente.Sedebeindicareltipodeaccidente,elmodelomatemáticoquese utilizaráylasustanciacorrespondiente.  4. Datosespecíficos:estosdatosson,comosupropionombreindica,específicos deltipodeaccidente.Laaplicaciónpedirálosdatosquenecesitaparapoder realizarlasimulaciónposteriormente.EnelcasodelmodeloTNT,sesolicitala masadeexplosivoysielcálculoesporsobrepresiónoimpulso.  Unavezsehaterminadoderellenarlosdatossolicitadosseledaaguardar.Sitodos estáncompletoslosdatosobligatoriosynohayningúnvalorincorrecto,queexceda algúnparámetromarcado,elaccidenteseguardaráypasaráaversedentrodelatabla deaccidentesquehaydentrodelpanel.  A1.5.3.Modificaraccidente  Paramodificarunaccidentesedebeseleccionarelaccidenteypincharsobreelbotón “Modificar”queapareceenlaventanadeinformacióndelmismo.Hayalgunas modificacionesquenoestánpermitidas,sonaquellasquenodanopciónalcambio cuandoseseleccionalaopciónmodificar.Porejemplo,seconsideraquesisequiere cambiarelmodelomatemáticoesmejorcrearunnuevoaccidente,enlugarde modificarelexistente.  Cuandosemodificandatosqueafectanalresultadodeunasimulación,encasode existirdatossimulados,semarcancomonoactualizados,deestaformaelusuario sabrácuandolosdatosqueestávisualizandonosoncorrectos,pornobasarseenlos valoresindicadosenelaccidente.  Universidad de Las Palmas de Gran Canaria 119 A1.5.4.Eliminaraccidente  Paraeliminarunaccidentebastaconseleccionarloypulsarsobreelbotón“‐“oel botóneliminarquesevisualizaenlaventanadeinformacióndelaccidente.  A1.5.5.Asociarunnuevorecurso  Paracrearunnuevorecursodentrodelescenarioqueseestácreandobastacon accederalapestañaderecursosypincharsobreelbotón“+”.Acontinuaciónsaldrá unanuevaventanaquesolicitarálosdatosnecesarios.Losdatossolicitadosestarán separadosen2gruposyserán:  1. Tipoderecurso,nombreydescripción 2. Posicionamiento.Aligualquelosaccidentes,losrecursostambiénsepueden posicionar.Laformadeposicionarlosrecursosesidénticaalaformade posicionarlosaccidentes.  A1.5.6.Eliminarunrecurso  Bastaconseleccionarelrecursoquesedeseaeliminarypincharsobreelbotón“‐“.La otraopciónespincharsobreelbotón“Eliminar”queproporcionalaventanade informacióndelrecurso  A1.5.7.Guardarescenario  Unavezsehanrellenadotodoslosdatosnecesariossobremapas,accidentesy recursos,elusuariodebepincharsobreelbotón“Guardardatos”.Siexistiesealgún problemaconalgunodelosvaloresinsertados,laaplicaciónlanzaráunaviso indicándolo.   A1.6.Simulación  Parapodersimularlosdatosdelosaccidentesnosdebemosencontrarenmodo simulación.Comoseexplicóenlaseccióncorrespondiente,elmododesimulaciónse estableceunavezyasehaguardadoelescenarioyseaccededenuevoaél.  A1.6.1.Añadirnuevazonaparasimular  Parapoderrealizarlasimulación,elusuariodebeseleccionarlaszonassobrelasque quiereobtenerunresultado,paraellodebeseleccionarelaccidentequedeseasimular yposicionarseenlapestañazonas.Paraañadirunazonadebepincharsobreelbotón “+”,entonceslaaplicaciónlanzaráotraventanadondepuedeseleccionartantaszonas comodesee(Fig.42). Manual de usuario 120 A1.6.2.Eliminarunazona  Paraeliminarunazonaqueyanointeresatenerasociadaaunaccidente,bastacon pulsarsobreelbotóneliminarqueseencuentraencadaregistrodelatabladezonas (Fig.43).   Fig. 42. Añadir zona al accidente para la simulación   Fig. 43. Botón eliminar zona  Universidad de Las Palmas de Gran Canaria 121 A1.6.3.Simularzonas  Parasimularunazonaexisten2formasdistintasdehacerlo:  ‐ Porgrupo:siexistenvariaszonasquesedeseansimular,sedebepincharsobre elbotónqueseencuentraenlaparteinferiorderechadelaventana“Simular”, deestaformasesimularántodaslaszonasasociadasalaccidente.  ‐ Deformaindividual:siporelcontrario,sólosequieresimularunazona concretaobviandoelrestodezonas,sedebepulsarsobreelbotón“Simular” queseencuentraenlamismafiladelatabladondeapareceellistadodezonas. Cadaregistrodelatablatieneunbotóndesimulación.  Unavezsesimulanlaszonas,semuestranenelmapalosresultadosencasodeestar posicionados.   Fig. 44. Representación de los valores simulados sobre el mapa  Losdatossepuedenmostraryocultarpinchandosobreelbotónqueapareceencada registrodelatablayquetienecomoindicativounojo(cuandoelaccidenteseestá mostrando)ounojoconunacruzroja(cuandoelaccidenteestáoculto).Siseoculta unaccidente,seocultantodassuszonas 