Upload
sebastian-auladell
View
85
Download
0
Embed Size (px)
Citation preview
Introducción a la Ingeniería de Software
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.
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
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
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
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?
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
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
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
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
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.
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
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
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!!!)
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)
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
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)
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
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!!!)
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”
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)
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
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.
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
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...)
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
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
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
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
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
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
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