3 - introducción a la ingeniería de software [modo de compatibilidad]

32
Introducción a la Ingeniería de Software

Upload: sebastian-auladell

Post on 02-Jul-2015

86 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

Introducción a la Ingeniería de Software

Page 2: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

Características y evolución del software

• Antecedentes de TI

• Primeras décadas:

• Orientación al desarrollo el hardware, la reducción de costos de procesamiento y el almacenamiento

• Década de los ochenta:

• Orientación al desarrollo de la microelectrónica, una mayor potencia de cálculo y la reducción de costos

Página 2 / 31

mayor potencia de cálculo y la reducción de costos

• Objetivo actual: mejorar la calidad de las soluciones software.

Page 3: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

características y evolución del software

• A que llamamos software?

• Programas

• Archivos de configuración

• Documentación de la estructura del sistema

• Manuales de instalación y uso

• Sitios web con información y actualizaciones

Página 3 / 31

• Sitios web con información y actualizaciones

Page 4: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

características y evolución del software

• Que tipos de software conocemos?

• Productos genéricos

• Sistemas producidos por una organización y que se venden en el mercado comercial

• Sistemas de gestión de bases de datos, procesadores de texto, paquetes gráficos, etc.

• Generalmente la organización controla la especificación (software libre?)

Página 4 / 31

• Generalmente la organización controla la especificación (software libre?)

• Productos personalizados

• Generalmente desarrollados específicamente para un cliente

• Aplicaciones de negocio (muchos bancos por ejemplo), sistemas de control de tráfico aéreo, control de procesos de fabricación,...

• El cliente controla la especificación de la aplicación

Page 5: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

características y evolución del software

• El software desde una perspectiva industrial

• Valor del software: valor generado por el software para el cliente a principal su costo

Página 5 / 31

Page 6: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

características y evolución del software

• El software desde una perspectiva industrial

• Algunas preguntas sobre el desarrollo del software:

• ¿Por qué se tarda tanto? (y casi siempre más de lo previsto)

• ¿Por qué la productividad es tan baja?

• ¿Por qué cuesta tanto?

• ¿Por qué siempre quedan errores sin localizar?

Página 6 / 31

• ¿Por qué siempre quedan errores sin localizar?

Page 7: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

naturaleza y problemas del desarrollo de software

• El software como elemento lógico.

• Se desarrolla, no se fabrica:

• Depende fuertemente de la calidad del diseño.

• El elemento de costo más importantes es la “ingeniería”

• Requieren de una gestión específica de proyectos

• Se “deteriora” cuando se lo mantiene

Página 7 / 31

• En muchos casos se desarrollo a medida y hay ausencia de componentes

Page 8: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

naturaleza y problemas del desarrollo de software

• La “crisis” del software: problemas que aparecen en el desarrollo del software al desarrollar, mantener y atender la demanda de nuevas aplicaciones.

Página 8 / 31

Insatisfacción del cliente

Planificación y estimacionesimprecisas

Calidad

Sin tiempo para recoger

datos históricos

Baja productividad

Dificultad de mantener

el software existente

Page 9: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

naturaleza y problemas del desarrollo de software

• Causas de la crisis del software

• Naturaleza lógica del software

• Mala gestión de los proyectos ( ausencia de datos, deficiente comunicación, ...)

• Ausencia de entrenamiento formal en nuevas técnicas (programadores vs. ingenieros de software)

Página 9 / 31

• Resistencia al cambio

Page 10: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

naturaleza y problemas del desarrollo de software

• Mitos del software:

MITOS DE GESTIÓN

- Uso de estándares

- Uso de herramientas

- Mala planificación: aumento

de programadores

Página 10 / 31

MITOS DEL CLIENTE

- Requisitos establecidos como

una declaración general de

objetivos

- Flexibilidad del software ante

los cambios

MITOS DE LOS DESARROLLADORES

- Programa funcionando = fin del trabajo

- Calidad = el programa se ejecuta

sin errores

- Entrega al cliente: programa

funcionando

Page 11: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

la ingeniería del software

• Definiciones

• Implica el establecimiento y utilización de principios de ingeniería “robustos, orientados a obtener software económico, fiable, eficiente y que satisfaga las necesidades del usuario”

• Es la disciplina que comprende “todos los aspectos de la producción de software, desde las etapas iniciales

Página 11 / 31

la producción de software, desde las etapas iniciales hasta el mantenimiento”:

• “disciplina de ingeniería”: aplicación de teorías, métodos y herramientas para solucionar problemas teniendo en cuenta restricciones financieras y organizativas

• “todos los aspectos de producción”: comprende los procesos técnicos de desarrollo y actividades como la administración de proyectos, desarrollo de herramientas, métodos y teorías, etc.

Page 12: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

la ingeniería del software

• definiciones

• Implica el desarrollo de actividades de:

• Modelado

• Resolución de problemas

• Adquisición de conocimiento

• Guiadas por una fundamentación

Página 12 / 31

Page 13: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

la ingeniería del software

• Trata de ser la respuesta a la crisis del software mediante una combinación de elementos:

Página 13 / 31

Coordinación, control y buena gestión

herramientas para automatizarlos métodos

mejores técnicas de

control de calidad

métodos completos paratodas las fases

mejores elementosde programación

Page 14: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

modelado

• Modelado

• Un método básico de la ciencia

• Modelo

• Es una representación abstracta de un sistema que permite responder preguntas sobre el sistema

• Son útiles cuando el problema no es trivial y se trabaja

Página 14 / 31

• Son útiles cuando el problema no es trivial y se trabaja con complejos por tamaño, funcionalidad, y/o costosos (o sea casa todos los sistemas!!!)

• Permiten visualizar y comprender sistemas que no existen o que sólo se supone que existen (aún cuando una parte de ellos ya haya sido construidos!!!)

Page 15: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

modelado

• Modelo

• Algunos ejemplos:• En biología: modelos de dinosaurios a partir de restos

fósiles• En aerodinámica: maquetas a escala o conjuntos de

ecuaciones matemáticas para analizar el comportamiento del objeto real

• En meteorología: modelos estadísticos de predicción para pronósticos

Página 15 / 31

• En meteorología: modelos estadísticos de predicción para pronósticos

• Los ingenieros de software necesitan• Comprender el ambiente de funcionamiento del sistema

por lo que deben construir modelos del dominio del problema (sistemas de bolsa, control de tráfico aéreo,...)

• Comprender los distintos sistemas que podrían construir para evaluar alternativas por lo que deben construir modelos del dominio de la solución

• Técnicas y herramientas para construir los modelos (por ejemplo, diagramas de UML)

Page 16: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

solución de problemas

• La ingeniería de software busca la solución adecuada, aplicando varios pasos:

• Formula el problema

• Analiza el problema

• Busca soluciones

• Decide la solución más adecuada

Página 16 / 31

• Especifica la solución

• Las actividades básicas del desarrollo implican:

• Obtener los requerimientos

• Analizar los requerimientos

• Diseñar el sistema

• Implementar el sistema

Page 17: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

solución de problemas

• Pero también desarrollan otras actividades para evaluar lo adecuado de los modelos

• Realizan revisiones del análisis: el modelo del dominio del problema se compara con la realidad del cliente

• Realizan revisiones del diseño: el modelo del dominio de la solución se compara con los objetivos del proyecto

Página 17 / 31

proyecto

• Realizan pruebas: el sistema se valida contra el modelo del dominio de la solución

• Administran el proyecto: comparan el modelo del proceso de desarrollo (calendario y presupuesto) con la realidad (trabajos entregados y recursos gastados)

Page 18: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

participantes y roles

• Participantes: todas las personas involucradas en el proyecto

• Cliente – Cliente Interno: solicita y “paga” por el desarrollo del sistema

• Desarrolladores: construyen el sistema (analistas, diseñadores, programadores,...)

• Gerente o Director del Proyecto: planifica y calcula el

Página 18 / 31

• Gerente o Director del Proyecto: planifica y calcula el presupuesto, coordina la ejecución de las actividades de los desarrolladores, cliente y usuarios

• Usuarios finales: los que van a utilizar el sistema

Page 19: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

participantes y roles

• Rol : el “papel” que se le ha asignado a una persona durante el desarrollo del sistema

• Es un conjunto de responsabilidades en el proyecto o en el sistema

• Está asociado a un conjunto de tareas y se asigna a un participante del proyecto

• Un mismo participante puede cumplir varios papeles

Página 19 / 31

• Un mismo participante puede cumplir varios papeles (cuidado con la cantidad de sombreros que le asignamos a cada persona!!!)

Page 20: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

otros conceptos de la ingeniería del software

• Sistemas y modelos

• Sistema: realidad subyacente

• Modelo: cualquier abstracción de la realidad

• Productos de trabajo

• Artefacto o elemento que se produce durante el desarrollo (documento, fragmento de software,...)

Página 20 / 31

desarrollo (documento, fragmento de software,...)

• Pueden ser de dos tipos:

• Producto de Trabajo Interno: producto para el consumo interno del proyecto (por ejemplo, una revisión de la estructura de la base de datos, resultados de pruebas para el gerente,...)

• Entregable: producto de trabajo para un cliente (especificación de requisitos, manual de usuario, producto final,...). Recordar el concepto de “servicio” y de “visibilidad del cliente en un servicio”

Page 21: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

otros conceptos de la ingeniería del software

• Actividades, tareas y recursos

• Actividad (o fase): es un conjunto de tareas que se realiza con un propósito específico (obtener los requisitos, entregar el software, administrar el proyecto,...) que a su vez pueden componerse de otras actividades

• Tarea: es la unidad de trabajo elemental capaz de ser

Página 21 / 31

• Tarea: es la unidad de trabajo elemental capaz de ser administrada y controlada; tiene recursos asignados, da como resultad productos de trabajo y depende de productos de trabajo producidos por otras tareas

• Recursos: bienes que se utilizan para realizar el trabajo:

• Tiempo, equipamiento y recursos humanos

• Cuando se planifica se divide el trabajo en tareas a las que se les asigna recursos (EDT – WBS)

Page 22: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

otros conceptos de la ingeniería del software

• Objetivos, requerimientos y restricciones

• Objetivos:

• Principios de alto nivel que se utilizan para guiar el proyecto y evaluar si se cumplieron al finalizar el proyecto (y por ende si el proyecto es exitoso o no)

• Definen los atributos realmente importantes del sistema (seguridad, fiabilidad,...)

• Suele haber conflicto entre los objetivos (por ejemplo,

Página 22 / 31

• Suele haber conflicto entre los objetivos (por ejemplo, seguridad y bajo costo) que aumentan la complejidad del proyecto

Page 23: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

otros conceptos de la ingeniería del software

• Objetivos, requerimientos y restricciones

• Requerimientos

• Son características que debe tener el sistema

• Requerimiento funcionales: definen el área de funcionalidad que debe soportar el sistema (por ejemplo, proporcionar billetes de tren)

• Requerimiento no funcionales: son restricción que se establecen para el funcionamiento del sistema (por

Página 23 / 31

• Requerimiento no funcionales: son restricción que se establecen para el funcionamiento del sistema (por ejemplo, proporcionar transacciones de bienes a futuro en menos de 100 milisegundos)

• Dominio : son los que están relacionados con Normas, Decretos, Resoluciones Generales, Leyes, etc.

Page 24: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

otros conceptos de la ingeniería del software

• objetivos, requerimientos y restricciones

• Otras restricciones:

• Por ejemplo, utilización de un determinado lenguaje de programación, de una determinada plataforma de TI o de un sistema antiguo que el cliente no quiere retirar (legacy)

Página 24 / 31

Page 25: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

otros conceptos de la ingeniería del software

• Notaciones, métodos y metodologías

• Notación: conjunto de reglas gráficas o de texto para representar un modelo (UML, Unified Modeling Language, es una notación gráfica y de texto orientada a objetos para representar modelos)

• Método: técnica repetible para resolver un problema específico. Por ejemplo:

Página 25 / 31

específico. Por ejemplo:

• Un algoritmo para ordenar un archivo es un método para ordenar elementos en una lista

• La administración de la configuración es un método para poder realizar el seguimiento de los cambios a los componentes de software (también a cualquier CI)

• Metodología: colección de métodos para la resolución de una clase de problemas (UP – Unified Process, RUP –Rational Unified Process, Agile Methods, XP eXtreme Programming...)

Page 26: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

Los servicios de TI y el “proceso de desarrollo” de software

Demanda de tecnología

Puestos de Trabajo

Seguridad

Conectividad

Ambiente de Trabajo

Infraestructura

Aplicaciones

Servicios de TI

Demanda Operativa

Demanda de software

Dominio del Negocio Dominio de TI

Usuario

Requerimiento Operativo

Requerimiento Estratégico

Requerimiento

Demanda de software

Página 26 / 31

Aplicaciones

Gestión del portafolio de TI

Demanda Demanda

Portafolio en evaluación

Portafolio activo

Dem

and

a E

stratégica

Proyectos (estratégicos)Cliente

Interno

Requerimiento no planificado

Oficina de Gestión de Proyectos

Proyecto

A

Oficina de Gestión de Proyectos

Proyecto

A

Proyecto

B

Proyecto

C

Proyectos (estratégicos y fuera de PA)

Mejoras por demanda operativa

Incidentes & Defectos

Page 27: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

Los servicios de TI y el “proceso de desarrollo” de software

Usuario

Requerimiento Operativo

Requerimiento Estratégico

Requerimiento

Demanda de software

Operaciones de TI

Soporte a la producción• Aplicaciones• Software de base• Bases de datos• Hardware (servidores y

Host)• Redes• Puestos de trabajo

Gestión del despliegue

Demanda de tecnología

Puestos de Trabajo

Seguridad

Conectividad

Dominio del Negocio Dominio de TI

Página 27 / 31

Cliente

Interno

Requerimiento no planificado

Desarrollo de SW

Gestión de releases

Pruebas y QA

Gestión de la configuración

Diseño y de desarrollo

Oficina de Gestión de Proyectos

Proyecto

A

Proyecto

B

Proyecto

C

Proyectos (estratégicos y fuera de PA)

Mejoras por demanda operativa

Incidentes & Defectos

Gestión de releases

Page 28: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

Demanda Estratégica de desarrollo de SW

Ambiente de Trabajo

Infraestructura

Aplicaciones

Servicios de TI

Demanda de tecnología

HW - Puestos de Trabajo

Seguridad

ConectividadRequerimiento Estratégico

Demanda de software

Plan Anual

Dominio del Negocio Dominio de TI

Página 28 / 31

Aplicaciones

Gestión del portafolio de TI

Demanda Demanda

Portafolio en evaluación

Portafolio activo

Dem

and

a E

stratégica

Cliente

Interno

Oficina de Gestión de Proyectos

Proyecto

A

Proyecto

D

Proyecto

F

Proyectos (estratégicos)

Plan Estratégico

Page 29: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

Demanda Operativa de desarrollo de SW

Demanda de tecnología

Puestos de Trabajo

Seguridad

Conectividad

Ambiente de Trabajo

Infraestructura

Aplicaciones

Servicios de TI

Usuario

Requerimiento Operativo

Demanda Operativa

Demanda de software

Dominio del Negocio Dominio de TI

Página 29 / 31

Aplicaciones

Cliente

Interno

Requerimiento no planificado

Oficina de Gestión de Proyectos

Proyecto

B

Proyecto

C

Proyectos (estratégicos y fuera de PA)

Mejoras por demanda operativa

Incidentes & Defectos

Análisis de

impacto

Diseño

Realización

Prueba

Implantación

Page 30: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

Porque Ingeniería de Software I se focaliza en Requerimientos, Proyectos , Calidad y Testing?

Gestión de Requerimientos

Gestión de Proyectos

Aseguramiento de la Calidad

Gestión de Cambios

Planificar Cambio

Administrar Cambio

Requerimiento Estratégico

Requerimiento no planificado

Desplegar Cambio

Página 30 / 31

Desarrollo de Software

AnálisisDiseño

Construcción

Control de Calidad (testing)

Aceptación

Cliente

Interno

Desplegar Cambio

Page 31: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

Porque Ingeniería de Software I se focaliza en Requerimientos, Proyectos , Calidad y Testing?

Gestión de Requerimientos

Gestión de Proyectos

Aseguramiento de la Calidad

Gestión de Cambios

Planificar Cambio

Administrar Cambio

Requerimiento Estratégico

Requerimiento no planificado

Desplegar Cambio

Página 31 / 31

Desarrollo de Software

AnálisisDiseño

Construcción

Control de Calidad (testing)

Aceptación

Cliente

Interno

Desplegar Cambio

Page 32: 3 - Introducción a la Ingeniería de Software [Modo de compatibilidad]

bibliografía

Página 32 / 31

Bruegge, B., Dutoit, A.H., Ingeniería del Software Orientado a Objetos, cap. 1

Jacobson, I., Booch, G., Rumbaugh, J., El Proceso Unificado de Desarrollo de Software, cap. 1

Pressman, R.S., Ingeniería del Software. Un enfoque práctico, cap. 1 y 2

Sommerville, I., Ingeniería de Software, cap. 1, 2 y 3