TALLER ARQUITECTURA DE SOFTWARE
GA4-220501095-AA2-EV06
Oscar Alexander Quiñones Lozano
Servicio Nacional de Aprendizaje SENA
Análisis y desarrollo de software
2023
Contenido
1.Introducción...................................................................................………3
2.Cómo se define la arquitectura de software?...........................................4
3.Cuál es el papel que desarrolla en el desarrollo de software?.................4
4.Cómo se elabora la arquitectura de software?…………………………….4
5.Cómo lograr una buena arquitectura?……………….……………………..6
6.Cuáles son los elementos de diseño de una arquitectura de software…7
Introducción
En este texto explicaremos los conceptos relacionados con la arquitectura
de software, abordando su definición, el papel que desempeña en el
desarrollo de software, el proceso de elaboración de una arquitectura sólida,
la importancia de lograr una estructura de calidad y, finalmente, los
componentes fundamentales en el diseño de una arquitectura de software.
¿CÓMO SE DEFINE LA ARQUITECTURA DE SOFTWARE?
La arquitectura de software se concibe como un conjunto organizado de
patrones y abstracciones que establecen un marco definido y coherente
para la interacción con el código fuente del software.
¿CUÁL ES EL PAPEL QUE DESARROLLA EN EL PROCESO DE
DESARROLLO DE SOFTWARE?
Su función radica en la aplicación de conocimientos de programación para
planificar el diseño integral del software, permitiendo la incorporación de
detalles en etapas posteriores. Esto posibilita que los equipos de desarrollo
delimiten la visión global y comiencen la creación de prototipos, facilitando
así la gestión eficiente del proyecto de software.
¿CÓMO SE ELABORA LA ARQUITECTURA DE SOFTWARE?
1. COMPRENDE CLARAMENTE CUÁLES SON TUS REQUISITOS
• Comienza con una visión general: primero, haz un resumen breve de tus
requisitos con una “vista aérea”. Los mapas mentales son una forma eficaz
de hacer esto.
• Haz un mapa de tus requisitos funcionales: puedes usar verbos para
agrupar sustantivos. Por ejemplo, verbos como “ver” y “editar” pueden
vincular “cuenta” o “perfil” entre sí en un mapa mental de áreas funcionales.
• Ten en consideración los requisitos no funcionales: mientras trabajas en tu
mapa mental, puedes anotar tus requisitos no funcionales para utilizarlos
más adelante. Un requisito como “desempeño” es clave, pero
probablemente sea demasiado abstracto para colocarlo en el mapa mental.
2. COMIENZA A PENSAR EN CADA COMPONENTE
• Empieza con el “escenario perfecto": ¿Cómo sería tu diseño si pudieras
crearlo de manera perfecta?
• Considera y documenta qué implicaciones tienen tus requisitos: comienza
a elaborar un borrador de trabajo con tu equipo y desarróllalo gradualmente.
En primer lugar, debes observar lo que implican los requisitos en tu diseño;
por ejemplo, en qué aspectos los elementos individuales de la lista de
deseos de las partes interesadas pueden contradecirse entre sí o estar en
conflicto con otros requisitos funcionales y no funcionales.
• Espera y realiza el diseño de la arquitectura final más adelante: lo más
probable es que hagas cambios en tu planeación a lo largo de este proceso,
así que no esperes que el primer borrador se parezca mucho al resultado
final
3. DIVIDE TU ARQUITECTURA EN “REBANADAS”
• Tu diseño de arquitectura, por supuesto, pasa a una fase de planeación a
medida que decides cómo vas a entregar tu diseño. Al dividir tu arquitectura
en rebanadas, puede resultar más fácil la elaboración de este plan, de tal
manera que proporcione beneficios a los usuarios y sirva para planear
adecuadamente tu uso de los recursos de desarrollo.
4. HACER UN PROTOTIPO
• Mantén un historial de cambios riguroso: por supuesto, si no documentas
lo que vas descubriendo en la creación de los prototipos, corres el riesgo
de repetir tus errores. Anota todo: documenta minuciosamente tus
decisiones de diseño y los cambios que realices sobre la marcha.
• Ten una sola fuente de información: no será conveniente que tengas
múltiples cambios y diferentes versiones que frenen tu progreso, así que
establece un sólido control de versiones basadas en una única fuente de
información para tu documentación.
• Haz diagramas de tus prototipos: puedes usar diagramas para ayudarte a
administrar los cambios de prototipos y visualizar las diferencias entre cada
versión.
5. IDENTIFICA Y CUANTIFICA LOS REQUISITOS NO FUNCIONALES
• Desempeño: qué tan bien funciona todo tu sistema, así como las
rebanadas o capas individuales.
• Escalabilidad: el potencial actual y futuro para escalar tu sistema junto con
tus necesidades.
• Portabilidad: la portabilidad de tus datos, así como la posible portabilidad
de los componentes de tu sistema si procede o es necesario.
• Extensibilidad: explica el crecimiento futuro de tu sistema y de tu empresa,
la capacidad de adaptación de tu sistema y el esfuerzo que conlleva la
adaptación.
• Cumplimiento normativo: es otro factor esencial y que tiene un impacto
importante en el diseño general de tu proyecto
¿CÓMO LOGRAR UNA BUENA ARQUITECTURA?
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.
• Establece sistemas robustos, pero libres de frameworks. Esto permite que
la estructura sea estable e independiente.
• 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.
• 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.
• Auditable y testable. Es importante crear un ambiente donde el código
pueda ser evaluado, medido y regulado.
¿CUÁLES SON LOS ELEMENTOS DE DISEÑO DE UNA ARQUITECTURA
DE SOFTWARE?
Entre los componentes de la arquitectura de software existe un conjunto de
interacciones entre las que sobresalen:
• Llamadas a procedimientos.
• Comportamiento de variables.
• Protocolos cliente servidor.
• Transmisión asíncrona de eventos.