Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Universidad de Guayaquil
La crisis del software (i)
2
La crisis del software (ii)
Dificultad inherente
Gran complejidad
Número de estados posibles es muy elevado
Conexiones entre entidades
Complejidad arbitraria que surge de instituciones humanas
Sujeto a continuos cambios
Especificación de requisitos
Comunicación del equipo
“La construcción de software siempre
será una tarea difícil. No hay bala de plata”
Frederick P. Brooks, Jr. (1987)
3
Algunas causas a los problemas del software
Responsables no cualificados
Falta de comunicación entre las partes
Desconocimiento de las nuevas tendencias
Resistencia al cambio
Falta de reconocimiento de la figura del informático
Una amplia mitología y falta de “cultura informática” de la sociedad
Mitos de gestión
Resistencia al cambio en la gestión de proyectos
Concepto de la horda mongoliana
…
Mitos del cliente
Ideas genéricas al principio, detalles al final
Requisitos en continua evolución
…
Mitos del desarrollador
El trabajo acaba cuando se ha escrito el programa y funciona
Sólo se entrega un programa funcionando
Lo que uno crea sólo debe entenderlo él
…
4
Calidad del software (i)
5
Calidad del software (ii)
Factores externos
Pueden ser detectados por los usuarios
Es de suma importancia
Factores internos
Sólo los perciben los ingenieros del software
Es el medio de conseguir la calidad externa
OBJETIVO
Buenas propiedades Satisfacer factores
internas externos
6
Atributos de un buen producto software (i)
Factores externos
Facilidad de mantenimiento
Ha de poder evolucionar para adaptarse a las necesidades de cambio de los clientes
Confiabilidad
No debe causar daños físicos o económicos en el caso de fallo del sistema
Fiabilidad, seguridad y protección
Eficacia
Hacer efectivo el propósito del software
Usabilidad
Fácil de utilizar
Debe tener una interfaz de usuario apropiada y una documentación adecuada
Reusabilidad
Capacidad de que un software pueda utilizarse en un contexto diferente al de su
creación
Portabilidad
Facilidad de transferir productos software a diferentes plataformas
…
7
Atributos de un buen producto software (ii)
Factores internos
Facilidad de traza
Modularidad
Tolerancia a fallos
Eficiencia de ejecución
Eficiencia de almacenamiento
Autodescripción
Legibilidad
Facilidad de expansión
Independencia del sistema
Independencia del hardware
Estandarización de datos
Estandarización de comunicaciones
…
8
Tipos de productos software (i)
Tipos de mercados
Productos genéricos
Sistemas autónomos producidos por una organización para su venta en el
mercado abierto a cualquier cliente que pueda adquirirlo
El desarrollador controla la especificación
Productos personalizados
Sistemas encargados por un cliente particular
Desarrollos a medida
Las especificaciones las determina el cliente
9
Tipos de productos software (ii)
Áreas de aplicación [Pressman, 2006] (i)
Software de sistemas
Software para dar servicio a otros programas: compiladores, editores...
Fuerte interacción con el hardware
Operación concurrente
Recursos compartidos
Gestión de procesos complicada
Estructuras de datos complejas
Software de tiempo real
Coordina/analiza/controla sucesos en el mundo real en el momento en el
que suceden: control de vuelo, plantas químicas, telefonía...
Tiempo de respuesta crítico: magnitud de milisegundos
Interaccionan directamente con dispositivos físicos y sensores
Requisitos de rendimiento críticos
Programación de bajo nivel
Concurrencia
10
Tipos de productos software (iii)
11
Tipos de productos software (iv)
Áreas de aplicación [Pressman, 2006] (iii)
Software de gestión
Proceso de información comercial: nóminas, clientes, inventarios...
Gran volumen de datos
Complejidad de la información
Integración
Sistemas transaccionales (TPS)
Soportan las operaciones diarias de un negocio: pedidos, compras...
Los requisitos, los datos y el procesamiento se conoce y está bien estructurado
Análisis de datos
Aplicaciones de consulta (query)
El usuario especifica qué desea no cómo obtenerlo
Lenguajes declarativos
Datawarehouse
Almacenamiento de versiones históricas de entradas a la base de datos, registros de
transacciones y datos históricos
Soporte a la toma de decisiones (DSS – Decision Support System)
Herramienta de usuario final
Resolución de problemas no estructurados
Análisis “what-if”, estadístico, tendencias...
12
Tipos de productos software (v)
Áreas de aplicación [Pressman, 2006] (iv)
Software de computadoras personales
Herramientas de escritorio, software para ocio…
Aplicaciones Web
Software accedido a través de un navegador Web
Los sistemas Web tienen una naturaleza y unos requisitos que difieren del software
tradicional
Los sistemas Web
Están orientados a documentos que contienen páginas Web estáticas o dinámicas
Se centran en el look & feel y enfatizan la creatividad visual y la presentación en la
interfaz
Son conducidos por el contenido, incluyendo el desarrollo del contenido
Necesitan ofrecer servicios a usuarios con diversidad de características y capacidades
Ejemplifican los vínculos entre el arte y la ciencia que generalmente aparecen en el
desarrollo del software
Requieren acortar el tiempo de desarrollo, dificultando aplicar el mismo nivel de
formalidad en la planificación y prueba que se aplica en el software tradicional
Presentan un formato de distribución y explotación diferente al software tradicional
Los desarrolladores de los sistemas Web
Difieren en gran medida en su formación, características, conocimiento y
comprensión del sistema
Diferencias en su percepción de la Web y de la calidad del sistema Web
13
Tipos de productos software (vi)
14
Tipos de productos software (vii)
15
Producto software. Conclusiones
Los sistemas software son productos complejos
Gran funcionalidad
Objetivos diferentes y en ocasiones conflictivos
En su concepción, desarrollo y mantenimiento interviene un gran
número de personas con diferentes perfiles
Elevado tamaño (Líneas de código)
Sujeto a cambios continuos
Requisitos, tecnología...
17
Introducción
Objetivos de la Ingeniería del Software
Desarrollo de software de Calidad
Aumento de la productividad
Disminución del tiempo
Desarrollo de software económico
Diferentes puntos de vista sobre el mismo tema
Diseño, construcción y mantenimiento de grandes sistemas software
Construcción multipersona de software multiversión
Conjunto de técnicas que se enfrentan al software como un producto de
ingeniería que requiere: planificación, análisis, diseño, implementación,
pruebas y mantenimiento
Aplicación disciplinada de los principios y métodos de la ingeniería, la ciencia y
las matemáticas para la producción económica del software de calidad
Conjunto de teorías, métodos y herramientas para el desarrollo profesional del
software
18
Definiciones (i)
Ingeniería del software es el establecimiento y uso de principios sólidos
de ingeniería, orientados a obtener software económico que sea fiable y
trabaje de manera eficiente en máquinas reales [Bauer, 1972]
Tratamiento sistemático de todas las fases del ciclo de vida del software.
Se refiere a la aplicación de metodologías para el desarrollo del sistema
software [AECC, 1986]
La construcción de software multiversión por un equipo de varias
personas [Parnas y Weiss, 1987]
La aplicación disciplinada de principios, métodos y herramientas de
ingeniería, ciencia y matemáticas para la producción económica de
software de calidad [Humphrey, 1989]
Disciplina tecnológica y de gestión concerniente a la invención,
producción sistemática y mantenimiento de productos software de alta
calidad, desarrollados a tiempo y al mínimo coste [Frakes et al., 1991]
19
Ingeniería del Software
Introducción a la Ingeniería del Software
Definiciones (ii)
Aplicación de herramientas, métodos y disciplinas para producir y mantener
una solución automatizada de un problema real [Blum, 1992]
La aplicación de principios científicos para la transformación ordenada de un
problema en una solución software funcional, así como en el consiguiente
mantenimiento del software hasta el final de su vida útil [Davis, 1993]
Es la aplicación de herramientas, métodos y disciplinas de forma eficiente en
cuanto al coste, para producir y mantener una solución a un problema de
procesamiento real automatizado parcial o totalmente por el software [Horan,
1995]
La aplicación de métodos y conocimiento científico para crear soluciones
prácticas y rentables para el diseño, construcción, operación y mantenimiento
del software y los productos asociados, al servicio de las personas [Shaw y
Garlan, 1996]
(1) La aplicación de un enfoque sistemático, disciplinado y cuantificable para
el desarrollo, la operación y el mantenimiento del software; es decir, la
aplicación de la Ingeniería al Software. (2) El estudio de las aproximaciones
en (1) IEEE Std 610.12-1990 [IEEE, 1999a]
20
Método de Ingeniería
21
Método de ingeniería en Ingeniería del Software
Recolección y análisis de requisitos
Actividad: Formulación del problema con el cliente
Resultado: Modelo del dominio del problema
Formulación y análisis del problema
Diseño del sistema
Actividad: Análisis del problema
Actividad: Descomposición en partes
Actividad: Selección de estrategias para diseñar el sistema
Actividad: Selección del diseño detallado para cada una de las partes
Resultado: Modelo del dominio de la solución
Búsqueda de soluciones; elección de la solución más adecuada
Implementación
Actividad: Trasladar el modelo del dominio de la solución en representaciones
ejecutables
Especificación de la solución
22
Ingeniería del Software
Introducción a la Ingeniería del Software
23
Modelo del problema vs. modelo de la solución (ii)
Realidad
Implementación
Lenguaje deespecificación
Lenguaje deprogramación
Actividad
Participante
Sistema
Tiempo
Modelo
Documento Equipamiento
26
Conceptos (ii)
Proceso
Define el marco de trabajo y permite un desarrollo racional y oportuno de la
Ingeniería del Software
Método
Indica cómo construir técnicamente el software. Se incluyen técnicas de
modelado y otras técnicas descriptivas
Herramientas
Proporcionan el soporte automático o semiautomático para el proceso y para
los métodos
Notación
Conjunto de reglas gráficas o textuales para la representación de un modelo
Metodología
Colección de métodos para resolver un tipo de problemas
Descompone el proceso de desarrollo en actividades y proporciona los
métodos adecuados para llevar a cabo dichas actividades
27
Proceso software
28
Introducción (i)
Recapitulación
del desarrollo Conjunto de actividades
de software Proceso
(Flujos de trabajo)
plantilla
requisitos
Dominio usuario resultado
Aplicación Proyecto Producto
Artefactos
modelos
participante código
Clientes manuales
Usuarios .
Ingenie.ros software Personas
..
29
Ingeniería del Software
Introducción a la Ingenería del Software
Introducción (ii)
La Ingeniería del Software es una tecnología multicapa
Herramientas
Métodos
Proceso
Enfoque de calidad
30
Definición de proceso software
Conjunto de actividades necesarias para transformar las ideas
iniciales del usuario, que desea automatizar un determinado
trabajo, en software
Conjunto de actividades y resultados asociados necesarios
para producir un producto software. Estas actividades son:
especificación del software, desarrollo del software,
validación del software y evolución del software
[Sommerville, 2005]
Conjunto ordenado de actividades; una serie de pasos que
involucran tareas, restricciones y recursos que producen una
determinada salida esperada [Pfleeger, 2002]
Marco de trabajo de las tareas que se requieren para
construir software de alta calidad [Pressman, 2006]
31
Características de un proceso (i)
32
Características de un proceso (ii)
Otras características que van a definir un proceso son
Comprensión
Está definido y es comprensible
Visibilidad
Se visualizan los progresos externamente
Soporte
Está soportado por herramientas CASE
Aceptación
Es aceptable para todos los actores implicados
Confianza
Los errores del proceso se detectan antes de que se produzcan errores en el producto
Robustez
Se puede continuar a pesar de problemas inesperados
Capacidad de mantenimiento
Puede ajustarse a las necesidades de cambio de la organización
Rapidez
Con qué “velocidad” se producen los sistemas
Adaptación
Capacidad que tiene un usuario del mismo de adaptarlo a sus necesidades
33
Importancia del proceso en el desarrollo del software (i)
Flujo de actividades
Los productos que deben crearse
Resultados del trabajo (modelos, documentos, datos informes...)
Qué y cuándo
La asignación de tareas a cada miembro del equipo y al equipo
como un todo
Los criterios para controlar el proceso
Se establece el control de gestión de los proyectos software
Establecimiento de hitos
Las posibles heurísticas (hallar, inventar)
34
Importancia del proceso en el desarrollo del software (ii)
Facilita la gestión del proyecto
Establece una división del trabajo
Facilita la comunicación de los miembros del equipo
Permite la reasignación y la reutilización de personal
especializado
Transferencia entre proyectos
Mejora la productividad y el desarrollo
El desarrollo es reproducible
Establece el contexto en el que se aplican los métodos
técnicos
Gestiona el cambio adecuadamente
Asegura la calidad
35
Modelos de proceso software
36
Ciclo de vida del software (i)
Cuando un proceso implica la construcción de algún producto, suele
referirse al proceso como un ciclo de vida
El proceso de desarrollo de software suele denominarse ciclo de vida del
software
La evolución del software representa el ciclo de actividades involucradas
en el desarrollo, uso y mantenimiento de sistemas software [Scacchi,
1987]
Los proyectos software se desarrollan en una serie de fases
Van desde la concepción del software y su desarrollo inicial hasta su
puesta en funcionamiento y posterior retirada por otra nueva
generación de software
Estas fases pueden ser
Temporales
Forman una secuencia en el tiempo
Lógicas
Cuando representan pasos o etapas que no constituyen una secuencia temporal
37
Ciclo de vida del software (ii)
Se puede definir ciclo de vida del software como (i)
Las distintas fases por las que pasa el software desde que nace una necesidad de
mecanizar un proceso hasta que deja de utilizarse el software que sirvió para ese
objetivo, pasando por las fases de desarrollo y explotación [Frakes et al., 1991]
El período de tiempo que comienza cuando se concibe un producto software y
finaliza cuando el producto pierde su utilidad. El ciclo de vida del software incluye
las siguientes fases: fase de requisitos, fase de diseño, fase de realización, fase de
pruebas, fase de instalación y aceptación, fase de operación y mantenimiento y,
algunas veces, fase de retirada [AECC, 1986]
Un marco de referencia que contiene los procesos, las actividades y las
tareas involucradas en el desarrollo, la explotación y el mantenimiento
de un producto de software, abarcando la vida del sistema desde la
definición de requisitos hasta la finalización de su uso [ISO/IEC, 1995]
Una aproximación lógica a la adquisición, el suministro, el desarrollo, la explotación
y el mantenimiento del software IEEE Std 1074-1997 Standard for Developing
Software Life Cycle Processes [IEEE, 1999b]
38
Ciclo de vida del software (iii)
Se puede definir ciclo de vida del software como (ii)
El ciclo de vida del software consiste de las siguientes fases: análisis de
requisitos, diseño, implementación, prueba y mantenimiento. El proceso de
desarrollo tiende a una iteración de estas fases más que a un proceso lineal
[CERN, 1996]
El ciclo de vida del software usa el modelo de que un elemento software tiene
vida. Un elemento software tiene una fase de concepción (una idea en una
mente de un usuario potencial), después de una fase de gestación (la fase de
desarrollo del software) hacia una fase de madurez (la revisión y corrección
de errores, o fase de mantenimiento), y finalmente la fase de retirada
[Leaney, 2004]
Se puede definir ciclo de desarrollo del software como
El período de tiempo que comienza con la decisión de desarrollar un producto
software y finaliza cuando se ha entregado éste. Este ciclo incluye, en
general, una fase de requisitos, una fase de diseño, una fase de implantación,
una fase de pruebas, y a veces, una fase de instalación y aceptación [AECC,
1986]
39
¿Qué es un modelo de proceso software?
Un modelo de proceso software es una representación abstracta de un
proceso software [Sommerville, 2005]
Hay varios modelos de procesos definidos en la bibliografía de Ingeniería
del Software
Cada modelo de proceso representa un proceso desde una perspectiva
particular, por lo que sólo ofrece una información parcial sobre dicho
proceso
Los modelos de proceso genéricos, también llamados paradigmas de
proceso
Presentan un proceso desde una perspectiva arquitectónica, es decir, ofrecen
un marco de definición para el proceso, pero no detallan las actividades
específicas
No son descripciones definitivas de los procesos software, más bien son
abstracciones útiles que se utilizan para explicar diferentes aproximaciones al
desarrollo del software
40
Razones para modelar un proceso
Cuando se pone por escrito una descripción de un proceso, se da forma a
una comprensión común de las actividades, recursos y restricciones
relacionados con el desarrollo del software
Ayuda al equipo de desarrollo a encontrar las inconsistencias, las
redundancias y las omisiones en el proceso y en las partes que lo
constituyen
El modelo debe reflejar las metas del desarrollo. A medida que se
construye el modelo el equipo de desarrollo evalúa las actividades
candidatas por su adecuación para alcanzar dichas metas
Ayuda al equipo de desarrollo a comprender dónde debe adaptarse el
proceso
Los modelos de proceso de desarrollo de software incluyen los requisitos
del sistema como entrada y un producto entregado como salida
[Pfleeger, 2002]
41
Modelo general de proceso en Ingeniería
Especificación
Formulación de los requisitos y restricciones del sistema
Diseño
Elaboración de un documento con el modelo del sistema
Fabricación
Construcción del sistema
Prueba
Comprobación de que el sistema cumple las especificaciones requeridas
Instalación
Entrega del sistema al cliente y garantía de que es operativo
Mantenimiento
Reparación de los fallos que aparecen en el sistema
42
Modelo general de proceso en Ingeniería de Software
El desarrollo
El mantenimiento
43
Fase de definición
Se identifican los requisitos claves del sistema y del software
Se desarrolla
Un Análisis de Sistemas
Se define el papel de cada elemento en el sistema automatizado de información,
incluyendo el que jugará el software
Un Análisis de Requisitos
Se especifican todos los requisitos de usuario que el sistema tiene que satisfacer
Esta fase está orientada al QUÉ
Qué información ha de ser procesada, qué función y rendimiento se desea, qué interfaces
han de establecerse, qué ligaduras de diseño existen y qué criterios de validación se
necesitan para definir un sistema correcto
Existe un paso complementario: la planificación del proyecto software
Se asignan los recursos
Se estiman los costes
Se planifican las tareas y el trabajo
44
Fase de desarrollo
45
Fase de mantenimiento
Mantenimiento correctivo
Corrección de errores
Mantenimiento adaptativo
Adaptaciones requeridas por la evolución del entorno del software
Mantenimiento perfectivo
Las modificaciones debidas a los cambios de requisitos del usuario
para mejorar el sistema
Mantenimiento preventivo
Mejora de las características internas del producto para hacer más
mantenible
46
Norma ISO 12207-1 (i)
47
Norma ISO 12207-1 (ii)
Resolución de problemas
Procesos de la Organización
Gestión Infraestructura
Mejora Formación
48
Norma ISO 12207-1 (iii)
Procesos principales: Son los que resultan útiles a las personas que
inician o realizan el desarrollo, la explotación o el mantenimiento del
software durante su ciclo de vida
Proceso de adquisición: Actividades y tareas que se realizan para
comprar un producto software
Proceso de suministro: Actividades y tareas que el suministrador
realiza
Proceso de desarrollo: Contiene las actividades de análisis de
requisitos, diseño, codificación, integración, pruebas e instalación y
aceptación
Proceso de explotación: Incluye la explotación del software y el
soporte operativo a los usuarios
Proceso de mantenimiento: Aparece cuando el software necesita
modificaciones, ya sea en el código o en la documentación asociada,
debido a un error, una deficiencia, un problema o la necesidad de mejora
o adaptación
49
Norma ISO 12207-1 (iv)
Procesos de soporte: Sirven de apoyo al resto y se aplican en cualquier
punto del ciclo de vida
Proceso de documentación: Registra la información producida por un proceso o
actividad en el ciclo de vida
Proceso de gestión de la configuración: Aplica ciertos procedimientos y
técnicos durante todo el ciclo de vida del sistema
Proceso de aseguramiento de la calidad: Aporta la confianza de que los
procesos y los productos software del ciclo de vida cumplen los requisitos
especificados y se ajustan a los planes establecidos
Proceso de verificación: Determina si los requisitos de un sistema o del
software están completos y son correctos
Proceso de validación: Sirve para determinar si el sistema o software final
cumple con los requisitos previstos para su uso
Proceso de revisión conjunta: Sirve para evaluar el estado del software y sus
productos en una actividad del ciclo de vida o una fase de un proyecto
Proceso de auditoría: Permite determinar, en los hitos predeterminados, si se
han cumplido los requisitos, los planes y el contrato
Proceso de resolución de problemas: Permite analizar y eliminar los problemas
descubiertos durante el desarrollo, explotación, el mantenimiento u otro proceso
50
Norma ISO 12207-1 (v)
51
Norma ISO 12207-1 (vi)
Proceso de adaptación: Sirve para realizar la adaptación básica de
la norma ISO-12207 con respecto a los proyectos software. Es
necesario comprender los procesos, las organizaciones y sus relaciones
bajo diferentes puntos de vista
Bajo el punto de vista del contrato, el comprador y el proveedor negocian y
firman un contrato, empleando los procesos de adquisición y suministro
Bajo el punto de vista de gestión, el comprador, el proveedor, el
desarrollador, el operador y el personal de mantenimiento gestionan sus
respectivos procesos para el proyecto software
Bajo el punto de vista de explotación, el operador proporciona el servicio
de explotación del software a los usuarios
Bajo el punto de vista de ingeniería, el desarrollador o el personal de
mantenimiento llevan a cabo sus respectivas tareas de ingeniería para
producir o modificar los productos software
Bajo el punto de vista de soporte, los grupos (tales como el de la gestión
de la configuración, el aseguramiento de la calidad...) proporcionan
servicios de apoyo a otros grupos en el cumplimiento de tareas únicas y
específicas
52
Tipos de modelos de procesos
53
Modelos lineales o secuenciales
Codificación
Comienza Tiempo
el proyecto
55
Modelo primitivo (ii)
Inconvenientes
Código pobremente estructurado tras varias iteraciones
Código espagueti
Caro de desarrollar por las numerosas recodificaciones
Posible rechazo del usuario al no existir análisis de requisitos
Caro de depurar por la falta de planificación
Caro de mantener por la falta de estructura y documentación
56
Modelo clásico o en cascada (i)
57
Modelo clásico o en cascada (ii)
Fases secuenciales
Comienzo de una fase con el término de la anterior
Paso de fase al conseguir los objetivos
Obtención de documentos como criterio de finalización de fase
El final de una fase puede suponer un punto de revisión
Apoyo a los gestores
Distintas configuraciones
Muchos modelos más complejos son variaciones del modelo en
cascada que incorporan lazos de realimentación y fases adicionales
58
Modelo clásico o en cascada (iii)
Análisis de
requisitos
Diseño del
sistema
Diseño del
programa
Codificación
Pruebas
unitarias y de
integración
Prueba
del sistema
Prueba
de aceptación
Operación y
Modelo en cascada [Pfleeger, 2002] mantenimiento
59
Modelo clásico o en cascada (iv)
Investigación
preliminar
Especificación de requisitos
Análisis
Módulos implementados
Codificación
Módulos
Prueba probados
Mantenimiento
Sistema funcionando
Modelo en cascada con realimentación y actualizado
60
Modelo clásico o en cascada (v)
Inconvenientes
Su progresión secuencial o lineal no refleja la manera en que realmente se
desarrolla el software [Pfleeger, 2002; Pressman, 2006]
Es un modelo que adolece de rigidez [Pressman, 2006]
Exige al usuario que exponga explícitamente todos los requisitos al principio,
presentando problemas para gestionar la incertidumbre natural propia del comienzo
de la mayoría de los proyectos
Se tarda mucho tiempo en pasar por todo el ciclo [Piattini et al., 2004]
Es un modelo monolítico [Pressman, 2006]
Hasta llegar a las etapas finales del desarrollo no habrá una versión operativa del
programa, lo que influye negativamente en el descubrimiento a tiempo de errores o
incongruencias en los requisitos
Impone una estructura de gestión de proyecto al desarrollo del sistema
[McCracken y Jackson, 1981]
No trata al software como un proceso de resolución de problemas [Curtis et
al., 1987]
61
Modelo clásico o en cascada (vi)
Consideraciones finales
Tiene un lugar destacado en la Ingeniería del Software
Proporciona una plantilla para adecuar los métodos
Es muy utilizado
Tiene problemas pero es mejor que desarrollar sin guías
62
Modelo V
Es una variación del modelo Operación y
en cascada que demuestra mantenimiento
cómo se relacionan las
actividades de prueba con Validar requisitos
las de análisis y desarrollo Análisis
Pruebas
[GMD, 1992] de aceptación
63
Modelos basados en prototipos (i)
64
Modelos basados en prototipos (ii)
65
Modelo de prototipos (i)
Basado en prototipos desechables Obtención de
requisitos
Construcción rápida y a bajo coste
Idea del software en líneas generales desde
el punto de vista del usuario Diseño rápido
Idealmente sirve para identificar los
requisitos del software
Introduce cierta flexibilidad en la Construcción Refinamiento
del prototipo del prototipo
introducción de requisitos
Proceso iterativo
La iteración ocurre cuando el prototipo se Evaluación
del prototipo
pone a punto para satisfacer las necesidades
del cliente, permitiendo a la vez que el
desarrollador comprenda mejor lo que
necesita hacer Producto final
Modelo de prototipos
66
Modelo de prototipos (ii)
Ventajas
Permite solventar objeciones del usuario
Inconvenientes
El sistema se puede llegar a deteriorar tendiendo hacia el modelo
primitivo
Se suele refinar el prototipo hacia el sistema final en lugar de
68
Modelos basados en métodos formales
Permiten especificar, desarrollar y verificar un sistema aplicando una
notación matemática
Algunas organizaciones de desarrollo de software aplican una variación de
este enfoque, llamado ingeniería del software de sala limpia [Mills et
al., 1987; Dyer, 1992]
Ventajas
La ambigüedad, lo incompleto y la inconsistencia se descubren y se corrigen
fácilmente
Los métodos formales de diseño sirven como base para la verificación de
programas
Sirven de base para la generación automática de código
Barreras para su implantación
El desarrollo es bastante caro y lleva mucho tiempo
El estudio de los métodos es costoso
Es difícil establecer modelos formales como mecanismo de comunicación con
los clientes
69
Modelo de transformación (i)
Usando un soporte automatizado se aplican una serie de
transformaciones para convertir una especificación formal en
un sistema ejecutable [Balzer, 1981]
Intenta reducir la probabilidad de la existencia de errores
eliminándolos en las diferentes iteraciones de que consta el
proceso
En las iteraciones no se modifica el código sino la especificación
formal, obteniéndose un código que siempre se corresponde con la
especificación
Inconvenientes
Poca aceptación de los métodos formales
No se dispone de transformaciones automáticas más que en pequeños
dominios y entornos
Ofrecen muy poca flexibilidad al usuario ante situaciones no
planificadas a priori
Modelo de transformación (ii)
Secuencia de transformaciones
con su justificación
Transformación N
..
.
Especificación
Transformación 2 Prueba
formal
Transformación 1
Requisitos Sistema
del sistema entregado
Comparar con los
requisitos. Actualizar
cuando se necesite
Incremento 2
Entrega del
Análisis Diseño Código Prueba segundo incremento
Incremento 3
Entrega del
Análisis Diseño Código Prueba tercer incremento
..
.
Tiempo de calendario
Análisis Planificación
Análisis
Diseño
Diseño
N veces Codificación
Codificación
Evaluación
Integración Entrega
Fases Transición
progresiva
Modelo iterativo (iii)
Evaluación de las iteraciones
Deben definirse criterios de evaluación de las iteraciones
Una iteración se marca por etapas intermedias que permitan medir los
progresos. Debe haber al menos dos etapas
Revisión inicial: fija los objetivos y criterios de la iteración
Revisión de evaluación: valida los resultados
Mitos sobre el ciclo de vida iterativo [Muller, 1997]
El ciclo de vida iterativo favorece los apaños
El ciclo de vida iterativo engendra problemas
El ciclo de vida iterativo e incremental exige recomenzar n veces hasta que el
resultado sea el adecuado
El ciclo de vida iterativo es una excusa para no planificar y gestionar un
proyecto
El ciclo de vida iterativo sólo concierne a los desarrolladores
El ciclo de vida iterativo favorece siempre añadir nuevas necesidades, sin fin
Incremental vs. iterativo
Desarrollo incremental: sistema parcial, funcionalidad completa
Evaluación de
Determinar los alternativas
objetivos, Análisis Identificar y
alternativas y de riesgo
resolver riesgos
restricciones Análisis
de riesgo
Análisis
de riesgo
Prototipo
N Análisis Proto-
REVISIÓN
Ó Proto- operativo
Planifica- de riesgo tipo 3
I tipo 2
S ción Prototipo 1
Simulaciones, modelos, pruebas
Plan de requisitos
R Planificación del Concepción de
E Ciclo de vida la operación
V Diseño
I Diseño del
detallado
Plan de Validación de software
desarrollo requisitos Codificación
Pruebas Desarrollo,
Integración y unitarias verificación
Plan para las plan de pruebas Pruebas de y producción
nuevas fases Pruebas de integración del siguiente
aceptación nivel
Inconvenientes
No ha sido desarrollado en el mundo de la contratación comercial sino
en el de desarrollo interno
Puede resultar difícil convencer a grandes clientes de que el enfoque
evolutivo es controlable
Necesita experiencia en la evaluación de riesgos, expertos, que no
siempre están disponibles
Necesita una elaboración adicional de los pasos del modelo
Modelo en espiral (vii)
Estructuradas
Orientadas a procesos
Orientadas a datos
Orientadas a estados y transiciones
Orientadas al diseño del conocimiento
Orientadas a objetos
Orientadas al desarrollo de sistemas hipermediales
Basadas en métodos formales
Metodologías estructuradas
RDD Objectory
OMT Booch (91) Unificación,
Estandarización
UML
Metodologías de
Métricas segunda generación
Metodologías de
tercera generación
OMT 2 Syntropy
Lenguajes OPEN
MEDEA UP
Formales Fusion Moses
Booch (94)
Orientadas a objetos (iv)
Metodologías estructuradas vs. Metodologías OO (i)
STD
DFD PROGRAMA
DATOS
RELACIONAL TABLAS
DER
Orientadas a objetos (v)
ANÁLISIS DISEÑO
Por Transformación
Orientadas al desarrollo de sistemas hipermediales (i)
Características generales
Está basado en componentes
Utiliza UML [Booch et al., 1999; OMG, 2003]
Características principales [Jacobson et al., 1999]
Es un proceso conducido por casos de uso
Está centrado en la arquitectura
Es iterativo e incremental
Introducción (ii)
Un marco de trabajo genérico
No existe un proceso universal
Puede extenderse y especializarse para una gran variedad de sistemas
de software
Flexibilidad
Está basado en componentes
Permite gran variedad de estrategias de ciclo de vida
Se pueden definir diferentes conjuntos de productos
Se pueden definir actividades y encargados de las mismas
Introducción (iii)
Selecciona qué artefactos producir
Define actividades y stakeholders
Modela conceptos Actividad
Describe un
Analista
caso de uso
Responsable de Artefacto
Caso de uso
Paquete de casos de uso
El producto (i)
El producto que se obtiene es un sistema de software
El sistema lo componen todos los “artefactos” necesarios
para representarlo de forma comprensible
Artefacto
Término general para cualquier tipo de información creada, producida,
cambiada o utilizada por los stakeholders en el desarrollo del sistema.
Puede ser
De ingeniería
De gestión
El artefacto más importante del Proceso Unificado es el
modelo
Un sistema posee una colección de modelos y las relaciones
entre ellos
El producto (ii)
Usuarios
Ingenieros
Arquitecto de pruebas
Sistema
Jefe de
Diseñadores
proyecto
Analistas
El producto (iii)
Modelos
Modelo de casos de uso
Diagramas de casos de uso, secuencia, colaboración y actividad
Modelos de análisis y diseño
Diagramas de clases, objetos, secuencia, colaboración y actividad
Modelo de despliegue
Diagramas despliegue, secuencia y colaboración
Modelo de implementación
Diagramas de componentes, secuencia y colaboración
Modelo de pruebas
Todos los diagramas
El producto (iv)
Modelo de
casos de uso
Modelo de
Análisis
Modelo de
diseño
Modelo de
despliegue Modelo de
implementación Modelo de
pruebas
El proceso (i)
Actividades
Calles
Clases, interfaces,
colaboraciones Componentes
Casos de uso
Vista de Casos
de uso
Diseño de la arquitectura
Seleccionar escenarios: aspectos críticos y riesgos
Identificar las clases principales y sus responsabilidades
Distribuir el comportamiento en clases
Estructurar en subsistemas, capas y definir interfaces
Definir distribución y concurrencia
Implementar prototipos de arquitectura
Derivar casos de prueba a partir de los casos de uso
Evaluar la arquitectura
Iterar
La arquitectura se desarrolla mediante iteraciones (en capas)
Comienza con una línea base de arquitectura (primera versión de los
modelos)
La línea base evoluciona hasta convertirse en un sistema estable
Proceso iterativo e incremental (i)
La característica fundamental del Proceso Unificado es ser un proceso
iterativo
Se basa en la ampliación y el refinamiento del sistema
Una serie de desarrollos cortos (mini proyectos de 2 a 6 semanas, cada
iteración reproduce el ciclo de vida a menor escala)
No sólo se mejora sino que el sistema también crece: proceso iterativo e
incremental
Funcionalidad
del sistema Incremento2
Incremento1
Tiempo
Proceso iterativo e incremental (ii)
El resultado de cada iteración es un sistema ejecutable
(aunque sea incompleto y no esté listo para su instalación)
Un sistema instalable requiere varias iteraciones
Ciclo de desarrollo
iteración fase
tiempo
La vida del Proceso Unificado (iii)
Hitos
Los hitos son puntos de control en los cuales los
participantes en el proyecto revisan el progreso del
proyecto
Se pretende
Sincronizar las expectativas y la realidad
Identificar los riesgos
Se evalúa la situación global del proyecto
Se necesitan
Resultados tangibles para comparar con las expectativas
Varios niveles
Hitos principales al final de cada fase
Hitos secundarios final de cada iteración
La vida del Proceso Unificado (iv)
Una iteración es una secuencia de actividades con un plan
establecido y unos criterios de evaluación, cuyo resultado es una
versión ejecutable no orientada a la entrega (hito
secundario)
Dentro de cada fase se puede, a su vez, descomponer el trabajo
en iteraciones con sus incrementos resultantes
Cada fase termina con un hito, cada uno de los cuales se
caracteriza por la disponibilidad de un conjunto de componentes de
software
Objetivos de los hitos
Toma de decisiones para continuar con la siguiente fase
Controlar el progreso del proyecto
Proporcionar información para la estimación de tiempo y recursos de
proyectos sucesivos
Las iteraciones discurren a lo largo de las disciplinas
La vida del Proceso Unificado (v)
Requisitos
Análisis
Diseño
Implementación
Pruebas
Interfaz de usuario
Repositorio Metamodelo
Generador de Herramientas de
carga/descarga
Informes de datos
Comprobación de errores
SISTEMA DE REPOSITORIO/DICCIONARIO
Herramientas
de Soporte
CONTROL DE CONFIGURACIÓN SERVICIOS DE SEGURIDAD