Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Reuso de Software - Fafire 2014

Reuso de Software - Fafire 2014

Conteúdo referente a disciplina Desenvolvimento focado em Reuso da pós graduação em Engenharia de Software da Fafire

Eduardo Cruz

November 20, 2014
Tweet

More Decks by Eduardo Cruz

Other Decks in Technology

Transcript

  1. ORIGEM • Primeira referência a reuso de software em escala

    foi feita em 1968 por Douglas McIlroy* ▪ *Mass Produced Software Components, Doug McIlroy NATO Software Engineering Conf., Garmisch, Germany, 1968
  2. DEFINIÇÃO “O processo de criação de sistemas a partir de

    software existente ao invés de desenvolver do zero.” [Charles Krueger]
  3. BENEFÍCIOS –Redução de Custos (menos retrabalho) –Aumento de Produtividade (não

    começar sempre do zero) –Melhoria de Qualidade (criar novos software com base em artefatos testados e com menos bugs)
  4. OBSTÁCULOS • Gerenciais e Organizacionais • Falta de apoio gerencial

    • gerenciamento de projeto • Inadequação da estrutura organizacional • Econômicos • Conceituais e Técnicos • Dificuldade de encontrar software recusável • Componentes legados não adequados ao reuso
  5. TIPOS DE ARTEFATOS RECUSÁVEIS • Código fonte • Casos de

    Teste • Modelos e Projetos • Arquitetura • Todos os artefatos do ciclo de desenvolvimento … inclusive conhecimento
  6. TIPOS DE REUSO • Ad Hoc • Sem métodos definidos

    • Depende de iniciativas pessoais • Sistemático • Possui guias, processos e formas de medição • Tem foco e iniciativa organizacional
  7. REUSO AD HOC • Dependente de iniciativas individuais • Em

    geral apresenta maior ênfase na fase de codificação • Sem apoio gerencial ou corporativo
  8. SERVICE ORIENTED ARCHITECTURE • Arquitetura orientada a serviços • Um

    das formas de aplicar reuso • Baixo acoplamento entre módulos • Alta capacidade de interoperabilidade • Base para o SaaS (Software as a Service)
  9. SAAS, PAAS, IAAS • IaaS - Infrastructure as a Service

    - Disponibilização de infra- estrutura online de servidores para atender demandas escaláveis. É a base para o PaaS • PaaS - Platform as a Service - Conjunto de componentes utilizados no desenvolvimento de sistema. É a base para o SaaS • SaaS - Software as a Service, disopnibiização e comercialização de software no modelo de serviço, em geral de assinatura mensal ou anual.
  10. GERENCIADORES DE PACOTES/DEPENDÊNCIAS • Responsáveis pela padronização do uso de

    componentes reutilizáveis • Em geral, específicos por tecnologia: java, php, ruby, python, javascript. • Pode ser públicos ou corporativos
  11. FRAMEWORKS • Conjunto de artefatos reutilizáveis focados na solução de

    problemas específicos. • Tipos: • Front end - São executados no browser e atuam na interação com o usuário • Back end - São executados no servidor e costumam ter foco maior na cama de negoios • Vantagens: Padronização, separação de responsabilidade entre camada de negócios e infra-estrutura • Desvantagens: Curva de aprendizado, dependência tecnológica, risco de descontinuidade do framework.
  12. MODELO EVOLUTIVO DE NÍVEIS DE REUSO PROPOSTO POR MARTIN GRISS

    None Code leverage Black box code reuse Managed workproducts Architecture reuse Systematic Domain- specific reuse Reduced Development time Reduced maintenance costs Broader coverage High reuse levels Reuse 
 enabled 
 business Investment, experience Benefit
  13. 5 REUSO DE SOFTWARE • Reuso Corporativo de Software •

    Reuso além de iniciativas técnicas individuais dos programadores • Foco em posicionamento corporativo da empresa em relação a como alinhar atividades técnicas e melhoria de processo com objetivos de negócio • Objetivo • Redução de Custos (menos retrabalho) • Aumento de Produtividade (não começar sempre do zero) • Melhoria de Qualidade (criar novos software com base em artefatos testados e com menos bugs)
  14. 29 MODELOS ORGANIZACIONAIS • Existem diversos modelos organizacionais de estruturação

    informal ou sistemática de adoção de reuso em empresas. • Alguns exemplos são: • Ad-Hoc; • Baseado em Repositório; • Centralizado; • Baseado em Domínio
  15. AD-HOC Reuso entre equipes de desenvolvimento Equipe de 
 Sistemas

    Equipe de 
 Sistemas ▪ Sem comprometimento para reusar ▪ Informal e Aleatório ▪ Individualizado
  16. Baseado em Repositório: Reuso entre grupos de aplicação ▪ Sem

    processo explícito ▪ Sem responsáveis pela qualidade ▪ Repositório baseado na quantidade ! sem controle Equipe de
 Sistemas Equipe de
 Sistemas Repositório
  17. Centralizado Reuso com Grupo de Componentes ▪ Grupo de Reuso

    responsável pelo repositório ! minimiza a redundância ▪ Especialistas em Reuso podem (ou não) ser alocados a projetos específicos ▪ Quem paga por eles? Equipe de 
 Sistemas Equipe de
 Sistemas Grupo de Componentes Repositório
  18. Reuso por
 Domínio Reuso Baseado em Domínios Específicos ▪ Grupo

    especializado em Reuso ▪ Aquisição de conhecimentos específicos para domínios específicos Reuso por
 Domínio Equipe de 
 Sistemas Equipe de 
 Sistemas Repositório
  19. 35 HALL DA FAMA EM REUSO SISTEMÁTICO • Para exemplificar

    o grau de maturidade de estruturação da comunidade de reuso na industria, ao lado alguns exemplos de empresas que receberam o prêmio anual: “Hall da Fama em Reuso”. Esse prêmio foi concebido e entregue durante vários anos na conferencia internacional de linhas de produto de software. Para mais informaçõess sobre o evento em 2014 acess: • http://www.splc2014.net/
  20. REFERÊNCIA • Para leitura adiciona sobre o tema de introdução

    ao reuso de software, o livro: “Software Reuse: Architecture, Process, and Organization for Business Success” de Ivar Jacobso é uma das referências na área. • http://www.amazon.com/Software-Reuse- Architecture-Organization-Business/dp/ 0201924765
  21. REFERÊNCIA • Para leitura adiciona sobre o tema de gerenciamento

    de reuso corporativo, o livro: “Managing Software Reuse” de Wayne Lim é uma das referências na área. • http://www.amazon.com/Managing- Software-Reuse-Wayne-Lim/dp/ 0135523737