SlideShare une entreprise Scribd logo
1  sur  25
Reuso de Software Prof. Agnaldo Volpe Lovato
Introdução Uso em outras disciplinas Engenharia Mecânica Eletrônica Objetivo: Reuso do Software Existente Somente nos últimos anos sua aplicação tornou-se mais ativa Reposta às demandas: Menores custos Manutenção de Software Entregas mais rápidas Aumento da qualidade Direções opostas
Introdução Visão Empresarial Os itens de reuso passam a fazer parte de um ativo valioso Promovem reuso para aumentar seu retorno sobre investimentos de software
Benefícios Confiança aumentada Risco de processo reduzido Uso eficiente de especialistas Conformidade com padrões Desenvolvimento acelerado
Problemas Custos de manutenção aumentados Código do componente indisponível Falta de apoio de ferramenta Muitas ferramentas CASE não apóiam o reuso Síndrome do não-inventado-aqui Preferência em reescrever o componente Criação e manutenção de uma biblioteca de componentes Imaturidade na organização de uma biblioteca de componentes Procura, compreensão e adaptação de componentes reusáveis
Panorama Várias técnicas foram desenvolvidas nos últimos 20 anos Reuso possível em diferentes níveis Funções simples até aplicações completas Padrões facilitam o reuso Design patterns Desenvolvimento de Software Orientado a Aspectos Linhas de produtos de aplicação Framewors de aplicação Geradores de programa Empacotamento de sistemas legados Integração de COTS Desenvolvimento baseado em componentes Sistemas orientados a serviços Aplicações verticais configuráveis Bibliotecas de Programas
Panorama Qual a técnicas mais apropriada? Requisitos Tecnologia Ativos reusáveis Conhecimento da equipe
Considerações no planejamento do reuso Cronograma de desenvolvimento do software Quanto mais curto for o prazo, a tendência em reusar sistemas prontos em vez de componentes individuais aumenta Ciclo de vida previsto do software Ciclo de vida longo Se concentrar na facilidade de manutenção Além das possibilidades de reuso, deve-se também pensar nas implicações a longo prazo Adaptação do sistema aos novos requisitos – mudanças nos componentes Se você não tem acesso ao código-fonte, evite o uso de componentes e sistemas de fornecedores externos Conhecimento, habilidades e experiência da equipe de desenvolvimento Tecnologias de reuso são bastante complexas Treinamento
Considerações no planejamento do reuso Importância do software e seus requisitos não funcionais Softwares com requisitos de desempenho Uso de geradores de programas pode ser ineficaz Não acesso ao código fonte pode trazer problemas Domínio da aplicação Alguns domínios de aplicação trazem produtos genéricos que podem ser reutilizados Alguns permitem a exportação e importação de dados Plataforma sobre a qual o sistema será executado Buscar componentes compatíveis
Considerações no planejamento do reuso A gama de técnicas é grande – há possibilidade de reuso de software Empregar reuso é frequentemente uma decisão mais gerencial do que técnica Gerentes Podem não desejar comprometer seus requisitos com o reuso Podem decidir que o desenvolvimento de componentes ajudará a criar uma base de ativos de software Podem não compreender os riscos associados ao reuso da mesma forma que compreendem os riscos de desenvolvimento original Preferem riscos conhecidos a desconhecidos
Desenvolvimento baseado em Componentes Criados com o objetivo de conduzir ao reuso Surgiu da frustração de que o desenvolvimento orientado a objetos não tinha conduzido a um extensivo reuso Classes e objetos são muito detalhadas e específicas Componentes são mais abstratos que as classes de objetos e podem ser considerados provedores de serviços Os componentes devem ser bem documentados para ajudar o projetista a compreendê-los e adaptá-los a uma nova aplicação
Desenvolvimento baseado em Componentes Pontos essenciais na engenharia baseada em componentes: Componentes independentes Deve haver uma clara separação entre a interface do componente e sua implementação Padrões de componentes Permitem o uso em mais de uma linguagem de programação Middleware Permitir que componentes independentes e distribuídos trabalhem juntos Processo de desenvolvimento
Reuso Baseado em Geradores Conhecimento reusável é capturado em um sistema gerador de programas Pode ser programado por especialistas A descrição da aplicação especifica, de maneira abstrata, quais componentes reusáveis serão empregados Aplicações de mesmo domínio têm arquiteturas comuns Podemos ter: Geradores de parser para processamento de linguagem Geradores de código em ferramentas CASE Podem gerar códigos ineficientes Podem trazer riscos, pois tem um custo inicial alto na definição e implementação de conceitos do domínio
Reuso Baseado em Geradores Gerador de Programa Programa Gerado Descrição da Aplicação Conhecimento de domínio da aplicação Banco de Dados
Reuso Baseado em Geradores Software Orientado a Aspectos Resolve o problema da separação de assuntos - princípio básico do projeto Cada unidade ou componentes deve realizar uma, e somente uma função Exemplos Componente dedicado à busca de informações Componente dedicado à impressão de documentos Componente dedicado à conexão com o banco de dados Contudo, estes componentes acabam de alguma forma se cruzando Orientaçã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 sistemas Frameworks de integração de middleware Frameworks de aplicações empresariais É uma estrutura genérica que pode ser ampliada para criar um subsistema ou aplicação mais específica Ampliar o Framework pode envolver a adição de classes concretas que herdam operações de classes abstratas no Framework O maior problema está na sua complexidade e tempo para aprender a usá-lo
Reuso do Sistema de Aplicações Envolve o reuso de sistemas de aplicações inteiras Pode-se alcançar o objetivo: Pela configuração de um único sistema Pela integração de um ou mais sistemas para criar uma nova aplicação É frequentemente a técnica mais eficiente de reuso Envolve o reuso de grandes ativos que podem ser rapidamente configurados para criar um novo sistema
Reuso de Produto COTS Um produto comercial (COTS) é um sistema de software que pode ser usado sem alterações pelo comprador Exemplo: Sistemas Gerenciadores de Banco de Dados Escolhas que precisam ser feitas quando usamos COTS Quais 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 COTS Cliente Navegador Web Sistema de e-mail Servidor Sistema de e-commerce Sistema de pedidos e faturas Adaptador Sistema de e-mail Adaptador
Reuso de Produto COTS Problemas de integração de sistemas COTS: Falta de controle sobre a funcionalidade e o desempenho Problemas com a interoperabilidade de sistemas COTS Nenhum controle sobre a evolução do sistema Suporte dos fornecedores de COTS
Linhas de Produtos de Software É um conjunto de aplicações com uma arquitetura comum específica de aplicação Cada aplicação específica é especializada de alguma maneira O núcleo comum é reusado cada vez em que uma nova aplicação é necessária O 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 Software Tipos de especialização em uma LPS: Especialização da plataforma Somente componentes que fazem interface com o hardware e o sistema operacional são modificados Especialização de ambiente Exemplo: componentes do sistema são alterados para refletir a funcionalidade do equipamento de comunicação usado Especialização funcional Requisitos diferentes. Adição ou modificação de componentes Especialização de processo Adaptação do sistema para lidar com processo de negócios específicos
Linhas de Produtos de Software Linhas de produtos de software podem ser configuradas em dois pontos no processo de desenvolvimento: Configuração em tempo de implantação ERP (Enterprise ResourcePlanning) ou SIGE (Sistemas Integrados de Gestão Empresarial) Configuração em tempo de projeto Levantar os requisitos dos stakeholders Escolher um membro da família mais adequado Renegociar requisitos Adaptar o sistema existente Entregar novo membro de família
Considerações Finais Não temos ferramentas apropriadas Muitas organizações ainda não estão preparadas Não entendem que o esforço inicial pode ser revertido em benefícios para as próprias empresas Grandes organizações como HP e Motorola já adotam o reuso Empresas tem medo de perder seu staff momentaneamente para o reuso Estudos 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 Finais O planejamento é fundamental para evitar re-trabalho na reutilização de ativos de software Pode requerer uma reestruturação na área de TI da empresa Requer mudança de cultura É preciso de um plano de comunicação bem estruturado Motivar as equipes de projeto a gerar componentes de uma maneira que eles possam ser facilmente encontrados e reutilizados Capacitar as equipes envolvidas

Contenu connexe

Tendances

Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Elaine Cecília Gatto
 
Papéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwareCamilo Ribeiro
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixCris Fidelix
 
Ciclo de Vida Clássico da Engenharia de Software
Ciclo de Vida Clássico da Engenharia de SoftwareCiclo de Vida Clássico da Engenharia de Software
Ciclo de Vida Clássico da Engenharia de SoftwareEduardo Santos
 
Reengenharia de Software
Reengenharia de SoftwareReengenharia de Software
Reengenharia de SoftwareRafael Berto
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwarePeter Jandl Junior
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geralsergiocrespo
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareÁlvaro Farias Pinheiro
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de SoftwareLeinylson Fontinele
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
Padrões de Projeto - Design Patterns e Anti-Patterns
Padrões de Projeto - Design Patterns e Anti-PatternsPadrões de Projeto - Design Patterns e Anti-Patterns
Padrões de Projeto - Design Patterns e Anti-PatternsRodrigo Kono
 
Aula 5 -Avaliação de interfaces de usuário - testes com usuários
Aula 5 -Avaliação de interfaces de usuário - testes com usuáriosAula 5 -Avaliação de interfaces de usuário - testes com usuários
Aula 5 -Avaliação de interfaces de usuário - testes com usuáriosAndré Constantino da Silva
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaFernando Palma
 
Modelos de Processo de Software Parte 3
Modelos de Processo de Software Parte 3Modelos de Processo de Software Parte 3
Modelos de Processo de Software Parte 3Elaine Cecília Gatto
 

Tendances (20)

Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1
 
Qualidade de Software
Qualidade de SoftwareQualidade de Software
Qualidade de Software
 
Papéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de Software
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
 
Ciclo de Vida Clássico da Engenharia de Software
Ciclo de Vida Clássico da Engenharia de SoftwareCiclo de Vida Clássico da Engenharia de Software
Ciclo de Vida Clássico da Engenharia de Software
 
Reengenharia de Software
Reengenharia de SoftwareReengenharia de Software
Reengenharia de Software
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de Software
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geral
 
Extreme programming (xp)
 Extreme programming   (xp) Extreme programming   (xp)
Extreme programming (xp)
 
Feature Driven Development - FDD
Feature Driven Development - FDDFeature Driven Development - FDD
Feature Driven Development - FDD
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de Software
 
Teste de Software - Introdução
Teste de Software - IntroduçãoTeste de Software - Introdução
Teste de Software - Introdução
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Padrões de Projeto - Design Patterns e Anti-Patterns
Padrões de Projeto - Design Patterns e Anti-PatternsPadrões de Projeto - Design Patterns e Anti-Patterns
Padrões de Projeto - Design Patterns e Anti-Patterns
 
Aula 5 -Avaliação de interfaces de usuário - testes com usuários
Aula 5 -Avaliação de interfaces de usuário - testes com usuáriosAula 5 -Avaliação de interfaces de usuário - testes com usuários
Aula 5 -Avaliação de interfaces de usuário - testes com usuários
 
Modelo cascata
Modelo cascataModelo cascata
Modelo cascata
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
 
Modelos de Processo de Software Parte 3
Modelos de Processo de Software Parte 3Modelos de Processo de Software Parte 3
Modelos de Processo de Software Parte 3
 
Qualidade de Software: MPS.BR
Qualidade de Software: MPS.BRQualidade de Software: MPS.BR
Qualidade de Software: MPS.BR
 

En vedette

Os 5 Níveis de Reuso
Os 5 Níveis de ReusoOs 5 Níveis de Reuso
Os 5 Níveis de ReusoDr. Spock
 
Reuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de FeaturesReuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de FeaturesThiago Pereira
 
Frameworks da web - Uma ferramenta de reutilização de software
Frameworks da web - Uma ferramenta de reutilização de softwareFrameworks da web - Uma ferramenta de reutilização de software
Frameworks da web - Uma ferramenta de reutilização de softwareThomas Kanzig
 
Feature-Driven Development - Visão Geral
Feature-Driven Development - Visão GeralFeature-Driven Development - Visão Geral
Feature-Driven Development - Visão GeralRuan Carvalho
 
Mitos do Desenvolvimento de Software
Mitos do Desenvolvimento de SoftwareMitos do Desenvolvimento de Software
Mitos do Desenvolvimento de Softwareguest2f8cba
 
Portabilidade de uma aplicação
Portabilidade de uma aplicaçãoPortabilidade de uma aplicação
Portabilidade de uma aplicaçãoTiago Pinhão
 
FDD (Feature Driven Development)
FDD (Feature Driven Development)FDD (Feature Driven Development)
FDD (Feature Driven Development)urumisama
 
Aula processo de reuso de software
Aula processo de reuso de softwareAula processo de reuso de software
Aula processo de reuso de softwareTatiana Tavares
 
Business Process and Software Architecture Model Co-evolution Patterns
Business Process and Software Architecture Model Co-evolution PatternsBusiness Process and Software Architecture Model Co-evolution Patterns
Business Process and Software Architecture Model Co-evolution PatternsPooyan Jamshidi
 
Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)Marcus Carvalho
 
Composition of cots
Composition of cotsComposition of cots
Composition of cotsSaransh Garg
 
Apresentação dissertação
Apresentação dissertaçãoApresentação dissertação
Apresentação dissertaçãoDorgival Netto
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven developmentKhanh Nguyen
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven developmentHendrik Ebbers
 
Engenharia de software 7° edição roger s.pressman capítulo 1
Engenharia de software 7° edição roger s.pressman capítulo 1Engenharia de software 7° edição roger s.pressman capítulo 1
Engenharia de software 7° edição roger s.pressman capítulo 1Lindomar ...
 

En vedette (20)

Reúso
ReúsoReúso
Reúso
 
Software Embutido
Software EmbutidoSoftware Embutido
Software Embutido
 
Os 5 Níveis de Reuso
Os 5 Níveis de ReusoOs 5 Níveis de Reuso
Os 5 Níveis de Reuso
 
Reuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de FeaturesReuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de Features
 
Frameworks da web - Uma ferramenta de reutilização de software
Frameworks da web - Uma ferramenta de reutilização de softwareFrameworks da web - Uma ferramenta de reutilização de software
Frameworks da web - Uma ferramenta de reutilização de software
 
Feature-Driven Development - Visão Geral
Feature-Driven Development - Visão GeralFeature-Driven Development - Visão Geral
Feature-Driven Development - Visão Geral
 
Reuso v16 0
Reuso v16 0Reuso v16 0
Reuso v16 0
 
Mitos do Desenvolvimento de Software
Mitos do Desenvolvimento de SoftwareMitos do Desenvolvimento de Software
Mitos do Desenvolvimento de Software
 
Portabilidade de uma aplicação
Portabilidade de uma aplicaçãoPortabilidade de uma aplicação
Portabilidade de uma aplicação
 
FDD (Feature Driven Development)
FDD (Feature Driven Development)FDD (Feature Driven Development)
FDD (Feature Driven Development)
 
Aula processo de reuso de software
Aula processo de reuso de softwareAula processo de reuso de software
Aula processo de reuso de software
 
Business Process and Software Architecture Model Co-evolution Patterns
Business Process and Software Architecture Model Co-evolution PatternsBusiness Process and Software Architecture Model Co-evolution Patterns
Business Process and Software Architecture Model Co-evolution Patterns
 
Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)
 
Composition of cots
Composition of cotsComposition of cots
Composition of cots
 
Engenharia de softwares reusabilidade
Engenharia de softwares reusabilidadeEngenharia de softwares reusabilidade
Engenharia de softwares reusabilidade
 
Apresentação dissertação
Apresentação dissertaçãoApresentação dissertação
Apresentação dissertação
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven development
 
FDD
FDDFDD
FDD
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven development
 
Engenharia de software 7° edição roger s.pressman capítulo 1
Engenharia de software 7° edição roger s.pressman capítulo 1Engenharia de software 7° edição roger s.pressman capítulo 1
Engenharia de software 7° edição roger s.pressman capítulo 1
 

Similaire à Reuso de Software: Técnicas e Benefícios

Reutilização
ReutilizaçãoReutilização
Reutilizaçãoemjorge
 
Aula_4_e_5_-_RUP_Rapid_Unified_Process_Software_Engineering
Aula_4_e_5_-_RUP_Rapid_Unified_Process_Software_EngineeringAula_4_e_5_-_RUP_Rapid_Unified_Process_Software_Engineering
Aula_4_e_5_-_RUP_Rapid_Unified_Process_Software_Engineeringbaitolakaike
 
Introdução a engenharia de software aula 02
Introdução a engenharia de software   aula 02Introdução a engenharia de software   aula 02
Introdução a engenharia de software aula 02Franklin Matos Correia
 
Análise e Design Orientado a Objetos.ppt
Análise e Design Orientado a Objetos.pptAnálise e Design Orientado a Objetos.ppt
Análise e Design Orientado a Objetos.pptTzveDyor
 
Infoschema - Company Overview
Infoschema - Company OverviewInfoschema - Company Overview
Infoschema - Company OverviewRenilton Oliveira
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingJ. C.
 
Xp Comdex
Xp ComdexXp Comdex
Xp ComdexJ. C.
 
Rejuvenescimento Software
Rejuvenescimento SoftwareRejuvenescimento Software
Rejuvenescimento SoftwareMarcus Oliveira
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 
Producto X Processo X Projecto de Engenharia de Software
Producto X Processo X Projecto de Engenharia de SoftwareProducto X Processo X Projecto de Engenharia de Software
Producto X Processo X Projecto de Engenharia de SoftwareRogerio P C do Nascimento
 
Webcast WebSphere Portal Performance
Webcast WebSphere Portal PerformanceWebcast WebSphere Portal Performance
Webcast WebSphere Portal PerformanceAlex Barbosa Coqueiro
 
Engenharia de Software Baseada em Componentes
Engenharia de Software Baseada em ComponentesEngenharia de Software Baseada em Componentes
Engenharia de Software Baseada em Componenteselliando dias
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 

Similaire à Reuso de Software: Técnicas e Benefícios (20)

RAD
RADRAD
RAD
 
Reutilização
ReutilizaçãoReutilização
Reutilização
 
Tees Final
Tees FinalTees Final
Tees Final
 
Reuso desw
Reuso deswReuso desw
Reuso desw
 
Aula_4_e_5_-_RUP_Rapid_Unified_Process_Software_Engineering
Aula_4_e_5_-_RUP_Rapid_Unified_Process_Software_EngineeringAula_4_e_5_-_RUP_Rapid_Unified_Process_Software_Engineering
Aula_4_e_5_-_RUP_Rapid_Unified_Process_Software_Engineering
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Introdução a engenharia de software aula 02
Introdução a engenharia de software   aula 02Introdução a engenharia de software   aula 02
Introdução a engenharia de software aula 02
 
Análise e Design Orientado a Objetos.ppt
Análise e Design Orientado a Objetos.pptAnálise e Design Orientado a Objetos.ppt
Análise e Design Orientado a Objetos.ppt
 
Infoschema - Company Overview
Infoschema - Company OverviewInfoschema - Company Overview
Infoschema - Company Overview
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Xp Comdex
Xp ComdexXp Comdex
Xp Comdex
 
Rejuvenescimento Software
Rejuvenescimento SoftwareRejuvenescimento Software
Rejuvenescimento Software
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Producto X Processo X Projecto de Engenharia de Software
Producto X Processo X Projecto de Engenharia de SoftwareProducto X Processo X Projecto de Engenharia de Software
Producto X Processo X Projecto de Engenharia de Software
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
 
Webcast WebSphere Portal Performance
Webcast WebSphere Portal PerformanceWebcast WebSphere Portal Performance
Webcast WebSphere Portal Performance
 
Engenharia de Software Baseada em Componentes
Engenharia de Software Baseada em ComponentesEngenharia de Software Baseada em Componentes
Engenharia de Software Baseada em Componentes
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 

Reuso de Software: Técnicas e Benefícios

  • 1. Reuso de Software Prof. Agnaldo Volpe Lovato
  • 2. Introdução Uso em outras disciplinas Engenharia Mecânica Eletrônica Objetivo: Reuso do Software Existente Somente nos últimos anos sua aplicação tornou-se mais ativa Reposta às demandas: Menores custos Manutenção de Software Entregas mais rápidas Aumento da qualidade Direções opostas
  • 3. Introdução Visão Empresarial Os itens de reuso passam a fazer parte de um ativo valioso Promovem reuso para aumentar seu retorno sobre investimentos de software
  • 4. Benefícios Confiança aumentada Risco de processo reduzido Uso eficiente de especialistas Conformidade com padrões Desenvolvimento acelerado
  • 5. Problemas Custos de manutenção aumentados Código do componente indisponível Falta de apoio de ferramenta Muitas ferramentas CASE não apóiam o reuso Síndrome do não-inventado-aqui Preferência em reescrever o componente Criação e manutenção de uma biblioteca de componentes Imaturidade na organização de uma biblioteca de componentes Procura, compreensão e adaptação de componentes reusáveis
  • 6. Panorama Várias técnicas foram desenvolvidas nos últimos 20 anos Reuso possível em diferentes níveis Funções simples até aplicações completas Padrões facilitam o reuso Design patterns Desenvolvimento de Software Orientado a Aspectos Linhas de produtos de aplicação Framewors de aplicação Geradores de programa Empacotamento de sistemas legados Integração de COTS Desenvolvimento baseado em componentes Sistemas orientados a serviços Aplicações verticais configuráveis Bibliotecas de Programas
  • 7. Panorama Qual a técnicas mais apropriada? Requisitos Tecnologia Ativos reusáveis Conhecimento da equipe
  • 8. Considerações no planejamento do reuso Cronograma de desenvolvimento do software Quanto mais curto for o prazo, a tendência em reusar sistemas prontos em vez de componentes individuais aumenta Ciclo de vida previsto do software Ciclo de vida longo Se concentrar na facilidade de manutenção Além das possibilidades de reuso, deve-se também pensar nas implicações a longo prazo Adaptação do sistema aos novos requisitos – mudanças nos componentes Se você não tem acesso ao código-fonte, evite o uso de componentes e sistemas de fornecedores externos Conhecimento, habilidades e experiência da equipe de desenvolvimento Tecnologias de reuso são bastante complexas Treinamento
  • 9. Considerações no planejamento do reuso Importância do software e seus requisitos não funcionais Softwares com requisitos de desempenho Uso de geradores de programas pode ser ineficaz Não acesso ao código fonte pode trazer problemas Domínio da aplicação Alguns domínios de aplicação trazem produtos genéricos que podem ser reutilizados Alguns permitem a exportação e importação de dados Plataforma sobre a qual o sistema será executado Buscar componentes compatíveis
  • 10. Considerações no planejamento do reuso A gama de técnicas é grande – há possibilidade de reuso de software Empregar reuso é frequentemente uma decisão mais gerencial do que técnica Gerentes Podem não desejar comprometer seus requisitos com o reuso Podem decidir que o desenvolvimento de componentes ajudará a criar uma base de ativos de software Podem não compreender os riscos associados ao reuso da mesma forma que compreendem os riscos de desenvolvimento original Preferem riscos conhecidos a desconhecidos
  • 11. Desenvolvimento baseado em Componentes Criados com o objetivo de conduzir ao reuso Surgiu da frustração de que o desenvolvimento orientado a objetos não tinha conduzido a um extensivo reuso Classes e objetos são muito detalhadas e específicas Componentes são mais abstratos que as classes de objetos e podem ser considerados provedores de serviços Os componentes devem ser bem documentados para ajudar o projetista a compreendê-los e adaptá-los a uma nova aplicação
  • 12. Desenvolvimento baseado em Componentes Pontos essenciais na engenharia baseada em componentes: Componentes independentes Deve haver uma clara separação entre a interface do componente e sua implementação Padrões de componentes Permitem o uso em mais de uma linguagem de programação Middleware Permitir que componentes independentes e distribuídos trabalhem juntos Processo de desenvolvimento
  • 13. Reuso Baseado em Geradores Conhecimento reusável é capturado em um sistema gerador de programas Pode ser programado por especialistas A descrição da aplicação especifica, de maneira abstrata, quais componentes reusáveis serão empregados Aplicações de mesmo domínio têm arquiteturas comuns Podemos ter: Geradores de parser para processamento de linguagem Geradores de código em ferramentas CASE Podem gerar códigos ineficientes Podem trazer riscos, pois tem um custo inicial alto na definição e implementação de conceitos do domínio
  • 14. Reuso Baseado em Geradores Gerador de Programa Programa Gerado Descrição da Aplicação Conhecimento de domínio da aplicação Banco de Dados
  • 15. Reuso Baseado em Geradores Software Orientado a Aspectos Resolve o problema da separação de assuntos - princípio básico do projeto Cada unidade ou componentes deve realizar uma, e somente uma função Exemplos Componente dedicado à busca de informações Componente dedicado à impressão de documentos Componente dedicado à conexão com o banco de dados Contudo, estes componentes acabam de alguma forma se cruzando Orientaçã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 sistemas Frameworks de integração de middleware Frameworks de aplicações empresariais É uma estrutura genérica que pode ser ampliada para criar um subsistema ou aplicação mais específica Ampliar o Framework pode envolver a adição de classes concretas que herdam operações de classes abstratas no Framework O maior problema está na sua complexidade e tempo para aprender a usá-lo
  • 17. Reuso do Sistema de Aplicações Envolve o reuso de sistemas de aplicações inteiras Pode-se alcançar o objetivo: Pela configuração de um único sistema Pela integração de um ou mais sistemas para criar uma nova aplicação É frequentemente a técnica mais eficiente de reuso Envolve o reuso de grandes ativos que podem ser rapidamente configurados para criar um novo sistema
  • 18. Reuso de Produto COTS Um produto comercial (COTS) é um sistema de software que pode ser usado sem alterações pelo comprador Exemplo: Sistemas Gerenciadores de Banco de Dados Escolhas que precisam ser feitas quando usamos COTS Quais 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 COTS Cliente Navegador Web Sistema de e-mail Servidor Sistema de e-commerce Sistema de pedidos e faturas Adaptador Sistema de e-mail Adaptador
  • 20. Reuso de Produto COTS Problemas de integração de sistemas COTS: Falta de controle sobre a funcionalidade e o desempenho Problemas com a interoperabilidade de sistemas COTS Nenhum controle sobre a evolução do sistema Suporte dos fornecedores de COTS
  • 21. Linhas de Produtos de Software É um conjunto de aplicações com uma arquitetura comum específica de aplicação Cada aplicação específica é especializada de alguma maneira O núcleo comum é reusado cada vez em que uma nova aplicação é necessária O 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 Software Tipos de especialização em uma LPS: Especialização da plataforma Somente componentes que fazem interface com o hardware e o sistema operacional são modificados Especialização de ambiente Exemplo: componentes do sistema são alterados para refletir a funcionalidade do equipamento de comunicação usado Especialização funcional Requisitos diferentes. Adição ou modificação de componentes Especialização de processo Adaptação do sistema para lidar com processo de negócios específicos
  • 23. Linhas de Produtos de Software Linhas de produtos de software podem ser configuradas em dois pontos no processo de desenvolvimento: Configuração em tempo de implantação ERP (Enterprise ResourcePlanning) ou SIGE (Sistemas Integrados de Gestão Empresarial) Configuração em tempo de projeto Levantar os requisitos dos stakeholders Escolher um membro da família mais adequado Renegociar requisitos Adaptar o sistema existente Entregar novo membro de família
  • 24. Considerações Finais Não temos ferramentas apropriadas Muitas organizações ainda não estão preparadas Não entendem que o esforço inicial pode ser revertido em benefícios para as próprias empresas Grandes organizações como HP e Motorola já adotam o reuso Empresas tem medo de perder seu staff momentaneamente para o reuso Estudos 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 Finais O planejamento é fundamental para evitar re-trabalho na reutilização de ativos de software Pode requerer uma reestruturação na área de TI da empresa Requer mudança de cultura É preciso de um plano de comunicação bem estruturado Motivar as equipes de projeto a gerar componentes de uma maneira que eles possam ser facilmente encontrados e reutilizados Capacitar as equipes envolvidas