Please enable JavaScript.
Coggle requires JavaScript to display documents.
Introducción a la reutilización de software - Coggle Diagram
Introducción a la reutilización de software
REUTILIZACIÓN
Es el proceso de implementar o actualizar
sistemas de software utilizando activos del mismo.
Los activos de software o componentes incluyen todos los productos derivados del mismo, desde requerimientos y propuestas, especificaciones y diseños a manuales y juegos de prueba.
Cualquier cosa que sea producto de un esfuerzo de desarrollo de software potencialmente puede ser reutilizada.
Beneficios de la reutilización
Tiempo y costo
La reutilización de software es una excelente manera de ahorrar costos y esfuerzos de desarrollo
De forma ideal, el tiempo de desarrollo es reducido debido a que los componentes reutilizables relevantes pueden ser aplicables al proyecto dado en un marco de tiempo menor que redesarrollar desde cero
Calidad
Cualquier optimización, refactorización y pruebas hechas en componentes reutilizables ya han sido completados.
La reutilización efectiva puede reducir la densidad de
defectos de 5 a 10 veces.
Estandarización
Barreras a la reutilización
Elaboración, administración y uso de componentes
reutilizables
Los componentes tienen que ser genéricos en su naturaleza para ser reutilizados en múltiples sistemas (o múltiples momentos en el mismo sistema)
Muchos componentes requerirán de alguna clase de generalización a través de la cual la mayoría de lógica específica de aplicación es removida y reemplazada con más funcionalidad de todo propósito.
Gastos al comenzar
Los costos potenciales son las modificaciones a los procesos de desarrollo, empleo de personal para manejar la práctica, la generación y administración de un repositorio de componentes.
Reto a los métodos tradicionales de ingeniería de software
La razón por la que ésta es una barrera a la reutilización de software efectiva, es porque la idea se desvía grandemente de la norma, y puede encontrar resistencia técnica inmediata.
Adicionalmente, se requieren cambios en la manera en que los desarrolladores se enfocan en los proyectos. Esto puede no ser de la satisfacción de aquellos quienes tienen sentimientos negativos por la reutilización de software
Prácticas de desarrollo con reutilización
La reutilización de software es más comúnmente referida dentro del contexto de reutilización durante el desarrollo. Hay muchos enfoques hacia la reutilización de software durante el desarrollo.
Tecnologías orientadas a objetos
Los objetos son manipulados con una colección de funciones y se comunican unas con otras utilizando un protocolo de mensajes, y están organizados dentro de clases y subclases
Desarrollando con reutilización, reutilización
oportunista
Esta clase de reutilización no afecta los procesos de desarrollo, así que es bastante barato de implementar dentro de una organización. El lado negativo, es que la reutilización oportunista no permitirá que la capacidad de reutilización sea predeciblemente repetible debido a su naturaleza
Desarrollando con reutilización: reutilización
sistemática
La reutilización sistemática está “enfocada al dominio”. Se basa en un proceso repetible, y de manera primaria relacionada con la reutilización de los artefactos del ciclo de vida de más alto nivel, tales como: requerimientos, diseños y subsistemas.
Prácticas de reutilización sin desarrollo con reutilización del
producto
Hay otras clases de reutilización en relación con el desarrollo de software. Uno de estos tipos es la reutilización del producto, la que se refiere a la reutilización de un sistema entero.
Linea de Producto
una línea de producto comprende productos concretos o
aplicaciones a ser desarrolladas.
puede ser considerado para referirse al nivel de abstracción, pero términos diferentes son pretendidos para audiencia diferente. Personal técnico (desarrolladores de software) entienden y usan el término “dominio”, mientras que para administradores, es más fácil hablar acerca de líneas de producto, porque es más parecido a términos de negocios o mercadeo
Ingeniería de requerimientos
La ingeniería de requerimientos puede ser dividida en subtareas tales como licitación de requerimientos para descubrir y entender las necesidades del usuario; análisis de requerimientos para refinar las necesidades del usuario; verificación de requerimientos para asegurarse que los requerimientos del sistema están completos, correctos y consistentes; y administración de requerimientos para calendarizar y coordinar las actividades anteriores concernientes a requerimientos
Ingeniería de reutilización
Tareas involucradas en la ingeniería de reutilización son: recuperación de objetos, identificación de tipos de datos abstractos y componentes reutilizables, y la construcción de librerías de los componentes identificados.
La ingeniería de reutilización significa la identificación de partes reutilizables en el software y cambiar el software para hacerlo más reutilizable.
Arquitecturas de software específicas de dominio
La ingeniería de dominios es el proceso de desarrollar e implementar la arquitectura de software específica de dominio
Una arquitectura de software específica de dominio (DSSA por sus siglas en inglés) es una arquitectura para un dominio específico, sin embargo, debería ser todavía general para soportar varias aplicaciones del dominio.
Un DSSA consiste de requerimientos comunes y el proceso para refinarlo. De este modo, un DSSA denota en mucho, lo mismo que una arquitectura de línea de producto.
Arquitectura de referencia
Una arquitectura de referencia es una arquitectura de software para una
familia de sistemas de aplicación.
El resultado de refinar o instanciar una
arquitectura de referencia es una arquitectura de aplicación.
De esta manera, una arquitectura de referencia corresponde a una arquitectura esencial común; y una arquitectura de aplicación corresponde a la arquitectura de una aplicación individual en terminología de línea de producto.