Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Métodos Formales en Ingeniería de Software: Descripción y Aplicabilidad, Resúmenes de Informática

Una introducción a los métodos formales en Ingeniería de Software, sus beneficios y cómo se utilizan para desarrollar sistemas confiables. Se discuten las tendencias en desarrollo de software y hardware que utilizan métodos formales, y cómo se puede seleccionar eficazmente entre los diferentes lenguajes de especificación formal existentes. Se destaca la importancia de la especificación formal clara y menos ambigua que los nodos informales, y cómo los métodos formales facilitan la automatización del desarrollo de sistemas informáticos.

Qué aprenderás

  • ¿Cómo se utilizan los métodos formales en el desarrollo de software y hardware?
  • ¿Qué son los métodos formales en Ingeniería de Software?
  • ¿Cómo se puede garantizar que las especificaciones formales sean menos ambiguas que los nodos informales?
  • ¿Cómo se puede seleccionar eficazmente entre los diferentes lenguajes de especificación formal existentes?
  • ¿Qué son las ventajas de utilizar métodos formales en el desarrollo de sistemas informáticos?

Tipo: Resúmenes

2014/2015

Subido el 22/10/2021

jose-goitia
jose-goitia 🇨🇷

1 documento

1 / 12

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
MÉTODOS FORMALES
Dra. Tibisay Hernández
Sesión Nro. 4: Ingeniería de Requerimientos.
1.- Métodos formales.
Una de las metas de la Ingenieria del Software es lograr que los desarrolladores
construyan sistemas confiables independientemente de su complejidad. Una forma
de alcanzar esta meta es a través del uso de Métodos Formales (MF): técnicas,
lenguajes y herramientas definidos matemáticamente, para especificar y verificar
tales sistemas. El uso de MF propicia la confiabilidad y la seguridad de un sistema,
al aumentar la comprensión acerca de un sistema revelando inconsistencias,
ambigüedades e incompletitudes, que de otra manera pasan desapercibidas.
Los métodos formales que se utilizan para desarrollar sistemas de computadoras
son técnicas de base matemática para describir las propiedades del sistema.
Estos métodos formales proporcionan marcos de referencia en el seno de los
cuales las personas pueden especificar, desarrollar y verificar los sistemas de
manera sistemática, en lugar de hacerlo ad hoc.
Los métodos formales representan un conjunto de tendencias de desarrollo de
software y hardware en donde la especificación, verificación y diseño de
componentes se realiza mediante notaciones, lenguajes, herramientas y técnicas
basadas en teorías con solida fundamentación matemática. El uso de notaciones y
lenguajes formales permite plantear de manera clara los requerimientos de un
sistema, generando especificaciones que definen el comportamiento en términos
del “que debe hacer” y no del “como lo hace”.
Los métodos formales permiten al ingeniero del software crear una especificación
sin ambigüedades que sea más completa y constante que las que se utilizan en
los métodos convencionales u orientados a objetos. La teoría de conjuntos y las
notaciones lógicas se utilizan para crear una sentencia clara de hechos (o de
requisitos). Esta especificación matemática entonces se puede analizar para
comprobar que sea correcta y constante. Como esta especificación se crea
utilizando notaciones matemáticas inherentemente es menos ambigua que los
nodos informales de presentación
En Ingenieria del Software un método formal es un camino a la construcción y
análisis de modelos matemáticos que permitan una automatización del desarrollo
de sistemas informáticos. Los métodos formales se caracterizan por emplear
técnicas y herramientas matemáticas para lograr una facilitación a la hora de
encarar la construcción o el análisis de un modelo matemático de un sistema.
Los diez mandamientos de los métodos formales son:
pf3
pf4
pf5
pf8
pf9
pfa

Vista previa parcial del texto

¡Descarga Métodos Formales en Ingeniería de Software: Descripción y Aplicabilidad y más Resúmenes en PDF de Informática solo en Docsity!

Sesión Nro. 4: Ingeniería de Requerimientos.

1.- Métodos formales.

Una de las metas de la Ingenieria del Software es lograr que los desarrolladores construyan sistemas confiables independientemente de su complejidad. Una forma de alcanzar esta meta es a través del uso de Métodos Formales (MF): técnicas, lenguajes y herramientas definidos matemáticamente, para especificar y verificar tales sistemas. El uso de MF propicia la confiabilidad y la seguridad de un sistema, al aumentar la comprensión acerca de un sistema revelando inconsistencias, ambigüedades e incompletitudes, que de otra manera pasan desapercibidas.

Los métodos formales que se utilizan para desarrollar sistemas de computadoras son técnicas de base matemática para describir las propiedades del sistema. Estos métodos formales proporcionan marcos de referencia en el seno de los cuales las personas pueden especificar, desarrollar y verificar los sistemas de manera sistemática, en lugar de hacerlo ad hoc.

Los métodos formales representan un conjunto de tendencias de desarrollo de software y hardware en donde la especificación, verificación y diseño de componentes se realiza mediante notaciones, lenguajes, herramientas y técnicas basadas en teorías con solida fundamentación matemática. El uso de notaciones y lenguajes formales permite plantear de manera clara los requerimientos de un sistema, generando especificaciones que definen el comportamiento en términos del “que debe hacer” y no del “como lo hace”.

Los métodos formales permiten al ingeniero del software crear una especificación sin ambigüedades que sea más completa y constante que las que se utilizan en los métodos convencionales u orientados a objetos. La teoría de conjuntos y las notaciones lógicas se utilizan para crear una sentencia clara de hechos (o de requisitos). Esta especificación matemática entonces se puede analizar para comprobar que sea correcta y constante. Como esta especificación se crea utilizando notaciones matemáticas inherentemente es menos ambigua que los nodos informales de presentación

En Ingenieria del Software un método formal es un camino a la construcción y análisis de modelos matemáticos que permitan una automatización del desarrollo de sistemas informáticos. Los métodos formales se caracterizan por emplear técnicas y herramientas matemáticas para lograr una facilitación a la hora de encarar la construcción o el análisis de un modelo matemático de un sistema.

Los diez mandamientos de los métodos formales son:

La decisión de hacer uso de los métodos formales en el mundo real no debe de adoptarse a la ligera. Bowen y Hinchley han acuñado los diez mandamientos de los métodos formales, como guía para aquellos que estén a punto de embarcarse en este importante enfoque de la Ingeniería del Software.

  1. Seleccionarás la notación adecuada. Con objeto de seleccionar eficientemente dentro de la amplia gama de lenguajes de especificación formal existente, el ingeniero del software deberá considerar el vocabulario del lenguaje, el tipo de aplicación que haya que especificar y el grado de utilización del lenguaje.
  2. Formalizarás, pero no de más. En general, resulta necesario aplicar los métodos formales a todos los aspectos de los sistemas de cierta envergadura. Aquellos componentes que sean críticos para la seguridad serán nuestras primeras opciones, e irán seguidos por aquellos componentes cuyo fallo no se pueda admitir (por razones de negocios).
  3. Estimarás los costos. Los métodos formales tienen unos costos de arranque considerables. El entrenamiento del personal, la adquisición de herramientas de apoyo y la utilización de asesores bajo contrato dan lugar a unos costos elevados en la primera ocasión. Estos costos deben tenerse en cuenta cuando se esté considerando el beneficio obtenido frente a esa inversión asociada a los métodos formales.
  4. Poseerás un experto en métodos formales a tu disposición. El entrenamiento de expertos y la asesoría continua son esenciales para el éxito cuando se utilizan los métodos formales por primera vez.
  5. No abandonarás tus métodos formales de desarrollo. Es posible, y en muchos casos resulta deseable, integrar los métodos formales con los métodos convencionales y/o con métodos orientados a objetos. Cada uno de estos métodos posee sus ventajas y sus inconvenientes. Una combinación de ambos, aplicada de forma adecuada, puede producir excelentes resultados.
  6. Documentarás suficientemente. Los métodos formales proporcionan un método conciso, sin ambigüedades y consistente para documentar los requisitos del sistema. Sin embargo, se recomienda que se adjunte un comentario en lenguaje natural a la especificación formal, para que sirva como mecanismo para reforzar la comprensión del sistema por parte de los lectores.
  7. No comprometerás los estándares de calidad. Los métodos formales no tienen nada de mágico, y por esta razón, las demás actividades deben de seguir aplicándose cuando se desarrollen sistemas.
  8. No serás dogmático. El ingeniero de software debe reconocer que los métodos formales no son una garantía de corrección. Es posible (o como
  1. Los métodos formales son incomprensibles para los usuarios. Una especificación formal está llena de símbolos matemáticos que resultan incomprensibles para cualquiera que no esté familiarizado con la notación. De ahí que se suponga que son inútiles para clientes no matemáticos.

Los métodos formales no se usan en grandes proyectos reales. Los métodos formales se asocian comúnmente con departamentos académicos y organizaciones de investigación. Se piensa que solo estas organizaciones tienen la capacidad necesaria para usar métodos formales y que estos solo son apropiados para las aplicaciones idealizadas que estos grupos desarrollan.

- Especificaciones Algebraicas.

TIPO DE DATOS: Es un conjunto de estados o valores permitidos, junto con las operaciones que trabajan sobre tales estados, cuando pertenecen a ese tipo concreto. Esto es así porque un mismo estado puede pertenecer a tipos diferentes; p.ej., el nº 4, puede ser un entero, un real, un complejo, un racional o un natural. El usuario puede construir sus propios tipos de datos en un lenguaje determinado, mediante las construcciones sintácticas que se le den para ello. Así, las estructuras de datos se crean usando constructores predefinidos, (de especial utilidad son los registros y matrices), junto con los tipos que suministra el lenguaje: REAL, INTEGER, CARDINAL, BOOLEAN, etc. Los tipos de datos definidos por el usuario también se pueden usar para crear otras estructuras de datos más complejas.

Ej.: TYPE Persona = RECORD Nombre : ARRAY [0..23] OF CHAR; Apellidos : ARRAY [0..29] OF CHAR; DNI : ARRAY [0..9] OF CHAR; END; VAR Censo : ARRAY [1..1000] OF Persona;

La variable Censo es una estructura más compleja formada sobre otra (Persona), definida por el usuario.

Un TIPO ABSTRACTO DE DATOS permite la construcción de casi cualquier tipo de datos, atendiendo sólo a criterios de comportamiento, y sin relacionarlo para nada con la representación subyacente que nos permita su puesta en ejecución según las funcionalidades particulares que un lenguaje de programación dado nos pueda suministrar. Su objetivo es hacer referencia a una clase de objetos (conjunto de estados) definidos por una especificación independiente de la representación. La implementación del tipo se oculta al usuario del programa.

La diferencia entre Tipo de Datos y T.A.D. es que el TAD se centra sólo en el comportamiento, no en la implementación. Es algo así como una caja negra. Dice el qué y no el cómo, aunque por supuesto, el qué tiene que ser viable. Así, se pueden utilizar diferentes cómos, dando al programador la potestad para seleccionar el que más le convenga, pero sin alterar en ningún momento el comportamiento del TAD, ni, por supuesto, su interfaz con el exterior, que será siempre la misma, (ya que formalmente se trata del mismo tipo de datos).

Así pues, la separación de la especificación de la implementación de un TAD permitiría la existencia de varias implementaciones equivalentes, dándole al programador la posibilidad de cambiar la implementación sin que esto tenga ningún efecto en el resto del sistema. Juegan un papel muy importante en el desarrollo de software seguro, eficiente y flexible, ya que cuando usamos un TAD definido por otro programador, podemos concentrarnos en las propiedades deseadas de los datos, y en la funcionalidades que nos suministran.

Por cuestiones de Correctitud y fiabilidad, es muy importante la correción formal de un TAD; también hay que prestar especial atención a la definición formal en el caso de precondiciones anómalas por cuestiones de Robustez. Nosotros vamos a utilizar una notación formal para especificar el comportamiento de los TADes. La primera ventaja que se consigue usando TADes en el diseño de programas es que conllevan el conseguir programas estructurados y modulares.

Este tipo de modularidad asegura que las tareas lógicas y los datos se agrupan para formar un módulo independiente cuya especificación funcional es visible a otros programas que lo usan. Estas aplicaciones no necesitan información detallada de cómo están implementadas las tareas y los datos. Esto hace que podamos implementar estas operaciones y tipos de datos de diferentes formas, siempre que se ajusten a las especificaciones.

Esta separación de especificaciones e implementación asegura que muchas decisiones de diseño, como eficiencia, consenso entre velocidad y ocupación de memoria, etc., puedan tomarse en una etapa posterior, cuando se ha probado que las propiedades lógicas de los tipos de datos y sus operaciones satisfacen la aplicación. Para todo ello es muy útil la compilación separada, que nos permite verificar la corrección de los interfaces definidos, antes de proceder a la implementación propiamente dicha de los TADes.

En definitiva, con el concepto de TAD conseguimos crear una especificación formal mediante la cual el implementador no tenga duda alguna sobre las características del producto software que se le está pidiendo que desarrolle. La siguiente figura ilustra a grandes rasgos este proceso

Léxico Extendido del Lenguaje (LEL)

# Nombre Símbolo Tipo

1 Analista^ Sujeto

2 Cliente|Usuario Sujeto

3 Documentación para el Usuario Objeto

4 Entender el Problema Verbo

5 Entorno de Implementación | Recurso de Implementación Objeto

6 Especialista en Computación Sujeto

7 Especificación Operacional Objeto

8 Especificación Transformada^ Objeto

9 Estructura de Implementación Objeto

10 Fase de Especificación^ Verbo

11 Fase de Realización Verbo

12 Fase de Transformación Verbo

13 Intérprete Objeto

14 Lenguaje de Especificación Operacional Objeto

15 Lenguaje de Especificación Transformada Objeto

16 Lenguaje de Implementación Objeto

17 Mantenimiento | Mantener Verbo

18 Programador Sujeto

19 Sintaxis Funcional^ Objeto

20 Sistema | Sistema Solución Objeto

21 Validar Verbo

Noción e Impacto

1 Analista Sujeto

Noción  Es el encargado de analizar el sistema desde el punto de vista funcional

Impacto

 Genera la especificación operacional.  Entiende el problema  Especifica

2 Cliente | Usuario Sujeto Noción  Es la persona que solicita el desarrollo de un sistema

Impacto

 Plantea un problema a resolver.  Ayuda a entender el problema.  Evalúa los conceptos detrás de la solución propuesta.  Se comunica con el analista.  Puede solicitar mantenimiento  Valida el sistema junto con los especialistas en computación

3 Documentación de Usuario Objeto Noción  Es un documento que resume las funcionalidades del sistema solución en forma de imágenes y/o palabras

Impacto  Es creado cuando se valida la especificación operacional.  Es escrito por los especialistas en computación.  Es leído por el cliente.

4 Entender el Problema Verbo

Noción

 Consiste en comprender la necesidad del cliente.  Realizado por los especialistas en computación junto al cliente

Impacto

 Se definen los requisitos del sistema.  Se procede a especificar

5 Entorno de Implementación | Recurso de Implementación Objeto

Noción

 Es un conjunto de elementos físicos y estrategias de alocación con el que cuenta el sistema

Impacto^ ^ Son utilizados por el^ sistema^ para funcionar.

implementación.

12 Fase de Transformación Verbo

Noción

 Consiste en transformar la especificación operacional a estructuras de implementación.  Se obtiene una especificación transformada.

Impacto

 Se cambian los mecanismos comprensibles y modificables a otros conservando el comportamiento externo.  Se incorporan aspectos relativos a la performance.  Si fuera necesario, se introducen representaciones explícitas de entorno de implementación  Se procede con la fase de realización

13 Intérprete Objeto Noción  Es un software externo que puede interpretar la especificación operacional.

Impacto  Se utilizado para crear la especificación transformada a partir de la especificación operacional.

14 Lenguaje de Especificación Operacional Objeto Noción  Es un lenguaje con sintaxis funcional

Impacto^ ^ Se utiliza para crear la^ especificación operacional

15 Lenguaje de Especificación Transformada Objeto

Noción

 Es un lenguaje similar al lenguaje de especificación operacional  Es un lenguaje que posee estructuras de implementación

Impacto^ ^ Es utilizado para crear la^ especificación transformada

16 Lenguaje de Implementación Objeto Noción^ ^ Es el lenguaje de programación que se utiliza en el^ entorno de^ implementación

Impacto  Se utiliza durante la fase de realización para crear el sistema

17 Mantenimiento | Mantener Verbo

Noción

 Consiste en modificar alguna característica o funcionalidad del sistema solución.  Se realiza cuando el cliente solicita un cambio.

Impacto

 Se cambian los requerimientos.  Se vuelve a especificar, transformar y realizar

18 Programador Sujeto

Noción

 Es el encargado de escribir código adicional en el lenguaje de implementación elegido.

Impacto

 Puede programar características de bajo nivel.  Puede adaptar algunos componentes de la especificación transformada a un determinado hardware

18 Sintaxis Funcional Objeto

Noción

 Es una estructura independiente del entorno implementación.  Conforma el Lenguaje de Especificación Operacional.

Impacto

 El problema a resolver determina su utilización.  Puede ser implementada sobre una gran variedad de entornos implementación.  Puede ser modificada.

20 Sistema | Sistema Solución Objeto

Noción

 Es el producto que resuelve un problema planteado por el cliente  Es la especificación transformada convertida a un lenguaje de implementación

Impacto

 Es utilizado por el cliente.  Es creado a través de transformaciones sucesivas partiendo de la especificación operacional.  Puede ser mantenido.

21 Validar Verbo

Noción

 Es llevado a cabo por especialistas en computación junto con el cliente.  Consiste en determinar si el sistema propuesto es adecuado.

Impacto

 Se crea la documentación para el usuario.  Se crea un prototipo del sistema.  Se presentan las funcionalidades o el prototipo al cliente.  El cliente determina si debe modificarse la especificación operacional.

Especificaciones Basadas en Modelos

Consisten en especificar un sistema en términos de su estado y las transformaciones de ese estado:  El estado del sistema se define por un conjunto de variables  Las transformaciones del estado se definen mediante un conjunto de operaciones.  El estado del sistema es modelado usando entidades matemáticas o Ej., conjuntos, funciones, relaciones, secuencias, etc.