Inheritance-Report

Un Inheritance-Report es un archivo HTML que detalla cualquier relación de herencia que exista entre las clases de la aplicación monolítica Java®.

Al final de una ejecución satisfactoria del motor de IA, se puede producir un mensaje de aviso para indicar la existencia de relaciones de herencia entre particiones.

AVISO: la recomendación Partición contiene la cadena de herencia dañada entre particiones,
  modificar partition.txt para compensar, las particiones fusionadas pueden tener nombres combinados,
  vea partition.txt y cardinal_graph.json en la carpeta Cardinal para obtener detalles.

Las relaciones de herencia se vuelven problemáticas para las recomendaciones de partición porque las clases que se hacen referencia entre sí pueden estar en particiones separadas. En este caso, las particiones se fusionan hasta que todas las clases relacionadas por herencia están en la misma partición. Las relaciones de herencia basadas en la lógica empresarial, las costuras naturales o las particiones personalizadas pueden dar como resultado una o dos particiones grandes que contienen muchas clases.

Ejemplo de Herencia-Informe

Un Informe de herencia muestra visualmente una jerarquía de herencia de clase en una aplicación monolítica Java . La figura siguiente ofrece una muestra de una aplicación de ejemplo.


Herencia-Informe para una aplicación de ejemplo

En esta figura, la clase Owner en partition2 hereda de la clase Person en partition4, que a su vez hereda de la clase BaseEntity de partition2. El informe muestra la amplitud y la profundidad de las cadenas de herencia como un par [x:y] visualizado junto a cada clase. Para cualquier clase en particular, x representa la profundidad de la clase mientras y representa su número de hijos directos en la jerarquía de herencia de la aplicación monolítica Java. En este ejemplo, el par de números [2:3] junto a la clase NamedEntity en partition1 indica que la clase NamedEntity está en profundidad 2 y que tiene tres hijos directos. Los hijos son las clases Pet, PetTypey Specialty .

Utilice los recuadros de selección Filtrar herencias no observadas y Filtrar FQCN para reducir el desorden en la visualización del informe de herencia. Al seleccionar el recuadro Filtrar herencias no observadas se ocultan todas las clases que pertenecen a la partición de unobserved . Al seleccionar el recuadro Filtrar FQCN se suprimen los nombres de clase largos completos del informe. Estas opciones de filtro le ayudan a trabajar con informes de herencia de gran tamaño que se generan a partir de aplicaciones monolíticas Java heredadas de gran tamaño.

Las relaciones de herencia entre clases son dependencias que normalmente resultan de la compartición de código. El Informe de herencia sólo incluye la herencia adecuada, no las interfaces ni las clases correspondientes que las implementan.

Manejo de relaciones de herencia

Cuando existen dependencias de herencia entre particiones, es posible que sea necesario cambiar el código fuente para eliminar (o "aplanar") las relaciones de herencia entre determinadas clases antes de que sea posible generar buenos microservicios. Debe aplanar las relaciones de herencia sólo entre las clases que no están colocadas en las mismas particiones que sus padres inmediatos. En la figura anterior, todas las relaciones de herencia representadas deben estar aplanadas porque no hay una sola clase hijo que esté ubicada en la partición de su padre inmediato. Aunque las clases BaseEntity y Owner pertenecen a la partición partition2, el padre inmediato de la clase Owner es la clase Person en la partición partition4. Esta cadena de relaciones requiere un aplanamiento completo de la relación de herencia entre las clases BaseEntity, Person y Owner.

El aplanamiento de herencias introduciendo tipos adecuados en forma de interfaces Java o por delegación no es difícil y se explica en la literatura disponible. Algunos IDE incluyen características para aplanar las herencias con el mínimo esfuerzo. En la publicación Referencese incluye un conjunto de directrices de Concise para aplanar la herencia .

Una aplicación monolítica Java en la que se aplanan todas las relaciones de herencia necesarias es propicia para la refactorización. Para refactorizar la aplicación monolítica Java modificada, ejecute todo el proceso IBM Mono2Micro en la aplicación monolítica Java modificada, tal como se describe en Visión general deIBM Mono2Micro. Si las relaciones de herencia necesarias se han aplanado correctamente, una ejecución del motor de IA genera un Informe de herenciavacío, tal como se muestra en la figura siguiente.


Informe de herencia vacío