Architecture Metrics
Loading...
Searching...
No Matches
Ucu.Andis.ArchitectureMetrics Namespace Reference

Classes

class  MetricsCalculator
 Calcula métricas de estabilidad arquitectónica para componentes basadas en sus dependencias. More...

Functions

record Component (string Name, IReadOnlyCollection< IType > Types)
 Representa un componente arquitectónico, agrupando tipos por ensamblado -assembly-.
record ComponentCouplings (Dictionary< string, int > FanIn, Dictionary< string, int > FanOut)
 Contiene el acoplamiento aferente -FanIn- y eferente -FanOut- para todos los componentes.
record ComponentDependencies (string ComponentName, IReadOnlyCollection< string > Dependencies)
 Representa las dependencias de un componente hacia otros componentes.
record ComponentMetrics (string Name, int FanIn, int FanOut, double Abstractness, double Instability, double Distance)
 Contiene todas las métricas de estabilidad arquitectónica para un componente.

Function Documentation

◆ Component()

record Ucu.Andis.ArchitectureMetrics.Component ( string Name,
IReadOnlyCollection< IType > Types )

Representa un componente arquitectónico, agrupando tipos por ensamblado -assembly-.

Parameters
NameEl nombre del componente -nombre del ensamblado-.
TypesColección de tipos que conforman el componente.

Un componente en este contexto es una unidad de despliegue -ensamblado- que puede contener múltiples tipos. El análisis de acoplamiento e inestabilidad arquitectónica se hace para los componentes, no para los tipos individuales.

Here is the caller graph for this function:

◆ ComponentCouplings()

record Ucu.Andis.ArchitectureMetrics.ComponentCouplings ( Dictionary< string, int > FanIn,
Dictionary< string, int > FanOut )

Contiene el acoplamiento aferente -FanIn- y eferente -FanOut- para todos los componentes.

Parameters
FanInDiccionario de acoplamiento aferente: nombre de componente → cantidad de componentes que dependen de él.
FanOutDiccionario de acoplamiento eferente: nombre de componente → cantidad de componentes de los que depende.

Estos valores son necesarios para calcular la inestabilidad: I = FanOut / (FanIn + FanOut).

Here is the caller graph for this function:

◆ ComponentDependencies()

record Ucu.Andis.ArchitectureMetrics.ComponentDependencies ( string ComponentName,
IReadOnlyCollection< string > Dependencies )

Representa las dependencias de un componente hacia otros componentes.

Parameters
ComponentNameNombre del componente que tiene las dependencias.
DependenciesColección de nombres de componentes de los que depende este componente.

Una dependencia se registra cuando un tipo en el componente depende de un tipo en otro componente. Se consideran dependencias:

  • Referencias a tipos en variables, propiedades, parámetros de métodos y valores de retorno.
  • Herencia de tipos.
  • Implementación de interfaces.

Las dependencias internas al mismo componente se ignoran.

Here is the caller graph for this function:

◆ ComponentMetrics()

record Ucu.Andis.ArchitectureMetrics.ComponentMetrics ( string Name,
int FanIn,
int FanOut,
double Abstractness,
double Instability,
double Distance )

Contiene todas las métricas de estabilidad arquitectónica para un componente.

Parameters
NameNombre del componente.
FanInAcoplamiento aferente: cuántos componentes dependen de este.
FanOutAcoplamiento eferente: de cuántos componentes este depende.
AbstractnessProporción de tipos abstractos o extensibles -A = 0 a 1-.
InstabilityMedida de inestabilidad -I = FanOut / (FanIn + FanOut), 0 a 1-.
DistanceDistancia de la secuencia principal -D = |A + I - 1|, 0 a 1-.

Estas métricas son indicadores clave de la calidad arquitectónica según Robert C. Martin.

La abstracción considera tipos abstractos y extensibles:

  • Interfaces
  • Clases abstractas
  • Records abstractos
  • Tipos genéricos -extensibles vía parametrización-

Interpretación de métricas:

  • Inestabilidad -I- cercano a 0: Componente estable, resistente al cambio.
  • Inestabilidad -I- cercano a 1: Componente inestable, susceptible a cambios.
  • Distancia -D- cercano a 0 o 1: Componente en la secuencia principal -bien diseñado-.
  • Distancia -D- cercano a 0.5: Componente fuera de la secuencia principal -mal diseñado-.
Here is the caller graph for this function: