¿Qué es la arquitectura de software?

Desarrollar  una aplicación involucra mucho más que tener la idea de lo que se quiere resolver o saber un lenguaje de programación para hacer la aplicación. Es necesario planear, definir las herramientas que vas a usar como frameworks qué mejor funcionen para este proyecto, conocer los procesos de negocio que están involucrados en la creación de  la aplicación.

El proceso de desarrollo  implica muchas horas enfocadas a entender los requerimientos que el cliente necesita para automatizar, mejorar y  definir los cimientos que permitirán modelar un sistema ya sea una aplicación de escritorio,  un sistema web  , una aplicación móvil y cualquier dispositivo programable.

La planeación inicial no siempre reflejara lo  mejor y seguro no será la definitiva, ya que en sistemas la mejora continua es parte del día a día del desarrollo 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.

¿ Es importante la arquitectura de software?

Para la informática, la arquitectura de computadoras abarca el diseño, a nivel conceptual, y la estructura en la que se basa la operación de un sistema.
La arquitectura de software nos traza un camino a 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 una empresa construye un sistema en un lenguaje de programación y con el tiempo  encuentra que  usando otro lenguaje tiene acceso a librerías  mas especializadas en su sector, o  simplemente da una mejora en tiempos de ejecución de código,  hay muchos elementos que pueden intervenir como  licenciamiento,  experiencia de los desarrolladores  entre otras.

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)

También la Arquitectura de Software genera la documentación  Técnica permitirá a los equipos de desarrollo entender  los requerimientos que están en Casos de Uso..

 

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 que lenguaje se utilizara, que marcos de trabajo se requerirán, en que especificaciones de equipos esta destinado a funcionar el sistema o sistemas.
  • Análisis:  En esta etapa se  profundiza en los procesos de negocio que están involucrados en el sistema, y se procede a generar los casos de uso a nivel de borrador hasta tener la información necesaria para cada caso.
  • 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 los patrones de diseño  como por ejemplo MVC (Modelo, Vista, Controlador) o arquitectura de microservicios, Directorios de datos.
  • 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,  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 demas información que se requiera entregar al equipo de Desarrollo ejemplo Diagramas UML,  Diagramas de Procesos, Manuales, etc.
  • Desarrollo:  En esta etapa los programadores tienen asignadas tareas especificas y el arquitecto de software estará  probando los diferentes módulos para poder hacer mejoras, o correcciones al sistema final.
  • Pruebas: 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.
  • Implementación: en esta etapa se realiza el montar el sistema  en producción y evaluar su comportamiento, verificando qué funciona correctamente.

Los arquitectos de Software son parte clave de los proyectos  de Software de las compañías,  puede llegar a tener casos donde varios arquitectos de software trabajan  en el desarrollo de secciones o aplicaciones especificas que trabajaran en conjunto,  con lo que se tendrá un Líder Arquitecto para  llevar el control general del proyecto.