58

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

161561Puntos

hace 4 años

Fundamentos de Arquitectura de Software
Fundamentos de Arquitectura de Software

Fundamentos de Arquitectura de Software

Complementa tu formación profesional en Desarrollo de Software, identifica el rol del arquitecto de software dentro de la organización. Analiza requerimientos e identifica el estilo arquitectónico indicado para tu proyecto. Toma las mejores decisiones para desarrollar las aplicaciones y el software que tus clientes y usuarios necesitan.

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:

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.

Fundamentos de Arquitectura de Software
Fundamentos de Arquitectura de Software

Fundamentos de Arquitectura de Software

Complementa tu formación profesional en Desarrollo de Software, identifica el rol del arquitecto de software dentro de la organización. Analiza requerimientos e identifica el estilo arquitectónico indicado para tu proyecto. Toma las mejores decisiones para desarrollar las aplicaciones y el software que tus clientes y usuarios necesitan.
Diego Alexander
Diego Alexander
gollum23

161561Puntos

hace 4 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
2
40558Puntos

¡Excelente Diego! Un curso que he estado esperando 😃

1
2723Puntos

¡Interesante! dedicaré el tiempo restante de mi suscripción al curso.

1
597Puntos

https://platzi.com/r/A3mosqueda/ Agradezco mucho a quien pueda ayudarme con un mes. Aquí en Venezuela se me hace muy difícil adquirir dolares y se me hace muy costoso pagarlos por AirTM. Quien pueda ayudarme, yo con lo que pueda le voy pagando el curso por AirTM poco a poco. Solo quisiera adquirir conocimientos por Web ya que tampoco puedo pagar la universidad. Sigo esta pagina desde que se llamaba “mejorando.la” y la verdad que es bastante buena. Saludos

1

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

0

Excelente post. Un buen resumen. Gracias.

0
12007Puntos

¡muy buen articulo!

0

Este ha sido uno de mis blogs favoritos! Justo ahora para empezar el desarrollo de una app! Gracias 🤘🏾

0
559Puntos

Muy buen artículo

0
732Puntos

Buen articulo, muchas gracias!B