Sie sind auf Seite 1von 48

ARQUITECTURA DE

SOFTWARE
Walter Adrin Gmez Cspedes
Ingeniero de Sistemas
Especialista en Pedagoga Universitaria
Candidato a Mster en Direccin Estratgica en Ingeniera del Software

DESARROLLO DE SISTEMAS DE
SOFTWARE
Software

Requisitos
Funcionales
del Software

Servira para un
Software
monoltico

Los atributos de calidad de Software son esenciales


Software

Arquitectura
de Software

SW de Calidad

LOS REQUISITOS DETERMINAN EL


MODELO
Sistema

Conocimiento

Arquitecto

Requisitos

IMPLICACIONES DE NO SEGUIR UN
PROCESO CONOCIDO DE MODELADO
Arquitectura es una
abstraccin de un sistema

Los sistemas tienen


una estructura

El no desarrollo
de una
arquitectura
explcita
conduce a
inconformidad

Todo sistema tiene


una arquitectura.

El tener una arquitectura, no implica que se


tiene una arquitectura conocida.

CONSECUENCIAS DE LAS DECISIONES DE


AS SOBRE LAS CUALIDADES
La arquitectura es crtica para alcanzar los
atributos de calidad

Dependiendo
de las
decisiones de
Arquitectura, un
sistema alcanza
sus requisitos de
calidad

Las cualidades del producto deben


disearse como parte de la arquitectura

Un cambio en la estructura que mejora una


cualidad suele afectar a otras cualidades

La arquitectura slo puede permitir, no garantizar que


cualquier requisito de calidad se alcance

INFLUENCIA DE LOS INTERESADOS

Gerente
Empresa

Ingeniero de
soporte
Bajos costos
Ocupar personal
Valor Activos

Elementos
atractivos
Terminar rpido
Comparar
competencia

Gerente
Producto

Modificabilidad
Usuario Final
Comportamiento
Seguridad
Confiabilidad
Usabilidad
Arquitecto

Bajos costos
Terminar rpido
Pocos cambios

Cliente

INTERESADOS INVOLUCRADOS
Objetivos de la organizacin y las propiedades del sistema
requeridas por el negocio, raramente se comprenden

Qu debe
tener en
cuenta el
arquitecto de
software?

Los requisitos de
calidad del cliente,
casi nunca se
documentan

Identificar e
involucrar
activamente a los
interesados

- Objetivos que no
se alcanzan.
- Conflicto entre los
interesados.

- Comprender restricciones
reales del sistema.
- Administrar las
expectativas.
- Negociar prioridades del
sistema.
-Tomar decisiones de
compromiso.

ESQUEMA DE PROCESO DE MODELADO


DE AS
Determinar los
Requisitos
Arquitectnicos
Diseo de la
Arquitectura

Validacin

ESQUEMA DE PROCESO DE MODELADO


DE AS
Determinar los
Requisitos
Arquitectnicos

Involucra crear un modelo desde los requerimientos que


guiarn el diseo de la arquitectura basado en los
atributos de calidad esperados.

Diseo de la
Arquitectura

Involucra definir la estructura y las responsabilidades de


los componentes que comprendern la Arquitectura de
Software.

Validacin

Significa probar la arquitectura, tpicamente pasando a


travs del diseo contra los requerimientos actuales y
cualquier posible requerimiento a futuro.

IDENTIFICAR REQUERIMIENTOS
Requisitos
Funcionales

Requisitos de
los interesados

Determinar los
Requisitos
Arquitectnicos

Requisitos de
Arquitectura

Priorizar

Clasificacin de los
requisitos no
funcionales

Identificar
restricciones

REQUERIMIENTOS NO FUNCIONALES
Describen como el software debe comportarse, es decir
como hacer algo, no que debe hacer.
Estn relacionados con los requerimientos funcionales
porque describen la forma que se espera se logren
dichos requerimientos.

En algunos casos tienen restricciones de cmo hacerlo.

Se clasifican de acuerdo al atributo de calidad esperado


del sistema.

EJEMPLO DE REQUERIMIENTOS DE AS

ACTIVIDAD CON EL GRUPO DE


TRABAJO
Como ya se tiene planteado cul es el software que se va a desarrollar
durante el trimestre, el siguiente paso a trabajar en identificar los
requerimientos funcionales y no funcionales, para ello hacer uso de la
siguiente forma para el levantamiento de requerimientos:
Nombre:

Tipo:
Descripcin:

Criterios de Aceptacin:

Crtico: Si/No

DEFINICIONES DE AS
Clements: Vista del sistema que incluye los componentes principales del mismo, la
conducta de esos componentes segn se la percibe desde el resto del sistema y las
formas en que los componentes interactan y se coordinan para alcanzar la misin
del sistema.
IEEE Std 1471-2000: es la organizacin fundamental de un sistema encarnada en sus
componentes, las relaciones entre ellos y el ambiente y los principios que orientan su
diseo y evolucin.

Diseo preliminar o de alto nivel.


Se
ocupa
de

No se
ocupa
de

Organizacin a alto nivel

1. Descripcin y anlisis de estructura.


2. Protocolos de comunicacin.

Aspectos relacionados con


el desarrollo del sistema y
su evolucin.

composicin, reconfiguracin,
reutilizacin,
escalabilidad,
mentenibilidad.

Diseo Detallado, Diseo de algoritmos, diseo de estructura de


datos.

MODELOS DE AS
Modelos estructurales: AS est compuesta por componentes, conexiones entre ellos y
(usualmente) otros aspectos (configuracin, estilo, restricciones, semntica, anlisis,
propiedades, racionalizaciones, requerimientos, necesidades de los participantes).
Modelos de framework: Son similares a la vista estructural, pero su nfasis primario radica
en la estructura coherente del sistema completo, en vez de concentrarse en su
composicin. Los modelos de framework a menudo se refieren a dominios o clases de
problemas especficos.

Modelos dinmicos: Enfatizan la cualidad conductual de los sistemas. Los cambios en la


configuracin del sistema, o a la dinmica involucrada en el progreso de la
computacin, tales como valores cambiantes de datos.
Modelos de proceso: Se concentran en la construccin de la arquitectura, y en los pasos
o procesos involucrados en esa construccin. En esta perspectiva, la arquitectura es el
resultado de seguir un argumento (script) de proceso.
Modelos funcionales: Una minora considera la arquitectura como un conjunto de
componentes funcionales, organizados en capas que proporcionan servicios hacia
arriba. Es tal vez til pensar en esta visin como un framework particular.

CONCEPTOS FUNDAMENTALES
Estilos

Concepto descriptivo que define una forma de articulacin u


organizacin arquitectnica. El conjunto de los estilos cataloga las
formas bsicas posibles de estructuras de software. Conjugan elementos,
conectores, configuraciones y restricciones.

ADL

Lenguaje de Descripcin Arquitectnica. permiten modelar una


arquitectura mucho antes que se lleve a cabo la programacin de las
aplicaciones que la componen.

Frame
works y
Vistas

Es una estructura conceptual y tecnolgica de soporte definido, normalmente


con artefactos o mdulos de software concretos, que puede servir de base
para la organizacin y desarrollo de software.

Abstraccin

Extraer las propiedades esenciales, o identificar los aspectos importantes,


o examinar selectivamente ciertos aspectos de un problema,
posponiendo o ignorando los detalles menos sustanciales, distractivos o
irrelevantes.

ARQUITECTURA O DISEO
1. Arquitectura y Diseo son lo mismo

2. Arquitectura se encuentra en un nivel de abstraccin


por encima del diseo.
Diferencias
entre
Arquitectura
y Diseo

3. Arquitectura es algo nuevo y en alguna medida


diferente del diseo (pero de qu manera y en qu
medida se dejan sin especificar).

4. Shaw y Garlan: AS es
el primer paso en la
produccin
de
un
diseo de software.

a. Arquitectura.
b. Diseo del cdigo.
c. Diseo de ejecutable.

ARQUITECTURA O DISEO
Arquitectura

Asocia las capacidades del sistema especificadas en el


requerimiento con los componentes del sistema que habrn de
implementarla.
La
descripcin
arquitectnica
incluye
componentes y conectores (en trminos de estilos) y la definicin
de operadores que crean sistemas a partir de subsistemas o, en
otros trminos, componen estilos complejos a partir de estilos
simples.

Diseo del
cdigo

Comprende algoritmos y estructuras de datos; los


componentes son aqu primitivas del lenguaje de
programacin, tales como nmeros, caracteres, punteros
e hilos de control. Tambin hay operadores primitivos.

Diseo
Ejecutable

Remite al diseo de cdigo a un nivel de detalle todava


ms bajo y trata cuestiones tales como la asignacin de
memoria, los formatos de datos, etctera.

RELEVANCIA DE LA AS
Comunicacin
Mutua

Decisiones
tempranas de diseo

Participantes usan
como base para

Tienen un peso

Entendimiento
mutuo, formar
consenso y
comunicarse
entre si.
Permite

Exponer
restricciones de
alto nivel sobre
el diseo y
justificar las
decisiones
arquitectnicas

Respecto al
desarrollo
restante del
sistema, su
servicio en el
despliegue y su
vida de
mantenimiento.

Restricciones
constructivas
Proporciona

Blueprints
parciales para
el desarrollo

Indicando

Componentes y
dependencias
entre ellos.

Abstraccin
transferible
Encarna

Modelo
relativamente
pequeo de la
forma en que
un sistema se
estructura y sus
componenten
se entienden
entre si.

RELEVANCIA DE LA AS
Evolucin

Anlisis
Aporta

La AS puede

Exponer las
dimensiones a
lo largo de las
cuales puede
esperarse que
evolucione el
sistema.

Nuevas
oportunidades
para anlisis
Incluyendo

Verificaciones de
consistencia,
conformidad con las
restricciones impuestas
por un estilo,
conformidad con
atributos de calidad,
anlisis de
dependencia, anlisis
de dominio y negocios.

Administracin
AS proporciona

Logros clave
para el
desarrollo de
proyectos
exitosos.

ESTILOS ARQUITECTNICOS
Un estilo arquitectnico define una familia de sistemas (cierto tipo de sistemas) en trminos de
patrones estructurales, de control, de comunicacin, etc.

Estilos
indican
Los tipos de componentes y
conectores involucrados.

Patrones y restricciones de interconexin


o composicin entre ellos.
Estilos se les
asocian

Serie de propiedades que lo caracterizan,


determinando sus ventajas e inconvenientes

Condiciona la eleccin
de uno u otro estilo

CLASIFICACIN DE LOS ESTILOS


Sistemas basados en
flujos de datos

- Pipes and Filters (Tuberas y Filtros).


- Secuencial (Batch).

Sistemas llamada y
retorno

- Sistemas principal/subrutinas.
- Sistemas OO.
- Capas jerrquicas

Mquinas Virtuales

- Intrpretes.
- Sistemas basados en el conocimiento.

Sistemas centrados
en datos

- Bases de datos.
- Sistemas de Hipertexto.
- Sistemas de pizarra.

DESCRIPCIN DE ALGUNOS ESTILOS


Estilo de flujo de datos: enfatiza la reutilizacin y la modificabilidad. Es apropiada
para sistemas que implementan transformaciones de datos en pasos sucesivos.
Una tubera (pipeline) es una popular arquitectura que conecta
componentes computacionales (filtros) a travs de conectores (pipes), de
modo que las instrucciones se ejecutan a la manera de un flujo.
Tuberas
y Filtros

Cada componente tiene un conjunto de entradas y uno de salidas.


Cada componente lee las entradas y las transforma en salidas.
Los filtros deben ser independientes, no comparten estado con otros.
Los filtros realizan la labor independientemente del flujo de entrada.

Ventajas:
1. Permite entender el sistema global en trminos de sus componentes.
2. Soporta la reutilizacin (Son independientes de sus vecinos).
3. Facilidad de mantenimiento y de diagnstico.
Desventajas:
1. No es aconsejado para cuando se necesita interactividad.
2. Problemas de performance ya que los datos se transmiten en forma completa entre filtros.
3. Facilidad de mantenimiento y de diagnstico.

SE RECOMIENDA PARA
Sistemas con poca o nula
interaccin con el usuario cuyo
flujo de datos se entienda o
perciba como continuo.

Procesamiento de seales .

Compiladores.

Para
Desarrollos

Aplicarlo para el clculo, algoritmos


de bsqueda y modelos de
simulacin cientfica.

Procesamiento de cadenas.

Procesamiento
imgenes o sonido.

de

ARQUITECTURA DE TUBERAS

Filtros o componentes
(Transformacin de los
datos).

Tuberas
datos).

(Flujo

de

EJEMPLO DE TUBERAS
Problema: Se desea implementar un software que sirva como traductor de algunos
idiomas.
Nivel 0:

Traducir al ingls

Escribir ingls

Traducir al Francs

Escribir Francs

Leer

Nivel 1: Vista conceptual


Tabla de
Smbolos

Analizador
Lexicogrfico

Analizador
Sintctico/Parser

Analizador
Semntico

Generador de
Cdigo Intermedio

Traduccin

EJEMPLO DE TUBERAS
Nivel 2: Vista lgica
Filtro
Herramienta
Diccionario

Interfaz de
usuario

Filtro

Filtro
Java, .NET,
otro

Herramienta
Para gestin
contenidos

EJEMPLO DE TUBERAS
Nivel 3: Vista lgica

Parser

Intrprete

Aparse()
call Alexo
Lexicogrfico
Lexo()
call getDato
Input
getDato()

getDato()

call Asemantico

Leer pipe
tubo SW

Analizador
Semntico

call codgen

Leer
Escribir

Generador
de Cdigo
writeCodeByte()

Escribir pipe

EJEMPLO DE TUBERAS
Nivel 4: Flujo de datos

Fuente de
datos
push

Lexicogrfico
push

Parser
push

Receptor
de Datos

datos
escribir

f1
datos

escribir

f2
datos
escribir

NOTA: La accin se inicia empujando los datos hacia el siguiente filtro

DESCRIPCIN DE ALGUNOS ESTILOS


Estilo llamada/retorno: enfatiza la modificabilidad y la escalabilidad. Son los estilos
ms generalizados en sistemas en gran escala. Miembros de la familia son las
arquitecturas de programa principal y subrutina, los sistemas basados en llamadas
a procedimientos remotos, los sistemas orientados a objeto y los sistemas
jerrquicos en capas.
Modelo Vista controlador (Model View Controler).
Un propsito comn en numerosos sistemas es el de tomar datos de un
almacenamiento y mostrarlos al usuario. Luego que el usuario introduce
modificaciones, las mismas se reflejan en el almacenamiento.

MVC

Modelo. Maneja el comportamiento y los datos del dominio de la aplicacin,


responde a los requerimientos de informacin acerca de su estado
(usualmente desde la vista) y responde a las instrucciones para cambiar de
estado (usualmente desde el controlador).
Vista. Maneja la visualizacin de la informacin.
Controlador. Interpreta las acciones del ratn y el teclado, informando al
modelo y/o a la vista para que cambien segn resulte apropiado.

DESCRIPCIN DE ALGUNOS ESTILOS

Ventajas:
1. Soporte de vistas mltiples. Dado que la vista se halla separada del modelo y no hay
dependencia directa del modelo con respecto a la vista, la interfaz de usuario puede
mostrar mltiples vistas de los mismos datos simultneamente.
2. Adaptacin al cambio. Los requerimientos de interfaz de usuario tienden a cambiar con
mayor rapidez que las reglas de negocios.

Tanto la vista como el controlador dependen del modelo. Sin embargo,


el modelo no depende ni de la vista ni del controlador.
La separacin permite que el modelo sea construido y probado
independientemente de la presentacin visual.
La separacin entre vista y controlador es secundaria en muchas
aplicaciones, sin embargo en las aplicaciones Web la vista (el
navegador) y el controlador (los componentes del lado servidor) estn
bien definidos.

EJEMPLO ARQUITECTURA MVC


Software para la gestin de prstamo a usuarios de biblioteca.
Nivel 1: Vista conceptual

VISTA

Consiste en un listado de usuarios que


realizan prstamos. Un listado de los
libros disponibles. Estadsticas de
prstamos.

MODELO

Un conjunto de libros, conjunto de


usuarios, conjunto de prestamos. El
prstamo
almacenar
el
libro
seleccionado por un usuario. El usuario
contendr
informacin
sobre
su
profesin y rea a la que pertenece.

Tanto la vista como el controlador


dependen del modelo, pero el modelo
no depende de estos.

CONTROLADOR

Actualizacin por medio de teclado.


Ingreso de datos por medio del
teclado.
Bsqueda de informacin por teclado
y mouse.

EJEMPLO ARQUITECTURA MVC


VISTA

Nivel 2: Vista lgica

Reportes
Vistas SQL

CONTROLADOR

Interfaz de
Usuario

Procedimientos
Funciones
Clases para mostrar
los datos
provenientes de las
rdenes.

MODELO
Clases para:
Manejo de usuarios,
estado del prstamo,
ubicacin de libros,
estado, etc.

EJEMPLO ARQUITECTURA MVC


Nivel 3: Vista lgica

Ficha

Entrega

Fecha: Date
Ndias: Integer

Publicacin:
String

Validacin
Actualizar()

Usuario

Orden
Prstamo

Libro

Nombre: String
Telfono: Integer

Tipo: String
Items: String

Nombre: String
Tipo: String
Cantidad: Integer

Guardar()
Consultar()
Actualizar()

Consultar()
Actualizar()

Guardar()
Consultar()
Actualizar()

Usuario

Prstamo

Libro

EJEMPLO ARQUITECTURA MVC


Nivel 4: Flujo de datos
MODELO

CONTROLADOR

Evento:
Teclado
Mouse

VISTA

Servicio:
Bsqueda
Registro
Actualizacin
Visualizacin

Obtener Dato

EJEMPLO ARQUITECTURA MVC


Nivel 5: Vista Fsica

Dispositivo
Tradicional

Aplicativo
Clases

C#.Net
Aplicacin
Escritorio

Controlador
Interfaz

Controlador
Interfaz
Mvil

Dispositivo
Mvil
WAP.
Aplicacin
Mvil

Enrutador
Mvil

ASP.
Net

WinForms
Reportes
SQL

Proced.
Funciones.

Servidor
Base de
Datos

DESCRIPCIN DE ALGUNOS ESTILOS


Arquitectura
en Capas

El diseo y desarrollo de estos sistemas informticos se realizan de forma


jerrquica (capas). Los componentes de una capa slo pueden hacer
referencia a componentes en capas inmediatamente inferiores.

Presentacin

Se encarga de que el sistema interacte con el usuario y viceversa,


muestra el sistema al usuario, le presenta la informacin y obtiene
la informacin del usuario en un mnimo de proceso.

Lgica

Residen las funciones que se ejecutan, se reciben las peticiones del


usuario, se procesa la informacin y se envan las respuestas tras el
proceso.

Datos

Encargada de almacenar los datos del sistema y de los usuarios. Su


funcin es almacenar y devolver datos a la capa de negocio,
aunque para esto tambin es necesario en algunos casos, que
tengan procedimientos almacenados y funciones dentro de la
capa.

DESCRIPCIN DE ALGUNOS ESTILOS


Ventajas:
1. Permite a los implementadores partir un problema complejo en una secuencia de pasos
incrementales.
2. El estilo admite muy naturalmente optimizaciones y refinamientos.
3. Proporciona amplia reutilizacin.
Desventaja:
Los cambios en las capas de bajo nivel tienden a filtrarse hacia las de alto nivel.

DESCRIPCIN DE ALGUNOS ESTILOS


Arquitectura
OO

Los componentes de este estilo son los objetos, o ms bien instancias de los
tipos de dato abstractos. Los objetos interactan a travs de invocaciones
de funciones y procedimientos.

Polimorfismo
Clases

Herencia

POO
Abstraccin
de datos

Encapsulacin

Ocultamiento de
Informacin

DESCRIPCIN DE ALGUNOS ESTILOS


Ventajas:
1. Se puede modificar la implementacin de un objeto sin afectar a sus clientes.
2. Es posible descomponer problemas en colecciones de agentes en interaccin.
3. Un objeto es ante todo una entidad reutilizable en el entorno de desarrollo
Desventajas:
1. Para poder interactuar con otro objeto a travs de una invocacin de procedimiento, se
debe conocer su identidad.
2. Cuando se modifica un objeto se deben modificar tambin todos los objetos que lo invocan.
3. Se presentan problemas de efectos colaterales en cascada.

DESCRIPCIN DE ALGUNOS ESTILOS


Hay dos componentes principales: una estructura de datos que representa el
estado actual y una coleccin de componentes independientes que operan
sobre l.

Pizarra

Estos sistemas se han usado en aplicaciones que requieren complejas


interpretaciones de proceso de seales (reconocimiento de patrones,
reconocimiento de habla, etc), o en sistemas que involucran acceso
compartido a datos con agentes dbilmente acoplados.

Todo modelo de este tipo consiste en las siguientes tres partes:


1. Fuentes de conocimiento, necesarias para resolver el problema.
2. Una pizarra que representa el estado actual de la resolucin del
problema.
3. Una estrategia, que regula el orden en que operan las fuentes.

DESCRIPCIN DE ALGUNOS ESTILOS

EJEMPLO ARQUITECTURA MVC


Software para la gestin de prstamo a usuarios de biblioteca.
Nivel 1: Vista conceptual

VISTA

MODELO

Este componente se encarga del


manejo del comportamiento y los datos
del dominio de la aplicacin, responde
a los
requerimientos de informacin
acerca de su
estado (usualmente
desde la vista) y
responde a las
instrucciones para cambiar de estado
(usualmente desde el controlador)

Tanto la vista como el controlador


dependen del modelo, pero el modelo
no depende de estos.

Este componente se encarga todo el


despliegue de la informacin del
software.

CONTROLADOR

Este componente se encarga del


Interpreta las acciones del usuario de
teclado y ratn, informando al modelo
y/o a la vista para cambiar
apropiadamente sus estados.

EJEMPLO ARQUITECTURA MVC


VISTA

Nivel 2: Vista lgica

Windows Forms
Reportes
Vistas SQL

CONTROLADOR

Interfaz de
Usuario

Procedimientos
Funciones
Clases

MODELO

Plataforma .NET
Visual Studio 2010

EJEMPLO ARQUITECTURA MVC


Nivel 3: Vista lgica

Ficha

Entrega

Fecha: Date
Ndias: Integer

Publicacin:
String

Validacin
Actualizar()

Cliente

Orden
Prstamo

Publicacin

Nombre: String
Telfono: Integer

Tipo: String
Items: String

Nombre: String
Tipo: String
Cantidad: Integer

Guardar()
Consultar()
Actualizar()

Consultar()
Actualizar()

Guardar()
Consultar()
Actualizar()

Cliente

Prstamo

Publicacin

EJEMPLO ARQUITECTURA MVC


Nivel 4: Flujo de datos
MODELO

CONTROLADOR

VISTA

Evento
Servicio

Actualizacin

Obtener Dato

EJEMPLO ARQUITECTURA MVC


Nivel 5: Vista Fsica

Dispositivo
Tradicional

Aplicativo
Visual
Studio
2012

C#.Net
Aplicacin
Escritorio

Controlador
Interfaz

Controlador
Interfaz
Mvil

Dispositivo
Mvil
WAP.
Aplicacin
Mvil

Enrutador
Mvil

ASP.
Net

WinForms
Reportes
SQL

Proced.
Funciones.
Clases

Servidor
Base de
Datos

Das könnte Ihnen auch gefallen