Mostrando entradas con la etiqueta Verificacion y Validacion de Software. Mostrar todas las entradas
Mostrando entradas con la etiqueta Verificacion y Validacion de Software. Mostrar todas las entradas

martes, 13 de noviembre de 2012

Lógica Temporal

Para ésta semana se seleccionó un ejercicio, el cuál me tocó realizar el siguiente:

14.1.9:
"If a professor is currently at the machine, there will be no student at the machine for at least the next three transitions."

Donde lo podemos traducir como:
"Si un profesor se encuentra actualmente en la máquina, no habrá ningún estudiante en la máquina durante al menos los próximos tres transiciones."
 (pam→(¬eam º tt))

pam = profesor esta en la máquina
eam = estudiante esta en la maquina
t t = tres transiciones

Referencias:
http://www.voronkov.com/lics_doc.cgi?what=chapter&n=14

martes, 6 de noviembre de 2012

Expresión w-regular

Para ésta entrada se busco hacer hacer una expresión w-regular y una vez tenida sacar el NBA, mi ejemplo a expresar es cuando se intenta entrar a una casa con las llaves

La expresión es la siguiente:




Donde:

  • A es indicado (llave indicada)
  • B es cambiar (cambiamos llaves)
  • C es intento (intentamos con la llave actual)
Expresando que: si no es la indicada en cantidad finitas, cambiamos e intentamos infinitamente.

El NBA es el siguiente:





Referencias:
http://goo.gl/izfGR
http://goo.gl/BS4IJ
http://goo.gl/5m2Tz
http://goo.gl/Yf8dL

lunes, 29 de octubre de 2012

Sistema de Transiciones

Para ésta entrada se nos pidió realizar un sistema de transiciones, el sistema que modelaré, será lago básico del llenado y vaciado de una cisterna.

Componentes:
  • Contenedor: Es donde se almacena el agua.
  • Sensor: Es el que nos indica si ya esta lleno o vacío el contenedor.
  • Válvula: Es el que abre o cierra la llave, para llenar o vaciar el contenedor.
Descripción de los componentes con estados y acciones:
  • Contenedor:
    • Estados:
      • Vacío
      • Llenando
      • Lleno
      • Vaciando
    • Acciones
      • get_agua
      • set_agua

  • Sensor:
    • Estados:
      • Activo, indicando el sensor que aún se puede ir llenando
      • Inactivo, indicando el sensor que ya no puede estar llenando
    • Acciones
      • get_agua
      • set_agua

  • Válvula:
    • Estados:
      • Activo, es cuando abrimos la válvula
      • Inactivo, es cuando abrimos la válvula
    • Acciones
      • Abrir
      • Cerrar


Diagrama de transiciones:
Estados:
  • Vacío, llenando, lleno, viciando (0,1,2,3)
  • Activo, Inactivo (0,1)
  • Activo, Inactivo (0,1)
Transiciones:
  • get_agua, set_agua, abriendo, cerrando (1,2,3,4)


Referencias:

lunes, 22 de octubre de 2012

Red Petri

Red Petri:
Es una representación de un sistema a eventos, en la que se describe el flujo de la información, ésta a su vez sirve como herramienta para modelar los sistemas.

Actividad:
Para esta entrada se nos encargo modelar un sistema concurrente, para el modelado de éste se empleo snakes de python, donde pueden descargarlo del siguiente link.

Mi sistema a modelar, será sobre las peticiones a un servidor y será algo básico, donde éste se encuentra esperando alguna entrada, una vez que tiene recibe algún dato, ésta la procesa para determinar si arroja un error, de lo contrario manda la información solicitada.


Codigo:

Diagrama:

martes, 18 de septiembre de 2012

Principios de demostraciones de validez

Para ésta entrada, nuevamente se nos pidió realizar un ejercicio del siguiente link que contiene un pdf, en mi opinión el libro es muy bueno y me ayudó de cierta manera a entender un poco más la lógica predicativa.

Ejercicio 4.36

Write out the predicate logical translation for "there are exactly three objects with property P"

Donde se me pide que encuentre el predicado lógico donde hay tres objectos con la propiedad P

Para ésto lo que se hizo fue tomar los tres objetos en éste caso x, y & z, diciendo que éstos existen ∃,
Luego para continuar con nuestra afirmación diremos que éstos no son iguales entre ellos, pero son pertenecientes a un grupo en común que es w y ya para finalizar diremos que x, y & z  mantienen la misma propiedad con w

∃x∃y∃z(-x = y ∧ -y = z ∧ -z = x ∧∀w(Pw ↔ (w = x ∨ w = y ∨ w = z)))


Referencias:
www.logicinaction.org/docs/ch4.pdf

martes, 4 de septiembre de 2012

Ejemplo de lógica predicatica

Para ésta entrada, se nos encargó realizar un ejercicio en la que lo escogeriamos en del libro "Lean symbolic logic" de Lewis Carroll, el cuál yo escogí el ejercicio 57 de la página 104:
"All medicine is nasty" => "Toda medicina es desagradable"
"Senna is a medicine" => "Senna es una medicina"
Y lo buscado en esta actividad es expresar con lógica predicativa los enunciados dados.
Así que lo primero que hice fue expresar cada frase.
"All medicine is nasty" => "∀m→N(m)"
"Senna is a medicine" => "m(s)"
Una vez tenido las expresiones o con solo conocerlas, podemos concluir que "senna es desagradable":
"Senna is nasty" => "∴ ∀s→N(s) and N(s, m)"

Referencias:
http://www.gutenberg.org/files/28696/28696-h/28696-h.htm
http://es.wikipedia.org/wiki/Notaci%C3%B3n_matem%C3%A1tica

lunes, 3 de septiembre de 2012

Diagrama de decisión binario

Para ésta entrada, se nos encargo realizar una actividad, que nos pedían realizar una expresión lógica y de ahí sacaramos un árbol de decisión binario (BDD), ya una vez tenido éste, se buscaría reducirse (RBB).

Introducción:
Definiendo un poquito ésto, encontramos que el Diagrama de decisión binario, nos sirve para representar una expresión lógica y ésta la vemos representada en un árbol binario.

Expresión booleana:
-((a^-b)V(c^a)) ^ -(-b^c)

Tabla de Verdad:


Árbol binario de decisión:
En mi caso, mi árbol de decisioón binario quedo de la siguiente manera:

Las flechas punteadas son falso y las normales verdadero.
Tips:
Podemos notar, que al momento de realizar ésto, los valores resultantes de la tabla, son los mismos de los nodos terminales (0 y 1).


Una vez teniendo el árbol, podemos proseguir a reducirlo, donde buscamos aplicar las siguientes reglas: quitar los últimos nodos que se repitan, dejando un solo nodo en 0 y 1, quitar los nodos repetidos y quitar auellos nodos que coincidan sus hijos.

Con ésto mi árbol se puede reducir de la siguiente forma:
En la cuál quite varios nodos terminales que apuntaban a uno mismo (en éste caso cero), así que los uní a uno solo, pero podemos ver que nuestro árbol aún puede ser más reducido, ya que unos nodos apuntan al mismo.

Referencia:
http://es.wikipedia.org/wiki/Diagrama_de_decisi%C3%B3n_binario 
http://ia2.freeiz.com/tema10.html

lunes, 27 de agosto de 2012

Lógica proposicional

Introducción:
Diariamente nos topamos con preguntas simples en la cuál su respuesta es falsa o verdadera, pero no ambas, mensionando algunos ejemplos vemos como: el jueves no hay tarea, el agua es un compuesto químico, el perro es un mamifero, entre otras. A esto se le llama lógica proposicional y estudia proposiciones mas complejas.

Conectivas lógicas:
las conectivas lógicas son utilizadas para unir sentencias y así formar una proposicion:



Cada conectiva lógica se distigue por el valor devuelto en sus diferentes estados de valores de entrada, para esto ayuda mucho las tablas de verdad en la cuál podemos ver sus diferentes estados.


  • Negación: Resibiendo una proposicion p, y esta negando -p, es verdadera cuando p es falsa y p es falsa cuando p es verdadera.
  • Conjunción: Resibiendo dos proposiciones p y q, tomamos que es verdadera cuando ambas son verdaderas, falso en cualquier otro caso.
  • Disyunción: Resibiendo dos proposiciones p y q, tomamos que es verdadera cuando cualquiera de sus entradas sea verdadera, falso cuando ambas son falsas.
  • Condicional: Resibiendo dos proposiciones p y q, tomamos que es falso cuando viniendo de un verdadero se pase a falso.
  • Bicondicional: Resibiendo dos proposiciones p y q, tomamos que es verdadera cuando ambas entradas sean del mismo tipo como falso & falso o verdadero & verdadero.

Aplicaciones:
Dando una breve introducción y teniendo una idea mas clara, pasemos ahora a ver donde los podemos ocupar o donde son aplicados algunos ejemplos son: principalmente en la eletrónica e informática, circuitos eletrónicos/digitales, en el habla (como se mensiono en los primeros ejemplos), inteligencia artificial, criptografía, sistemas de computos, lineas de producción, etc.

Inteligencia Artificial:
Navegando por internet me encontré con una nota que me llamo la atención y me ayudo a ver y comprender mas del caso.
nota: ¿Inteligencia artificial para iluminar los semáforos del futuro? enlace es.engadget
Ya que un semáforo lo podemos ver como un sistema de automatización o línea de producción donde tenemos una secuencia, pero ¿que pasaría si a éste se le aplica inteligencia artificial?
Aquí es donde entra la lógica proposicional, que es cuando entra en la fase de reconocimiento, ya que para llegar a esto estamos evaluando posibles datos de entrada y salida, que nos llevará a una sola (semántica y sintaxis/teoría).
  
Referencia:
http://www.monografias.com/trabajos51/inteligencia-artificial/inteligencia-artificial.shtml
http://es.engadget.com/2012/08/26/estudio-semaforos-inteligencia-artificial/
http://www.educared.org/wikiEducared/L%C3%B3gica_proposicional.html
http://sp.rian.ru/images/14787/86/147878665.jpg

jueves, 16 de agosto de 2012

Tautología

Tautología:
La tautología en forma general lo podemos definir como hacer un enunciado obvio y que éste siempre diga lo mismo. Un ejemplo a mencionar podría ser: ‘un hombre es un hombre’, ‘así soy porque soy’, entre otros. Viendo ésto en forma lógica o en la programación, ésta se entiende como una fórmula planteada que su resultado o respuesta siempre será verdadera.

Problema planteado:
Ahora como ejercicio se buscó encontrar una tautología, con x cantidad de operaciones y x cantidad de variables.

Respuesta:
En mi resolución del problema hice digamos que un poco de trampa, ya que realicé una simple tabla buscando que sus valores sean verdaderos o falsos (al final de la operación ponemos un negado, para que sea verdadera), una vez teniendo éste la enlazamos con un OR y listo, ya cualquier sub-operación agregada nos dará positiva, hasta para hacerla más llamativa le ponemos operaciones más complejas enlazadas con el OR y listo.

Tabla Simple:


Fórmula Desarrollada:
((p & q)→p) | (-r ⊕ ((-q ↔ r) & -(r → p)))


Árbol:


Referencias:
http://etimologias.dechile.net/?tautologi.a
http://es.wikipedia.org/wiki/Tabla_de_verdad

martes, 14 de agosto de 2012

Introducción de Verificación y Validación del Software

Verificación y validación del software, es el proceso de control que asegura que un determinado software cumple con su especificación y satisface las necesidades del usuario.

Verificación: Se ocupa de controlar si el producto satisface los requerimientos del usuario.
  • Construir el sistema correctamente
  • Descubrir  y corregir errores en el sistema
  • Criterios a verificar
  • Vereficar que la información sea coherente
  • Identifica desviaciones con éstandares y requerimientos
  • Recolecta datos para mejorar el proceso
  • Verifica que el producto cumpla: 
    • Cumplan con los requerimientos
    • Cumplan con los  atributos de calidad
    • Se ajuste a las regulaciones, estándares y procedimientos definidos.

Validación: Controla que el producto cumpla su especificación inicial, la diferencia de este a verificación  es el que éste evalúa al sistema en el trancurso o al final del proceso del desarrollo.
  • Construir el sistema correcto
  • Evaluar la conformidad con la especificación de requisitos
  • Casos de test
  • Pruebas unitarias

Técnicas de control: Se dividen en dos: dinámicas y estáticas.
  • Dinámicas: Éstas también son conocidas como  testing  o prueba, así que son únicamente aplicables cuando se tiene una version ejecutable u operativa.
  • Estáticas: Son las primeras pruebas que se aplican al software, tiene como objetivo mejorar la calidad del software ayudando a arreglar defectos en etapas  tempranas, sin codificar.
    • Se basan en revisiones del código o documentación.
    • La finalidad de éste es detectar la mayor cantidad de defectos posibles 
Tipos de Pruebas:
  • Pruebas de aceptación, son desarrolladas por el cliente
  • Pruebas alfa, son realizadas por el usuario con el desarrollador como observador de un entorno controlado
  • Pruebas beta, son realizadas por el usuario en su entorno de trabajo, generalmente son utilizadas como producto final. 
Niveles de Pruebas:
  •  Pruebas unitarias
  • Pruebas de integración
  • Pruebas de sistema
Pruebas funcionales: es una prueba basada en la ejecución, revisión y retroalimentación de las funcionalidades previamente diseñadas para el software.

Desarrollo guiado por pruebas: El objetivo de éste es lograr un código limpio que funcione, la idea  de éste es que los requisitos sea traducidos a pruebas.
 Ciclo:
  • Elegir un requisito
  • Escribir un prueba
  • Verificar que la prueba falla
  • Escribir la implementación
  • Ejecutar las pruebas automatizadas
  • Eliminación de duplicación
  • Actualización de la lista de requisitos

Fases del desarrollo del software: Expresa como a progresado el desarrollo del software y cuanto puede requerir, cada versión importante en la que se le agregan nuevas características o se corrigen errores.
  • Alpha: Es la primera versión del programa, también es enviada a los testers para verificarla, este generalmente es un producto inestable
  • Beta: Representa generalmente la primera versión del sistema, también en ésta fase también el producto es un poco inestable.
  • Version candidata a definitiva(RC): Comprende un producto final, listo para publicarse como version definitiva  al menos que aparezcan errores que lo impidan. También en ésta fase se le puede asociar como el producto final, pero que aún esta en pruebas.
  • Versión de disponibilidad general(RTM): Es un producto en versión final, normalmente es casi idéntica a la version candidata, a diferencia que en ésta hay cambios de último minuto, ésta versión también es tomada como libre de errores y estable..
 
Análisis estático:
Su función es analizar sintácticamente el texto del progrma y tratar de descubrir posibles condiciones erróneas

Defectos: Es un procedimiento de un determinado producto en el cuál son incorrectos

Fallos: Es la imposibilidad de realizar determinada acción de parte del producto

Importancia:
La importancia del hacer uso de verificación y validación es el ahorro de costs y tiempo, que son vitáles en el desarrollo de un determinado producto.
Mensionando algunos ejemplos de casos donde se puede aplicar o donde se han aplicado son los siguientes:
    • Una determinada empresa, firmo un importante convenio en la cual se le pidio elaborar 850,000 piezas de un mecánismo para un nuevo modelo de un carro. Ya obteniendo el producto final con las 850,000 piezas la empresa se da cuenta que la pieza no coincidían con la especificación dada.
      • Problema: La posible falla de ésto pudo ser que al personal que se le pidio elaborar el producto en el software que lo desarrolla, tomaron diferentes las coordenadas o las medidas no fueron las indicadas.
    • Otro de los problemas comunes podemos encontrarlo en los bugs de los videojuegos, alguno de los casos famosos es el videojuego para gameboy, pokemon donde en un nivel más avanzado aparecía un personaje llamado missingNo, el cuál éste era producto de un error de programación donde al momento de buscar un determinado personaje no era encontrado en el arreglo, devolviendo ésto como un missing number.
    • Prototipos nazis, una de los acontecimientos mas mencionados podría ser la fascinación de los nazis por hacer pruebas con los prototipos finales físicos, algunos ejemplos a mencionar podrían ser los prototipos de aeronaves, como supuestos platillos voladores, en las cuales verificaban la aerodinámica del producto entonces hacían pruebas fisicas con la aeronave, pero al final había un fallo por la estabilidad de éste por diferentes condiciones climáticas, volteando la aeronave o haciendo que se golpeara bruscamente que en ocasiones producía la perdida total o perdida del piloto.

Tips o Datos de interés:
Generalmente los desarolladores usan nombre claves para los nombres de las versiones de un producto, con el fin de no confundir el producto o que se tenga un poco más de incógnito del producto para otros usuarios.

Link:
http://www.slideshare.net/FARIDROJAS/validacion-y-verificacion-presentation-632946
http://clases3gingsof.wetpaint.com/page/Verificaci%C3%B3n+y+Validaci%C3%B3n
http://es.wikipedia.org/wiki/Pruebas_de_validaci%C3%B3n
http://www.sqs.es/es/services/validation.php

martes, 7 de agosto de 2012