Вы находитесь на странице: 1из 32

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
• Objetivo actual: mejorar la calidad de las soluciones
software.

Página 2 / 31
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
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?)
• 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

Página 4 / 31
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
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
• En muchos casos se desarrollo a medida y hay
ausencia de componentes

Página 7 / 31
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.

Sin tiempo
para recoger
datos Dificultad de
históricos mantener
Planificación y el software
estimaciones existente
imprecisas
Baja productividad
Insatisfacción
del cliente

Calidad

Página 8 / 31
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)
• Resistencia al cambio

Página 9 / 31
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

MITOS DE LOS DESARROLLADORES MITOS DEL CLIENTE

- Programa funcionando = fin del trabajo - Requisitos establecidos como


- Calidad = el programa se ejecuta una declaración general de
sin errores objetivos
- Entrega al cliente: programa - Flexibilidad del software ante
funcionando los cambios

Página 10 / 31
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
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.

Página 11 / 31
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:

métodos mejores técnicas


completos para de
todas las fases control de calidad

herramientas para
mejores elementos automatizar
de programación los métodos

Coordinación, control
y buena gestión

Página 13 / 31
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
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!!!)

Página 14 / 31
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
• 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)

Página 15 / 31
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
• Especifica la solución

• Las actividades básicas del desarrollo implican:


• Obtener los requerimientos
• Analizar los requerimientos
• Diseñar el sistema
• Implementar el sistema

Página 16 / 31
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
• 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)

Página 17 / 31
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
presupuesto, coordina la ejecución de las actividades
de los desarrolladores, cliente y usuarios
• Usuarios finales: los que van a utilizar el sistema

Página 18 / 31
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
(cuidado con la cantidad de sombreros que le
asignamos a cada persona!!!)

Página 19 / 31
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,...)
• 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”

Página 20 / 31
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
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)

Página 21 / 31
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,
seguridad y bajo costo) que aumentan la complejidad
del proyecto

Página 22 / 31
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
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.

Página 23 / 31
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:
• 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...)

Página 25 / 31
Los servicios de TI y el “proceso de desarrollo”
de software

Dominio del Negocio Dominio de TI

Demanda de tecnología
Requerimiento
Operativo Servicios de TI Puestos de Trabajo

Usuario Seguridad
Ambiente de Trabajo
Conectividad
Requerimiento
Estratégico Demanda
Infraestructura Operativa
Demanda de software
Requerimiento Aplicaciones
no planificado Proyectos
Proyectos
(estratégicos
(estratégicos)
y fuera de PA)
Cliente
Interno Mejoras por demanda operativa
Estratégica
Demanda Incidentes & Defectos

Gestión del portafolio de TI Oficina de Gestión de Proyectos

Demanda Demanda Proyecto Proyecto Proyecto


A B C
Portafolio en Portafolio
evaluación activo

Página 26 / 31
Los servicios de TI y el “proceso de desarrollo”
de software

Dominio del Negocio Dominio de TI

Demanda de tecnología Operaciones de TI


Requerimiento
Operativo
Puestos de Trabajo Soporte a la producción
• Aplicaciones
Usuario • Software de base
Seguridad
• Bases de datos
• Hardware (servidores y
Requerimiento Conectividad Host)
Estratégico • Redes
• Puestos de trabajo

Demanda de software Gestión del despliegue


Requerimiento
no planificado
Cliente Proyectos (estratégicos y fuera de PA) Gestión de releases

Interno
Mejoras por demanda operativa

Incidentes & Defectos

Desarrollo de SW

Oficina de Gestión de Proyectos Gestión de releases

Pruebas y QA
Proyecto Proyecto Proyecto
A B C Gestión de la configuración

Diseño y de desarrollo

Página 27 / 31
Demanda Estratégica de desarrollo de SW

Dominio del Negocio Dominio de TI


Plan Anual
Demanda de tecnología

Servicios de TI HW - Puestos de Trabajo

Seguridad
Ambiente de Trabajo
Conectividad
Requerimiento
Estratégico
Infraestructura
Demanda de software

Aplicaciones
Proyectos (estratégicos)
Cliente
Interno
Estratégica
Demanda

Plan Estratégico
Gestión del portafolio de TI Oficina de Gestión de Proyectos

Demanda Demanda Proyecto Proyecto Proyecto


A D F
Portafolio en Portafolio
evaluación activo

Página 28 / 31
Demanda Operativa de desarrollo de SW

Dominio del Negocio Dominio de TI

Demanda de tecnología

Requerimiento Servicios de TI Puestos de Trabajo


Operativo
Seguridad
Usuario Ambiente de Trabajo
Conectividad

Demanda
Infraestructura Operativa
Demanda de software

Aplicaciones
Proyectos (estratégicos y fuera de PA)
Requerimiento
no planificado
Cliente Mejoras por demanda operativa
Interno
Incidentes & Defectos
Diseño

Análisis de
impacto
Realización
Oficina de Gestión de Proyectos
Implantación
Proyecto Proyecto
Prueba B C

Página 29 / 31
Porque Ingeniería de Software I se focaliza en
Requerimientos, Proyectos , Calidad y Testing?

Aseguramiento de la Calidad

Gestión de Cambios
Requerimiento
Estratégico
Planificar Cambio
Gestión de Gestión de
Requerimiento Requerimientos Proyectos Administrar
no planificado Cambio

Desplegar Cambio

Desarrollo de
Cliente Software
Interno
Análisis
Diseño
Construcción

Control de
Calidad
(testing)

Aceptación

Página 30 / 31
Porque Ingeniería de Software I se focaliza en
Requerimientos, Proyectos , Calidad y Testing?

Aseguramiento de la Calidad

Gestión de Cambios
Requerimiento
Estratégico
Planificar Cambio
Gestión de Gestión de
Requerimiento Requerimientos Proyectos Administrar
no planificado Cambio

Desplegar Cambio

Desarrollo de
Cliente Software
Interno
Análisis
Diseño
Construcción

Control de
Calidad
(testing)

Aceptación

Página 31 / 31
bibliografía

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

Página 32 / 31

Вам также может понравиться