You are on page 1of 20

Diseño de software

Introducción a la ingeniería del software y


metodologías de diseño
Autor: Manuel Collado Fecha: Febrero 2003

DISEÑO-1
Introducción al diseño de software
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
DISEÑO-2
Introducción al diseño de software
Proceso de desarrollo de software
 Actividades (ciclo) de desarrollo

Análisis Ciclo de vida en cascada


¡OBSOLETO!
Diseño

Codificación

Integración

Mantenimiento

DISEÑO-3
Introducción al diseño de software
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
DISEÑO-4
Introducción al diseño de software
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

DISEÑO-5
Introducción al diseño de software
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
DISEÑO-6
Introducción al diseño de software
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

DISEÑO-7
Introducción al diseño de software
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

DISEÑO-8
Introducción al diseño de software
Proyecto de la asignatura
 Actividades a desarrollar
Diseño
Análisis modular

Codificación y
Diseño pruebas de unidades

Pruebas de
Codificación
integración

Integración

Mantenimiento

DISEÑO-9
Introducción al diseño de software
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

DISEÑO-10
Introducción al diseño de software
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

DISEÑO-11
Introducción al diseño de software
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 )
DISEÑO-12
Introducción al diseño de software
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

DISEÑO-13
Introducción al diseño de software
Diagramas de clases
Clase
Atributos

Métodos
Herencia
Agregación

Uso

DISEÑO-14
Introducción al diseño de software
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
DISEÑO-15
Introducción al diseño de software
Diagramas modulares

Dibujar

Uso
Curva_C

Pluma

Papel

DISEÑO-16
Introducción al diseño de software
Diagramas modulares
Dibujar

Curva_C

Pluma
- Crear
- Poner
- Avanzar
- GirarDerecha
- GirarIzquierda
Papel
- Crear
- PonerEnBlanco
- MarcarHorizontal
- MarcarVertical
- Imprimir
DISEÑO-17
Introducción al diseño de software
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

DISEÑO-18
Introducción al diseño de software
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, ...)

DISEÑO-19
Introducción al diseño de software
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)
DISEÑO-20

You might also like