Reuso de SoftwareProf. Agnaldo Volpe Lovato
IntroduçãoUso em outras disciplinasEngenharia MecânicaEletrônicaObjetivo: Reuso do Software ExistenteSomente nos últimos anos sua aplicação tornou-se mais ativaReposta às demandas:Menores custosManutenção de SoftwareEntregas mais rápidasAumento da qualidadeDireções opostas
IntroduçãoVisão EmpresarialOs itens de reuso passam a fazer parte de um ativo valiosoPromovem reuso para aumentar seu retorno sobre investimentos de software
BenefíciosConfiança aumentadaRisco de processo reduzidoUso eficiente de especialistasConformidade com padrõesDesenvolvimento acelerado
ProblemasCustos de manutenção aumentadosCódigo do componente indisponívelFalta de apoio de ferramentaMuitas ferramentas CASE não apóiam o reusoSíndrome do não-inventado-aquiPreferência em reescrever o componenteCriação e manutenção de uma biblioteca de componentesImaturidade na organização de uma biblioteca de componentesProcura, compreensão e adaptação de componentes reusáveis
PanoramaVárias técnicas foram desenvolvidas nos últimos 20 anosReuso possível em diferentes níveisFunções simples até aplicações completasPadrões facilitam o reusoDesign patternsDesenvolvimento de Software Orientado a AspectosLinhas de produtos de aplicaçãoFramewors de aplicaçãoGeradores de programaEmpacotamento de sistemas legadosIntegração de COTSDesenvolvimento baseado em componentesSistemas orientados a serviçosAplicações verticais configuráveisBibliotecas de Programas
PanoramaQual a técnicas mais apropriada?RequisitosTecnologiaAtivos reusáveisConhecimento da equipe
Considerações no planejamento do reusoCronograma de desenvolvimento do softwareQuanto mais curto for o prazo, a tendência em reusar sistemas prontos em vez de componentes individuais aumentaCiclo de vida previsto do softwareCiclo de vida longoSe concentrar na facilidade de manutençãoAlém das possibilidades de reuso, deve-se também pensar nas implicações a longo prazoAdaptação do sistema aos novos requisitos – mudanças nos componentesSe você não tem acesso ao código-fonte, evite o uso de componentes e sistemas de fornecedores externosConhecimento, habilidades e experiência da equipe de desenvolvimentoTecnologias de reuso são bastante complexasTreinamento
Considerações no planejamento do reusoImportância do software e seus requisitos não funcionaisSoftwares com requisitos de desempenhoUso de geradores de programas pode ser ineficazNão acesso ao código fonte pode trazer problemasDomínio da aplicaçãoAlguns domínios de aplicação trazem produtos genéricos que podem ser reutilizadosAlguns permitem a exportação e importação de dadosPlataforma sobre a qual o sistema será executadoBuscar componentes compatíveis
Considerações no planejamento do reusoA gama de técnicas é grande – há possibilidade de reuso de softwareEmpregar reuso é frequentemente uma decisão mais gerencial do que técnicaGerentesPodem não desejar comprometer seus requisitos com o reusoPodem decidir que o desenvolvimento de componentes ajudará a criar uma base de ativos de softwarePodem não compreender os riscos associados ao reuso da mesma forma que compreendem os riscos de desenvolvimento originalPreferem riscos conhecidos a desconhecidos
Desenvolvimento baseado em ComponentesCriados com o objetivo de conduzir ao reusoSurgiu da frustração de que o desenvolvimento orientado a objetos não tinha conduzido a um extensivo reusoClasses e objetos são muito detalhadas e específicasComponentes são mais abstratos que as classes de objetos e podem ser considerados provedores de serviçosOs componentes devem ser bem documentados para ajudar o projetista a compreendê-los e adaptá-los a uma nova aplicação
Desenvolvimento baseado em ComponentesPontos essenciais na engenharia baseada em componentes:Componentes independentesDeve haver uma clara separação entre a interface do componente e sua implementaçãoPadrões de componentesPermitem o uso em mais de uma linguagem de programaçãoMiddlewarePermitir que componentes independentes e distribuídos trabalhem juntosProcesso de desenvolvimento
Reuso Baseado em GeradoresConhecimento reusável é capturado em um sistema gerador de programasPode ser programado por especialistasA descrição da aplicação especifica, de maneira abstrata, quais componentes reusáveis serão empregadosAplicações de mesmo domínio têm arquiteturas comunsPodemos ter:Geradores de parser para processamento de linguagemGeradores de código em ferramentas CASEPodem gerar códigos ineficientesPodem trazer riscos, pois tem um custo inicial alto na definição e implementação de conceitos do domínio
Reuso Baseado em GeradoresGerador de ProgramaPrograma GeradoDescrição da AplicaçãoConhecimento de domínio da aplicaçãoBanco de Dados
Reuso Baseado em GeradoresSoftware Orientado a AspectosResolve o problema da separação de assuntos - princípio básico do projetoCada unidade ou componentes deve realizar uma, e somente uma funçãoExemplosComponente dedicado à busca de informaçõesComponente dedicado à impressão de documentosComponente dedicado à conexão com o banco de dadosContudo, estes componentes acabam de alguma forma se cruzandoOrientação a Aspectos busca realizar a integração separando e organizando o código de acordo com a sua importância para a aplicação
Frameworks de AplicaçõesÉ um projeto de subsistema composto por um conjunto de classes abstratas e concretas e as interfaces entre elas.3 classes de Frameworks:Frameworks de infra-estrutura de sistemasFrameworks de integração de middlewareFrameworks de aplicações empresariaisÉ uma estrutura genérica que pode ser ampliada para criar um subsistema ou aplicação mais específicaAmpliar o Framework pode envolver a adição de classes concretas que herdam operações de classes abstratas no FrameworkO maior problema está na sua complexidade e tempo para aprender a usá-lo
Reuso do Sistema de AplicaçõesEnvolve o reuso de sistemas de aplicações inteirasPode-se alcançar o objetivo:Pela configuração de um único sistemaPela integração de um ou mais sistemas para criar uma nova aplicaçãoÉ frequentemente a técnica mais eficiente de reusoEnvolve o reuso de grandes ativos que podem ser rapidamente configurados para criar um novo sistema
Reuso de Produto COTSUm produto comercial (COTS) é um sistema de software que pode ser usado sem alterações pelo compradorExemplo:Sistemas Gerenciadores de Banco de DadosEscolhas que precisam ser feitas quando usamos COTSQuais produtos COTS oferecem a funcionalidade mais apropriada?Como os dados serão trocados?Quais recursos de um produto serão realmente usados?
Reuso de Produto COTSClienteNavegador WebSistema de e-mailServidorSistema de e-commerceSistema de pedidos e faturasAdaptadorSistema de e-mailAdaptador
Reuso de Produto COTSProblemas de integração de sistemas COTS:Falta de controle sobre a funcionalidade e o desempenhoProblemas com a interoperabilidade de sistemas COTSNenhum controle sobre a evolução do sistemaSuporte dos fornecedores de COTS
Linhas de Produtos de SoftwareÉ um conjunto de aplicações com uma arquitetura comum específica de aplicaçãoCada aplicação específica é especializada de alguma maneiraO núcleo comum é reusado cada vez em que uma nova aplicação é necessáriaO novo desenvolvimento pode envolver a configuração de componentes específicos, a implementação de componentes adicionais e a adaptação de alguns componentes
Linhas de Produtos de SoftwareTipos de especialização em uma LPS:Especialização da plataformaSomente componentes que fazem interface com o hardware e o sistema operacional são modificadosEspecialização de ambienteExemplo: componentes do sistema são alterados para refletir a funcionalidade do equipamento de comunicação usadoEspecialização funcionalRequisitos diferentes. Adição ou modificação de componentesEspecialização de processoAdaptação do sistema para lidar com processo de negócios específicos
Linhas de Produtos de SoftwareLinhas de produtos de software podem ser configuradas em dois pontos no processo de desenvolvimento:Configuração em tempo de implantaçãoERP (Enterprise ResourcePlanning) ouSIGE (Sistemas Integrados de Gestão Empresarial)Configuração em tempo de projetoLevantar os requisitos dos stakeholdersEscolher um membro da família mais adequadoRenegociar requisitosAdaptar o sistema existenteEntregar novo membro de família
Considerações FinaisNão temos ferramentas apropriadasMuitas organizações ainda não estão preparadasNão entendem que o esforço inicial pode ser revertido em benefícios para as próprias empresasGrandes organizações como HP e Motorola já adotam o reusoEmpresas tem medo de perder seu staff momentaneamente para o reusoEstudos indicam que empresas que possuem iniciativas de reuso de ativos de software podem aumentar sua produtividade, qualidade e agilidade em, pelo menos, 5 vezes
Considerações FinaisO planejamento é fundamental para evitar re-trabalho na reutilização de ativos de softwarePode requerer uma reestruturação na área de TI da empresaRequer mudança de culturaÉ preciso de um plano de comunicação bem estruturadoMotivar as equipes de projeto a gerar componentes de uma maneira que eles possam ser facilmente encontrados e reutilizadosCapacitar as equipes envolvidas

Mais conteúdo relacionado

PDF
Aula 1 - Introdução a Engenharia de Software
PDF
Ferramenta de apoio a gerência de configuração de software
PDF
Aula 1 requisitos
PDF
Engenharia de requisitos
PPT
Arquitetura de Software
PDF
Teste de software
PPTX
Teste de Software - Introdução
PDF
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Aula 1 - Introdução a Engenharia de Software
Ferramenta de apoio a gerência de configuração de software
Aula 1 requisitos
Engenharia de requisitos
Arquitetura de Software
Teste de software
Teste de Software - Introdução
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha

Mais procurados (20)

PPT
Aula4 levantamento requisitos
PDF
Programação Orientada a objetos em Java
PDF
Definição e classificação dos requisitos
PPT
Introdução a Metodologia XP (E Xtreme Programming)
PPTX
Frameworks de desenvolvimento web
PPTX
1 requisitos funcionais e não funcionais ok
PDF
Aula 1 - Introdução a POO
PPTX
Extreme Programming (XP) e Scrum
PDF
Modelos de Engenharia de Software
PDF
Aula 1. apresentação + frameworks
PPTX
Extreme programming (xp) - Resumo
PPTX
Introdução sobre desenvolvimento web
PDF
Automação de testes - uma introdução sobre estratégias
PDF
Aula 5 -Avaliação de interfaces de usuário - testes com usuários
PPTX
Aula - Metodologias Ágeis
PPTX
SonarQube - Como avaliar seus fornecedores e garantir a qualidade de suas ent...
PPTX
Introdução a React Native
PDF
1.Introdução Banco de Dados
PPT
Engenharia Requisitos - Aula4 06 03 2006
PPTX
Aula 7 - Modelos de Ciclo de Vida.pptx
Aula4 levantamento requisitos
Programação Orientada a objetos em Java
Definição e classificação dos requisitos
Introdução a Metodologia XP (E Xtreme Programming)
Frameworks de desenvolvimento web
1 requisitos funcionais e não funcionais ok
Aula 1 - Introdução a POO
Extreme Programming (XP) e Scrum
Modelos de Engenharia de Software
Aula 1. apresentação + frameworks
Extreme programming (xp) - Resumo
Introdução sobre desenvolvimento web
Automação de testes - uma introdução sobre estratégias
Aula 5 -Avaliação de interfaces de usuário - testes com usuários
Aula - Metodologias Ágeis
SonarQube - Como avaliar seus fornecedores e garantir a qualidade de suas ent...
Introdução a React Native
1.Introdução Banco de Dados
Engenharia Requisitos - Aula4 06 03 2006
Aula 7 - Modelos de Ciclo de Vida.pptx
Anúncio

Destaque (20)

PDF
PPTX
Software Embutido
PDF
Os 5 Níveis de Reuso
PDF
Reuso de Software - Síntese do Modelo de Features
PDF
Frameworks da web - Uma ferramenta de reutilização de software
PDF
O (papel do) Arquiteto de Software
PDF
Feature-Driven Development - Visão Geral
PPTX
Reuso v16 0
PPT
Mitos do Desenvolvimento de Software
PPTX
Portabilidade de uma aplicação
PPTX
FDD (Feature Driven Development)
PPTX
Aula processo de reuso de software
PPTX
Business Process and Software Architecture Model Co-evolution Patterns
PDF
Maven Versioning Strategy (VR)
PPTX
Composition of cots
PDF
Apresentação dissertação
PDF
Feature driven development
PDF
Feature driven development
Software Embutido
Os 5 Níveis de Reuso
Reuso de Software - Síntese do Modelo de Features
Frameworks da web - Uma ferramenta de reutilização de software
O (papel do) Arquiteto de Software
Feature-Driven Development - Visão Geral
Reuso v16 0
Mitos do Desenvolvimento de Software
Portabilidade de uma aplicação
FDD (Feature Driven Development)
Aula processo de reuso de software
Business Process and Software Architecture Model Co-evolution Patterns
Maven Versioning Strategy (VR)
Composition of cots
Apresentação dissertação
Feature driven development
Feature driven development
Anúncio

Semelhante a Reuso de software (20)

PPT
Reutilização
PPTX
Engenharia de Software Reuso Engenharia de Software Reuso Engenharia de Softw...
PPT
Tees Final
ODP
Reuso desw
PDF
Aula_4_e_5_-_RUP_Rapid_Unified_Process_Software_Engineering
ODP
Extreme Programming
PDF
Introdução a engenharia de software aula 02
PPT
Análise e Design Orientado a Objetos.ppt
PPSX
Infoschema - Company Overview
PPT
Xp Comdex
PPT
Extreme programming
PPT
Rejuvenescimento Software
ODP
Arquitetura web para sistemas de negócio
PDF
Escalando apps com React e Type Script e SOLID
PPT
Producto X Processo X Projecto de Engenharia de Software
PPT
Metodologias Ageis
PPT
Webcast WebSphere Portal Performance
PPT
Engenharia de Software Baseada em Componentes
PPTX
Tendências e Dicas para o Desenvolvimento de Software
Reutilização
Engenharia de Software Reuso Engenharia de Software Reuso Engenharia de Softw...
Tees Final
Reuso desw
Aula_4_e_5_-_RUP_Rapid_Unified_Process_Software_Engineering
Extreme Programming
Introdução a engenharia de software aula 02
Análise e Design Orientado a Objetos.ppt
Infoschema - Company Overview
Xp Comdex
Extreme programming
Rejuvenescimento Software
Arquitetura web para sistemas de negócio
Escalando apps com React e Type Script e SOLID
Producto X Processo X Projecto de Engenharia de Software
Metodologias Ageis
Webcast WebSphere Portal Performance
Engenharia de Software Baseada em Componentes
Tendências e Dicas para o Desenvolvimento de Software

Reuso de software

  • 1. Reuso de SoftwareProf. Agnaldo Volpe Lovato
  • 2. IntroduçãoUso em outras disciplinasEngenharia MecânicaEletrônicaObjetivo: Reuso do Software ExistenteSomente nos últimos anos sua aplicação tornou-se mais ativaReposta às demandas:Menores custosManutenção de SoftwareEntregas mais rápidasAumento da qualidadeDireções opostas
  • 3. IntroduçãoVisão EmpresarialOs itens de reuso passam a fazer parte de um ativo valiosoPromovem reuso para aumentar seu retorno sobre investimentos de software
  • 4. BenefíciosConfiança aumentadaRisco de processo reduzidoUso eficiente de especialistasConformidade com padrõesDesenvolvimento acelerado
  • 5. ProblemasCustos de manutenção aumentadosCódigo do componente indisponívelFalta de apoio de ferramentaMuitas ferramentas CASE não apóiam o reusoSíndrome do não-inventado-aquiPreferência em reescrever o componenteCriação e manutenção de uma biblioteca de componentesImaturidade na organização de uma biblioteca de componentesProcura, compreensão e adaptação de componentes reusáveis
  • 6. PanoramaVárias técnicas foram desenvolvidas nos últimos 20 anosReuso possível em diferentes níveisFunções simples até aplicações completasPadrões facilitam o reusoDesign patternsDesenvolvimento de Software Orientado a AspectosLinhas de produtos de aplicaçãoFramewors de aplicaçãoGeradores de programaEmpacotamento de sistemas legadosIntegração de COTSDesenvolvimento baseado em componentesSistemas orientados a serviçosAplicações verticais configuráveisBibliotecas de Programas
  • 7. PanoramaQual a técnicas mais apropriada?RequisitosTecnologiaAtivos reusáveisConhecimento da equipe
  • 8. Considerações no planejamento do reusoCronograma de desenvolvimento do softwareQuanto mais curto for o prazo, a tendência em reusar sistemas prontos em vez de componentes individuais aumentaCiclo de vida previsto do softwareCiclo de vida longoSe concentrar na facilidade de manutençãoAlém das possibilidades de reuso, deve-se também pensar nas implicações a longo prazoAdaptação do sistema aos novos requisitos – mudanças nos componentesSe você não tem acesso ao código-fonte, evite o uso de componentes e sistemas de fornecedores externosConhecimento, habilidades e experiência da equipe de desenvolvimentoTecnologias de reuso são bastante complexasTreinamento
  • 9. Considerações no planejamento do reusoImportância do software e seus requisitos não funcionaisSoftwares com requisitos de desempenhoUso de geradores de programas pode ser ineficazNão acesso ao código fonte pode trazer problemasDomínio da aplicaçãoAlguns domínios de aplicação trazem produtos genéricos que podem ser reutilizadosAlguns permitem a exportação e importação de dadosPlataforma sobre a qual o sistema será executadoBuscar componentes compatíveis
  • 10. Considerações no planejamento do reusoA gama de técnicas é grande – há possibilidade de reuso de softwareEmpregar reuso é frequentemente uma decisão mais gerencial do que técnicaGerentesPodem não desejar comprometer seus requisitos com o reusoPodem decidir que o desenvolvimento de componentes ajudará a criar uma base de ativos de softwarePodem não compreender os riscos associados ao reuso da mesma forma que compreendem os riscos de desenvolvimento originalPreferem riscos conhecidos a desconhecidos
  • 11. Desenvolvimento baseado em ComponentesCriados com o objetivo de conduzir ao reusoSurgiu da frustração de que o desenvolvimento orientado a objetos não tinha conduzido a um extensivo reusoClasses e objetos são muito detalhadas e específicasComponentes são mais abstratos que as classes de objetos e podem ser considerados provedores de serviçosOs componentes devem ser bem documentados para ajudar o projetista a compreendê-los e adaptá-los a uma nova aplicação
  • 12. Desenvolvimento baseado em ComponentesPontos essenciais na engenharia baseada em componentes:Componentes independentesDeve haver uma clara separação entre a interface do componente e sua implementaçãoPadrões de componentesPermitem o uso em mais de uma linguagem de programaçãoMiddlewarePermitir que componentes independentes e distribuídos trabalhem juntosProcesso de desenvolvimento
  • 13. Reuso Baseado em GeradoresConhecimento reusável é capturado em um sistema gerador de programasPode ser programado por especialistasA descrição da aplicação especifica, de maneira abstrata, quais componentes reusáveis serão empregadosAplicações de mesmo domínio têm arquiteturas comunsPodemos ter:Geradores de parser para processamento de linguagemGeradores de código em ferramentas CASEPodem gerar códigos ineficientesPodem trazer riscos, pois tem um custo inicial alto na definição e implementação de conceitos do domínio
  • 14. Reuso Baseado em GeradoresGerador de ProgramaPrograma GeradoDescrição da AplicaçãoConhecimento de domínio da aplicaçãoBanco de Dados
  • 15. Reuso Baseado em GeradoresSoftware Orientado a AspectosResolve o problema da separação de assuntos - princípio básico do projetoCada unidade ou componentes deve realizar uma, e somente uma funçãoExemplosComponente dedicado à busca de informaçõesComponente dedicado à impressão de documentosComponente dedicado à conexão com o banco de dadosContudo, estes componentes acabam de alguma forma se cruzandoOrientação a Aspectos busca realizar a integração separando e organizando o código de acordo com a sua importância para a aplicação
  • 16. Frameworks de AplicaçõesÉ um projeto de subsistema composto por um conjunto de classes abstratas e concretas e as interfaces entre elas.3 classes de Frameworks:Frameworks de infra-estrutura de sistemasFrameworks de integração de middlewareFrameworks de aplicações empresariaisÉ uma estrutura genérica que pode ser ampliada para criar um subsistema ou aplicação mais específicaAmpliar o Framework pode envolver a adição de classes concretas que herdam operações de classes abstratas no FrameworkO maior problema está na sua complexidade e tempo para aprender a usá-lo
  • 17. Reuso do Sistema de AplicaçõesEnvolve o reuso de sistemas de aplicações inteirasPode-se alcançar o objetivo:Pela configuração de um único sistemaPela integração de um ou mais sistemas para criar uma nova aplicaçãoÉ frequentemente a técnica mais eficiente de reusoEnvolve o reuso de grandes ativos que podem ser rapidamente configurados para criar um novo sistema
  • 18. Reuso de Produto COTSUm produto comercial (COTS) é um sistema de software que pode ser usado sem alterações pelo compradorExemplo:Sistemas Gerenciadores de Banco de DadosEscolhas que precisam ser feitas quando usamos COTSQuais produtos COTS oferecem a funcionalidade mais apropriada?Como os dados serão trocados?Quais recursos de um produto serão realmente usados?
  • 19. Reuso de Produto COTSClienteNavegador WebSistema de e-mailServidorSistema de e-commerceSistema de pedidos e faturasAdaptadorSistema de e-mailAdaptador
  • 20. Reuso de Produto COTSProblemas de integração de sistemas COTS:Falta de controle sobre a funcionalidade e o desempenhoProblemas com a interoperabilidade de sistemas COTSNenhum controle sobre a evolução do sistemaSuporte dos fornecedores de COTS
  • 21. Linhas de Produtos de SoftwareÉ um conjunto de aplicações com uma arquitetura comum específica de aplicaçãoCada aplicação específica é especializada de alguma maneiraO núcleo comum é reusado cada vez em que uma nova aplicação é necessáriaO novo desenvolvimento pode envolver a configuração de componentes específicos, a implementação de componentes adicionais e a adaptação de alguns componentes
  • 22. Linhas de Produtos de SoftwareTipos de especialização em uma LPS:Especialização da plataformaSomente componentes que fazem interface com o hardware e o sistema operacional são modificadosEspecialização de ambienteExemplo: componentes do sistema são alterados para refletir a funcionalidade do equipamento de comunicação usadoEspecialização funcionalRequisitos diferentes. Adição ou modificação de componentesEspecialização de processoAdaptação do sistema para lidar com processo de negócios específicos
  • 23. Linhas de Produtos de SoftwareLinhas de produtos de software podem ser configuradas em dois pontos no processo de desenvolvimento:Configuração em tempo de implantaçãoERP (Enterprise ResourcePlanning) ouSIGE (Sistemas Integrados de Gestão Empresarial)Configuração em tempo de projetoLevantar os requisitos dos stakeholdersEscolher um membro da família mais adequadoRenegociar requisitosAdaptar o sistema existenteEntregar novo membro de família
  • 24. Considerações FinaisNão temos ferramentas apropriadasMuitas organizações ainda não estão preparadasNão entendem que o esforço inicial pode ser revertido em benefícios para as próprias empresasGrandes organizações como HP e Motorola já adotam o reusoEmpresas tem medo de perder seu staff momentaneamente para o reusoEstudos indicam que empresas que possuem iniciativas de reuso de ativos de software podem aumentar sua produtividade, qualidade e agilidade em, pelo menos, 5 vezes
  • 25. Considerações FinaisO planejamento é fundamental para evitar re-trabalho na reutilização de ativos de softwarePode requerer uma reestruturação na área de TI da empresaRequer mudança de culturaÉ preciso de um plano de comunicação bem estruturadoMotivar as equipes de projeto a gerar componentes de uma maneira que eles possam ser facilmente encontrados e reutilizadosCapacitar as equipes envolvidas