Вы находитесь на странице: 1из 31

Ingeniera de Software

3. Diseo del Software


Ingeniera de Software 3. Diseo del Software

Procesos del Diseo de Software


Ingeniera de Software 3. Diseo del Software

Fundamentos para el Diseo de Software

Diseo de Software
Fase que consta de actividades que, a partir de la
especificacin de requerimientos, brindan los elementos
necesarios para realizar la construccin de software.

Proceso del Diseo de Software

Diseo Arquitectnico
Algunas veces llamado el diseo de alto nivel): describir las
estructura y organizacin del software de alto nivel e identificar
los componentes que lo forman.

Diseo Detallado
El diseo detallado se describe el comportamiento especfico de
estos componentes.
Ingeniera de Software 3. Diseo del Software

Conceptos bsicos para el Diseo de Software


Abstraccin

Acoplamiento y Cohesin

La descomposicin y la modularizacin.

Encapsulacin/Ocultar Informacin

Separacin de la interfaz y la aplicacin

Suficiencia, integridad y primitivismo.


Ingeniera de Software 3. Diseo del Software

Conceptos bsicos para el Diseo de Software

Concurrencia

Control y manejo de Eventos

Distribucin de Componentes

Error y Gestin de Excepciones, Tolerancia a Fallos


Ingeniera de Software 3. Diseo del Software

Estructura y Arquitectura de Software

Arquitectura de Software
Descripcin de los subsistemas y componentes de un
sistema de software y las relaciones que existen entre
ellos.

Realiza decisiones significativas sobre:


La organizacin del sistema
Seleccin de elementos estructurales y sus interfaces
El Comportamiento, las colaboraciones entre esos
componentes
Estructuras Arquitectnicas y Puntos de Vista.
Ingeniera de Software 3. Diseo del Software

Estructura y Arquitectura de Software


Puntos de Vista de Arquitectura de Software

La vista de casos de uso


La vista de diseo
La vista de procesos
La Vista de implementacin
La vista de despliegue

Tres bsicas:
La visin esttica

La visin funcional

La visin dinmica
Ingeniera de Software 3. Diseo del Software

Estructura y Arquitectura de Software


Principales estilos de Arquitectura de Software

Estructura General
Capas, tuberas y filtros, repositorio compartido
(pizarra)
Sistemas Distribuidos
Cliente-servidor, tres capas, proxy, SOA, middleware,
peer to peer (P2P)
Sistemas Interactivos
MVC (Modelo-Vista-Controlador), PAC (Presentacin-
Abstraccin-Control)
Sistemas Adaptables
Micro-ncleo, reflexin
Ingeniera de Software 3. Diseo del Software

Estructura y Arquitectura de Software

Estructura General - Arquitectura en Capas


Organiza el sistema en un conjunto de capas, cada una
de las cuales provee una serie de servicios a las capas
superiores usando los de las capas inferiores.
Ingeniera de Software 3. Diseo del Software

Estructura y Arquitectura de Software

Estructura General - Arquitectura de Tubera y Filtros


Conecta componentes computacionales (filtros) a travs
de conectores (pipes), de modo que los datos que se
transportan a travs de las tuberas entre los filtros,
transformando gradualmente las entradas en salidas.
Ingeniera de Software 3. Diseo del Software

Estructura y Arquitectura de Software


Estructura General - Pizarra o Repositorio Compartido
(Blackboard)
Los datos comunes a los subsistemas se almacenan en una
base de datos central o repositorio. Se emplea cuando se
comparten muchos datos.
Ingeniera de Software 3. Diseo del Software

Estructura y Arquitectura de Software


Sistemas Distribuidos
Cliente-Servidor Modelo de los sistemas conocidos como

aplicaciones de escritorio; es un modelo donde el procesamiento


de la informacin e incluso el almacenamiento de los datos se
lleva a cabo en un servidor y las computadoras clientes tienen
acceso a ellos mediante la red (local o global).
Tres capas Cada capa controla las funciones bsicas de la

Interfaz del usuario, Reglas de Negocio y Acceso a Datos;


pueden estar en una misma computadora o no, incluso ser
componentes programados en diferentes lenguajes de
programacin.
Proxy El acceso y comunicacin desde y hacia fuera de una
red local e Internet es controlado por un servidor que maneja la
seguridad de dicha informacin.
Ingeniera de Software 3. Diseo del Software

Estructura y Arquitectura de Software


Sistemas Distribuidos
SOA (Services Oriented Architecture) - Un servicio web es una

representacin estndar para algn recurso que puede ser usado


por otros sistemas. Basados en estndares de XML. Entonces,
pueden funcionar en cualquier plataforma y ser escritos en
cualquier lenguaje

Middleware - Es el software que se utiliza para gestionar la


comunicacin y el intercambio de datos entre componentes.

P2P (Peer-to-Peer) - Sistemas descentralizados donde las


operaciones de cmputo pueden ser realizadas en cualquier
nodo de la red.
Ingeniera de Software 3. Diseo del Software

Estructura y Arquitectura de Software


Sistemas Interactivos MVC (Modelo-Vista-Controlador)
Separa los datos y la lgica de negocio de una aplicacin de la
interfaz de usuario y el mdulo encargado de gestionar los
eventos y las comunicaciones.
Ingeniera de Software 3. Diseo del Software

Estructura y Arquitectura de Software


Sistemas Interactivos PAC (Presentacin-Abstraccin-
Control)
Se divide un sistema interactivo en tres tipos de
componentes o capas, destinadas a desarrollar funciones
especficas dentro de la funcionalidad del sistema.
Ingeniera de Software 3. Diseo del Software

Estructura y Arquitectura de Software


Sistemas Adaptables

El patrn del micro-ncleo (microkernel) se aplica a los sistemas


de software que deberan ser capaces de adaptarse a los
cambios en los requerimientos del sistema. Eso separa a un
pequeo ncleo funcional de las funcionalidades extendidas y las
partes especificas de cada cliente.

Un sistema reflexivo abre su implementacin para soportar


adaptaciones, cambios y extensiones de estructura especifica y
comportamientos de aspecto como algunos tipos de estructuras,
mecanismos de llamada de funciones o implementacin de
servicios particulares.
Ingeniera de Software 3. Diseo del Software

Patrones de Diseo de Software


Clases de Patrones (micro-arquitecturas)
Creacionales

Constructor (builder), factora (factory), prototipo (prototype), ente


nico (singleton)
Estructurales

Adaptador (adapter), puente (bridge), compuesto (composite),


decorador (decorator), fachada (facade), peso mosca (flyweight),
delegado (proxy)
De Comportamiento

De rdenes (command), intrprete (interpreter), iterador


(iterator), mediador (mediator), memento, observador (observer),
estado (state), estrategia (strategy), plantilla (template), visitante
(visitor)
Ingeniera de Software 3. Diseo del Software

Patrones de Diseo de Software


Patrones Creacionales

Fbrica abstracta
Builder

Singleton

Prototipo

Factory Method
Ingeniera de Software 3. Diseo del Software

Patrones de Diseo de Software


Patrones de Comportamiento
Cadena de responsabilidad

Command (Orden)

Intrprete

Iterador

Mediador

Memento (Recuerdo)

Observador

Estado

Estrategia

Mtodo plantilla

Visitante
Ingeniera de Software 3. Diseo del Software

Patrones de Diseo de Software


Estructura de un Patrn
Nombre del patrn
Clasificacin del patrn

Intencin

Tambin conocido como

Motivacin

Aplicabilidad

Estructura

Participantes

Colaboraciones

Consecuencias

Implementacin

Cdigo de ejemplo

Usos conocidos

Patrones relacionados
Ingeniera de Software 3. Diseo del Software

Patrones de Diseo de Software

Familias de patrones y frameworks

Framework > estructura conceptual y tecnolgica de soporte


definido (mdulos o artefactos de SW) que puede servir de
base para la organizacin y desarrollo de SW. Incluye
soporte de programas, liberas, etc.

Representa una arquitectura de SW (Spring, Hibernate,


.NET framework).
Ingeniera de Software 3. Diseo del Software

Anlisis y Evaluacin con Calidad en el Diseo


de Software
Mtricas/atributos de calidad orientadas al Diseo

Los atributos internos describen al producto basado en el


producto mismo.
Se miden de manera esttica basados en el tamao,
funcionalidad, complejidad y reusabilidad.

Los atributos externos describen al producto de la manera


cmo funciona en el ambiente. El cliente define
usualmente estos atributos.
La medicin de atributos externos no es tan difundida
como la de los internos.
Ingeniera de Software 3. Diseo del Software

Notacin para el Diseo de Software


Descripciones del Diseo:

Estructurales (estticos), para mostrar los componentes


principales o subsistemas.
De Comportamiento/Proceso (dinmicos), para mostrar la
estructura de procesos del sistema.
De Interfaces, para definir las interfaces de los
subsistemas.
De Relaciones, para mostrar las relaciones entre
subsistemas de forma similar a un DFD.
De Distribucin, para mostrar cmo los subsistemas de
distribuyen entre diversas mquinas.
Ingeniera de Software 3. Diseo del Software

Notacin para el Diseo de Software

Estructuras de Datos - Representacin de la lgica


que existe entre los elementos individuales de
informacin. (arreglo, matriz, rbol, pila, cola, lista,
hashtable)

Tablas de Decisin Condiciones, acciones, reglas.

Pseudocdigo Representacin de mdulos,


funciones bsicas que muestra en lenguaje comn los
ciclos y sentencias que sern codificadas en un
lenguaje de programacin seleccionado para ese fin.
Ingeniera de Software 3. Diseo del Software

Mtodos y Estrategias para el Diseo de SW

Las estrategias generales de diseo de software ms


conocidas son:
Divide y vencers
Refinamiento en pasos sucesivos
Top-down vs bottom-up
Abstraccin de datos y ocultamiento de informacin
Uso de heursticas (descubrimientos)
Uso de patrones
Aproximacin iterativa e incremental
Ingeniera de Software 3. Diseo del Software

Mtodos y Estrategias para el Diseo de SW


Diseo Estructurado

Mtodo clsico de diseo de software basado en:


Identificar las funciones principales, y
Elaborarlas y refinarlas en un estilo top-down.

Diagrama de Flujo de Datos (DFD): Representa el flujo de


datos y las transformaciones que se aplican sobre ellos al
moverse desde la entrada hasta la salida del sistema.
Ingeniera de Software 3. Diseo del Software

Mtodos y Estrategias para el Diseo de SW


Diseo orientado a objetos

Est relacionado con el Anlisis y la Programacin OO


Anlisis OO - Desarrollar un modelo de objetos del dominio de
aplicacin
Diseo OO - Desarrollar un modelo del sistema orientado a objetos que
satisfaga los requisitos.
Programacin OO - Implementar un diseo OO usando un lenguaje de
programacin OO.

Mtodo de Diseo OO :
Definir el contexto y modos de uso del sistema
Disear la arquitectura del sistema
Identificar los objetos principales del sistema
Desarrollar los modelos de diseo
Especificar las interfaces de los objetos
Ingeniera de Software 3. Diseo del Software

Mtodos y Estrategias para el Diseo de SW


Diseo Centrado en los Datos

En estos mtodos las estructuras de datos guan el diseo.


Se diferencian de los estructurados en que el foco son las
estructuras de datos que manipula un programa y no las
funciones que realiza con ellas.

Hay dos pasos principales:


Describir las estructuras de datos de entrada y salida
(Diagramas de estructura de Jackson)
Desarrollar las estructuras de control basadas en dichas
estructuras de datos.
Ingeniera de Software 3. Diseo del Software

Mtodos y Estrategias para el Diseo de SW


Diseo Basado/orientado a Componentes

Un Componente Software es una unidad independiente


con interfaces y dependencias bien definidas, que pueda
ser desarrollada y desplegada de forma independiente.

Principio de Caja Negra


Aborda problemas para proveer, desarrollar e integrar
componentes.
Su finalidad es mejorar la reutilizacin.
Ingeniera de Software 3. Diseo del Software

Herramientas para el Diseo de Software


De Especificacin

Para Presentacin

Para el Desarrollo

Para Ingeniera de Software

Generadores de cdigos

Para Pruebas
Ingeniera de Software 3. Diseo del Software

Diseo de Software