reúso

46
ENGENHARIA DE SOFTWARE AVANÇADA - REÚSO Diógenes Ricardo Reuso - Engenharia de Software - Mestrado em Eng. da Computação - POLI/UPE 1

Upload: diogenes-freitas

Post on 06-Jul-2015

818 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Reúso

ENGENHARIA DE SOFTWARE

AVANÇADA - REÚSO

Diógenes Ricardo Reuso - Engenharia de Software - Mestrado em Eng. da Computação - POLI/UPE 1

Page 2: Reúso

Roteiro

Apresentar o reúso de software

Descrever abordagens para

desenvolvimento em larga escala

Linha de produtos de software(SPL).

Vantagens e Desvantagens

Frameworks

Como desenvolver sistemas com COTS

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

2

Page 3: Reúso

Introdução

Não é tão novo...(McLROY,1968).

Em 2000 se torna “norma” para novos

sistemas

Por quê?

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

3

Menor custo de produção

Manutenção

Velocidade

Qualidade

ROI

Page 4: Reúso

Introdução

Aumento do reuso como movimento Open source

Custa?

Como fazer?

Adaptabilidade de sistemas já existentes

Web Services.

CEP, CPF, etc.

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

4

Page 5: Reúso

Classificação Reúso de sistemas de aplicação

Totalmente sem alteração.

Configuração para diferentes clientes.

COTS(Commercial Off-The-Shelf)

Reúso de componentes

De subsistemas até objetos

Exemplos?

Capítulo 17(Engenharia de software baseada em componentes) e Capítulo 19 (Serviços como componentes reusáveis)

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

5

Page 6: Reúso

Classificação

Reuso de objetos e funções

Já fazemos isso ;)

Bibliotecas com funções específicas, são

muito utilizadas em código recém-

desenvolvido

Reuso de conceito

Ideias, formas, padrões de projeto.

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

6

Page 7: Reúso

Considerações(+)

Confiança aumentada

Risco de projeto reduzido

Uso eficaz de especialistas

Conformidade com padrões

Desenvolvimento acelerado

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

7

Page 8: Reúso

Considerações(-)

Maiores custos de manutenção

Falta de ferramentas de suporte

Síndrome do “Não inventado aqui”

Criação, manutenção e uso de uma

biblioteca de componentes

Encontrar, compreender e adaptar os

componentes reusáveis

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

8

Page 9: Reúso

Introdução

O processo de software precisa estar

adaptado ao reuso

Requisitos

Projeto

Implementação

Matsumoto(1984) e Cusamano(1989)

HP(1995)

Exemplos das impressoras.

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

9

Page 10: Reúso

O panorama de reuso

De funções até aplicações

Planejando

Depende do sistema

Da tecnologia

Disponibilidade dos artefatos

Maturidade da equipe

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

10

Page 11: Reúso

O panorama de reuso

na prática A sua empresa possui total controle sobre componentes e

bibliotecas de software utilizados nos sistemas desenvolvidos?

É possível identificar a dependência entre os componentes?

Você consegue garantir que não existem componentes inseridos nos sistemas que não estão sendo utilizados?

Você controla se um componente com licença open source (GPL) foi inserido no software da sua empresa, obrigando legalmente que o código do seu software também seja distribuído com licença open source(GPL)?

Sua empresa consegue gerenciar separadamente os componentes open source baixados da internet, dos componentes proprietários desenvolvidos na própria empresa?

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

11

Page 12: Reúso

Reusamos?

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

12

Page 13: Reúso

Planejamento Cronograma

Pouco tempo -> COTS

Duração do software

Software de longa vida -> Manutenção

Conhecimento, habilidades e experiência da equipe

Importância do software e requisitos não funcionais

Certificações de segurança.

Sistemas Críticos

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

13

Page 14: Reúso

Planejamento Domínio da aplicação

Já existe software?

A plataforma em que o sistema será executado Componentes .Net, as library para Linux.

Conclusão Normalmente os gerentes não compreendem

os riscos associados ao reuso em relação ao com desenvolvimento original, preferindo estes últimos por serem conhecidos.

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

14

Page 15: Reúso

Framework

Objetos são normalmente muito

específicos

Entender ou Reimplementar?

Schimidt et al. (2004).

"...um conjunto integrado de artefatos de

software(como classes, objetos e

componentes) que colaboram para

fornecer uma arquitetura reusável para

uma família de aplicações relacionadas".

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

15

Page 16: Reúso

Tipos de frameworks

Frameworks de Infraestrutura

Compiladores, interface com usuário, comunicação

Frameworks de Middleware

Componentes padronizados

.Net da Microsoft.

Enterprise Java Beans(EBJ).

Frameworks de Aplicações corporativas

Telecomunicações e Sistemas financeiros

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

16

Page 17: Reúso

Tipos de frameworks

Frameworks de Aplicações WEB (WAFs).

Normalmente baseado no padrão

Composite do MVC

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

17

Page 18: Reúso

MVC (Model View Controller)

Década de 80

MVC ~= Observer + Strategy + Composite

+ ...

Um framework é um padrão na prática!

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

18

Page 19: Reúso

WAF

Engloba vários frameworks.

Proteção

Páginas WEB dinâmicas

Suporte a Banco de Dados

Gerenciamento de sessões

Interação de usuário – AJAX

Testes Unitários (Junit)

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

19

Page 20: Reúso

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

20

Page 21: Reúso

Funcionamento

Normalmente não se altera o código

Adicionamos classes concretas.

Callbacks

Métodos chamados em respostas a eventos do

framework

Controladores, ao invés de objetos específicos

da aplicação

As aplicações pode ser construídas para o

reuso futuro(Linha de Produtos de Software)

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

21

Page 22: Reúso

Abordagens

Frameworks X SPL (Software Product Line).

No framework criamos diferentes tipos de aplicações “únicas”.

Em uma SPL criamos diferentes tipos de aplicações semelhantes.

Curva de aprendizagem

Pode ser caro para introduzir um framework em um processo de desenvolvimento

Qual o melhor?

Difícil debugar.

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

22

Page 23: Reúso

Frameworks e SPL

Dependem de

recursos de OO

Normalmente não é

modificado

Apoio técnico

Software

Não são

necessariamente

dependentes de OO

Os componentes são

alterados, deletados

ou reescritos

Apoio ao domínio

Software e Hardware

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

23

Page 24: Reúso

Linha de Produtos de Software

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

24

Page 25: Reúso

Linha de Produtos de Software

o Já utilizamos?

o Quando construímos um sistema e depois aparece um outro projeto parecido...

o Normalmente o que acontece... o Novas instancias baseadas em produtos

existentes tende a corromper a estrutura(especializa).

o O que SPL faz... o Identifica funcionalidade comum e aplica em

uma plataforma estruturada para simplificar e o reuso e a configuração

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

25

Page 26: Reúso

Conceitos base Core assets

Feature Variabilidade

Variantes

Pontos de variação Variação

Mecanismo de Variabilidade

Dependência de Variantes

Restrições de dependência Requerida

Exclusiva

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

26

Page 27: Reúso

Conceitos base Tipo de variantes

Comum Variável Específica do

produto

Níveis de variabilidade Da SPL Do produto Dos componentes Dos subcomponentes De código

Classificação das variantes Mandatória Opcional Alternativa inclusiva Alternativa exclusiva

Alternativa mutualmente inclusiva

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

27

Page 28: Reúso

Linha de Produtos de Software O que é?

É um conjunto de aplicações com uma arquitetura comum e componentes compartilhados, sendo cada aplicação especializada para refletir necessidades diferentes.

Uma linha de produtos de software é um conjunto de sistemas com uso intensivo de reúso software que compartilham um conjunto de features comuns e gerenciáveis, que satisfazem às necessidades específicas de um segmento de mercado particular ou missão, e que são desenvolvidos a partir de um conjunto de core assets comuns, de modo planejado. (CLEMENTS E NORTHROP, 2001, p. 05).

O núcleo é projetado para ser configurado e adaptado para atender necessidades de clientes diferentes

Configurar, Implementar, modificar.

Customização em massa.

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

28

Page 29: Reúso

Customização em massa

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

29

Page 30: Reúso

Funcionamento da SPL

Quanto mais abstrato mais rápido e mais

barato para o cliente.

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

30

Page 31: Reúso

Quando usar?

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

31

Figura 1: Custo para desenvolver N tipos de sistemas comparando o

SSD com SPLE. Adaptada de Pohl (2005, p.10)

Page 32: Reúso

Linha de Produtos de Software

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

32

Figura 2: Principais atividades para SPLE adaptada de (NORTHROP e

CLEMENTS, 2007)

Page 33: Reúso

Linha de Produtos de Software

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

33

Figura 3: Os subprocessos da Engenharia de Domínio e Engenharia de

Aplicação. Figura adaptada de (POHL et. al., 2005)

Page 34: Reúso

Linha de Produtos de Software

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

34

Figura 4: Principais abordagens de gerenciamento de variabilidade.

(CHEN et. al., 2009)

Page 35: Reúso

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

35

Page 36: Reúso

Sistemas de solução COTS

Sistemas para um domínio simples até um ERP

Suposições de forma de trabalho do domínio

Dificuldades com situações específicas

Sistemas ERP o processo de configuração exige conhecimento detalhado do negócio

Consultores e clientes.

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

36

Page 37: Reúso

Sistemas de solução COTS

O número de

módulos oferecem

suporte para

funções diferentes

Há um conjunto de

processos

associados a cada

módulo

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

37

Page 38: Reúso

Sistemas de solução COTS

Uma forma amplamente usada em reuso de software

Limitação óbvia.

Restrição a configuração

A configuração envolve:

Seleção de funcionalidades

Estabelecimento de um modelo de dados

Definição das regras de negócio serão aplicadas nesses dados

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

38

Page 39: Reúso

Sistemas de solução COTS A configuração envolve ainda:

Criação de formulários de entrada e relatórios de saída

Novos processos de negócio estarão em conformidade como modelo de processos suportado pelo sistema?

Configuração de parâmetros que definam como o sistema é implantado internamente

Após a configuração o sistema está pronto para o teste.

Problemas?

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

39

Page 40: Reúso

Sistemas Integrados COTS

Quando usar?

Unir dois COTS ou integrar um COTS ao meu

sistema.

De que forma?

Por meio de API (application programming interfaces)

Interfaces de Serviços

Conexão entre saída de um e entrada de outro

Atualização dos banco de dados

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

40

Page 41: Reúso

Sistemas Integrados COTS

Decisões:

Qual produto oferece a funcionalidade

mais adequada?

Como os dados serão trocados?

Adaptadores

Quais características serão realmente

usadas?

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

41

Page 42: Reúso

Sistemas Integrados COTS

Boehm e Abts(1999)

Falta de controle de funcionalidade e

desempenho

De que lado está a culpa?

Problemas com a interoperabilidade com

vários sistemas COTS

A falta de normalização das interfaces torna

difícil a integração com o aumento do número de sistemas.

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

42

Page 43: Reúso

Sistemas Integrados COTS

Boehm e Abts(1999)

Não há controle sobre a evolução do sistema

Novas versões podem ser incompatíveis, ou com

funcionalidades indesejadas e versões anteriores

pode ficar indisponíveis e sem suporte

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

43

Isto

acontece?

Page 44: Reúso

Sistemas de solução COTS

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

44

Page 45: Reúso

Referências CHEN, Lianping; MUHAMMAD, Ali Babar, CAWLEY Ciaran; A Status Report on

the Evaluation of Variability Management Approaches Lero, the Irish Software Engineering Research Centre, University of Limerick, Ireland, 2009b

CLEMENTS P. e NORTHROP L., Software Product Lines: Practices and Patterns, Addison-Wesley, pp. 608, 2001.

NORTHROP, L. M. e CLEMENTS, P.C. A Framework for Software Product Line Practice. Version 5.0. Pittsburg. Software Engineering Institute, 2007. Disponível em: < http://www.sei.cmu.edu/productlines/framework.html >. Acesso em: 28 fev. 2010 às 10:24.

POHL, K.; BÖCKLE, G.; VAN DER LINDEN, F.: Software Product Line Engineering – Foundations, Principles, and Techniques. Springer, Heidelberg 2005.

OLIVEIRA, D. R. F.; Um estudo sobre gerenciamento de variabilidade de requisitos em linha de produtos de software trabalho de conclusão de curso, UPE, 2011.

SOMMERVILLE, Ian; Software Engineering, Ninth Edition, Pearson Education Limited, 2011

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

45

Page 46: Reúso

21/11/2012

Reuso - Engenharia de Software - Mestrado

em Eng. da Computação - POLI/UPE

46