Sdp – stable dependencies principles
-
Upload
engenharia-de-software-agil -
Category
Technology
-
view
1.453 -
download
1
Transcript of Sdp – stable dependencies principles
![Page 1: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/1.jpg)
Cláudio Henrique
Welenn Cássio
SDP – Stable Dependencies Principles
(Princípios das Dependências Estáveis)
![Page 2: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/2.jpg)
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.
![Page 3: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/3.jpg)
Definindo pacotes
Estável
e
Instável
![Page 4: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/4.jpg)
Estável: significa aproximadamente
"difícil de mudar“;
Instável: significa "fácil de mudar".
![Page 5: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/5.jpg)
Estabilidades de Pacotes
Precisamos de pacotes instáveis, caso
contrário, não poderemos mudar o
software facilmente.
![Page 6: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/6.jpg)
O principio
Um pacote não deve ser dependente de
um outro pacote que é mais propenso à
mudanças que este.
![Page 7: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/7.jpg)
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.
![Page 8: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/8.jpg)
Então, qual seria a melhor forma de
definir as condições dos pacotes?
![Page 9: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/9.jpg)
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
![Page 10: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/10.jpg)
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.
![Page 11: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/11.jpg)
Estabilidade
![Page 12: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/12.jpg)
Exemplo
![Page 13: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/13.jpg)
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.
![Page 14: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/14.jpg)
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.
![Page 15: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/15.jpg)
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.
![Page 16: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/16.jpg)
Métricas de estabilidade
Considere o seguinte exemplo:
![Page 17: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/17.jpg)
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.
![Page 18: Sdp – stable dependencies principles](https://reader035.fdocumentos.com/reader035/viewer/2022081205/559582701a28ab13548b4671/html5/thumbnails/18.jpg)
Referências Http://www.objectmentor.com/resources/articles/stability.pdf
http://mmiika.wordpress.com/oo-design-principles/