Diseño

20
DISEÑO-1 Diseño de software Introducción a la ingeniería del software y metodologías de diseño Autor: Cesar Ramos Fecha: Noviembre 2009

description

Orientado a objeto

Transcript of Diseño

Page 1: Diseño

DISEÑO-1

Diseño de software

Introducción a la ingeniería del software y metodologías de diseño

Autor: Cesar Ramos Fecha: Noviembre 2009

Page 2: Diseño

Introducción al diseño de software

DISEÑO-2

Contenido Conceptos básicos de Ingeniería de Software

Proceso de desarrollo. Actividades Conceptos básicos de orientación a objetos

Abstracciones. Orientación a objetos Metodologías de diseño

Diseño basado en abstracciones. Diseño orientado a objetos

Metodología: Booch (Booch), Rumbaugh (OMT), Jacobson (OOSE), Coad-Yourdon (OOA/OOD)

Casos de estudio

Page 3: Diseño

Introducción al diseño de software

DISEÑO-3

Proceso de desarrollo de software Actividades (ciclo) de desarrollo

Análisis

Diseño

Codificación

Integración

Mantenimiento

Ciclo de vida en cascada

¡OBSOLETO!

Page 4: Diseño

Introducción al diseño de software

DISEÑO-4

Desarrollo evolutivo de software Inconvenientes del modelo en cascada

Rígido, es muy costoso rectificar La documentación inicial suele quedar obsoleta

Modelos de desarrollo evolutivo Ciclo de vida espiral Uso de prototipos Programación extrema (Extreme Programming) Desarrollo ágil

Cambia el proceso, pero no las actividades

Page 5: Diseño

Introducción al diseño de software

DISEÑO-5

Análisis Entrada

Conocimiento del dominio de la aplicación, actividades de los usuarios, mercado, etc.

Actividades Identificar las necesidades del usuario Análisis de viabilidad Determinar los requisitos de la aplicación

Salida Documento de requisitos del software

Page 6: Diseño

Introducción al diseño de software

DISEÑO-6

Diseño Entrada

Documento de requisitos del software Actividades

Establecer una(s) estrategia(s) de solución Análisis de alternativas. Formalizar la solución Descomponer y organizar la aplicación Fijar descripciones de cada módulo

Salida Documento de diseño del software

Page 7: Diseño

Introducción al diseño de software

DISEÑO-7

Codificación Entrada

Documento de diseño del software Actividades

Creación del código fuente Pruebas de unidades

Salida Código de módulos, probado

Page 8: Diseño

Introducción al diseño de software

DISEÑO-8

Integración. Validación Entrada

Código de módulos, probado Documento de requisitos del software (validación)

Actividades Pruebas de integración Pruebas de validación

Salida Aplicación completa, lista para usar

Page 9: Diseño

Introducción al diseño de software

DISEÑO-9

Análisis

Proyecto de la asignatura Actividades a desarrollar

Diseño

Codificación

Integración

Mantenimiento

Pruebas de integración

Diseño modular

Codificación y pruebas de unidades

Page 10: Diseño

Introducción al diseño de software

DISEÑO-10

Abstracciones Abstracciones

Implementan determinados servicios, ocultando los detalles. Se usan conociendo su interfaz

Abstracciones funcionales Funciones y acciones Realizan una operación

Tipos abstractos de datos Agrupan un tipo de datos con sus operaciones Ocultan la representación de los datos

Page 11: Diseño

Introducción al diseño de software

DISEÑO-11

Clases y objetos Clases

Definen un tipo de objetos y sus operaciones Coinciden en esencia con tipos abstractos de datos La clase oculta los detalles de implementación Atributos: contenido de información de los objetos Métodos: operaciones sobre los objetos Mensajes: invocación de las operaciones

Objetos Datos de una determinada clase

Page 12: Diseño

Introducción al diseño de software

DISEÑO-12

Herencia Concepto: especialización

Define una clase particular (subclase o clase hija) a partir de otra clase general (superclase o clase padre)

La subclase hereda los atributos y métodos de la superclase, y puede tener otros nuevos

También se pueden redefinir métodos Ejemplo: fecha => fecha_y_hora

Subclases como subtipos: sustitución Imprimir_Calendario( fecha ) Imprimir_Calendario( fecha_y_hora )

Page 13: Diseño

Introducción al diseño de software

DISEÑO-13

Diseño orientado a objetos Descomposición y organización en partes

Partes = clases o abstracciones Organización: estructura del conjunto

Relaciones entre clases Agregación: objetos que contienen otros objetos Uso: clases que utilizan otras clases Herencia: clases especializadas Otras relaciones: modelo de datos.

Ejemplo: paciente padece enfermedad

Page 14: Diseño

Introducción al diseño de software

DISEÑO-14

Diagramas de clases

Clase

Atributos

MétodosHerencia

Uso

Agregación

Page 15: Diseño

Introducción al diseño de software

DISEÑO-15

Descomposición modular Módulo: agrupación de elementos

Clases, tipos, constantes, objetos, etc. Acoplamiento

Ligaduras o interferencias entre módulos Deseable bajo acoplamiento (independencia) Ejemplo: No usar variables globales por su nombre

Cohesión Relación entre los elementos de un módulo Deseable alta cohesión Ejemplo: Módulos que sean clases o TADs

Page 16: Diseño

Introducción al diseño de software

DISEÑO-16

Diagramas modulares

Dibujar

Curva_C

Pluma

Papel

Uso

Page 17: Diseño

Introducción al diseño de software

DISEÑO-17

Diagramas modulares

Papel

- Crear- PonerEnBlanco- MarcarHorizontal- MarcarVertical- Imprimir

Pluma

- Crear- Poner- Avanzar- GirarDerecha- GirarIzquierda

Curva_C

Dibujar

Page 18: Diseño

Introducción al diseño de software

DISEÑO-18

Metodología de diseño

Evaluar y comprender la especificación Idear una estrategia de solución, informal Formalizar la estrategia Validar el modelo: escenarios, etc. ¿Hay elementos complejos? Iterar Diseño detallado

Page 19: Diseño

Introducción al diseño de software

DISEÑO-19

Metodología de diseño Formalizar la estrategia

Identificación de entidades (clases, métodos, ...) Agrupar métodos en clases Identificar y asignar responsabilidades Identificar relaciones entre clases Refinar las clases

Diseño detallado Definir atributos, argumentos de las operaciones, ... Codificar interfaces (código Ada, C++, Java, ...)

Page 20: Diseño

Introducción al diseño de software

DISEÑO-20

Reutilización Componentes

Librerías, genéricos, etc. Esquemas de arquitectura (Frameworks)

Módulos fijos, ya definidos Módulos específicos, a crear en cada caso

Patrones de diseño Esquemas conocidos (no reinventar la rueda) E.Gamma, R.Helm, R.Johnson, J.Vlissides: Design

Patterns: ... - (“la banda de los cuatro”) Ejemplo: Modelo-Vista-Controlador (MVC)