Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de...

20
© 2007 by Pearson Education ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software Adaptado de

Transcript of Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de...

Page 1: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1

Reúso de Software

●  Adaptado de

Page 2: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 2

Reúso de Software

●  Na maioria das disciplinas de engenharia, os sistemas são projetados por meio de composição de componentes existentes

●  Em engenharia de software, a situação ainda é diferente •  Normalmente, grande parte de um novo sistema é

construída do zero •  Essa situação vem mudando, porém...

Page 3: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 3

Modalidades de Reúso ●  Reúso de sistemas

•  Um sistema inteiro pode ser reusado •  COTS – produto de prateleira – commercial-off-the-shelf – funcionalidades

adquiridas de terceiros

•  Uma arquitetura + partes do sistema (famílias de aplicações)

●  Reúso de componentes •  Os componentes de uma aplicação, desde subsistemas até

objetos simples, podem ser reusados •  Componentes podem ser construídos com reúso em mente

desde o início

●  Reúso de bibliotecas •  Mais popular e fácil

●  Reúso de conhecimento •  Por exemplo, padrões de projeto

Page 4: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 4

Benefícios do Reúso

Page 5: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 5

Desvantagens com Reúso

Page 6: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 6

O Panorama de Reúso

●  Existem muitas abordagens diferentes para reúso

●  O reúso é possível em uma variedade de níveis, desde funções simples até sistemas completos de aplicação

●  Reúso sempre deve ser feito com disciplina! •  Reúso Acidental vs. Reúso Sistemático

●  Desenvolvimento com Reúso vs. Desenvolvimento para Reúso

Page 7: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 7

Técnicas de Reúso

Page 8: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 8 Sistemas de ERP

Sistemas de grande porte que sintetizam a funcionalidade e as regras de negócio genéricos são configurados para uma organização

Page 9: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 9

Fatores de planejamento de reúso ●  O cronograma de desenvolvimento para o

software ●  O ciclo de vida previsto do software ●  O conhecimento, habilidades e experiência da

equipe de desenvolvimento ●  A importância do software e seus requisitos de

qualidade ●  O domínio da aplicação ●  A plataforma de execução para o software

Page 10: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 10

Frameworks

●  Um framework é um projeto de sistema ou subsistema feito de uma coleção de classes concretas e abstratas e as interfaces entre elas

●  O framework é instanciado através da implementação de classes concretas que estendem certas partes abstratas do framework •  Classes abstratas e interfaces

●  Frameworks são entidades moderadamente complexas •  Esforço para compreendê-los

•  Podem promover grande economia de esforço

Page 11: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 11

Classes de framework

●  Frameworks de infra-estrutura de sistema •  Apóiam o desenvolvimento de partes fundamentais

de um sistema, tais como comunicações, interfaces de usuário e compiladores.

●  Frameworks de integração/middleware •  Padrões e classes que apóiam a comunicação e a

troca de informações de componentes.Ex: .NET, EJB

●  Frameworks de aplicações corporativas •  Apóiam o desenvolvimento de tipos específicos de

aplicações, tais como sistemas médicos, de telecomunicações e financeiros

Page 12: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 12

Exemplo: Modelo-Visão-Controlador

●  Framework de infra-estrutura de sistema para projeto de GUI

●  Permite múltiplas apresentações de um objeto e interações separadas com essas apresentações

●  Model: dados, regras ●  View: saídas ●  Controller: medição

Page 13: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 13

Reúso de Sistemas

●  Reúso de aplicações inteiras •  Pela configuração de um sistema para um

ambiente

•  Pela integração de dois ou mais sistemas para criar uma nova aplicação

●  Exemplos: •  Integração de componentes COTS

•  Linhas de produtos de software

Page 14: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 14

Reúso de Componentes COTS

●  COTS - Commercial Off-The-Shelf systems •  São sistemas de aplicação completos que oferecem

uma API ou permitem o compartilhamento do seu banco de dados

●  É uma estratégia viável de desenvolvimento para alguns tipos de sistemas tais como os de e-commerce

●  O benefício-chave é o desenvolvimento mais rápido da aplicação •  Geralmente com um custo menor

Page 15: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 15

Algumas Perguntas Importantes

●  Quais produtos COTS oferecem a funcionalidade mais apropriada? •  Pode haver diversos produtos similares que podem ser

usados

●  Como os dados serão trocados? •  Produtos individuais usam estruturas únicas de dados e

formatos

●  Quais características do produto serão realmente usadas? •  A maioria dos produtos têm mais funcionalidade do que é

necessário

Page 16: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 16

Exemplos de Componentes COTS

●  No cliente, programas de email e de Web browsing padrão são usados.

●  No lado do servidor:

•  Servidores Web

•  Sistemas gerenciadores de banco de dados

●  Sistemas específicos de domínio

•  Sistemas de folha de pagamentos

•  Sistemas para a emissão de faturas

Page 17: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 17

Problemas de integração de sistemas COTS

●  Falta de controle sobre funcionalidades e características de qualidade •  Sistemas COTS podem ser menos eficientes do que

parecem ●  Problemas com a interoperabilidade

•  Sistemas COTS diferentes podem fazer suposições diferentes

●  Nenhum controle sobre a evolução do sistema •  Vendedores de COTS, e não usuários de sistema, controlam

a evolução ●  Suporte dos vendedores de COTS

Page 18: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 18

Pontos importantes

●  Atualmente, a maioria dos novos sistemas de software de negócios é desenvolvida com reúso de conhecimento e códigos de sistemas já implementados

●  Existem muitas maneiras de se reusar um software, desde o reúso de classes e métodos em bibliotecas até o o reúso de sistemas completos

●  Vantagens: redução de custos, desenvolvimento mais rápido, diminuição de riscos, aumento da confiança

Page 19: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 19

Pontos importantes

●  Frameworks permitem reúso e geralmente incorporam boas práticas de projeto por meio de padrões

●  Reúso de programas de prateleira (COTS): fornecem grande funcionalidade e reduzem radicalmente os custos/tempo

●  Sistemas ERP são exemplos de uso de COTS em grande escala. São configurados a partir de um sistema genérico com regras e processos do cliente

Page 20: Reúso de Software - eduardocunha11.github.io 8... · ©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software ... ©Ian Sommerville 2006

© 2007 by Pearson Education

©Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 20

Pontos importantes

●  Possíveis problemas com reúso baseado em COTS incluem:

•  a falta de controle sobre a funcionalidade e o desempenho

•  falta de controle sobre a evolução

•  necessidade de suporte dos fornecedores

•  dificuldade de interoperabilidade