You are on page 1of 10

TALLER ARQUITECTURA DE SOFTWARE.

GA4-220501095-AA2-EV06.

CHARLENE MELISSA RIOS NELSON


INSTRUCTOR: ALEJANDRO ZABALA DIAZ

ANÁLISIS Y DESARROLLO DE SOFTWARE. (2675804)

SENA: SERVICIO NACIONAL DE APRENDIZAJE

2023
INTRODUCCIÓN

La arquitectura de software es el cimiento sobre el cual se construye cualquier proyecto


de desarrollo de software; Es el proceso de planificación y diseño de alto nivel que define
la estructura y organización de un sistema informático, estableciendo cómo sus
componentes interactúan entre sí y con el entorno que los rodea.

En esta era de creciente complejidad tecnológica, es fundamental contar con una


arquitectura sólida y bien pensada, una buena arquitectura de software no solo garantiza
el correcto funcionamiento del sistema, sino que también mejora su mantenibilidad,
escalabilidad, rendimiento y seguridad.

Los arquitectos de software desempeñan un papel clave en este proceso, tomando


decisiones estratégicas y seleccionando patrones de diseño que se adapten mejor a los
requisitos del proyecto, los arquitectos crean una visión global del software y guían a los
desarrolladores durante todo el ciclo de vida del proyecto.

En esta era de cambios constantes, la arquitectura de software se ha vuelto aún más


relevante, la adopción de tecnologías emergentes, como la inteligencia artificial, la
computación en la nube y el Internet de las cosas, plantea nuevos desafíos y
oportunidades para los arquitectos de software.

Su enfoque en la planificación, diseño y organización del software asegura que los


sistemas informáticos sean eficientes, robustos y capaces de adaptarse a las demandas
cambiantes del mundo actual, la continua evolución y refinamiento de la arquitectura de
software seguirá siendo un elemento crítico para impulsar la innovación y el progreso en
el campo de la tecnología de la información.
¿QUÉ ENTIENDE POR ARQUITECTURA DE SOFTWARE?

La arquitectura de software se refiere a la estructura y organización fundamental de un


sistema o aplicación informática es un concepto fundamental en el desarrollo de software
y se centra en la planificación y diseño de alto nivel del sistema antes de entrar en los
detalles de implementación, proporciona una visión global y coherente del sistema,
definiendo cómo sus componentes interactúan entre sí y con el entorno en el que operan.

Un arquitecto de software se encarga de definir las decisiones clave que determinarán


cómo se construirá el sistema, teniendo en cuenta aspectos como la escalabilidad, la
seguridad, el rendimiento, la mantenibilidad, la usabilidad y otros atributos de calidad del
software.

TIPOS

Patrón cliente-servidor: Este patrón es uno de los más tiene un gran alcance en el
diseño de webs y servicios online. Se fundamenta en el concepto de la presencia de un
servidor junto a una serie de clientes, los cuales hacen solicitudes al servidor y reciben
respuestas de este.

Patrón de capas: Se basa en la subdivisión de la estructura del sistema en diferentes


capas que suponen una subtarea. Cada una de dichas capas corresponden a un nivel
de abstracción diferente. El diseño de cada una de las capas se hace en función de
brindar un servicio a la capa mayor siguiente.

Patrón master-slave: Este patrón se forma de dos partes, una llamada master o maestro
y la otra slaves o esclavos. Los esclavos hacen la tarea asignada por el maestro,
computan los resultados para después enviarlos al maestro, quien es el que almacena,
procesa o representa. Con la arquitectura de software master-slave se busca una parte
que autoriza y dirige las actividades y otra parte que procesa los resultados.

Patrón modelo-vista-controlador (MVC): Uno más famosos, el modelo-vista-


controlador, divide la aplicación en tres partes interactivas diferentes entre sí:

 Modelo: Abarca la funcionalidad y los datos.


 Vista: Presenta la información al usuario. Puede haber varias vistas para una
misma aplicación.
 Controlador: Administra la entrada del usuario. Así se separa la representación
en la que se presenta y acepta la información del usuario. De esta manera, se
dividen los componentes y permiten una reutilización del código.

Dicho patrón es muy usado para el desarrollo de aplicaciones web para el front-end y
back-end. Es el modelo usado en frameworks famosos como Angular o Spring.
Patrón bróker: Esta es usada para estructurar sistemas con componentes
desacoplados. Dichos componentes se comunican entre sí por medio de invocaciones
de servicios remotos, siendo el componente broker el encargado de la comunicación.

¿CUÁL ES SU FUNCIÓN?

Cumple una función fundamental en el desarrollo de sistemas informáticos; Su principal


objetivo es proporcionar una estructura sólida y coherente para el diseño y construcción
de software y proporcionar una guía y una base sólida para el desarrollo del software,
garantizando que el sistema resultante sea eficiente, confiable, fácil de mantener y se
ajuste a los requisitos y objetivos del proyecto. Una arquitectura bien pensada es esencial
para el éxito a largo plazo del software y para facilitar su adaptación a los cambios
tecnológicos y de negocio.

Algunas de las funciones más importantes de un arquitecto de software son las


siguientes:

 Identificar a las partes interesadas en el proyecto.


 Conocer los requisitos operativos.
 Elegir la arquitectura y los componentes del sistema.
 Diseñar y planificar los sistemas de software.
 Garantizar la eficiencia, adaptabilidad y seguridad del sistema.
 Coordinar y supervisar la implementación de la arquitectura.
 Evaluar el sistema y proponer mejoras.

¿CÓMO SE ELABORA LA ARQUITECTURA DE SOFTWARE?

Comprende cuáles son tus requisitos


Todo diseño que comiences tendrá requisitos funcionales y no funcionales bueno estos
requisitos guían tu arquitectura de software y te permiten concluir el proyecto con la
presentación de un producto final que deje satisfechas a las partes interesadas y ten en
cuenta los siguientes aspectos:

 Obtén una mejor comprensión a través de imágenes.


 Comienza con una visión general
 Haz un mapa de tus requisitos funcionales
 Ten en consideración los requisitos no funcionales
 Tus requisitos deben utilizarse para definir el alcance del trabajo y planear el
proyecto.
Piensa en cada componente
Es necesario que averigües qué requisitos plantearán desafíos importantes para tu
diseño o plan de proyecto, sin adelantarte demasiado al pensar en la implementación.
Algunos requisitos pueden ser imposibles de cumplir bajo ciertos supuestos u opciones.

 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.

Divide tu arquitectura
Al dividir tu arquitectura 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.
creas pisos y capas enfocadas en características individuales. Necesitas tener una
mentalidad tanto horizontal como vertical para tu proyecto.
Al hacer diagramas de las capas involucradas en tu proyecto de arquitectura de software,
puedes visualizar toda la pieza y cómo influye cada capa en otras capas. A medida que
elaboras tu plan, toma cada capa Agile y haz un diagrama de cómo se conecta cada piso
entre sí.

Hacer un prototipo
Los prototipos te permiten descubrir fallas de forma rápida y temprana, por lo que
obtendrás retroalimentación con rapidez y podrás descubrir tu prueba de concepto.
Aprovecha la fase de elaboración del prototipo. Esto no sustituye a las pruebas, pero es
una parte crucial de las pruebas que deberás realizar.

 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.
Identifica y cuantifica los requisitos no funcionales
Además de los requisitos funcionales, deberás tener en cuenta los requisitos no
funcionales. Estos requisitos son tan importantes como tus requisitos funcionales para el
diseño porque definen las características del sistema.
Los requisitos no funcionales normalmente son los requisitos de calidad general para
todo el proyecto, pero no siempre. Es posible que tu sistema tenga requisitos no
funcionales específicos solo para una parte de tu arquitectura de software. Por lo tanto,
hay que estar preparados para incluir a las partes interesadas en los requisitos locales
no funcionales.
Sin embargo, no es suficiente decir que deseas tener desempeño, portabilidad o
escalabilidad. Los requisitos no funcionales también deben cuantificarse. Ningún
proyecto puede tener un desempeño absolutamente perfecto: el “desempeño” debe
especificarse y delimitarse para cumplir con otros requisitos.
Dado que tus requisitos no funcionales ocupan un lugar en la configuración de tu diseño,
no puedes evitar definirlos. A continuación, se detallan otros requisitos que puedes tener
en cuenta:
 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.
Elaborar un diagrama de tus requisitos no funcionales puede ayudar a tu equipo a ver
cómo los cuantificas y, a la vez, coloca los requisitos específicos en contextos relevantes.
Aunque no tienes que preocuparte por optimizar todo en este punto, también hay que
considerar el esfuerzo y los recursos que pueden ser necesarios para optimizar estos
requisitos no funcionales más adelante.
¿CÓMO LOGRAR UNA BUENA ARQUITECTURA?

Para lograr una buena arquitectura de software en general, es importante seguir una
serie de prácticas y enfoques que promuevan la eficiencia, la robustez y la adaptabilidad
del sistema parte clave de este proceso es tener en cuenta sus diferentes pasos y
componentes al momento de desarrollarlo y entre estos se encuentran:

 Comprender los requisitos


 Diseño orientado a objetos
 División en capas
 Utilizar patrones de diseño
 Escalabilidad
 Seguridad
 Optimización del rendimiento
 Documentación adecuada
 Pruebas y validación
 Versiona miento y control de cambios.
 Flexibilidad y adaptabilidad
 Revisión y colaboración

Mantén una actitud abierta a mejoras y ajustes a medida que el proyecto avanza y los
requisitos cambian y la comunicación efectiva, la colaboración entre todos los miembros
del equipo son fundamentales para lograr una arquitectura exitosa y satisfacer las
necesidades del software de manera óptima.

¿Cuáles son los elementos de diseño de una arquitectura de software?

1. Componentes y módulos: Identifica los componentes y módulos principales que


compondrán el software.

2. Interfaces: Define las interfaces entre los diferentes componentes y módulos.

3. Patrones de diseño: Los patrones de diseño son soluciones probadas a


problemas comunes de diseño de software.

4. Arquitectura de datos: Diseña la estructura de datos del sistema, incluyendo la


organización y el acceso a la información.

5. Flujo de datos y control: Define cómo fluye la información y el control a través


del sistema. Especifica cómo se procesan y transfieren los datos a través de
diferentes componentes.

6. Decisiones de tecnología: Elige las tecnologías y herramientas específicas que


se utilizarán para implementar el sistema, como la elección del lenguaje de
programación, el entorno de desarrollo, las bases de datos, entre otros.
7. Escalabilidad y rendimiento: Considera aspectos como el rendimiento, la
optimización y el uso eficiente de recursos.

8. Seguridad: Incorpora medidas de seguridad en el diseño para proteger el


software contra posibles vulnerabilidades y ataques.

9. Mantenibilidad: Diseña el software para que sea fácil de mantener y modificar en


el futuro utilizando códigos limpios y bien estructurados y sigue las mejores
prácticas de desarrollo de software.

10. Distribución y despliegue: Si el sistema es distribuido o se despliega en


múltiples entornos, asegúrate de diseñar la arquitectura para facilitar la
distribución y el despliegue sin problemas.

11. Interfaz de usuario (UI): Define la interfaz de usuario del sistema y cómo los
usuarios interactuarán con el software.

12. Gestión de errores y excepciones: Considera cómo se manejarán los errores y


excepciones en el sistema para garantizar un comportamiento robusto y confiable.
CONCLUSIÓN

La arquitectura de software es una parte crítica a la hora de planificar el rumbo de la


aplicación o servicio. Esto es debido a que ofrece una ruta distinguible que se deberá
seguir para el desarrollo, indicando las instrucciones para los componentes, la
distribución y comunicación entre ellos.

Una buena arquitectura de software se logra al comprender y definir claramente los


requisitos del sistema, separar las responsabilidades y funcionalidades en módulos bien
definidos, utilizar patrones de diseño adecuados y considerar aspectos como la
escalabilidad, el rendimiento, la seguridad y la mantenibilidad.
BIBLIOGRAFIA

 https://www.lucidchart.com/blog/es/como-disenar-una-arquitectura-de-software

 https://weremote.net/arquitecto-software-que-es-funciones/

 https://canvia.com/arquitectura-
software/#:~:text=%C2%BFQu%C3%A9%20es%20la%20arquitectura%20de,pa
so%20previo%20a%20la%20implementaci%C3%B3n.

 https://openwebinars.net/blog/arquitectura-de-software-que-es-y-que-tipos-
existen/

 https://issuu.com/gracielajose/docs/revista.pptx/s/10875257

You might also like