reuso de software

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

Upload: alina

Post on 23-Jan-2016

40 views

Category:

Documents


0 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Reuso de Software

Reuso de SoftwareFATEC SBC

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

Page 2: Reuso de Software

Integrantes

Adelino Moreira Marcial Neto

Alex A. Toniatto

Gabriela Santini

Page 3: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

Os tipos mais comuns de reuso

Padrões de projetos (Design Patterns)

Frameworks

Componentes

Biblioteca de Classes

Page 12: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

Frameworks

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

Page 22: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

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: Reuso de Software

OBRIGADO!!!