ingeniería de software agustín j. gonzález elo329: diseño y programación orientados a objeto...

52
Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: http://www.dsic.upv.es/~uml http://inst.eecs.berkeley.edu/~cs169/ entre otras fuentes.

Upload: montserrat-molina-rubio

Post on 23-Jan-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Ingeniería de Software

Agustín J. GonzálezElo329: Diseño y Programación

Orientados a ObjetoTomado de:

http://www.dsic.upv.es/~uml http://inst.eecs.berkeley.edu/~cs169/

entre otras fuentes.

Page 2: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Definición

(1993) La aplicación mecanismos sistemáticos, disciplinados, y cuantificables para el desarrollo, operación y mantención de software; esto es la aplicación de la ingeniería al software.

Establecimiento y uso de principios con caracteres de ingeniería apropiados para obtener, eficientemente, software confiable, que opere eficaz y eficientemente en máquinas reales

La aplicación del arte del desarrollo software junto con las ciencias matemáticas y computadores para diseñar, construir, y mantener eficientes y económicos programas computacionales que logran sus objetivos.

Page 3: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Estado del arte en Ing. De Software

¿Es una ciencia rigurosa con fuertes fundamentos matemáticos?

¿Es una campo técnico bien desarrollado con mucho de disciplina de ingeniería?

O está realmente en un estado primitivo... A lo más una serie de “mejores prácticas”,

desarrolladores de software construyen software y si éstos funcionan entonces nosotros estudiamos como ellos lo hicieron.

Si éstos funcionan por un largo tiempo entonces estudiamos sus procesos de software aún más cuidadosamente.

Page 4: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Construcción de una casa para “fido”

Puede hacerlo una sola personaRequiere:

Modelado mínimoProceso simpleHerramientas simples

Page 5: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Construcción de una casa

Construida eficientemente y en un tiempo razonable por un equipoRequiere:

ModeladoProceso bien definidoHerramientas más sofisticadas

Page 6: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Construcción de un rascacielos

Page 7: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Herramientas(Ej: Rational Rose)

Proceso (MetodologíasEj: ITIL, Extreme Programming, RUP: Rational Unified Process)

Notación (UML)

Claves en Desarrollo de SI

Calidad: Ej: CMM

Page 8: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Sistema Computacional

Proceso de Negocios

Orden

Item

envío

“El modelado captura laspartes esenciales del sistema”

Abstracción - Modelado Visual (MV)

Page 9: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Interfaz de Usuario(Visual Basic,

Java, ..)Lógica del Negocio

(C++, Java, ..)

Servidor de BDs(C++ & SQL, ..)

Múltiples Sistemas

Componentes Reutilizados

Manejar la complejidad

“Modelar el sistema independientemente del lenguaje de implementación”

Promover la Reutilización

Notación (Visual) - Beneficios

Page 10: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

¿Por qué la Orientación a Objetos?

Proximidad de los conceptos de modelado respecto de las entidades del mundo real Mejora la captura y validación de requisitos Acerca el “espacio del problema” y el “espacio de

la solución” Modelado integrado de propiedades estáticas

y dinámicas del ámbito del problema Facilita construcción, mantenimiento y

reutilización Podríamos dar muchas razones pero hay

problemas..

Page 11: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

“...Los conceptos básicos de la OO se conocen desde hace dos décadas, pero su aceptación todavía no está tan extendida como los beneficios que esta tecnología puede sugerir”

Problemas en OO

Page 12: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

… Problemas en OO

Un objeto contiene datos y operaciones que operan sobre los datos, pero ...

Podemos distinguir dos tipos de objetos degenerados:

Un objeto sin datos (que sería lo mismo que una biblioteca de funciones)

Un objeto sin “operaciones”, con sólo operaciones del tipo crear, recuperar, actualizar y borrar (que se correspondería con las estructuras de datos tradicionales)

Un sistema construido con objetos degenerados no es un sistema verdaderamente orientado a objetos

Page 13: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Proceso de Desarrollo de SW

Page 14: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

El proceso de desarrollo “Completo”

Se da en un contexto y dependiendo el texto o investigador destaca más o menos etapas.

El más completo que he visto incluye:

Al desarrollo es a lo que normalmente se la da más énfasis en la literatura.

Sueño LanzamientoInvestigación Desarrollo Soporte

Tiempo

Page 15: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Caso de desarrollo de productos (Francys Lillo & Victor Grimblatt, Motorola)

Concepto, definición yplanificación

DesarrolloDesarrollo ManufacturaManufactura DistribuciónDistribución Post-ventaPost-venta

CALIDAD

Page 16: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Caso de desarrollo de productos (Francys Lillo & Victor Grimblatt)

Page 17: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Requisitos nuevoso modificados

Sistema nuevoo modificado

Proceso de Desarrollo de Software

¿Qué es un Proceso de Desarrollo de SW?

Define Quién debe hacer Qué, Cuándo y Cómo debe hacerlo

No existe un proceso de software universal. Las características de cada proyecto (equipo de desarrollo, recursos, etc.) exigen que el proceso sea configurable

Sueño LanzamientoInvestigación Desarrollo Soporte

Tiempo

Page 18: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Planificar y Evaluar Proyectos ...

¿Podré cumplir con los plazos? ¿Estaré dentro de lo

presupuestado? ¿El “cliente” quedará satisfecho?

Las Metodologías pueden ser la ayuda que necesitamos, si podemos usarlas correctamente !!

Page 19: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Procesos, Metodologías

Page 20: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

¿Qué es una Metodología ...

Las metodologías imponen un proceso disciplinado sobre el

desarrollo de software con el fin de hacerlo más predecible y

eficiente.

Page 21: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Las ágiles más conocidas ...

XP (Programación Extrema) La familia Cristal de Cockburn Código Abierto ASD (Desarrollo de Software Adaptable) SCRUM FFD (Desarrollo Manejado por Rasgos) DSDM (Método de desarrollo de sistema

dinámico) RUP (Rational Unified Process)Yo no conozco todas, pero vale la pena conocer al menos una. Aquellas en rojo son la más populares.

Page 22: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Metodologías en área TI

Más detalles aquí.

Page 23: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Apostando por RUP ...

Page 24: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Desarrollo de software: Características de RUP ...

Guiado y Manejado por Casos de Uso

Centrado en la Arquitectura

Iterativo e Incremental

Desarrollo Basado en Componentes

Utilización de UML

Proceso Integrado

Page 25: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Principales metodologías en el tiempo

Tiempo

Modelo Tradicional de Cascada

Tiempo

Definición de Requerimientos

Análisis & Diseño

Implementación y Test Unitarios

Construcción/Pruebas

t

t

Iteración 1 Iteración 2 Iteración 3

P

C

A&D

R

P

C

A&D

R

P

C

A&D

RModelo Iterativo

Incremental

Integración ytest del sistema

Operación y mantención

Page 26: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

TiempoTiempo

Esfu

erz

o N

ecesari

o p

or

Acti

vid

ad

Esfu

erz

o N

ecesari

o p

or

Acti

vid

ad

TransiciónTransiciónElaboracióElaboraciónn

ConstruccióConstrucciónn

ConcepciónConcepción

Iteración Preliminar

. . . .. . . .Iteración1

Iteración2

. . . .. . . . Iteraciónn

Iteración

n+1

RUP Define Fases de Desarrollo ...

Análisis & Diseño

Construcción

Pruebas

Distribución

Requerimientos

Áreas de trabajo (Workflow)

A & D

C

P

D

R

A & D

C

P

D

R

A & D

C

P

D

R

A & D

C

P

D

R

Page 27: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

ConcepciónConcepción ElaboraciónElaboración ConstrucciónConstrucción TransiciónTransición

Compromiso de recursos para fase

elaboración

HitoObjetivos,

visión

HitoArquitectura

HitoCapacidad

Operacional

Aceptación del cliente

LiberaciónProducto

Tiempo

Importancia de los Hitos en RUP ...

Page 28: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Mejores Prácticas de RUP ...

Controle los Cambios

Administre los Administre los RequerimientosRequerimientos

Use Use Arquitectura Arquitectura

de de ComponentesComponentes

Modele Modele VisualmenteVisualmente

Verifique Verifique CalidadCalidad

Desarrolle Iterativamente

Page 29: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Un Ejemplo: Comparar con V-Model (Motorola)

Page 30: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

• Pruebas funcionales• Pruebas de desempeño• Gestión de requisitos• Gestión de cambios y

configuración• Ingeniería de Negocio• Ingeniería de datos• Diseño de interfaces

Rational Unified Process1998

Rational Objectory Process1996-1997

Objectory Process1987-1995

Enfoque Ericsson

UML

Rational Unified Process (RUP)

Page 31: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Otra visión similar con más Actividades

Page 32: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Otra visión similar con más Actividades

Disciplinas o áreas de trabajo

Modelado del Negocio

Requisitos

Análisis y Diseño

Implementación

Pruebas

Despliegue, distribución

Entorno

Gestión de configuración y cambios

Gestión del proyecto

Primarios

De Apoyo

Page 33: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Deployment Set

Project Management Set

Configuration & Change Management Set

Environment Set

Business Modeling Set

Requirements Set

Analysis & Design Set

Implementation Set

Test Set

... Elementos en RUP

Artefactos Es el Resultado parcial o final que es producido y

usado durante el proyecto. Son las entradas y salidas de las actividades

Un artefacto puede ser un documento, un modelo o un elemento de modelo

Conjuntos de Artefactos

Page 34: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Características Esenciales de RUP

Proceso Dirigido por los Casos de Uso Proceso Iterativo e Incremental Proceso Centrado en la Arquitectura

Page 35: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

RequisitosCapturar, definir y validar los casos de

uso

Realizar los casos de uso

Verificar que se satisfacen los casos de uso

Análisis & Diseño

Implementación

Pruebas

Casos de Usointegran el

trabajo

Proceso dirigido por los Casos de Uso

Page 36: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Caso de Uso Realización de Análisis Realización de Diseño

Caso de Prueba

X

«trace» «trace»

«trace»«trace»

Pruebas Funcionales

PruebasUnitarias

[The Unified Software Development Process. I. Jacobson, G. Booch and J. Rumbaugh. Addison-Wesley, 1999]

... Proceso dirigido por los Casos de Uso

Page 37: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

... Proceso dirigido por los Casos de Uso

Page 38: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

El ciclo de vida iterativo se basa en la evolución de prototipos ejecutables que se muestran a los usuarios y clientes

En el ciclo de vida iterativo en cada iteración se reproduce el ciclo de vida en cascada a menor escala

Los objetivos de una iteración se establecen en función de la evaluación de las iteraciones precedentes

Proceso Iterativo e Incremental

Page 39: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Análisis

Diseño

Codific.

Pruebas eIntegración

n veces

... Proceso Iterativo e Incremental

Las actividades se encadenan en una mini-cascada con un alcance limitado por los objetivos de la iteración

Page 40: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

... Proceso Iterativo e Incremental

Cada iteración comprende: Planificar la iteración (estudio de riesgos) Análisis de los Casos de Uso y escenarios Diseño de opciones arquitectónicas Codificación y pruebas. La integración del nuevo

código con el hecho en iteraciones anteriores se hace gradualmente durante la construcción

Evaluación de la entrega de ejecutable (evaluación del prototipo en función de las pruebas y de los criterios definidos)

Preparación de la entrega (documentación e instalación del prototipo)

Page 41: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

EnfoqueCascada

EnfoqueIterativo eIncremental

Proceso Iterativo e Incremental

Page 42: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Grado de Finalización de Artefactos

... Proceso Iterativo e Incremental

Page 43: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Proceso Centrado en la Arquitectura

La arquitectura de un sistema es la organización o estructura de sus partes más relevantes

Un arquitectura ejecutable es una implementación parcial del sistema, construida para demostrar algunas funciones y propiedades

RUP establece refinamientos sucesivos de una arquitectura ejecutable, construida como un prototipo evolutivo

Architecture

Inception Elaboration Construction Transition

Page 44: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Fases del Ciclo de Vida

El ciclo de vida consiste en una serie de ciclos, cada uno de los cuales produce una nueva versión del producto

Cada ciclo está compuesto por fases y cada una de estas fases está compuesta por un número de iteraciones

Las fases son: Inicio o Estudio de oportunidad Elaboración Construcción Transición

Page 45: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

...Fases del Ciclo de Vida

Inicio o Estudio de oportunidad (inception) Define el ámbito y objetivos del proyecto Se define la funcionalidad y capacidades

del producto

Elaboración Tanto la funcionalidad como el dominio

del problema se estudian en profundidad Se define una arquitectura básica Se planifica el proyecto considerando

recursos disponibles

Page 46: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

...Fases del Ciclo de Vida

Construcción El producto se desarrolla a través de iteraciones

donde cada iteración involucra tareas de análisis, diseño e implementación

Las fases de estudio y análisis sólo dieron una arquitectura básica que es aquí refinada de manera incremental conforme se construye (se permiten cambios en la estructura)

Gran parte del trabajo es programación y pruebas Se documenta tanto el sistema construido como el

manejo del mismo Esta fase proporciona un producto construido junto

con la documentación

Page 47: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

...Fases del Ciclo de Vida

Transición Se libera el producto y se entrega al usuario

para un uso real Se incluyen tareas de marketing,

empaquetado atractivo, instalación, configuración, entrenamiento, soporte, mantenimiento, etc.

Los manuales de usuario se completan y refinan con la información anterior

Estas tareas se realizan también en iteraciones

Page 48: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

15%

10%

15%

30%

15%

P re lim ina ry

Ite ra tion(s)ite r.

# 1

ite r.

# 2

ite r.

# n

ite r.

# n+ 1

ite r.

# n+2

ite r.

# m

ite r.

#m +1

Inception Elaboration Construction Transition

Una iteración en lafase de elaboración

Requisitos

Diseño

Implementación

Pruebas

Análisis

Esfuerzo respecto de las Workflows

Page 49: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

P re lim ina ry

Ite ra tion(s)ite r.

# 1

ite r.

# 2

ite r.

# n

ite r.

# n+ 1

ite r.

# n+2

ite r.

# m

ite r.

#m +1

Inception Elaboration Construction Transition

Una iteración en lafase de elaboración

Requisitos

Diseño

Implementación

Pruebas

Análisis

Esfuerzo: 5% 20% 65% 10%Duración: 10% 30% 50% 10%

...Esfuerzo respecto de las Fases

Page 50: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Dos lecciones importantes

El tiempo es independiente del contexto. Ahorrar una semana la comienzo de un proyecto es tan bueno como ahorrarla al final. Una semana es una semana.

Es mucho más fácil ahorrar tiempo al inicio del proyecto (cuando los entregables son menos claros).

Conclusión: Pronto hay que tener claro el proyecto del ramo.

Page 51: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Idea relacionada: Patrones de Diseño

Es una solución a un problema general de diseño. Tiene la forma de un conjunto de clases que

interactúan. Las clases requieren personalización al caso

específico (partes en blanco)

Page 52: Ingeniería de Software Agustín J. González Elo329: Diseño y Programación Orientados a Objeto Tomado de: uml cs169

Ejemplo: Patrón Observador

Modelo, vista, controlador

Vista

Modelo

Controlador