Você está na página 1de 25

DCC / ICEx / UFMG

Tcnicas para Reutilizao


de Software

Eduardo Figueiredo
http://www.dcc.ufmg.br/~figueiredo
Panorama de Reutilizao

Frameworks

Padres Padres de Biblioteca de


de projeto arquitetura programas

Aplicaes Linha de produtos Integrao de


configurveis de software COTS

Desenvolvimento baseado Empacotamento de Geradores de


em componentes sistemas legados programas

Desenvolvimento Desenvolvimento
orientado a aspectos dirigido por modelos

Sistemas orientados a servios


Biblioteca e Framework
Bibliotecas de Software

Bibliotecas implementam servios que


podem ser usados por programas
uma forma comum de reutilizao
Disponibiliza funcionalidades comuns a
diferentes tipos de sistemas
Converter informao entre formatos
conhecidos (e.g., string para inteiro)
Acesso a recursos, arquivos, BD, etc.
Tipos abstratos de dados: fila, pilha, lista...
Uso de Biblioteca em Java
import java.util.Vector;

public class Customer {

String name;
Vector phoneNumbers = new Vector();

void removePhoneNumber(String c){


phoneNumbers.removeElement(c);
}

void addPhoneNumber(String c){


phoneNumbers.addElement(c);
}

...
}
Framework
Frameworks so aplicaes incompletas
So formados por interfaces, classes
abstratas e classes concretas (OO)
O conjunto de classes e interfaces
formam uma estrutura genrica
Um sistema implementado pela adio
de componentes para preencher lacunas
Por exemplo, pela implementao das
classes abstratas do framework
Tipos de Frameworks
Frameworks de infra-estrutura
Apiam a criao de infra-estruturas de
sistemas, tais como comunicaes,
interfaces de usurio e compiladores
Frameworks de integrao
Apiam a comunicao e a troca de
informaes de componentes
Frameworks de aplicaes
Apiam o desenvolvimento de um tipo
de aplicaes (e.g., aplicaes Web)
Extenso de Frameworks

Frameworks so entidades grandes que


devem ser estendidas para reutilizao

Exemplos de extenso
Adio de classes concretas que
implementam mtodos abstratos
Adio (sobrescrita) de mtodos que
implementam comportamento padro
Adio de arquivos de configurao (XML)
Principal Problema

Framework normalmente uma


entidade grande e complexa
Pode levar um longo tempo para
entend-lo e us-lo efetivamente
O desenvolvedor pode querer
apenas uma funcionalidade simples
Padro de Projeto
Padres de Projeto

Um padro uma descrio do


problema e a essncia da sua soluo
Documenta boas solues para
problemas recorrentes
Permite a reutilizao de conhecimento
anterior documentados em boas prticas
Deve ser suficientemente abstrato
para ser reusado em aplicaes
diferentes
Elementos de um Padro
Nome
Um identificador significativo para o padro
Descrio do problema
Descrio da soluo
Um template de soluo que pode ser
instanciado em maneiras diferentes
Consequncias
Os resultados e compromissos de
aplicao do padro
Exemplo de Problema

Padro
Observer
Padro Obsever
Nome
Observer
Descrio do problema
Separa o objeto de suas formas de
apresentao
Descrio da soluo (prximo slide)
Consequncias
Otimizaes para melhorar a atualizao
da apresentao
Soluo do Observer
Reutilizao de Modelos e
Gerao de Cdigo
Motivao

A reutilizao no nvel de cdigo


geralmente difcil
Envolve vrios detalhes especficos da
soluo ou tecnologia adotada
Proposta de Soluo

Elevar o nvel de abstrao


Reutilizao em nvel de modelos
Reutilizao de cdigo
-> Reutilizao de modelos

Pelo uso de geradores, o programa


(cdigo) automaticamente gerado
Modelos x Cdigo

Modelos tm vida til mais longa

Modelos facilitam a comunicao


entre desenvolvedores (e clientes)

Modelos so geralmente produzidos,


mesmo que no se use um
abordagem de gerao de cdigo
A Proposta MDD
Desenvolvimento Dirigido por Modelos

Prope que o desenvolvimento, reuso,


manuteno e evoluo sejam feitos
no nvel de modelagem

Reutilizao de modelos ainda uma


tcnica pouco adotada
Se limitam a alguns domnios especficos
ou em centros de pesquisa
Abordagem MDD
Modelos Os modelos so
Executveis
independentes de
Compilador software
de Modelos
Assim como, cdigo
Cdigo de de alto nvel
Alto Nvel
independente de
Compilador hardware
de Cdigo

Cdigo de
Baixo Nvel
Abordagem MDD
Modelos Modelos podem ser
Executveis
compilados para
Compilador vrias linguagens de
de Modelos
programao
Cdigo de
Alto Nvel
Modelos podem ser
parcialmente ou
Compilador totalmente reusados
de Cdigo
em diferentes
Cdigo de contextos
Baixo Nvel
O Processo MDD
Selecionar um modelo existente
Recortar as partes do modelo que interessam
Pode ser necessrio criar novos modelos ou
adaptar os modelos existentes
Integrar as partes selecionadas ao modelo do
sistema
Selecionar uma tecnologia de implementao
Descrever (ou reusar) o mapeamento dos
modelos para a implementao
Gerar o sistema
Potenciais Problemas
Imaturidade do desenvolvimento
dirigido por modelos
Falta de suporte de ferramentas e
ambientes de desenvolvimento
Modelos so vistos como extras
Cdigo seria o principal
Desenvolvedores so resistentes
No gostam de brincar com figuras
Temem por seus empregos como
programadores
Bibliografia

Ian Sommerville. Engenharia de


Software, 9 Edio. Pearson
Education, 2011.
Cap. 16 Reuso de Software
(Sees 16.1 e 16.2)
Seo 5.5 Engenharia Dirigida
por Modelos

Você também pode gostar