26
Reutilização de Software Reutilização de Software Cláudia Maria Lima Werner Cláudia Maria Lima Werner [email protected] [email protected] COPPE/UFRJ COPPE/UFRJ Programa de Engenharia de Sistemas e Programa de Engenharia de Sistemas e Computação Computação

Reutilização de Software Cláudia Maria Lima Werner [email protected]/UFRJ Programa de Engenharia de Sistemas e Computação

Embed Size (px)

Citation preview

Page 1: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Reutilização de SoftwareReutilização de Software

Cláudia Maria Lima WernerCláudia Maria Lima Werner

[email protected]@cos.ufrj.br

COPPE/UFRJCOPPE/UFRJ

Programa de Engenharia de Sistemas e ComputaçãoPrograma de Engenharia de Sistemas e Computação

Page 2: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

TópicosTópicos

Engenharia de SoftwareEngenharia de Software

Processo de SoftwareProcesso de Software

Reutilização de SoftwareReutilização de Software

Benefícios e DificuldadesBenefícios e Dificuldades

HistóricoHistórico

Gerência de ReutilizaçãoGerência de Reutilização

Modelo de Referência (MR MPS)Modelo de Referência (MR MPS)

Page 3: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Engenharia de SoftwareEngenharia de Software

““Aplicação de uma abordagem sistemática, Aplicação de uma abordagem sistemática,

disciplinada e quantificativa para o desenvolvimento, disciplinada e quantificativa para o desenvolvimento,

operação e manutenção de software, isto é, a operação e manutenção de software, isto é, a

aplicação da engenharia ao software.”aplicação da engenharia ao software.”

IEEE, 1993IEEE, 1993

Page 4: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

EngenhariaEngenharia

Resolução de problemas através de soluções Resolução de problemas através de soluções

economicamente viáveiseconomicamente viáveis

Motivacão: Limitação de recursos, tempo e Motivacão: Limitação de recursos, tempo e

pessoalpessoal

Método: Aplicação de conhecimento científico Método: Aplicação de conhecimento científico

sobre um determinado domínio tecnológicosobre um determinado domínio tecnológico

Desenvolvimento constante de tecnologias e Desenvolvimento constante de tecnologias e

conhecimentoconhecimento

Page 5: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Dificuldades com SoftwareDificuldades com Software

O desenvolvimento de produtos de software é O desenvolvimento de produtos de software é

carocaro

O tempo estimado para desenvolvimento de um O tempo estimado para desenvolvimento de um

produto de software geralmente é superadoproduto de software geralmente é superado

Produtos de software dificilmente atingem o Produtos de software dificilmente atingem o

padrão de qualidade esperadopadrão de qualidade esperado

O grau de progresso no desenvolvimento de um O grau de progresso no desenvolvimento de um

produto de software é difícil de medirproduto de software é difícil de medir

Page 6: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Crise do SoftwareCrise do Software

teve início em meados da década de 1960teve início em meados da década de 1960

custos de hardware começam a reduzircustos de hardware começam a reduzir

computadores se tornam cada vez mais velozes e computadores se tornam cada vez mais velozes e

com maior capacidade de armazenamentocom maior capacidade de armazenamento

demanda por software cresce com os avanços do demanda por software cresce com os avanços do

hardwarehardware

equipes de desenvolvimento não acompanham a equipes de desenvolvimento não acompanham a

demanda por produçãodemanda por produção

Page 7: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Objetivos da ESObjetivos da ES

identificar os problemas envolvidos com o identificar os problemas envolvidos com o

desenvolvimento de softwaredesenvolvimento de software

analisar as causas destes problemasanalisar as causas destes problemas

propor soluções economicamente viáveis para a propor soluções economicamente viáveis para a

resolução destes problemasresolução destes problemas

organizar o conhecimento sobre técnicas para o organizar o conhecimento sobre técnicas para o

desenvolvimento de softwaredesenvolvimento de software

Page 8: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Engenharia de SoftwareEngenharia de Software

Atualmente, o termo Engenharia de Software é utilizado Atualmente, o termo Engenharia de Software é utilizado

para se referir a:para se referir a:

modelos de ciclo de vidamodelos de ciclo de vida

métodos e ferramentas de desenvolvimentométodos e ferramentas de desenvolvimento

técnicas para gerência e controle da qualidadetécnicas para gerência e controle da qualidade

documentaçãodocumentação

outras técnicas que estabelecem padrões para as outras técnicas que estabelecem padrões para as

atividades de produção e manutenção de softwareatividades de produção e manutenção de software

Page 9: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Conjunto de atividades, métodos, práticas e Conjunto de atividades, métodos, práticas e

tecnologias utilizadas para o desenvolvimento e tecnologias utilizadas para o desenvolvimento e

manutenção de software e produtos relacionados.manutenção de software e produtos relacionados.

Processo de SoftwareProcesso de Software

Page 10: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

AnáliseAnálise ProjetoProjeto CodificaçãoCodificação TesteTeste

Engenharia de Sistemas/ Informação

ManutençãoManutenção

Modelo de Processo ClássicoModelo de Processo Clássico

Page 11: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Atividades de ApoioAtividades de Apoio

Acompanhamento e Controle do Projeto Revisões Técnicas Garantia da Qualidade de Software Gerência de Configuração Preparação e Produção de Documentos Gerência de Reutilização Medições Gerência de Risco

Page 12: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Atividades de ApoioAtividades de Apoio

Acompanhamento e Controle do Projeto Revisões Técnicas Garantia da Qualidade de Software Gerência de Configuração Preparação e Produção de Documentos Gerência de Reutilização Medições Gerência de Risco

Page 13: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Reutilização de SoftwareReutilização de Software

Reutilização de software é o processo de incorporar em Reutilização de software é o processo de incorporar em

um novo produto:um novo produto:

código,código,

especificações de requisitos e projeto,especificações de requisitos e projeto,

planos de teste,planos de teste,

qualquer produto gerado durante desenvolvimentos qualquer produto gerado durante desenvolvimentos

anteriores,anteriores,

conhecimento em geral.conhecimento em geral.

Page 14: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

BenefíciosBenefícios

Melhores índices de produtividade

Produtos de melhor qualidade, mais confiáveis,

consistentes e padronizados

Redução dos custos e tempo envolvidos no

desenvolvimento de software

Maior flexibilidade na estrutura do software produzido,

facilitando sua manutenção e evolução

Page 15: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

DificuldadesDificuldades

Identificação, recuperação e modificação de artefatos Identificação, recuperação e modificação de artefatos

reutilizáveisreutilizáveis

Compreensão dos artefatos recuperados Compreensão dos artefatos recuperados

Qualidade de artefatos reutilizáveisQualidade de artefatos reutilizáveis

Composição de aplicações a partir de componentesComposição de aplicações a partir de componentes

Barreiras psicológicas, legais e econômicasBarreiras psicológicas, legais e econômicas

Necessidade da criação de incentivos à reutilizaçãoNecessidade da criação de incentivos à reutilização

Page 16: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Gerência de ReutilizaçãoGerência de Reutilização

Planejamento de ReutilizaçãoPlanejamento de Reutilização

Criação de ArtefatosCriação de Artefatos

Gerência de ArtefatosGerência de Artefatos

Utilização de ArtefatosUtilização de Artefatos

Page 17: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Gerência de ReutilizaçãoGerência de Reutilização

Planejamento

Criação

Gerência

Utilização

Objetivos, Estratégias, Processos, Recursos

Artefatos

Artefatos,Descrições

Lições

Lições

Requisitos,Lições,

Processos,Artefatos

Requisitos

Page 18: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Planejamento de ReutilizaçãoPlanejamento de Reutilização

Objetivo: definir uma Objetivo: definir uma Estratégia de ReutilizaçãoEstratégia de Reutilização e um e um

Plano para ImplementaçãoPlano para Implementação dentro da empresa dentro da empresa

Atividades:Atividades:

Estabelecer a estratégia para criação, gerência e Estabelecer a estratégia para criação, gerência e

utilização de artefatos reutilizáveisutilização de artefatos reutilizáveis

Integração da reutilização ao processo de Integração da reutilização ao processo de

desenvolvimentodesenvolvimento

Controle e evolução do processoControle e evolução do processo

Page 19: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Criação de ArtefatosCriação de Artefatos

Objetivo: produzir software e produtos associados para Objetivo: produzir software e produtos associados para

a reutilização (a reutilização (Desenvolvimento para ReutilizaçãoDesenvolvimento para Reutilização))

Atividades:Atividades:

Análise e modelagem do DomínioAnálise e modelagem do Domínio

Desenvolvimento de uma Infra-estrutura de Desenvolvimento de uma Infra-estrutura de

ReutilizaçãoReutilização

Evolução do processoEvolução do processo

Page 20: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Utilização de ArtefatosUtilização de Artefatos

Objetivo: compor sistemas a partir de artefatos Objetivo: compor sistemas a partir de artefatos

reutilizáveis (reutilizáveis (Desenvolvimento com ReutilizaçãoDesenvolvimento com Reutilização))

Atividades:Atividades:

Identificação, compreensão, avaliação, seleção, Identificação, compreensão, avaliação, seleção,

adaptação e integração de artefatosadaptação e integração de artefatos

FeedbackFeedback ao Planejamento, Criação e Gerência de ao Planejamento, Criação e Gerência de

ArtefatosArtefatos

Page 21: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Modelo de Referência (MR MPS)

7 níveis de maturidade7 níveis de maturidade

A - Em OtimizaçãoA - Em OtimizaçãoB - Gerenciado quantitativamenteB - Gerenciado quantitativamenteC - DefinidoC - DefinidoD - Largamente definidoD - Largamente definidoE - Parcialmente definidoE - Parcialmente definidoF - GerenciadoF - GerenciadoG - Parcialmente GerenciadoG - Parcialmente Gerenciado

19 processos19 processos

Page 22: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Medição / Gerência de Configuração

Aquisição / Garantia da Qualidade

Definição do Processo Org. / Avaliação e Melhoria do Processo Org. / Gerência de Projetos (evolução) Gerência de Recursos Humanos

Desenvolvimento de Requisitos / Projeto e Construção do Produto / Integração do Produto/ Verificação / Validação

Análise de Decisão e Resolução Gerência de Riscos

G

F

E

D

C

Gerência de Requisitos

Gerência de Projetos

Gerência de Projetos (evolução)

Análise de Causas de Problemas e Resolução A

B

Níveis de Maturidade MPSNíveis de Maturidade MPS

Page 23: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Medição / Gerência de Configuração

Aquisição / Garantia da Qualidade

Desenvolvimento de Requisitos / Projeto e Construção do Produto / Integração do Produto/ Verificação / Validação

Análise de Decisão e Resolução Gerência de Riscos

G

F

E

D

C

Gerência de Requisitos

Gerência de Projetos

Gerência de Projetos (evolução)

Análise de Causas de Problemas e Resolução A

B

Níveis de Maturidade MPSNíveis de Maturidade MPS

Definição do Processo Org. / Avaliação e Melhoria do Processo Org. / Gerência de Projetos (evolução) Gerência de Recursos Humanos / Gerência de Reutilização

Page 24: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Níveis de Maturidade MPSNíveis de Maturidade MPS

Medição / Gerência de Configuração

Aquisição / Garantia da Qualidade

Desenvolvimento de Requisitos / Projeto e Construção do Produto / Integração do Produto/ Verificação / Validação

Análise de Decisão e Resolução Gerência de RiscosDesenvolvimento para Reutilização

G

F

E

D

C

Gerência de Requisitos

Gerência de Projetos

Gerência de Projetos (evolução)

Análise de Causas de Problemas e Resolução A

B

Definição do Processo Org. / Avaliação e Melhoria do Processo Org. / Gerência de Projetos (evolução) Gerência de Recursos Humanos / Gerência de Reutilização

Page 25: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

Considerações FinaisConsiderações Finais

A reutilização é um conceito natural no Processo de A reutilização é um conceito natural no Processo de

Desenvolvimento de Software, mas é preciso cuidar de Desenvolvimento de Software, mas é preciso cuidar de

determinados aspectos para que ela seja efetivadeterminados aspectos para que ela seja efetiva

Ao adotá-la estaremos nos aproximando cada vez mais Ao adotá-la estaremos nos aproximando cada vez mais

de uma real “Engenharia de Software”de uma real “Engenharia de Software”

Com o surgimento de normas sobre as boas práticas e Com o surgimento de normas sobre as boas práticas e

processos envolvidos, finalmente, temos a chance de processos envolvidos, finalmente, temos a chance de

torná-la uma realidade nas empresastorná-la uma realidade nas empresas

Page 26: Reutilização de Software Cláudia Maria Lima Werner werner@cos.ufrj.brCOPPE/UFRJ Programa de Engenharia de Sistemas e Computação

BibliografiaBibliografia

Engenharia de Software; R.Pressman, 6ª Edição, McGraw-Hill, Engenharia de Software; R.Pressman, 6ª Edição, McGraw-Hill,

20062006

Software Reusability; (ed.) W.Schäfer, R.Prieto-Diaz and Software Reusability; (ed.) W.Schäfer, R.Prieto-Diaz and

M.Matsumoto, Ellis Horwood, 1994M.Matsumoto, Ellis Horwood, 1994

STARS Framework for Reuse Processes; 4th Annual Workshop on STARS Framework for Reuse Processes; 4th Annual Workshop on

Software Reuse, Syracuse, NY, 1991Software Reuse, Syracuse, NY, 1991

Domain Analysis and Software System Modeling; (ed.) R.Prieto-Domain Analysis and Software System Modeling; (ed.) R.Prieto-

Diaz and G.Arango, IEEE Computer Society Press Tutorial, 1991Diaz and G.Arango, IEEE Computer Society Press Tutorial, 1991

http://reuse.cos.ufrj.brhttp://reuse.cos.ufrj.br

http://www.softex.br/mpsbrhttp://www.softex.br/mpsbr