INTRODUCCIÓN A. Autor: José Antonio Glez. Reboredo

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

Download "INTRODUCCIÓN A. Autor: José Antonio Glez. Reboredo"

Transcripción

1 INTRODUCCIÓN A Autor: José Antonio Glez. Reboredo

2 1. MÉTODOS FORMALES INTRODUCCIÓN ESPECIFICACIÓN VERIFICACIÓN COMPROBACIÓN DE MODELOS PRUEBA DE TEOREMAS TRABAJO FUTURO CONCEPTOS FUNDAMENTALES MÉTODOS Y HERRAMIENTAS INTEGRACIÓN DE MÉTODOS EDUCACIÓN Y TRANSMISIÓN DE LA TECNOLOGÍA SPIN CARACTERÍSTICAS GENERALES INTRODUCCIÓN ESTRUCTURA FUNDAMENTOS REQUERIMIENTOS DE LÓGICA TEMPORAL DOMINIO DE APLICACIÓN ALGORITMOS NESTED DEPTH-FIRST SEARCH PASO DE FÓRMULAS LTL A AUTÓMATAS DE BÜCHI REDUCCIÓN DE ORDEN PARCIAL REQUISITOS DE TIEMPO Y MEMORIA

3 1. Métodos formales Antes de abordar el estudio de la verificación formal de sistemas distribuidos, realizaremos una breve introducción acerca de la aplicación de métodos formales a los ámbitos computacionales Introducción Actualmente estamos asistiendo a una mejora de los métodos matemáticos para la verificación y especificación de sistemas hardware y software de elevada complejidad; de hecho, muchos de estos métodos ya son capaces de afrontar ejemplos reales del mundo industrial. Esta mejora en los métodos se debe principalmente al desarrollo de nuevas metodologías y de nuevas y más potentes herramientas (como pueden ser mejores probadores de teoremas). Es difícil predecir, aún así, cual será el alcance, en el futuro, de estas técnicas; pero la situación permite un cierto optimismo que debería ser acompasado de un trabajo en investigación que permita que estas técnicas ayuden en mayor medida al mundo industrial. Las técnicas formales son uno de los métodos existentes en la ingeniería del software para ayudar a la creación de sistemas de elevada complejidad y que, sin embargo, alcancen los parámetros de eficiencia y eficacia deseados. El uso de métodos formales no nos garantiza, a priori, la corrección del software, pero es una buena práctica que permite alcanzar mejores resultados en la construcción de sistemas complejos, ya que nos permite revelar inconsistencias, ambigüedades, etc. En el pasado el uso de estas técnicas no fue muy utilizado debido a los problemas que llevaban asociados, como la dificultad de los métodos, su baja capacidad para escalar, etc. Actualmente estas técnicas están aumentando su grado de aceptación y mejorando su capacidad de éxito lo que convierte a los métodos formales en una técnica que no debemos dejar de tener en cuenta a la hora de buscar métodos para la creación de sistemas computacionales de calidad. La evolución de estos métodos y los frutos de la investigación que en ellos se está llevando a cabo nos dirán cual será el papel de estos métodos en la informática del futuro. A continuación repasaremos los dos campos de principal aplicación de los métodos formales: la especificación y la verificación. 3

4 1.2. Especificación La especificación es el proceso de describir un sistema y las propiedades que se desea que tenga. Es de sentido común la afirmación de que, de la correcta especificación de un sistema, depende en gran medida el éxito o el fracaso en su desarrollo. La especificación formal se basa en un lenguaje con una sintaxis y un semántica matemáticamente definidas. En estos métodos es común la utilización de los conceptos matemáticos de abstracción y composición. Actualmente, uno de los hitos en la investigación de la especificación formal estriba en cómo integrar diferentes lenguajes de especificación, cada uno de los cuales sea capaz de afrontar distintos aspectos de un sistema. Otro punto importante es cómo manejar los aspectos de un sistema que no se refieren a su comportamiento, como puede ser el rendimiento, limitaciones de tiempo real, políticas de seguridad o diseño arquitectural. Los métodos de especificación formal han sido utilizados con éxito en áreas tan diversas como pueden ser: bases de datos, dispositivos, hardware, medicina, tecnología nuclear, seguridad, comunicaciones y transporte. 4

5 1.3. Verificación La verificación es el proceso que permite comprobar, en mayor o menor medida, si un sistema cumple las propiedades deseadas en él. En la verificación formal nos encontramos con dos aproximaciones: comprobación de modelos y prueba de teoremas Comprobación de modelos La comprobación de modelos es una técnica que consiste en construir un modelo finito de un sistema y comprobar si una determinada propiedad deseada en el sistema se cumple en el modelo. Esta comprobación se realiza mediante una búsqueda exhaustiva en todo el conjunto de estados posibles en el modelo. La finalización de esta comprobación está garantizada ya que el modelo será finito. El objetivo para la mejora de esta técnica sería encontrar algoritmos y estructuras de datos que nos permitan manejar grandes espacios de búsqueda. Esta técnica se ha utilizado principalmente en sistemas hardware y en la verificación de protocolos, aunque el objetivo actual es su utilización en el análisis del cumplimiento de las especificaciones en sistemas software. Existes dos vertientes de la comprobación de modelos en las prácticas de hoy: La primera es la comprobación temporal de modelos. En esta aproximación, las especificaciones son expresadas mediante lógica temporal y los sistemas se modelan mediante sistemas de transiciones de estado finito. Se utiliza un procedimiento de búsqueda para comprobar si éste modelo cumple la especificación. En la segunda aproximación, la especificación se da en forma de autómata. Luego el sistema, también modelado como un autómata, se compara con la especificación para determinar si su comportamiento es congruente con la misma. En comparación con la prueba de teoremas, la comprobación de modelos es totalmente automática y rápida, pudiendo llegar a dar una respuesta en cuestión de minutos, pero presenta la desventaja de que se puede enfrentar a una explosión combinatoria que haga inmanejable el problema. La comprobación de modelos puede ser utilizada para comprobar especificaciones parciales, en cuyo caso nos proporciona una valiosa información sobre la corrección de un sistema, aun cuando éste no esté completamente especificado. Por otro lado cabe destacar que la comprobación de modelos produce contraejemplos a partir de los cuales podríamos analizar posibles errores subyacentes en el diseño. Es por este que puede ser un asistente al debugging Prueba de teoremas 5

6 La prueba de teoremas es una técnica en la que, tanto el sistema, como las propiedades en él deseadas, se expresan mediante fórmulas en algún tipo de lógica matemática. Esta lógica viene dada por un sistema formal, el cual define una serie de axiomas y un conjunto de reglas de inferencia. La prueba de teoremas es el proceso de encontrar la prueba de una propiedad a partir de los axiomas del sistema. Los resultados que se vayan consiguiendo en ese proceso de prueba se denominan lemas intermedios. Estas pruebas pueden ser obtenidas a mano, pero la idea es utilizar una máquina como asistente en ese proceso de prueba. Hoy en día se está viendo incrementada la utilización de los probadores de teoremas, para la verificación mecánica de propiedades críticas en diseños tanto hardware como software. Estos probadores de teoremas pueden ser clasificados según su grado de automatismo, desde probadores totalmente automáticos a probadores interactivos. Estos últimos, requieren la interacción con una persona, lo que, por un lado, los hace más susceptibles a la aparición de errores en la prueba, pero, por otro lado aumenta enormemente la potencia de los mismos gracias a la aportación que puede hacer la inteligencia del ser humano. En contraste con la comprobación de modelos, los probadores de modelos son capaces de manejar espacios de estados infinitos, esto lo manejan mediante técnicas como la inducción. 6

7 1.4. Trabajo futuro Como se ha visto, el objetivo global de los métodos formales es ayudar a los ingenieros a construir sistemas con un mayor grado de corrección y, por tanto, mejores. Los métodos formales son una parte de la computación que se relaciona con prácticamente todas las demás partes de la Informática, ya que se pretende que sea útil tanto en sistemas software como hardware y, sus usuarios potenciales, serían todos aquellos desarrolladores involucrados en procesos de ingeniería de sistemas. El avance en esta área depende de múltiples factores como son: la investigación en la misma, inventar nuevos métodos, implementar nuevas herramientas, integrar distintos métodos para que trabajen juntos y la transmisión de estos conocimientos a las personas susceptibles de utilizarlos Conceptos fundamentales El trabajo para el avance en este campo debe ser enfocado en las siguientes áreas: Composición: necesitamos saber cómo componer métodos, especificaciones, modelos, teorías y pruebas. Descomposición: necesitamos desarrollar métodos más eficientes propiedades computacionales de carácter global en una serie de propiedades más simples cuyo tratamiento sea más asequible. Abstracción: es difícil especificar y verificar los sistemas reales sin el uso de la abstracción; por lo tanto, necesitamos identificar diversos tipos de abstracciones y desarrollar métodos que nos permitan justificarlas formalmente (quizá asistidos por métodos automáticos). Modelos y teorías reutilizables: la utilización de modelos y teorías reutilizables facilitaría la construcción de otros nuevos y reduciría el número de errores que se cometieran. Combinaciones de teorías matemáticas: muchos sistemas presenta la mezcla de tecnologías digitales y analógicas, lo que haría necesario la utilización de, tanto las matemáticas discretas, como del cálculo con variables continuas. En muchas ocasiones es necesario mezclar diversas partes de las matemáticas para un mismo problema, pudiendo necesitar, por ejemplo, de la estadística o de la teoría de colas. Estructuras de datos y algoritmos: el desarrollo de estructuras de datos adecuadas y algoritmos más eficientes, nos permitiría manejar sistemas y espacios de búsqueda mayores Métodos y herramientas Ningún método es útil para todos los problemas, por lo que es necesario soportar distintos tipos de métodos. Para que los métodos y de las herramientas que se desarrollen a este respecto, tengan éxito entre sus posibles usuarios deben tenerse en cuenta los siguientes aspectos: 7

8 Rápido retorno de la inversión: estos métodos deben dar beneficios a las personas que los utilicen desde el primer momento. Los beneficios deben incrementarse con el esfuerzo: los beneficios aportados por estas técnicas deben hacerse mayores según los desarrolladores aumenten sus esfuerzos en escribir especificaciones o utilizar las herramientas. Múltiple uso: la amortización de un método o herramienta es mayor si esta tiene varios usos. Uso integrado: los métodos y herramientas deben integrarse perfectamente con las técnicas y lenguajes comunes de programación, de forma que los desarrolladores no tengan que adaptarse totalmente a una nueva tecnología para sacar partido de estos métodos. Facilidad de uso: la facilidad de uso aumenta el atractivo de una herramienta y reduce el tiempo en el que su utilización empieza a ser rentable. Eficiencia: una herramienta debe ser eficiente para que su utilización no suponga una pérdida de tiempo. Aún así, el tiempo de proceso de la herramienta podrá ser mayor cuanto mayores sean los beneficios que se obtengan de este proceso. Fácil de aprender: el tiempo necesario para aprender el manejo de los métodos o herramientas debe ser el menor posible, con lo que se ganará una mayor aceptación de los mismos por parte de los desarrolladores y un retorno de la inversión más rápido. Orientación a la detección de errores: los métodos y las herramientas deben estar orientados, más a la detección de errores, que a la certificación de la corrección de un sistema. Es muy deseable que sean capaces de encontrar contraejemplos. Análisis focalizado: los métodos y herramientas deben ser buenos analizando al menos uno de los aspectos del sistema. Desarrollo evolutivo: los métodos y las herramientas deben estar pensados para la evolución de los sistemas cuyo desarrollo se asista de los mismos. Un ejemplo de esto es que deben permitir especificaciones parciales o análisis de aspectos concretos de un sistema. Más ambicioso que la creación de herramientas, sería el desarrollo de metaherramientas que nos permitieran crear herramientas específicas para cada caso Integración de métodos Ya que ningún método formal es adecuado para describir y analizar todos los aspectos de un sistema complejo, debemos trabajar en la integración de distintos métodos para que puedan trabajar juntos en pos de un objetivo común. En la combinación de métodos debemos considerar dos aspectos: - Encontrar un estilo adecuado para la utilización de distintos métodos juntos. - Encontrar una semántica adecuada para la utilización de distintos métodos juntos. Una de las integraciones más prometedoras de métodos formales sería la integración de la comprobación de modelos con la prueba de teoremas. La combinación de estos 8

9 métodos podría darnos un método que redujera las desventajas de los mismos aportándonos sus mayores beneficios. Otro punto de integración de elevada importancia es la integración con el proceso de desarrollo, sobre todo en las partes de análisis, refinamiento y pruebas del sistema Educación y transmisión de la tecnología Un punto crucial para el éxito de una tecnología y, por tanto, de la utilización de los métodos formales en el desarrollo de sistemas es la transmisión de estos conocimientos a las distintas audiencias. Las audiencias destino serían las siguientes: - Otros investigadores - Desarrolladores - Estudiantes 9

10 2. SPIN 2.1. Características generales Antes de abordar el estudio de la herramienta en más profundidad daremos una lista de características generales de la misma. Spin es un paquete software que permite la verificación formal de sistemas distribuidos. Este software fue desarrollado por el grupo de métodos formales y verificación de los Laboratorios Bell, dando comienzo su desarrollo en El sistema presenta las siguientes características: Spin es un producto para la verificación de software, no pensado para la verificación de hardware. Para llevar a cabo este proceso utiliza un lenguaje propio para especificar descripciones de sistemas. Este lenguaje se denomina PROMELA (PROcess MEta LANguage) y es un lenguaje no determinístico. Spin ha sido utilizado para encontrar errores en el diseño lógico de sistemas distribuidos (ej.: sistemas operativos, protocolos de comunicaciones, sistemas concentradores, algoritmos concurrentes, etc.). La herramienta comprueba la consistencia lógica de una especificación informando de: interbloqueo, recepciones no especificadas, flags incompletos, race conditions y afirmaciones no garantizadas acerca de las velocidades relativas de los procesos. Spin trabaja on-the-fly, lo que quiere decir que evita tener que construir un grafo de estados global o una estructura Kripke, como preresquisito para la verificación de algunas de las propiedades del sistema. Spin puede ser utilizado como comprobador de modelos LTL (linear line temporal), permitiendo manejar todos los requisitos correctamente expresados en lógica LTL. Aún así, puede ser utilizado como un eficiente verificador on-the-fly para muchas propiedades (muchas de las propiedades de un sistema pueden ser especificadas y verificadas sin utilizar LTL. Spn soporta que el número de procesos aumente o mengüe dinámicamente, para lo que utiliza una técnica rubber state vector. Spin soporta tanto redezvous, como el pase de mensajes en buffers. Soporta comunicaciones a través de memoria compartida. Por otro lado, admite tanto, comunicaciones síncronas, como asíncronas. Soporta simulación aleatoria, interactiva y guiada, así como técnicas de prueba exhaustivas y parciales. La herramienta está pensada para enfrentarse a problemas de gran tamaño. Para optimizar la verificación, la herramienta utiliza técnicas de reducción de orden parcial y (opcionalmente) técnicas de almacenamiento BDD. Spin puede ser utilizado en 3 modos básicos: - Como simulador, permitiendo un prototipado rápido mediante una simulación aleatoria, guiada o interactiva. 10

11 - Como un analizador exhaustivo del espacio de estados, capaz de demostrar de forma rigurosa la validez de los requerimientos de corrección. Aquí utiliza la teoría de las reducciones de orden parcial para optimizar la búsqueda. - Como un analizador de un espacio de estados-bit puede validar, incluso sistemas de protocolos de gran tamaño, con la máxima cobertura del espacio de estados. (Es una técnica de prueba aproximada). El software de Spin está escrito en el estándar ANSI C, pudiendo ser portado a todas las versiones de Linux, a Windows 95/98 y a Windows NT. A partir de aquí y, tras describir someramente las principales características del sistema, pasaremos a describirlo en mayor profundidad a lo largo de los próximos apartados. 11

12 2.2. Introducción Spin es un sistema genérico de verificación que soporta el diseño y la verificación de sistemas de procesos asíncronos. Los modelos de verificación de Spin están enfocados en probar la corrección de las interacciones de los procesos, abstrayéndose lo más posible de secuencia de computaciones interna. La interacción entre procesos se indica a través de primitivas rendezvous, con pase asíncrono de mensajes a través de canales con buffer, acceso a variables compartidas o con una combinación de estos. Como herramienta para la puesta en práctica de métodos formales, SPIN intenta proporcionar: 1) Una intuitiva notación (similar a la de un lenguaje de programación) que nos permite especificar detalles del diseño sin ambigüedades y sin llegar a nivel de implementación. 2) Una notación concisa para expresar requerimientos genéricos de corrección 3) Una metodología para establecer la consistencia lógica de los detalles de diseño de 1) y comprobar los requerimientos de corrección de 2). Spin acepta especificaciones de diseño por medio del lenguaje PROMELA (PROcess MEta LAnguage), que, a su vez, acepta especificaciones de corrección en la sintaxis del estándar LTL (Linear Temporal Logic). Las notaciones en Spin se han escogido de tal forma que la consistencia lógica de un diseño pueda ser demostrada por la herramienta Estructura La estructura básica del comprobador de modelos Spin es la que podemos ver en la siguiente figura: 12

13 Figura 1: Estructura de la simulación y la verificación en SPIN La forma típica de trabajar es comenzando con la especificación de un modelo de alto nivel de un sistema concurrente (o algoritmo distribuido), normalmente utilizando el front-end gráfico XSpin. Tras arreglar los errores sintácticos, se ejecuta una simulación interactiva hasta que se tenga la suficiente confianza de que, el comportamiento del sistema, es el esperado. En un tercer paso, Spin es utilizado para generar un programa de verificación on-the-fly optimizado, a partir del la especificación de alto nivel. Este verificador es compilado (aquí se pueden utilizar diversas opciones de compilación para escoger el tipo de algoritmo de reducción) y ejecutado. Si se encontrase algún contraejemplo para las especificaciones de corrección, éste puede ser probado en el simulador, con el objeto de buscar la causa del mismo y eliminarla. 13

14 2.3. Fundamentos Spin tiene sus orígenes en los primeros sistemas de verificación de protocolos de principios de los 80. Estos primeros verificadores se basaban en un análisis on-the-fly del alcance y, su objetivo, era proporcionar una herramienta efectiva que pudiera resolver problemas con un alcance práctico. La complejidad computacional del problema, obliga a uno a escoger cuidadosamente que características soportará el sistema, llegando a un compromiso entre utilidad y complejidad. Así, los predecesores de Spin proporcionaban un rango de características mucho menor que el alcanzado con éste. A partir de este punto nos centraremos en Spin: En lo referente a la descripción de un sistema concurrente en PROMELA, ésta está formada por: una o más plantillas de procesos definidas por el usuario o definiciones de tipos de procesos, y, al menos una instanciación de procesos. Las plantillas definen el comportamiento de los distintos tipos de procesos. Cualquier proceso puede instanciar otros procesos asíncronos usando las plantillas de procesos. Spin traduce cada plantilla de procesos en un autómata finito. El comportamiento global del sistema concurrente se obtiene al computar un producto entrelazado y asíncrono de autómatas (un autómata por cada comportamiento asíncrono de proceso). El resultado global, con el comportamiento del sistema, es representado, a su vez, mediante un autómata. Este producto entrelazado es conocido, normalmente, como el espacio de estados del sistema y puede ser representado fácilmente como un grafo, que se conoce, a su vez, como el grafo global de alcance. Antes de explicar el proceso de verificación diremos que, un autómata de Büchi es un autómata definido sobre infinitas secuencias de entrada, en vez de sobre un conjunto finito como en la teoría estándar de máquinas de estado finito. Para realizar la verificación, Spin coge un requerimiento de corrección expresado como una fórmula de lógica temporal, la convierte en un autómata de Büchi y computa el producto síncrono de ese requerimiento con el atómata que representa el estado de espacios global; siendo, el resultado, nuevo autómata de Büchi. Si el lenguaje aceptado por ese autómata es vacío, significará que el requerimiento original no se satisface para el sistema dado. Si el lenguaje no es vacío, contendrá exactamente los comportamientos que satisfacen la fórmula original. En Spin, se utilizan los requerimientos de corrección para formalizar los comportamientos erróneos en los sistemas (comportamientos no deseados), de forma que el proceso de verificación demuestra que esos comportamientos no son posibles en el sistema o, en su defecto, nos indicará en que casos se dan esos comportamientos. En el peor caso, el grafo de alcance global tendrá el tamaño del producto cartesiano de todos los componentes del sistema. La especificación del lenguaje PROMELA está definida de tal modo que, cada componente siempre tiene un rango finito. Esto se aplica a los procesos (que sólo podrán tener un conjunto finito de estados) y a todos los canales de mensajes (todos con una capacidad limitada según lo que indique el usuario. Nota: Las variables y los canales de mensajes también tienen un estado que se seleccionará a partir de un dominio finito. Estos componentes pasivos pueden cambiar de estado sólo como un efecto lateral síncrono, de las transiciones que se hacen en los 14

15 componentes activos del modelo de verificación, es decir, en los procesos instanciados). De todos modos, en la práctica, el tamaño del alcance global, nunca se aproxima al del peor caso, ya que el tamaño del producto cartesiano podría hacer prohibitivos los procesos computacionales exhaustivos. Con objeto de evitar este problema, se han desarrollado varias técnicas para el manejo de la complejidad Requerimientos de lógica temporal Spin acepta propiedades de corrección expresadas en lógica lineal temporal (LTL). Vardi y Wolper demostraron en 1983 que cualquier fórmulal LTL puede ser traducida a un autómata de Büchi. Spin implementa la conversión a un autómata de Büchi basada en una simple construcción on-the-fly. El autómata generado sólo acepta las ejecuciones que satisfacen la correspondiente fórmula LTL (existen infinitas). Como se ha explicado anteriormente, se utilizan requerimientos de corrección que expresan comportamientos indeseados del sistema (con el objeto de demostrar que no se pueden producir). Cada posible fórmula LTL puede ser transformada en su negación y viceversa, mediante la adicción del operador de negación al principio de la misma. En principio puede parecer que es indiferente cuál de las dos formas se escoja, pero hay una diferencia: Una cláusula positiva requiere la demostración de que el lenguaje del sistema (es decir, todas sus ejecuciones) está incluido en el lenguaje de la cláusula. Una cláusula negativa requiere la demostración de que la intersección de los lenguajes es vacía. El tamaño del espacio de estados para la demostración de una inclusión de lenguajes, en el peor caso es el producto cartesiano de los autómatas del sistema y la restricción y, como mínimo, su suma. El peor caso para la demostración de que la intersección de dos lenguajes es vacía, también es el producto cartesiano del sistema y la restricción, pero, en el mejor caso, es cero. (Si la parte inicial del comportamiento inválido representado en la restricción, no aparece en el sistema, la intersección no contendrá ningún estado). Por todo lo relatado, Spin trabaja con cláusulas negativas y resuelve el problema de la verificación mediante intersección de lenguajes. Un autómata de Büchi acepta una ejecución del sistema si, y sólo si, la ejecución fuerza el paso por uno o más de sus estados de aceptación infinitas veces. Este comportamiento es llamado ciclos de aceptación (una ejecución infinita en un sistema finito supone la existencia de un ciclo). Para demostrar que no existe un a secuencia de aceptación que cumpla el requisito de aceptación negativo, es suficiente probar que no existen ciclos de aceptación en la ejecución combinada del sistema y el autómata de Büchi que representa el requisito. Esta ejecución combinada se define formalmente por el producto síncrono del sistema y el requisito. La computación realizada por Spin para llevar a cabo esta demostración se basa en un algoritmo de búsqueda en profundidad anidado (nested depth-first search algorithm). Esta búsqueda terminará cuando se encuentre un contraejemplo (se encuentra un ciclo de aceptación) o si se recorre todo el producto sin encontrar ciclos Dominio de aplicación 15

16 Es diseño de Spin está enfocado a la verificación eficiente de sistemas software asíncronos. Esto afecta a varias características de la herramienta, como el diseño del lenguaje de especificación, la lógica, el procedimiento de verificación, las técnicas de reducción y los métodos de codificación de estados. 16

17 2.4. Algoritmos En este apartado comentaremos brevemente los algoritmos utilizados por la herramienta Nested depth-first search El método para la detección de ciclos utilizado por Spin es de vital importancia para la herramienta. Este método debe ser compatible con todos los modos de verificación, incluyendo la búsqueda exhaustiva, bit-state hashing y las técnicas de reducción de orden parcial. El algoritmo clásico para encontrar un ciclo en un grafo es el algoritmo depth-first seach de Tarjan, que construye los elementos fuertemente conectados en tiempo lineal, mediante la adicción de dos enteros a cada estado alcanzado. Debido a que el espacio de estados susceptible de ser generado por Spin, podría tener miles de millones de estados alcanzables, estos dos números enteros deberían ser de 32 bits cada uno. Este algoritmo no es compatible con las técnicas de bit-state hashing, también presentes en Spin, lo que nos hace buscar una alternativa más eficiente en cuanto a espacio. Una nested depth-fist search puede visitar cada estado dos veces, pero puede almacenar cada estado con sólo 2 bits a mayores (utilizando un método de codificación simple), en lugar de los 64 bits del método de Tarjan. El principio de esta búsqueda es el siguiente: para encontrar un ciclo de aceptación en el grafo de alcance debe haber un estado de aceptación que sea, a la vez, alcanzable desde el inicio y desde el propio nodo de aceptación. La primera búsqueda en profundidad realizada, nos dice que estados de aceptación son alcanzables desde el inicio. La búsqueda en profundidad anidada comprueba si son alcanzables desde sí mismos. Si se llega a completar una ejecución tendremos el ciclo de aceptación, que será la concatenación de la lista de estados recorridos en las dos búsquedas. Este ciclo será un contraejemplo del requerimiento de corrección y podrá ser mostrado como prueba de que éste no se cumple. Este algoritmo no garantiza que encontremos todos los ciclos de aceptación, pero nos garantiza encontrar al menos uno si alguno existe. Esto supone encontrar un contraejemplo del requisito y, por tanto, cumplir los propósitos mínimos para realizar la verificación. Este algoritmo cuenta también con una restricción propia para evitar el cómputo de caminos infinitos que no nos lleven a una solución Paso de fórmulas LTL a autómatas de Büchi Las fórmulas LTL pueden ser utilizadas para expresar distintas propiedades en el sistema. Una fórmula LTL f, puede contener varios símbolos proposicionales p (en minúsculas), combinados con operadores, unarios o binarios, boléanos o temporales. 17

18 El algoritmo de traducción, computa los estados de un autómata de Büchi, mediante el cómputo del conjunto de subfórmulas que deben permanecer en cada estado alcanzable y en cada uno de sus estados sucesores. En primer lugar, se pasa la fórmula a la forma normal, con negaciones sólo adyacentes a proposiciones atómicas. Se crea un estado inicial, marcado con la fórmula que va a ser macheada y un falso estado de borde. El resto del autómata se calcula recursivamente. En cada estado, se coge una subfórmula que espera ser satisfecha y, de acuerdo con su operador principal, el estado actual podría ser dividido en dos estados con distintas partes de la subfórmula. Finalmente se detectan los estados de aceptación en base a la fórmula que contengan Reducción de orden parcial Spin usa un método de reducción de orden parcial para reducir el número de estados alcanzables que deben ser explorados para completar una verificación. La reducción está basada en la observación de que, la validez de una fórmula LTL, suele ser insensible al orden de ejecución de eventos independientes en la depth-fist search. Así, en lugar de generar un espacio de estados exhaustivo, que incluya todas las secuencias de ejecución, éste se reduce a clases representativas de ejecución, que sean indistinguibles para una propiedad de corrección dada. La implementación de este método de reducción, se basa en una técnica estática de reducción, que, antes de que la verificación real de comienzo, identifica casos en que una regla de reducción de orden parcial pueda ser aplicada, de modo que no afecte al proceso de verificación. Este método estático de reducción evita la sobrecarga del tiempo de ejecución del que, otras estrategias de reducción adolecían. Una característica importante del método estático de reducción de Spin es que no conlleva un importante aumento del uso de la memoria, con respecto a una búsqueda exhaustiva. Además, este método de reducción no se muestra sensible a decisiones acerca del orden de los procesos o de las variables. Lo métodos alternativos de reducción, basados en diagramas de decisión binarios, presentan problemas en los dos aspectos antes mencionados Requisitos de tiempo y memoria El tamaño del producto entrelazado que Spin puede computar, en el peor caso, crece exponencialmente con el número de procesos. Dado el tamaño del producto, expresado como el número de estados alcanzables R, podemos establecer una cota superior del la cantidad de memoria y tiempo que serían necesarios para completar varios tipos de tareas de verificación. Probar propiedades de seguridad, tales como la ausencia de interbloqueo o condiciones del usuario, supone un coste computacional que es lineal en el número de estados alcanzables R, tanto en tiempo de CPU como en requisitos de memoria. Para probar otras propiedades simples, tales como la ausencia de inanición o de ciclos de aceptación, se requiere el doble de tiempo, aunque la memoria no se ve incrementada significativamente. Para probar propiedades LTL, los requerimientos de tiempo crecen en un factor, que, en el peor caso, puede ser el exponente del número de operadores 18

19 utilizados en la fórmula. Los requisitos de memoria, sin embargo, permanecen largo tiempo inalterados. Las propiedades LTL usadas en la práctica, rara vez tiene más de dos o tres operadores, así que, el aumento en la complejidad es relativamente pequeño comparado con la potencia que se le da al sistema. La memoria es un recurso limitado en cualquier sistema. No es difícil construir un comprobador de modelos que use tan sólo una pequeña cantidad de memoria, pero esto sólo se puede hacer a expensas de un aumento en el tiempo utilizado inaceptable. Para alcanzar este propósito Spin utiliza principalmente dos técnicas: compresión de los estados y técnicas de bit-state hashing (gracias a la cual sólo dos bits son necesarios para el almacenamiento de un estado alcanzable). 19

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

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

TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA

TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA Programa: Algoritmo (secuencia no ambigua, finita y ordenada de instrucciones para la resolución de un determinado problema) traducido

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

Interoperabilidad de Fieldbus

Interoperabilidad de Fieldbus 2002 Emerson Process Management. Todos los derechos reservados. Vea este y otros cursos en línea en www.plantwebuniversity.com. Fieldbus 201 Interoperabilidad de Fieldbus Generalidades Qué es interoperabilidad?

Más detalles

Tema 2. Espacios Vectoriales. 2.1. Introducción

Tema 2. Espacios Vectoriales. 2.1. Introducción Tema 2 Espacios Vectoriales 2.1. Introducción Estamos habituados en diferentes cursos a trabajar con el concepto de vector. Concretamente sabemos que un vector es un segmento orientado caracterizado por

Más detalles

Técnicas de prueba 1. FUNDAMENTOS DE LA PRUEBA DEL SOFTWARE

Técnicas de prueba 1. FUNDAMENTOS DE LA PRUEBA DEL SOFTWARE Técnicas de prueba El desarrollo de Sistemas de software implica la realización de una serie de actividades predispuestas a incorporar errores (en la etapa de definición de requerimientos, de diseño, de

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

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

Gestión de la Configuración

Gestión de la Configuración Gestión de la ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 1 ESTUDIO DE VIABILIDAD DEL SISTEMA... 2 ACTIVIDAD EVS-GC 1: DEFINICIÓN DE LOS REQUISITOS DE GESTIÓN DE CONFIGURACIÓN... 2 Tarea EVS-GC 1.1: Definición 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

La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx

La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx Resumen Se dan algunas definiciones básicas relacionadas con la divisibilidad

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

ANÁLISIS Y DISEÑO DE SISTEMAS DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACIÓN

ANÁLISIS Y DISEÑO DE SISTEMAS DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACIÓN ANÁLISIS Y DISEÑO DE SISTEMAS DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACIÓN Clase 6: Ingeniería de Requerimientos Metododología y Ejemplo Primer Cuatrimestre 2015 Mg. María Mercedes Vitturini

Más detalles

Parte I: Introducción

Parte I: Introducción Parte I: Introducción Introducción al Data Mining: su Aplicación a la Empresa Cursada 2007 POR QUÉ? Las empresas de todos los tamaños necesitan aprender de sus datos para crear una relación one-to-one

Más detalles

SEGURIDAD Y PROTECCION DE FICHEROS

SEGURIDAD Y PROTECCION DE FICHEROS SEGURIDAD Y PROTECCION DE FICHEROS INTEGRIDAD DEL SISTEMA DE ARCHIVOS ATAQUES AL SISTEMA PRINCIPIOS DE DISEÑO DE SISTEMAS SEGUROS IDENTIFICACIÓN DE USUARIOS MECANISMOS DE PROTECCIÓN Y CONTROL INTEGRIDAD

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

Análisis y Diseño de Aplicaciones

Análisis y Diseño de Aplicaciones Análisis y Diseño de Aplicaciones Ciclo de Vida Docente: T/RT Gonzalo Martínez CETP EMT Informática 3er Año Introducción En el desarrollo de sistemas, el ciclo de vida son las etapas por las que pasa un

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

SISTEMAS DE NUMERACIÓN. Sistema decimal

SISTEMAS DE NUMERACIÓN. Sistema decimal SISTEMAS DE NUMERACIÓN Sistema decimal Desde antiguo el Hombre ha ideado sistemas para numerar objetos, algunos sistemas primitivos han llegado hasta nuestros días, tal es el caso de los "números romanos",

Más detalles

UNIDADES DE ALMACENAMIENTO DE DATOS

UNIDADES DE ALMACENAMIENTO DE DATOS 1.2 MATÉMATICAS DE REDES 1.2.1 REPRESENTACIÓN BINARIA DE DATOS Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS. Los computadores sólo

Más detalles

7. Conclusiones. 7.1 Resultados

7. Conclusiones. 7.1 Resultados 7. Conclusiones Una de las preguntas iniciales de este proyecto fue : Cuál es la importancia de resolver problemas NP-Completos?. Puede concluirse que el PAV como problema NP- Completo permite comprobar

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

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

"Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios

Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios "Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios Miguel Alfonso Flores Sánchez 1, Fernando Sandoya Sanchez 2 Resumen En el presente artículo se

Más detalles

Introducción. Metadatos

Introducción. Metadatos Introducción La red crece por momentos las necesidades que parecían cubiertas hace relativamente poco tiempo empiezan a quedarse obsoletas. Deben buscarse nuevas soluciones que dinamicen los sistemas de

Más detalles

Introducción En los años 60 s y 70 s cuando se comenzaron a utilizar recursos de tecnología de información, no existía la computación personal, sino que en grandes centros de cómputo se realizaban todas

Más detalles

GUIA SOBRE LOS REQUISITOS DE LA DOCUMENTACION DE ISO 9000:2000

GUIA SOBRE LOS REQUISITOS DE LA DOCUMENTACION DE ISO 9000:2000 1 INTRODUCCIÓN Dos de los objetivos más importantes en la revisión de la serie de normas ISO 9000 han sido: desarrollar un grupo simple de normas que sean igualmente aplicables a las pequeñas, a las medianas

Más detalles

Metodología Orientada a Objetos Clave 43100007 Maestría en Sistemas Computacionales

Metodología Orientada a Objetos Clave 43100007 Maestría en Sistemas Computacionales Metodología Orientada a Objetos Clave 43100007 Maestría en Sistemas Computacionales Modulo 03 UML: Vista de Casos de Uso Artefacto: Actores Catedrático MSC. Jose Juan Aviña Grimaldo e-mail josejuan_avina@gmail.com

Más detalles

Proyecto MONO. Juantomás García. 1. Introducción. GNOME Hispano juantomas@lared.es

Proyecto MONO. Juantomás García. 1. Introducción. GNOME Hispano juantomas@lared.es Juantomás García GNOME Hispano juantomas@lared.es Qué es el proyecto MONO?. Estado actual del proyecto. Por qué es interesante para el software libre disponer de la tecnología relacionado con el proyecto

Más detalles

e-commerce, es hacer comercio utilizando la red. Es el acto de comprar y vender en y por medio de la red.

e-commerce, es hacer comercio utilizando la red. Es el acto de comprar y vender en y por medio de la red. Comercio electrónico. (e-commerce) Las empresas que ya están utilizando la red para hacer comercio ven como están cambiando las relaciones de la empresa con sus clientes, sus empleados, sus colaboradores

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

Capitulo I. Introducción

Capitulo I. Introducción Capitulo I. Introducción 1.1 Descripción del trabajo El ser humano, como todos sabemos tiene la necesidad de comunicarse, de ser escuchado y sobretodo interactuar con los demás seres vivos que lo rodean.

Más detalles

CRIPTOGRAFÍA SIMÉTRICA Y ASIMÉTRICA

CRIPTOGRAFÍA SIMÉTRICA Y ASIMÉTRICA CRIPTOGRAFÍA SIMÉTRICA Y ASIMÉTRICA Para generar una transmisión segura de datos, debemos contar con un canal que sea seguro, esto es debemos emplear técnicas de forma que los datos que se envían de una

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

CAPÍTULO 3 VISUAL BASIC

CAPÍTULO 3 VISUAL BASIC CAPÍTULO 3 VISUAL BASIC 3.1 Visual Basic Microsoft Visual Basic es la actual y mejor representación del viejo lenguaje BASIC, le proporciona un sistema completo para el desarrollo de aplicaciones para

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

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Unidad I Sistemas numéricos 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS.

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

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

TEMA 2: Representación de la Información en las computadoras

TEMA 2: Representación de la Información en las computadoras TEMA 2: Representación de la Información en las computadoras Introducción Una computadora es una máquina que procesa información y ejecuta programas. Para que la computadora ejecute un programa, es necesario

Más detalles

El Proceso Unificado de Desarrollo de Software

El Proceso Unificado de Desarrollo de Software El Proceso de Desarrollo de Software Ciclos de vida Métodos de desarrollo de software El Proceso Unificado de Desarrollo de Software 1 Fases principales del desarrollo de software Captura de requisitos:

Más detalles

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true I. FUNDAMENTOS 3. Representación de la información Introducción a la Informática Curso de Acceso a la Universidad

Más detalles

4 Pruebas y análisis del software

4 Pruebas y análisis del software 4 Pruebas y análisis del software En este capítulo se presentan una serie de simulaciones donde se analiza el desempeño de ambos sistemas programados en cuanto a exactitud con otros softwares que se encuentran

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

MACROS. Automatizar tareas a través del uso de las macros.

MACROS. Automatizar tareas a través del uso de las macros. OBJETIVOS MACROS Definiciones Automatizar tareas a través del uso de las macros. Grabar Ejecutar Manipular macros. Tipos de Macros en Excel Introducción Las operaciones tradicionales que se pueden realizar

Más detalles

Su éxito se mide por la pertinencia y la oportunidad de la solución, su eficacia y eficiencia.

Su éxito se mide por la pertinencia y la oportunidad de la solución, su eficacia y eficiencia. APUNTES PARA EL CURSO PROCESOS COGNITIVOS: RESOLUCIÓN DE PROBLEMAS Y TOMA DE DECISIONES Elaborado por Vicente Sisto Campos. Se trata de la confluencia de la capacidad analítica del equipo de identificar

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

Es de aplicación a todas aquellas situaciones en las que se necesita desplegar un objetivo para obtener una visión clara de cómo debe ser alcanzado.

Es de aplicación a todas aquellas situaciones en las que se necesita desplegar un objetivo para obtener una visión clara de cómo debe ser alcanzado. DIAGRAMA DE AÁRBOL 1.- INTRODUCCIÓN Este documento describe el proceso de construcción de un Diagrama de Árbol, mediante el cual se dispone de una metodología simple y sistemática para la identificación

Más detalles

DISEÑO DE FUNCIONES (TRATAMIENTOS)

DISEÑO DE FUNCIONES (TRATAMIENTOS) DISEÑO DE FUNCIONES (TRATAMIENTOS) Diseño Estructurado. Estrategias para Derivar el Diagrama de Estructura. Diseño de Módulos Programables. 1. DISEÑO ESTRUCTURADO El Diseño es el proceso por el cual se

Más detalles

TEMA I: INTRODUCCIÓN A LA ELECTRÓNICA DIGITAL

TEMA I: INTRODUCCIÓN A LA ELECTRÓNICA DIGITAL TEMA I: INTRODUCCIÓN A LA ELECTRÓNICA DIGITAL 1. Electrónica Digital Antes de empezar en el tema en cuestión, vamos a dar una posible definición de la disciplina que vamos a tratar, así como su ámbito

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

Parámetros con la ventana de selección de usuario, reglas, texto y descomposición (IVE)

Parámetros con la ventana de selección de usuario, reglas, texto y descomposición (IVE) QUÉ SON CONCEPTOS PARAMÉTRICOS? Los conceptos paramétricos de Presto permiten definir de una sola vez una colección de conceptos similares a partir de los cuales se generan variantes o conceptos derivados

Más detalles

Versión final 8 de junio de 2009

Versión final 8 de junio de 2009 GRUPO DE EXPERTOS «PLATAFORMA PARA LA CONSERVACIÓN DE DATOS ELECTRÓNICOS PARA CON FINES DE INVESTIGACIÓN, DETECCIÓN Y ENJUICIAMIENTO DE DELITOS GRAVES» ESTABLECIDO POR LA DECISIÓN 2008/324/CE DE LA COMISIÓN

Más detalles

1. INTRODUCCIÓN 1.1 INGENIERÍA

1. INTRODUCCIÓN 1.1 INGENIERÍA 1. INTRODUCCIÓN 1.1 INGENIERÍA Es difícil dar una explicación de ingeniería en pocas palabras, pues se puede decir que la ingeniería comenzó con el hombre mismo, pero se puede intentar dar un bosquejo

Más detalles

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014 Tecnologías en la Educación Matemática jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR 1 Datos Los algoritmos combinan datos con acciones. Los datos de entrada

Más detalles

Métodos Heurísticos en Inteligencia Artificial

Métodos Heurísticos en Inteligencia Artificial Métodos Heurísticos en Inteligencia Artificial Javier Ramírez rez-rodríguez Ana Lilia Laureano-Cruces Universidad Autónoma Metropolitana Métodos Heurísticos en Inteligencia Artificial Los problemas de

Más detalles

Una (muy) breve introducción a la teoría de la computación

Una (muy) breve introducción a la teoría de la computación Una (muy) breve introducción a la teoría de la computación Marcelo Arenas M. Arenas Una (muy) breve introducción a la teoría de la computación 1 / 48 Ciencia de la computación Cuál es el objeto de estudio

Más detalles

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software.

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software. ARQUITECTURA DE LAS COMPUTADORAS QUE ES UNA COMPUTADORA (UN ORDENADOR)? Existen numerosas definiciones de una computadora, entre ellas las siguientes: 1) Una computadora es un dispositivo capaz de realizar

Más detalles

Capítulo 9. Archivos de sintaxis

Capítulo 9. Archivos de sintaxis Capítulo 9 Archivos de sintaxis El SPSS permite generar y editar archivos de texto con sintaxis SPSS, es decir, archivos de texto con instrucciones de programación en un lenguaje propio del SPSS. Esta

Más detalles

Apuntes de Matemática Discreta 9. Funciones

Apuntes de Matemática Discreta 9. Funciones Apuntes de Matemática Discreta 9. Funciones Francisco José González Gutiérrez Cádiz, Octubre de 004 Universidad de Cádiz Departamento de Matemáticas ii Lección 9 Funciones Contenido 9.1 Definiciones y

Más detalles

TRANSMISION DIGITAL. PCM, Modulación por Codificación de Pulsos

TRANSMISION DIGITAL. PCM, Modulación por Codificación de Pulsos MODULACIÓN TRANSMISION DIGITAL La amplia naturaleza de las señales analógicas es evidente, cualquier forma de onda está disponible con toda seguridad en el ámbito analógico, nos encontramos con una onda

Más detalles

Capítulo 12: Indexación y asociación

Capítulo 12: Indexación y asociación Capítulo 12: Indexación y asociación Conceptos básicos Índices ordenados Archivos de índice de árbol B+ Archivos de índice de árbol B Asociación estática Asociación dinámica Comparación entre indexación

Más detalles

K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2

K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2 K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2 Historia de revisiones Fecha VersiónDescripción Autor 08/10/2009 1.0 Creación del documento.

Más detalles

CAPÍTUL07 SISTEMAS DE FILOSOFÍA HÍBRIDA EN BIOMEDICINA. Alejandro Pazos, Nieves Pedreira, Ana B. Porto, María D. López-Seijo

CAPÍTUL07 SISTEMAS DE FILOSOFÍA HÍBRIDA EN BIOMEDICINA. Alejandro Pazos, Nieves Pedreira, Ana B. Porto, María D. López-Seijo CAPÍTUL07 SISTEMAS DE FILOSOFÍA HÍBRIDA EN BIOMEDICINA Alejandro Pazos, Nieves Pedreira, Ana B. Porto, María D. López-Seijo Laboratorio de Redes de Neuronas Artificiales y Sistemas Adaptativos Universidade

Más detalles

Plan de estudios ISTQB: Nivel Fundamentos

Plan de estudios ISTQB: Nivel Fundamentos Plan de estudios ISTQB: Nivel Fundamentos Temario 1. INTRODUCCIÓN 2. FUNDAMENTOS DE PRUEBAS 3. PRUEBAS A TRAVÉS DEL CICLO DE VIDA DEL 4. TÉCNICAS ESTÁTICAS 5. TÉCNICAS DE DISEÑO DE PRUEBAS 6. GESTIÓN DE

Más detalles

PRODUCTIVIDAD DE PROYECTOS DE DESARROLLO DE SOFTWARE: FACTORES DETERMINANTES E INDICADORES

PRODUCTIVIDAD DE PROYECTOS DE DESARROLLO DE SOFTWARE: FACTORES DETERMINANTES E INDICADORES PRODUCTIVIDAD DE PROYECTOS DE DESARROLLO DE SOFTWARE: FACTORES DETERMINANTES E INDICADORES Raúl Palma G. y Guillermo Bustos R. Escuela de Ingeniería Industrial Universidad Católica de Valparaíso Casilla

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

ÍNDICE DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ

ÍNDICE DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ ELECTRÓNICA DIGITAL DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ IES TRINIDAD ARROYO DPTO. DE ELECTRÓNICA ÍNDICE ÍNDICE... 1 1. LIMITACIONES DE LOS CONTADORES ASÍNCRONOS... 2 2. CONTADORES SÍNCRONOS...

Más detalles

Capítulo VI. Diagramas de Entidad Relación

Capítulo VI. Diagramas de Entidad Relación Diagramas de Entidad Relación Diagramas de entidad relación Tabla de contenido 1.- Concepto de entidad... 91 1.1.- Entidad del negocio... 91 1.2.- Atributos y datos... 91 2.- Asociación de entidades...

Más detalles

Día 5-6-2012 17:00h Lugar: Obra Social Ibercaja, Sala De actos, Rambla Ferran 38, 3º, Lleida

Día 5-6-2012 17:00h Lugar: Obra Social Ibercaja, Sala De actos, Rambla Ferran 38, 3º, Lleida Resumen de la conferencia Día 5-6-2012 17:00h Lugar: Obra Social Ibercaja, Sala De actos, Rambla Ferran 38, 3º, Lleida Ponente: Luis Muñiz Socio Director de Sisconges & Estrategia y experto en Sistemas

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

ISO 9001:2000 DOCUMENTO INFORMATIVO DOCUMENTO ELABORADO POR CHRISTIAN NARBARTE PARA EL IVECE

ISO 9001:2000 DOCUMENTO INFORMATIVO DOCUMENTO ELABORADO POR CHRISTIAN NARBARTE PARA EL IVECE ISO 9001:2000 DOCUMENTO INFORMATIVO DOCUMENTO ELABORADO POR CHRISTIAN NARBARTE PARA EL IVECE MARZO 2007 Este documento contesta las preguntas más frecuentes que se plantean las organizaciones que quieren

Más detalles

Capitulo V Administración de memoria

Capitulo V Administración de memoria Capitulo V Administración de memoria Introducción. Una de las tareas más importantes y complejas de un sistema operativo es la gestión de memoria. La gestión de memoria implica tratar la memoria principal

Más detalles

TECNÓLOGO EN INFORMÁTICA PLAN DE ESTUDIOS

TECNÓLOGO EN INFORMÁTICA PLAN DE ESTUDIOS Administración Nacional de Universidad de la República Educación Pública Facultad de Ingenieria CF Res..0.07 Consejo Directivo Central Consejo Directivo Central Res..05.07 Res. 17.0.07 TECNÓLOGO EN INFORMÁTICA

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

Curso: Teoría de la Computación. Unidad 2, Sesión 8: Complejidad computacional (2)

Curso: Teoría de la Computación. Unidad 2, Sesión 8: Complejidad computacional (2) Curso: Teoría de la Computación. Unidad 2, Sesión 8: Complejidad computacional (2) Instituto de Computación, Facultad de Ingeniería Universidad de la República, Montevideo, Uruguay dictado semestre 2-2009

Más detalles

Competencias generales vinculadas a los distintos módulos Módulo de Formación Básica

Competencias generales vinculadas a los distintos módulos Módulo de Formación Básica Competencias generales vinculadas a los distintos módulos Módulo de Formación Básica C1. Capacidad para la resolución de los problemas matemáticos que puedan plantearse en la ingeniería. Aptitud para aplicar

Más detalles

Ciclo de vida del Software

Ciclo de vida del Software Tema 2: Ciclo de vida del Software Marcos López Sanz Índice Qué es el ciclo de vida del Software? La norma 12207-2008 Modelos de desarrollo Qué es el Ciclo de Vida del SW? Es una sucesión de etapas por

Más detalles

Las 10 preguntas más habituales sobre los Sistemas de Captación de Datos en planta

Las 10 preguntas más habituales sobre los Sistemas de Captación de Datos en planta Las 10 preguntas más habituales sobre los Sistemas de Captación de Datos en planta 1. Que son los sistemas de captación de datos en planta? Los sistemas de captación de planta permiten simplificar y automatizar

Más detalles

SISTEMAS DE INFORMACIÓN I TEORÍA

SISTEMAS DE INFORMACIÓN I TEORÍA CONTENIDO: CICLO DE VIDA DE DESARROLLO DE SI FASES GENÉRICAS DEL CICLO DE VIDA DE DESARROLLO DE SI VISIÓN TRADICIONAL DEL CICLO DE VIDA DE DESARROLLO DE SI DE DESARROLLO DE SI: ANÁLISIS Material diseñado

Más detalles

Sistemas de Información Administrativo - Universidad Diego Portales. Cátedra : Sistemas de Información Administrativa S.I.A.

Sistemas de Información Administrativo - Universidad Diego Portales. Cátedra : Sistemas de Información Administrativa S.I.A. Cátedra : Sistemas de Información Administrativa S.I.A. Escuela de Contadores Auditores Tema: Ingeniería del Software Estrategias de Pruebas Relator: Sr. Eduardo Leyton G Pruebas del Software (Basado en

Más detalles

<Generador de exámenes> Visión preliminar

<Generador de exámenes> Visión preliminar 1. Introducción Proyecto Final del curso Técnicas de Producción de Sistemas Visión preliminar Para la evaluación de algunos temas de las materias que se imparten en diferentes niveles,

Más detalles

Preliminares. Tipos de variables y Expresiones

Preliminares. Tipos de variables y Expresiones Preliminares. Tipos de variables y Expresiones Felipe Osorio Instituto de Estadística Pontificia Universidad Católica de Valparaíso Marzo 5, 2015 1 / 20 Preliminares Computadoras desarrollan tareas a un

Más detalles

Administración del conocimiento y aprendizaje organizacional.

Administración del conocimiento y aprendizaje organizacional. Capítulo 2 Administración del conocimiento y aprendizaje organizacional. 2.1 La Importancia Del Aprendizaje En Las Organizaciones El aprendizaje ha sido una de las grandes necesidades básicas del ser humano,

Más detalles

Patrones de software y refactorización de código

Patrones de software y refactorización de código Patrones de software y refactorización de código Introducción y antecedentes de los patrones de software Los patrones permiten construir sobre la experiencia colectiva de ingenieros de software habilidosos.

Más detalles

Gestión de Oportunidades

Gestión de Oportunidades Gestión de Oportunidades Bizagi Suite Gestión de Oportunidades 1 Tabla de Contenido CRM Gestión de Oportunidades de Negocio... 4 Elementos del Proceso... 5 Registrar Oportunidad... 5 Habilitar Alarma y

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

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

Gestión de Configuración del Software

Gestión de Configuración del Software Gestión de Configuración del Software Facultad de Informática, ciencias de la Comunicación y Técnicas Especiales Herramientas y Procesos de Software Gestión de Configuración de SW Cuando se construye software

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

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

ESCUELA NORMAL PROFESOR CARLOS A. CARRILLO

ESCUELA NORMAL PROFESOR CARLOS A. CARRILLO ESCUELA NORMAL PROFESOR CARLOS A. CARRILLO Primer Semestre Licenciatura en Educación Primaria Profesor: Cruz Jorge Fernández Alumna: Sandra Carina Villalobos Olivas Unidad II ACTIVIDAD 3 Software Se conoce

Más detalles

Espacios generados, dependencia lineal y bases

Espacios generados, dependencia lineal y bases Espacios generados dependencia lineal y bases Departamento de Matemáticas CCIR/ITESM 14 de enero de 2011 Índice 14.1. Introducción............................................... 1 14.2. Espacio Generado............................................

Más detalles

HISTORIA Y EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS

HISTORIA Y EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS HISTORIA Y EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS Las primeras computadoras eran enormes máquinas que se ejecutaban desde una consola. El programador, quien además operaba el sistema de computación, debía

Más detalles

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas. El primer paso en el diseño de una base de datos es la producción del esquema conceptual. Normalmente, se construyen varios esquemas conceptuales, cada uno para representar las distintas visiones que los

Más detalles

Tema 2. La Información y su representación

Tema 2. La Información y su representación Tema 2. La Información y su representación 2.1 Introducción. Un ordenador es una máquina que procesa información. La ejecución de un programa implica la realización de unos tratamientos, según especifica

Más detalles

Ahorro de energía visualizando páginas Web en dispositivos móviles heterogéneos

Ahorro de energía visualizando páginas Web en dispositivos móviles heterogéneos ROC&C 06 Ahorro de energía visualizando páginas Web en dispositivos móviles heterogéneos Dr. Juan Gabriel González Serna. M.C. Juan Carlos Olivares Rojas. Acapulco, Guerrero, México, 2006. Agenda Introducción

Más detalles

Unidad didáctica: Funcionamiento de un parking. Actividad: Funcionamiento de un parking de vehículos con entrada y salida automática con:

Unidad didáctica: Funcionamiento de un parking. Actividad: Funcionamiento de un parking de vehículos con entrada y salida automática con: Unidad didáctica: Funcionamiento de un parking Descripción: Actividad: Funcionamiento de un parking de vehículos con entrada y salida automática con: Detección del vehiculo entrante Recogida de ticket

Más detalles