Desarrollo de software
Actividad que consiste en diseñar, programar, probar, entregar y mantener en evolución un software que responde a necesidades identificadas.
PANACHES Knowledge
Este glosario explica el vocabulario del desarrollo de software, desde los primeros conceptos de programación hasta la puesta en producción. También cubre la creación de interfaces, los datos, las he…
790 términos para explorar
790 términos
30 términos
Actividad que consiste en diseñar, programar, probar, entregar y mantener en evolución un software que responde a necesidades identificadas.
Escritura y organización de instrucciones que una máquina podrá ejecutar tras su interpretación o traducción.
Texto escrito en un lenguaje de programación, antes o con independencia de su transformación en programa ejecutable.
Conjunto de instrucciones destinado a producir un comportamiento cuando se ejecuta en un entorno adecuado.
Conjunto de programas, recursos y datos que constituyen un producto o un servicio informático.
Software diseñado para prestar un servicio a un usuario o a otro sistema.
Programa empleado a menudo para automatizar una tarea u orquestar herramientas; su tamaño y modo de ejecución varían.
Sistema de notación dotado de reglas que permite expresar cálculos y comportamientos ejecutables.
Lenguaje que estructura contenidos mediante marcadores; HTML describe documentos y no es, por sí mismo, un lenguaje de programación de propósito general.
Lenguaje diseñado para interrogar o manipular datos, como SQL; algunos ofrecen también funciones procedurales.
Reglas que determinan cómo ensamblar los símbolos y las construcciones válidas de un lenguaje.
Significado o comportamiento asociado a las construcciones de un lenguaje, más allá de su forma sintáctica.
Construcción que solicita realizar una acción, como una asignación o un retorno.
Construcción evaluada para producir un valor, eventualmente acompañada de efectos secundarios.
Instrucción que reúne varias instrucciones bajo una estructura común, como un bloque condicional.
Nombre utilizado para designar una variable, una función, una clase u otro elemento del programa.
Palabra reservada o dotada de un rol especial en la gramática de un lenguaje.
Escritura directa de un valor en el código, por ejemplo 42, true o "hola".
Texto del código destinado a los lectores o a las herramientas, generalmente ignorado durante la ejecución.
Regla colectiva para formar nombres coherentes, como snake_case o camelCase.
Espaciado inicial de las líneas que facilita la lectura y participa a veces en la sintaxis, especialmente en Python.
Grupo de instrucciones delimitado por la sintaxis del lenguaje o por su indentación.
Ubicación a partir de la cual arranca la ejecución de un programa o de un componente.
Puesta en práctica de las instrucciones de un programa por un entorno hardware o software.
Conjunto de servicios y mecanismos necesarios para la ejecución de un programa, más allá de su solo código.
Fichero que contiene código e información que permite su carga y arranque por un sistema compatible.
Componente externo cuyo uso es necesario para el funcionamiento de un proyecto.
Capacidad de una nueva versión para aceptar los usos o datos de una versión anterior; las garantías exactas dependen del contrato.
Señal de que una funcionalidad sigue disponible por el momento pero ya no se recomienda y podría ser retirada.
Estado de una tecnología o funcionalidad que ya no es adecuada, soportada ni mantenida según un contexto dado.
40 términos
Nombre asociado a un valor o a una ubicación cuyo contenido puede cambiar eventualmente según el lenguaje.
Valor o enlace presentado como no reasignable; esto no implica siempre la inmutabilidad de los objetos referenciados.
Operación que atribuye un valor a una variable, un campo o una ubicación.
Introducción de un nombre y, eventualmente, de su tipo, alcance o propiedades.
Atribución del estado o del primer valor utilizable de una variable o de un objeto.
Conjunto de valores posibles acompañado de las operaciones y restricciones asociadas a ellos.
Tipo elemental propuesto directamente por un lenguaje o su entorno, según una clasificación propia de este.
Tipo lógico que representa dos valores, generalmente verdadero y falso.
Número sin parte fraccionaria, con un tamaño y límites que dependen de su representación.
Representación numérica aproximada de un rango de valores reales; puede introducir errores de redondeo.
Representación adaptada a ciertos cálculos decimales, sobre todo financieros, sujeta a la precisión y a las reglas definidas.
Secuencia de caracteres o de unidades de texto utilizada para representar contenido textual.
Unidad textual; el punto de código Unicode, la unidad de código y el carácter percibido no siempre coinciden.
Estándar que identifica caracteres y define su tratamiento con independencia de una codificación particular.
Codificación Unicode de longitud variable, compatible con ASCII para los caracteres básicos.
Marcador de ausencia de valor o de referencia, cuyo significado preciso depende del lenguaje y del esquema.
Estado distinto de null en ciertos lenguajes, especialmente JavaScript, que señala un valor no proporcionado.
Estructura que permite acceder a varios elementos, a menudo por índice; su tamaño y homogeneidad varían.
Colección ordenada de elementos cuyas propiedades y rendimiento dependen de la implementación.
Colección de posiciones generalmente fija en número, utilizada a menudo para agrupar varios valores.
Colección de elementos únicos, generalmente sin garantía de orden conceptual.
Estructura que asocia claves con valores para realizar búsquedas por clave.
Identificador utilizado para recuperar un valor en una tabla asociativa o una estructura de datos.
Dato representado, transmitido o almacenado por una expresión, una variable o una estructura.
Posición o clave de acceso; en las secuencias, la numeración suele comenzar en cero, pero no siempre.
Medio para designar o acceder a un valor u objeto sin necesidad de copiar su contenido.
Valor que designa una dirección de memoria o una zona accesible, con reglas propias del lenguaje.
Ubicación identificada dentro de un espacio de direccionamiento físico o virtual.
Zona o mecanismo que gestiona en particular los contextos de llamada; su organización varía según el runtime.
Región de memoria utilizada sobre todo para asignaciones cuya duración de vida no sigue simplemente las llamadas.
Reserva de espacio para almacenar datos u objetos.
Restitución de una zona que ya no es necesaria, manual o automatizada.
Mecanismo que automatiza la recuperación de memoria que se ha vuelto inaccesible según sus reglas de seguimiento.
Consumo de memoria que permanece retenida cuando ya no es útil, lo que puede degradar el sistema.
Copia de una estructura que conserva las referencias hacia ciertos elementos internos.
Copia recursiva de subobjetos según reglas definidas, con el objetivo de limitar el compartido involuntario.
Propiedad que impide la modificación de un valor o de un objeto tras su creación.
Posibilidad de cambiar el estado de un objeto existente.
Transformación de una estructura en una representación transmisible o almacenable.
Reconstrucción de una estructura a partir de una representación serializada; operación que debe asegurarse cuando se usan formatos peligrosos.
34 términos
Símbolo o palabra que realiza una operación sobre uno o varios valores.
Valor o expresión sobre la que actúa un operador.
Operador que realiza un cálculo numérico, por ejemplo una suma o una división.
Operador que evalúa una relación, como igualdad, orden o identidad según el lenguaje.
Operador que combina o invierte condiciones, como Y, O o NO.
Evaluación que omite el segundo operando cuando el primero basta para determinar el resultado.
Construcción con tres operandos, utilizada con frecuencia para seleccionar un valor según una condición.
Aumento de un valor, a menudo en una unidad.
Disminución de un valor, a menudo en una unidad.
Operación que produce un resto; las reglas relativas a los números negativos difieren entre lenguajes.
Paso de un valor o de una referencia hacia otro tipo, de forma explícita o implícita.
Conversión implícita impuesta por las reglas de un lenguaje durante una operación.
Expresión cuyo resultado guía una elección de ejecución.
Modificación del recorrido de ejecución según una condición o un destino.
Construcción que ejecuta un bloque si se cumple una condición y, eventualmente, otro en caso contrario.
Construcción que elige un caso entre varios; match también puede analizar la estructura de un valor.
Construcción que repite instrucciones mientras una condición o una secuencia lo prevea.
Forma de repetición generalmente basada en un contador o en el recorrido de una colección.
Repetición que evalúa una condición antes de cada iteración.
Repetición que ejecuta su cuerpo antes de la comprobación de continuación, cuando el lenguaje lo ofrece.
Paso individual de un bucle u operación sucesiva de recorrido de una colección.
Objeto capaz de proporcionar una secuencia de elementos para recorrer según un protocolo dado.
Objeto que conserva un estado de recorrido y proporciona los elementos sucesivos.
Instrucción que abandona un bucle o una construcción seleccionable según las reglas del lenguaje.
Instrucción que pasa a la siguiente iteración de un bucle sin ejecutar el resto de la iteración actual.
Instrucción que finaliza la llamada de una función y transmite eventualmente un resultado.
Técnica en la que una función resuelve un problema llamándose a sí misma, directa o indirectamente.
Situación que detiene las llamadas recursivas e impide una recursión sin fin.
Modificación observable distinta de la producción del valor de retorno, como una escritura o una petición de red.
Señalización de una situación inhabitual que interrumpe el flujo normal hasta su posible tratamiento.
Mecanismo que permite capturar, tratar o propagar una excepción.
Bloque ejecutado al salir de una estructura de gestión de excepciones según las reglas del lenguaje, a menudo para liberar recursos.
Verificación de una hipótesis de programación que puede provocar una señal de fallo; no sustituye a una validación de datos no confiables.
Porción de programa que no puede ser alcanzada en las condiciones de ejecución consideradas.
34 términos
Unidad de código reutilizable que recibe eventualmente argumentos y produce un resultado o efectos.
Subrutina diseñada principalmente para realizar una acción; la distinción con función depende del lenguaje.
Nombre definido en la signatura de una función para recibir un dato durante la llamada.
Valor o expresión proporcionado efectivamente a una función en su llamada.
Descripción de la interfaz de llamada, que incluye según el lenguaje nombre, parámetros, tipos y resultado.
Resultado transmitido al llamante cuando una función termina normalmente.
Instrucción o expresión que desencadena la ejecución de una función con unos argumentos dados.
Función definida sin un nombre declarado, utilizada a menudo localmente o transmitida como valor.
Función entregada a un componente que la invocará durante un evento o una operación.
Función que toma una función como argumento o devuelve una función.
Función que conserva el acceso a ciertos enlaces de su contexto léxico tras la salida de este.
Zona del programa donde un nombre puede resolverse y utilizarse.
Resolución de los nombres según la estructura del código fuente y no la cadena dinámica de llamadas.
Variable accesible en un ámbito limitado, típicamente una función o un bloque.
Variable definida en un ámbito general; su uso puede aumentar el acoplamiento.
Declaración de un nombre que oculta una declaración homónima de un ámbito superior.
Unidad de organización que agrupa código y expone eventualmente una interfaz importable.
Conjunto de módulos o recursos distribuidos u organizados juntos; su significado varía según el ecosistema.
Puesta a disposición de elementos definidos en otro módulo o espacio de nombres.
Contexto que asocia identificadores a elementos para evitar o gestionar colisiones.
Elemento expuesto explícitamente por un módulo a sus consumidores.
Función cuyo resultado depende únicamente de sus argumentos y que no produce efectos secundarios observables.
Propiedad que permite reemplazar una expresión por su valor sin cambiar el comportamiento del programa.
Operación que aplica una transformación a cada elemento de una colección.
Operación que conserva los elementos de una colección que cumplen un predicado.
Operación que agrega progresivamente los elementos de una colección mediante un acumulador.
Función o expresión que evalúa una condición y devuelve un resultado lógico.
Construcción de una función encadenando los resultados de varias funciones.
Transformación conceptual de una función de varios argumentos en una sucesión de funciones de un argumento.
Fijación de algunos argumentos de una función para crear otra más especializada.
Almacenamiento en caché de los resultados de llamadas para evitar recálculos con las mismas entradas.
Construcción que produce valores a lo largo del recorrido en lugar de crear obligatoriamente toda la secuencia.
Mecanismo mediante el cual un generador produce un valor suspendiendo temporalmente su ejecución.
Objeto o construcción que enmarca la adquisición y liberación de recursos, como un fichero abierto.
32 términos
Familia de principios que organizan la forma de describir un programa, como el enfoque imperativo o el funcional.
Enfoque que describe las operaciones y los cambios de estado a realizar.
Enfoque que expresa el resultado o las restricciones buscadas en lugar de una secuencia explícita de operaciones.
Organización de un programa en torno a procedimientos y a secuencias de instrucciones.
Enfoque que modela el programa mediante objetos que asocian estado y comportamiento.
Definición que sirve para construir objetos y describir sus atributos, métodos o contratos.
Entidad software que posee una identidad o un valor, un estado eventual y operaciones asociadas según el modelo.
Objeto creado a partir de una clase o de un modelo particular.
Dato o propiedad vinculado a un objeto o a una clase.
Función asociada a un objeto, una clase o un tipo.
Mecanismo que interviene durante la creación o inicialización de un objeto.
Mecanismo de finalización previsto por ciertos lenguajes; su momento de ejecución puede ser incierto.
Agrupación de datos y operaciones detrás de una interfaz que controla su acceso.
Representación que expone los aspectos necesarios y oculta detalles de implementación.
Mecanismo que permite derivar una clase o un tipo de otro para reutilizar o especializar su comportamiento.
Construcción de un objeto a partir de otros objetos, privilegiando una relación «contiene».
Posibilidad de utilizar una interfaz común con implementaciones o tipos diferentes.
Definición de varias variantes de una operación diferenciadas, entre otros aspectos, por sus parámetros según el lenguaje.
Aportación, en un subtipo, de una nueva implementación de un método heredado.
Contrato que describe las operaciones accesibles sin imponer necesariamente su implementación.
Clase diseñada para servir de base y que puede contener operaciones sin implementación completa.
Conjunto reutilizable de comportamientos añadido a una clase o un objeto, según los mecanismos del lenguaje.
Unidad de comportamientos o de contratos reutilizables; sus reglas difieren entre Rust, PHP y otros lenguajes.
Definición de estructuras o funciones parametrizadas por tipos.
Tipo construido a partir de un modelo y uno o varios parámetros de tipo.
Práctica que consiste en explotar un objeto según las operaciones que ofrece, más que por su clase declarada.
Compatibilidad de tipos determinada por su forma y sus miembros, y no por una declaración común.
Compatibilidad determinada principalmente por la identidad o las relaciones declaradas entre tipos.
Conjunto de cinco principios de diseño orientado a objetos destinados, entre otros fines, a controlar responsabilidades y dependencias.
Principio que invita a concentrar un módulo en una responsabilidad coherente, interpretada según el contexto.
Principio según el cual los módulos de alto nivel y de bajo nivel dependen de abstracciones adecuadas.
Aportación de los componentes necesarios desde el exterior, en lugar de su creación directa en el seno del consumidor.
37 términos
Sucesión finita y precisa de etapas destinada a resolver un problema o a realizar un cálculo.
Descripción informal de un algoritmo que privilegia la lógica sobre la sintaxis de un lenguaje concreto.
Representación gráfica de procesos y decisiones mediante formas conectadas.
Estimación del crecimiento del tiempo de cálculo en función del tamaño de la entrada.
Estimación del crecimiento de los recursos de memoria necesarios según el tamaño del problema.
Cota asintótica superior de crecimiento, utilizada a menudo para expresar un coste algorítmico.
Cota asintótica inferior de una función de coste o de crecimiento.
Encaje asintótico a la vez superior e inferior de una función.
Entrada o situación que conduce al coste más favorable para un tamaño dado.
Entrada o situación que produce el coste máximo considerado para un tamaño dado.
Coste medio por operación sobre una secuencia de operaciones, sin suponer necesariamente una distribución aleatoria.
Búsqueda que recorre sucesivamente los elementos hasta encontrar el objetivo o agotar la colección.
Búsqueda que divide repetidamente un dominio ordenado en dos para reducir las posibilidades.
Organización de elementos según una relación de orden definida.
Algoritmo de ordenación que particiona los elementos alrededor de un pivote, con rendimientos sensibles a las particiones.
Algoritmo que divide los datos y luego fusiona subconjuntos ordenados, generalmente en tiempo O(n log n).
Ordenación que construye progresivamente una parte ordenada, eficaz sobre todo con datos pequeños casi ordenados.
Ordenación que preserva el orden relativo de los elementos comparados como iguales.
Estructura que transforma las claves en ubicaciones para acelerar en promedio su búsqueda.
Situación en la que diferentes claves conducen a la misma ubicación o a la misma huella.
Estructura de elementos unidos por referencias, que facilita ciertas inserciones a costa de accesos secuenciales.
Estructura en la que el último elemento añadido es el primero en retirarse.
Estructura en la que el primer elemento añadido es el primero en retirarse.
Colección cuya retirada favorece los elementos según una prioridad y no solo por su orden de llegada.
Estructura jerárquica de nodos enlazados sin ciclo en su forma clásica.
Árbol en el que cada nodo tiene como máximo dos hijos.
Árbol cuyos nodos respetan una relación de orden que facilita búsquedas y actualizaciones.
Árbol casi completo generalmente almacenado en un array y ordenado localmente por prioridad.
Conjunto de vértices y enlaces que modelan relaciones, orientadas o no.
Exploración de un grafo por niveles mediante una cola.
Exploración que sigue una rama lo más lejos posible antes de retroceder.
Método que reutiliza los resultados de subproblemas solapados para evitar su recálculo.
Método que realiza elecciones locales sucesivas, cuya optimalidad global debe justificarse según el problema.
Resolución que descompone un problema en subproblemas y luego combina sus resultados.
Exploración de soluciones candidatas con abandono de una rama cuando ya no conviene.
Regla práctica que busca una solución aceptable sin garantizar siempre el óptimo.
Propiedad que permanece verdadera antes y después de cada iteración y ayuda a demostrar la corrección.
43 términos
Herramienta que traduce un lenguaje fuente hacia otra representación, a menudo código máquina o un lenguaje intermedio.
Programa que evalúa o ejecuta instrucciones mediante un entorno de interpretación; ciertas implementaciones combinan compilación e interpretación.
Instrucciones binarias propias de una arquitectura de procesador y ejecutables por esta.
Lenguaje de bajo nivel que representa instrucciones máquina mediante nemónicos y símbolos.
Representación intermedia de instrucciones destinada a una máquina virtual o a un motor de ejecución.
Entorno software que ejecuta bytecode o código intermedio, como la JVM.
Compilación durante la ejecución, a menudo para optimizar las porciones de código más utilizadas.
Traducción del código antes de su ejecución, por oposición a la compilación en tiempo de ejecución.
Traducción de un lenguaje de alto nivel hacia otro de nivel comparable, por ejemplo TypeScript a JavaScript.
Herramienta que transforma el texto fuente antes de las etapas principales de compilación.
Herramienta que reúne objetos compilados y resuelve sus símbolos para producir un artefacto enlazado.
Componente que carga un ejecutable y sus dependencias en memoria antes de su arranque.
Conjunto coordinado de compilador, enlazador, herramientas de compilación y otros utilitarios.
Conjunto de herramientas, bibliotecas y documentación que permiten desarrollar para una plataforma o un servicio.
Contrato que expone funciones, operaciones o datos utilizables por otros programas; una API no es necesariamente accesible por red.
Convención que define cómo interactúa el código compilado a nivel binario: llamadas, datos, símbolos y otras reglas.
Lenguaje cuyas numerosas comprobaciones de tipos se realizan antes de la ejecución; pueden existir comportamientos dinámicos.
Lenguaje en el que la pertenencia de los valores a los tipos se determina y verifica principalmente en tiempo de ejecución.
Determinación automática de tipos por el compilador o una herramienta a partir del contexto.
Conjunto de garantías que limitan ciertas operaciones incompatibles con los tipos, según definiciones variables.
Modelo en el que el programador controla explícitamente asignaciones y liberaciones.
Sistema que asocia las responsabilidades de posesión y de duración de vida a los valores, especialmente en Rust.
Acceso temporal a un valor sin transferencia de propiedad, enmarcado por las reglas del lenguaje.
Periodo durante el cual una referencia o recurso sigue siendo válido según las garantías del programa.
Producción de un programa para una plataforma distinta de aquella que realiza la compilación.
Sistema, arquitectura y entorno para los que se construye un artefacto.
Bucle interactivo que lee una expresión, la evalúa, muestra el resultado y vuelve a empezar.
Lenguaje versátil de tipado dinámico, empleado especialmente para scripts, automatización, web y cálculo científico.
Lenguaje de programación estandarizado por ECMAScript, utilizado en los navegadores y en numerosos entornos de servidor.
Lenguaje que añade, entre otros, un sistema de tipos estáticos a JavaScript y generalmente se transforma en JavaScript para su ejecución.
Lenguaje orientado a objetos y multiparadigma, generalmente compilado a bytecode ejecutado, entre otros, sobre la JVM.
Lenguaje de propósito general cercano a las representaciones máquina, utilizado, entre otros fines, para sistemas y bibliotecas.
Lenguaje de propósito general derivado de C, que combina programación de bajo nivel, objetos, genéricos y abstracciones.
Lenguaje multiparadigma del ecosistema .NET utilizado, entre otros fines, para aplicaciones, servicios y juegos.
Lenguaje de sistemas con control estático de la propiedad y los préstamos, orientado a la seguridad de memoria sin recolector de basura obligatorio.
Lenguaje compilado diseñado en torno a la simplicidad de las herramientas, la concurrencia y los servicios de red.
Lenguaje utilizado con frecuencia en el lado del servidor para producir aplicaciones y páginas web dinámicas.
Lenguaje dinámico orientado a objetos, conocido sobre todo por el framework Ruby on Rails.
Lenguaje de tipado estático, interoperable con Java y utilizado para Android y el servidor.
Lenguaje desarrollado para las plataformas Apple y otros entornos, con gestión moderna de tipos y de memoria.
Lenguaje declarativo de consulta y gestión de bases de datos relacionales, con dialectos propios de cada sistema.
Shell y lenguaje de script empleado para lanzar comandos y automatizar tareas en sistemas compatibles.
Formato de instrucciones binario portátil, diseñado para una ejecución aislada y eficiente en diversos hosts.
39 términos
Conjunto de funciones, tipos o recursos reutilizables que un programa invoca para realizar determinadas tareas.
Estructura y herramientas que organizan el desarrollo de una aplicación y controlan a menudo parte de su flujo.
Componente que se inserta en una cadena de procesamiento para aplicar una función transversal a las peticiones o respuestas.
Estructura destinada a transportar datos entre capas o servicios sin llevar necesariamente la lógica de negocio.
Organización de los componentes, de sus responsabilidades y de sus interacciones, con las decisiones estructurales del sistema.
Grado de dependencia entre elementos software; un acoplamiento elevado suele dificultar los cambios.
Grado de proximidad de las responsabilidades reunidas dentro de un módulo.
División del sistema en partes cuyas funciones son distintas y comprensibles.
Organización que favorece componentes autónomos y reemplazables gracias a interfaces definidas.
Aplicación desplegada o ejecutada como una unidad principal, aunque su código pueda seguir siendo modular.
Aplicación desplegada como un todo pero dividida en módulos con fronteras y dependencias explícitas.
Arquitectura que reparte un sistema en servicios autónomos que se comunican mediante interfaces, con un coste operativo mayor.
Modelo en el que un cliente solicita servicios a un servidor mediante un mecanismo de comunicación.
Organización que separa las funciones por niveles, como presentación, lógica de negocio y acceso a datos.
Diseño que aísla el núcleo de negocio de las interfaces técnicas mediante puertos y adaptadores.
Familia de principios que orientan las dependencias del dominio y los casos de uso hacia el interior.
Patrón que separa los datos y la lógica de aplicación, la presentación y el tratamiento de las interacciones.
Patrón en el que un modelo de presentación conecta el estado y la interfaz, a menudo con mecanismos de enlace de datos.
Solución general reutilizable a un problema de diseño recurrente, que debe adaptarse en lugar de copiarse mecánicamente.
Patrón que persigue una instancia compartida controlada; puede introducir estado global difícil de probar.
Construcción que centraliza o abstrae la creación de objetos.
Patrón que traduce una interfaz a otra esperada por el código consumidor.
Patrón en el que los suscriptores son notificados cuando el estado o los eventos de un sujeto cambian.
Patrón que hace intercambiables varios algoritmos detrás de una interfaz común.
Abstracción que agrupa las operaciones de acceso a las entidades o agregados persistidos.
Componente que lleva a cabo una operación del dominio que no encaja de forma natural en una entidad.
Enfoque que estructura el software en torno a los conceptos del negocio y un lenguaje compartido con los especialistas.
Objeto del dominio identificado por una identidad persistente y no solo por sus valores.
Elemento del dominio definido por sus propiedades, más que por una identidad propia, a menudo inmutable.
Grupo coherente de objetos de negocio tratado como una unidad de consistencia alrededor de una raíz.
Frontera dentro de la cual un modelo y un vocabulario de negocio conservan un significado coherente.
Coste futuro de las decisiones de diseño o mantenimiento; no toda deuda es necesariamente accidental.
Modificación de la estructura interna del código destinada a preservar su comportamiento observable.
Código existente cuya evolución puede resultar difícil debido a su antigüedad, dependencias o falta de pruebas.
Solución recurrente susceptible de crear más problemas de los que resuelve en un contexto dado.
Principio que invita a evitar la duplicación de conocimientos o reglas, y no cualquier repetición textual.
Principio que consiste en evitar una complejidad innecesaria para la necesidad real.
Principio que desaconseja implementar hoy funcionalidades solo hipotéticas.
Enfoque que aporta comportamientos por defecto coherentes para reducir la parametrización explícita.
42 términos
Parte de una aplicación que presenta una interfaz y gestiona las interacciones del lado del usuario.
Parte que asegura los procesos del servidor, el acceso a los datos y otros servicios detrás de una interfaz.
Práctica que abarca varias capas de una aplicación, en particular interfaz, servicios y datos.
Lenguaje de marcado que describe la estructura y la semántica de una página web.
Lenguaje de hojas de estilo que define la presentación, la disposición y la adaptación visual de un documento.
Representación arborescente y programable de un documento utilizada por los navegadores y los scripts.
Componente del documento definido por una etiqueta o un objeto del DOM, con su semántica y atributos.
Información asociada a un elemento, por ejemplo alt, href o lang.
Expresión que identifica los elementos a los que se aplica una regla de estilo.
Regla de prioridad que permite desempatar ciertas declaraciones CSS en competencia.
Mecanismo que combina orígenes, capas, importancia, especificidad y orden para elegir los estilos aplicados.
Modelo CSS de diseño adaptado a la distribución de elementos sobre un eje principal y un eje transversal.
Modelo CSS de disposición mediante filas y columnas coordinadas.
Diseño que adapta la presentación y las interacciones a las dimensiones y capacidades de los dispositivos.
Enfoque que construye primero la experiencia de las pantallas pequeñas antes de enriquecerla para las grandes.
Condición CSS que aplica estilos según características del medio o del entorno.
Diseño que permite al mayor número posible de personas utilizar un servicio, en particular con ayudas técnicas o sin ratón.
Recomendaciones internacionales que aportan criterios de conformidad para la accesibilidad de los contenidos web.
Conjunto de atributos que describen roles y estados accesibles cuando los mecanismos HTML nativos no bastan.
Unidad reutilizable de interfaz que reúne renderizado, propiedades y, eventualmente, comportamiento.
Conjunto de los valores que determinan lo que muestra una interfaz y cómo reacciona.
Generación del HTML inicial por un servidor antes de enviarlo al navegador.
Generación importante de la interfaz en el navegador mediante JavaScript.
Producción anticipada de páginas listas para ser servidas sin renderizado dinámico sistemático en cada petición.
Asociación, del lado del cliente, del comportamiento interactivo a un HTML ya producido, según un framework.
Aplicación web que actualiza ampliamente su vista sin recargar completamente una nueva página en cada navegación.
Aplicación web que aprovecha capacidades adaptadas, como instalación o service worker, según el navegador.
Script ejecutado al margen de la página, capaz, entre otras cosas, de interceptar ciertas peticiones y de gestionar tareas fuera de la página.
Componente web basado en estándares como los elementos personalizados y, eventualmente, el Shadow DOM.
Árbol DOM encapsulado que permite aislar en parte la estructura y los estilos de un componente.
Representación abstracta de la interfaz utilizada por ciertos frameworks para calcular actualizaciones.
Biblioteca JavaScript para construir interfaces basada en componentes y estado.
Framework JavaScript de interfaz que utiliza componentes, reactividad y plantillas declarativas.
Framework web estructurado que ofrece, entre otros, inyección de dependencias, componentes y herramientas integradas.
Herramienta de creación de interfaces que transforma los componentes durante la compilación, con un runtime adaptado.
Herramienta que analiza y reúne o transforma los recursos de un proyecto para preparar su distribución.
Transformación del código fuente web hacia una sintaxis o destino compatible con los entornos objetivo.
Reducción del tamaño del código distribuido eliminando información no necesaria para su funcionamiento.
Eliminación del código exportado pero no utilizado durante una construcción, cuando el análisis lo permite.
División del código en conjuntos cargables por separado para reducir ciertos costes de carga.
Carga diferida de un recurso o componente hasta su uso probable o efectivo.
Optimizaciones que facilitan la exploración, indexación e interpretación de un sitio por los motores de búsqueda.
55 términos
Programa que construye y envía peticiones HTTP y luego procesa las respuestas recibidas.
Programa que recibe peticiones HTTP y devuelve respuestas conformes al protocolo.
Mensaje enviado por un cliente que incluye, entre otros, método, destino, cabeceras y, eventualmente, cuerpo.
Mensaje del servidor que contiene un código de estado, cabeceras y, eventualmente, un cuerpo.
Método HTTP destinado a recuperar una representación sin solicitar una modificación de estado en el servidor.
Método HTTP que envía datos para ser procesados; su efecto depende del servicio y no es intrínsecamente idempotente.
Método HTTP que solicita la creación o el reemplazo del estado del recurso destino con la representación proporcionada.
Método HTTP que aplica una modificación parcial a un recurso según el formato y las reglas de la API.
Método HTTP que solicita la eliminación del recurso destino, con una semántica idempotente esperada.
Número de tres cifras que describe el resultado de una petición, según cinco clases principales.
Estado que indica que la petición ha tenido éxito; el contenido de la respuesta depende del método.
Estado que indica que se han creado uno o varios recursos tras la petición.
Estado que indica una operación exitosa sin cuerpo de respuesta.
Estados de redirección permanente; 308 preserva el método HTTP durante la redirección.
Estado que señala que el servidor no puede o no quiere procesar una petición considerada incorrecta.
Estado que indica que se requiere o falta una autenticación válida, a pesar de su nombre confuso.
Estado que indica que el servidor ha comprendido la petición pero se rehúsa a autorizarla.
Estado que indica que el recurso solicitado no se encuentra o que el servidor no desea revelar su existencia.
Estado que indica un conflicto con el estado actual del recurso, por ejemplo durante una actualización concurrente.
Estado que indica que el cliente ha superado un límite de frecuencia definido por el servidor.
Estado genérico que señala un funcionamiento inesperado del servidor.
Estado que indica que una pasarela o proxy ha recibido una respuesta inválida de un servidor aguas arriba.
Estado que indica una indisponibilidad temporal, por ejemplo por sobrecarga o mantenimiento.
Campo de metadatos de una petición o respuesta, como Content-Type o Authorization.
Parte eventual de un mensaje HTTP que transporta una representación o datos.
Cabecera que indica el tipo de medio de un contenido y, eventualmente, su juego de caracteres.
Dirección que identifica la ubicación de un recurso y el modo de acceder a él.
Identificador normalizado de un recurso; una URL es una forma de URI que aporta indicaciones de acceso.
Dato colocado en la parte de interrogación de una URL, utilizado a menudo para filtrar o paginar.
Valor integrado en una ruta de URL para identificar un recurso o una parte de la ruta.
Dirección o punto de acceso que expone una operación o recurso de un servicio.
Estilo arquitectónico basado en restricciones como recursos identificados, interfaz uniforme e intercambios sin estado de aplicación en el servidor por petición.
API diseñada para respetar, con mayor o menor rigor, los principios REST; el simple uso de JSON y HTTP no basta.
Lenguaje de consulta y entorno de ejecución de API que permite a los clientes seleccionar con precisión los campos.
Marco de llamadas a procedimientos remotos basado, en su funcionamiento habitual, en HTTP/2 y Protocol Buffers.
Mecanismo que permite a un programa desencadenar una operación ejecutada en otro proceso u otra máquina.
Especificación que describe contractualmente API HTTP y permite, entre otras cosas, documentación y generación de herramientas.
Formato textual de intercambio de datos basado en objetos, arrays, cadenas, números, booleanos y null.
Lenguaje de marcado extensible que representa datos estructurados en un documento textual.
Lenguaje de serialización de datos legible por humanos, utilizado, entre otros fines, para la configuración.
Protocolo que permite una comunicación bidireccional persistente sobre una conexión establecida a partir de una negociación HTTP.
Mecanismo HTTP que envía un flujo de eventos del servidor al navegador, principalmente en un único sentido.
Notificación enviada por un servicio a una URL configurada cuando ocurre un evento; deben gestionarse autenticidad y repeticiones.
Mecanismo del navegador que regula el acceso JavaScript a respuestas provenientes de otros orígenes; no es un mecanismo de autenticación.
Regla de seguridad del navegador que restringe ciertos accesos entre documentos o scripts de orígenes diferentes.
Pequeño dato asociado a un dominio y transmitido según reglas del navegador, utilizado a menudo para las sesiones.
Estado lógico que une varias peticiones de un usuario, generalmente mediante un identificador o un token.
Formato compacto de transmisión de aserciones firmadas o, eventualmente, cifradas; su contenido no es secreto por defecto.
División de un conjunto de resultados en porciones consumibles sucesivamente.
Paginación que utiliza una marca opaca o explícita en lugar de un simple número de página, adaptada a ciertos flujos cambiantes.
Propiedad según la cual repetir la misma operación produce el mismo efecto final buscado que una sola ejecución, sin contar posibles efectos colaterales.
Restricción del número de operaciones autorizadas en un periodo o según otra regla de cuota.
Plazo máximo concedido a una operación antes de detener la espera o señalarla como expirada.
Reejecución de una operación tras un fallo presunto, que debe diseñarse con la idempotencia y los riesgos de duplicados.
Política que aumenta progresivamente el retraso entre reintentos, a menudo con un componente aleatorio.
47 términos
Conjunto organizado de datos diseñado para ser conservado, consultado y modificado según reglas definidas.
Software que gestiona el almacenamiento, las consultas, la seguridad y la integridad de una o varias bases de datos.
Base que organiza los datos en relaciones, generalmente representadas por tablas e interrogadas con SQL.
Categoría de sistemas que no se basan principalmente en el modelo relacional clásico; agrupa modelos variados.
Estructura relacional que representa filas bajo un conjunto de columnas definidas.
Conjunto de valores que constituye una ocurrencia en una tabla o colección.
Atributo de una tabla definido por un nombre, un tipo y, eventualmente, restricciones.
Definición de la estructura, de las relaciones, tipos y restricciones de los datos.
Columna o grupo de columnas que identifica de forma única una fila en una tabla.
Columna o conjunto de columnas que vincula una tabla con una clave de otra tabla o de la misma.
Regla que prohíbe ciertos valores duplicados en una columna o conjunto de columnas.
Regla que impone que una columna no contenga el valor SQL NULL.
Estructura auxiliar que acelera ciertas búsquedas y ordenaciones a costa de espacio y de costes de actualización.
Índice construido sobre varias columnas, cuyo orden puede influir en su uso por parte de las consultas.
Petición dirigida al sistema de datos para leer o modificar información.
Instrucción SQL que recupera filas o resultados calculados a partir de los datos disponibles.
Instrucción SQL que añade nuevas filas a una tabla.
Instrucción SQL que modifica filas existentes seleccionadas por las condiciones indicadas.
Instrucción SQL que elimina filas; sin un filtro adecuado, puede afectar a todas las filas.
Operación que combina filas de fuentes diferentes según una relación o condición.
Combinación que conserva solo las combinaciones de filas que cumplen la condición de emparejamiento.
Combinación que conserva todas las filas de la izquierda, incluso si no hay correspondencia a la derecha.
Cálculo que resume varias filas, por ejemplo con COUNT, SUM o AVG.
Cláusula SQL que agrupa filas para calcular agregados por grupo.
Cláusula SQL que filtra grupos tras la agrupación, a distinguir de WHERE aplicada a las filas.
Consulta integrada dentro de otra consulta para aportar un valor, una lista o una relación.
Representación lógica definida por una consulta y consultable como una tabla; su posible materialización es distinta.
Resultado de consulta almacenado físicamente y actualizado según una estrategia definida.
Grupo de operaciones tratadas como una unidad de consistencia, validada o anulada según las garantías del sistema.
Conjunto de propiedades transaccionales: atomicidad, consistencia, aislamiento y durabilidad.
Instrucción que valida las modificaciones de una transacción.
Instrucción que anula las modificaciones no validadas de una transacción dentro de los límites previstos por el SGBD.
Grado de separación entre transacciones concurrentes, que determina las anomalías observables.
Gestión de conflictos que verifica que no haya ocurrido ninguna modificación incompatible antes de la validación.
Reserva o bloqueo anticipado de recursos para limitar ciertos conflictos concurrentes.
Herramienta que asocia objetos de la aplicación con tablas relacionales para facilitar ciertas operaciones de persistencia.
Modificación versionada del esquema o de los datos para acompañar la evolución de una aplicación.
Organización de las relaciones que reduce ciertas redundancias y anomalías de modificación.
Introducción calculada de redundancias para mejorar usos, sobre todo de lectura, con costes de sincronización.
División lógica o física de los datos según criterios para facilitar su gestión o acceso.
Mantenimiento de copias de datos en varias instancias para disponibilidad, lectura o recuperación.
Distribución horizontal de un conjunto de datos entre varias particiones o servidores distintos.
Copia recuperable de datos y, eventualmente, de registros que permite una restauración tras un incidente.
Restauración de una base a un instante elegido gracias a una copia de seguridad y a registros adaptados.
SGBD relacional embebido que generalmente almacena una base en un fichero y no requiere un servidor separado.
SGBD relacional libre que ofrece, entre otras cosas, transacciones, SQL avanzado, extensiones y tipos especializados.
Sistema de datos en memoria utilizado a menudo como caché, cola o estructura rápida, con diversas opciones de persistencia.
38 términos
Instancia de ejecución que dispone de un espacio de direccionamiento y de recursos gestionados por el sistema operativo.
Secuencia de instrucciones ejecutada dentro de un proceso y que generalmente comparte su memoria con otros hilos del mismo proceso.
Uso de varios hilos de ejecución dentro de un programa.
Uso de varios procesos para realizar trabajos separados o paralelos.
Organización de varias tareas cuyos periodos de ejecución se solapan, incluso sobre un único núcleo.
Ejecución efectiva de varios cálculos al mismo tiempo sobre recursos distintos.
Modelo que permite a una tarea suspender la espera de una operación y a otros trabajos progresar.
Mecanismo que reparte eventos y reanudaciones de tareas mediante una cola o un planificador.
Unidad de cálculo que puede suspender y reanudar su ejecución conservando su estado.
Construcciones sintácticas que marcan funciones y puntos de espera asíncrona en varios lenguajes.
Objeto que representa el resultado futuro de una operación asíncrona y su posible fallo en ciertos lenguajes.
Abstracción que representa un resultado eventualmente disponible más adelante, con modalidades propias de cada entorno.
Unidad de trabajo planificada por un entorno asíncrono y que generalmente puede ser esperada o cancelada.
Componente que decide qué tareas o unidades de ejecución progresan y en qué momento.
Defecto o situación en la que el resultado depende de un orden de ejecución concurrente no controlado.
Accesos concurrentes no sincronizados a una misma memoria, con al menos una escritura, según un modelo de memoria preciso.
Porción de código que manipula un estado compartido y que requiere un protocolo de acceso coordinado.
Mecanismo que permite a un solo participante a la vez poseer un cerrojo de exclusión mutua.
Contador de sincronización que limita el número de accesos o señala recursos disponibles.
Situación en la que tareas esperan indefinidamente por recursos o eventos que otras tareas en espera retienen.
Situación en la que tareas permanecen activas y reaccionan sin que el trabajo útil progrese.
Situación en la que una tarea queda privada de forma duradera de los recursos necesarios para progresar.
Propiedad de una operación percibida como indivisible por los demás participantes según un modelo dado.
Operación que forma parte de un algoritmo que garantiza que al menos un participante progresa pese a la contención, sin garantía individual.
Mecanismo de transmisión de trabajos o eventos entre componentes mediante mensajes almacenados temporalmente.
Servicio intermedio que recibe, orienta y redistribuye mensajes entre productores y consumidores.
Modelo en el que los productores publican eventos en canales a los que se suscriben los consumidores.
Hecho significativo ya ocurrido en el negocio y comunicado a otras partes del sistema.
Organización en la que los componentes reaccionan a eventos en lugar de hacerlo solo a llamadas directas.
Garantía que ofrece a ciertas lecturas una vista reciente y coordinada de las escrituras según un modelo definido.
Garantía según la cual las copias convergen tras cesar las modificaciones, sin lecturas inmediatamente idénticas en todas partes.
Resultado teórico sobre los compromisos de un sistema distribuido sujeto a una partición de red entre consistencia linealizable y disponibilidad de las respuestas.
Proceso que permite a varios nodos acordar una decisión a pesar de ciertos fallos.
Procedimiento que selecciona un nodo para coordinar acciones dentro de un grupo distribuido.
Mecanismo que interrumpe temporalmente las llamadas hacia un servicio en fallo para limitar las cascadas de errores.
Sucesión de transacciones locales coordinadas, a menudo con acciones compensatorias en caso de fallo.
Patrón que almacena en la misma transacción la modificación de negocio y un evento a publicar posteriormente.
Garantía de un procesamiento lógico único dentro de un perímetro definido, difícil de obtener de extremo a extremo sin deduplicación o transacciones.
35 términos
Aplicación creada con API y convenciones propias de un sistema o plataforma destino.
Aplicación diseñada para funcionar en varios sistemas a partir de una base de código parcial o ampliamente común.
Programa destinado principalmente a los ordenadores personales y a sus sistemas operativos.
Programa diseñado para los dispositivos móviles, con sus interfaces y restricciones hardware.
Interfaz que utiliza ventanas, botones, paneles y otros elementos visuales interactivos.
Interfaz pilotada por la introducción de comandos textuales y argumentos.
Interfaz interactiva que utiliza una rejilla de caracteres dentro de un terminal.
Aplicación que muestra una interfaz de texto y transmite generalmente las entradas a un shell o a un programa.
Intérprete de comandos que permite lanzar programas y automatizar su encadenamiento.
Proceso creado o lanzado por otro proceso, con vínculos de gestión que dependen del sistema.
Conjunto de técnicas de intercambio entre procesos: tuberías, sockets, memoria compartida o mensajes.
Punto de comunicación software utilizado para intercambiar datos localmente o a través de una red.
Proceso que proporciona servicios sin interfaz de usuario principal, según las convenciones del sistema.
Componente añadido a un software anfitrión para ampliar su comportamiento mediante puntos de integración previstos.
Ubicación en la que un programa autoriza la ejecución de código externo o personalizable durante un evento.
Entorno que restringe el acceso de un programa a los recursos y capacidades del sistema.
Autorizaciones concedidas a un software para acceder a funciones o datos protegidos.
Firma criptográfica que asocia un artefacto a una identidad de publicación y permite verificar su integridad.
Procedimiento de control y validación de distribución impuesto o propuesto por ciertas plataformas, en particular Apple.
Programa que prepara una aplicación para su uso en un sistema ubicando sus componentes y ajustes.
Mecanismo que comprueba, descarga e instala nuevas versiones según una política definida.
Transformación de los datos conservados en el dispositivo para hacerlos compatibles con una nueva versión.
Intercambio de mensajes entre una interfaz web embebida y el código nativo de la aplicación anfitriona.
Componente que integra el renderizado de un contenido web dentro de una aplicación nativa.
Framework de aplicaciones de escritorio que reúne, entre otros, Chromium y Node.js para distribuir interfaces web.
Framework de escritorio que asocia un núcleo nativo, generalmente Rust, con una interfaz renderizada por la WebView del sistema.
Framework multiplataforma de desarrollo de interfaces y aplicaciones, utilizado principalmente con C++ o Python.
Conjunto de herramientas de interfaz gráfica libre utilizado en Linux y otros sistemas.
Framework de creación de interfaces compiladas para diversas plataformas mediante Dart.
Framework de desarrollo de aplicaciones móviles que utiliza React y componentes de plataforma.
Herramientas y API que permiten crear, compilar, probar y distribuir aplicaciones Android.
Herramientas y API necesarias para desarrollar aplicaciones para los dispositivos Apple correspondientes.
Formato que distribuye una aplicación Linux en un fichero autónomo ejecutable según sus dependencias y restricciones.
Formato y sistema de distribución de aplicaciones Linux que utiliza runtimes y mecanismos de sandbox.
Formato de paquete e infraestructura de distribución de aplicaciones con confinamiento según la configuración.
41 términos
Sistema que conserva el historial de cambios de ficheros y facilita la comparación, el retorno y la colaboración.
Sistema distribuido de control de versiones que organiza el historial en torno a commits y a referencias locales o remotas.
Conjunto de datos de versionado y ficheros asociados a un proyecto.
Copia del repositorio presente en una máquina, con sus objetos, referencias y estado de trabajo.
Referencia a un repositorio accesible en otro lugar, utilizado con frecuencia para sincronizar un equipo.
Objeto Git que registra una instantánea y metadatos, en particular padres, autor y mensaje.
Huella que identifica un objeto commit en el repositorio; su longitud y algoritmo pueden depender del formato Git.
Referencia móvil hacia un commit que permite hacer evolucionar varias líneas de trabajo.
Referencia que designa el commit actual, generalmente a través de la rama activa.
Convención de nombre para una línea de desarrollo central; Git no impone este nombre.
Estado de los ficheros extraídos del repositorio, incluidas sus modificaciones locales.
Zona que registra la versión de los ficheros a incluir en el próximo commit.
Comando que sitúa versiones de ficheros o modificaciones seleccionadas en el index.
Comando que indica el estado del directorio de trabajo y del index respecto a las referencias del repositorio.
Comando que muestra diferencias entre ficheros, index o commits según las opciones.
Comando que muestra el historial de commits y la información asociada.
Comando que crea una copia local de un repositorio existente y configura generalmente un remoto.
Comando que recupera objetos y referencias remotas sin fusionar automáticamente esos cambios en la rama de trabajo.
Comando que realiza una recuperación y luego una integración, por fusión o rebase según la configuración.
Comando que transmite referencias y objetos locales hacia un repositorio remoto autorizado.
Integración de las evoluciones de varias ramas conservando su relación histórica.
Reejecución de una secuencia de commits sobre otra base, lo que generalmente crea nuevos commits.
Situación en la que Git no puede integrar automáticamente cambios incompatibles y requiere una resolución.
Aplicación de los cambios de un commit seleccionado sobre la rama actual, creando generalmente un nuevo commit.
Comando que crea un nuevo commit que invierte los cambios de un commit anterior, siempre que sea posible resolverlo.
Comando que mueve una referencia o reinicia el index y los ficheros según su modo; ciertos usos destruyen cambios locales.
Mecanismo que guarda temporalmente modificaciones del directorio de trabajo o del index para reaplicarlas después.
Referencia nombrada, utilizada a menudo para marcar una versión publicada; una etiqueta anotada lleva metadatos propios.
Reglas que excluyen de la visualización habitual y de la adición automática ciertos ficheros no seguidos; no retiran ficheros ya seguidos.
Propuesta de cambios sometida a discusión y verificación antes de integrarse en una plataforma de colaboración.
Examen de los cambios por otras personas para identificar defectos y mejorar su mantenibilidad.
Copia de un repositorio en una plataforma que permite un desarrollo independiente y, eventualmente, contribuciones.
Plataforma de alojamiento y colaboración en torno a repositorios Git, distinta del propio software Git.
Plataforma de colaboración y entrega de software en torno a repositorios Git, propuesta en particular en alojamiento propio.
Extensión de Git que almacena los ficheros grandes mediante punteros seguidos por Git y un almacenamiento asociado.
Repositorio referenciado desde otro repositorio en una revisión dada, con un ciclo de sincronización distinto.
Repositorio que agrupa varios proyectos o componentes dentro de un mismo historial de versiones.
Convención MAJOR.MINOR.PATCH: ruptura de compatibilidad de API, adición compatible y corrección compatible, una vez definida la API.
Versión identificada como anterior a una publicación estable, por ejemplo alpha, beta o candidata.
Documento que recoge las modificaciones notables de un producto entre sus versiones.
Conjunto identificado de artefactos, notas y revisiones puestos a disposición para una versión dada.
38 términos
Actividad destinada a verificar comportamientos y a revelar defectos mediante controles definidos.
Prueba dirigida a una pequeña unidad de comportamiento que generalmente domina sus dependencias.
Prueba que verifica la interacción real de varios componentes o sistemas.
Prueba que recorre un escenario de usuario o técnico completo a través de las principales capas del producto.
Verificación de un comportamiento esperado desde el punto de vista de sus requisitos y resultados.
Verificación de que una modificación no ha reintroducido un comportamiento previamente corregido ni degradado el existente.
Conjunto rápido de controles que asegura que las funciones principales son utilizables tras una modificación o entrega.
Control de conformidad con los criterios que permiten a una parte interesada aceptar una funcionalidad.
Verificación realizada directamente por una persona sin ejecución automatizada del conjunto del escenario.
Verificación ejecutable de forma repetible por una herramienta que produce un resultado explotable.
Descripción de las precondiciones, acciones y resultados esperados de una verificación.
Datos, objetos o entorno preparados para proporcionar un contexto reproducible a las pruebas.
Objeto de prueba que reproduce una interfaz permitiendo, entre otras cosas, verificar las interacciones esperadas.
Reemplazo mínimo que proporciona resultados predeterminados para aislar un componente probado.
Implementación simplificada pero funcional de una dependencia, por ejemplo un almacenamiento en memoria.
Término genérico para un sustituto de componente empleado en una prueba.
Sustituto o instrumento que registra las llamadas realizadas para permitir su verificación.
Verificación explícita de una propiedad o de un resultado esperado; su fallo hace que la prueba no sea conforme.
Medida de las porciones de código recorridas por las pruebas, que no garantiza su capacidad para detectar errores.
Proporción de las salidas de decisiones ejecutadas por las pruebas según la herramienta de medición.
Técnica que introduce pequeñas modificaciones en el código para evaluar si las pruebas detectan esas alteraciones.
Enfoque que genera numerosas entradas para comprobar invariantes generales de un programa.
Envío automático de numerosas entradas a menudo inesperadas para identificar caídas y comportamientos anómalos.
Práctica de diseño que alterna prueba inicial en rojo, implementación mínima y refactorización.
Enfoque que describe y verifica comportamientos observables a partir de ejemplos compartidos.
Estructura de escenario que expresa contexto, acción y resultado esperado.
Modelo que sugiere repartir las pruebas entre verificaciones rápidas y dirigidas y escenarios más integrados.
Prueba cuyo resultado varía sin una modificación relevante del código, a menudo por tiempos o dependencias externas.
Prueba diseñada para arrojar los mismos resultados bajo condiciones iniciales idénticas.
Verificación de los tiempos de respuesta, caudales y recursos bajo condiciones definidas.
Ensayo que mide el comportamiento de un sistema bajo un nivel de solicitudes representativo o previsto.
Ensayo que lleva al sistema más allá de su funcionamiento normal para observar sus límites y su recuperación.
Evaluación destinada a identificar defectos de confidencialidad, integridad, acceso u otras propiedades de seguridad.
Examen del código sin ejecutar normalmente el programa para detectar problemas o propiedades.
Herramienta que señala errores potenciales, incoherencias o violaciones de reglas en el código.
Herramienta que aplica automáticamente una presentación estandarizada del código fuente.
Herramienta que analiza la compatibilidad de tipos y la coherencia de las anotaciones según las reglas soportadas.
Conjunto de propiedades contextualizadas como corrección, legibilidad, fiabilidad, seguridad y mantenibilidad.
30 términos
Defecto del software que provoca una desviación entre el comportamiento obtenido y el esperado.
Proceso de identificación, explicación y corrección de un defecto del programa.
Código que no respeta la gramática del lenguaje y a menudo es rechazado antes de su ejecución.
Problema que impide a un compilador producir normalmente el artefacto solicitado.
Problema que se produce durante el funcionamiento del programa, como un acceso inválido.
Defecto de razonamiento o de lógica que produce un resultado incorrecto a pesar de una ejecución posible.
Lista de las llamadas que han conducido a un punto de fallo, útil para localizar su origen.
Ubicación o condición que suspende el programa dentro de un depurador.
Herramienta que permite inspeccionar el estado de un programa, colocar puntos de interrupción y controlar su ejecución.
Modo de ejecución controlada que avanza instrucción por instrucción o llamada por llamada.
Función del depurador que muestra la evolución de una variable o expresión seleccionada.
Producción estructurada o textual de trazas de eventos durante la ejecución.
Categoría de gravedad o de detalle, como debug, info, warning o error.
Registro de trazas en forma de campos explotables, a menudo serializados en JSON.
Valor que une varias trazas u operaciones pertenecientes a un mismo recorrido de petición.
Observación continua del estado y de los indicadores de un servicio o aplicación.
Capacidad de comprender el estado interno de un sistema a partir de sus señales, en particular logs, métricas y trazas.
Medida numérica agregada o puntual del comportamiento de un sistema.
Representación de una operación a través de varios servicios mediante segmentos temporales enlazados.
Unidad de una traza que describe una operación, su duración y sus relaciones con otras operaciones.
Disparo de una notificación cuando se detecta una condición operativa importante.
Parada inesperada de un programa, proceso o componente.
Captura de parte del estado de memoria y procesador de un proceso tras un incidente, potencialmente sensible.
Capacidad de provocar un defecto de forma controlada con etapas y condiciones conocidas.
Búsqueda de la revisión responsable de un defecto probando progresivamente puntos del historial.
Búsqueda de los mecanismos iniciales que han permitido un incidente, más allá de sus síntomas inmediatos.
Retorno documentado sobre el desarrollo, causas, impactos y mejoras tras una caída.
Objetivo medible fijado a un indicador de fiabilidad durante un periodo dado.
Compromiso contractual que define niveles de servicio y, eventualmente, consecuencias en caso de incumplimiento.
Medida que representa una dimensión del servicio, como la disponibilidad o la latencia exitosa.
31 términos
Proceso que transforma fuentes, dependencias y recursos en artefactos utilizables o distribuibles.
Fichero producido por una construcción, como ejecutable, biblioteca, archivo o imagen contenedor.
Construcción que persigue artefactos idénticos a partir de fuentes y entradas identificadas, bajo condiciones controladas.
Herramienta que automatiza tareas de construcción según reglas de dependencia y objetivos.
Sistema que genera ficheros de construcción para diferentes herramientas y entornos, en particular en C y C++.
Herramienta de construcción y automatización ampliamente utilizada en los ecosistemas JVM y Android.
Herramienta de construcción y gestión de dependencias basada, entre otros aspectos, en un modelo de proyecto XML para la JVM.
Herramienta que instala y resuelve software o bibliotecas distribuidos en paquetes.
Servicio que aloja y distribuye las versiones de bibliotecas y componentes publicados.
Gestor de paquetes y ecosistema de distribución asociado a JavaScript y Node.js.
Herramienta de instalación de paquetes Python desde índices u otras fuentes compatibles.
Herramienta Python que gestiona dependencias, entornos y publicación a partir de una configuración de proyecto.
Gestor de paquetes y herramienta de compilación oficial del ecosistema Rust.
Paquete explícitamente requerido por un proyecto para su compilación o funcionamiento.
Paquete requerido por otra dependencia del proyecto, en lugar de ser declarado directamente por él.
Cálculo de un conjunto de versiones que satisface las restricciones de compatibilidad declaradas.
Fichero que registra las versiones resueltas para facilitar la reproducibilidad de las instalaciones.
Fichero que describe la identidad, configuración, scripts y dependencias de un proyecto.
Entorno que aísla, entre otras cosas, las instalaciones de paquetes de un proyecto respecto a otros entornos Python.
Herramienta que permite instalar y seleccionar varias versiones de un lenguaje o de su entorno.
Asociación nombre-valor proporcionada al proceso por su entorno de ejecución.
Fichero convencional que contiene variables de configuración; puede contener secretos y no debe difundirse sin precaución.
Adaptación de los parámetros de una aplicación según desarrollo, test, preproducción o producción.
Conmutador de configuración que permite activar una funcionalidad para ciertos entornos o usuarios.
Actualización de ciertos módulos o de la interfaz durante el desarrollo sin un reinicio completo, según la herramienta.
Correctivo publicado rápidamente para resolver un defecto importante en una versión en servicio.
Fuente o artefacto producido automáticamente a partir de una definición, un esquema u otro programa.
Herramienta que crea una estructura inicial de ficheros y configuraciones a partir de plantillas.
Explicaciones que describen el uso, los contratos o las decisiones de implementación de un componente.
Documento de bienvenida que presenta generalmente el objetivo, la instalación y los primeros usos de un proyecto.
Descripción de las operaciones expuestas, parámetros, respuestas, errores y condiciones de uso de una interfaz.
39 términos
Conjunto de prácticas que acercan el desarrollo y la operación para mejorar la entrega, la fiabilidad y el feedback operativo.
Práctica de integrar los cambios frecuentemente con controles automatizados, a menudo disparados por los commits.
Práctica que mantiene el software listo para publicarse gracias a un pipeline de validación y preparación.
Puesta en producción automatizada de cada cambio que supera los controles definidos, sin validación manual sistemática.
Encadenamiento automatizado de etapas como pruebas, construcción, verificación y entrega.
Agente que ejecuta las tareas de un pipeline de automatización.
Configuración empleada para crear y experimentar con el software antes de su validación.
Entorno de validación destinado a reproducir características relevantes de la producción.
Entorno real en el que un servicio o producto es utilizado por sus destinatarios.
Instalación o puesta a disposición de una versión software en un entorno destino.
Retorno a una versión anterior o a un estado de funcionamiento conocido, a veces complejo si los datos han cambiado.
Estrategia que alterna dos entornos completos para conmutar el tráfico y facilitar un retorno atrás.
Puesta a disposición progresiva de una versión a una fracción del tráfico o de los usuarios antes de generalizarla.
Descripción versionada de recursos de infraestructura mediante ficheros y herramientas de automatización.
Herramienta declarativa de gestión de infraestructuras que describe y aplica un estado deseado mediante proveedores.
Herramienta de automatización de configuración y despliegue, basada a menudo en inventarios y playbooks.
Entorno de ejecución aislado a nivel de sistema operativo, que generalmente comparte su núcleo.
Conjunto de capas y metadatos que sirve de plantilla inmutable de referencia para crear contenedores.
Ecosistema de herramientas que permite, entre otras cosas, construir, distribuir y ejecutar imágenes y contenedores.
Fichero de instrucciones que describe las etapas de creación de una imagen de contenedor.
Herramienta que describe y orquesta varios servicios contenedorizados con una configuración declarativa.
Mecanismo que conserva o comparte datos más allá del ciclo de vida de un contenedor dado.
Coordinación del despliegue, de los recursos, de la red y de la recuperación de varios contenedores.
Plataforma que orquesta cargas contenedorizadas mediante recursos declarativos y controladores.
Unidad desplegable más pequeña de Kubernetes, que contiene uno o varios contenedores que comparten ciertos recursos.
Abstracción que ofrece un punto de acceso estable a un conjunto cambiante de pods.
Recurso que describe históricamente el acceso HTTP/HTTPS externo a servicios; su controlador y evolución dependen de la plataforma.
Gestor de paquetes Kubernetes que utiliza charts para describir e instalar recursos.
Servicio que recibe peticiones de clientes y las transmite a servidores de aplicación aguas arriba.
Componente que distribuye las peticiones entre varias instancias según una estrategia.
Red de servidores que distribuye recursos desde puntos cercanos a los usuarios o adaptados al tráfico.
Ajuste automático de los recursos o del número de instancias según métricas o reglas.
Verificación automatizada que determina si una instancia funciona o puede recibir tráfico.
Control destinado a detectar cuándo un proceso debe reiniciarse porque ya no progresa.
Control destinado a determinar si una instancia está lista para servir peticiones.
Servicio que centraliza la conservación y el acceso controlado a las credenciales y otros secretos aplicativos.
Renovación de un secreto y actualización de sus consumidores para reducir los riesgos ligados a su vida útil.
Procedimientos de conservación y recuperación de datos y configuraciones tras un incidente.
Conjunto de medidas que permiten restablecer los servicios tras un fallo mayor.
39 términos
Conjunto de medidas destinadas a proteger un software y sus datos frente a usos o accesos no autorizados.
Conjunto de puntos accesibles por los que un sistema puede ser solicitado o comprometido.
Análisis de activos, actores, escenarios y medidas de protección desde el diseño de un sistema.
Atribución de los permisos estrictamente necesarios a una identidad o a un componente.
Verificación de la identidad reivindicada por un usuario, servicio u otro actor.
Determinación de las acciones que una identidad reconocida tiene derecho a realizar.
Conjunto de reglas y verificaciones que rigen el uso de los recursos protegidos.
Modelo de control de acceso basado en roles a los que se asocian derechos.
Modelo de control de acceso basado en atributos del solicitante, del recurso y del contexto.
Marco de delegación de autorización que permite a una aplicación obtener un acceso limitado a recursos protegidos.
Capa de identidad construida sobre OAuth 2.0 para aportar, entre otras cosas, autenticación federada.
Elemento presentado a una API para ejercer los permisos concedidos, con un alcance y una duración definidos.
Elemento que permite solicitar nuevos tokens de acceso según las reglas del servidor de autorización.
Verificación de identidad que combina varios factores independientes, como posesión y conocimiento.
Identificador de autenticación que utiliza generalmente criptografía de clave pública y mecanismos FIDO.
Transformación unidireccional con sal y algoritmo adecuado, como Argon2id, para verificar sin almacenar la contraseña en claro.
Valor aleatorio único añadido antes del hash de una contraseña para contrarrestar, entre otros, las tablas precalculadas.
Transformación reversible de datos en contenido ilegible sin la clave apropiada, bajo un esquema adecuado.
Función que produce una huella de longitud definida, diseñada para resistir a ciertas búsquedas y colisiones.
Prueba criptográfica de integridad y origen ligada a una clave privada, verificable con los datos correspondientes.
Protocolo que protege las comunicaciones de red mediante cifrado, integridad y autenticación según su uso.
Conjunto de prácticas de creación, almacenamiento, distribución, rotación y revocación de credenciales sensibles.
Verificación de que los datos recibidos respetan tipos, formatos y reglas de negocio antes de su uso.
Transformación de caracteres especiales según el contexto de destino para impedir su interpretación como código.
Vulnerabilidad en la que datos no confiables modifican la estructura de una consulta SQL; los parámetros vinculados son una protección clave.
Inyección de contenido ejecutable en un contexto web visitado por otros usuarios, según los vectores y protecciones.
Ataque que lleva al navegador autenticado de una víctima a enviar una acción no deseada a un sitio.
Vulnerabilidad que permite a un atacante empujar a un servidor a realizar peticiones hacia destinos no previstos.
Explotación de rutas no controladas para acceder a ficheros fuera del perímetro autorizado.
Posibilidad de que un actor remoto ejecute código en un sistema bajo condiciones no previstas.
Reconstrucción de objetos a partir de datos no confiables que puede provocar ejecución de código u otros efectos peligrosos.
Conjunto de proveedores, dependencias, herramientas y etapas que contribuyen a la producción y distribución de un software.
Inventario estructurado de los componentes software presentes en un producto para facilitar el análisis y seguimiento de dependencias.
Examen de las dependencias para identificar sus versiones, licencias y vulnerabilidades conocidas.
Análisis estático orientado a la seguridad del código fuente o de sus representaciones sin ejecutar la aplicación en su funcionamiento normal.
Análisis dinámico de una aplicación en funcionamiento, sometiéndola a interacciones para detectar ciertas vulnerabilidades.
Identificador público de una vulnerabilidad catalogada en el programa Common Vulnerabilities and Exposures.
Marco de medición de la gravedad técnica de una vulnerabilidad; la puntuación no sustituye al análisis del contexto.
Proceso coordinado de notificación y publicación de una vulnerabilidad para facilitar su corrección.
31 términos
Modificación destinada a mejorar una propiedad medible, como velocidad o memoria, sin degradar las restricciones esenciales.
Medición del comportamiento de un programa para identificar las partes que consumen tiempo o recursos.
Herramienta que analiza el uso del procesador, de la memoria o de otros recursos por llamadas y tareas.
Medición comparativa de rendimientos en condiciones reproducibles y documentadas.
Duración entre una solicitud y la respuesta o efecto observado.
Cantidad de operaciones o datos procesados por unidad de tiempo.
Tiempo transcurrido entre la recepción de una solicitud y la producción de una respuesta según un perímetro definido.
Recurso o etapa que limita el rendimiento global de un proceso.
Conservación temporal de resultados o datos para evitar una operación más costosa.
Retirada o reemplazo de datos en caché cuando expira su validez o cambia la fuente.
Acceso en el que el dato buscado se encuentra en la caché.
Acceso en el que el dato está ausente de la caché y debe recuperarse o recalcularse.
Periodo de validez definido para un dato o token antes de expirar; su significado depende del sistema.
Carga anticipada de datos considerados susceptibles de ser utilizados próximamente.
Agrupación de varias operaciones para reducir los costes fijos de procesamiento o comunicación.
Técnica que espera un periodo sin nuevos eventos antes de disparar un procesamiento.
Técnica que limita el número de ejecuciones de un procesamiento en un periodo.
Limitación del número de elementos transmitidos por petición para evitar una respuesta excesiva.
Conjunto de conexiones reutilizables que evita repetir creaciones costosas.
Anti-patrón en el que una consulta inicial provoca una consulta adicional por cada elemento recuperado.
Evaluación diferida de una expresión o cálculo hasta el momento en que su resultado es necesario.
Refinamiento de rendimiento realizado antes de conocer las verdaderas necesidades o cuellos de botella, con el riesgo de aumentar la complejidad.
Zona temporal que almacena datos durante su producción, transformación o transmisión.
Procesamiento de elementos a medida que llegan, en lugar de tras una carga completa.
Mecanismo que hace ralentizar a un productor cuando el consumidor ya no sigue el ritmo.
Aumento de capacidad mediante la adición de instancias o máquinas.
Aumento de capacidad mediante el refuerzo de los recursos de una instancia.
Medida del uso o de la demanda de cálculo del procesador, a contextualizar según el número de núcleos.
Cantidad de memoria ocupada o atribuible a un programa según la métrica elegida.
Mejora de la estrategia de acceso a los datos a partir de filtros, índices y planes de ejecución.
Descripción de las operaciones elegidas por un SGBD para procesar una consulta, a veces consultable con EXPLAIN.
35 términos
Conjunto de etapas que van de la expresión de la necesidad al diseño, realización, operación y retirada de un software.
Descripción de lo que un sistema debe realizar para responder a una necesidad.
Restricción sobre la calidad o las condiciones de servicio: rendimiento, seguridad o disponibilidad, por ejemplo.
Documento o conjunto de reglas que precisan los comportamientos y restricciones esperados de un sistema.
Condición verificable que permite determinar si una funcionalidad responde a su necesidad.
Formulación concisa de una necesidad de usuario que sirve de soporte para la discusión y la validación.
Descripción de las interacciones entre un actor y un sistema para alcanzar un objetivo.
Lista ordenada y evolutiva de los trabajos previstos o retenidos para un producto o equipo.
Periodo de trabajo de duración fija utilizado, en particular en Scrum, para alcanzar un objetivo definido.
Marco de trabajo ágil basado en responsabilidades, eventos y artefactos para gestionar un producto complejo.
Método de gestión visual de flujos que favorece la limitación del trabajo en curso y la fluidez.
Enfoque que privilegia la adaptación, la colaboración y las entregas iterativas, sin imponer un único método.
Ciclo de trabajo que culmina en una nueva versión o en un aprendizaje aprovechable.
Adición integrada y potencialmente utilizable de una capacidad al producto existente.
Versión lo suficientemente limitada para probar hipótesis esenciales con usuarios reales.
Realización exploratoria destinada a probar una idea, una interfaz o una viabilidad, sin estar forzosamente destinada a producción.
Experimentación limitada que demuestra la viabilidad de un enfoque o tecnología.
Presentación evolutiva de las prioridades, objetivos y etapas previstos para un producto.
Unidad de seguimiento que documenta una tarea, un defecto o una petición con su estado y contexto.
Elemento registrado en una herramienta de seguimiento, como un problema, una sugerencia o un trabajo a realizar.
Punto de seguimiento correspondiente a un objetivo o a un conjunto de trabajos por finalizar.
Evaluación incierta de un esfuerzo, duración o complejidad antes de la realización.
Criterios compartidos que determinan cuándo un trabajo se considera terminado con el nivel de calidad acordado.
Práctica en la que dos personas trabajan juntas en un mismo desarrollo compartiendo análisis y revisión.
Práctica de programación colectiva en la que varias personas contribuyen simultáneamente a un mismo problema.
Conjunto de información necesaria para comprender, instalar, explotar o modificar un sistema.
Nota que documenta una decisión de diseño, su contexto, las opciones y sus consecuencias.
Facilidad relativa para comprender, corregir y hacer evolucionar un software con un coste controlado.
Falta u obsolescencia de documentación que aumenta el coste de comprensión y mantenimiento.
Texto que define los derechos y obligaciones ligados al uso, modificación y redistribución del software.
Software cuya licencia garantiza, entre otras cosas, el uso, estudio, modificación y redistribución según las libertades establecidas.
Software distribuido bajo una licencia que cumple los criterios de la Open Source Definition, más allá de la simple visibilidad del código.
Software distribuido con derechos limitados por su titular; el código fuente puede ser inaccesible o estar sujeto a restricciones.
Modificación, corrección, documentación u otro trabajo propuesto a un proyecto, bajo sus reglas de colaboración.
Persona o grupo encargado de la evolución, de la revisión de contribuciones y, a menudo, de las publicaciones de un proyecto.