abril 26, 2024

BitCuco

¡Hola Mundo!

arquitectura de software

La arquitectura de software desde el comienzo, ha constituido la estructura fundamental sobre la cual se desarrollan todos los proyectos de software. Define no solo los componentes de software que debe utilizar un desarrollo específico, tales como utilizar el lenguaje de programación X con el framework Y en el ambiente Z; sino distingue un estado especial de desarrollo, un patrón, en el cuál todos los proyectos desarrollados en una empresa o institución se deben seguir.

Normalmente hay muchos puntos a tratar en la arquitectura de software, más allá del estado del arte teórico, inspiración inicial para el desarrollo de ésta rama de las Ciencias de la Computación.

Hay muchos ejemplos sobre muchos patrones descritos por todos lados, tanto en Wikipedia, como en muchos libros universitarios, en manuales de las empresas, etc. Sin embargo, es importante mostrar la definición de éste concepto.

arquitectura de software

Definición de Arquitectura de Software

Es el conjunto de elementos de software, basado en los objetivos particulares que conlleva el desarrollo, visto desde varios puntos:

Lógica: Todo el aspecto de abstracciones, tanto lógica, matemática involucrada, patrones, y todo aquello que se puede abstraer en un marco implementado en código del software. Ésta la podemos comparar como la gasolina para el motor de un carro o la electricidad para un vehículo eléctrico.

Estructural: Son todos aquellos requisitos y restricciones fijados en base a los objetivos de la empresa. Constituye la parte fundamental del proyecto, tal como las partes de un edificio: diseño, desarrollo, mantenimiento, calidad, pruebas, interacción con otros sistemas, etc.

En ésta parte se hace la diferenciación entre diferentes tipos de arquitectura, dependiendo del uso. Si lo comparamos con el ejemplo del carro, aquí tenemos el tipo de carro, de acuerdo al uso necesario para la empresa: tractor, autobús, avión, motocicleta o automóvil autónomo.

Física: Son los componentes físicos con los cuáles vamos a desarrollar el proyecto, tanto los medios de comunicación, herramientas o materiales, plataformas, equipos e interfaces para llevar a cabo el funcionamiento correcto del proyecto. Si lo vemos desde el ejemplo del carro, se compara con cada una de las partes físicas del carro, las cuáles en conjunto forman todo el sistema funcional.

Algunos otros autores, definen los tipos de arquitectura de software como estática (componentes), funcional (funcionamiento de cada componente) y dinámica (comportamiento de los componentes y su interacción), sin embargo el estado del arte es el mismo para ambos tipos de definiciones.

Ejemplos de Arquitectura de Software

Generalmente los tipos de estructuras han sido cuidadosamente estudiados y la mayoría de las veces no es necesario reinventar la rueda, por lo tanto aquí les muestro algunas de las arquitecturas de software más utilizadas en los proyectos a mediana y gran escala.

Arquitecturas de Software de propósito General

Son aquellas Arquitecturas de Software utilizadas para los desarrollos de software estándar, es decir, aquellos que son fácilmente acoplables a un gran número de proyectos, y son casi siempre agnósticos del lenguaje de programación para implementarlos.

Descomposición Modular: Se manejan todos los componentes de la arquitectura a través de módulos, los cuáles pertenecen a cierto grado de jerarquía, con la cuál obedecen a interacciones con los otros módulos. Toda la comunicación se hace hacia el siguiente nivel de jerarquía superior, al igual que el inferior, por lo tanto están totalmente acoplados.

Cliente Servidor: Es una arquitectura muy utilizada en la web y en toda aplicación que requiere el consumo de un servidor. Contiene dos componentes principales:

Frontend: Es el cliente encargado de hacer todas las operaciones en la parte del usuario y también encargado de enviar solicitudes al servidor y de procesar sus respuestas.

Backend: Es el servidor encargado de procesar todas las solicitudes enviadas por el cliente. También se encarga de la autenticación de los clientes, y de obtener todos los recursos necesarios para procesar las respuestas que envía a su vez al cliente.

Arquitectura de tres capas: Es utilizada como patrón para desarrollo de software para separar las capas de la lógica de negocio, del diseño y de la persistencia de datos. Ésta arquitectura se implementa generalmente para cada entorno de desarrollo en forma individual, tanto frontend, backend y móvil, por ejemplo el patrón MVVM.

Conclusiones

Al elegir una arquitectura de software correcta, los desarrollos se simplifican, se mantienen procedimientos establecidos y se facilita la gestión de proyectos, hasta el grado de llevarlos a un enfoque estándar.

Aún cuando sólo mencionamos algunos de los tipos y ejemplos de esos tipos más comunes, la arquitectura de software es otra rama de las Ciencias de la Computación, que requiere un estudio más detallado para mostrar las diferentes capacidades de cada arquitectura.