Explicación Del Razonamiento Y Su Origen De Pensamiento

La palabra formal proviene de la lógica formal, la ciencia que estudia el razonamiento desde el análisis formal de acuerdo con su validez, y excluye el contenido concreto del razonamiento para considerar sólo la forma estructurada.  

El paradigma de los métodos formales concede técnicas sistemáticas y rigurosas para el desarrollo del software y, debido a la gradual dificultad y a los requisitos de calidad de los productos actuales, es necesario que se encaje en los planes de estudios de Ingeniería de Software. (RACCIS, 2014)

El gran sendero de las herramientas, que generan pruebas con base en los métodos formales, es que la especificación formal describe matemáticamente el comportamiento del sistema.

La poca acogida de métodos formales en la industria del software es solamente un mito. El nacimiento de este rumor se debe a que hasta hace años existían varios casos documentados en la industria. Con la meta de que las empresas consideren la aceptación de tales métodos, es importante echar a ver la existencia de casos de éxito que muestren las ventajas aplicar tales métodos.  

El estímulo fundamental para el trabajo de investigación sobre métodos formales en la ingeniería de software, fue la gradual certeza de que únicamente los enfoques formales en la delimitación, verificación, análisis, implementación, prueba y operación de los sistemas informáticos, podría proporcionar los medios para controlar la dificultad gradual de los sistemas abiertos.  

Esto da a entender que los métodos formales, se están convirtiendo en una herramienta de uso muy común para aquellos involucrados en el ciclo de desarrollo de sistemas de alta calidad, lo que compromete que tales métodos formales tengan que ser estables, cuestión que puede garantizarse únicamente mediante su homogenización.  

Una de las ideas más esparcidas sobre el uso de métodos formales es que no se las aplica en la industria del software. Si bien es cierto que su adopción ha sido lenta, existen casos de importantes compañías que han logrado el éxito al aplicarlos en proyectos reales.

Ventajas y Desventajas del uso de los Métodos Formales

El uso de los métodos formales en la Ingeniería de Software es un tema que se debate desde hace varios años. Hace poco, con la aparición de la Ingeniería de Conocimiento en la Sociedad de la Información, y el empleo de los métodos formales en los procesos industriales, nuevamente surge el debate. 

Ventajas

  • La Especificación. Uno de los problemas más reconocidos en el desarrollo de

software es la dificultad para detallar el comportamiento que se espera del software, problema que se declina con el actual desarrollo basado en componentes, ya que el ingeniero tiene sólo una descripción textual de los requisitos, procedimientos, entradas permitidas y salidas esperadas. Asegurar que este tipo de software sea seguro es un problema, no sólo por su tamaño y complejidad, sino porque también el código fuente no suele estar disponible para los componentes que se adquieren. Una de las forma de ofrecer garantía del producto es entablar, con precisión, el comportamiento esperado del software. 

La especificación formal otorga mayor precisión en el desarrollo de software, y los métodos formales dan las herramientas que pueden incrementar la garantía buscada. Desarrollar una especificación requiere conocimiento detallado y preciso del sistema, lo que ayuda a encontrar errores, y por lo que la mayor ventaja de los métodos formales se da en el desarrollo de la especificación.   

En la especificación de la descripción del sistema se detectan ambigüedades y omisiones, y una especificación formal puede mejorar la comunicación entre desarrolladores y usuarios.

Los métodos formales se desarrollaron para permitir un mejor razonamiento acerca de los sistemas y el software. Luego de diseñar una especificación, se puede analizar, operar y razonar sobre ella, de la misma forma que sobre cualquiera expresión matemática. Una diferencia que resalta entre una especificación formal de software y una expresión matemática de cálculo, es que típicamente es mucho más grande a menudo cientos o miles de líneas.  

  • La Verificación. Para cerciorar la calidad de los sistemas es necesario hacer prueba, y para

asegurar que se desarrollan pruebas rigurosas se requiere una precisa y completa descripción de sus funciones, incluso cuando en la especificación se utilicen métodos formales.

Aunque gran número de las herramientas para realizar pruebas se encuentran disponibles en el mercado, la mayoría automatiza sólo sus aspectos más simples: generan los datos de prueba, ingresan esos datos al sistema y reportan resultados. Concretar la respuesta correcta del sistema, para un determinado conjunto de datos de entrada, es una tarea dificultosa, que la mayoría de herramientas no puede lograr cuando el comportamiento del mismo se especifica en lenguaje natural. Debido a que la respuesta esperada del sistema se puede determinar mediante la lectura de la especificación, los ingenieros esperan que a las pruebas realizada se les agregue este faltante y crítico componente. (Dan & Aichernig, 2002)

Los métodos de verificación formal dependen de especificaciones precisas y, desde un punto de vista beneficioso, que se pueda generar pruebas desde la especificación puede ser uno de los usos más productivos de los métodos formales. Cerca de la mitad del tiempo del equipo de trabajo, en un desarrollo de software tipo comercial, se invierte en esfuerzo para desarrollar pruebas, e incluso con este nivel de esfuerzo sólo se borren los errores más notorias.  

Algunas mediciones conocidas demuestran que las pruebas, generadas con herramientas automatizadas, ofrecen una cobertura tan buena que la alcanzada por las manuales, por lo que los ingenieros pueden elegir entre producir más pruebas en el mismo tiempo, o reducir el número de horas necesarias para hacerlas. 

  • La Validación. Mientras que la verificación se puede desarrollar semiautomáticamente y

las pruebas mecánicamente, la validación es un problema diferente. Una diferencia precisa entre verificación y validación es que la primera responde a que si se está construyendo el producto correctamente, y la segunda a que si se está construyendo el producto correcto. 

En pocas palabras, la verificación es el conjunto de actividades que afirman que el software implementa correctamente una función específica, y la validación es un conjunto de actividades diferentes que aseguran que el software construido corresponde con los requisitos del usuario.

Desde el conjunto de requisitos es posible validar, formal o informalmente, si el sistema los implementa; sin embargo, la validación es necesariamente un proceso informal. A pesar de la necesidad de utilizar este juicio en el proceso de validación, los métodos formales tienen su lugar, especialmente en grandes y complejas aplicaciones, como en modelado y simulación. Una de sus aplicaciones más prometedoras es en el modelado de requisitos, ya que, al diseñarlos formalmente, el teorema provisto en la herramienta de prueba se puede utilizar para explorar sus propiedades, y a menudo detectar los peligros entre ellos. Este método no sustituye al juicio humano, pero puede ayudar a determinar si se especificó el sistema correcto, por lo que es más fácil establecer si las propiedades deseadas se mantienen.  

Podemos resumir de una manera más puntual que las ventajas de los métodos formales son:

  • La comunicación con el usuario mejora ya que se orienta de una descripción clara y no turbia de los requisitos del usuario.
  • Se comprende mucho mejor el sistema.
  • El sistema se detalla de una manera más precisa.
  • El sistema se asegura exactamente que es correcto según las especificaciones.
  • Mayor calidad software respecto al cumplimiento de las declaraciones.
  • Mejora la productividad. 

 

Desventajas

  • El perfeccionamiento de herramientas que apoyen la aplicación de métodos formales es dificultoso y los programas resultantes son incómodos para los clientes.
  • Los investigadores por lo general no están al tanto la realidad industrial.
  • Es poca la colaboración entre la industria y el mundo académico, que en ocasiones se muestra demasiado irrefutable.
  • Se razona que la aplicación de métodos formales encarece los productos y ralentiza su desarrollo.

 

No obstante, es posible que la orientación a través de métodos formales tenga más partidarios entre los desarrolladores del software que deben construir software de mucha seguridad, y entre los desarrolladores que pasan grandes necesidades económicas al aparecer errores de software.  

Bibliografía

  • Amman, P., & Offutt, J. (2008). Introduction to software testing. Obtenido de Cambridge University Press.: https://www.redalyc.org/pdf/1942/194214476008.pdf
  • Anderson, R. J. (1998). Model checking large software specifications. Obtenido de IEEE Transactions on Software Engineering: https://www.redalyc.org/pdf/1942/194214476008.pdf
  • Castillo, J. N. (2 de Noviembre de 2011). Metodos Formalesy Tecnologias Orientadas a Objetos. Obtenido de Dianelt Uniroja: file:///F:/Dialnet-MetodosFormalesYTecnologiasOrientadasAObjetos-4797247.pdf
  • Clarke, E. M., & Wing, J. (1996). Formal Methods: State of the Art and Future Directions. Obtenido de Special ACM 50th-anniversary issue: https://www.redalyc.org/pdf/1942/194214476008.pdf
  • Colegio Universitario de Caracas. (Enero de 2012). Métodos Formales. Obtenido de innovacionpnfi2012: https://innovacionpnfi2012.wordpress.com/metodos-formales-2/
  • Dan, L., & Aichernig, B. K. (2002). Automatic Test Case Generation for RAISE. Obtenido de Report 273, UNU-IIST -United Nations University, International Institute for Software Technology: https://www.redalyc.org/pdf/1942/194214476008.pdf
  • Dasso, A., & Funes, A. (2007). Verification, validation and testing in software engineering. Obtenido de Idea Group Publishing: https://www.redalyc.org/pdf/1942/194214476008.pdf
  • Flynn, S., & Hamlet, D. (2006). On formal specification of software components and systems. Obtenido de Electronic Notes in Theoretical Computer Science: https://www.redalyc.org/pdf/1942/194214476008.pdf
  • Gabbar, H. A. (2006). Modern Formal Methods and Applications. Obtenido de Netherlands: Springer: https://www.redalyc.org/pdf/1942/194214476008.pdf
  • Jortiz. (23 de Mayo de 2011). Modelos de desarrollo, técnicas y documentos de planificación temporal y seguimiento de un proyecto informático. Obtenido de Ingenieria en Software – Tema 3 Modelos Desarrollo: http://tema3isoftware.blogspot.com/
  • Montoya, E. S. (15 de Mayo de 2010). Métodos formales e Ingeniería de Software. Obtenido de Revista Virtual Universidad Católica del Norte: https://www.redalyc.org/pdf/1942/194214476008.pdf
  • NASA Office of Safety and Mission Assurance. (1995). Formal Methods Specication and Verification. Obtenido de Guidebook for Software and Computer Systems: https://www.redalyc.org/pdf/1942/194214476008.pdf
  • RACCIS. (4 de Diciembre de 2014). La importancia de formar en métodos formales en Ingeniería de Software. Obtenido de Revista Antioqueña de las Ciencias Computancionales y la Ingeniería en Software: http://fundacioniai.org/raccis/v4n2/n7a8.pdf
  • Saiedian, H., & Hinchey, M. (1996). Challenges in the successful transfer of formal methods technology into industrial applications. Obtenido de Information and Software Technology: https://www.redalyc.org/pdf/1942/194214476008.pdf
  • Universidad Tecnológica de la Mixteca. (30 de Enero de 2011). Métodos formales aplicados en la Industria del Software. Obtenido de UTM.mx: http://www.utm.mx/edi_anteriores/temas43/1ENSAYO_43_1-R.pdf
17 August 2021
close
Tu email

Haciendo clic en “Enviar”, estás de acuerdo con nuestros Términos de Servicio y  Estatutos de Privacidad. Te enviaremos ocasionalmente emails relacionados con tu cuenta.

close thanks-icon
¡Gracias!

Su muestra de ensayo ha sido enviada.

Ordenar ahora

Utilizamos cookies para brindarte la mejor experiencia posible. Al continuar, asumiremos que estás de acuerdo con nuestra política de cookies.