Skip to content Skip to navigation

Connexions

You are here: Home » Content » Métricas Orientadas a Objetos

Navigation

Content Actions

  • Download module PDF
  • Add to ...
    Add the module to:
    • My Favorites
    • A lens
    • An external social bookmarking service
    • My Favorites (What is 'My Favorites'?)
      'My Favorites' is a special kind of lens which you can use to bookmark modules and collections directly in Connexions. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need a Connexions account to use 'My Favorites'.
    • A lens (What is a lens?)

      Definition of a lens

      Lenses

      A lens is a custom view of Connexions content. You can think of it as a fancy kind of list that will let you see Connexions through the eyes of organizations and people you trust.

      What is in a lens?

      Lens makers point to Connexions materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

      Who can create a lens?

      Any individual Connexions member, a community, or a respected organization.

    • External bookmarks
  • E-mail the author

Recently Viewed

This feature requires Javascript to be enabled.

Métricas Orientadas a Objetos

Module by: Miguel-Angel Sicilia

Summary: Clasificación de las Métricas Orientadas a Objetos.

Métricas orientadas a objetos

Las métricas OO se centran en métricas que se pueden aplicar a las características de encapsulamiento, ocultamiento de información, herencia y técnicas de abstracción de objetos que hagan única a esa clase.

Chidamber & Kemerer proponen una familia de medidas para desarrollos orientados a objetos:

  • Métodos ponderados por clase (MPC): Tamaño y complejidad
  • Profundidad árbol de herencia (PAH): Tamaño
  • Número de descendientes (NDD): Tamaño, acoplamiento y cohesión
  • Acoplamiento entre clases (ACO): Acoplamiento
  • Respuesta para una clase (RPC): Comunicación y complejidad
  • Carencia de cohesión en los métodos (CCM): Cohesión interna

Estas métricas, en líneas generales, permiten averiguar cuán bien están definidas las clases y el sistema, lo cual tiene un impacto directo en la mantenibilidad del mismo, tanto por la comprensión de lo desarrollado como por la dificultad de modificarlo con éxito.

Métodos ponderados por clase

Los métodos ponderados por clase1 suponen una clase i que contiene m métodos, cada uno con una complejidad ciclomática Vij (G), podemos tener una medida de la complejidad de la clase dada por: S i = Sumatorio j=1, m Vi j (G).

Profundidad del árbol de herencia

Todos los autores hacen notar la necesidad de medir las estructuras hereditarias en términos de profundidad o de densidad de nodos. Dichas jerarquías pueden medirse como la profundidad de cada clase dentro de su jerarquía, es decir, la longitud máxima desde el nodo que representa la clase hasta la raíz del árbol.

A medida que crece el valor del PAH, es más probable que las clases de niveles inferiores hereden muchos métodos. Esto da lugar a posibles dificultades cuando se intenta predecir el comportamiento de una clase y por lo tanto, mantenerla. Una jerarquía profunda lleva también a una mayor complejidad de diseño. Por otro lado, los valores grandes de PAH implican que se pueden reutilizar muchos métodos, lo que debe ser considerado como un elemento a favor de la mantenibildad.

Una métrica útil del sistema completo puede ser la media de profundidad del árbol de herencia2:

Figure 1
Figure 1 (graphics1.png)

Número de descendientes

Las subclases que son inmediatamente subordinadas a una clase de la jerarquía de clases se denominan sus descendientes. A medida que crece el número de descendientes3 NDD, se incrementa la reutilización, pero también implica que la abstracción representada por la clase predecesora se ve diluida. Esto dificulta el mantenimiento, ya que existe la posibilidad de que algunos de los descendientes no sean realmente miembros propios de la clase.

Acoplamiento entre clases

Para una clase determinada el acoplamiento entre clases4 se define como el número de otras clases con las cuales está “acoplada”. Es por lo tanto una medida del fan-out, esto es, del número de colaboradores (clases que se utilizan desde esa). Sistemas en los cuales una clase tiene un alto ACO y todas las demás tienen valores próximos a cero indican una estructura no orientada a objetos, con una clase principal dirigente. Por el contrario, la existencia de muchas clases con un ACO grande indica que el diseñador ha afinado demasiado la “granularidad” del sistema. Ninguna de las dos situaciones es deseable para la mantenibilidad: la primera situación hace complejo el mantenimiento de la clase con gran ACO y en la segunda situación la complejidad para entender el flujo del programa complica el mantenimiento.

Respuesta para una clase

La respuesta para una clase (RPC)5 mide tanto la comunicación interna como la externa. Esta métrica captura el tamaño del conjunto de respuesta para una clase. Este conjunto de respuesta para una clase consiste en todos los métodos llamados por los métodos locales. Definimos RPC como el número de métodos locales más el número de métodos llamados por los métodos locales.

Otra definición que podemos dar del conjunto de respuesta de una clase es la siguiente: “conjunto de métodos que pueden ser ejecutados potencialmente en respuesta a un mensaje recibido por un objeto de esa clase”. La RPC se definiría como el número de métodos existentes en el conjunto de respuesta.

Hay que precisar que no se discrimina entre dos mensajes enviados a un mismo método pero desde diferentes partes de la clase.

A medida que el RPC crece, el esfuerzo necesario para las verificaciones y pruebas crece, ya que la complejidad global de diseño de la clase crece también.

Carencia de cohesión en los métodos

La cohesión de una clase está caracterizada por cuán estrechamente están relacionados los métodos locales a las instancias de variables locales en una clase. La carencia de cohexión en los métodos (CCM)6 se define como el número de conjuntos disjuntos de métodos locales.

Unos valores elevados para CCM implican que la clase podría diseñarse mejor descomponiéndola en dos o más clases distintas. Aun cuando existen casos en que es justificable un valor elevado de CCM, es deseable mantener un elevado grado de cohesión, esto es, mantener un valor bajo para CCM.

Footnotes

  1. Weighted methods per class (WMC)
  2. Depth of inheritance tree (DIT)
  3. Number of children (NOC)
  4. Coupling between objects (CBO)
  5. Response for class (RFC)
  6. Lack of cohesion in methods (LCOM)

Comments, questions, feedback, criticisms?

Send feedback