Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PNF Informática
Ingeniería De Software
Barcelona
Indice
Introducción ..................................................................................................................................................... 4
Patrones ........................................................................................................................................................... 9
Idioms .....................................................................................................................................................12
Componente ...................................................................................................................................................13
Vistas .............................................................................................................................................................. 14
Vista + 1 ..................................................................................................................................................15
Conclusión ...................................................................................................................................................... 33
Introducción
El software se ha convertido en una parte esencial de nuestra vida diaria. Lo usamos para
trabajar, comunicarnos, entretenernos y mucho más. A medida que la complejidad del software
aumenta, la necesidad de una arquitectura bien diseñada se vuelve aún más importante.
interconectan sus diferentes partes y cómo interactúan con el entorno. Una arquitectura bien diseñada
software.
profundidad. Analizaremos su importancia, los diferentes estilos arquitectónicos, los patrones de diseño,
Preguntas de investigación:
¿Cuáles son los diferentes estilos arquitectónicos que se pueden utilizar para estructurar el
software?
¿Qué son los patrones de diseño y cómo pueden ayudar a mejorar la calidad del software?
¿Qué herramientas están disponibles para ayudar a los arquitectos de software en su trabajo?
Metodología:
bibliográfica. Se analizarán libros, artículos científicos y otras fuentes de información relevantes para el
arquitectura de software y su papel en el desarrollo de software de alta calidad. Se espera que los
resultados de la investigación sean útiles para estudiantes, profesionales de la industria del software e
investigadores.
La arquitectura de software.
explica el comportamiento esperado. La arquitectura de software apoya y proporciona una base sólida
Una estructura de software introduce un proceso y una base que soporta una serie de
rendimiento y el éxito general de la aplicación. Los problemas comunes y las consecuencias a largo plazo
Los estilos arquitectónicos son patrones y principios de arquitectura de alto nivel que se utilizan
habitualmente en los sistemas modernos. La arquitectura del software hace uso de una combinación de
La arquitectura de software suele diseñarse en cuatro capas (algunos también lo hacen en tres),
que son, de arriba a abajo, capa de presentación, capa de servicio, capa de negocio y capa de datos.
La capa de presentación contiene componentes para que los usuarios interactúen con la
aplicación. Se encarga de procesar las entradas del usuario y devolverle la respuesta correcta.
La capa de servicio actúa como límite de la transacción y contiene tanto servicios de aplicación
como de infraestructura.
La capa de datos es la capa más baja de una aplicación. Es responsable de la comunicación con
El diseño de software define las propiedades detalladas particulares del sistema, mientras que la
Por lo general, en los modelos de cascada, el diseño del software es la fase inicial, mientras que,
la arquitectura del software es un plano que limita el diseño del software para evitar los errores típicos y
eventos, mientras que, los patrones de diseño de software son de creación, estructurales y de
comportamiento.
se centra en la estructura.
La arquitectura de software proporciona una base para gestionar la complejidad del sistema.
Sirve para coordinar los distintos componentes del sistema y permite el seguimiento durante el proceso
de desarrollo y las fases posteriores. Además, ayuda a garantizar que, el software cumpla todos los
La arquitectura del software abarca los elementos esenciales que soportan el sistema, incluidos,
el diseño del software actúa como un plano sólo durante el proceso de desarrollo y guía fases y tareas
específicas, como la codificación, la integración, las pruebas y la integración. También ayuda a identificar
software cubre todo el sistema mientras que el plano cubre la fase de implementación principalmente.
La arquitectura de software trabaja sobre la estructura de un sistema sin los detalles de la
sistema interactúan entre sí. El diseño de software profundiza en los detalles de implementación del
sistema. El diseño se ocupa de la selección de estructuras de datos y algoritmos, así como de los detalles
vida del proyecto. A veces, las decisiones son más arquitectónicas, mientras que, otras veces, las
Otra forma de decirlo es que, la arquitectura es diseño, pero no todo el diseño es arquitectónico.
Las últimas tendencias en arquitectura de software asumen que el diseño evoluciona y el diseño
generalmente evoluciona durante las etapas de implementación del sistema. Así, el arquitecto de
software observa y prueba continuamente el formato frente a los requisitos del mundo real.
Propósito y Beneficio
La arquitectura de software crea una base firme para el ciclo de vida del proyecto de software
Dado que, la arquitectura de software abarca todo el ciclo de vida del proyecto, puede
identificar áreas para un posible ahorro de costos. Por ejemplo, la arquitectura puede sugerir que varios
sistemas de bases de datos pueden transferirse a un único sistema para reducir los costos de adquisición
y soporte de software.
Proporciona una mejor capacidad de mantenimiento del código, cambios más rápidos en los
La arquitectura de software ayuda a gestionar la complejidad y los riesgos. Ayuda a reducir los
También crea una clara separación de preocupaciones para apoyar una mayor adaptabilidad.
comunicación sobre sistemas complejos ayuda a las partes interesadas a entender las consecuencias de
Patrones
Tipos de Patrones
Patrones de Arquitectura
Idioms
Estilos Arquitectónicos
Describen:
Los componentes (módulos, bases de datos, etc) que tienen una función específica
Estilos Arquitectónicos
Arquitecturas en Capas
Llamadas y Retorno
Centrada en Datos
Pizarrón (Blackboard)
tuberías
Orientación a Objetos
Arquitectura en Capas
Se tienen varias capas, cada capa se comunica con las capas inferiores o superiores a
Es una descripción de clases y objetos y la manera en que se comunican entre ellos. A través de
Componentes de un Patrón
Nombre.
Describe el problema
Problema
Solución
asignadas
Tipos de Patrones
Idioms
determinado lenguaje
Ejemplos:
Convenciones de nombres
Componente
Las relaciones pueden ser tan sencillas como una invocación de un módulo a
Vista de Arquitectura
Las vistas se utilizan para representar la arquitectura del software en un solo diagrama Una vista
se define como la forma de presentar un modelo que describe un sistema de manera completa desde un
Arquitectura 4 + 1
Describe la arquitectura de un sistema a partir de su representación en vistas
Vistas
Vista Lógica.
Representa los requisitos funcionales del sistema y lo que debe hacer Se representa a
Diagramas de Clases
Diagrama de Secuencia
Vista de Desarrollo
Diagrama de Componentes
Diagrama de Paquetes
Diagramas de Estado
Vista de Procesos
Diagramas de Actividad
Muestra como se reparten los componentes en los equipos que formarán el sistema
completo
Diagrama de Despliegue
Vista + 1
También llamada Vista de Escenarios, está representada por el conjunto de los casos de
uso
Modelado de Diseño.
- Datos
- Interfaces
- Componentes
La importancia del diseño del software se puede describir con una sola palabra, calidad.
Nos proporciona las representaciones del software que se pueden evaluar en cuanto a calidad.
Sirve como fundamento para todos los pasos siguientes del soporte de software. Sin un diseño
Transforma el modelo del dominio de información que se crea durante el análisis en las
estructuras de datos que se necesitarán para implementar el software. Los objetos de datos, las
relaciones definidas en el diagrama relación entidad y el contenido de datos son la base de esta
actividad.
Un buen diseño de datos es importante por que puede conducir a una mejor estructura
Modelo de Diseño
Diseño de interfaces
interoperan dentro de él y con las personas que lo utilizan. Una interfaz implica un flujo de
• Interfaces Internas:
Diseño de componentes
La información que se obtiene de EP, EC y de DTE sirve como base para el diseño de los
componentes.
componente.
independiente a la aplicación en la que se utiliza y de otros componentes (partes), que describe y realiza
es la parte del escenario que explica o describe lo que el involucrado en el desarrollo hace para iniciar la
interacción con el sistema. Puede incluir ejecución de tareas, cambios en el sistema, ejecución de
pruebas, configuración, etc. El contexto describe qué sucede en el sistema al momento del estímulo. La
respuesta describe, a través de la arquitectura, cómo debería responder el sistema ante el estímulo.
Este último elemento es el que permite establecer cuál es el atributo de calidad asociado.
Evaluación: Es un estudio de factibilidad que pretende detectar posibles riesgos, así como
buscar recomendaciones para contenerlos. La diferencia entre evaluar y verificar es que la evaluación se
Stakeholders: Aquellas personas que están relacionadas de cierta forma con el sistema, ya sea
Atributo de calidad: es una característica de calidad que afecta a un elemento. Donde el término
potenciales en su estructura y sus propiedades, que puedan afectar al sistema de software resultante,
verificar que los requerimientos no funcionales estén presentes en la arquitectura, así como determinar
Según Kazman, es posible realizarla en cualquier momento , pero propone dos variantes que
la evaluación, y esto abarca desde las fases tempranas de diseño y a lo largo del desarrollo.
completado.
Existen varias técnicas para realizar evaluaciones de arquitectura que se dividen basicamente en
técnicas cualitativas y cuantitativas. Normalmente, las técnicas de evaluación cualitativas son utilizadas
cuando la arquitectura está en construcción, mientras que las técnicas de evaluación cuantitativas, se
Hay métodos de evaluación de arquitecturas, que se centran en un atributo particular, como por
ejemplo:
ALMA (Architecture Level Modifiability Analysis): El atributo de calidad que analiza este método
es la facilidad de modificación.
PASA (Performance Assessment of Software Architecture):El atributo de calidad que analiza este
método es el desempeño.
SALUTA (Scenario based Architecture Level Usability Analysis): Se basa en el atributo de la
Survivable Network Analysis (SNA) SNA es un método desarrollado por el CERT (Computer
Emergency Response Team) que forma parte del SEI (Software Engineering Institute)
Hay otros métodos más generales, donde es posible realizar la evaluación desde distintas
perspectivas y que pueden analizar distintos atributos de calidad. Entre estos métodos se encuentra:
Atributos de calidad por los que puede ser evaluada una arquitectura
Observables vía Ejecución: Son los atributos que se determinan del comportamiento del sistema,
en tiempo de ejecución.
No Observables vía Ejecución: Son los atributos que se establecen durante el desarrollo del
sistema.
de modificación.
Bengtsson y Lassing.
método puede ser usado para predecir el costo de mantenimiento en una arquitectura, evaluar
los riesgos al haber una modificación en esta, o comparar un conjunto de arquitecturas para
Evaluación de riesgos. Identifica los tipos de cambios que pueden ser complejos o que
ALMA puede ser utilizado una vez que concluye la especificación de la arquitectura
(evaluación clásica),no obstante este método puede ser usado si la arquitectura ha sido
implementada (evaluación tardía). La técnica de evaluación principal que utiliza este método es
el uso de escenarios de cambio. Los escenarios de cambio son usados para capturar eventos
futuros en los que se requiere que el sistema sea adaptado. Antes de iniciar la evaluación es
necesario que se cuente con la especificación de la arquitectura de software, así como los
requerimientos no funcionales.
continuación se describen.
las relaciones entre componentes así como las relaciones que existen en el entorno del sistema.
procede a encontrar y definir los escenarios de cambio, estos escenarios son agrupados en
categorías.
que corresponden a los cambios que tienen una alta probabilidad de que ocurran durante la
vida operacional del sistema. Esta actividad finaliza cuando se han identificado los principales
escenarios de cambio.
identificar los componentes afectados por los escenarios previamente definidos, determinar el
efecto del cambio sobre los componentes así como determinar los efectos del cambio en otros
componentes. Los resultados de este análisis se deben expresar ya sea de manera cuantitativa o
cualitativa.
5. Interpretar resultados. Finalmente se interpretan los resultados así como las
equipo de desarrollo.
diferentes dominios de aplicación como son: sistemas de control embebido, sistemas médicos,
técnicas para analizar el desempeño en una arquitectura de software. Entre estas técnicas se
encuentran el uso de estilos arquitectónicos, anti-patrones, guías de diseño, modelos, así como
conocer qué tanto tiempo le toma al sistema de software responder cuando uno o varios
tiempo dado.
PASA puede ser usado una vez que la especificación de la arquitectura ha concluido o
ésta se encuentra implementada. La técnica de evaluación principal que utiliza PASA es el uso de
escenarios. Estos proporcionan una medida de razonamiento con respecto al desempeño del
sistema. Si se requieren análisis más detallados, los escenarios sirven como punto de partida
información que falta de los miembros del equipo de desarrollo así como de códigos fuente y
documentación existente.
Este método está compuesto de nueve pasos que se muestran en la Figura y que a
continuación se describen.
contiene el objetivo de realizar la evaluación, en qué consiste el método PASA, qué información
para la operación del sistema como son aquellos que demandan una respuesta de tiempo rápida
para el usuario así como los que presentan algún riesgo de desempeño.
Es importante aclarar que un caso de uso puede contener uno o varios escenarios, estos
describen las secuencias de acciones requeridas para ejecutar el caso de uso. Los escenarios
4. Seleccionar los escenarios de desempeño principales. Por cada caso de uso crítico se
debe identificar los escenarios que son importantes con respecto al desempeño. Por ejemplo,
seleccionar aquellos escenarios que son ejecutados frecuentemente así como aquellos que son
debe especificar al menos un objetivo de desempeño. Los objetivos de desempeño pueden ser
detalle por lo que se tienen reuniones con el arquitecto y miembros del equipo de desarrollo
para aclarar dudas con respecto a las interacciones entre componentes si existe información
arquitectura. También se pueden utilizar técnicas de Ingeniería del desempeño de software para
alternativas de solución para satisfacer los objetivos de desempeño. Estas alternativas pueden
evaluación que incluye los objetivos de la evaluación, hallazgos encontrados, pasos específicos a
seguir y recomendaciones
PASA se considera un método de evaluación maduro ya que ha sido probado en varios dominios
tiempo real.
facilidad de uso del sistema. La facilidad de uso es la facilidad con la cual el usuario puede
Este método hace uso de un marco de referencia elaborado por los mismos autores en
el que se expresan las relaciones que existen entre la facilidad de uso y la arquitectura de
software. Este marco de referencia incluye un conjunto integrado de soluciones de diseño tales
como patrones de diseño y propiedades que tienen un efecto positivo sobre la facilidad de uso
en un sistema de software.
SALUTA analiza cuatro atributos que están directamente relacionados con la facilidad de
La técnica principal de evaluación que utiliza este método es el uso de escenarios de uso.
Estos se agrupan en uno o varios perfiles de uso. En un perfil de uso se representa la facilidad de
uso requerida por el sistema de software. Para efectuar la evaluación se requiere que la
continuación se
describen.
categorías. A continuación se identifican las tareas más significativas del sistema, se identifica el
contexto donde será usado el sistema, se determinan los valores para los atributos: facilidad de
prioridad de los atributos, se asigna a cada uno un valor numérico no repetido entre 1 y 4. Por
último se seleccionan los escenarios más representativos que tienen mayor prioridad con
arquitectura de software para determinar el nivel de soporte en los escenarios de uso. Esto se
3. Evaluar escenarios. En este paso se evalúa cada uno de los escenarios que forman
parte del perfil de uso. Por cada escenario se analizan los patrones y propiedades previamente
paso se expresan de manera cuantitativa los resultados del análisis, que indican el grado de
casos de estudio, sin embargo los resultadosque se han obtenido han sido satisfactorios.
formaparte del SEI (Software Engineering Institute). Este método ayuda a identificar la
capacidad que tiene un sistema para completarsu misión a tiempo ante la presencia de ataques,
fallas o accidentes.
garantizar al usuario los servicios esenciales aun cuando este seencuentre en presencia de algún
uso de escenarios.
El primer tipo son los escenarios normales de uso, éstos se componen de una serie de
pasos donde los usuarios invocan a servicios y obtienen acceso a activos tales como
bases de datos.
El segundo tipo de escenarios son los de intrusión, en los que se representan diferentes
tipos de ataques al sistema. Para llevara cabo la evaluación, se requiere que se cuente
se procede a completarla.
SNA está compuesto de cuatro pasos que se muestran en la Figura y que a continuación
se describen.
servicios esenciales y los activos que usan. Se deben de seleccionar aquellos servicios y
activos que sean críticos para garantizaren condiciones adversas la misión del sistema.
Una vez seleccionados, estos se trazan a través de la arquitectura para identificar los
análisis se colocan en una tabla llamada mapa de supervivencia que contiene por cada
analizando su importancia, los diferentes estilos arquitectónicos, los patrones de diseño, las
A lo largo del trabajo, hemos destacado la importancia de una arquitectura bien diseñada para
También hemos presentado los diferentes estilos arquitectónicos que se pueden utilizar para
arquitectura de microservicios. Cada estilo tiene sus ventajas y desventajas, y la elección del
Además, hemos explorado los patrones de diseño, que son soluciones reutilizables a problemas
comunes de diseño de software. Los patrones de diseño pueden ayudar a crear software flexible,
escalable y robusto.
Por último, hemos presentado algunas de las herramientas que pueden ayudar a los arquitectos
software. Invertir tiempo y esfuerzo en la arquitectura del software puede ayudar a crear