SlideShare uma empresa Scribd logo
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

PDF
RESULTADO DA PROVA POLÍCIA CIVIL 2016
PDF
PPTX
Sap – stablility and abstract principle
PPTX
Sap – stablility and abstract principle
PDF
Sap – stablility and abstract principle
PDF
Common closure principle
PPTX
Common closure principle
PDF
Acyclic dependencies principle
RESULTADO DA PROVA POLÍCIA CIVIL 2016
Sap – stablility and abstract principle
Sap – stablility and abstract principle
Sap – stablility and abstract principle
Common closure principle
Common closure principle
Acyclic dependencies principle

Mais de Engenharia de Software Ágil (17)

PPTX
Acyclic dependencies principle (adp)
PDF
Reuse release equivalence principle
PDF
Rep reuse release equivalence principle
PDF
OCP - The Open Close Principle - Princípio aberto/fechado
PDF
principio de reutilização comum
PPTX
Princípio law of demeter
PDF
Lod law of demeter
PDF
Dip the dependency inversion principle
PPTX
Dip the dependency inversion principle
PPTX
Dip the dependency inversion principle
PDF
(ISP) - Interface Segregation Principle
PDF
LSP – The Liskov Substitution Principle
PDF
SRP - Single Responsability Principle
PDF
Princípio Law Of Demeter (LOD)
PPT
TDD - Test Driven Development
PPTX
DDD - Domain Driven Design
Acyclic dependencies principle (adp)
Reuse release equivalence principle
Rep reuse release equivalence principle
OCP - The Open Close Principle - Princípio aberto/fechado
principio de reutilização comum
Princípio law of demeter
Lod law of demeter
Dip the dependency inversion principle
Dip the dependency inversion principle
Dip the dependency inversion principle
(ISP) - Interface Segregation Principle
LSP – The Liskov Substitution Principle
SRP - Single Responsability Principle
Princípio Law Of Demeter (LOD)
TDD - Test Driven Development
DDD - Domain Driven Design
Anúncio

Último (19)

PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Apple Pippin Uma breve introdução. - David Glotz
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
COBITxITIL-Entenda as diferença em uso governança TI
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Custos e liquidação no SAP Transportation Management, TM130 Col18
Processos na gestão de transportes, TM100 Col18
Aula 18 - Manipulacao De Arquivos python
Aula04-Academia Heri- Tecnologia Geral 2025
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Apple Pippin Uma breve introdução. - David Glotz
Anúncio

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.