• Save
Reuso desw
Upcoming SlideShare
Loading in...5
×
 

Reuso desw

on

  • 718 views

Basic Concepts on Software Reuse OOP polymorphism etc.

Basic Concepts on Software Reuse OOP polymorphism etc.

Statistics

Views

Total Views
718
Views on SlideShare
718
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
1

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Reuso desw Reuso desw Presentation Transcript

  • Reuso de Software Cleverson de Freitas Cristian Leandro Stroparo Juliano Lorenzet Curitiba, 10 de Junho de 2009 CI221 – Engenharia de Software Profª Silvia Regina Vergilio
  • O que é reuso de software? É o processo de incorporar em um novo produto :
    • Código;
    • Especificações de requisitos e projeto;
    • Planos de teste;
    • Informações/dados gerados em desenvolvimentos anteriores;
    • Conhecimento em geral;
    “ Reuso pode ser entendido como uso de conceitos ou produtos previamente adquiridos ou construídos em uma nova situação ” (Biggerstaff and Perlis, 1989)‏
  • O que é reuso de software?
    • Nasceu da observação de que os softwares frequentemente seguem padrões similares;
    • Não é aplicavel somente a fragmentos do código, também é uma forma eficaz de aproveitar os conhecimentos sobre o desenvolvimento de sistemas;
    • Envolve a representação dos produtos em vários níveis de abstração, armazenamento, identificação de similaridades entre situações novas e antigas, recuperação de produtos já desenvolvidos e sua adaptação na nova situação;
  • Reusabilidade
    • Medida da facilidade em se utilizar os conceitos e produtos em novas situações;
    • É o grau de facilidade ou de potencialidade que um componente possui para ser Reusado;
    • Está relacionado à alta coesão e baixo acoplamento com outros módulos.
  • Características básicas do reuso
    • O reuso de software tem três características chaves :
      • Prática sistemática de desenvolvimento de software;
      • Explora similaridade em requisitos e/ou arquiteturas entre aplicações;
      • Oferece benefícios substanciais na produtividade, qualidade e performance comercial.
  • Benefícios (Objetivos)‏
    • Aumento da produtividade: reutilizando-se artefatos o esforço no desenvolvimento diminui gerando um produto final de igual ou superior qualidade do que um gerado sem reutilização;
    • Aumento da qualidade e confiabilidade: como os artefatos foram previamente testados, a probabilidade de sua corretude é ainda maior. Se a parte tem qualidade, o todo também terá.
    • Redução dos custos e tempo de desenvolvimento: o custo de construção de artefatos reutilizáveis é diluído entre os vários projetos onde será reutilizado.
  • Benefícios (Objetivos)‏
    • Redução no tempo de entrega: se o esforço no desenvolvimento diminui, consequentemente o tempo de entrega também diminui.
    • Interoperabilidade: a padronização garante que os sistemas se comportem de maneira comum, aumentando a interoperabilidade
    • Previsibilidade / Confiabilidade / Redução dos riscos: artefatos bem testados e reutilizados várias vezes têm alto grau de confiabilidade, diminuindo os riscos de erro.
    • Padronização: como os artefatos seguem uma padronização pré-definida, sua reutilização em um sistema causará conseqüente padronização.
  • Requisitos
    • Deve ser possível encontrar os componentes;
    (catalogação)‏
    • Certeza de comportamento como especificado;
    (certificação)‏
    • Possibilidade de entendimento e adaptação.
    (documentação)‏
  • Dificuldades
    • Empenho - a principal razão da baixa taxa de reutilização que se verifica deve-se à inexistência de qualquer esforço para reutilizar;
    • Existência - o fato de não existirem partes isoladas, sob a forma de artefatos, quer tenham sido desenhados para reutilização ou não, representa um impedimento;
    • Disponibilidade - a falta de repositórios e a limitação do seu uso são as principais razões da falta de disponibilidade do artefato;
    • Acessibilidade - a má ou insuficiente representação e classificação do artefato ou a fraca qualidade das ferramentas de busca são as principais razões para não encontrá-lo;
    • Legibilidade - a dificuldade em compreender o artefato, seja por documentação insuficiente ou devido a uma excessiva complexidade do mesmo, estão na origem da sua desconsideração para reutilização;
  • Dificuldades
    • Validação - a falta de teste do artefato, o baixo desempenho, a não adesão aos padrões de normalização ou a falta de suporte por parte do produtor do artefato são consideradas as principais razões para sua rejeição na validação;
    • Integrabilidade - a existência de incompatibilidade de hardware e ambiente de integração são as razões mais frequentes que impedem a integração do artefato;
    • Barreiras psicológicas;
    • Barreiras legais e econômicas;
    • Falta de ferramentas de apoio.
  • Fases do Reuso
    • Fase pré OO: 1960-1970
      • Técnica: Cut-and-Paste - linhas de código roubadas de um programa e usadas em outro;
      • Técnica: Subrotinas - código comum de um programa;
      • Técnica: Bibliotecas - funções inteiras genéricas, relacionadas, para servir em várias situações em programas diferentes
  • Fases do Reuso
    • Fase da revolução OO: 1980
      • Técnica: Herança – conceitos inteiros através de classes ( permite fazer programming-by-difference);
      • Técnica: Interfaces – contratos de relacionamento entre objetos.
  • Fases do Reuso
    • Fase pós deslumbramento OO: 1990
      • Técnicas foram inventadas e catalogadas para “resolver” os problemas que ocorriam anteriormente;
      • Design Patterns (Padrões de Projeto) - A granularidade de reuso está aumentando de “classes individuais” (hierarquias de classes) para “várias classes e suas colaborações”.
  • Fases do Reuso
    • Fase pós deslumbramento OO: 1990 (cont.)‏
      • Frameworks - Para reusar análise, arquitetura, design inteiro, semântica de interação e testes;
      • Componentes – Uso frequente de ferramentas visuais para criar componentes. Apareceu para compor interfaces gráficas mais rapidamente
        • Permitiram o RAD (Rapid Application Development)‏
  • Frameworks
    • Abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade genérica. (Aplicação semi-completa)
    • Hot-Spots:
      • Partes do framework que podem ser adaptadas;
      • Específicas de sistemas individuais;
      • Funcionalidades/serviços que devem ser implementados;
    • Frozen-Spots:
      • Partes fixas do framework;
      • Definem a arquitetura geral do sistema;
      • Serviços já implementados pelo framework.
  • Framework X Design Pattern
    • Design Pattern são mais abstratos que framework;
    • Framework inclui código;
    • Frameworks tem um domínio de aplicação particular.
  • Tipos de Framework
    • Framework Vertical
      • Tenta resolver problemas de um domínio;
      • Usado em vários software do mesmo domínio;
      • Exemplos: Framework financeiro, recursos humanos.
    • Framework Horizontal
      • Não depende do domínio da aplicação;
      • Pode ser usado em diferentes domínios;
      • Exemplos: Interfaces gráficas.
  • Tipos de reuso
  • Abordagens de reutilização
    • Geradores de Aplicação: a partir de uma descrição/especificação de alto nível o programa é gerado. Trabalham dentro de apenas um domínio de aplicação. O processo de reutilização é transparente ao usuário.
    • Reutilização por Composição: a partir da seleção de um componente é possível construir ou compor um programa. Isso implica que o usuário é parte ativa do processo de reutilização.
  • Reuso com Orientação a Objetos A princípio, Reuso não é tão fácil de conseguir como se espera. Para produzir modelos reusáveis de objetos são necessários:
    • Experiência
    • Familiaridade
  • Objetos como provedores de serviço Técnica de modelagem O.O.:
    • Um sistema prove serviços e é constituído por objetos;
    • Tais objetos proveem serviços;
    • Objetos que compõe outros objetos proveem serviços, e assim por diante.
  • Objetos como provedores de serviço Vantagens de se valorizar um objeto/classe pelos serviços que provê:
    • Identificar classes a serem implementadas ou adquiridas;
    • Coesão melhorada do Projeto/Design.
      • Mais fácil de "encaixar" classes ao Design;
    • Grande possibilidade de reuso do modelo e implementação.
  • Componentes e R.A.D. (Rapid App. Development)‏ Classes "prontas":
    • Frameworks;
    • Componentes de IDE's.
    Colocação em uso é rápida. Conclusão: produção acelerada .
  • Reuso com polimorfismo
    • Tipos específicos tratados como genéricos ( upcasting ). Mensagens ao tipo genérico e execução do código específico (late binding).
    • Software altamente extensível :
      • Exemplo: Código que trata coleção de objetos de diversos tipos (polimorfos) fica intacto ao se incluir um novo tipo à coleção.
  • Reuso com polimorfismo
  • Reuso com polimorfismo
  • Herança vs. Composição
    • Herança, é bom, mas é supervalorizada.
    • Prefira composição a herança, no início da modelagem. É mais flexível.
    • Usar ambas com inspeção.
      • Experiência, insight e bom senso.
  • Referências Bibliográficas
    • http://www.ime.usp.br/~yw/2004/mac5701i/monografias/claudia-acvm.pdf
    • http://inf.cp.cefetpr.br/ligia/papers/reuso.pdf
    • http://www.linux.ime.usp.br/~cef/mac499-06/monografias/alexandre/files/Monografia_Alexandre_Onishi.pdf
    • Thinking In Java, 4 th Edition, Bruce Eckel, MindView Inc. (www.mindview.net)‏
    • http://www.inf.ufpr.br/silvia/ES/reuso/reuso.pdf
    • http://www.cic.unb.br/~jhcf/MyBooks/iess/Reuso/Reusoereusabilidade.pdf
    • http://disciplinas.lia.ufc.br/engsof081/arquivos/Introducao_Reuso_de _Software_Aula_Profa_Rossana.pdf
    • http://www.dsc.ufcg.edu.br/~jacques/cursos/map/pdf/4.1-Facetas%20da%20Reusabilidade%20de%20Software.pdf