






Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
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
Tipo: Resúmenes
1 / 12
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
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.
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.