Está en la página 1de 26

Ingeniería de Software II

DISEÑO DE LA ARQUITECTURA
Arquitectura del Software

¿Qué es?
 Esla estructura o estructuras del sistema que
comprende a los componentes del software,
sus propiedades externas visibles y las
relaciones entre ellos (Bass, Clements y Kazman).

 La arquitectura del software debe modelar la


estructura de un sistema y la manera en que
los datos y los componentes del
procedimiento colaboran entre si.
Existen diferentes estilos arquitectónicos
Estilos arquitectónicos del software
¿Por qué es importante la arquitectura del software?

 Porque las representaciones de la arquitectura del software


permiten las comunicaciones entre todas las partes
interesadas en el desarrollo del sistema por computadora.
 Porque la arquitectura resalta las primeras decisiones que
tendrán un efecto profundo en todo el trabajo de ingeniería de
software siguiente.
 La arquitectura “constituye un modelo relativamente pequeño
y asequible por la vía intelectual sobre cómo esta
estructurado el sistema y la forma en como trabajan cada uno
de sus componentes.
 El esfuerzo debe centrarse en representaciones de la
arquitectura que guiarán todos los demás aspectos del diseño.
Un error aquí podría tener un efecto negativo a largo plazo.
Programar sin una arquitectura o
diseño general en mente es como
explorar una caverna sólo con una
linterna, no sabes dónde has
estado, a dónde vas ni dónde estas
(Danny Thorpe)
Criterios a tener en cuenta para
seleccionar un diseño arquitectónico

 Aspectos del diseño.- Se describen aspectos


arquitectónicos a abordar.
 Resolución.-El enfoque escogido para el diseño.
 Categoría.- Diseño de datos, estructura del contenido,
estructura del componente, integración, etc.
 Suposiciones.-Cualquier suposición que ayude a dar
forma al diseño.
 Restricciones.- Estándares tecnológicos, patrones
disponibles y aspectos relacionados con el diseño.
 Alternativas.- Rechazar las que no van con el enfoque.
 Argumentos.- ¿ Por qué se eligió la resolución?
Criterios a tener en cuenta para
seleccionar un diseño arquitectónico

 Implicancias.- Consecuencias de la arquitectura


seleccionada.
 Decisiones relacionadas.- ¿Qué otra documentación
puede estar relacionada?
 Preocupaciones relacionadas.- ¿Qué otros
requerimientos se relacionan con esta decisión?
 Producto finales.- La arquitectura seleccionada
 Notas.- Anotaciones importantes.
Reglas estructurales para la arquitectura

• La arquitectura debería tener bien definidos los módulos.


• Cada módulo debería tener bien definida las interfaces que
encapsula. Estas interfaces permitirán desarrollar de manera
independiente cada módulo.
• La arquitectura nunca debe de depender de una versión de un
producto o herramienta comercial.
• Los módulos que producen datos deberán estar separados de los
módulos que consumen datos. Esto permitirá que cuando un dato sea
añadido solo tenga que modificarse un módulo.
• Cada tarea o proceso deberá ser bien documentado, para que este
pueda ser fácilmente modificado, quizás incluso en tiempo de
ejecución.
• La arquitectura deberá caracterizarse como un conjunto de simples
interacciones, esto es para incrementar la confiabilidad, la
manteneabilidad, reducir el tiempo de desarrollo, etc.
Una arquitectura de software debe proporcionar
cierta información:

• La naturaleza de los elementos.


• Si los elementos son procesos, programas, objetos, etc.
• Las funciones de los elementos.
• El significado de las relaciones entre cada elemento.
• El significado de la distribución de los elementos.
• Por ejemplo. Elementos localizados en diferentes
niveles.
EJEMPLO. Representación de una Arquitectura de
Software poco informativa.

ELEMENTO 1

ELEMENTO 2 ELEMENTO 3 ELEMENTO 4


PATRONES DE ARQUITECTURA

Un patrón de arquitectura es una descripción de


elementos y los tipos de relación, junto con un
grupo de restricciones en cómo deben ser usados.

Un ejemplo de este tipo, es la Arquitectura


Cliente-Servidor.
MODELO DE REFERENCIA

Un modelo de referencia es una descomposición de


un problema en un cierto número de partes que
cooperativamente resuelven el mismo.

Ejemplos
Partes de un Compilador.
Partes de un Sistema manejador de Base de
Datos.
ARQUITECTURA DE REFERENCIA

Es un modelo de referencia planeado sobre


elementos de software y el flujo de datos entre
ellos.

Un elemento de software puede implementar


parte de una función o de varias funciones.
ESTRUCTURAS Y VISTAS

 VISTA. Representación de un conjunto de elementos y las


relaciones entre ellos (escritos y leídos por clientes, usuarios, etc.).

 ESTRUCTURA. Conjunto de elementos que por sí mismos,


existen en software o hardware.
Se dividen en:
 Módulos.
 Componentes-conectores.
 Estructuras de Asignación.
Estructuras

Módulos Componente-Conector

Descomposición Cliente-
Clases Proceso Datos
Servidor
Uso Compartidos
Concurrencia
Capas

Asignación

Despliegue
Asignación de Implementación
Trabajo
La Arquitectura en el Ciclo de Vida
Software
Concept Ciclo de Vida de Entregas Evolutivas

Preliminary
Requirements
Analysis
Develop Final
Version
Design of
Architecture and
System Core

Develop a
Version

Incorporate Deliver the


Customer Version
Feedback

Ellicit Customer
Feedbak
DISEÑO DE LA ARQUITECTURA

Attribute-Driven Design (ADD), esta es una


aproximación basada en la recursiva descomposición
de procesos, donde cada estado, tácticas y patrones
arquitecturales son escogidos para satisfacer un
conjunto de escenarios y entonces la funcionalidad es
asignada a módulos. La entrada a este método son
todos los requerimientos funcionales, no funcionales
y las limitaciones del sistema.
Ejemplo:
Sistema de Puertas Automáticas para un Garage SAPG

CUALIDADES EN LOS ESCENARIOS:


 Los dispositivos y controles para abrir y cerrar la
puerta

 Los procesadores

 Si se detecta un obstáculo, en el momento que se


este cerrando la puerta, esta tendrá que
detenerse y abrirse nuevamente en 0.1 segundos

 La puerta automática podrá ser controlada y


administrada desde el sistema de información
casero, a través de un protocolo especifico
Pasos para realizar el diseño

 Escoger el módulo a descomponer.


 Refinar el módulo.
 Escoger los Drivers Arquitecturales.
 Escoger los Patrones Arquitecturales.
 Instanciar los módulos, asignar la funcionalidad a
cada uno y representarlos usando múltiples vistas.
 Definir las interfaces de los módulos hijos.
Documentar las interacciones y limitaciones entre
cada módulo.
 Verificar y refinar casos de uso y escenarios.
Escoger los patrones Arquitecturales

User Interface

Non-Performance Performance Critical


Critical Computation Computation

Virtual Machine Scheduler That


Guarantees Deadlines

Patrón Arquitectural que utiliza tácticas en el SAPG


Instanciar los módulos,
asignar la funcionalidad a cada uno y
representarlos usando múltiples vistas.

User Interface

Diagnosis
Raising/Lowering Obstacle
Door Detection

Communication Sensor/Actuator (Control) Scheduler That


Virtual Machine Virtual Machine Guarantees Deadlines

Primer nivel de descomposición del SAPG


Representación usando múltiples vistas

 VISTA DE MÓDULOS (DESCOMPOSICIÓN).

 (VISTA DE COMPONENTE-CONECTOR) CONCURRENCIA.

 Dos usuarios haciendo cosas similares al mismo tiempo.


 Usuario ejecutando múltiples actividades simultáneamente.
 Encender el sistema.
 Apagar el sistema.
 Sincronización.

 (VISTA ESTRUCTURAS DE ASIGNACIÓN) IMPLEMENTACIÓN.


FORMAR EQUIPOS DE TRABAJO

 La estructura arquitectural repercute


directamente en la formación de estos
equipos, debido a que se elegirán
dependiendo de la funcionalidad
(dominio) de los módulos, es decir se
organizarán tomando en cuenta a la
gente más especializada o con mayores
conocimientos en el área.
Crear un esqueleto del sistema

 Una vez que hemos diseñado la arquitectura


del sistema y hemos formado los grupos de
trabajo, tenemos todo lo necesario para
poder hacer una implementación del sistema,
el cual me permitirá estar interactuando con
el cliente e ir realizando modificaciones sobre
el mismo, hasta que se este en condiciones
de entregar un producto final.

También podría gustarte