Fundamentos de Compiladores, Arquitectura y Patrones de Diseño de Software

Clasificado en Informática

Escrito el en español con un tamaño de 6,09 KB

Fases de un Compilador

El proceso de compilación de un programa se divide en varias fases interconectadas, cada una con un propósito específico:

  • Análisis Lexicográfico

    Se leen todos los caracteres del código fuente y se agrupan en cadenas llamadas lexemas. Durante esta fase, se elimina todo lo no necesario, como comentarios o espacios en blanco, para generar una secuencia de tokens.

  • Análisis Sintáctico-Semántico

    Agrupa los componentes léxicos (tokens) en forma de frases gramaticales (árboles sintácticos) y se comprueba que todo es correcto según las reglas gramaticales y semánticas del lenguaje de programación.

  • Generación de Código Intermedio

    Se crea una representación del programa a modo de pseudoensamblador, que es independiente de la máquina final. Este código facilita las fases posteriores de optimización.

  • Optimización de Código

    Se optimiza el código intermedio anterior para que la máquina lo entienda y ejecute de manera más eficiente, reduciendo el tiempo de ejecución y el uso de recursos.

  • Generación de Código Máquina

    Se crea el código final en lenguaje máquina, específico para la arquitectura de destino. Este código es directamente ejecutable por el procesador.

  • Enlazador de Librerías

    Se enlaza nuestro código compilado con las librerías externas necesarias (funciones precompiladas) y se crea el código ejecutable final, listo para ser distribuido y ejecutado.

8. Arquitectura de Software

También conocida como arquitectura lógica, es un conjunto de decisiones fundamentales que definen, a nivel de diseño, los componentes de un sistema de software y sus interacciones. Estas decisiones son cruciales para que el proyecto llegue a buen término, estableciendo los fundamentos para el equipo de desarrollo y la evolución futura del sistema.

Componentes Fundamentales de la Arquitectura

  • Usuario: Representa el elemento con el que interactúa el usuario final, generalmente a través de una interfaz gráfica o de línea de comandos.
  • Reglas de Negocio: Son las que procesan la información, implementando la lógica específica del dominio para generar el resultado esperado.
  • Gestión de Datos: Se encarga del almacenamiento, la recuperación y la manipulación eficiente de la información persistente del sistema.

Arquitecturas de Software Comunes

Arquitectura Monolítica

En esta arquitectura, el software se estructura en grupos funcionales, y todas las capas (presentación, lógica de negocio, datos) residen en el mismo servidor o proceso. Es una arquitectura tradicional, compacta y relativamente sencilla de desplegar inicialmente.

Arquitectura Cliente-Servidor

El software se reparte en dos partes principales: un lado solicita información o servicios (el cliente) y el otro, una computadora o proceso más potente, procesa las peticiones y envía las respuestas (el servidor). Permite la distribución de la carga de trabajo.

Arquitectura de Tres Niveles (o Capas)

Es una evolución de la arquitectura Cliente-Servidor, más compleja y escalable. La carga de trabajo se reparte en tres capas principales bien diferenciadas: presentación (interfaz de usuario), lógica de negocio (o cálculo) y almacenamiento (o datos).

8.1 Patrones de Diseño de Software

Los patrones de diseño son soluciones probadas y reutilizables a problemas comunes que surgen en el diseño de software. Establecen los componentes, la funcionalidad y el comportamiento de cada uno dentro de un sistema, facilitando el desarrollo y mantenimiento.

Tipos de Patrones de Diseño

  • Patrones Creacionales

    Definen el modo en que se construyen y se instancian los objetos, haciendo el sistema independiente de cómo se crean sus objetos. Ejemplos incluyen Factory Method y Singleton.

  • Patrones Estructurales

    Establecen las relaciones y organizaciones entre los distintos componentes de nuestro software, facilitando la composición de objetos y clases para formar estructuras más grandes. Ejemplos incluyen Adapter y Decorator.

  • Patrones de Comportamiento

    Describen las comunicaciones y la interacción entre objetos y clases, mejorando la flexibilidad y la reutilización del código. Ejemplos incluyen Observer y Strategy.

  • Patrones de Interacción

    Su objetivo es definir diferentes directrices y modelos para la creación de interfaces de usuario, mejorando la experiencia y usabilidad del sistema.

8.2 Desarrollo en Tres Capas

El desarrollo en tres capas es una arquitectura común para organizar el código de una aplicación, separando claramente las responsabilidades y facilitando la escalabilidad y el mantenimiento:

  • Capa de Presentación

    Es la capa que ve el usuario final en su pantalla. Se encarga de la interfaz de usuario, permitiendo la entrada de datos hacia el programa y mostrando los resultados de manera comprensible.

  • Capa de Negocio (o Lógica de Negocio)

    Aplica las reglas de negocio para la gestión de datos y la lógica central de la aplicación. Alberga los programas principales y se comunica tanto con la capa de presentación como con la capa de datos.

  • Capa de Datos

    Es la capa de acceso a datos, utilizada para solicitar cómo persistir la información. Los datos se guardan en una base de datos (relacional, NoSQL, etc.) y se devuelve la confirmación del proceso o, por el contrario, un mensaje de error.

Entradas relacionadas: