Diseño
-
Upload
cesarramoschundokwan -
Category
Documents
-
view
1.812 -
download
3
description
Transcript of 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
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
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!
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
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
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
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
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
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
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
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
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 )
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
Introducción al diseño de software
DISEÑO-14
Diagramas de clases
Clase
Atributos
MétodosHerencia
Uso
Agregación
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
Introducción al diseño de software
DISEÑO-16
Diagramas modulares
Dibujar
Curva_C
Pluma
Papel
Uso
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
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
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, ...)
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)