stringtranslate.com

Base de código

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 construir un sistema de software , una aplicación o un componente de software en particular . Normalmente, una base de código incluye sólo 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 objeto), ya que pueden construirse 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 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 principalmente para copias de seguridad y control de versiones, y en proyectos de múltiples desarrolladores para manejar varias versiones de código fuente y brindar ayuda para resolver conflictos que surgen cuando los desarrolladores envían modificaciones superpuestas.

Subversion , Git y Mercurial son ejemplos de herramientas populares utilizadas para manejar 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 administrado (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 un código único, compartido obase de código monolítica . Este es particularmente el caso de proyectos relacionados, como los desarrollados dentro de la misma empresa. Más detalladamente, una base de código monolítica normalmente 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. El hecho de que el código base se comparta o se divida no depende de la arquitectura del sistema ni de los resultados reales de la compilación; por lo tanto, una base de código monolítica, que está relacionada con el desarrollo real, no implica unsistema monolítico, que está relacionado con la arquitectura de software o un único binario monolítico. Como resultado, una base de código monolítica puede y (para bases de código grandes) a menudo consistirá en componentes separados, en lugar de contener un solo sistema o un solo binario; Se puede utilizar una base de código distribuida (con múltiples componentes) para construir un único sistema monolítico o incluso un único binario. Por ejemplo, el kernel de Linux es arquitectónicamente unkernel monolítico, pero consta de binarios separados (componentes cargables) y se desarrolla en múltiples repositorios distribuidos.

Existen ventajas y desventajas en una base de código monolítica en comparación con una base de código distribuida. [2] [3] De manera más simple, una base de código monolítica simplifica la integración‍—‌los cambios en diferentes componentes o la refactorización del código entre componentes se pueden realizar fácil y atómicamente‍—y permite operaciones en todo el código base, pero requiere un repositorio más grande y facilita la introducir una deuda técnica de amplio alcance . [ dudoso ] 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, imponiendo al mismo tiempo la separación entre componentes, pero también requiere integración entre las 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 mostrando dos piezas de software independientes que implementan un estándar determinado. [ dudoso ]

Ejemplos

Algunas bases de código notablemente grandes incluyen:

Ver 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 generar deuda: experiencias en la 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, Raquel; 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 de git de Facebook tiene 54 GB" (Tweet) . Consultado el 29 de abril de 2016 - vía Twitter .
  7. ^ Sproull, Lee; Luna, Jae Yun (5 de noviembre de 2000). "Esencia del trabajo distribuido: El caso del kernel de Linux - Moon - Primer lunes". Primer lunes . 5 (11) . Consultado el 29 de abril de 2016 .