Pergunta

Recentemente eu o usei NDepend e produziu um relatório bem em minhas montagens .net e pdbs relacionados.

A coisa mais interessante que encontrei no relatório era gráfico instabilidade vs. abstração. Eu queria entender isso em detalhes real, eu ler os seus documentos e metrices online, mas só poderia ajuda a uma extensão.

Primeiramente eu gostaria de entender como avaliar o gráfico corretamente e técnicas de abstração de controle com estabilidade.

Há um artigo muito bom aqui que as negociações sobre este mas o que mais além desta necessidade I é 'como posso controlar isso? [Controlando abstração com a estabilidade] '

text alt

Foi útil?

Solução

abstração é uma medida da rigidez de um sistema de software. Quanto maior a abstracção, diminuir a rigidez (ou maior a flexibilidade) e vice-versa. Se os componentes do sistema dependem de classes abstratas ou interfaces tal sistema é mais fácil de estender e mudança do que se dependesse diretamente sobre classes concretas.

A estabilidade é uma medida de tolerância para a mudança como na forma como o sistema de software permite alterações nele sem quebrá-lo. Isso é determinado pela análise das interdependências dos componentes do sistema.

de Robert C. Martin artigo em métricas OO descreve esses conceitos em mais quantitativa termos.

Trecho do artigo:

A responsabilidade, independência e estabilidade de uma categoria pode ser medido pela contagem do dependências que interagem com essa categoria. Três métricas foram identificados:

CA: aferentes Acoplamentos:. O número de classes fora desta categoria que dependem de classes dentro desta categoria

Ce: eferentes Acoplamentos:. O número de classes dentro desta categoria que dependem de aulas fora este categorias

I: Instabilidade: (Ce ÷ (Ca + Ce)): Esta métrica tem o intervalo [0,1]. I = 0 indica uma categoria maximamente estável. I = 1 indica uma categoria maximamente instável.

A: abstração: (# classes abstratas na categoria ÷ # total de aulas na categoria). Esta gama métrica é [0,1]. 0 meios concretos e 1 significa totalmente abstrato.

Em qualquer sistema de software particularmente grandes, o equilíbrio é fundamental. Neste caso, um sistema deve equilibrar abstração com a estabilidade, a fim de ser "bom". A posição na A-I gráfico mostra este. Por favor, leia o artigo para a explicação.

Outras dicas

Ambos abstração e instabilidade pode ser usado sozinho para avaliar seu código. Você sabe de antemão como abstrato ou estável algum módulo deve ser. Por exemplo, você quer camada de apresentação para ser moderadamente abstrata e altamente estável, porque os módulos inferiores dependem dele. Por outro lado, você quer camada de infra-estrutura para ser altamente concreto (baixa abstração) e altamente instável, porque ele deve implementar o que camadas superiores são exigentes.

Uma vez que é claro, você pode combinar abstração e instabilidade em um gráfico, e que é o gráfico instabilidade-abstração. Você quer que seu código para exposição tanto abstração, pois é estável, a fim de equilibrar as necessidades para apoiar futuras alterações nos requisitos.

Mas de qualquer maneira, você deve ter uma forte compreensão da instabilidade e métricas abstração sozinho antes de tentar compreendê-los trabalhar juntos. Você pode encontrar alguns exemplos sobre o que significa instabilidade neste artigo: Como usar módulo de acoplamento e Instabilidade Metrics o Guia Refactoring

Há um artigo relacionado derivando uma consulta CQLinq que as medidas instabilidade de todos os módulos do aplicativo: Como medir o módulo de acoplamento e instabilidade usando NDepend

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top