Ingeniera de Software Agustn J Gonzlez Elo 329

  • Slides: 52
Download presentation
Ingeniería de Software Agustín J. González Elo 329: Diseño y Programación Orientados a Objeto

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

Definición n (1993) La aplicación mecanismos sistemáticos, disciplinados, y cuantificables para el desarrollo, operación

Definición 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.

Estado del arte en Ing. De Software n n n ¿Es una ciencia rigurosa

Estado del arte en Ing. De Software n n n ¿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. . . n n 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.

Construcción de una casa para “fido” Puede hacerlo una sola persona Requiere: Modelado mínimo

Construcción de una casa para “fido” Puede hacerlo una sola persona Requiere: Modelado mínimo Proceso simple Herramientas simples

Construcción de una casa Construida eficientemente y en un tiempo razonable por un equipo

Construcción de una casa Construida eficientemente y en un tiempo razonable por un equipo Requiere: Modelado Proceso bien definido Herramientas más sofisticadas

Construcción de un rascacielos

Construcción de un rascacielos

Claves en Desarrollo de SI Notación (UML) Calidad: Ej: CMM Herramientas (Ej: Rational Rose)

Claves en Desarrollo de SI Notación (UML) Calidad: Ej: CMM Herramientas (Ej: Rational Rose) Proceso (Metodologías Ej: ITIL, Extreme Programming, RUP: Rational Unified Process)

Abstracción - Modelado Visual (MV) “El modelado captura las partes esenciales del sistema” Orden

Abstracción - Modelado Visual (MV) “El modelado captura las partes esenciales del sistema” Orden Item envío Proceso de Negocios Sistema Computacional

Notación (Visual) - Beneficios Manejar la complejidad Interfaz de Usuario (Visual Basic, Java, .

Notación (Visual) - Beneficios Manejar la complejidad Interfaz de Usuario (Visual Basic, Java, . . ) Lógica del Negocio (C++, Java, . . ) Múltiples Sistemas Servidor de BDs (C++ & SQL, . . ) “Modelar el sistema independientemente del lenguaje de implementación” Componentes Reutilizados Promover la Reutilización

¿Por qué la Orientación a Objetos? n Proximidad de los conceptos de modelado respecto

¿Por qué la Orientación a Objetos? n Proximidad de los conceptos de modelado respecto de las entidades del mundo real n n n Modelado integrado de propiedades estáticas y dinámicas del ámbito del problema n n Mejora la captura y validación de requisitos Acerca el “espacio del problema” y el “espacio de la solución” Facilita construcción, mantenimiento y reutilización Podríamos dar muchas razones pero hay problemas. .

Problemas en OO “. . . Los conceptos básicos de la OO se conocen

Problemas en OO “. . . 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 n n Un objeto contiene datos y operaciones que operan

… Problemas en OO n n Un objeto contiene datos y operaciones que operan sobre los datos, pero. . . Podemos distinguir dos tipos de objetos degenerados: n n n 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

Proceso de Desarrollo de SW

Proceso de Desarrollo de SW

El proceso de desarrollo “Completo” n n Se da en un contexto y dependiendo

El proceso de desarrollo “Completo” n n 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: Sueño Investigación Desarrollo Lanzamiento Soporte Tiempo n Al desarrollo es a lo que normalmente se la da más énfasis en la literatura.

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

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

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

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

¿Qué es un Proceso de Desarrollo de SW? Sueño Investigación Desarrollo Lanzamiento Soporte Tiempo

¿Qué es un Proceso de Desarrollo de SW? Sueño Investigación Desarrollo Lanzamiento Soporte Tiempo n Define Quién debe hacer Qué, Cuándo y Cómo debe hacerlo Requisitos nuevos o modificados Proceso de Desarrollo de Software n Sistema nuevo o modificado No existe un proceso de software universal. Las características de cada proyecto (equipo de desarrollo, recursos, etc. ) exigen que el proceso sea configurable

Planificar y Evaluar Proyectos. . . ¿Podré cumplir con los plazos? n ¿Estaré dentro

Planificar y Evaluar Proyectos. . . ¿Podré cumplir con los plazos? n ¿Estaré dentro de lo presupuestado? n ¿El “cliente” quedará satisfecho? n Las Metodologías pueden ser la ayuda que necesitamos, si podemos usarlas correctamente !!

Procesos, Metodologías

Procesos, Metodologías

¿Qué es una Metodología. . . Las metodologías imponen un proceso disciplinado sobre el

¿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.

Las ágiles más conocidas. . . n n n n XP (Programación Extrema) La

Las ágiles más conocidas. . . n n n n 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.

Metodologías en área TI n Más detalles aquí.

Metodologías en área TI n Más detalles aquí.

Apostando por RUP. . .

Apostando por RUP. . .

Desarrollo de software: Características de RUP. . . Guiado y Manejado por Casos de

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

Principales metodologías en el tiempo Definición de Requerimientos Construcción/Pruebas Análisis & Diseño Modelo Tradicional

Principales metodologías en el tiempo Definición de Requerimientos Construcción/Pruebas Análisis & Diseño Modelo Tradicional de Cascada Implementación y Test Unitarios Integración y test del sistema Operación y mantención Tiempo t Modelo Iterativo Incremental Iteración 1 Iteración 2 R R A&D C P Tiempo Iteración 3 C P P t

RUP Define Fases de Desarrollo. . . Áreas de trabajo (Workflow) Concepción Análisis &

RUP Define Fases de Desarrollo. . . Áreas de trabajo (Workflow) Concepción Análisis & Diseño Construcción Pruebas Distribución Esfuerzo Necesario por Actividad Requerimientos Elaboración Construcción Transición R R A&D A&D C C P P D D Iteración Preliminar Iteración 1 Iteración 2 . . . . Iteración n+1 Tiempo

Importancia de los Hitos en RUP. . . Compromiso de recursos para fase elaboración

Importancia de los Hitos en RUP. . . Compromiso de recursos para fase elaboración Concepción Aceptación del cliente Elaboración Construcción Transición Tiempo Hito Objetivos, visión Hito Arquitectura Hito Capacidad Operacional Liberación Producto

Mejores Prácticas de RUP. . . Desarrolle Iterativamente Administre los Requerimientos Use Arquitectura de

Mejores Prácticas de RUP. . . Desarrolle Iterativamente Administre los Requerimientos Use Arquitectura de Componentes Modele Visualmente Controle los Cambios Verifique Calidad

Un Ejemplo: Comparar con V-Model (Motorola)

Un Ejemplo: Comparar con V-Model (Motorola)

Rational Unified Process (RUP) Rational Unified Process 1998 Rational Objectory Process 1996 -1997 Objectory

Rational Unified Process (RUP) Rational Unified Process 1998 Rational Objectory Process 1996 -1997 Objectory Process 1987 -1995 Enfoque Ericsson • • 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 UML

Otra visión similar con más Actividades

Otra visión similar con más Actividades

Otra visión similar con más Actividades Disciplinas o áreas de trabajo Modelado del Negocio

Otra visión similar con más Actividades Disciplinas o áreas de trabajo Modelado del Negocio Requisitos Análisis y Diseño Primarios Implementación Pruebas Despliegue, distribución Gestión de configuración y cambios Gestión del proyecto Entorno De Apoyo

. . . Elementos en RUP n n Artefactos Es el Resultado parcial o

. . . Elementos en RUP n n 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 § Business Modeling Set § Deployment Set § Requirements Set § Project Management Set § Analysis & Design Set § Configuration & Change Management Set § Implementation Set § Environment Set § Test Set

Características Esenciales de RUP n n n Proceso Dirigido por los Casos de Uso

Características Esenciales de RUP n n n Proceso Dirigido por los Casos de Uso Proceso Iterativo e Incremental Proceso Centrado en la Arquitectura

Proceso dirigido por los Casos de Uso Capturar, definir y validar los casos de

Proceso dirigido por los Casos de Uso Capturar, definir y validar los casos de uso Requisitos Análisis & Diseño Implementación Pruebas Casos de Uso integran el trabajo Realizar los casos de uso Verificar que se satisfacen los casos de uso

. . . Proceso dirigido por los Casos de Uso «trace» Caso de Uso

. . . Proceso dirigido por los Casos de Uso «trace» Caso de Uso «trace» Realización de Análisis Realización de Diseño «trace» Pruebas Unitarias Pruebas Funcionales X Caso de Prueba [The Unified Software Development Process. I. Jacobson, G. Booch and J. Rumbaugh. Addison-Wesley, 1999]

. . . Proceso dirigido por los Casos de Uso

. . . Proceso dirigido por los Casos de Uso

Proceso Iterativo e Incremental § El ciclo de vida iterativo se basa en la

Proceso Iterativo e Incremental § 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 n Las actividades se encadenan en una

. . . Proceso Iterativo e Incremental n Las actividades se encadenan en una minicascada con un alcance limitado por los objetivos de la iteración Análisis Diseño Codific. n veces Pruebas e Integración

. . . Proceso Iterativo e Incremental n Cada iteración comprende: n n n

. . . Proceso Iterativo e Incremental n Cada iteración comprende: n n n 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)

Proceso Iterativo e Incremental Enfoque Cascada Enfoque Iterativo e Incremental

Proceso Iterativo e Incremental Enfoque Cascada Enfoque Iterativo e Incremental

. . . Proceso Iterativo e Incremental Grado de Finalización de Artefactos

. . . Proceso Iterativo e Incremental Grado de Finalización de Artefactos

Proceso Centrado en la Arquitectura n n n La arquitectura de un sistema es

Proceso Centrado en la Arquitectura n n n 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 Inception Elaboration Construction Architecture Transition

Fases del Ciclo de Vida § El ciclo de vida consiste en una serie

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: n Inicio o Estudio de oportunidad n Elaboración n Construcción n Transición

. . . Fases del Ciclo de Vida § Inicio o Estudio de oportunidad

. . . Fases del Ciclo de Vida § Inicio o Estudio de oportunidad (inception) n Define el ámbito y objetivos del proyecto n Se define la funcionalidad y capacidades del producto § Elaboración n Tanto la funcionalidad como el dominio del problema se estudian en profundidad n Se define una arquitectura básica n Se planifica el proyecto considerando recursos disponibles

. . . Fases del Ciclo de Vida n Construcción n n El producto

. . . Fases del Ciclo de Vida n Construcción n 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

. . . Fases del Ciclo de Vida n Transición n n Se libera

. . . Fases del Ciclo de Vida n Transición n 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

Esfuerzo respecto de las Workflows Inception Elaboration Construction Transition 15% Requisitos Una iteración en

Esfuerzo respecto de las Workflows Inception Elaboration Construction Transition 15% Requisitos Una iteración en la fase de elaboración Análisis 10% Diseño 15% 30% Implementación 15% Pruebas 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 +1

. . . Esfuerzo respecto de las Fases Inception Elaboration Construction Transition Requisitos Una

. . . Esfuerzo respecto de las Fases Inception Elaboration Construction Transition Requisitos Una iteración en la fase de elaboración Análisis Diseño Implementación Pruebas P re lim ina ry Ite ra tion (s) Esfuerzo: Duración: 5% 10% ite r. #1 ite r. #2 20% 30% ite r. #n ite r. # n+ 1 65% 50% ite r. # n+2 ite r. #m +1 10%

Dos lecciones importantes n n n El tiempo es independiente del contexto. Ahorrar una

Dos lecciones importantes n n n 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.

Idea relacionada: Patrones de Diseño n n n Es una solución a un problema

Idea relacionada: Patrones de Diseño n n n 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)

Ejemplo: Patrón Observador Vista Controlador Modelo n Modelo, vista, controlador

Ejemplo: Patrón Observador Vista Controlador Modelo n Modelo, vista, controlador