Está en la página 1de 20

Diseo de software

Introduccin a la ingeniera del software y metodologas de diseo


Autor: Manuel Collado Fecha: Febrero 2003
DISEO-1

Introduccin al diseo de software

Contenido


Conceptos bsicos de Ingeniera de Software




Proceso de desarrollo. Actividades Abstracciones. Orientacin a objetos Diseo basado en abstracciones. Diseo orientado a objetos Metodologa: Booch (Booch), Rumbaugh (OMT), Jacobson (OOSE), Coad-Yourdon (OOA/OOD)
DISEO-2

Conceptos bsicos de orientacin a objetos




Metodologas de diseo


Casos de estudio

Introduccin al diseo de software

Proceso de desarrollo de software




Actividades (ciclo) de desarrollo


Anlisis Diseo Codificacin Integracin Mantenimiento
DISEO-3

Ciclo de vida en cascada OBSOLETO!

Introduccin al diseo de software

Desarrollo evolutivo de software




Inconvenientes del modelo en cascada


 

Rgido, es muy costoso rectificar La documentacin inicial suele quedar obsoleta Ciclo de vida espiral Uso de prototipos Programacin extrema (Extreme Programming) Desarrollo gil

Modelos de desarrollo evolutivo


   

Cambia el proceso, pero no las actividades


DISEO-4

Introduccin al diseo de software

Anlisis


Entrada


Conocimiento del dominio de la aplicacin, actividades de los usuarios, mercado, etc. Identificar las necesidades del usuario Anlisis de viabilidad Determinar los requisitos de la aplicacin Documento de requisitos del software
DISEO-5

Actividades
  

Salida


Introduccin al diseo de software

Diseo


Entrada


Documento de requisitos del software Establecer una(s) estrategia(s) de solucin Anlisis de alternativas. Formalizar la solucin Descomponer y organizar la aplicacin Fijar descripciones de cada mdulo Documento de diseo del software
DISEO-6

Actividades
   

Salida


Introduccin al diseo de software

Codificacin


Entrada


Documento de diseo del software Creacin del cdigo fuente Pruebas de unidades Cdigo de mdulos, probado

Actividades
 

Salida


DISEO-7

Introduccin al diseo de software

Integracin. Validacin


Entrada
 

Cdigo de mdulos, probado Documento de requisitos del software (validacin) Pruebas de integracin Pruebas de validacin Aplicacin completa, lista para usar

Actividades
 

Salida


DISEO-8

Introduccin al diseo de software

Proyecto de la asignatura


Actividades a desarrollar
Anlisis Diseo Codificacin Integracin Mantenimiento
DISEO-9

Diseo modular Codificacin y pruebas de unidades Pruebas de integracin

Introduccin al diseo de software

Abstracciones


Abstracciones


Implementan determinados servicios, ocultando los detalles. Se usan conociendo su interfaz Funciones y acciones Realizan una operacin Agrupan un tipo de datos con sus operaciones Ocultan la representacin de los datos
DISEO-10

Abstracciones funcionales
 

Tipos abstractos de datos


 

Introduccin al diseo 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 implementacin Atributos: contenido de informacin de los objetos Mtodos: operaciones sobre los objetos Mensajes: invocacin de las operaciones Datos de una determinada clase
DISEO-11

Objetos


Introduccin al diseo de software

Herencia


Concepto: especializacin


 

Define una clase particular (subclase o clase hija) a partir de otra clase general (superclase o clase padre) La subclase hereda los atributos y mtodos de la superclase, y puede tener otros nuevos Tambin se pueden redefinir mtodos Ejemplo: fecha => fecha_y_hora Imprimir_Calendario( fecha ) Imprimir_Calendario( fecha_y_hora )
DISEO-12

Subclases como subtipos: sustitucin


 

Introduccin al diseo de software

Diseo orientado a objetos




Descomposicin y organizacin en partes


 

Partes = clases o abstracciones Organizacin: estructura del conjunto Agregacin: objetos que contienen otros objetos Uso: clases que utilizan otras clases Herencia: clases especializadas Otras relaciones: modelo de datos. Ejemplo: paciente padece enfermedad
DISEO-13

Relaciones entre clases


   

Introduccin al diseo de software

Diagramas de clases
Clase Atributos Mtodos
Agregacin Uso Herencia

DISEO-14

Introduccin al diseo de software

Descomposicin modular
 

Mdulo: agrupacin de elementos




Clases, tipos, constantes, objetos, etc. Ligaduras o interferencias entre mdulos Deseable bajo acoplamiento (independencia) Ejemplo: No usar variables globales por su nombre Relacin entre los elementos de un mdulo Deseable alta cohesin Ejemplo: Mdulos que sean clases o TADs
DISEO-15

Acoplamiento
  

Cohesin
  

Introduccin al diseo de software

Diagramas modulares
Dibujar
Uso

Curva_C Pluma Papel


DISEO-16

Introduccin al diseo de software

Diagramas modulares
Dibujar Curva_C Pluma
- Crear - Poner - Avanzar - GirarDerecha - GirarIzquierda

Papel
- Crear - PonerEnBlanco - MarcarHorizontal - MarcarVertical - Imprimir

DISEO-17

Introduccin al diseo de software

Metodologa de diseo
Evaluar y comprender la especificacin  Idear una estrategia de solucin, informal  Formalizar la estrategia  Validar el modelo: escenarios, etc.  Hay elementos complejos? p Iterar  Diseo detallado


DISEO-18

Introduccin al diseo de software

Metodologa de diseo


Formalizar la estrategia
    

Identificacin de entidades (clases, mtodos, ...) Agrupar mtodos en clases Identificar y asignar responsabilidades Identificar relaciones entre clases Refinar las clases Definir atributos, argumentos de las operaciones, ... Codificar interfaces (cdigo Ada, C++, Java, ...)
DISEO-19

Diseo detallado
 

Introduccin al diseo de software

Reutilizacin
 

Componentes


Libreras, genricos, etc. Mdulos fijos, ya definidos Mdulos especficos, a crear en cada caso Esquemas conocidos (no reinventar la rueda) E.Gamma, R.Helm, R.Johnson, J.Vlissides: Design Patterns: ... - (la banda de los cuatro)

Esquemas de arquitectura (Frameworks)


 

Patrones de diseo
 

Ejemplo: Modelo-Vista-Controlador (MVC)


DISEO-20

También podría gustarte