ENGENHARIA DE SOFTWARE Aula 17 Reuso de software
OBJETIVOS Entender os benefícios e problemas de reuso de software durante o desenvolvimento de novos sistemas; Entender o conceito de um framework de aplicações como um conjunto de objetos reusáveis e como frameworks podem ser usados no desenvolvimento de aplicações; Conhecer as linhas de produtos de software que são compostas de um arquitetura de núcleo comum e componentes configuráveis e reusáveis; e Aprender como sistemas podem ser desenvolvidos pela configuração e composição de sistemas de software de aplicação de prateleira. 14/11/2017 IFPR QUEDAS DO IGUAÇU - ENGENHARIA DE SOFTWARE - DANILO GIACOBO 2
INTRODUÇÃO A engenharia de software baseada em reuso é uma estratégia da engenharia de software em que o processo de desenvolvimento é orientado para o reuso de softwares existentes. A disponibilidade de software reusáveis tem aumentado significativamente. O movimento open source significa que existe uma enorme base de código reusável disponível a baixos custos. Reuso de sistema de aplicação, de componentes e de objetos de funções. Uma vantagem do reuso de software é a redução dos custos globais de desenvolvimento. Benefícios do reuso de software? Problemas com o reuso de software? 14/11/2017 IFPR QUEDAS DO IGUAÇU - ENGENHARIA DE SOFTWARE - DANILO GIACOBO 3
O PANORAMA DE REUSO O reuso é possível em diferentes níveis, desde funções simples até aplicações completas, e normas para componentes reusáveis facilitam o reuso. Qual é a técnica mais apropriada para se usar em uma determinada situação? 1. O cronograma de desenvolvimento para o software. 2. A expectativa de duração do software. 3. O conhecimento, as habilidades e a experiência do desenvolvimento da equipe. 4. A importância do software e seus requisitos não funcionais. 5. O domínio da aplicação. 6. A plataforma em que o sistema será executado. 14/11/2017 IFPR QUEDAS DO IGUAÇU - ENGENHARIA DE SOFTWARE - DANILO GIACOBO 4
O PANORAMA DE REUSO Figura 1 Abordagens que apoiam o reuso de software 14/11/2017 IFPR QUEDAS DO IGUAÇU - ENGENHARIA DE SOFTWARE - DANILO GIACOBO 5
FRAMEWORKS DE APLICAÇÕES Um framework é uma estrutura genérica estendida para se criar uma aplicação ou subsistema mais específico. É um conjunto integrado de artefatos de software (como classes, objetos e componentes) que colaboram para fornecer uma arquitetura reusável para uma família de aplicações. Os frameworks são implementados como uma coleção de classes de objetos concretos e abstratos em uma linguagem de programação orientada a objetos. Os frameworks são uma abordagem eficaz de reuso, mas são caros para serem introduzidos em processos de desenvolvimento de software. 14/11/2017 IFPR QUEDAS DO IGUAÇU - ENGENHARIA DE SOFTWARE - DANILO GIACOBO 6
LINHAS DE PRODUTO DE SOFTWARE Uma das abordagens mais eficazes para o reuso é criar linhas de produtos de software ou famílias de aplicações. Uma linha de produtos de software é um conjunto de aplicações com uma arquitetura comum e componentes compartilhados, sendo cada aplicação especializada para refletir necessidades diferentes. O núcleo do sistema é projetado para ser configurado e adaptado para atender às necessidades de clientes diferentes. Isso pode envolver a configuração de alguns componentes, implementação de componentes adicionais e a modificação de alguns dos componentes para refletir novos requisitos. 14/11/2017 IFPR QUEDAS DO IGUAÇU - ENGENHARIA DE SOFTWARE - DANILO GIACOBO 7
REUSO DE PRODUTOS COTS Um produto de prateleira (COTS, do inglês commercial-off-the-shelf) é um sistema de software que pode ser adaptado às necessidades de diferentes clientes sem alterar o código-fonte do mesmo. Praticamente todos os softwares de desktop e uma grande variedade de produtos de servidor são softwares COTS. Como esse software é projetado para uso geral, costuma incluir muitos recursos e funções. Portanto, tem o potencial de ser reusado em diferentes ambientes e como parte de aplicações diferentes. 14/11/2017 IFPR QUEDAS DO IGUAÇU - ENGENHARIA DE SOFTWARE - DANILO GIACOBO 8
SISTEMAS DE SOLUÇÃO COTS Sistemas de solução COTS são sistemas genéricos de aplicação que podem ser projetados para suportar um tipo de negócio em particular, atividade de negócio ou, por vezes, uma empresa completa. Único produto que oferece a funcionalidade necessária para um cliente. Baseados em uma solução genérica e em processos padronizados. O foco do desenvolvimento é a configuração do sistema. O fornecedor do sistema é responsável pela manutenção. O fornecedor do sistema fornece a plataforma para o sistema. Um sistema de Enterprise Resource Planning (ERP) pode apoiar toda a fabricação, os pedidos e as atividades de gerenciamento com o cliente, em uma grande empresa. 14/11/2017 IFPR QUEDAS DO IGUAÇU - ENGENHARIA DE SOFTWARE - DANILO GIACOBO 9
SISTEMAS INTEGRADOS COTS Sistemas integrados COTS são aplicações que incluem dois ou mais produtos COTS ou, às vezes, sistemas de aplicações legados. Vários produtos de sistemas heterogêneos são integrados para fornecer funcionalidade customizada. Podem ser desenvolvidas soluções flexíveis para processos do cliente. O foco do desenvolvimento é a integração do sistema. O proprietário do sistema é responsável pela manutenção. O proprietário do sistema fornece a plataforma para o sistema. 14/11/2017 IFPR QUEDAS DO IGUAÇU - ENGENHARIA DE SOFTWARE - DANILO GIACOBO 10
RESUMO Atualmente, a maioria dos novos sistemas de software de negócio é desenvolvida com reuso de conhecimento e códigos de sistemas já implementados. Existem muitas maneiras de se reusar um software, desde o reuso de classes e métodos em bibliotecas até o reuso de sistemas de aplicação completos. As vantagens do reuso de software são redução de custos, desenvolvimento de software mais rápido e diminuição de riscos, além de aumento de confiança no sistema. Ademais, especialistas podem ser usados mais eficazmente, concentrando sua expertise no projeto de componentes reusáveis. 14/11/2017 IFPR QUEDAS DO IGUAÇU - ENGENHARIA DE SOFTWARE - DANILO GIACOBO 11
RESUMO Frameworks de aplicações são coleções de objetos concretos e abstratos projetados para o reuso por meio da especialização e a adição de novos objetos. Geralmente, eles incorporam boas práticas de projeto por meio de padrões de projeto. As linhas de produto de software são aplicações relacionadas, desenvolvidas a partir de uma ou mais aplicações-base. Um sistema genérico é adaptado e especializado para atender aos requisitos específicos de funcionalidade, plataforma de destino ou configuração operacional. O reuso de produtos COTS está preocupado com o reuso de sistemas de prateleira em grande escala. Eles fornecem uma grande funcionalidade e seu reuso pode reduzir radicalmente os custos e o tempo de desenvolvimento. Os sistemas podem ser desenvolvidos por meio da configuração de um único produto genérico COTS ou integrando dois ou mais produtos COTS. 14/11/2017 IFPR QUEDAS DO IGUAÇU - ENGENHARIA DE SOFTWARE - DANILO GIACOBO 12
RESUMO Os sistemas ERP (Enterprise Resource Planning) são exemplos de reuso de COTS em grande escala. Você cria uma instância de um sistema ERP por meio da configuração de um sistema genérico com informações sobre regras e processos de negócios do cliente. Possíveis problemas com o reuso baseado em COTS incluem a falta de controle sobre a funcionalidade e o desempenho, a falta de controle sobre a evolução de sistema, a necessidade de suporte dos fornecedores externos e as dificuldades em assegurar que os sistemas possam interoperar. 14/11/2017 IFPR QUEDAS DO IGUAÇU - ENGENHARIA DE SOFTWARE - DANILO GIACOBO 13
ATIVIDADE Trabalho Individual Escrever um texto legível à caneta que forneça uma resposta para cada uma das perguntas a seguir. A atividade deve ser entregue na próxima aula. Cite quatro casos em que você pode recomendar o não reuso de software. A maioria dos softwares de desktop, como softwares de processamento de textos, podem ser configurados de várias maneiras. Examine o software que você usa regularmente e liste as opções de configuração para ele. Sugira as dificuldades que os usuários podem ter na configuração do software. Se você usar o Microsoft Office ou Libre Office, esses são bons exemplos para usar neste exercício. 14/11/2017 IFPR QUEDAS DO IGUAÇU - ENGENHARIA DE SOFTWARE - DANILO GIACOBO 14
REFERÊNCIAS SOMMERVILLE, I. Engenharia de Software. 9. ed. São Paulo: Pearson Prentice Hall, 2011. 530 p. ISBN: 978-85-7936-108-1. 14/11/2017 IFPR QUEDAS DO IGUAÇU - ENGENHARIA DE SOFTWARE - DANILO GIACOBO 15