stringtranslate.com

Código base

En el desarrollo de software , una base de código (o código base ) es una colección de código fuente que se utiliza para crear un sistema de software , una aplicación o un componente de software en particular . Por lo general, una base de código solo incluye archivos de sistema de código fuente escritos por humanos; por lo tanto, una base de código generalmente no incluye archivos de código fuente generados por herramientas (archivos generados) o archivos de biblioteca binaria (archivos de objeto), ya que se pueden crear a partir del código fuente escrito por humanos. Sin embargo, generalmente incluye archivos de configuración y propiedades, ya que son los datos necesarios para la compilación.

Una base de código generalmente se almacena en un repositorio de control de código fuente en un sistema de control de versiones . Un repositorio de código fuente es un lugar donde se guardan grandes cantidades de código fuente, ya sea de forma pública o privada. Los repositorios de código fuente se utilizan básicamente para realizar copias de seguridad y control de versiones, y en proyectos de varios desarrolladores para gestionar varias versiones de código fuente y proporcionar ayuda para resolver conflictos que surgen cuando los desarrolladores envían modificaciones superpuestas.

Subversion , Git y Mercurial son ejemplos de herramientas populares utilizadas para gestionar este flujo de trabajo, que son comunes en proyectos de código abierto.

Para proyectos más pequeños, su código puede conservarse como un conjunto de archivos no administrados (incluso el kernel de Linux se mantuvo como un conjunto de archivos durante muchos años). [1]

Bases de código distintas y monolíticas

Varios proyectos pueden tener bases de código separadas y distintas, o pueden tener una única base de código compartida ocódigo base monolítico .Este es particularmente el caso de proyectos relacionados, como los desarrollados dentro de la misma empresa. En más detalle, un código base monolítico generalmente implica un único repositorio (todo el código en un solo lugar) y, a menudo, un sistema de compilación común o bibliotecas comunes. Si el código base se comparte o se divide no depende de la arquitectura del sistema y los resultados de compilación reales; por lo tanto, un código base monolítico, que está relacionado con el desarrollo real, no implica unsistema monolítico, que está relacionado con la arquitectura del software o un único binario monolítico. Como resultado, un código base monolítico puede y (para bases de código grandes) a menudo constará de componentes separados, en lugar de llevar solo un único sistema o binario único; una base de código distribuida (con múltiples componentes) se puede utilizar para construir un único sistema monolítico o incluso un único binario. Por ejemplo, el núcleo de Linux es arquitectónicamente un úniconúcleo monolítico, pero consta de binarios separados (componentes cargables) y se desarrolla en múltiples repositorios distribuidos.

Existen tanto ventajas como desventajas en una base de código monolítica cuando se compara con una base de código distribuida. [2] [3] En términos más simples, una base de código monolítica simplifica la integración (los cambios en diferentes componentes o la refactorización de código entre componentes se pueden realizar de manera fácil y atómica) y permite operaciones en toda la base de código, pero requiere un repositorio más grande y facilita la introducción de una deuda técnica de amplio alcance . [ dudosodiscutir ] Una base de código separada o una base de código distribuida mantiene los repositorios individuales más pequeños y más manejables, al mismo tiempo que impone la separación entre componentes, pero también requiere la integración entre bases de código (o con el repositorio principal) y complica los cambios que abarcan múltiples bases de código. [4]

En términos de estándares, referirse a múltiples bases de código como "distintas" declara que existen implementaciones independientes sin código fuente compartido y que, históricamente, estas implementaciones no evolucionaron a partir de un proyecto común. Esta puede ser una forma de demostrar la interoperabilidad al mostrar dos piezas de software independientes que implementan un estándar determinado. [ dudosodiscutir ]

Ejemplos

Algunas bases de código notablemente grandes incluyen:

Véase también

Referencias

  1. ^ "Una breve historia de Git". git-scm.com . Consultado el 21 de octubre de 2014 .
  2. ^ J. David Morgenthaler; Misha Gridnev; Raluca Sauciuc y Sanjay Bhansali (2012). "Búsqueda de deuda de construcción: experiencias de gestión de deuda técnica en Google". Actas del tercer taller internacional sobre gestión de deuda técnica . IEEE. págs. 1–6. doi :10.1109/MTD.2012.6225994.
  3. ^ ab "Escalando Mercurial en Facebook". Código de Facebook . 2014-01-07 . Consultado el 29 de abril de 2016 .
  4. ^ "Git - Flujos de trabajo distribuidos". git-scm.com . Consultado el 29 de abril de 2016 .
  5. ^ Potvin, Rachel; Levenberg, Josh (24 de junio de 2016). «Por qué Google almacena miles de millones de líneas de código en un único repositorio». Comunicaciones de la ACM . 59 (7): 78–87. doi : 10.1145/2854146 .
  6. ^ @feross (24 de abril de 2014). «El repositorio git de Facebook tiene 54 GB» ( Tweet ) . Consultado el 29 de abril de 2016 – vía Twitter .
  7. ^ Sproull, Lee; Moon, Jae Yun (5 de noviembre de 2000). «La esencia del trabajo distribuido: el caso del núcleo Linux - Moon - First Monday». First Monday . 5 (11) . Consultado el 29 de abril de 2016 .