reúso
TRANSCRIPT
ENGENHARIA DE SOFTWARE
AVANÇADA - REÚSO
Diógenes Ricardo Reuso - Engenharia de Software - Mestrado em Eng. da Computação - POLI/UPE 1
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
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
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
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
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
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
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
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
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
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
Reusamos?
21/11/2012
Reuso - Engenharia de Software - Mestrado
em Eng. da Computação - POLI/UPE
12
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
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
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
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
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
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
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
21/11/2012
Reuso - Engenharia de Software - Mestrado
em Eng. da Computação - POLI/UPE
20
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
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
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
Linha de Produtos de Software
21/11/2012
Reuso - Engenharia de Software - Mestrado
em Eng. da Computação - POLI/UPE
24
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
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
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
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
Customização em massa
21/11/2012
Reuso - Engenharia de Software - Mestrado
em Eng. da Computação - POLI/UPE
29
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
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)
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)
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)
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)
21/11/2012
Reuso - Engenharia de Software - Mestrado
em Eng. da Computação - POLI/UPE
35
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
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
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
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
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
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
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
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?
Sistemas de solução COTS
21/11/2012
Reuso - Engenharia de Software - Mestrado
em Eng. da Computação - POLI/UPE
44
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
21/11/2012
Reuso - Engenharia de Software - Mestrado
em Eng. da Computação - POLI/UPE
46