Reporte Técnico RT-ID-/ de Diciembre 2009 Revisado

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Reporte Técnico RT-ID-/009. 4 de Diciembre 2009 Revisado"

Transcripción

1 Reporte Técnico RT-ID-/009 Erlang Está Listo para Sistemas de Alta Integridad? Nora Sabina María Blet Departamento de Sistemas e Informática Escuela de Ingeniería Electrónica Facultad de Ciencias Exactas, Ingeniería y Agrimensura Universidad Nacional de Rosario Disciplina: Informática, Lenguajes de Programación 4 de Diciembre 2009 Revisado Secretaría de Ciencia y Técnica Facultad de Ciencias Exactas, Ingeniería y Agrimensura Universidad Nacional de Rosario Av. Pellegrini Rosario Argentina

2 Este documento es publicado por la FCEIA para su consulta externa. El mismo se publica como Reporte de Investigación para divulgación de las tareas científicas que se desarrollan en la FCEIA, Universidad Nacional de Rosario. Los autores conservan los derechos de autoría y copia de la totalidad de su trabajo aquí publicado. Luego de su posterior eventual publicación externa a la FCEIA, los requerimientos deberán dirigirse a los autores respectivos. El contenido de este reporte refleja la visión de los autores, quienes se responsabilizan por los datos presentados, los cuales no necesariamente reflejan la visión de la SeCyT-FCEIA. Tanto la SeCyT-FCEIA como los autores del presente reporte no se responsabilizan por el uso que pudiera hacerse de la información y/o metodologías publicadas. Cualquier sugerencia dirigirla a: rtsecyt@fceia.unr.edu.ar 2

3 Erlang Está Listo para Sistemas de Alta Integridad? Nora Sabina María Blet * Departamento de Sistemas e Informática Escuela de Ingeniería Electrónica Facultad de Ciencias Exactas, Ingeniería y Agrimensura Universidad Nacional de Rosario Resumen. Este informe resume una evaluación del lenguaje de programación funcional Erlang, en comparación con los estrictos requisitos impuestos a lenguajes de programación para aplicaciones relacionadas con la fiabilidad. Para este propósito se escogen veintitrés criterios, disponibles en la literatura, que examinan el uso de Java en el desarrollo de sistemas de alta integridad. En base a lecciones aprendidas en proyectos industriales Erlang a gran escala, se discuten algunas posibles mejoras. Palabras Claves: Erlang, Programación Concurrente, Programación Distribuida, Tolerancia a Fallos, Evaluación de Lenguajes de Programación, Sistemas Totalmente Fiables. Is Erlang Ready for Use in Safety-Critical Systems? Abstract. This report summarises an assessment of the Erlang programming language against the strict requirements imposed on programming languages for safety related applications. For this purpose twenty-three criteria, available in the literature, for investigating the use of Java in the development of high integrity systems have been chosen. Based on some lessons learned on industrial projects possible further enhancements are discussed. Keywords: Erlang, Concurrent Programming, Distributed Programming, Fault-Tolerance, Assessment of Programming Languages, Safety-Critical Systems. * nblet@fceia.unr.edu.ar 3

4 1 Introducción En el contexto de sistemas distribuidos de control (NCS, por Networked Control Systems) tolerantes a fallos software mediante manejo de excepciones, un lenguaje que ofrece algunas características muy interesantes e inusuales, es Erlang. Erlang es un lenguaje funcional, concurrente y distribuido, desarrollado a fines de los 80 en los laboratorios de la corporación Ericsson, con el fin de manejar la complejidad propia del desarrollo de grandes sistemas distribuidos de control, tolerantes a fallos y con características de tiempo real flexibles (soft). La idea original era utilizar un lenguaje de alto nivel en el dominio de sistemas de telecomunicaciones de misión crítica, con requisitos de disponibilidad de hasta un %. Las aplicaciones Erlang son configurables dinámicamente, resilientes ante fallos de software o hardware y capaces de garantizar una operación non-stop, lo cual se consiguió llevando al extremo el modelo de procesos UNIX. A nivel software estos requerimientos son similares a aquellos de aplicaciones basadas en Internet, resultando Erlang un buen candidato para el desarrollo de servicios basados en Web. Usuarios tales como Amazon, Google, Yahoo, Facebook, entre otros, confían en las capacidades del lenguaje para implementar sus sistemas. Demás áreas en las cuales ha sido aplicado: organización del control de tráfico aéreo/ferroviario y de otros sistemas embebidos complejos, mensajería instantánea, sistemas de seguridad crítica para pago electrónico, bases de datos, modelado 3D, implementación de robots autónomos móviles, etc. Con el convencimiento que Erlang ofrece una visión muy reveladora para los futuros diseños de sistemas de manejo de excepciones distribuidas y concurrentes, sería un ejercicio interesante y esclarecedor evaluarlo en comparación con los estrictos requisitos impuestos a un lenguaje de programación para aplicaciones relacionadas con la fiabilidad. Para este análisis se utilizan los veintitrés criterios propuestos en un artículo de la literatura [16] que investiga el uso de Java en el desarrollo de sistemas de alta integridad. Tomando como base algunas lecciones aprendidas en proyectos industriales y transmitidas por desarrolladores Erlang, se discuten aspectos del lenguaje que deberían mejorarse. El resto del informe está estructurado de la siguiente forma: en Sección 2 se analizan cada uno de los veintitrés criterios mencionados, separados en dos niveles: obligatorios (Subsección 2.1) y aconsejables (Subsección 2.2). Los requisitos obligatorios son aquellos que un lenguaje de programación debe satisfacer para ser considerado en la implementación de sistemas de software de alta integridad. Aquéllos aconsejables se consideran favorables para obtener sistemas más eficientes, claros y estructurados. En Sección 3 se realiza el veredicto final y se propone la adopción de Erlang para la implementación de un middleware orientado a mensajes para sistemas distribuidos de control (NCS), que constituye en realidad el origen y motivo de este estudio. 2 Requisitos del lenguaje de programación 2.1 Requisitos obligatorios Seguridad de tipos. La especialidad de Erlang, en contraste con la mayoría de los lenguajes funcionales, es su naturaleza fuertemente dinámica: las variables son dinámicamente 4

5 tipificadas, es decir, no son verificadas en tiempo de compilación sino que son estrictamente chequeadas en tiempo de ejecución (type-safe), lo cual probablemente produce una significativa disminución de la performance. Aunque los mecanismos del lenguaje que proveen tolerancia a fallos ayudan a cubrir errores residuales en el código de producción, un sistema de tipos estáticos produciría claros beneficios en la práctica; más aún, es un tema recurrente año a año en las Erlang Users Conference. La alta flexibilidad del lenguaje, hace muy difícil introducir un sistema de tipos sin eliminar parte de esta propiedad. En lugar de introducir tipos estáticos, el uso de herramientas como XREF y DIALYZER (por Discrepancy AnaLYZer of Erlang programs) constituye un balance ideal entre la flexibilidad de un desarrollo Erlang con el requerimiento de obtener código robusto y seguro. DIALYZER [18], [19] es una herramienta de análisis estático automático que detecta defectos, a los que se los denomina discrepancias, en código fuente o en bytecode y que, podrían estar ocultos especialmente en aquellas partes del programa que no son comúnmente ejecutadas o ensayadas. DIALYZER es aplicado en proyectos reales del área telecomunicaciones con más de un millón de líneas de código. Efectos secundarios. La mayor parte del lenguaje y, posiblemente la menos interesante, es el subconjunto secuencial del mismo el cual, puede caracterizarse como lenguaje estrictamente funcional y que, en su mayoría está libre de efectos secundarios: sólo hay unas pocas operaciones que los producen y prácticamente no se utilizan [1]. En la parte que maneja concurrencia, típicamente se producen efectos secundarios al invocar funciones que envían o reciben mensajes, leen de una cola de ellos o generan nuevos procesos. Erlang fue intencionalmente diseñado para ser un lenguaje pequeño utilizado conjuntamente con librerías que contienen un conjunto muy grande de funciones incorporadas, comúnmente denominadas BIFs (por las siglas de built-in functions); parecen estar escritas en Erlang, pero como sería muy ineficiente o imposible hacerlo están implementadas en C en la máquina virtual Erlang (llamada BEAM). Se producen efectos secundarios al invocar algunas de estas BIFs, lo cual hace el código menos reutilizable puesto que, causan cambios permanentes a su entorno y debe conocerse el estado exacto de un proceso antes de esta operación. Debido a que Erlang se diseñó como un lenguaje para controlar aplicaciones en tiempo real, donde la manipulación del hardware y la estricta secuencia de eventos son muy importantes, no puede comportarse como un lenguaje puramente funcional: una invocación a función puede producir una acción en el hardware y no hay garantías que éste responderá siempre de la misma forma; comportándose Erlang en este caso como un lenguaje imperativo, antes que estrictamente funcional. Por tanto, si no pueden eliminarse completamente los efectos secundarios, deben mantenerse restringidos a un número pequeño de módulos del programa, escritos, ensayados y documentados por los programadores más experimentados; las reglas de programación en Erlang [1] apoyan este enfoque. En [22] se propone como posible mejora, el desarrollo de un mini-lenguaje que entre otros requisitos a satisfacer, no debería permitir que los efectos secundarios sean visibles fuera del código del mismo; tal vez inspirado en el lenguaje funcional SISAL diseñado para computación paralela. Modularidad. Armstrong [1], uno de los creadores de Erlang, aplica viejos principios fundamentales para obtener un lenguaje de programación de sistemas tolerantes a fallos, tales como aquellos descriptos en un artículo de Gray [13]; una de las claves para ello: modularidad a través de procesos y mensajes. El proceso, ciudadano de 1ª clase en Erlang, provee una bien definida unidad de modularidad, servicio y contención de fallos. La filosofía fail-fast es central en el lenguaje; el lema de Erlang es: falle! y deje que otro proceso se ocupe de la recuperación de errores. Cada proceso puede pensarse como una máquina virtual 5

6 autocontenida en cada uno de ellos; procesos auténticos son comunes en sistemas operativos mientras que extremadamente inusuales en los lenguajes de programación de producción. La unidad de compilación es el módulo, con un nombre exclusivo y que contiene funciones (como en cualquier lenguaje funcional, objetos de 1ª clase); sólo aquellas marcadas como exportadas pueden invocarse desde otros módulos. Erlang se usa a menudo en sistemas de muy alta disponibilidad denominados nueve nueves, operables el % del tiempo o inactivos menos de 31ms. al año; tales sistemas no pueden detenerse para mejorar las prestaciones o instalar mecanismos de recuperación de errores; por tanto el lenguaje provee soporte para actualizar el código mientras el sistema está en funcionamiento ( hot-code loading ) [2]. Cuando se carga una nueva versión de un módulo, los nuevos procesos generados la ejecutarán mientras que, aquellos que estaban ejecutándose lo continuarán haciendo sin perturbarse. Los usuarios pueden controlar en detalle este proceso, ya sea en el momento de la carga inicial (en sistemas embebidos) o cuando se necesite (sistemas de propósito general). Armstrong [2] propone como posible mejora considerar a los módulos objetos de 1ª clase al igual que las funciones: debería permitirse tener múltiples versiones de ellos y dejar que el recolector de basura se encargue del código viejo que ya no pueda evaluarse. Semántica formal/ Estándares internacionales. Puesto que la historia de Erlang comienza en la industria y no en la universidad, fue definido principalmente en términos de su implementación; aún no tiene definida una semántica formal. Hubo varios intentos de formalización semántica, directamente o utilizando como base el cálculo-π [21]. La semántica obtenida fue empleada en varios proyectos de verificación [10] y para realizar una traslación del lenguaje, a la que se le aplicó model checking [4]. No existen estándares estables para el lenguaje. Bien comprendido. Algunas de las razones por las cuales Erlang es tan popular en la industria son su simpleza y elegancia, más allá de que requiere un cambio de mentalidad o de forma de pensar un programa. Este lenguaje basado en la sencillez del modelo de Actor para la comunicación interprocesos, permite escribir código con menos bugs, incrementando la productividad de un programador en un factor entre 4 y 10. Erlang está ganando reputación como lenguaje para crear un prototipo en forma muy rápida y, con pequeñas modificaciones, la versión final luego de una curva de aprendizaje inicial pronunciada. De las experiencias realizadas con el lenguaje [11], se considera que cualquier programador con espíritu aventurero, en menos de un mes puede realizar un aporte no trivial a cualquier proyecto Erlang. En cuanto a la dificultad para contratar programadores, proclamada en muchas publicaciones, se considera que es la misma que en el caso de programadores expertos en aplicaciones multihilos C++ o Java. La mayoría de los programadores de lenguajes funcionales son apasionados de la programación, lo cual en general, hace que sean muy buenos en su trabajo. Erlang es open source desde hace más de una década con lo cual la comunidad de usuarios y desarrolladores crece en forma sostenida, con beneficio adicional para Ericsson puesto que, han comenzado a reparar algunos bugs y proponer mejoras al lenguaje. Soporte para aplicaciones embebidas. Erlang es utilizado hoy en día por muchas compañías para implementar sistemas embebidos complejos con características de tiempo real flexibles, donde se manejen tiempos de respuesta del orden de milisegundos, a pesar que carece de características esenciales de los lenguajes de programación en tiempo real; el elemento tiempo no es tenido en cuenta salvo por el uso de timeouts y manejo de excepciones en tiempo real. 6

7 En un artículo reciente [20] se propone la implementación de un planificador de tareas de tiempo real estrictas (hard), enteramente escrito en Erlang y perfectamente integrado con la máquina virtual, mejora esperada en el área de robótica [23]. El trabajo está aún en la etapa inicial y no encara problemas tales como, paso de mensajes en tiempo real y efectos del comportamiento impredecible del recolector de basura. Este último es un problema crucial que, debe resolverse antes de obtener verdadero soporte para tiempo real estricto. Concurrencia. Erlang fue diseñado para construir programas concurrentes non stop [1]; usa procesos concurrentes, fuertemente aislados que no utilizan memoria compartida y se comunican mediante paso de mensajes asincrónicos. Los procesos Erlang son extremadamente livianos y pertenecen al lenguaje, no al sistema operativo; pueden ejecutarse en un único procesador, en uno multicore o en una red de ellos. En el mundo de Erlang no se necesita exclusión mutua ni mecanismos de sincronización. El emulador Erlang puede crear un nuevo proceso en menos de 1µs y ejecutar millones simultáneamente [17]; cada uno ocupa menos de 1KB de memoria y el paso de mensajes entre ellos se realiza en centésimas de nanosegundos. Para obtener tolerancia a fallos el lenguaje hace uso extensivo de procesos fail-fast, una técnica muy utilizada en plataformas hardware para conseguir este fin pero no tanto en soluciones software. El modelo de programación usado comúnmente, basado en threads, hace extremadamente difícil aislar componentes entre sí: un error en uno de ellos puede propagarse hacia otros y dañar la consistencia interna del sistema. El lenguaje fue diseñado con el objetivo en mente de proveer una mejor forma de escribir programas para aplicaciones en el área de telecomunicaciones que, por naturaleza son altamente concurrentes y tolerantes a fallos: un switch maneja decenas o cientos de miles de transacciones simultáneamente. En realidad más que un lenguaje, Erlang implica toda una filosofía que se denominó Programación Orientada a Concurrencia (COP por Concurrency-Oriented Programming), por analogía con Programación Orientada a Objetos (OOP). COP provee dos de las principales ventajas de usar OOP: el polimorfismo y el uso de protocolos definidos que tienen las mismas interfaces de paso de mensajes entre instancias de diferentes tipos de procesos. En COP la estructura concurrente del programa imita aquella de la aplicación, por tanto es apropiada para aplicaciones que modelen o interactúen con el mundo real, en el cual las actividades puramente secuenciales son una rareza. A pesar de la extrema resiliencia frente a sobrecargas que exhiben las aplicaciones distribuidas Erlang, el aislamiento entre procesos no es perfecto. Un proceso puede realizar un ataque de denegación de servicio a otro y llegar a agotar recursos considerados críticos, entre otros daños. En [25] se investiga la posibilidad de detectar este tipo de ataques, en un ambicioso intento de añadir capacidades basadas en control de acceso y comunicaciones seguras mediante criptografía. Actualmente, Erlang tiene un modelo de seguridad basado en cookies (o sea, basado en la confianza), el cual puede ser adecuado para redes con firewalls pero no para aquellas abiertas. Otra posible mejora apuntada por Armstrong [2] es la modificación del actual modelo de seguridad todo o nada de Erlang, para permitir distintos niveles de seguridad o confianza. En [25] se propone una jerarquía de nodos con distintos niveles de permiso de acceso a los recursos. Predictibilidad functional. Los análisis de flujo en los lenguajes funcionales son más complejos que en el caso de lenguajes imperativos; usualmente se basan en grafos de flujo que modelan el flujo de datos y de control del fragmento de código verificado. Al momento existe una propuesta de análisis de flujo para programas en Erlang [26]. 7

8 Predictibilidad temporal. El uso de máquina virtual y recolector de basura automático complican el análisis del tiempo de ejecución en el peor caso (WCET). Análisis de la utilización de recursos. Una aplicación típica Erlang utiliza una gran cantidad de procesos livianos, cuyo requerimiento de memoria es extremadamente difícil de predecir de antemano puesto que varía dinámicamente. Se están llevando a cabo investigaciones al respecto [25]. En algunas aplicaciones descartan el uso del lenguaje por el tamaño de memoria utilizada [7]. La cuestión reside en el método actual de recolección de basura pensado para sistemas en tiempo real flexibles; la actual performance parece ser aceptable en aplicaciones con procesos de vida corta y cuya necesidad de memoria es pequeña. Se desconoce si los autores de [7] probaron invocar la función erlang:hibernate [15] entre pasos de mensajes, que reduce drásticamente el uso de memoria sin incrementar significativamente el consumo de CPU. En [27] se exploran dos arquitecturas de memoria alternativas a fin de mejorar el desempeño global; ambas están aún en etapa experimental. Sigue pendiente la investigación del uso de recolectores de basura de tipo sin interrumpir, en lugar del actual parar el mundo que no es apropiado para la implementación de sistemas de tiempo real estrictos y que complementaría el estudio realizado en [27]. En una de las últimas revisiones de Erlang (2006) se incorpora soporte completamente transparente para SMP (Symmetric Multi Processing); los tests demuestran que aplicaciones ya existentes [8], sin modificaciones al utilizar arquitecturas multicore, mejoran significativamente su performance. Compilador y entorno de ejecución validados. La validación del compilador y la máquina virtual Erlang son temas pendientes de investigación. Run-time system support. El conjunto de librerías, aplicaciones, utilidades y módulos producidos simultáneamente con cada nueva versión de Erlang, se agrupan bajo el nombre de Open Telecom Platform (OTP) y se utiliza la denominación Erlang/OTP para referirse a la plataforma completa. Erlang está constituido por un núcleo (Erlang Runtime System) sobre el cual se ejecutan las librerías, incluyendo además la máquina virtual y las librerías estándares. Estas últimas incluyen módulos para la manipulación de las principales estructuras de datos del lenguaje además de componentes genéricos encapsulados como patrones de diseño (llamados behaviors), resultado de la experiencia de muchos años de construir sistemas tolerantes a fallos. También se incluye un conjunto muy completo y documentado de librerías y aplicaciones de propósito general; más aún, existe toda una filosofía homogénea de programación subyacente a esta plataforma. Aunque el lenguaje provee muchas características de alto nivel, la verificación de componentes de Erlang/OTP es aún no trivial; una forma posible de hacerlo es mediante model checking [5], [4], [14] que utiliza como base el álgebra de procesos µcrl. Debido al uso de patrones de diseño, los espacios de estados obtenidos a partir del modelo de fallas, son relativamente pequeños y pueden generarse automáticamente, haciendo factible el uso de esta técnica de verificación. 2.2 Requisitos aconsejables Manejo de excepciones/comportamiento frente a fallos. Erlang tiene un sencillo sistema de manejo de excepciones [6] que ha probado ser muy eficiente. Aunque dicho sistema ofrece primitivas simples mediante la composición de las mismas pueden implementarse sistemas 8

9 muy complejos. Las primitivas de concurrencia no sólo posibilitan crear hilos de control sino que, permiten a partes de una aplicación el monitoreo de otras y la reinicialización de aquéllas que fallen, aún si se ejecutan en distintos hosts conectados mediante una red. Erlang propicia el enfoque de detección dinámica y manejo de errores denominado programación ofensiva (contrapuesta a la programación defensiva) o, filosofía let it crash o fail-fast ; esto lo logra usando patrones de diseño denominados árboles de supervisión, que semejan la organización jerárquica de una empresa y encapsulan el monitoreo de un proceso por otro. Este patrón de supervisión, la versión Erlang de una niñera, es magistralmente explicado en detalle por Jim Larson en [17]: determinados procesos denominados supervisores monitorean todos los procesos importantes llamados trabajadores, los cuales son los que realmente hacen el trabajo. Si un proceso termina anormalmente, el supervisor correspondiente recibe un mensaje al respecto y, dependiendo de la razón de la finalización puede realizar diferentes acciones: registrar un mensaje de error, enviar un mensaje a otro proceso acerca de este evento o arrancar nuevamente el mismo proceso o uno nuevo que lo reemplace. Dentro de esta filosofía se modelan todas las fallas como permanentes; manteniendo simple el modelo de fallas, el algoritmo de recuperación de las mismas, también lo hará. Esta estrategia permite además obtener una clara separación entre el código correspondiente a la corrección de errores, de aquél dedicado al funcionamiento normal de la aplicación, posibilitando el diseño de aplicaciones altamente escalables y robustas. Este tipo de modelo puede reproducirse en otros lenguajes. La posibilidad de reconfiguración dinámica (hot load), ya mencionada, actúa como otro mecanismo de tolerancia a fallos. Modelo de matemáticas. Erlang usa enteros con precisión arbitraria [3], sólo limitada por la memoria disponible; la aritmética entera es exacta, por lo cual no hay que preocuparse de overflows o de no poder representar enteros en ciertos tamaños de palabras. Los números en punto flotante se almacenan internamente en el formato IEEE 754 doble precisión (64-bits), pudiendo representar números reales en el rango a Larson en [17], considera que el lenguaje no es bueno en cálculos de punto flotante intensivos. Soporte para documentación del usuario. El símbolo del % indica el comienzo de un comentario hasta el final de línea y, no posee ninguno para marcar aquellos de más de una línea. Al ser Erlang un lenguaje con tipos dinámicos requiere de comentarios para describir las estructuras de datos del programa a fin de mejorar la legibilidad. Existe además un generador de documentación llamado EDOC [19], inspirado en la herramienta JAVADOC de Java y adaptado a las convenciones del mundo Erlang; EDOC genera documentación en forma automática a partir de anotaciones manuales de tipos. Subtipos y enumeraciones. Erlang no soporta enumeraciones aunque podrían emularse. Tampoco soporta subtipos; se intentó desarrollar un sistema de tipos basado en subtipos pero el proyecto no tuvo éxito en la comunidad Erlang, quizás porque en el intento de detectar más errores en tiempos de compilación, se trató de imponer un estilo de programación que es más cercano al de los lenguajes con tipos estáticos, a costa de eliminar parte de la flexibilidad característica del lenguaje. Pautas para el estilo de codificación. En [9] hay una guía para escribir buen código en Erlang basada en la experiencia de varios proyectos comerciales. 9

10 Soporte para la abstracción y ocultamiento de la información. En Erlang los procesos son los mecanismos más sólidos para proveer encapsulamiento, abstracción y aislamiento puesto que, la máquina virtual evita que el código cruce las fronteras del proceso: el paso de mensajes es el mecanismo normal para la comunicación a través de las interfaces sin violar el principio de aislamiento; los protocolos de los mensajes implementan la abstracción de dichas interfaces. Aserciones. En Erlang las variables se comportan tal como en matemáticas, cuando se realiza la única asignación posible a las mismas, en realidad se enuncia una aserción que si se viola genera una excepción. Herramientas de análisis certificadas. Se han desarrollado distintas herramientas de análisis para asistir en la depuración de programas Erlang aunque no están certificadas por organismos o normas confiables. Los programas concurrentes son difíciles de depurar y verificar. Una forma posible de verificar un programa Erlang implica obtener un modelo formal intermedio al cual puede aplicársele técnicas de model checking; en particular se utiliza álgebra de procesos μcrl como lenguaje formal [5]. Interface con otros lenguajes. Un programa Erlang tiene posibilidad de interactuar con código escrito en otro lenguaje, que correrá fuera del sistema de tiempo de ejecución Erlang a través de un puerto (port); un canal de comunicación orientado a byte. La implementación actual de este mecanismo [3] depende de la plataforma, en Unix se utiliza el concepto de pipes. Teóricamente, el programa externo podría estar escrito en cualquier lenguaje mientras pueda manejar el mecanismo de comunicación interprocesos, con el cual está implementado el puerto. Usando este mismo principio básico de operación, un proceso Erlang puede abrir un socket para comunicar entre sí nodos Erlang distribuidos. Como ayuda a los programadores existen librerías para la interfaz entre Erlang y C o Java. Por tanto es muy fácil crear drivers, por ejemplo en C, para controlar hardware o implementar partes del sistema cuya performance sea crítica y delegar a Erlang el manejo de actividades concurrentes o distribuidas complejas. En [24] se propone una interfaz a código nativo de forma simple y eficiente, utilizada para simulación de procesos físicos. Un aspecto positivo del uso del mecanismo de puertos es que cualquier error fatal en el software externo no afecta el sistema ejecutando Erlang. Una desventaja es que el cambio de contexto y la comunicación entre procesos pueden ser muy costosos. Si el tiempo es una cuestión crítica, una posible solución es el uso de linked in drivers [12], con una latencia de comunicación entre 10 y 25 veces más pequeña que en el caso de los puertos. Esto implica escribir un programa en C, de acuerdo a ciertos principios y, enlazarlo dinámicamente al sistema en tiempo de ejecución de Erlang, preservando la ilusión de que los drivers son procesos escritos en este lenguaje. Este mecanismo compromete seguridad a cambio de velocidad: un error en él puede colapsar la máquina virtual y todas las aplicaciones que se estén ejecutando. Este es un aspecto negativo de Erlang [2] que debería mejorarse. Optimización del código. La implementación por defecto de Erlang es un intérprete de bytecode HIPE, el compilador a código nativo, completamente integrado en la versión open source, translada bytecode de la máquina virtual BEAM, just-in-time o ahead-of-time a código nativo (actualmente de ULTRASPARC, x86, y AMD64). HIPE soporta la ejecución mixta de código nativo e interpretado a nivel de granularidad de funciones individuales, otorgando al usuario un control de grano fino sobre el trade-off velocidad de ejecución/tamaño de código [18]. 10

11 Durante los últimos años se experimentaron formas de generar código nativo más rápido, tratando de eliminar estadísticamente y tanto como es posible, la sobrecarga introducida por la verificación de tipos en tiempo de ejecución. Portabilidad. Erlang se basa en el uso de máquina virtual con recolector de basura lo que permite obtener portabilidad a un gran número de plataformas (Windows, Linux, BSD, MacOSX, Solaris, VxWorks, etc.). 3 Conclusiones y trabajo futuro Se evaluó el lenguaje de programación Erlang en base a veintitrés estrictos requisitos, disponibles en la literatura, para examinar el uso de un lenguaje de programación en el desarrollo de sistemas de alta integridad. Erlang no cumple con muchos de los requisitos obligatorios o lo hace sin excesivo rigor. La respuesta a la pregunta planteada en el título: Erlang aún no es apropiado para el desarrollo de sistemas totalmente confiables. Sin embargo, puede afirmarse con seguridad que es perfectamente adecuado para sistemas de importancia empresarial crítica (BCS, por businesscritical systems), donde las consecuencias de un fallo no son tan graves, en el sentido que no producen daños físicos a personas sino que, las implicancias negativas pueden ser una amenaza a la confianza o economía. Es en este área donde Erlang ha tenido un éxito considerable; uno de los aspectos por el cual es tan popular entre los desarrolladores de BCS es la inclusión de constructos para obtener tolerancia a fallos. Teniendo en mente este hecho se piensa utilizar Erlang para la implementación de un middleware orientado a mensajes, basado en el modelo arquitectural de un microkernel, para sistemas distribuidos de control (NCS) con características de tiempo real flexible. Referencias 1. Armstrong, J. L.: Making reliable distributed systems in the presence of software errors. PhD thesis, Royal Institute of Technology, Estocolmo, Suecia, (2003). 2. Armstrong, J.: A history of Erlang. En HOPL III: Proceedings of the third ACM SIGPLAN Conference on History of Programming Languages, , (2007). 3. Armstrong, J.: Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf, ISBN X, (2007). 4. Arts, T, Benac Earle, C. y Sánchez Penas, J. J.. Translating Erlang to µcrl. En Fourth International Conference on Application of Concurrency to System Design, , Canada, (2004). 5. Benac-Earle, C., Fredlund, L. y Derrick, J.: Verifying Fault-Tolerant Erlang Programs. En Proceedings of ACM SigPlan Erlang 2005 Workshop, ACM Press, (2005). 6. Carlsson, R., Gustavsson, B., y Nyblom, P.: Erlang s Exception Handling Revisited. En: Proceedings of the Third ACM SIGPLAN Erlang Workshop, 16-26, (2004). 7. Convey, C., Fredricks, A., Gagner, C., Maxwell D. y Hamel, L.: Experience Report: Erlang in Acoustic Ray Tracing. The 13th ACM SIGPLAN International Conference on Functional Programming (ICFP 2008), ACM SIGPLAN Notices 43(9): , (2008). 8. Ericsson: Erlang goes multi-core, news/archive/erlang_goes multi_core.shtml, (2006). Accedido: 21/07/09. 11

12 9. Eriksson, K., Williams, M. y Armstrong, J.: Program Development Using Erlang - Programming Rules and Conventions. Internal Ericsson document EPK/NP 95:035, (1996). Accedido: 21/07/ Fredlund, L.-A., Gurov, D., Noll, T., Dam, M., Arts, T y Chugunov, G.: A verification tool for Erlang. International Journal on Software Tools for Technology Transfer (STTT), 4(4): , (2003). 11. Fritchie, S.L., Larson, J., Christenson, N., Jones, D. y Ohman, L.: Sendmail Meets Erlang: Experiences Using Erlang for Applications. Sixth International Erlang/OTP User Conference. Stockholm, (2000). 12. Fritchie, S. L.: The evolution of Erlang drivers and the Erlang driver toolkit. En Proceedings of the 1st ACM SIGPLAN Erlang Workshop, 34 44, (2002). 13. Gray, J.: Why do computers stop and what can be done about it?. Technical Report 85.7, Tandem Computers, (1985). 14. Guo, Q. y Derrick, J.: Verification of Timed Erlang/OTP Components Using the Process Algebra µcrl. 6th ACM SIGPLAN Erlang Workshop, 55-64, (2007). 15. Jones, R., A: Million-user Comet Application with Mochiweb, Part 2. Accedido: 21/07/ Kwon, J., Wellings, A. y King, S.: Assessment of the Java Programming Language for Use in High Integrity Systems. SIGPLAN Not., 38(4):34 46, (2003). 17. Larson, J.: Erlang for concurrent programming. Commun. ACM, Vol. 52, No. 3., 48-56, (2009). 18. Lindahl, T. y Sagonas, K.: Detecting software defects in telecom applications through lightweight static analysis: A war story. En Programming Languages and Systems: Proceedings of the Second Asian Symposium (APLAS'04), Vol de LNCS, , Springer, (2004). 19. Lindahl T. y Sagonas. K.: Typer: a type annotator of Erlang code. En Proceedings of the 2005 ACM SIGPLAN Erlang Workshop, 17 25, (2005). 20. Nicosia, V.: Towards hard real-time erlang. En Erlang '07: Proceedings of the 2007 SIGPLAN workshop on Erlang Workshop, 29-36, (2007). 21. Noll, T. y Roy. C. K.: Modeling Erlang in the π-calculus. En Proceedings of the ACM SIGPLAN 2005 Erlang Workshop (Erlang 05), 72 77, ACM, (2005). 22. Nyström, S.: Ideas for a new Erlang. Technical Report , Department of Information Technology Uppsala University, (2009). 23. Santoro, C.: An Erlang framework for autonomous mobile robots. En Proceedings of the 2007 SIGPLAN workshop on Erlang Workshop, Germany, (2007). 24. Scalas, A., Casu, G. y Pili, P.: High-performance technical computing with Erlang. En Proceedings of the 7th ACM SIGPLAN workshop on ERLANG, 49-60, (2008). 25. Teller, D.: Towards a resource-safe Erlang. En Proceedings of the 3rd Workshop on Collaboration and Security, 66-71, (2007). 26. Widera, M.: Adapting Structural Testing to Functional Programming. Software Engineering Research and Practice, CSREA Press, 86-92, (2006). 27. Wilhelmsson, J.: Exploring Alternative Memory Architectures for Erlang: Implementation and Performance Evaluation. Master s Thesis, Uppsala Unviversity, (2002). 12

Elementos requeridos para crearlos (ejemplo: el compilador)

Elementos requeridos para crearlos (ejemplo: el compilador) Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción

Más detalles

Capítulo 5. Cliente-Servidor.

Capítulo 5. Cliente-Servidor. Capítulo 5. Cliente-Servidor. 5.1 Introducción En este capítulo hablaremos acerca de la arquitectura Cliente-Servidor, ya que para nuestra aplicación utilizamos ésta arquitectura al convertir en un servidor

Más detalles

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas:

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas: SISTEMAS DISTRIBUIDOS DE REDES 1. SISTEMAS DISTRIBUIDOS Introducción y generalidades La computación desde sus inicios ha sufrido muchos cambios, desde los grandes equipos que permitían realizar tareas

Más detalles

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante Modulo 2. Inicio con Java Muchas veces encontramos en nuestro entorno referencias sobre Java, bien sea como lenguaje de programación o como plataforma, pero, que es en realidad Java?, cual es su historia?,

Más detalles

4. Programación Paralela

4. Programación Paralela 4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios

Más detalles

UNIVERSIDAD DE SALAMANCA

UNIVERSIDAD DE SALAMANCA UNIVERSIDAD DE SALAMANCA FACULTAD DE CIENCIAS INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS Resumen del trabajo práctico realizado para la superación de la asignatura Proyecto Fin de Carrera. TÍTULO SISTEMA

Más detalles

CAPITULO IV. HERRAMIENTAS DE CÓDIGO ABIERTO

CAPITULO IV. HERRAMIENTAS DE CÓDIGO ABIERTO CAPITULO IV. HERRAMIENTAS DE CÓDIGO ABIERTO En la actualidad la mayoría de las grandes empresas cuentan con un sin número de servicios que ofrecen a sus trabajadores y clientes. Muchos de estos servicios

Más detalles

Introducción a las redes de computadores

Introducción a las redes de computadores Introducción a las redes de computadores Contenido Descripción general 1 Beneficios de las redes 2 Papel de los equipos en una red 3 Tipos de redes 5 Sistemas operativos de red 7 Introducción a las redes

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación II MODELOS y HERRAMIENTAS UML 1 1 Modelado de casos de uso (I) Un caso de uso es una técnica de modelado usada para describir lo que debería hacer

Más detalles

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente En este capítulo definimos los requisitos del modelo para un sistema centrado en la mejora de la calidad del código fuente.

Más detalles

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX En este manual se presenta el proceso de configuración de una Maquina Virtual en VirtualBox, que será utilizada para instalar un Servidor

Más detalles

Ingeniería de Software. Pruebas

Ingeniería de Software. Pruebas Ingeniería de Software Pruebas Niveles de prueba Pruebas unitarias Niveles Pruebas de integración Pruebas de sistema Pruebas de aceptación Alpha Beta Niveles de pruebas Pruebas unitarias Se enfocan en

Más detalles

M.T.I. Arturo López Saldiña

M.T.I. Arturo López Saldiña M.T.I. Arturo López Saldiña Hoy en día, existen diversas aproximaciones al tema de cómo hacer que las personas trabajen dentro de una organización de manera colaborativa. El problema se vuelve más difícil

Más detalles

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología La metodología para el desarrollo de software es un modo sistemático de realizar, gestionar y administrar un proyecto

Más detalles

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE PRUEBAS DE SOFTWARE La prueba del software es un elemento crítico para la garantía de la calidad del software. El objetivo de la etapa de pruebas es garantizar la calidad del producto desarrollado. Además,

Más detalles

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO Introducción:...1 Service Oriented Architecture...2 Elementos de una Service Oriented Architecture...2 Application frontends...2 Servicios...2 Contrato:...3

Más detalles

Software de Simulación aplicado a entornos de e-learning

Software de Simulación aplicado a entornos de e-learning Software de Simulación aplicado a entornos de e-learning 2009 Laboratorio de Investigación de Software Universidad Tecnológica Nacional Facultad Regional Córdoba Titulo del Proyecto Software de Simulación

Más detalles

Capas del Modelo ISO/OSI

Capas del Modelo ISO/OSI Modelo ISO/OSI Fue desarrollado en 1984 por la Organización Internacional de Estándares (ISO), una federación global de organizaciones que representa aproximadamente a 130 países. El núcleo de este estándar

Más detalles

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS 4 ARQUITECTURA DE DISTRIBUCIÓN DE DATOS Contenido: Arquitectura de Distribución de Datos 4.1. Transparencia 4.1.1 Transparencia de Localización 4.1.2 Transparencia de Fragmentación 4.1.3 Transparencia

Más detalles

CAPÍTULO 1 Instrumentación Virtual

CAPÍTULO 1 Instrumentación Virtual CAPÍTULO 1 Instrumentación Virtual 1.1 Qué es Instrumentación Virtual? En las últimas décadas se han incrementado de manera considerable las aplicaciones que corren a través de redes debido al surgimiento

Más detalles

Metodologías de diseño de hardware

Metodologías de diseño de hardware Capítulo 2 Metodologías de diseño de hardware Las metodologías de diseño de hardware denominadas Top-Down, basadas en la utilización de lenguajes de descripción de hardware, han posibilitado la reducción

Más detalles

Ciclo de vida del software

Ciclo de vida del software Ciclo de vida del software Definición El proceso que se sigue para construir, entregar y hacer evolucionar el software, desde la concepción de una idea hasta la entrega y el retiro del sistema. Confiable,

Más detalles

Servicio de administración de pautas publicitarias en Internet

Servicio de administración de pautas publicitarias en Internet Servicio de administración de pautas publicitarias en Internet Resumen Ejecutivo Es habitual que la publicidad en Internet sea un apéndice de la publicidad en otros medios. Como no se conocen los resultados,

Más detalles

Arquitectura de red distribuida: escalabilidad y equilibrio de cargas en un entorno de seguridad

Arquitectura de red distribuida: escalabilidad y equilibrio de cargas en un entorno de seguridad Arquitectura de red distribuida: escalabilidad y equilibrio de cargas en un entorno de seguridad por Warren Brown Las compañías multinacionales y los hospitales, universidades o entidades gubernamentales

Más detalles

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere.

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere. UNIVERSIDAD DE CARABOBO FACULTAD DE CIENCIA Y TECNOLOGÍA DIRECCION DE EXTENSION COORDINACION DE PASANTIAS Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere. Pasante:

Más detalles

CAPÍTULO 2 Sistemas De Base De Datos Multiusuarios

CAPÍTULO 2 Sistemas De Base De Datos Multiusuarios CAPÍTULO 2 Sistemas De De Multiusuarios Un sistema multiusuario es un sistema informático que da servicio, manera concurrente, a diferentes usuarios mediante la utilización compartida sus recursos. Con

Más detalles

Introducción a la Firma Electrónica en MIDAS

Introducción a la Firma Electrónica en MIDAS Introducción a la Firma Electrónica en MIDAS Firma Digital Introducción. El Módulo para la Integración de Documentos y Acceso a los Sistemas(MIDAS) emplea la firma digital como método de aseguramiento

Más detalles

Ingº CIP Fabian Guerrero Medina Master Web Developer-MWD

Ingº CIP Fabian Guerrero Medina Master Web Developer-MWD 1 Java es un lenguaje de programación de Sun Microsystems originalmente llamado "Oak. James Gosling Bill Joy 2 Oak nació para programar pequeños dispositivos electrodomésticos, como los asistentes personales

Más detalles

La Pirámide de Solución de TriActive TRICENTER

La Pirámide de Solución de TriActive TRICENTER Información sobre el Producto de TriActive: Página 1 Documento Informativo La Administración de Sistemas Hecha Simple La Pirámide de Solución de TriActive TRICENTER Información sobre las Soluciones de

Más detalles

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Documento de trabajo elaborado para la Red Temática DocenWeb: Red Temática de Docencia en Control mediante Web (DPI2002-11505-E)

Más detalles

IAP 1009 - TÉCNICAS DE AUDITORÍA APOYADAS EN ORDENADOR (TAAO)

IAP 1009 - TÉCNICAS DE AUDITORÍA APOYADAS EN ORDENADOR (TAAO) IAP 1009 - TÉCNICAS DE AUDITORÍA APOYADAS EN ORDENADOR (TAAO) Introducción 1. Como se indica en la Norma Internacional de Auditoría 401, "Auditoría en un contexto informatizado", los objetivos globales

Más detalles

picojava TM Características

picojava TM Características picojava TM Introducción El principal objetivo de Sun al introducir Java era poder intercambiar programas ejecutables Java entre computadoras de Internet y ejecutarlos sin modificación. Para poder transportar

Más detalles

Entidad Formadora: Plan Local De Formación Convocatoria 2010

Entidad Formadora: Plan Local De Formación Convocatoria 2010 Entidad Formadora: Enterprise Architect Comenzando Puede iniciar Enterprise Architect desde el ícono que se creó en su escritorio de Windows durante la instalación, o alternativamente: 1. Abrir el menú

Más detalles

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos. RAIDS MODO LINEAL Es un tipo de raid que muestra lógicamente un disco pero se compone de 2 o más discos. Solamente llena el disco 0 y cuando este está lleno sigue con el disco 1 y así sucesivamente. Este

Más detalles

App para realizar consultas al Sistema de Información Estadística de Castilla y León

App para realizar consultas al Sistema de Información Estadística de Castilla y León App para realizar consultas al Sistema de Información Estadística de Castilla y León Jesús M. Rodríguez Rodríguez rodrodje@jcyl.es Dirección General de Presupuestos y Estadística Consejería de Hacienda

Más detalles

Centro de Investigación y Desarrollo en Ingeniería en Sistemas de Información (CIDISI)

Centro de Investigación y Desarrollo en Ingeniería en Sistemas de Información (CIDISI) Centro de Investigación y Desarrollo en Ingeniería en Sistemas de Información (CIDISI) OFERTAS TECNOLÓGICAS 1) GESTIÓN ORGANIZACIONAL Y LOGÍSTICA INTEGRADA: TÉCNICAS Y SISTEMAS DE INFORMACIÓN 2) GESTIÓN

Más detalles

Software Computacional y su clasificación

Software Computacional y su clasificación Software Computacional y su clasificación Capítulo 5 El software En modo sencillo el software permite que las personas puedan contarle a la computadora cierto tipo de problemas y que ésta a su vez le ofrezca

Más detalles

Arquitectura de sistema de alta disponibilidad

Arquitectura de sistema de alta disponibilidad Mysql Introducción MySQL Cluster esta diseñado para tener una arquitectura distribuida de nodos sin punto único de fallo. MySQL Cluster consiste en 3 tipos de nodos: 1. Nodos de almacenamiento, son los

Más detalles

Curso Online de Microsoft Project

Curso Online de Microsoft Project Curso Online de Microsoft Project Presentación El curso a distancia estudia conceptos generales sobre las tecnologías relacionadas con Internet. Conceptos que cualquier usuario de ordenadores debe conocer

Más detalles

forma de entrenar a la nuerona en su aprendizaje.

forma de entrenar a la nuerona en su aprendizaje. Sistemas expertos e Inteligencia Artificial,Guía5 1 Facultad : Ingeniería Escuela : Computación Asignatura: Sistemas expertos e Inteligencia Artificial Tema: SISTEMAS BASADOS EN CONOCIMIENTO. Objetivo

Más detalles

1 GLOSARIO. Actor: Es un consumidor (usa) del servicio (persona, sistema o servicio).

1 GLOSARIO. Actor: Es un consumidor (usa) del servicio (persona, sistema o servicio). 1 GLOSARIO A continuación se definen, en orden alfabético, los conceptos básicos que se han abordado a lo largo del desarrollo de la metodología para la gestión de requisitos bajo la Arquitectura Orientada

Más detalles

GESTION OPERATIVA. Niveles de gestión

GESTION OPERATIVA. Niveles de gestión GESTION OPERATIVA La gestión deja de ser una tarea aislada para constituirse en una herramienta que sirve para ejecutar las acciones necesarias que permitan ordenar, disponer y organizar los recursos de

Más detalles

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON) 3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON) 3.1.1 Introducción Este método proporciona un soporte para el diseño creativo de productos de software, inclusive a escala industrial.

Más detalles

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente:

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente: Departamento de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Antioquia Arquitectura de Computadores y Laboratorio ISI355 (2011 2) Práctica No. 1 Diseño e implementación de una unidad aritmético

Más detalles

BPMN Business Process Modeling Notation

BPMN Business Process Modeling Notation BPMN (BPMN) es una notación gráfica que describe la lógica de los pasos de un proceso de Negocio. Esta notación ha sido especialmente diseñada para coordinar la secuencia de los procesos y los mensajes

Más detalles

Especificación de Requisitos según el estándar de IEEE 830

Especificación de Requisitos según el estándar de IEEE 830 Especificación de Requisitos según el estándar de IEEE 830 IEEE Std. 830-1998 22 de Octubre de 2008 Resumen Este documento presenta, en castellano, el formato de Especificación de Requisitos Software (ERS)

Más detalles

Mejores prácticas para el éxito de un sistema de información. Uno de los problemas de información dentro de las empresas es contar con datos

Mejores prácticas para el éxito de un sistema de información. Uno de los problemas de información dentro de las empresas es contar con datos ANEXO VI. Mejores prácticas para el éxito de un sistema de información Uno de los problemas de información dentro de las empresas es contar con datos importantes del negocio y que éstos estén aislados

Más detalles

Windows Server 2012: Infraestructura de Escritorio Virtual

Windows Server 2012: Infraestructura de Escritorio Virtual Windows Server 2012: Infraestructura de Escritorio Virtual Módulo 1: Visión general de Virtualización del Escritorio de Microsoft y la Virtualización del estado de usuario Módulo del Manual Autores: James

Más detalles

Estructuras de Sistemas Operativos

Estructuras de Sistemas Operativos Estructuras de Sistemas Operativos Definicion de Sistema Operativos Un sistema operativo es un programa que actua como inter entre el usuario y el hardware de un computador y su proposito es proporcionar

Más detalles

Soluciones innovadoras para optimizar su infraestructura TI. Virtualización con el sistema operativo i, PowerVM y Power Systems de IBM

Soluciones innovadoras para optimizar su infraestructura TI. Virtualización con el sistema operativo i, PowerVM y Power Systems de IBM Soluciones innovadoras para optimizar su infraestructura TI Virtualización con el sistema operativo i, PowerVM y Power Systems de IBM Características principales Tenga éxito en su negocio simplemente con

Más detalles

CICLO DE VIDA DEL SOFTWARE

CICLO DE VIDA DEL SOFTWARE CICLO DE VIDA DEL SOFTWARE 1. Concepto de Ciclo de Vida 2. Procesos del Ciclo de Vida del Software 3. Modelo en cascada 4. Modelo incremental 5. Modelo en espiral 6. Prototipado 7. La reutilización en

Más detalles

Sistema de marketing de proximidad

Sistema de marketing de proximidad Dizan Vasquez Propuesta de proyecto Sistema de marketing de proximidad ACME México Dizan Vasquez Índice general 1. Descripción 3 2. Resúmen ejecutivo 4 2.1. Objetivo.................................................

Más detalles

PROPÓSITO... 2 DETERMINANTES PARA UNA BUENA EXPERIENCIA DE USO...

PROPÓSITO... 2 DETERMINANTES PARA UNA BUENA EXPERIENCIA DE USO... Tabla de Contenido PROPÓSITO... 2 DETERMINANTES PARA UNA BUENA EXPERIENCIA DE USO... 2 1. LA PRESENCIA DE INFORMACIÓN Y AYUDA ÚTIL PARA COMPLETAR LOS TRÁMITES EN LÍNEA.... 2 2. LA DISPONIBILIDAD DE DIVERSOS

Más detalles

implantación Fig. 1. Ciclo de vida tradicional

implantación Fig. 1. Ciclo de vida tradicional 1. Ciclo de vida tradicional de los sistemas de software En ingeniería de software, la descripción tradicional del ciclo de vida del software está basada en un modelo conocido como el modelo de cascada

Más detalles

Decisión: Indican puntos en que se toman decisiones: sí o no, o se verifica una actividad del flujo grama.

Decisión: Indican puntos en que se toman decisiones: sí o no, o se verifica una actividad del flujo grama. Diagrama de Flujo La presentación gráfica de un sistema es una forma ampliamente utilizada como herramienta de análisis, ya que permite identificar aspectos relevantes de una manera rápida y simple. El

Más detalles

LA LOGÍSTICA COMO FUENTE DE VENTAJAS COMPETITIVAS

LA LOGÍSTICA COMO FUENTE DE VENTAJAS COMPETITIVAS LA LOGÍSTICA COMO FUENTE DE VENTAJAS COMPETITIVAS Los clientes compran un servicio basandose en el valor que reciben en comparacion con el coste en el que incurren. Por, lo tanto, el objetivo a largo plazo

Más detalles

CAPITULO IV CONCLUSIONES Y RECOMENDACIONES

CAPITULO IV CONCLUSIONES Y RECOMENDACIONES CAPITULO IV CONCLUSIONES Y RECOMENDACIONES VERIFICACIÓN DE OBJETIVOS El objetivo general del proyecto ha sido cumplido satisfactoriamente en la Unidad de Sistemas de PETROECUADOR, realizando el análisis

Más detalles

Módulo 2. Inicio con Java

Módulo 2. Inicio con Java Módulo 2. Inicio con Java Objetivos: -Clasificar el lenguaje de programación Java según las formas de clasificar los lenguajes de programación. -Describir el funcionamiento de la plataforma Java. -Explicar

Más detalles

Diseño orientado al flujo de datos

Diseño orientado al flujo de datos Diseño orientado al flujo de datos Recordemos que el diseño es una actividad que consta de una serie de pasos, en los que partiendo de la especificación del sistema (de los propios requerimientos), obtenemos

Más detalles

CMMI (Capability Maturity Model Integrated)

CMMI (Capability Maturity Model Integrated) CMMI (Capability Maturity Model Integrated) El SEI (software engineering institute) a mediados de los 80 desarrolló el CMM (modelo de madurez de la capacidad de software). CMMI: CMM integrado, una mezcla

Más detalles

Soporte Técnico de Software HP

Soporte Técnico de Software HP Soporte Técnico de Software HP Servicios Tecnológicos HP Servicios contractuales Datos técnicos El Soporte Técnico de Software HP ofrece servicios integrales de soporte remoto de para los productos de

Más detalles

Resumen General del Manual de Organización y Funciones

Resumen General del Manual de Organización y Funciones Gerencia de Tecnologías de Información Resumen General del Manual de Organización y Funciones (El Manual de Organización y Funciones fue aprobado por Resolución Administrativa SBS N 354-2011, del 17 de

Más detalles

Wireless Sensor Network in a nuclear facility: A technology aplication proposal

Wireless Sensor Network in a nuclear facility: A technology aplication proposal Wireless Sensor Network in a nuclear facility: A technology aplication proposal CNEA,IB (1) U. FASTA (2) Maciel, F. 1 - Fernández, R. O. 1 - Vilugron, R. M. 2 This work presents an overview of a pretended

Más detalles

Sistema de SaaS (Software as a Service) para centros educativos

Sistema de SaaS (Software as a Service) para centros educativos Sistema de SaaS (Software as a Service) para centros educativos Definiciones preliminares: Qué es SaaS? SaaS (1) es un modelo de distribución del software que permite a los usuarios el acceso al mismo

Más detalles

Gestión y Desarrollo de Requisitos en Proyectos Software

Gestión y Desarrollo de Requisitos en Proyectos Software Gestión y Desarrollo de Requisitos en Proyectos Software Ponente: María Jesús Anciano Martín Objetivo Objetivo Definir un conjunto articulado y bien balanceado de métodos para el flujo de trabajo de Ingeniería

Más detalles

Estructura de Computadores I Arquitectura de los MMOFPS

Estructura de Computadores I Arquitectura de los MMOFPS UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA Estructura de Computadores I Arquitectura de los MMOFPS Integrantes: Luis Castro Valentina Yévenes RESUMEN Los MMOG (Massively Multiplayer Online Game), son juegos

Más detalles

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual Introducción Algunas de las personas que trabajan con SGBD relacionales parecen preguntarse porqué deberían preocuparse del diseño de las bases de datos que utilizan. Después de todo, la mayoría de los

Más detalles

Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:

Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes: PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes: 1. Proporcionar una guía de actividades para el trabajo en equipo. (Guía detallada para el desarrollo

Más detalles

Sistemas Operativos Windows 2000

Sistemas Operativos Windows 2000 Sistemas Operativos Contenido Descripción general 1 Funciones del sistema operativo 2 Características de 3 Versiones de 6 Sistemas Operativos i Notas para el instructor Este módulo proporciona a los estudiantes

Más detalles

Metodología y Framework para el Desarrollo de Aplicaciones Científicas con Computación de Alto Rendimiento a través de Servicios Web

Metodología y Framework para el Desarrollo de Aplicaciones Científicas con Computación de Alto Rendimiento a través de Servicios Web Metodología y Framework para el Desarrollo de Aplicaciones Científicas con Computación de Alto Rendimiento a través de Servicios Web J.Corral-García, D.Cortés-Polo, C.Gómez-Martín, J.L.González-Sánchez

Más detalles

GeneXus BPM Suite X. Última actualización: 01 de Setiembre de 2008

GeneXus BPM Suite X. Última actualización: 01 de Setiembre de 2008 Última actualización: 01 de Setiembre de 2008 Copyright Artech Consultores S. R. L. 1988-2008. Todos los derechos reservados. Este documento no puede ser reproducido en cualquier medio sin el consentimiento

Más detalles

Workflows? Sí, cuántos quiere?

Workflows? Sí, cuántos quiere? Workflows? Sí, cuántos quiere? 12.11.2006 Servicios Profesionales Danysoft Son notables los beneficios que una organización puede obtener gracias al soporte de procesos de negocios que requieran la intervención

Más detalles

Arquitectura de Aplicaciones

Arquitectura de Aplicaciones 1 Capítulo 13: Arquitectura de aplicaciones. - Sommerville Contenidos del capítulo 13.1 Sistemas de procesamiento de datos 13.2 Sistemas de procesamiento de transacciones 13.3 Sistemas de procesamiento

Más detalles

SEMANA 12 SEGURIDAD EN UNA RED

SEMANA 12 SEGURIDAD EN UNA RED SEMANA 12 SEGURIDAD EN UNA RED SEGURIDAD EN UNA RED La seguridad, protección de los equipos conectados en red y de los datos que almacenan y comparten, es un hecho muy importante en la interconexión de

Más detalles

UNIVERSIDAD TECNOLOGICA ECOTEC DIEGO BARRAGAN MATERIA: Sistemas Operativos 1 ENSAYO: Servidores BLADE

UNIVERSIDAD TECNOLOGICA ECOTEC DIEGO BARRAGAN MATERIA: Sistemas Operativos 1 ENSAYO: Servidores BLADE UNIVERSIDAD TECNOLOGICA ECOTEC DIEGO BARRAGAN MATERIA: Sistemas Operativos 1 ENSAYO: Servidores BLADE AÑO: 2010 Qué es un servidor Blade? Blade Server es una arquitectura que ha conseguido integrar en

Más detalles

CAPÍTULO II. Gráficos Dinámicos.

CAPÍTULO II. Gráficos Dinámicos. 2.1 Definición. Los gráficos dinámicos son representaciones a escala del proceso, en donde se muestra la información de las variables del proceso a través de datos numéricos y de animación gráfica. Éstos

Más detalles

Adelacu Ltda. www.adelacu.com Fono +562-218-4749. Graballo+ Agosto de 2007. Graballo+ - Descripción funcional - 1 -

Adelacu Ltda. www.adelacu.com Fono +562-218-4749. Graballo+ Agosto de 2007. Graballo+ - Descripción funcional - 1 - Graballo+ Agosto de 2007-1 - Índice Índice...2 Introducción...3 Características...4 DESCRIPCIÓN GENERAL...4 COMPONENTES Y CARACTERÍSTICAS DE LA SOLUCIÓN...5 Recepción de requerimientos...5 Atención de

Más detalles

CONCLUSIONES 155 A través de cada uno de los capítulos del presente documento se han enumerado una serie herramientas de seguridad que forman parte del sistema de defensa de una red y que, controlan su

Más detalles

Programa de Formación en Gestión Empresarial para Mediadores de Seguros

Programa de Formación en Gestión Empresarial para Mediadores de Seguros Programa de Formación en Gestión Empresarial para Mediadores de Seguros Cuál es la situación actual del mediador de seguros? La evolución y resultados de un mediador de seguros, son la consecuencia de

Más detalles

18 y 19 Sistemas de Archivos Distribuidos y Tarea 05

18 y 19 Sistemas de Archivos Distribuidos y Tarea 05 18 y 19 Sistemas de Archivos Distribuidos y Tarea 05 Prof. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco efranco.docencia@gmail.com Estructuras de datos (Prof. Edgardo A. Franco)

Más detalles

Servidores Donantonio

Servidores Donantonio Especificación de requisitos software Tabla de contenidos Juan José Amor David Escorial Ismael Olea 1. Introducción...3 1.1. Propósito...3 1.2. Ámbito del sistema...3 1.3. Definiciones, acrónimos y abreviaturas...3

Más detalles

QUE ES COMLINE MENSAJES? QUE TIPO DE MENSAJES PROCESA COMLINE MENSAJES?

QUE ES COMLINE MENSAJES? QUE TIPO DE MENSAJES PROCESA COMLINE MENSAJES? QUE ES COMLINE MENSAJES? Comline Mensajes es una plataforma flexible, ágil y oportuna, que permite el envío MASIVO de MENSAJES DE TEXTO (SMS). Comline Mensajes integra su tecnología a los centros de recepción

Más detalles

1 EL SISTEMA R/3 DE SAP AG

1 EL SISTEMA R/3 DE SAP AG 1 EL SISTEMA R/3 DE SAP AG SAP AG es una corporación en el ámbito mundial. Fundada en 1972 y con sede en Walldorf, Alemania, SAP es la cuarta compañía mundial en ventas de software en el mundo. La compañía

Más detalles

Estándares para planes de calidad de software. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008

Estándares para planes de calidad de software. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008 Estándares para planes de calidad de software Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008 DIFERENCIA ENTRE PRODUCIR UNA FUNCION Y PRODUCIR UNA FUNCION

Más detalles

Servicios avanzados de supercomputación para la ciència y la ingeniería

Servicios avanzados de supercomputación para la ciència y la ingeniería Servicios avanzados de supercomputación para la ciència y la ingeniería Servicios avanzados de supercomputación para la ciència y la ingeniería HPCNow! provee a sus clientes de la tecnología y soluciones

Más detalles

ENVÍO DE E-MAIL POR MEDIO DE SMTP

ENVÍO DE E-MAIL POR MEDIO DE SMTP UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA DEPARTAMENTO DE ELECTRÓNICA ELO 322: REDES DE COMPUTADORES I ENVÍO DE E-MAIL POR MEDIO DE SMTP Alumnos Ariel Mancilla G. 2521040-9 Daniel Spataris J. 2521029-8

Más detalles

RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014

RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014 RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014 FAMILIA PROFESIONAL: INFORMATICA Y COMUNICACIONES MATERIA: 28. DESARROLLO WEB EN ENTORNO SERVIDOR CURSO: 2º DE CFGS DESARROLLO DE APLICACIONES

Más detalles

http://www.nicasoft.com.ni

http://www.nicasoft.com.ni BSC-RH es un sistema automatizado de planificación estratégica y gestión, utilizado en empresas para direccionar las actividades del negocio a la visión y estrategia de la organización. Mejora la comunicación

Más detalles

Qué es el Modelo CMMI?

Qué es el Modelo CMMI? El principal problema que tienen las empresas en sus áreas de tecnología, así como las empresas desarrolladoras de software al iniciar un proyecto, radica en que el tiempo de vida del proyecto y el presupuesto

Más detalles

Modelos de los sistemas distribuidos. Jorge Iván Meza Martínez jimezam@gmail.com

Modelos de los sistemas distribuidos. Jorge Iván Meza Martínez jimezam@gmail.com Modelos de los sistemas distribuidos Jorge Iván Meza Martínez jimezam@gmail.com Especialización en Gestión de Redes de Datos Universidad Nacional de Colombia Sede Manizales 1/36 Contenidos Modelo arquitectónico

Más detalles

La presente tesis pretende que los estudiantes observen la teoría de las acciones de control

La presente tesis pretende que los estudiantes observen la teoría de las acciones de control CAPÍTULO V. CONCLUSIONES. La presente tesis pretende que los estudiantes observen la teoría de las acciones de control de forma virtual al mismo tiempo analicen físicamente los sistemas electrónicos cuando

Más detalles

1. Descripción y objetivos

1. Descripción y objetivos Pruebas 1 1. Descripción y objetivos Las pruebas son prácticas a realizar en diversos momentos de la vida del sistema de información para verificar: El correcto funcionamiento de los componentes del sistema.

Más detalles

Código del programa: PEMDE. Programa Experto en MANEJO DE DATOS CON EXCEL. Modalidad: Virtual. Descripción del programa

Código del programa: PEMDE. Programa Experto en MANEJO DE DATOS CON EXCEL. Modalidad: Virtual. Descripción del programa Código del programa: PEMDE Programa Experto en MANEJO DE DATOS CON EXCEL Modalidad: Virtual Descripción del programa 1 Presentación del programa Justificación Microsoft Excel es la herramienta de manejo

Más detalles

INGENIERÍA DEL SOFTWARE

INGENIERÍA DEL SOFTWARE INGENIERÍA DEL SOFTWARE Sesión No. 2 Nombre: Procesos de ingeniería del software INGENIERÍA DEL SOFTWARE 1 Contextualización La ingeniería de software actualmente es muy importante, pues con los avances

Más detalles

Proyecto Fin de Carrera

Proyecto Fin de Carrera Proyecto Fin de Carrera Gestión del Proyecto para una Plataforma online de intercambio, compra o venta de ayudas técnicas. Consultora: Ana Cristina Domingo Troncho Autor: Álvaro Fanego Lobo Junio de 2013

Más detalles

Descripción. Este Software cumple los siguientes hitos:

Descripción. Este Software cumple los siguientes hitos: WWWMONITORDBACOM Descripción Este Software cumple los siguientes hitos: a- Consola de Monitoreo b- Envío de Alertas (correo, SMS) c- Gestión de Eventos desatendidos (sea capaz ejecutar script de solución

Más detalles

Seminario Electrónico de Soluciones Tecnológicas sobre VPNs de Extranets

Seminario Electrónico de Soluciones Tecnológicas sobre VPNs de Extranets Seminario Electrónico de Soluciones Tecnológicas sobre VPNs de Extranets 1 de 12 Seminario Electrónico de Soluciones Tecnológicas sobre VPNs de Extranets 3 Bienvenida. 4 Objetivos. 5 Interacciones de Negocios

Más detalles

UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I. Licda. Consuelo Eleticia Sandoval

UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I. Licda. Consuelo Eleticia Sandoval UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I Licda. Consuelo Eleticia Sandoval OBJETIVO: ANALIZAR LAS VENTAJAS Y DESVENTAJAS DE LAS REDES DE COMPUTADORAS. Que es una red de computadoras?

Más detalles

AHORRACOM SOLUCIONES AVANZADAS S.L. Avda. de la Industria 13, Oficina 25. 28108 Alcobendas, Madrid. www.ahorracom.com

AHORRACOM SOLUCIONES AVANZADAS S.L. Avda. de la Industria 13, Oficina 25. 28108 Alcobendas, Madrid. www.ahorracom.com PAGTE Plan de Ahorro y Gestión de Telecomunicaciones para Empresas En Ahorracom nos ponemos de su parte. Por eso nos interesa que usted, nuestro cliente, esté al tanto de todos los procesos que llevamos

Más detalles