El análisis y diseño de sistemas requiere que los sistemas que están en desarrollo y los ya desarrollados se comporten de manera confiable. Entendamos como confiabilidad a la ``habilidad del sistema para complir su tarea predefinida (a pesar de las fallas de hardware y software)''.
Existen factores que deterioran la confiabilidad de un sistema como son: fallas, errores, y descuidos (a nivel hardware, sistema operativo, e interacción con otros sistemas, entre otros). La ingeniería de software cuenta con varios métodos para procurar una buena confiabilidad, como son las tecnologías de desarrollo de software, métodos de validación asistidos por computadora, y manejo de excepciones, entre otras.
La validación es el mecanismo para remover fallas en la fase de desarrollo y así asegurarnos de que el grado de confiabilidad del sistema es aceptable. La validación se puede realizar por modelación o por ejecución.
Validación por modelación:
Las técnicas de validación por modelación se pueden realizar por una
inspección del contexto, por una verificación o por una evaluación.
Validacion por ejecución
En la validación por ejecución se realizan pruebas cualitativas y
cuantitativas para obtener el grado de confiabilidad que se desea. El
resultado de dichas pruebas se obtiene en el ambiente real de ejecución y
se basan en el tiempo. Se obtienen propiedades de funcionalidad, robustez,
integridad y desempeño, principalmente.
Lamentablemente, los métodos de validación no son completos, es decir, un método no puede garantizar todas las medidas de confiabilidad, sin embargo, se complementan unos a otros.
Una herramienta que se utiliza para la validación son las redes de Petri, debido a que son una herramienta matemática que tiene una representación adecuada para la especificación y programación de diferentes lenguajes, los sistemas que simula están en términos de causa-evento, se aplica en distintos métodos de validación y se pueden utilizar en diferentes fases en el ciclo de desarrollo de los sistemas de software. Además de proporcionar un gran poder de modelación para sistemas que tengan aspectos de concurrencia y paralelismo, y se aplica en diferentes niveles de abstracción. Las redes de Petri tienen ventaja sobre otros métodos de validación, como el uso de lenguajes UML, diagramas E-R, o autómatas finitos, en que, además de permitir una visualización del comportamiento dinámico y estático del sistema, se utiliza, como ya se mencionó, en distintas fases del ciclo de software, lo cual lo hace una herramienta más completa para validación que las demás.
Existe una gran variedad de tipos de redes de Petri, debido a que dependiendo del problema al que se apliquen, es necesario hacer extensiones o restricciones a las redes de Petri clásicas. Así, tenemos de redes de Petri coloreadas, jerárquicas, orientadas a objetos y estocásticas, entre otras. El punto débil de las redes de Petri es su tamaño, debido a que cuando se utilizan para modelas sistemas muy grandes tienden a crecer demasiado, para solucionar este problema, se han ideado diferentes mecanismo de análisis y manejo de estas redes. El mecanismo que más se utiliza es el agrupamiento de partes de una red de Petri en pequeñas subredes.
Se han desarrollado varios sistemas comerciales y otros gratuitos, en centros de investigación, que manejan redes de Petri. Sin embargo, para el usuario se presentan como aplicaciones que manejan un sólo tipo de redes de Petri. Por otro lado estas herramientas no permiten al usuario hacer extensiones o restricciones a la red de Petri, ya sea porque el sistema en si no lo permite, o porque no tiene acceso al código fuente.
Los sistemas que permiten hacer un manejo de redes de Petri más completos son los comerciales, sin embargo, el costo de su licencia es elevado. Y los sistemas libres para redes de Petri sólo manejan un tipo de red de Petri, como se describe más adelante.
En este trabajo de tesis, se propone la elaboración de PetrA: herramienta para la modelación sy simulación de redes de Petri. Con la ventaja de poder tener un sistema base para realizar extensiones y restricciones, tal que se puedan trabajar con distintas redes de Petri.