sdp – stable dependencies principles
TRANSCRIPT
Cláudio Henrique
Welenn Cássio
SDP – Stable Dependencies Principles
(Princípios das Dependências Estáveis)
Conceito Geral:
As dependências entre os pacotes devem
ser no sentido da estabilidade dos pacotes.
Um pacote deve depender apenas de
pacotes que são mais estáveis do que ele.
Definindo pacotes
Estável
e
Instável
Estável: significa aproximadamente
"difícil de mudar“;
Instável: significa "fácil de mudar".
Estabilidades de Pacotes
Precisamos de pacotes instáveis, caso
contrário, não poderemos mudar o
software facilmente.
O principio
Um pacote não deve ser dependente de
um outro pacote que é mais propenso à
mudanças que este.
Distribuições iguais
Se todos os pacotes têm distribuições
relativamente iguais para uma mudança,
isso é provavelmente um sinal de má
organização, e se deve ao desejo de
apoiar mudanças prováveis e ao mesmo
tempo proporcionar estabilidade.
Então, qual seria a melhor forma de
definir as condições dos pacotes?
Se você não sabe que tipos de mudanças são
prováveis, é melhor esperar e ver o que
acontece quando o sistema evolui.
Estabilidade
Estabilidade
Uma boa prática adotada é modelar as
dependências dos pacotes de forma a
colocar os pacotes instáveis acima do
pacotes estáveis.
Estabilidade
Exemplo
Exemplo
No exemplo, é possível verificar que o pacote Cliente é o
mais estável pois existem classes de outros pacotes que
dependem das classes de seu pacote.
O pacote Empresa Aérea é estável (no domínio do negócio),
porém, menos estável que Cliente pois, se houver uma
mudança de negócios que passe a disponibilizar o transporte
aéreo por helicóptero uma mudança em sua estrutura interna
será exigida.
O mesmo acontece com o pacote Cobrança, imaginando um
cenário onde a forma de pagamento passa a ser feita também
usando cartão de crédito.
Métricas de estabilidade
Como podemos medir a estabilidade de um
pacote?
Uma maneira é contar o número de
dependências que entram e saem desse
pacote. Estas contagens nos permitirão
calcular a estabilidade posicional do pacote.
Métricas de estabilidade
• Ca: Acoplamentos Aferentes: O número de classes de fora
deste pacote, que dependem de classes dentro deste pacote.
• Ce: Acoplamentos eferente: O número de classes dentro
desse pacote que depende de classes de fora deste pacote.
• I: Instabilidade: (Ce / (Ca + Ce)): Esta métrica tem no
intervalo [0,1]. I = 0 indica um ser maximamente
pacote estável. I = 1 indica um pacote máximo instável.
Métricas de estabilidade
Considere o seguinte exemplo:
Conclusão
Para se obter a estabilidade de pacotes é
necessário estabelecer um design que
proporcione o seguinte:
Pacotes sujeitos à mudanças devem depender
de pacotes sujeitos a menos mudanças, ou
seja, pacotes “instáveis” deve ser
dependentes de pacotes “estáveis” ou, mais
“estáveis” que o mesmo.
Referências Http://www.objectmentor.com/resources/articles/stability.pdf
http://mmiika.wordpress.com/oo-design-principles/