En informática e ingeniería de software , la reutilización es el uso de activos existentes de alguna forma dentro del proceso de desarrollo de productos de software ; Estos activos son productos y subproductos del ciclo de vida del desarrollo de software e incluyen código, componentes de software, conjuntos de pruebas, diseños y documentación. El concepto opuesto de reutilización es el apalancamiento , que modifica los activos existentes según sea necesario para cumplir con requisitos específicos del sistema. Debido a que la reutilización implica la creación de una versión mantenida por separado de los activos [ se necesita aclaración ] , se prefiere al apalancamiento. [1]
Las subrutinas o funciones son la forma más sencilla de reutilización. Un fragmento de código se organiza periódicamente mediante módulos o espacios de nombres en capas . Sus defensores afirman que los objetos y componentes de software ofrecen una forma más avanzada de reutilización, aunque ha sido difícil medir y definir objetivamente niveles o puntuaciones de reutilización.
La capacidad de reutilizar depende de manera esencial de la capacidad de construir cosas más grandes a partir de partes más pequeñas y de la capacidad de identificar puntos en común entre esas partes. La reutilización es a menudo una característica requerida del software de plataforma . La reutilización aporta varios aspectos al desarrollo de software que no es necesario considerar cuando no se requiere la reutilización.
La reutilización implica alguna gestión explícita de los problemas de construcción , empaquetado , distribución , instalación , configuración , implementación , mantenimiento y actualización . Si no se tienen en cuenta estas cuestiones, el software puede parecer reutilizable desde el punto de vista del diseño , pero no se reutilizará en la práctica.
La reutilización del software se refiere más específicamente a las características de diseño de un elemento de software (o colección de elementos de software) que mejoran su idoneidad para la reutilización.
En los talleres de WISR se desarrollaron muchos principios de diseño de reutilización. [2]
Las características de diseño candidatas para la reutilización de software incluyen:
Aún no se ha llegado a un consenso sobre esta lista sobre la importancia relativa de las entradas ni sobre las cuestiones que hacen que cada una sea importante para una clase particular de aplicaciones.