SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
SDP – Stable Dependencies Principles
(Princípios das Dependências Estáveis)




                          Cláudio Henrique
                             Welenn Cássio
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?
Estabilidade
 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
 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/

Mais conteúdo relacionado

Mais de Engenharia de Software Ágil

OCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoOCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoEngenharia de Software Ágil
 

Mais de Engenharia de Software Ágil (17)

Acyclic dependencies principle (adp)
Acyclic dependencies principle  (adp)Acyclic dependencies principle  (adp)
Acyclic dependencies principle (adp)
 
Reuse release equivalence principle
Reuse release equivalence principleReuse release equivalence principle
Reuse release equivalence principle
 
Rep reuse release equivalence principle
Rep reuse release equivalence principleRep reuse release equivalence principle
Rep reuse release equivalence principle
 
OCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoOCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechado
 
principio de reutilização comum
principio de reutilização comumprincipio de reutilização comum
principio de reutilização comum
 
Princípio law of demeter
Princípio law of demeterPrincípio law of demeter
Princípio law of demeter
 
Lod law of demeter
Lod law of demeterLod law of demeter
Lod law of demeter
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
(ISP) - Interface Segregation Principle
(ISP)  - Interface Segregation Principle(ISP)  - Interface Segregation Principle
(ISP) - Interface Segregation Principle
 
LSP – The Liskov Substitution Principle
LSP – The Liskov Substitution PrincipleLSP – The Liskov Substitution Principle
LSP – The Liskov Substitution Principle
 
SRP - Single Responsability Principle
SRP - Single Responsability PrincipleSRP - Single Responsability Principle
SRP - Single Responsability Principle
 
Princípio Law Of Demeter (LOD)
Princípio Law Of Demeter (LOD)Princípio Law Of Demeter (LOD)
Princípio Law Of Demeter (LOD)
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
FDD
FDDFDD
FDD
 
DDD - Domain Driven Design
DDD - Domain Driven DesignDDD - Domain Driven Design
DDD - Domain Driven Design
 

Sdp – stable dependencies principles

  • 1. SDP – Stable Dependencies Principles (Princípios das Dependências Estáveis) Cláudio Henrique Welenn Cássio
  • 2. 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.
  • 4.  Estável: significa aproximadamente "difícil de mudar“;  Instável: significa "fácil de mudar".
  • 5. Estabilidades de Pacotes  Precisamos de pacotes instáveis, caso contrário, não poderemos mudar o software facilmente.
  • 6. O principio  Um pacote não deve ser dependente de um outro pacote que é mais propenso à mudanças que este.
  • 7. 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.
  • 8. Então, qual seria a melhor forma de definir as condições dos pacotes?
  • 9. Estabilidade  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.
  • 10. 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.
  • 13. 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.
  • 14. 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.
  • 15. 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.
  • 16. Métricas de estabilidade  Considere o seguinte exemplo:
  • 17. 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.