TALLER ARQUITECTURA DE SOFTWARE. GA4-220501095-AA2- EV06.
KISAY DAYANA MARRUGO VERGARA
JORGE ROLANDO PARDO
SENA SERVICIO NACIONAL DE APRENDIZAJE
ANÁLISIS Y DESARROLLO DE SOFTWARE
REGIONAL DE SOACHA
2023
Contenido
INTRODUCCION...............................................................................................03
DEFINICIÓN……………………….…………………………………………….............................04
FUNCIÓN……………….………………………….………………………………...........................04
¿CÓMO SE ELABORA?....……………………………………………………...........................04
¿CÓMO SE LOGRA………………………………………………………………..……………………..05
¿CUÁLES SON LOS ELEMENTOS DE DISEÑO?..................................................06
Introducción
De manera análoga al campo de la ingeniería y construcción, se puede
relacionar la arquitectura de software como lo es el arquitecto en la
construcción a la disciplina que se encarga previo a la construcción -
codificación, de tener una serie de planos, modelos y detalles que
permitan que la construcción de la edificación se dé con una mayor
facilidad y se pueda construir la mejor edificación dentro de lo posible.
El no crear un diseño preliminar desde etapas tempranas del
desarrollo puede limitar severamente el que el producto final satisfaga
las necesidades de los clientes. Además, se pueden dar sobrecostos
elevadísimos con las correcciones relacionadas con problemas en la
arquitectura. Es así que la arquitectura de software juega un papel
fundamental dentro del desarrollo. En este taller los aprendices
quieren profundizar en los aspectos principales de la arquitectura de
software y comprender como ésta se puede elaborar y cuáles son sus
componentes principales.
03
DEFINICIÓN
En el campo de la Ingeniería de Software, la arquitectura de software son los patrones,
lineamientos o estándares que ayudan a la construcción de una aplicación. Esta
estructuración representa un diseño de alto nivel del sistema cuyos objetivos principales
son: satisfacer atributos de calidad y servir como guía en el desarrollo. Dicho de otra
forma, la arquitectura de software define el conjunto de componentes de un sistema, las
interfaces de comunicación de estos y la forma en como los componentes se comunican
entre ellos utilizando estas interfaces. Las organizaciones dependen de los sistemas de
software que soportan su operación, y el buen funcionamiento de estos depende de sus
arquitecturas.
FUNCIÓN
La función de la arquitectura de software es la de identificar los requisitos que producen
un impacto en la estructura del software y reducir los riesgos asociados con la
construcción de éste. La arquitectura debe soportar las actualizaciones del sistema, del
hardware y de funcionalidad demandadas por el cliente
¿CÓMO SE ELABORA?
Independientemente del tipo de patrón que se escoja de una arquitectura determinada se
tienen las siguientes etapas:
Requerimientos: Se recolecta la información y se documentan los requerimientos que
influyen en la arquitectura de la aplicación, necesidades del cliente, que marcos de trabajo
se requerirán, en que especificaciones de equipos está destinado a funcionar el sistema o
sistemas.
Análisis: Se procede a generar los casos de uso a nivel de borrador hasta tener la
información necesaria para cada caso.
Diseño: Se define el uso de tecnologías adecuadas para resolver el problema. También se
tienen en cuenta los patrones de diseño como por ejemplo MVC (Modelo, Vista,
Controlador) o arquitectura de microservicios, Directorios de datos.
Documentación: Se crea la documentación que sirva como referencia a todos y sea el
marco de trabajo para todos, esta parte incluye el documento Arquitectura General del
sistema, y los documentos de Casos de Uso y funcionalidad, también se integra la
información de UX/UI como son prototipos, roles y permisos de usuario, y demás
información que se requiera entregar al equipo de Desarrollo ejemplo Diagramas UML,
Diagramas de Procesos, Manuales, etc.
04
Desarrollo: En esta etapa los programadores tienen asignadas tareas específicas y el
arquitecto de software estará probando los diferentes módulos para poder hacer mejoras,
o correcciones al sistema final.
Pruebas: Se hacen pruebas teniendo métricas por ejemplo del rendimiento de la
aplicación y saber si un cambio mejora o no dicho rendimiento.
Implementación: Se monta el sistema en producción y evaluar su comportamiento,
verificando qué funciona correctamente.
¿CÓMO SE LOGRA?
La arquitectura de software también se relaciona con aspectos como rendimiento,
usabilidad, presupuesto, tecnología e incluso cuestiones estéticas. Para implementarla de
manera adecuada es recomendable apoyarse de una metodología de desarrollo. La forma
en la que se definen las directrices de la arquitectura suele depender de las necesidades
del negocio, ya que pueden ser muy rígidas o ajustables a un proyecto en específico.
A continuación, hablaremos sobre los elementos clave que debe tener un diseño limpio
para tu arquitectura de software
1. Establece sistemas robustos, pero libres de frameworks. Esto permite que la
estructura sea estable e independiente.
2. Ajusta la construcción y el uso de la base de datos. La base de datos es la que debe
alinearse a tus necesidades de negocio, no al revés.
3. Elige las herramientas necesarias para optimizar procesos. Considera la posibilidad
de unificar servicios de automatización de sistemas e integración de aplicaciones,
colocándolos de manera estratégica desde un inicio.
4. Auditable y testable. Es importante crear un ambiente donde el código pueda ser
evaluado, medido y regulado.
05
¿CUÁLES SON LOS ELEMENTOS DE DISEÑO?
1. Patrones: Dan una descripción de los elementos y el tipo de relación que tienen
junto con un conjunto de restricciones sobre cómo pueden ser usados. Un patrón
arquitectónico expresa un esquema de organización estructural esencial para un sistema
de software, que consta de subsistemas, sus responsabilidades e interrelaciones. En
comparación con los patrones de diseño, los patrones arquitectónicos tienen un nivel de
abstracción mayor.
2. Tácticas: Las tácticas son decisiones de diseño que influyen en el control de la
respuesta de un atributo de calidad. A diferencia de los patrones de diseño, las tácticas
son soluciones menos detalladas y están enfocadas a atributos de calidad específicos. Se
aplican en conjunto con los patrones durante el diseño de la arquitectura de un sistema.
Para entenderlo, retomemos el ejemplo anterior y consideremos que existe un escenario
de atributo de calidad de desempeño como el siguiente:
3. Frameworks: Estos son elementos reutilizables de software que proveen
funcionalidades genéricas enfocadas a resolver cuestiones recurrentes. Los frameworks
típicamente se basan en patrones y tácticas. Un ejemplo de ello es el framework Swing
para creación de interfaces de usuario en Java, que aplica patrones como Modelo-
VistaControlador (MVC), Observador y Composite; e incorpora tácticas de modificabilidad
y usabilidad tales como la generalización de módulos y la separación de elementos de
interfaz de usuario.
4. Modelos de dominio: Describe las abstracciones con sus atributos y las relaciones
entre ellas. Un modelo de dominio es por lo habitual independiente de la solución y, de
hecho, un mismo modelo de dominio podría usarse para crear distintas soluciones.
5. Componentes COTS: Partes de aplicaciones, o bien, aplicaciones completas listas
para ser integradas. Este tipo de componentes se incorpora por lo habitual de forma
binaria previa configuración mediante algún mecanismo previsto para tal propósito.
6. Servicios web: Son interfaces que encapsulan sistemas completos, los cuales
pueden ser parte de la compañía para la cual se desarrolla el sistema, o bien, pertenecer
una empresa distinta.
06