68

Qué es la arquitectura de software: más allá de la programación

175646Puntos

hace 6 años

Crear una aplicación involucra mucho más que tener la idea o saber un lenguaje de programación para hacer la aplicación. Es necesario planear, definir las herramientas que vas a usar como frameworks que mejor funcionen para este proyecto.

Puede que esta planeación inicial no sea la mejor y seguro no será la definitiva pero de esta primera iteración parte el éxito o fracaso de una aplicación, aquí es donde entra el concepto de arquitectura de software.

¿Qué es la arquitectura de software?

En palabras simples la arquitectura de software son patrones o lineamientos que ayudan a la construcción de un programa (aplicación). Estos patrones permiten tener una guia para los desarrolladores, analistas y todos los cargos relacionados para lograr cumplir con los requerimientos de la aplicación.

¿Por qué es importante la arquitectura de software?

Como mencioné la arquitectura de software nos traza un camino por el cual seguir para lograr cumplir con los requerimientos de la aplicación, por lo tanto tenemos que analizar cada uno de estos requerimientos para definir qué se va a hacer y cómo se va a hacer, aquí se comienza a definir temas como servidores, tecnologías, bases de datos entre otras cosas.

El definir las tecnologías es uno los puntos más importantes de la arquitectura de software pero no quiere decir que si se toma una decisión sea algo definitivo que no se pueda modificar en el futuro. Por ejemplo Uber tenía la parte realtime de los mapas usando node.js, esta fue su primera implementación y funcionaba, llegó un punto donde no estaba escalando de la manera correcta y migraron a usar go para esta parte realtime.

Uno de los objetivos de la arquitectura de software es crear una estructura de la aplicación que sea fácilmente escalable, que no esté fuertemente acoplada (que todo dependa de todo, lo que evita hacer cambios de manera sencilla)

Definición de la estructura

Para definir de la mejor forma la estructura de nuestra aplicación con base en la arquitectura de software tenemos 4 etapas principales:

  • Requerimientos: En esta etapa se recolecta la información y se documentan los requerimientos que influyen en la arquitectura de la aplicación, por ejemplo un color del menú no afecta al arquitectura, pero si por ejemplo la forma de guardar la información.

  • Diseño: Es la etapa más crucial, aquí se define el uso de tecnologías adecuadas para resolver el problema y no solo porque una tecnología está de moda. También se tienen en cuenta patrones como por ejemplo MVC (Modelo, Vista, Controlador) o arquitectura de microservicios.

  • Documentación: Una vez se ha definido el diseño es necesario comunicarlo de manera eficiente y eficaz a todos los involucrados, es importante crear documentación que sirva como referencia a todos y sea el marco de trabajo para todos.

  • Evaluación: Es importante luego de tener la documentación evaluar, esto se puede hacer incluso sin haber hecho una línea de código y ver con todos los involucrados si hay algo en el diseño que pueda no funcionar y reformarlo, esta evaluación se debería hacer posterior teniendo métricas por ejemplo del rendimiento de la aplicación y saber si un cambio mejora o no dicho rendimiento.

👩‍🎓 Tus responsabilidades como arquitecta de software

Ejemplo de arquitectura de software

Antes de hacer diagramas, definir requerimientos o empezar a programar, debemos entender el problema que vamos a resolver.

Todo sistema empieza con una idea. Existe un problema que podemos resolver generando valor para los usuarios y obteniendo un beneficio. En este punto también es importante definir qué vamos considerar éxito, así podremos enfocar todas nuestras decisiones en alcanzarlo.

Recuerda que al no entender la diferencia entre problema y solución, podemos tratar cuestiones tecnológicas (como limitaciones de una herramienta en particular) como parte del problema, cuando en realidad son detalles de la implementación.

El siguiente paso es definir los requerimientos, los dividimos en 3 grupos:

  • Requerimientos de negocio: son las reglas y funcionalidades más generales que necesita tu sistema.
  • Requerimientos de usuario: se relacionan con cómo se desenvuelven los usuarios usando la aplicación. También nos encargamos de los atributos de calidad, es decir, qué elementos específicos del sistema nos importan por sobre otros.
  • Requerimientos funcionales: se alimentan de las 3 capas de requerimientos anteriores para definir qué hay que hacer para conseguir cada funcionalidad en particular. También tienen en cuenta las restricciones y elementos operativos.

Por supuesto, como arquitectos de software también debemos considerar los riesgos y limitaciones para elaborar el plan del equipo, priorizar el trabajo y no invertir el tiempo de nuestros colaboradores en desarrollar una solución que no resuelve nuestro verdadero problema.

👩‍🔬 ¡Conviértete en Arquitecta de Software!

Comprendiendo la arquitectura de software de tu organización podrás entender a profundidad el camino que sigue tu equipo para resolver las problemáticas de sus usuarios, entenderás mucho mejor cuál es el objetivo de tu empresa y cómo puedes aportar para alcanzarlo.
Conoce estos 3 consejos para comenzar a ser un buen Arquitecto Frontend.

Te recomiendo seguir esta ruta de aprendizaje suprémamente completa para convertirte en una Arquitecta de Software Profesional.

Empieza tu camino en arquitectura de software:

Asegúrate de entender DevOps profesionalmente:

Profundiza en arquitectura y gestión de proyectos ágiles:

Asegúrate de cumplir las expectativas de tus usuarios:

Descubre qué es el modelo TCP/IP

Aprende más sobre arquitectura de software tomando el curso de fundamentos de arquitectura de software aquí en Platzi.

También te recomendamos el blogpost: Arquitecturas de Software en Android: MVC, MVP y MVVM.

Diego Alexander
Diego Alexander
gollum23

175646Puntos

hace 6 años

Todas sus entradas
Escribe tu comentario
+ 2
1

Key Technologies and Trends

Despite the challenges, IoT fleet management is a rapidly evolving field, with new technologies and trends emerging all the time. Some of the key technologies and trends to watch include:

5G networks: The rollout of 5G networks promises to provide faster and more reliable connectivity, enabling real-time data transfer and analysis on a massive scale. Read more https://a-team.global/solutions/iot-fleet-management/ for more details.

Edge computing: Edge computing involves processing data at the edge of the network, closer to the source of the data. This can reduce latency and improve real-time decision making, making it ideal for IoT fleet management applications.

1

Para mi proyecto de grado debo hacer la arquitecta de software, pero me piden una tabla. Alguien tiene una referencia quiza.