You are on page 1of 42

Ingeniera de software II

Ing. Sebastin Quevedo S. MSc


El diseo de software
El diseo es crucial para el xito de la ingeniera de software
1990, Mitch Kapor, creador de Lotus 1-2-3

Es donde se est con un pie en dos mundos el de la tecnologa y el


de las perso-nas y los propsitos humanos que tratan de unificarse
El diseo de software
Qu es?
El diseo es lo que casi todo ingeniero quiere hacer. Es el lugar en el
que las reglas de la creatividad los requerimientos de los
participantes, las necesidades del negocio y las consideraciones
tcnicas se unen para formular un producto o sistema.
El diseo crea una representacin o modelo del software, pero, a
diferencia del modelo de los requerimientos (que se centra en
describir los datos que se necesitan, la funcin y el comportamiento),
el modelo de diseo proporciona detalles sobre arquitectura del
software, estructuras de datos, interfaces y componentes que se
necesitan para implementar el sistema.
El diseo de software
Quin lo hace?
Ingenieros de software llevan a cabo cada una de las tareas del diseo
El diseo de software
Por qu es importante?
El diseo permite modelar el sistema o producto que se va a construir.
Este modelo se evala respecto de la calidad y su mejora antes de
generar cdigo; despus, se efectan pruebas y se involucra a muchos
usuarios finales.
El diseo es el lugar en el que se establece la calidad del software.
El diseo de software
Cules son los pasos?
El diseo representa al software de varias maneras.
En primer lugar, debe representarse la arquitectura del sistema o
producto.
Despus se modelan las interfaces que conectan al software con los
usuarios finales, con otros sistemas y dispositivos, y con sus propios
componentes constitutivos.
Por ltimo, se disean los componentes del software que se utilizan
para construir el sistema.
El diseo de software
Cul es el producto final?
El trabajo principal que se produce durante el diseo del software es un
modelo de diseo que agrupa las representaciones arquitectnicas,
interfaces en el nivel de componente y despliegue.
El diseo de software
Cmo me aseguro de que lo hice bien?
El modelo de diseo es evaluado por el equipo de software en un
esfuerzo por determinar si contiene errores, inconsistencias u
omisiones, si existen mejores alternativas y si es posible implementar el
modelo dentro de las restricciones, plazo y costo que se hayan
establecido
El diseo de software
EL PROCESO DE DISEO
El diseo de software es un proceso iterativo por medio del cual se
traducen los requerimientos en un plano para construir el software.
Al principio, el plano ilustra una visin holstica del software.
Es decir, el diseo se representa en un nivel alto de abstraccin, en el
que se rastrea directamente el objetivo especfico del sistema y los
requerimientos ms detallados de datos, funcionamiento y
comportamiento.
A medida que tienen lugar las iteraciones del diseo, las mejoras
posteriores conducen a niveles menores de abstraccin.
EL PROCESO DE DISEO
Lineamientos y atributos de la calidad del software

La evolucin del diseo del software


EL PROCESO DE DISEO
Lineamientos y atributos de la calidad del software
1. Debe tener una arquitectura que:
a. se haya creado con el empleo de estilos o patrones arquitectnicos
reconocibles.
b. Est compuesta de componentes con buenas caractersticas de diseo en
forma evolutiva, de modo que faciliten la implementacin y las pruebas.
EL PROCESO DE DISEO
2. Debe ser modular, es decir, el software debe estar dividido de
manera lgica en elementos o subsistemas
3. Debe contener distintas representaciones de datos, arquitectura,
interfaces y componentes.
4. Debe conducir a estructuras de datos apropiadas para las clases que
se van a implementar y que surjan de patrones reconocibles de
datos.
5. Debe llevar a componentes que tengan caractersticas funcionales
independientes
EL PROCESO DE DISEO
6. Debe conducir a interfaces que reduzcan la complejidad de las
conexiones entre los componentes y el ambiente externo
7. Debe obtenerse con el empleo de un mtodo repetible motivado
por la informacin obtenida durante el anlisis de los
requerimientos del software.
8. Debe representarse con una notacin que comunique con eficacia
su significado
EL PROCESO DE DISEO
La evolucin del diseo del software
Conceptos de Diseo

Abstraccin Ocultamiento de informacin


Arquitectura Independencia Funcional
Patrones Refinamiento
Divisin de problemas Aspectos
Modularidad Rediseo
Conceptos de Diseo
Abstraccin
Cuando se considera una solucin modular para cualquier problema, es
posible plantear muchos niveles de abstraccin.
En el ms elevado se enuncia una solucin en trminos gruesos con el
uso del lenguaje del ambiente del problema. En niveles ms bajos de
abstraccin se da la descripcin ms detallada de la solucin.
Conceptos de Diseo
Arquitectura
En su forma ms sencilla, la arquitectura es la estructura de
organizacin de los componentes de un programa (mdulos), la forma
en la que stos interactan y la estructura de datos que utilizan. Sin
embargo, en un sentido ms amplio, los componentes se generalizan
para que representen los elementos de un sistema grande y sus
interacciones
Conceptos de Diseo
Patrones
El objetivo de cada patrn de diseo es proporcionar una descripcin
que permita a un diseador determinar:
1) si el patrn es aplicable al trabajo en cuestin.
2) si puede volverse a usar con lo que se ahorra tiempo de diseo
3) si sirve como gua para desarrollar un patrn distinto en funciones o
estructura.
Conceptos de Diseo
Divisin de problemas
La divisin de problemas es un concepto de diseo que sugiere que
cualquier problema complejo puede manejarse con ms facilidad si se
subdivide en elementos susceptibles de resolverse u optimizarse de
manera independiente
Conceptos de Diseo
Modularidad
La modularidad es la manifestacin ms comn de la divisin de
problemas. El software se divide en componentes con nombres
distintos y abordables por separado, en ocasiones llamados mdulos,
que se integran para satisfacer los requerimientos del problema.
Conceptos de Diseo
Ocultamiento de informacin
El concepto de modularidad lleva a una pregunta fundamental:
Cmo descomponer una solucin de software para obtener el
mejor conjunto de mdulos? El principio del ocultamiento de
informacin sugiere que los mdulos se caractericen por decisiones
de diseo que se oculten (cada una) de las dems
Conceptos de Diseo
Independencia Funcional
La independencia funcional se logra desarrollando mdulos con
funciones miopes que tengan aversin a la interaccin excesiva con
otros mdulos. Dicho de otro modo, debe disearse software de
manera que cada mdulo resuelva un subconjunto especfico de
requerimientos y tenga una interfaz sencilla cuando se vea desde otras
partes de la estructura del programa.
Conceptos de Diseo
Aspectos
Un aspecto es una representacin de una preocupacin de
interferencia entre mdulos
DISEO DE LA ARQUITECTURA
Qu es?
El diseo arquitectnico representa la estructura de los datos y de los
componentes del programa que se requieren para construir un sistema
basado en computadora.
Considera el estilo de arquitectura que adoptar el sistema, la estructura y
las propiedades de los componentes que lo constituyen y las interrelaciones
que ocurren entre sus componentes arquitectnicos

La arquitectura de un sistema es un marco general que describe su forma y


estructura: sus componentes y la manera en la que se ajustan entre s.
Jerrold Grochow
DISEO DE LA ARQUITECTURA
Quin lo hace?
Aunque es un ingeniero de software quien puede disear tanto los
datos como la arquitectura, es frecuente que si deben construirse
sistemas grandes y complejos, el trabajo lo realicen especialistas.
El diseador de una base de datos o data warehouse crea la
arquitectura de los datos para un sistema.
El arquitecto del sistema selecciona un estilo arquitectnico
apropiado a partir de los requerimientos obtenidos durante el anlisis
de los datos.
DISEO DE LA ARQUITECTURA
Por qu es importante?
El lector no intentara construir una casa sin un plano, o s? Tampoco
comenzara los planos con el dibujo de la plomera del lugar.
Antes de preocuparse por los detalles, necesitara tener el panorama
general: la casa en s. Eso es lo que hace el diseo arquitectnico, da el
panorama y asegura que sea el correcto.
DISEO DE LA ARQUITECTURA
Por qu es importante?

Las representaciones de la arquitectura del software permiten la


comunicacin entre todas las partes (participantes) interesadas en el
desarrollo de un sistema basado en computadora.
La arquitectura resalta las primeras decisiones que tendrn un efecto
profundo en todo el trabajo de ingeniera de software siguiente y,
tambin importante, en el xito ltimo del sistema como entidad
operacional.
La arquitectura constituye un modelo relativamente pequeo y
asequible por la va intelectual sobre cmo est estructurado el
sistema y la forma en la que sus componentes trabajan juntos
DISEO DE LA ARQUITECTURA
Cules son los pasos?
El diseo de la arquitectura comienza con el diseo de los datos y
contina con la obtencin de una o ms representaciones de la
estructura arquitectnica del sistema.
Se analizan alternativas de estilos o patrones arquitectnicos para
llegar a la estructura ms adecuada para los requerimientos del usuario
y para los atributos de calidad.
Una vez seleccionada la alternativa, se elabora la arquitectura con el
empleo de un mtodo de diseo.
DISEO DE LA ARQUITECTURA
Cul es el producto final?
Durante el diseo arquitectnico se crea un modelo de arquitectura
que incluye la arquitectura de los datos y la estructura del programa.
Adems, se describen las propiedades y relaciones (interacciones)
que hay entre los componentes
DISEO DE LA ARQUITECTURA
Gneros Arquitectnicos
DISEO DE LA ARQUITECTURA
Gneros Arquitectnicos
DISEO DE LA ARQUITECTURA
Desde el punto de vista del diseo arquitectnico, cada gnero
representa un desafo nico.
Por ejemplo, considere la arquitectura del software de un sistema de
juego.
Esta clase de sistemas, en ocasiones llamados aplicaciones interactivas
de inmersin, requieren el cmputo de algoritmos intensivos, grficas
avanzadas en computadora, fuentes de datos continuas en
multimedios, interactividad en tiempo real a travs de dispositivos de
entrada convencionales y no convencionales, y otras preocupaciones
especializadas.
DISEO DE LA ARQUITECTURA

La ASI (Arquitectura de Software de Inmerpresencia) es un modelo de


arquitectura de software para disear, analizar e implementar
aplicaciones que realizan un procesamiento distribuido, asncrono y
paralelo de flujos de datos generales. El objetivo de la ASI es proveer
un marco universal para la implementacin distribuida de algoritmos y
su fcil integracin en sistemas complejos
DISEO DE LA ARQUITECTURA ------- ESTILOS ARQUITECTNICOS
ESTILOS ARQUITECTNICOS
Cuando un constructor usa la frase vestbulo central colonial para
describir una casa, la mayor parte de personas familiarizadas con
viviendas en Estados Unidos se har una imagen general de ella y de
cul es su probable distribucin. El constructor us un estilo
arquitectnico como mecanismo descriptivo para diferenciar la casa de
otros estilos.

El estilo arquitectnico tambin es una plantilla para la


construccin
DISEO DE LA ARQUITECTURA ------- ESTILOS ARQUITECTNICOS
El software construido para sistemas basados en computadora tambin
tiene uno de muchos estilos arquitectnicos.
Cada estilo describe una categora de sistemas que incluye:
1. Un con-junto de componentes (como una base de datos o mdulos
de cmputo) que realizan una funcin requerida por el sistema
2. Un conjunto de conectores que permiten la comunicacin,
coordinacin y cooperacin entre los componentes
3. Restricciones que definen cmo se integran los componentes para
formar el sistema
4. modelos semnticos que permiten que un diseador entienda las
propiedades generales del sistema al analizar las propiedades
conocidas de sus partes constituyentes
DISEO DE LA ARQUITECTURA ------- ESTILOS ARQUITECTNICOS

Arquitecturas centradas en los datos.


Arquitecturas de flujo de datos.
Arquitecturas de llamar y regresar.
Arquitecturas orientadas a objetos.
Arquitecturas en capas.
DISEO DE LA ARQUITECTURA ------- ESTILOS ARQUITECTNICOS
Arquitecturas centradas en los datos.
En el centro de esta arquitectura se halla un almacenamiento de datos
(como un archivo o base de datos) al que acceden con frecuencia otros
componentes que actualizan, agregan, eliminan o modifican los datos
de cierto modo dentro del almacenamiento.
DISEO DE LA ARQUITECTURA ------- ESTILOS ARQUITECTNICOS
Arquitecturas de flujo de datos.
Esta arquitectura se aplica cuando datos de entrada van a
transformarse en datos de salida a travs de una serie de componentes
computacionales o manipuladores.
DISEO DE LA ARQUITECTURA ------- ESTILOS ARQUITECTNICOS
Arquitecturas de llamar y regresar.
Este estilo arquitectnico permite obtener una estructura de programa
que es relativamente fcil de modificar y escalar. Dentro de esta
categora existen varios sub estilos :
Arquitecturas de programa principal/subprograma. Esta estructura
clsica de programa descompone una funcin en una jerarqua de
control en la que un programa principal invoca cierto nmero de
componentes de programa que a su vez invocan a otros.
DISEO DE LA ARQUITECTURA ------- ESTILOS ARQUITECTNICOS
Arquitecturas orientadas a objetos.
Los componentes de un sistema incluyen datos y las operaciones que
deben aplicarse para manipularlos. La comunicacin y coordinacin
entre los componentes se consigue mediante la transmisin de
mensajes.
DISEO DE LA ARQUITECTURA
Arquitecturas en capas

You might also like