You are on page 1of 23

Fundamentos de Ingeniera del Software

Captulo 11. Reutilizacin del software

Reutilizacin del software. Estructura


Reutilizacin del software Beneficios de la reutilizacin Dificultades para la reutilizacin Desarrollo basado en componentes
Concepto de componente Cuestiones tcnicas Estndares para el sw. de componentes Cuestiones metodolgicas

Assets
Caracterizacin de los assets Tipos de assets

Niveles de reutilizacin Modelo de procesos con reutilizacin Ingeniera de dominios


Anlisis del dominio Fases del Anlisis del dominio

Clasificacin y recuperacin de assets o componentes


Clasificacin enumerada Clasificacin por facetas Clasificacin de atributos y valores

Reutilizacin del software. Bibliografa


(Pressman 98) Roger S. Pressman. Ingeniera del Software Un enfoque prctico. 4 Edicin. Ed. Mc Graw-Hill. 1998. Captulo 26.
(Garca et al. 97) F. J. Garca, J.M. Marqus, J. M. Maudes. Mecano: una propuesta de componente software reutilizable. II Jornadas de Ingeniera del Software. San Sebastin. 3-5 septiembre de 1997.

Reutilizacin del software


Idea vieja (reutilizacin ad hoc).
Cualquier procedimiento que produce o ayuda a producir un sistema mediante el nuevo uso de algn elemento procedente de un esfuerzo de desarrollo anterior (Freeman 87) (Meyer 98)

Inicialmente, simple combinacin de componentes de cdigo almacenados en una biblioteca


(reutilizacin del cdigo, sin mtodo) enfoque muy simple

Qu se reutiliza? Cmo?

Beneficios de la reutilizacin
La reutilizacin es la nica aproximacin realista para llegar a los ndices de productividad y calidad que la industria del sw. necesita (Mili et al. 95).

Mejora de la productividad:
Disminucin tiempo de desarrollo:
mejor adaptacin requisitos cambiantes Los requisitos no son estables!

Disminucin de costes

Mejora de la calidad del sw.:


Mayor fiabilidad Mayor eficiencia (aunque al principio pueda parecer que no)

Dificultades para la reutilizacin


En muchas empresas no existe plan de reutilizacin (no se considera prioritario) Escasa formacin Resistencia del personal Pobre soporte metodolgico
uso de mtodos que no promueven la reutilizacin

(estructurados)

Necesarios mtodos para:

desarrollo para reutilizacin desarrollo con reutilizacin

Quin soporta los gastos adicionales de la reutilizacin?

Assets
Se puede reutilizar mucho ms que cdigo fuente:
beneficios mayores al reutilizar diseos y documentacin asociada al cdigo fuente reutilizable.

Asset o elemento sw. reutilizable:


cualquier producto sw. obtenido en el ciclo de vida del software, con independencia de su nivel de abstraccin:
especificaciones, diseos, cdigo, pruebas, documentacin, etc.

Caracterizacin de los assets (Garca et al. 97)


Atributos:
Identificador. Nombre. Versin. Fecha creacin. Fecha modificacin.

Subsistemas:
Descriptor:
implementar el mecanismo de clasificacin.

Cualificacin:
mtricas de calidad
Complejidad Cohesin Acoplamiento

Administrativo:
autores, accesos, etc.

Tcnico:
herramienta, formato, etc.

Documentacin. Pruebas.

Niveles de reutilizacin
de cdigo
libreras de funciones, editores, inclusin de ficheros, mecanismos de herencia en POO, componentes, etc.

de diseos
no volver a inventar arquitecturas
p.ej. patrones de diseo p.ej. patrones arquitectnicos (C/S, pipeline, OO, etc.)

de especificaciones
reutilizacin de las abstracciones del dominio debe estar asociada a la generacin (semi)automtica de los elementos de diseo e implementacin.

Elevar el nivel de abstraccin reutilizacin


Asset como subsistema agregacin de varios componentes atmicos a distintos niveles de abstraccin (mecano).

Tipos de assets o artefactos reutilizables (Jones 94)


Un asset puede encapsular cualquier abstraccin til producida durante el desarrollo de software
Planes de proyecto. Estimaciones de coste. Arquitectura. Especificaciones y modelos de requisitos. Diseos.

Cdigo fuente. Documentacin de usuario y tcnica. Interfaces hombremquina. Datos. Casos de prueba.

Modelo de procesos con reutilizacin (Pressman 98) p.490


Anlisis de dominios Desarrollo de arquitecturas de sw. Modelo de dominios Ingeniera de dominios
Requisitos de usuario

Desarrollo de artefactos reutilizables Modelo estructural Depsito de componentes o artefactos reutilizables

Anlisis de sistemas

Especificacin y diseo

Construccin Sw. de aplicacin

Ingeniera del software

Especificaciones de sistemas

Modelos de anlisis y diseo

Ingeniera de dominios
Objetivo: identificar, construir, catalogar y diseminar un conjunto de artefactos de sw. que tienen inters dentro de un dominio de aplicacin. Dominio: conjunto de sistemas relacionados. No ligado a ningn proyecto de sw. Ingeniera de dominios:
Anlisis Construccin Diseminacin

Anlisis del dominio


El proceso de identificar y crear un conjunto de componentes reutilizables que puedan ser usados en los sistemas desarrollados en un dominio. El anlisis de dominio del sw. es la identificacin, anlisis y especificacin de requisitos comunes de un dominio de aplicacin especfico, normalmente para su reutilizacin en mltiples proyectos dentro del mismo dominio de reutilizacin (Firesmith 93). Interesante a largo plazo en reas de producto consideradas como estratgicas:
Bajo costo, mejor calidad y menor tiempo de comercializacin.

Anlisis del dominio. Fases


(Berard 93) (Pressman 98) p.391 Definir el dominio a investigar. Extraer elementos del dominio:
OO: especificaciones, diseos y cdigo; bibliotecas de componentes ya desarrolladas; casos de prueba. No OO: polticas, procedimientos, planes, estndares, mtricas, y componentes no OO.

Clasificar los elementos extrados del dominio. Recolectar una muestra representativa de aplicaciones del dominio.
La aplicacin debe tener elementos dentro de las categoras definidas.

Analizar cada aplicacin dentro de la muestra.


Identificar objetos candidatos reutilizables.

Desarrollar un modelo de anlisis para los objetos.


Servir como base para el diseo y construccin de los objetos del dominio.

Desarrollo basado en componentes


Los sistemas de software actuales deben ser abiertos: distintas redes distintas plataformas hardware y software requisitos cambian constantemente
OO por si solo no es suficiente

los sistemas OO han fracasado en su promesa de mejorar la reutilizacin de software

Preferible considerar cada aplicacin como una instancia de una clase genrica de aplicaciones, construida a partir de un conjunto de componentes de software reconfigurables.

Componente
Concepto ms general que objeto: Unidades binarias de produccin, adquisicin y uso independiente, que interaccionan para formar un sistema (Szyperski 98) abstraccin esttica con conectores (plugs)
(Nierstrasz Tsichritzis 95)

no todas las abstracciones que deberan evolucionar con los cambios en los requisitos de una aplicacin son necesariamente objetos
se postula que es posible adaptarse con ms facilidad a los requisitos cambiantes en un paradigma orientado a componentes que en uno OO, desconectando y reconfigurando slo los componentes afectados.

Desarrollo basado en componentes. Cuestiones tcnicas


Qu mecanismos deben utilizar los lenguajes y entornos de programacin para soportar el desarrollo basado en componentes?
(objetos, clases, herencia, sistema de tipos, concurrencia y persistencia)

Cul es la estructura de un componente? Cules son los mecanismos para combinar componentes, adquiridos de distintas fuentes, internas y externas?
Necesidad de estndares para componentes

Estndares para el sw. de componentes


Imprescindibles para desarrollar mercados de componentes: Modelos comunes que permiten interoperar Especificaciones de interfaz concretas permiten la composicin Arquitecturas generales Estndares actuales: OMG (Object Management Group): OMA (Object Management Architecture) y CORBA
Microsoft: COM / DCOM / OLE 2.0 / ActiveX /.NET Sun: Java y JavaBeans Linux: modelos de componentes KParts y Bonobo para los

escritorios KDE y GNOME, respectivamente

Desarrollo basado en componentes. Cuestiones metodolgicas


Cmo y dnde se obtienen los componentes en el ciclo de vida del software?
Ingeniera de componentes/Ingeniera de dominios

Cmo deben modificarse los mtodos y modelos de proceso? De dnde provienen los componentes?
Un componente debe haber sido diseado para ser utilizado en composicin con otros componentes. Un componente normalmente no se disea por separado, sino que forma parte de un framework de componentes que colaboran entre s.

Clasificacin y recuperacin de assets o componentes


Aspecto crtico en reutilizacin. Repositorio: BD de informacin compartida sobre los elementos que se producen o se usan en un desarrollo sw. Tendencia actual: repositorios que permitan el trabajo conjunto de equipos de desarrollo localizados en diferentes lugares geogrficos a travs de Internet.

Cmo se describen los componentes de sw. en trminos no ambiguos y fcilmente clasificables?

Clasificacin enumerada
Estructura jerrquica que define clases y subclases de componentes de sw. Los componentes en s son las hojas Necesaria labor de ingeniera de dominio previa

Ejemplo:

operaciones de ventana visualizacin abrir basados en men open Window basados en sistema sysWindow cerrar a travs de puntero ... cambio de tamao a travs de rdenes setWindowSize, stdResize, shrinkWindow por arrastre pullWindow, stretchWindow ...

Clasificacin por facetas


Se analiza una cierta rea de dominio y se identifica un conjunto de caractersticas descriptivas bsicas (priorizadas): facetas. Se define un descriptor de facetas:
p.ej. {funcin, tipo de objeto, tipo de sistema}

Para cada faceta, conjunto de palabras reservadas:


p.ej. funcin=(copiar, desde) funcin=(copiar, sustituir, todo)

Se puede incorporar tesauro uso de sinnimos. Ms fcil de extender y adaptar que clasificacin enumerada.

Clasificacin de atributos y valores


Se define un conjunto de atributos para todos los componentes de una cierta zona del dominio. Parecido a una clasif. por facetas, pero:
no hay lmite para el n de atributos que se pueden utilizar. no se asignan prioridades a los atributos. no se utiliza la funcin de tesauro.

You might also like