Title: REUTILIZACIN SISTEMTICA DEL SOFTWARE
1REUTILIZACIÓN SISTEMÁTICA DEL SOFTWARE
José Manuel Marqués Departamento de
Informática Universidad de Valladolid
- Burgos, 16 de diciembre de 1998
2INDICE
- Introducción/Motivación
- Conceptos básicos de reutilización
- Proceso
- Organización / gestión
- Tecnologías en la reutilización
3Reutilización
Problema cultural?
4(No Transcript)
5 ACLARACIONES PREVIAS
- La reutilización es un problema técnico y
no-técnico - No es necesario la utilización de herramientas
especiales - La Inteligencia Artificial no es LA SOLUCIÓN al
problema de la reutilización - Ningún lenguaje proporciona la solución al
problema de la reutilización - El diseño de software a partir de componentes
reutilizables NO es equivalente al diseño de
hardware utilizando circuitos integrados - La reutilización del software que no ha sido
diseñado específicamente para la reutilización es
complicada.
6Motivación
- Por qué reutilizar?
- Cuál es la importancia de la reutilización?
- Qué es reutilización?
- Qué se debe reutilizar?
- Cómo se realiza la reutilización?
- Qué aspectos están relacionados con la
reutilización?
7Por qué reutilizar?
8Por qué reutilizar?
La reutilización sistemática del software
proporciona las bases para el incremento de la
calidad y la fiabilidad y a largo plazo reduce
los costes del desarrollo y el mantenimiento del
software
9Por qué reutilizar?
Desarrollo rápido de sistemas
- Algunos tipos de sistemas software tienen un
tiempo crítico de entrega - Reutilización de componentes reduce el tiempo
- Se puede abordar el prototipado
- Implica la existencia de un método de diseño para
la reutilización
10Estandarización y consistencia
Por qué reutilizar?
- Existen funciones similares en diferentes formas
en diferentes sistemas - La reutilización de componentes significa el
desarrollo de un estándar para la organización
11Encapsulación de la experiencia
Por qué reutilizar?
- No siempre se tienen los expertos en el dominio a
mano - No se reutiliza el conocimiento del experto, se
captura su conocimiento en un componente - Se reducen los riesgos
- Reutilización vs. Re-implementación
12Cuál es la importancia de la reutilización?
Se ha demostrado que la aplicación de los
principios de la reutilización del software
proporciona grandes beneficios en la reducción de
costes, tiempo y esfuerzo a lo largo del ciclo de
vida de la producción del software.
En la Navy una reducción del 26 en las horas de
trabajo.
Raytheon (Missile System Division) un incremento
del 50 en la productividad.
Fujitsus Software Development ha pasado del 20
al 70 en los productos que se entregaron a
tiempo.
La Army ha estimado un ahorro de 479.9 millones
en el desarrollo del Tactical Command and
Control system.
13Qué es reutilización? (1)
Software components (routines), to be widely
acceptable to different machines and users,
should be available in families arranged
according to precision, robustness, generality
and time-space performance. Existing sources of
components - manufacturers, software houses,
users groups and algorithm collections - lack
the breadth of interest or coherence of purpose
to assemble more than one or two members of such
families, yet software production in the large
would be enormously helped by the availability
of spectra of high quality routines, quite as
mechanical design is abetted by the existence of
families of structural shapes, screws,
or resistors. Doug McIlroy, 1968.
14Qué es reutilización? (2)
- La utilización de conceptos y objetos existentes
en un sistema o situación nueva, directamente o
adaptándolos. Para ello, estos conceptos y
objetos deberán encontrarse codificados en un
nivel de abstracción establecido y deberán poder
ser recuperados - Propiedad de utilizar conocimiento o componentes
software ya existente para adaptarlo a una nueva
necesidad, incrementando significativamente la
calidad y productividad del desarrollo. - Es el proceso de implementar o actualizar
sistemas software utilizando assets software
existentes
15Qué es reutilización? (3)
- Es la utilización de conceptos u objetos
adquiridos previamente en una nueva situación, e
implica la codificación de la información del
desarrollo a diferentes niveles de abstracción,
almacenar esta representación para referenciarla
en el futuro, contraste de situaciones nuevas y
antiguas, duplicación de objetos y situaciones ya
desarrolladas, y su adaptación para ajustarse a
nuevos requisitos - Reusabilidad es una medida de la facilidad con
la que uno puede utilizar estos conceptos u
objetos previos en situaciones nuevas
16Qué es reutilización? (y 4)
Utilización de assets
asset?
Proceso
Infraestructura
Planificación
Certificación de assets
Catalogación de assets
Soporte
Bibliotecas
Localización
Recuperación
Creación de assets
Análisis y modelado de dominios
17Qué se debe reutilizar?
- Productos. Utilización de productos o partes de
productos existentes con o sin modificación en el
desarrollo de otros productos. Enfoque de
composición. - Procesos. Utilización de procesos que se han
utilizado de forma exitosa para desarrollar un
tipo de producto para el desarrollo de productos
similares. Este enfoque se suele denominar el
enfoque generador.
18Qué se debe reutilizar?
Se va a denominar asset a cualquier producto del
ciclo de vida del software que pueda ser
potencialmente reutilizado. Esto incluye
modelo de dominio, arquitectura de dominio,
requisitos, diseño, código, bases de datos,
esquemas de bases de datos, documentación,
manuales de usuario, casos de prueba... DoD,
1992
19Marco tecnológico
- Perspectiva de los sistemas implicados
(Biggerstaff Richter, 87) - Se centra en los mecanismos empleados en la
creación de sistemas software y las salidas que
producen esos mecanismos. (composición/generación)
- Combinación de abstracción, selección,
especialización e integración (Krueger, 92) - Procesos y su formalización (Bowles, 93)
- dominios horizontales -gt dominios verticales
- individual -gt proyecto -gt empresa
- código -gt diseño -gt concepto -gt abstracción
20Principios de las tecnologías de composición
- Componentes atómicos
- Los componentes no cambian en la reutilización
- Pueden ser modificados o cambiados para que se
ajusten a los propósitos computacionales de la
reutilización - Son elementos pasivos sobre los que operan
agentes externos - Los nuevos programas se obtienen a partir de la
composición de bloques, aplicando principios
perfectamente definidos.
21Principios de las tecnologías de generación
- Componentes no fáciles de identificar como
entidades concretas - Se puede identificar un bloque de construcción
antes y después de su utilización - Es inmutable en el sentido de que mantiene su
forma e identidad después de su utilización - Son a menudo patrones incorporados en el sistema
generador - Las estructuras resultantes no están muy
relacionadas con el patrón del programa generador - La reutilización es un asunto de ejecución
- Patrones de código
- Patrones de reglas de transformación
22Elementos de las tecnologías - Krueger
- Abstracción
- Permite a los desarrolladores saber que hace cada
elemento y cómo reutilizarlo - Selección
- Cualquier enfoque de reutilización ayuda a
localizar, comparar y seleccionar elementos de
software reutilizable - Especialización
- Los elementos similares se agrupan en uno
genérico. Una vez seleccionado el elemento hay
que especializarlo para poder utilizarlo - Integración
- Combinación de elementos seleccionados y
especializados en un sistema software completo
23Categorías de reutilización - Krueger
- LENGUAJES DE ALTO NIVEL
- RECOGIDA DE DISEÑOS Y CODIGO
- COMPONENTES DE CODIGO FUENTE
- ESQUEMAS SOFTWARE
- GENERADORES DE APLICACIONES
- LENGUAJES DE MUY ALTO NIVEL
- SISTEMAS TRANSFORMACIONALES
- ARQUITECTURAS SOFTWARE
24Cómo se realiza la reutilización?
- Caótica
- Aplicación individual intuitiva e informal
- Controlada
- Aplicada a nivel de grupos de trabajo que
utilizan herramientas no especializadas para la
reutilización. - Coordinada
- Aplicada en algunas áreas de aplicación con
algunas herramientas de clasificación y síntesis - Planificada
- Orientada al desarrollo de familias de productos
motivada por la naturaleza del negocio con
bibliotecas automatizadas de componentes
reutilizables - Integrada
- Aplicada en toda la empresa como forma de
trabajo, incentivada por el plan estratégico y
con soporte automatizado orientado a la
reutilización
25Cómo se organiza la reutilización?
Propuestas
26(No Transcript)
27Biblioteca Software
Especifi.Requis.Soft.
Componentes Aplicación
DiseñoAlto Nivel
ComponentesModelado
ArquitecturasGenéricas
Disponible
SubsistemasEsp.,Dise.Cod.,Test
DiseñoDetallado
PlantillasDiseño
ModulosEsp.,Dise.Cod. Test
FragmentosCódigo
Usar/Adaptar
Implantación
TestUnidades
HERRAMIENTAS
Compil.
Editores
TestIntegración
Analizadores
TestRequis.Softw.
28Desarrollo con Reutilización
Asistencia a la reutilización
Recuperación
Evaluación
Adaptación
Repositorio de assets
Desarrolladores de aplicaciones
Coordinador
Candidatos Modificación de requisitos Actualizació
n de assets
Asistencia a la construcción de assets
Desarrollo para Reutilización
Clasificación
Cualificación
Reingeniería
29(No Transcript)
30Tecnologías en la reutilización del software
Representación
- Es una vista o modelo del propio asset
reutilizable - Es una descripción del asset reutilizable en un
nivel de abstracción - procesos, partes de procesos, objetos, productos
y relaciones entre procesos y productos - Se necesitan modelos comunes de representación.
- Representaciones expresivas que capturen la
estructura, funcionalidad, comportamiento y
restricciones - Modelo 3C (RSRG)
- RIG, PCTE (ECMA), IRDS (ANSI)....
31Tecnologías en la reutilización del software
Bibliotecas y repositorios
ASSET , CARDS, RBSE-ELSA, EUROWARE. ...
32Tecnologías en la reutilización del software
Métodos
- Basados en el conocimiento
- Aplicación de las técnicas de representación del
conocimiento y del razonamiento para obtener las
representaciones de los expertos en un dominio y
aplicarlas a una solución automatizada del
problema en ese dominio. - Orientados al Objeto
- OOP Clases (modularidad, ocultamiento de la
información y polimorfismo) y herencia. - OOD frameworks design patterns
- OOA Compatible con el análisis de dominios, Use
Cases - Formales
- Utilización de teorías matemáticas para
especificar, desarrollar y verificar sistemas.
33Tecnologías en la reutilización del software
Software Engineering Environments
- Plataformas
- hard SO DBMS comunicaciones
- dificulta la portabilidad y la inter-operabilidad
- Marco de servicios
- Utiliza los recursos de la plataforma
- almacenamiento y gestión de assets
- Repositorio
- Herramienta CASE
- produce y utiliza los assets del repositorio
- Herramientas para el ciclo de vida
- documentación, métricas, gestión de
configuraciones, proceso y proyecto
34Tecnologías en la reutilización del software
Reingeniería
- Consiste en el examen y la reforma de un sistema
para reconstituirlo en una forma nueva e
implementarlo de nuevo - Los assets se recuperan a partir de sistemas
existentes, fase de ingeniería inversa, y se
crean nuevos assets, fase de ingeniería directa - Tecnología muy interesante en los casos en los
que los assets no han sido desarrollados
específicamente para reutilización - Mejora del software, comprensión del software, y
captura, conservación y extensión del
conocimiento del software
35Muchas gracias por la atención prestada
Preguntas?