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

Adelino Moreira Marcial Neto Alex A. Toniatto Gabriela Santini

Embed Size (px)

Citation preview

Page 1: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

Reuso de SoftwareFATEC SBC

Informática p/ a Gestão de NegóciosFundamentos de Eng. de Software

Page 2: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

Integrantes

Adelino Moreira Marcial Neto

Alex A. Toniatto

Gabriela Santini

Page 3: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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.

Page 4: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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.

Page 5: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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.

Page 6: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

Benefícios da reutilização

Maior produtividade;

Produtos com melhor qualidade, mais consistentes e padronizados;

Diminuição de custos e tempo gastos no desenvolvimento;

Page 7: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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;

Page 8: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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.

Page 9: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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;

Page 10: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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;

Page 11: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

Os tipos mais comuns de reuso

Padrões de projetos (Design Patterns)

Frameworks

Componentes

Biblioteca de Classes

Page 12: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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.

Page 13: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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.

Page 14: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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

Page 15: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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)

Page 16: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

Exemplo de Código (Sample Code)class Equipment{ public: virtual ~Equipment(); const char* Name(){return_name;} virtual Watt Power(); virtual Currency NetPrice(); virtual Currency DiscountPrice(); virtual void Add(Equipment*); virtual voidRemove(Equipment*); virtual Iterator* CreateIterator();protected: Equipment(const char*);private:const char* _name;};

class CompositeEquipment: public Equipment{

public: virtual ~CompositeEquipment(); virtual Watt Power(); virtual Currency NetPrice(); virtual Currency DiscountPrice(); virtual void Add(Equipment*); virtual voidRemove(Equipment*); virtual Iterator* CreateIterator();protected: CompositeEquipment(const char*);private: List_equipment;};

Page 17: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

Padrões de Projeto

class FloppyDisk: public Equipment{ public: FloppyDisk(const char*); virtual ~FloppyDisk(); virtual Watt Power(); virtual Currency NetPrice(); virtual Currency DiscountPrice(); };

Page 18: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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.

Page 19: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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

Page 20: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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.

Page 21: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

Frameworks

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

Page 22: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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

Page 23: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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

Page 24: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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

Page 25: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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

Page 26: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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.

Page 27: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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

Page 28: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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.

Page 29: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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.

Page 30: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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;

Page 31: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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.

Page 32: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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?

Page 33: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

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.

Page 34: Adelino Moreira Marcial Neto  Alex A. Toniatto  Gabriela Santini

OBRIGADO!!!