[Tópicos I]
Facetas da Reusabilidade
de Software
Prof. Fábio R. Pillatt
pillatt@unicruz.edu.br
2003.01
Universidade de Cruz Alta
Ciência da Computação
Tópicos Especiais em Computação I
2
[Tópicos I]
Qual é o problema ?
Fazer software é difícil
Fazer software é lento e caro.
Reuso
Componente e
Frameworks
Internet
enabled
Não temos tecnologia ainda para fazer software grande, do zero, rapidamente e com poucos bugs.
Plataformas de Desenvolvimento, XP, ...
3
[Tópicos I]
Qual é a solução?
Reutilização de Software !
As mesmas idéias básicas são
projetadas e reprojetadas várias vezes
pela mesma pessoa ou por pessoas
diferentes.
Será que temos que começar tudo
de novo, sempre?
4
[Tópicos I]
Por que a solução não
é fácil?
Reuso não acontece automaticamente!
Para reusar tem que:
Bolar boas abstrações (abstrações úteis)
Empacotá-las para facilitar o reuso.
Como fazer isto?
Que técnicas utilizar?
OO prometeu muito mas não cumpriu a promessa.
Por que não é fácil!
Não é um simples “copy and past”
Pouca gente conseguiu bons resultados.
Ficou mais no marketing (com exceção
de alguns bons programadores).
?
?
?
5
[Tópicos I]
Qual é a dificuldade?
Técnicos podem não entender o que reusar ou como reusá-lo;
Técnicos podem não se motivar a aplicar técnicas de reuso a não ser que benefícios de curto prazo sejam alcançáveis
Porém, o reuso é um investimento a longo prazo;
Custos de descobrimento devem ser endereçados para que o caminho do reuso seja bem sucedido.
Descobrir o que há de comum entre várias aplicações do mesmo domínio de problema.
6
[Tópicos I]
O que mudou recentemente?
Na metade da década de 90, as
lições e caminhos cristalizaram-se
com:
Design Patterns,
Frameworks e
Componentes.
7
[Tópicos I]
O que são Frameworks?
Um framework é uma aplicação quase completa
onde características que estão faltando devem ser acopladas.
Domínio: Aplicação de E-Commerce
A
B
C
Framework
8
[Tópicos I]
O que são Design Patterns?
Design Patterns: "Cada padrão descreve um problema que ocorre freqüentemente e então descreve o cerne da solução ao problema de forma a poder reusar a solução milhões de vezes em situações diferentes" [Christopher Alexander]
Reuso de idéia, não de código.
Contém o somatório da experiência dos melhores projetistas O-O!
Estão revolucionando o projeto de software desde 1995 quando o famoso livro da "Gang of Four" (GoF) apareceu com o primeiro catálogo de 23 padrões.
Padrões de Projeto: Soluções Reutilizáveis de Software Orientado a Objetos (Gamma, Helm, Johnson e Vlissides)
9
[Tópicos I]
O que são Componentes?
Componentes: "Um pacote coerente de artefatos de software que pode ser desenvolvido independentemente e entregue como unidade e que pode se composto, sem mudança, com outros componentes para construir algo maior" [Desmond D'Sousa].
Encapsula as particularidades de
cada aplicação e pluga-se ao framework.
Framework
A
A
C
C
B
B
B
B
Aplicação B
10
[Tópicos I]
Considerações Finais sobre
Reuso
Mesmo com a ajuda de tecnologias como design patterns, frameworks e componentes, o custo monetário e de complexidade de desenvolvimento é alto para se alcançar o reuso.
Gasta muito tempo para bolar boas abstrações.
Bons programadores são caros.
Programadores comuns terão dificuldades para produzir software reutilizável.
Você não quer ser um programador comum??
Primeiro passo: Leia o livro da GoF.
Padrões de Projeto: Soluções Reutilizáveis
de Software Orientado a Objetos (Gamma, Helm, Johnson e Vlissides)
11
[Tópicos I]
Considerações Finais sobre
Reuso
A implantação da cultura de reuso de uma empresa requer:
Um processo de desenvolvimento adequado.
Além de desenvolver um produto, queremos criar abstrações reutilizáveis e aumentar o patrimônio da empresa
Novos papéis.
Para coordenar o reuso entre times (equipes) diferentes.
Treinamento.
A equipe de desenvolvimento deve estar a par de tecnologias tais como design patterns, frameworks e componentes.
Incentivo apropriado para o reuso
Convencer a equipe de desenvolvimento que implantar a cultura do reuso pode ser uma boa idéia.
12
[Tópicos I]
Considerações Finais sobre
Reuso
Reuso é um investimento a longo prazo!
O reuso de software se dará na medida que houver a necessidade da criação de novas aplicações semelhantes (facilitada pelo uso de frameworks) ou inserção de novos requisitos no projeto original (encapsulados em componentes que poderão ser plugados em frameworks).
Uma ótima idéia para software houses.