1 / 34

Reuso de Software

Reuso de Software. FATEC SBC Informática p/ a Gestão de Negócios Fundamentos de Eng. de Software. Integrantes. Adelino Moreira Marcial Neto Alex A. Toniatto Gabriela Santini. Introdução.

alina
Télécharger la présentation

Reuso de Software

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Reuso de Software FATEC SBC Informática p/ a Gestão de Negócios Fundamentos de Eng. de Software

  2. Integrantes • Adelino Moreira Marcial Neto • Alex A. Toniatto • Gabriela Santini

  3. Introdução A crescente busca por melhorias e soluções na área de desenvolvimento de software tem estimulado o estudo e construção de melhores formas de trabalho. A utilização do reuso de software de maneira eficiente tem trazido grandes benefícios e demonstrado ser um excelente diferencial competitivo para as empresas.

  4. Definição de Reutilização • Reuso de software • É o processo de criar sistemas de software a partir de software que já existe, ao invés de construí-lo desde a fase zero.

  5. Objetivo do Reuso de Software • O principal objetivo do reuso de software é evitar se refazer o trabalho no desenvolvimento de um novo projeto, capitalizando trabalhos anteriores, fazendo com que as soluções já desenvolvidas sejam imediatamente implementadas em novos contextos.

  6. Benefícios da reutilização • Maior produtividade; • Produtos com melhor qualidade, mais consistentes e padronizados; • Diminuição de custos e tempo gastos no desenvolvimento;

  7. Benefícios da reutilização • Facilidade na manutenção e evolução da estrutura do software produzido; • Desenvolvimento com menos perda de tempo; • Conformidade aos padrões, diminuindo os erros cometidos pelo usuário;

  8. Qual a maior motivação para adotar esta nova tecnologia? Os engenheiros de software tem observado que de 40% a 60% dos códigos de programação são reusáveis (em aplicações); 75% das funções são comuns a mais de um programa e somente 15% dos códigos são únicos.

  9. Dificuldades • Identificação, recuperação e modificação de sistemas reutilizáveis; • Compreensão dos sistemas recuperados; • Qualidade de sistemas reutilizáveis; • Criação de aplicações a partir de componentes reutilizáveis;

  10. Dificuldades • Maior custo de manutenção; • Poucas ferramentas de apoio; • Barreiras psicológicas, legais e econômicas; • É necessário uma política de incentivos à reutilização;

  11. Os tipos mais comuns de reuso • Padrões de projetos (Design Patterns) • Frameworks • Componentes • Biblioteca de Classes

  12. Padrões de projetos (Design Patterns) Descreve soluções para problemas recorrentes no desenvolvimento de sistemas de software. Visa facilitar a reutilização de soluções de desenho, isto é, soluções na fase de projeto do software, sem considerar reutilização de códigos. Também acarreta um vocabulário comum de desenhos, facilitando a comunicação, documentação e aprendizado do sistema de software.

  13. Padrões de Projetos • Diversas categorias: - Padrões de processo, - Padrões arquiteturais, - Padrões de análise, - Padrões de projeto, - Padrões de programação.

  14. Padrões de Projeto • Leaf: representa objetos “folha” na composição; define o comportamento para objetos primitivos na composição • Composite: define o comportamento para componentes que têm filhos; armazena componentes filhos e implementa operações relacionadas aos filhos na interface Component • Client: manipula objetos na composição através da interface Component

  15. Vantagens de Padrões • Reuso de soluções encontradas por especialistas experientes -> aumento de produtividade e qualidade • Melhoria na comunicação entre projetistas • Uniformidade na estrutura do software • Menor complexidade (blocos construtivos)

  16. Exemplo de Código (SampleCode) classEquipment{ public: virtual ~Equipment(); constchar* Name(){return_name;} virtual Watt Power(); virtual CurrencyNetPrice(); virtual CurrencyDiscountPrice(); virtual voidAdd(Equipment*); virtual voidRemove(Equipment*); virtual Iterator* CreateIterator(); protected: Equipment(constchar*); private: constchar* _name; }; classCompositeEquipment: publicEquipment{ public: virtual ~CompositeEquipment(); virtual Watt Power(); virtual CurrencyNetPrice(); virtual CurrencyDiscountPrice(); virtual voidAdd(Equipment*); virtual voidRemove(Equipment*); virtual Iterator* CreateIterator(); protected: CompositeEquipment(constchar*); private: List_equipment; };

  17. Padrões de Projeto classFloppyDisk: publicEquipment{ public: FloppyDisk(constchar*); virtual ~FloppyDisk(); virtual Watt Power(); virtual CurrencyNetPrice(); virtual CurrencyDiscountPrice(); };

  18. Frameworks • É um conjunto de classes abstratas e concretas que fornecem uma infra-estrutura genérica de soluções para um conjunto de problemas. • Contribuem para a reutilização porque possuem uma base bem definida para construção de software ou componentes, e podem ser divididos em duas categorias: frozen spots e hot spots.

  19. Frameworks • Frozen Spots : Definem a arquitetura geral de um sistema, com seus componentes básicos e o relacionamento entre eles, que se mantém intacta em qualquer instanciação do framework de aplicação

  20. Frameworks • Hot Spots Representam as partes do framework de aplicação que são específicas para cada sistema de software. São projetadas para serem genéricos e adaptáveis às necessidades da aplicação desenvolvida.

  21. Frameworks • Framework Caixa Branca - reuso provido por herança • Framework Caixa Preta - reuso provido por composição • Framework Caixa Cinza - mistura

  22. Framework Caixa-Branca x Caixa-Preta • Framework caixa branca é mais fácil de projetar • Framework caixa preta é mais fácil de usar • Frameworks caixa-branca evoluem para se tornar mais caixa preta •Aumenta o numero de objetos, mas eles ficam menores •Complexidade está na interconexão •Objetos compostos de objetos menores •O “Scripting” fica mais importante e as linguagens visuais tornam-se possíveis

  23. Classificação de Frameworks de aplicação • Frameworks de Infra-estrutura do Sistema -Simplificam o desenvolvimento da infra-estrutura de sistemas portáveis e eficientes, -Exemplos: sistemas operacionais, comunicação, interfaces com o usuário e ferramentas de processamento de linguagem -Em geral são usados internamente em uma organização de software e não são vendidos a clientes diretamente

  24. Classificação de Frameworksde aplicação • Frameworks de Integração de Middleware - usados em geral para integrar aplicações e componentes distribuídos. - projetados para melhorar a habilidade de desenvolvedores em modularizar, reutilizar e estender sua infra-estrutura de software para funcionar “sem costuras” em um ambiente distribuído - exemplos: Object Request Broker(ORB), middleware orientado a mensagens e bases de dados transacionais

  25. Classificação de Frameworksde aplicação • Frameworks de Aplicação Empresarial - Voltados a domínios de aplicação mais amplos e são a pedra fundamental para atividades de negócios das empresas. - Exemplos: telecomunicações, aviação, manufatura e engenharia financeira. -São mais caros para desenvolver ou comprar, mas podem dar um retorno substancial do investimento, já que permitem o desenvolvimento de aplicações e produtos diretamente

  26. Componentes • Um componente pode ser definido como uma unidade de software independente, que encapsula, dentro de si, seu projeto e implementação, e oferece serviços, por meio de interfaces bem definidas, para o meio externo.

  27. Componentes • Objetivo: quebra de blocos monolíticos em componentes inter-operáveis • Um componente provê um conjunto de serviços acessíveis por meio de uma interface bem definida • Motivações: desenvolvimento da Internet/WWW, arquitetura cliente/servidor, computação distribuída, Orientação a Objetos, Componentware, dentre outros

  28. Características básicas dos Componentes • Componentes são reutilizáveis; • Alguns são de uso mais geral e outros têm uso mais específico, mas todos são genéricos dentro do escopo considerado; • Componentes interagem com outros componentes.

  29. Bibliotecas de Classes • Classes de uso genérico podem ser disponibilizadas para reuso e importadas em múltiplas aplicações • Em geral são incorporadas ao código final da aplicação, ou seja, são compiladas juntamente com o restante do código.

  30. Desenvolvimento para Reutilização (Reuso Produtor) • Questões a serem consideradas: • Faça seu componente o mais geral possível, prevendo condições similares às que podem ocorrer; • Separe as dependências de forma que seções modificáveis sejam isoladas das que devem permanecer iguais; • Mantenha a interface geral e bem-definida;

  31. Desenvolvimento para Reutilização (Reuso Produtor) • Inclua informações sobre problemas encontrados e resolvidos; • Use convenções claras para nomeação; • Documente as estruturas de dados e algoritmos; • Separe as seções de comunicação e tratamento de erros.

  32. Reuso Consumidor • Perguntas a serem feitas: - O componente executa a função e fornece os dados que você precisa? - Se forem necessárias mudanças mínimas, trata-se de menos esforço do que construir o componente do zero? - O componente está bem documentado, de forma que possa ser estendido sem ter que entender linha por linha do código? - Existe um registro completo do teste do componente e histórico da revisão, para certificar que ele não tem erros?

  33. Conclusão O reuso de software nos projetos tem contribuído para o ganho de produtividade e diminuição de retrabalho nos projetos desenvolvidos pelas equipes. Além disso, os projetos estão cada vez mais confiáveis e com melhor qualidade, já que os erros anteriormente existentes são corrigidos.

  34. OBRIGADO!!!

More Related