1 of 26

Reuso de Software, Frameworks

Eduardo Piveta

2 of 26

Introdução

  • Paradoxo da indústria de software:
    • Programas mais complexos
    • Menor tempo de desenvolvimento
    • Menor custo possível
  • Necessidade de definir mecanismos para reuso de software

3 of 26

Reuso de software

  • Componentes: Primeira visão de reuso
  • Padrões de Projeto: Reuso de Projeto
  • Frameworks: Reuso de Projeto e Reuso de Código

Rotinas Classes Componentes Padrões Frameworks

4 of 26

Reuso de software

  • O uso de componentes visa aumentar o grau de reuso no desenvolvimento de software
  • Isto é feito através de dois processos:
    • Engenharia de domínio
    • Desenvolvimento baseado em componentes

5 of 26

Engenharia de domínio

  • Estudo de um domínio de aplicações:
    • Ambientes de desenvolvimento de software
    • Produção e gerenciamento de documentos
    • Gestão financeira
    • Automação de escritórios
    • Software para web
    • Jogos de tabuleiros

6 of 26

Engenharia de domínio

  • Visa:
    • Reusar conhecimento acerca do domínio
    • Produzir uma especificação adequada a um conjunto de aplicações
    • Reutilizar esta especificação no desenvolvimento de diferentes aplicações
  • A engenharia de domínio é utilizada para a construção de frameworks e componentes

7 of 26

Frameworks

  • Características:
    • Projeto em larga escala que descreve como um sistema é decomposto em um conjunto de objetos que interagem
    • Representado como um conjunto de classes abstratas e a maneira como elas interagem
    • Utilizam inversão de controle
    • Utilizam padrões de projeto e componentes

8 of 26

Frameworks

  • Estrutura de Classes
    • OO
  • Implementação Inacabada

9 of 26

Aplicação OO completamente Desenvolvida

10 of 26

Reutilização de Classes

11 of 26

Aplicação baseada em framework

12 of 26

Frameworks

  • Frameworks são uma técnica de reuso de software
  • Definição:
    • Projeto reutilizável de parte de um sistema, representado por um conjunto de classes abstratas e seu inter-relacionamento (estrutura)
    • Esqueleto de uma aplicação que pode ser customizado pelo desenvolvedor (propósito)

13 of 26

Motivações para o uso de frameworks e reuso

  • Principal: Economizar tempo e dinheiro no desenvolvimento de software
  • Uniformidade
  • Construção de Sistemas Abertos
  • Combinação de Softwares Diferentes
  • Linguagens OO: Frameworks para interfaces gráficas

14 of 26

O que é um Framework?

  • Classes Abstratas
    • Classes sem instâncias, são usadas como superclasses
    • Classes abstratas protelam a implementação de alguns de seus métodos para suas subclasses
    • São utilizadas como modelos para a criação de classes
  • Frameworks utilizam classes abstratas como projeto para seus componentes

15 of 26

Classes abstratas

  • Classes abstratas definem uma interface para suas subclasses
  • Clientes das subclasses da classe abstrata precisam de uma classe que implemente a interface da classes abstrata
  • Classes abstratas podem prover parte da implementação dos métodos:
    • Métodos Template

16 of 26

Métodos Template

  • Definem o esqueleto de um algoritmo de um método em uma classe abstrata, prorrogando passos da implementação, delegando-os para as subclasses
    • Métodos Hook
  • Subclasses concretas devem implementar os métodos abstratos providos pela classe abstrata

17 of 26

Frameworks

  • Projeto em larga escala que descreve como um sistema é decomposto em um conjunto de objetos que interagem entre si
  • Normalmente representado como um conjunto de classes abstratas e a maneira como elas interagem
  • Reuso de interface é mais importante que reuso de implementação

18 of 26

Frameworks

  • Tiram proveito das seguintes características das linguagens OO:
    • Abstrações
    • Polimorfismo
    • Herança

19 of 26

Inversão de controle

  • Normalmente usuários de componentes chamam os componentes sempre que necessário
    • sendo responsável pela estrutura e pelo fluxo de controle do programa
  • Ao utilizar frameworks o código do usuário é chamado pelo framework
    • O framework é responsável pela estrutura e pelo fluxo de controle do programa

20 of 26

Frameworks

  • Frameworks para vários domínios:
    • Interfaces gráficas
    • Sistemas Hipermídia
    • Editores Gráficos
    • Sistemas Operacionais
    • Protocolos de Rede
    • ...

21 of 26

Frameworks

  • Frameworks reutilizam código pq tornam mais fácil o desenvolvimento de uma aplicação através de uma biblioteca de componentes existentes
  • Provêm uma interface padrão para o inter-relacionamento entre objetos
  • Frameworks reutilizam análise
    • Modelam um domínio de aplicação
    • Generalizam um domínio de aplicações

22 of 26

Domínio de aplicações

  • Família com características comuns
    • Jogos de tabuleiros
    • Ambientes de desenvolvimento de software
    • Produção e gerenciamento de documentos
    • Gestão financeira
    • Automação de escritórios
    • Software para web

23 of 26

Reuso do conhecimento obtido no desenvolvimento de aplicações

  • Produzir uma aplicação utilizando o projeto de outra aplicação
    • Reengenharia: a especificação de uma aplicação é alterada de modo a adaptar-se a novos requisitos e gerar uma nova aplicação

24 of 26

Análise de domínio

  • Produzir uma especificação adequada a um conjunto de aplicações e reutilizar esta especificação no desenvolvimento de diferentes aplicações

25 of 26

Análise de domínio

  • Processo de identificação e organização de conhecimento a respeito de uma classe de problemas…
  • ... para dar suporte à descrição e solução destes problemas.

26 of 26

Alguns problemas com frameworks

  • Como são complexos e flexíveis, normalmente são difíceis de utilizar
  • Requerem melhor documentação
  • Requerem melhor treinamento
  • São mais difíceis de desenvolver
  • Dependentes de linguagem