Arquitecturas de Software
Arquitecturas más comunes
- Arquitectura Monolítica: El software se estructura en grupos funcionales ajustados.
- Arquitectura Cliente-Servidor: El software distribuye la carga de cálculo en dos partes independientes, pero sin una clara separación de funciones.
- Arquitectura de Tres Niveles: Especialización de la arquitectura cliente-servidor con tres capas: presentación (interfaz de usuario), lógica de negocio (donde se modela el negocio) y datos (persistencia). Cada capa solo interactúa con la adyacente.
- Patrón MVC (Modelo-Vista-Controlador): Modelo de diseño para aplicaciones web con tres partes:
- Modelo: Representa la información con la que trabaja el sistema, limitándose a lo relativo a la vista y su controlador.
- Vista: Presenta el modelo en un formato interactivo para el usuario. Es la interfaz de usuario.
- Controlador: Responde a eventos (acciones del usuario) y realiza peticiones al modelo.
Compilación
La compilación traduce un programa escrito en un lenguaje de programación a una secuencia de instrucciones en código máquina. Consta de dos etapas:
- Análisis del programa fuente: Análisis léxico, sintáctico y semántico.
- Síntesis del programa objeto: Generación y optimización de código.
Etapas de la Compilación
- Análisis Léxico: Identifica los elementos del programa (operadores, variables, etc.).
- Análisis Sintáctico: Verifica la correcta estructura del programa según la gramática del lenguaje.
- Análisis Semántico: Analiza el significado del código y detecta construcciones incorrectas (ej. asignar un valor de tipo cadena a una variable de tipo entero).
- Optimización: Mejora el código intermedio generado tras el análisis para una ejecución más eficiente.
- Generación de Código: Crea el código ejecutable final a partir del código intermedio optimizado.
Fases del Desarrollo de una Aplicación
- Toma de Requisitos: Define las funcionalidades de la aplicación.
- Análisis: Describe el sistema, incluyendo infraestructura, roles de usuario, arquitectura, persistencia de datos e interfaces.
- Diseño: Detalla las funcionalidades y los componentes utilizados.
- Programación: Implementa la aplicación, incluyendo pruebas y documentación (para el usuario final y para el mantenimiento del código).
- Explotación: Puesta en producción del software, con posibles pruebas adicionales y formación al usuario final.
- Mantenimiento: Corrección de errores y adición de nuevas funcionalidades.
Control de Versiones
Gestiona los cambios en un producto o configuración. Un sistema de control de versiones (SVC) facilita esta gestión. Ejemplos: CVS, Subversion.
El control de versiones del código fuente se realiza mediante sistemas de control de código fuente (SCM).
Tipos de Control de Versiones
- Centralizados: Mayor control administrativo, menor flexibilidad. Ejemplos: CVS, Subversion. Ventajas: Control centralizado del trabajo en equipo, versiones identificadas por número.
- Distribuidos: Cada usuario tiene su propio repositorio, sincronizado con un repositorio central. Ejemplos: Git, Mercurial. Ventajas: Menor dependencia de la red, posibilidad de trabajo offline.