Reutilización de código

La reutilización de código ( en inglés  code reuse ) es una metodología para el diseño de sistemas informáticos y de otro tipo, que consiste en que el sistema ( programa informático , módulo de programa) debe estar parcial o totalmente compuesto por partes, componentes previamente escritos y/o partes de otro. sistema, y ​​estos componentes deben usarse más de una vez (si no dentro del mismo proyecto, al menos en diferentes). La reutilización es la principal metodología que se utiliza para reducir los costes laborales en el desarrollo de sistemas complejos.

El caso más común de reutilización de código son las bibliotecas de software . Las bibliotecas brindan una funcionalidad común y bastante universal que cubre un área temática seleccionada. Ejemplos: una biblioteca de funciones para trabajar con números complejos, una biblioteca de funciones para trabajar con gráficos 3D, una biblioteca para usar el protocolo TCP/IP, una biblioteca para trabajar con bases de datos. Los desarrolladores de un nuevo programa pueden usar bibliotecas existentes para resolver sus problemas y no "reinventar la rueda".

Modularidad de los sistemas

Los programadores tienden a diseñar sus sistemas de tal manera que sean lo más modulares posible. Como abstracciones, sobre la base de las cuales es posible construir la modularidad del sistema, pueden actuar funciones , rutinas , clases , protocolos . La biblioteca de funciones  es un buen ejemplo de una abstracción que es útil para implementar la modularidad del programa y seguir una metodología reutilizable. Un paso importante para lograr la máxima modularidad fue el principio de construcción jerárquica del espacio de nombres .

Un ejemplo de una implementación exitosa de la modularidad y el principio de reutilización son las herramientas de shell de Unix y las clases estándar de Java colocadas en una jerarquía de espacio de nombres.

Las plantillas (consulte la Biblioteca de plantillas estándar de C++ STL ) para funciones y clases fueron un paso importante en el avance de la metodología de reutilización en la industria de la programación orientada a objetos .

La modularidad jerárquica del sistema permite implementar métodos efectivos de gestión del desarrollo basados ​​en la construcción de jerarquías de control correspondientes a la jerarquía de módulos del propio sistema.

Reutilizar en lo pequeño

A veces, la reutilización de código consiste simplemente en copiar una parte del código de un programa existente a otro ( copiar y pegar ) .  Este es uno de los enfoques de más bajo nivel para la reutilización. Pero también tiene lugar, especialmente cuando se trata de reutilizar código “a pequeña escala” (“reuse in a small way”).

Por lo general, no se recomienda el uso de este enfoque; en su lugar, un fragmento de programa repetitivo se formatea como una subrutina o macro con un conjunto de parámetros. El principal argumento a favor de usar subrutinas en lugar de copiar el código es que si hay un error, debe corregirse una vez en el cuerpo de la subrutina, de lo contrario, en general, se deben usar varios fragmentos de código idénticos ubicados en diferentes lugares del programa. ser corregido. Además, al copiar código, suele ser necesario cambiar los nombres de las variables, lo que también suele provocar errores mecánicos. En el caso de usar subprogramas, dicho cambio de nombre puede evitarse usando variables locales.

Reutilización de código y transición del metasistema en programación

El método de reutilización de código es un componente importante de la implementación del principio de transición del metasistema en el desarrollo de la industria del software. La implementación de este principio permite a los desarrolladores operar con conceptos de alto nivel (mostrar una imagen, borrar una tabla de una base de datos, encontrar todas las raíces de una ecuación, convertir un archivo, etc.), en lugar de conceptos de bajo nivel (colorear un píxel rojo, restablecer el registro, agregar dos números, leer un carácter de un archivo, etc.).

Ventajas y desventajas del método de reutilización

Considere las ventajas y desventajas utilizando el ejemplo de las bibliotecas de funciones.

El uso de bibliotecas listas para usar tiene una serie de ventajas. En primer lugar, el desarrollador de un nuevo sistema se libera de la preocupación por la implementación de la funcionalidad integrada en esta biblioteca. Todo el ciclo de desarrollo de la biblioteca lo lleva a cabo el desarrollador de esta biblioteca. Por lo general, se responsabiliza del mantenimiento de la biblioteca: corrige errores, desarrolla y mejora el trabajo, realiza pruebas . El método de reutilización de código es el mecanismo que permite a los desarrolladores "subirse a hombros de gigantes" [1] y construir rápidamente nuevos sistemas complejos a partir de componentes ya depurados. La segunda ventaja proviene de la misma repetición del uso del código, lo que conduce a una reducción significativa en el tamaño del programa final y, en caso de rendimiento de medios insuficiente, en la velocidad.

Además de algunas ventajas, pero muy importantes, el método de reutilización de código tiene una serie de desventajas. La conexión de bibliotecas de terceros al proyecto conduce automáticamente a la necesidad de controlar la compatibilidad de las versiones de los componentes del sistema que se están creando y las versiones de las bibliotecas utilizadas. Se considera que el ejemplo más típico de tal error es el accidente del vehículo de lanzamiento Ariane-5 , causado por el uso de un módulo de software desarrollado para el cohete Ariane-4 [2] .

También es importante tener en cuenta que muchas bibliotecas son comerciales y requieren dinero (con el desarrollo del movimiento de software libre , esto se está volviendo gradualmente menos relevante). Además, a menudo las bibliotecas no son lo suficientemente universales y no implementan la funcionalidad que requiere el sistema que se está creando o, por el contrario, son demasiado universales y, como resultado, son ineficientes, inconvenientes o contienen muchos elementos redundantes ( para un proyecto dado) funcionalidad. Es posible, si la licencia de la biblioteca redistribuible lo permite, usar sus códigos fuente y modificarlos de acuerdo con la necesidad. Pero después de eso, la responsabilidad de respaldar la funcionalidad de la biblioteca pasa a los hombros del desarrollador del nuevo sistema. Además, el uso de una modularidad excesiva puede conducir a una disminución en la velocidad de ejecución del programa, cuando la velocidad de ejecución inherente al módulo no puede cubrir los costos de acceso a este módulo.

Véase también

Notas

  1. Cita célebre de Isaac Newton
  2. Jerry Gao, H.-SJ Tsao, Ye Wu. Pruebas y Garantía de Calidad para Software basado en Componentes. - Casa Artech, 2002. - Pág. 211. - ISBN 978-1-58053-735-3 .

Literatura

Enlaces