SlideShare uma empresa Scribd logo
Centro Universitário UNA
      Engenharia de Software centrada em Métodos Ágeis

                         Professor Edgar Davidson
Alunos:

       Davidson Marques

       Jarison Araújo



Princípio da Equivalência de Reuso/Versão (REP)

A unidade de reuso é a unidade da versão. Apenas componentes que possuem um
sistema de rastreamento de versão podem ter reuso efetivo. Esta unidade é o pacote.

Código não deve ser reutilizado, copiando-o de uma classe e colá-lo em outra. Nem
mesmo uma classe deve ser copiada de seu pacote original para dentro do seu projeto.
Fazendo isso você não obterá benefício nenhum quando o autor original corrigir erros
no código, acrescentar recursos ou melhorar seus métodos. Se ele modificar algo, você
terá que descobrir o que mudou e alterar na sua cópia. Com o tempo, seu código se
distanciará do original e com o tempo, poderá até mesmo se tornar irreconhecível.

Em vez disso, o código deve ser reutilizado, incluindo a biblioteca (pacote) liberada
pelo autor original. O autor original mantém a responsabilidade pela manutenção, você
não deve nem precisar conhecer o código fonte.

Para que esta reuso seja mesmo eficaz, o autor original deve manter um sistema de
controle de versões e identificar com números ou nomes de alguma maneira para que os
clientes destes pacotes possam perceber as diferentes versões.

A unidade de versão para o reuso torna-se o pacote. Mesmo que apenas uma classe seja
utilizada no reuso, pois existem tantas classes em uma biblioteca que seria oneroso
manter um sistema de versão para liberação e acompanhamento de todas elas
separadamente. Uma entidade de maior escala é necessária para este caso e o pacote se
enquadra bem nesta necessidade.

Contra-exemplo:




                               meu.pacote.trataarquivos


                                ArquivoParaDownload

                                +gerarArquivoZip()



                         DocumentosParaArquivoamento
                         +List arquivos

                         +gerarArquivoZip()




Neste contra-exemplo duas classes distintas dentro do meu.pacote implementam o
mesmo método, dispensando inteiramente o reuso. Isso acarreta problemas conhecidos,
como a necessidade de intervenção em vários pontos do programa para realizar a
mesma tarefa.

No segundo contra-exemplo, mostrado a seguir, o reuso é aplicado utilizando-se de uma
terceira classe especializada no tratamento de arquivos.
meu.pacote.trataarquivos

               ArquivoParaDownload          DocumentosParaArquivoamento
                                            +List arquivos




                       GeradorDeArquivos

                       +gerarArquivoZip()




Mesmo assim, está ainda é uma classe que pertence ao meu.pacote e é de nossa
responsabilidade mantê-la mesmo tendo copiado o seu funcionamento de outra classe,
pertencente a outro pacote.

No terceiro exemplo, já utilizando o reuso efetivo, com o princípio descrito aqui, não
copiamos nem reproduzimos o código já existente, utilizamos diretamente a classe que
pertence ao pacote do autor original fazendo reuso de um código que possui versão
definida e garantia de funcionamento, isentando-nos como desenvolvedores da
responsabilidade de manutenção sobre este código.




                                 meu.pacote.trataarquivos

              ArquivoParaDownload           DocumentosParaArquivoamento

                                            +List arquivos




                                        java.util.zip
              ZipOutputStream

Mais conteúdo relacionado

PDF
Python com TDD
PPTX
Aula 5 pacote
DOC
O kernel do linux
PDF
Estratégias de atualização usando yum
DOCX
Mercurial hg
PDF
Sap – stablility and abstract principle
PPTX
Trabalho OpenSUSe
PDF
Manual do Kubuntu
Python com TDD
Aula 5 pacote
O kernel do linux
Estratégias de atualização usando yum
Mercurial hg
Sap – stablility and abstract principle
Trabalho OpenSUSe
Manual do Kubuntu

Semelhante a Reuse release equivalence principle (20)

PDF
Pacotes -organizando_suas_classes_e_bibliotecas
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PDF
Rep reuse release equivalence principle
PPTX
Curso Java Básico - Aula 04
ODP
Java 11 Pacotes
PDF
Como gerenciar de forma correta os pacotes em debian e distribuições derivadas
PPT
http://www.dm.ufscar.br/~waldeck/curso/java/
PPTX
Fragmentos
ODP
Construção de Frameworks com Annotation e Reflection API em Java
PDF
40 php orientado a objetos
PDF
php orientado_a_objetos
PDF
Apostila php orientado a objetos
PDF
40 php orientado a objetos
PPTX
Curso de java - Antonio Alves - aula 04
PPTX
Curso de Java 2 - (PrimeiroPrograma, Variáveis, Tipos e Operadores.pptx
PDF
hibernate annotation
PPTX
Netbeans IDE
PDF
01 java fundamentos
PDF
Orientação a Objetos no Delphi - Por onde começar (I)
Pacotes -organizando_suas_classes_e_bibliotecas
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Rep reuse release equivalence principle
Curso Java Básico - Aula 04
Java 11 Pacotes
Como gerenciar de forma correta os pacotes em debian e distribuições derivadas
http://www.dm.ufscar.br/~waldeck/curso/java/
Fragmentos
Construção de Frameworks com Annotation e Reflection API em Java
40 php orientado a objetos
php orientado_a_objetos
Apostila php orientado a objetos
40 php orientado a objetos
Curso de java - Antonio Alves - aula 04
Curso de Java 2 - (PrimeiroPrograma, Variáveis, Tipos e Operadores.pptx
hibernate annotation
Netbeans IDE
01 java fundamentos
Orientação a Objetos no Delphi - Por onde começar (I)
Anúncio

Mais de Engenharia de Software Ágil (20)

PPTX
Sap – stablility and abstract principle
PPTX
Sap – stablility and abstract principle
PDF
Common closure principle
PPTX
Common closure principle
PDF
Acyclic dependencies principle
PPTX
Acyclic dependencies principle (adp)
PDF
OCP - The Open Close Principle - Princípio aberto/fechado
PDF
Sdp – stable dependencies principles
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
Sap – stablility and abstract principle
Sap – stablility and abstract principle
Common closure principle
Common closure principle
Acyclic dependencies principle
Acyclic dependencies principle (adp)
OCP - The Open Close Principle - Princípio aberto/fechado
Sdp – stable dependencies principles
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
Anúncio

Último (19)

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

Reuse release equivalence principle

  • 1. Centro Universitário UNA Engenharia de Software centrada em Métodos Ágeis Professor Edgar Davidson Alunos: Davidson Marques Jarison Araújo Princípio da Equivalência de Reuso/Versão (REP) A unidade de reuso é a unidade da versão. Apenas componentes que possuem um sistema de rastreamento de versão podem ter reuso efetivo. Esta unidade é o pacote. Código não deve ser reutilizado, copiando-o de uma classe e colá-lo em outra. Nem mesmo uma classe deve ser copiada de seu pacote original para dentro do seu projeto. Fazendo isso você não obterá benefício nenhum quando o autor original corrigir erros no código, acrescentar recursos ou melhorar seus métodos. Se ele modificar algo, você terá que descobrir o que mudou e alterar na sua cópia. Com o tempo, seu código se distanciará do original e com o tempo, poderá até mesmo se tornar irreconhecível. Em vez disso, o código deve ser reutilizado, incluindo a biblioteca (pacote) liberada pelo autor original. O autor original mantém a responsabilidade pela manutenção, você não deve nem precisar conhecer o código fonte. Para que esta reuso seja mesmo eficaz, o autor original deve manter um sistema de controle de versões e identificar com números ou nomes de alguma maneira para que os clientes destes pacotes possam perceber as diferentes versões. A unidade de versão para o reuso torna-se o pacote. Mesmo que apenas uma classe seja utilizada no reuso, pois existem tantas classes em uma biblioteca que seria oneroso manter um sistema de versão para liberação e acompanhamento de todas elas
  • 2. separadamente. Uma entidade de maior escala é necessária para este caso e o pacote se enquadra bem nesta necessidade. Contra-exemplo: meu.pacote.trataarquivos ArquivoParaDownload +gerarArquivoZip() DocumentosParaArquivoamento +List arquivos +gerarArquivoZip() Neste contra-exemplo duas classes distintas dentro do meu.pacote implementam o mesmo método, dispensando inteiramente o reuso. Isso acarreta problemas conhecidos, como a necessidade de intervenção em vários pontos do programa para realizar a mesma tarefa. No segundo contra-exemplo, mostrado a seguir, o reuso é aplicado utilizando-se de uma terceira classe especializada no tratamento de arquivos.
  • 3. meu.pacote.trataarquivos ArquivoParaDownload DocumentosParaArquivoamento +List arquivos GeradorDeArquivos +gerarArquivoZip() Mesmo assim, está ainda é uma classe que pertence ao meu.pacote e é de nossa responsabilidade mantê-la mesmo tendo copiado o seu funcionamento de outra classe, pertencente a outro pacote. No terceiro exemplo, já utilizando o reuso efetivo, com o princípio descrito aqui, não copiamos nem reproduzimos o código já existente, utilizamos diretamente a classe que pertence ao pacote do autor original fazendo reuso de um código que possui versão definida e garantia de funcionamento, isentando-nos como desenvolvedores da responsabilidade de manutenção sobre este código. meu.pacote.trataarquivos ArquivoParaDownload DocumentosParaArquivoamento +List arquivos java.util.zip ZipOutputStream