Análisis e Ingeniería de Requisitos · 2013-01-17 · Análisis e Ingeniería de Requisitos –...

43
Análisis e Ingeniería de Requisitos Tema 1 www.kybele.urjc.es Análisis e Ingeniería de Requisitos Tema 1: Introducción a la Ingeniería del Software Curso 2012-2013

Transcript of Análisis e Ingeniería de Requisitos · 2013-01-17 · Análisis e Ingeniería de Requisitos –...

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Análisis e Ingeniería de Requisitos Tema 1: Introducción a la Ingeniería del Software

Curso 2012-2013

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Bibliografía Básica

Ingeniería del Software

Ian Sommerville, Ed. Prentice Hall

Ingeniería del Software: Un enfoque práctico Roger S. Pressman, Ed. MacGraw-Hill

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Ingeniería

Conjunto de procedimientos y técnicas que permiten el uso apropiado de todas las herramientas, métodos y teorías para solucionar los problemas que aparecen.

RAE: Estudio y aplicación, por especialistas, de las diversas ramas de la tecnología.

Ejemplos: Ingeniería química, aeronáutica, de telecomunicaciones, informática, del software, etc.

AIR - 3

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Software

Suma total de los programas de ordenador, procedimientos, reglas, la documentación asociada y los datos que pertenecen a un sistema de cómputo (Ian Sommerville)

El software se forma con 1) Las instrucciones (programas de ordenador) que al ejecutarse proporcionan las características, funciones y el grado de desempeño deseado; 2) las estructuras de datos que permiten que los programas manipulen información de manera adecuada; y 3) los documentos que describen la operación y uso de los programas. (Roger S. Pressman)

AIR - 4

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Software

Tipos de software:

Software de sistema

Software de programación

Software de aplicación

Otros

AIR - 5

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Software de sistema

Software que permite desvincular al usuario y al programador de los detalles de la computadora que se use, aislándolo especialmente del procesamiento referido a las características internas de: memoria, discos, puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc.

Ejemplos: sistemas operativos, herramientas de diagnóstico, controladores de dispositivo, etc.

AIR - 6

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Software de programación

Conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica.

AIR - 7

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Software de aplicación

Es aquel que permite a los usuarios llevar a cabo una o varias tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios.

Son programas independientes que resuelven una capacidad de negocio específica.

Ejemplos: bases de datos, telecomunicaciones (por ejemplo Internet y toda su estructura lógica), videojuegos, software educativo, software médico, aplicaciones de gestión, etc.

AIR - 8

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Tipos de Software: Otros

Software científico y de ingeniería

Software de líneas de productos

Aplicaciones basadas en Web

AIR - 9

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Producto Software

Producto diseñado para usuario tipo o un cliente determinado.

Tipos de productos software:

o Genéricos: Productos de uso genérico. Desarrollados por una organización y que se venden a un mercado abierto a cualquier cliente que desea comprarlo (sistemas operativos, procesadores de texto, bases de datos, herramientas de gestión de proyectos, etc).

o A medida: Sistemas requeridos por un cliente particular (sistemas desarrollados para llevar a cabo procesos de negocio, sistemas de control de tráfico aéreo, web de la URJC, portal de servicios, etc).

AIR - 10

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Diferencias entre el concepto de usuario y cliente

o Usuario: persona o personas que van a manipular de manera directa un producto software.

o Cliente: Persona, entidad u organización que encarga el desarrollo de un producto software y que invierte en dicho producto.

Por ejemplo, en el caso de una aplicación desarrollada a medida el cliente o

comprador puede ser una compañía, pero el usuario final puede ser solamente un empleado o grupo de empleados dentro de la misma.

AIR - 11

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Atributos de un buen software

o Mantenibilidad o Debe poder evolucionar para adecuarse a los cambios del cliente o del

negocio o Generadores de código, desarrollo de aplicaciones basadas en modelos (Model

Driven Development)

o Confiabilidad o Se ha desarrollado atendiendo a requisitos de calidad como la fiabilidad,

seguridad, tolerancia a fallos, etc.

o Eficiencia o No malgastar recursos, como memoria y buenos tiempos de respuesta.

o Usabilidad o Fácil de usar, sin esfuerzo adicional por parte del usuario. Buena interfaz de

usuario y documentación adecuada.

AIR - 12

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

¿Qué es Ingeniería del Software?

“La Ingeniería del Software es la disciplina de ingeniería que comprende todos los aspectos relacionados con la producción de software desde sus etapas más tempranas de la especificación del sistema hasta el mantenimiento del sistema tras su puesta en marcha.”

AIR - 13

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

“Disciplina de ingeniería” Aplican teorías, métodos y herramientas donde sean convenientes, pero lo utilizan de manera selectiva.

Los ingenieros hacen que las cosas funcionen.

Uso apropiado de todas las herramientas, métodos y teorías para solucionar los problemas que aparecen.

Trabajo con restricciones económicas y de organización.

“Todos los aspectos de la producción de software” o Procesos técnicos de desarrollo, dirección y gestión de proyectos,

desarrollo de herramientas métodos y teorías de apoyo a la producción de apoyo.

¿Qué es Ingeniería del Software?

AIR - 14

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

o Ciencia de la computación: Teorías y métodos subyacentes a las computadoras y los sistemas software.

o Ingeniería del software: Se ocupa de problemas prácticos de la producción de software. Enfoque sistémico y organizado para la producción de software de calidad.

Diferencia entre ingeniería del software y ciencia de la computación

AIR - 15

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

o Los sistemas de información, hoy en día, incorporan software. Siendo un sistema algo más complejo que el software. Un sistema es un avión, una planta química.

o El software es el soporte de los sistemas informatizados.

Diferencia entre ingeniería del software e ingeniería de sistemas de información

AIR - 16

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Diferencia entre ingeniería del software e ingeniería de sistemas de información

AIR - 17

Negocio/Empresa

Sistema de información (SI)

Sistema de información automatizado

Software

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

¿Qué es el proceso software?

o Proceso software es el conjunto de actividades y resultados asociados para producir un producto software

Ejemplo de proceso: Procedimiento para matricularse en GIS, procedimiento para solicitar una hipoteca bancaria, etc.

o Un proceso software consta de 4 actividades comunes: o Especificación software

o Desarrollo software

o Validación software

o Evolución software

AIR - 18

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

o Los clientes e ingenieros definen el software a producir y las restricciones para su operación.

o Ejemplo: Especificar cómo se hace una sangría

Especificación Software

AIR - 19

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Desarrollo software

Relacionado con el diseño y programación del software.

o Ejemplo: Realizar la sangría

AIR - 20

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Validación del software

o El software se valida (comprueba) para asegurar que es lo que el cliente quiere y espera.

o Ejemplo: Probar la sangría.

o Primero vosotros mismos.

o Después, dádsela a probar a quien os la encargó.

AIR - 21

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Evolución del software

o El software se modifica para adaptarlo a los cambios solicitados por el cliente y/o a los requisitos del mercado.

o Ejemplo: En la siguiente sangría, hacer una parte de sangría

con edulcorantes para que la puedan tomar los diabéticos.

AIR - 22

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

¿Qué es un modelo de proceso software?

o Modelo de proceso software es una descripción simplificada de un proceso software (actividades, productos, roles,...)

o Modelos de proceso software

o Modelo en cascada

o Modelo incremental

o Modelo en espiral

AIR - 23

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Modelo en cascada

Definición de requisitos

Diseño

Codificación y pr. unitarias

Integración y pruebas

Operación y mantenimiento

AIR - 24

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Modelo en cascada

Características: Cada fase empieza cuando se ha terminado la fase anterior.

Para pasar de una fase a otra es necesario conseguir todos los objetivos de la etapa previa.

Ayuda a prevenir que se sobrepasen las fechas de entrega y los costes esperados.

Al final de cada fase el personal técnico y los usuarios tienen la oportunidad de revisar el progreso del proyecto.

AIR - 25

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Modelo en cascada

Críticas No refleja realmente el proceso de desarrollo del software.

Se tarda mucho tiempo en pasar por todo el ciclo.

Perpetua el fracaso de la industria del software en su comunicación con el usuario final.

El mantenimiento se realiza en el código fuente.

Las revisiones de proyectos de gran complejidad son muy difíciles.

AIR - 26

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Modelo incremental

Definir requisitos

Asignar requisitos

a incrementos

Diseñar la arquitectura del sistema

Desarrollar incremento

Validar incremento

Integrar incremento

Validar sistema

Sistema incompleto

Sistema final

AIR - 27

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Modelo incremental

AIR - 28

Análisis

Requisitos

Sistema Análisis

Requisitos

Software

Diseño

Preliminar Diseño

Detallado

Codificación y

Pruebas

Explotación y

Mantenimiento

Incremento 1

Diseño

Detallado

Codificación y

Pruebas

Explotación y

Mantenimiento

Incremento 2

Incremento n

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Modelo incremental

Características: o No lineal.

o El sistema software se crea añadiendo componentes funcionales al sistema (incrementos).

o El sistema software ya no se ve como una única entidad monolítica, sino como una integración de resultados sucesivos.

o Se evitan proyectos largos y se entrega “algo de valor” a los usuarios con cierta frecuencia.

o Se ajusta a entornos de alta incertidumbre.

AIR - 29

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Modelo incremental

Críticas: o Persiste el problema de determinar si los requisitos propuestos

son válidos (los errores en los requisitos se detectan tarde y su corrección resulta tan costosa como en el modelo en cascada).

o Difícil de evaluar el coste total.

o Difícil de aplicar a sistemas transaccionales que tienden a ser integrados y operan como un todo.

AIR - 30

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Modelo en espiral

AIR - 31

Plan de Requisitos

Plan del Ciclo de Vida

Plan de

Desarrollo

Plan de

Integración

y Pruebas

Planificar las

fases siguientes

Determinar

objetivos,

alternativas,

restricciones

Evaluar alternativas,

identificar y resolver

los riesgos

Análisis

de Riesgos

Análisis

Análisis

Análisis de

de Riesgos

de Riesgos

Riesgos Prototipo 1

Prototipo 2 Prototipo 3

Prototipo

Operativo

Concepto de

Operación Requisitos

Sw

Validación de

Requisitos

Diseño

Producto

Sw

V & V del

diseño

Simulaciones, modelos, benchmarks

Diseño

detallado

Código

Pruebas

unitarias

Integración

y prueba Prueba de

aceptación Imple-

menta-

ción

Desarrolar, Verificar el

producto del siguiente nivel

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Modelo en espiral

Características: o División del proyecto en ciclos o División en actividades estructurales

o Objetivos o Análisis de riesgos o Desarrollo y validación o Planificación

o Cada ciclo se completa con una revisión o Enfoque realista del desarrollo o Construcción de prototipos o Reduce los riesgos o Pero: Precisa expertos en riesgos

AIR - 32

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Modelo en espiral

Principales diferencias respecto a otros métodos:

Reconocimiento explícito de las alternativas Identificación de riesgos asociados a las alternativas División del proyecto en ciclos. Se adapta a cualquier tipo de actividad.

AIR - 33

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

CASE (Computer Aided/Assisted Software/System Engineering)

Conjunto de herramientas y metodologías que prestan soporte a un enfoque de ingeniería en el desarrollo de software en alguna o en todas las fases de este

proceso.

Objetivos de las herramientas CASE: Permitir la aplicación práctica de metodologías estructuradas, lo que resulta

muy difícil sin emplear herramientas Facilitar la realización de prototipos y el desarrollo conjunto de aplicaciones Simplificar el mantenimiento de los programas Mejorar y estandarizar la documentación Aumentar la portabilidad de las aplicaciones Facilitar la reutilización de componentes software Permitir un desarrollo y un refinamiento «visual» de las aplicaciones, mediante

la utilización de gráficos

¿Qué es CASE?

AIR - 34

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Elementos de una herramienta CASE:

¿Qué es CASE?

AIR - 35

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

¿Por qué es complejo el software?

o Brooks: “La complejidad del software es una propiedad esencial y no accidental”

o Tres motivos: La complejidad del dominio del problema.

La dificultad de controlar el proceso de desarrollo.

Los problemas para caracterizar sistemas discretos.

AIR - 36

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

La complejidad del dominio del problema (I)

o Los problemas del mundo real son complejos (miles de requisitos compitiendo y quizás contradictorios).

o Ahora, añade requerimientos no funcionales: eficiencia, coste, fiabilidad...

o Diferente perspectiva del mismo problema entre los usuarios y los desarrolladores.

AIR - 37

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

La complejidad del dominio del problema (II)

o Los requisitos cambian durante el desarrollo. o Los grandes sistemas cambian a lo largo del tiempo:

o Mantenimiento: proceso de mejora y optimización del software después de

su entrega al usuario final, así como también la corrección y prevención de los defectos.

o Evolución: todas las actividades de generación de software que se orientan

a generar una nueva versión de un software a partir de una versión anterior operativa. Incluye cambios en los requisitos.

o Conservación: uso continuo de medios extraordinarios para mantener operativo un sistema viejo.

AIR - 38

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

La complejidad del dominio del problema (II)

o Ejemplo: ¿Podéis resumir qué pasos hay que dar para matricularos en la

UNIVERSIDAD?

o Ejemplo: ¿Podéis resumir qué pasos hay que dar para solicitar una hipoteca bancaria?

AIR - 39

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

La dificultad de controlar el proceso de desarrollo

o Miles de líneas de código. Atajar con reutilización (de código, diseños reutilizables-patrones)

o Abordar complejidad por “divide y vencerás” obtener módulos.

o Equipo de desarrolladores

AIR - 40

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Los problemas para caracterizar sistemas discretos (I)

o El software trabaja con sistemas con estados discretos: o Conjunto de variables.

o Flujos de control.

o Eventos externos.

o Los valores de cada uno definen cada estado del sistema.

o El mundo real es analógico se puede describir por funciones continuas.

AIR - 41

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Los problemas para caracterizar sistemas discretos (II)

o En sistemas discretos la transición entre estados no puede modelarse con funciones continuas

o Cada evento externo puede cambiar el estado del sistema.

o Necesidad de pruebas complejo, costoso y en ocasiones imposible que sean exhaustivas

AIR - 42

Análisis e Ingeniería de Requisitos – Tema 1 www.kybele.urjc.es

Ejercicio

Un reloj digital tiene una pantalla y dos botones para accionarlo, el botón A y el botón B. El reloj tiene dos modos de operación, visualizar la hora y establecerla. En el modo de visualización aparecen las horas y los minutos separados por dos puntos (:) intermitentes. El modo de establecer la hora tiene dos submodos: poner las horas y poner los minutos. El botón A se utiliza para seleccionar el modo de operación. Cada vez que se aprieta, el modo avanza en secuencia: visualizar la hora, poner hora, poner minutos, visualizar la hora, etc. Dentro de los submodos, el botón B se utiliza para avanzar una hora o un minuto cada vez que se aprieta. Prepare un diagrama de estados del reloj.

AIR - 43