1. COMPONENTES REUTILIZABLES exploradores, se basa en los APIs cual
EN UN PROYECTO DE objetivo es poder definir un modelo de
componentes pequeños o medianos que
SOFTWARE
permitan una mejor accesibilidad, que sean
El objetivo de la ISBC (Ingeniería de portables con gran calidad y lo más simple
Software Basada en Componentes) es posibles, además de que los componentes
aumentar la productividad de otros software pueden soportar la introspección, ser
que ya están elaborados, esto se hace modificados, la comunicación mediante
reutilizando componentes estándares, pero eventos.
primero que nada un componente es una
Ahora Java 2 Platform Enterprise Edition
parte modular que encapsula su contenido
(J2EE) facilita y simplifica el desarrollo de
y es por eso que reutilizarlo es fácil ya que
programación en múltiples capas además
no es necesario reprogramarlo
incluye políticas y APIs como Java Servlets
completamente, el componente está
y Java Message Service (JMS), también es
compuesto de su interfaz y su
compatible con las plataformas estándares.
implementación por separado por lo que
Por otra pare se encuentra Microsoft.NET
solo se cambiara en su implementación él
que conecta personas, sistemas y
como hace las cosas no el servicio que
dispositivos, permite construir aplicaciones
provee ya originalmente y tampoco
web, inteligentes, servicios web XML, los
cambiara la resto de la aplicación. Cuando
desarrolladores de componentes puede
vamos a reutilizar un componente hay dos
utilizar herramientas como Microsoft Visual
clasificaciones una que divide en
Studio.NET el cual provee un ambiente
subcategorias las categorías de cada
integrado y rápido para programar, también
componente y el de facetas que nos
puede utilizar servidores como Microsoft
describe de manera profunda cada
Windows, SQL Server, BizTalk Server que
componente, por otra parte los elementos
integran corren y manejan aplicaciones y
de los componentes nos dicen el estado de
servicios web. En conjunto permite al
éstos como su servicio y también nos dice
desarrollador construir y correr aplicaciones
que el componente puede soportar varias
basadas en web, reduciendo el tiempo de
implementaciones, cuando tenemos los
codificación ya que partes de la
componentes a utilizar ahora buscamos
programación las realiza automáticamente,
programas donde ejecutarlos como puede
también permite el desarrollo, búsqueda y
ser Microsoft COM+, Sun Java Beans,
manipulación de datos XML.
Enterprise Java Beans etc.
Ahora hablaremos de las interfaces son la
Ahora los paquetes son componentes
parte visible de los componentes y no
agrupados que dan un servicio, para esto
afectan la implementación de los mismos.
también debemos tener en cuenta que los
Las interfaces definidas tienen dos
componentes están formados por objetos
propiedades funcionales unas que son la
que tiene acceso a su implementación pero
firma que describen las operaciones del
no debemos dejar accesible la
componente y las y el comportamiento que
implementación de nuestro componente a
describe el comportamiento del
objetos de afuera de esté, para utilizar los
componente. Se pueden describir dos tipos
componentes podemos usar CORBA que
de interfaces las exportadas o las
es actualmente la arquitectura estándar
importadas las interfaces exportadas
para objetos y compatible con varias
describen los servicios que ofrece un
plataformas.
componente en un ambiente mientras que
Por otro lado Java Beans es una las interfaces importadas especifican los
arquitectura neutral, también opera en servicios requeridos por un componente en
cualquier sistema operativo y permite la el ambiente. El único problema de las
reutilización de componentes los cuales interfaces es que no se actualicen y haya
soportan contenedores de diferentes incompatibilidad de versiones, por lo que
2. algunas veces en cuanto sale una interfaz los frameworks y patrones podemos decir
se congela su implementación y no se que los patrones de diseño son una
vuelven a modificar. estructura lógica en el software mientras
que los frameworks es una estructura física
Los contratos listan las restricciones que se basa en el diseño de los patrones
globales que mantendrá un componente, las diferencias entre ambos es que los
lista las restricciones que el cliente necesita frameworks son implementados en un
conocer (la precondición) y las que el lenguaje de programación y es ejecutado y
componente promete establecer (la pos los patrones necesitan ser implementados
condición) que en conjunto forman la cada que se utilizan, otra diferencia es que
especificación del componente, también los patrones son elementos más pequeños
especifica las interacciones entre que los frameworks y estos a su vez
componentes en términos de el conjunto de contiene varios patrones mientras que un
componentes que participan, el papel que patrón no puede contener varios
desempeña cada componente así como frameworks, otra cosa los patrones pueden
sus requerimientos, la especificación de los utilizarse en cualquier aplicación y los
métodos que instancia el contrato. Todo frameworks son más especializados y se
componente requiere de los servicios de aplican particularmente. Ahora sobre el
otros componentes, y en conjunto trabajan análisis y diseño orientado al objeto para la
para proveer un objetivo específico. reutilización, para esto podemos decir que
el termino reutilización fue postulado por
Los patrones capturan soluciones no
M.D Mclloroy en la conferencia de la NATO
obvias y describen relaciones entre las
en 1968 sobre Ingeniería de Software, el
estructuras más profundas de un sistema y
propósito de la reutilización es mejorar la
los mecanismos y no solo entre módulos
eficiencia y productividad del desarrollo de
independientes. Ahora un patrón de diseño
software utilizando elementos de software
puede ser empleado en el diseño y
existentes, para reutilizar un componente
documentación de un componente describe
esté debe cumplir ciertos requerimientos
los detalles de la implementación, pueden
para terminar como un componente
ser clasificados en 3 categorías
genérico y especializado, las técnicas para
dependiendo de su nivel de abstracción: los
utilizarlos consisten en la selección y
patrones de arquitectura capturan toda la
recuperación, la comprensión y evaluación,
estructura y organización de un sistema,
la adaptación y la integración de los
describen los subsistemas participantes y
componentes, en la reutilización se utiliza
especifica los papeles y relaciones que hay
la programación orientada a objetos la cual
entre ellos, otros son los patrones de
proporciona mecanismos como
diseño éstos refinan la estructura y el
encapsulación, abstracción y ocultación de
comportamiento de los subsistemas y la
la información y las clases proporcionan
comunicación entre ellos. Pero en
dos niveles de reutilización como
conclusión los patrones sirven para
representación de una abstracción que se
identificar y describir los componentes que
puede especializar y como fabrica de
se van a reutilizar. Los frameworks son
objetos que comparten estructura y
marcos de trabajo donde se juntan todas
comportamiento, para esto se usa la
las piezas o componentes reutilizables su
herencia que permite que una clase utilice
diseño puede servir para varias situaciones
objetos de ella en otra clase pero no es tan
y en ellos se especifican los requerimientos
eficiente a la hora de una aplicación amplia
que deben tener los componentes que
al tener muchas dependencias internas en
estarán en él, la diferencia que hay entre
el recurso de rapidez, por otro lado los
estos y los contratos es que los frameworks
frameworks son un conjunto de clases
se enfocan en las propiedades globales de
asociadas por herencia donde las clases
los componentes y los contratos
abstractas son las principales y le siguen
especifican el comportamiento y
las clases concretas las cuales trabajan
requerimientos de los mismos y referente a
como un todo y debe de ocultar las partes
3. de diseño y dejar accesibles las que deben subsistema debe tener una fuerte cohesión
especializarse y para reutilizar un es decir que si un subsistema es
frameworks se debe definir las clases que modificado no debe alterar a un
se necesitan y configurar objetos ya que subsistemas de nivel bajo, cada
este se reutiliza completo. Ahora hablemos subsistema debe tener una alta cohesión y
del análisis y diseño orientado al objeto, un bajo acoplamiento, se debe ocultar el
donde el objetivo del análisis es modelar el comportamiento o funcionalidad entre los
dominio del problema identificando los subsistemas, después de esto llegamos al
objetos semánticos que contiene el diseño detallado que consiste en la
significado de las especificaciones y los utilización de la herencia para que los
requisitos mientras que el diseño se enfoca componentes sean menores más sencillos
en los objetos semánticos relacionados a de entender y modificar, utilizar interfaces,
las soluciones examinando de nueva métodos públicos, usar el polimorfismo y
cuenta las clases para mejorar su evitar clases demasiado grandes. Para la
reutilización y aventajar sobre la herencia, reutilización utilizamos mucho el termino
pero estos dos pasos deben llevarse a dominio que puede definirse como un área
cabo juntos de manera concurrente. En de conocimiento donde se observan
concreto el AOO sirve para identificar los conceptos relacionados por lo que el
requerimientos de nuestro software para análisis de dominio es un proceso de
esto se realizan tres actividades las cuales creación y mantenimiento de estructuras
son, identificar las clases, atributos y los hay verticales que especifica una clase
comportamientos y tener lo reemplazos de de sistemas y los horizontales que contiene
los anteriores y especificar el partes generales de software, es muy
comportamiento dinámico mediante paso importante que el dominio de nuestro
de mensajes, algunas consideraciones que software se defina de manera clara y juntar
se deben de tomar son: recoger toda la información después de esto se
información de la mayor cantidad de debe recolectar datos sobre los
fuentes posibles para una mejor visión a componentes que vamos a utilizar si sirven
futuro, capturar todos los requisitos que se o no, deben clasificarse y analizarse los
puedan para tener un mejor producto datos para determinar nuevos
reutilizable, que su implementación sea lo requerimientos, las características del
más sencillo posible para que lo entienda dominio son el análisis del contexto que
quien lo va a reutilizar, refinar y eliminar consiste en definir el alcance, funciones y
clases redundantes, utilizar la herencia características del domino en diagramas de
para especializar nuestros componentes, flujo de datos, el modelo del dominio su
tomar en cuenta todas las aplicaciones propósito es analizar las cosas en común y
hechas con características comunes para diferencias del problema , analiza las
buscar soluciones, generalizar nuestro características y capacidades y servicios de
software para que se permita reutilizar las aplicaciones, se define el conocimiento
componentes sin necesidad de del dominio para implementarlo y el análisis
reestructurar la arquitectura mediante la funcional representa el comportamiento de
herencia, establecer las variantes que hay las aplicaciones. En conclusión se puede
entre varios sistemas para permitirles una decir que la reutilización tiene beneficios en
larga vida, revisar la documentación para calidad, productividad, funcionamiento,
verificar que no haya errores o requisitos confiabilidad, interoperabilidad, reducción
incumplidos. Apara continuar hablemos de esfuerzo y su facetas son 6: substancia
sobre el DOO cuyo propósito es crear una define los componente a reutilizar), alcance
arquitectura para el sistema todo esto se (la forma y grado), modo (como se lleva a
hace mediante el análisis que se hizo cabo), técnica (lo que se utiliza para
anteriormente ejecutar las estrategias implementar), intención (como se
implementar las clases y atributos pero el utilizaran), y producto (que es reutilizado).
problema aquí es que la complejidad se Los tipos de reutilización son: reutilización
acrecienta rápidamente, y un buen compositiva está basada en componentes
4. que aun no se han modificado y la
reutilización generativa que se basa más
en reutilizar un proceso que un
componente, también debemos saber que
dentro de un software se puede reutilizar
desde el código fuente, la documentación,
los objetos, texto, y arquitectura, algoritmos
ya que estos son la base del éxito de un
programa, las librerías de función, de
clases, la arquitectura del software, por otra
pare debemos tener en cuenta los aspectos
legales que son los derechos de registro
del software al momento de reutilizarlo, los
aspectos económicos como cuanto vamos
a invertir y que vamos a obtener al terminar
nuestro software, aspectos
organizacionales dependiendo de los
afectados por el software y los aspectos de
métricas para estudiar a fondo el proyecto
antes de su realización.
ALICIA GABRIELA OYERVIDES ARJONA
(10380692)