Vous êtes sur la page 1sur 0

Curso de Especializao DEINF - UFMA

Desenvolvimento Orientado a Objetos


Prof. Geraldo Braz Junior
Reuso
Reutilizao de Software
Na maioria das reas de engenharia de software, sistemas so
desenvolvidos pela composio de componentes
existentes que tenham sido utilizados em outros sistemas.
Atualmente, a engenharia de software tem sido mais focada
no desenvolvimento original
Mas para alcanar um software melhor, mais rapidamente e
com menor custo, precisamos adotar um processo de design
que se baseia na reutilizao de software.
2
Engenharia de Software baseada na
reutilizao
Aplicao do sistema de reutilizao
O conjunto de um sistema aplicativo pode ser reutilizado por
incorpor-lo sem mudanas em outros sistemas (reutilizao
COTS*) ou por famlias de aplicativos em desenvolvimento.
Reutilizao de componentes
Componentes de uma aplicao podem ser reutilizados para compor
outra aplicao
Reutilizao de objetos e funo
Os componentes de software que implementam um objeto nico e
bem definido ou a funo pode ser reutilizados.
3
COTS: commercial off-the-shelf Sistemas de Prateleira
Benefcios da Reutilizao
4
Aumento da confiabilidade
Reso de software, que tem sido experimentado e testado
em sistemas de trabalho, devem ser mais confivel do
que o novo software.
Reduo do risco de processo
Se o software existe, h menos incerteza nos custos de
reutilizao de software que no nos custos de
desenvolvimento. Particularmente verdadeiro quando os
componentes de software relativamente grande como
sub-sistemas so reutilizados.
O uso efetivo de especialistas
Especialistas no ficam fazendo trabalho repetitivo
Benefcios Reutilizao
5
Conformidade com os padres
Algumas normas, como padres de interface do usurio,
podem ser implementadas como um conjunto de normas
em componentes reutilizveis.
Desenvolvimento acelerado
Trazendo um sistema para ao mercado mais cedo
possvel muitas vezes estimar os custos de
desenvolvimento global. Reutilizao de software pode
acelerar a produo do porque o tempo de
desenvolvimento e validao podem ser reduzidos
Problemas na Reutilizao
6
Aumento dos custos de manuteno
Se o cdigo-fonte de um componente reusvel no estiver
disponvel, os custos de manuteno podem ser aumentados,
pois os elementos do sistema de reso pode tornar-se cada vez
mais incompatvel com alteraes no sistema.
Falta de suporte de ferramenta
Sindrome do no inventado aqui
Criao e Manuteno de uma biblioteca de componentes
Procura, compreenso e adaptao de componentes
reusveis

O panorama reutilizao
Embora a reutilizao muitas vezes simplesmente pensar
em como a reutilizar componentes no sistema, existem
muitas abordagens diferentes para fazer reutilizao
O reaproveitamento possvel em uma escala de nveis que
vo desde funes simples at sistemas completos
O panorama da reutilizao abrange toda a gama de tcnicas
de reaproveitamento possvel.
7
O panorama reutilizao
Design
patterns
Component-based
development
Component
frameworks
Service-oriented
systems
COTS
integ ration
Application
product lines
Legacy system
wrapping
Program
libraries
Program
generators
Aspect-oriented
software development
Configurable ver tical
applications
8
Tipos de Reuso
Design Patterns Abstraes genricas que ocorrem ao longo das
aplicaes aplicativos
Desenvolvimento baseado
em componentes
Os sistemas so desenvolvidos pela integrao de
componentes (colees de objetos) que atendem aos
padres do modelo de componente
Frameworks de aplicaes Colees de classes abstratas e concretas que podem
ser adaptadas e estendida para criar sistemas de
aplicativos.
Empacotamento de
sistemas legados
Os sistemas legados que pode ser envoltos por uma
camada que define um conjunto de interfaces e
proporciona o acesso a estes sistemas legados atravs
dessas interfaces.
Sistemas orientados a
servios
Os sistemas so desenvolvidos pela ligao de servios
compartilhados que podem ser fornecidos
externamente.
9
Tipos de Reuso

Linhas de Produtos de
Aplicao
Um tipo de aplicativo generalizado em torno de uma
arquitetura comum para que possam ser adaptadas de
maneiras diferentes para clientes diferentes.
Integrao COTS Os sistemas so desenvolvidos pela integrao dos
sistemas aplicativos existentes.
Configurao de sistemas
Verticais
Um sistema genrico projetado de modo que ele
possa ser configurado para as necessidades de clientes
especficos do sistema.
Bibliotecas do Programa Conjunto de Classes e Funes
Geradores de Programa Um sistema que capaz de gerar outro sistema
especfico
Desenvolvimento de
software orientado a
aspectos
Componentes compartilhados integrados em uma
aplicao em diferentes lugares quando o programa
compilado
10
Planejamento para Reutilizao
O cronograma de desenvolvimento do software.
O tempo de vida do software esperado.
Competncias e experincia da equipe de desenvolvimento.
A criticidade do software e seus requisitos no-funcionais.
O domnio de aplicao.
A plataforma de execuo do software.
11
Reutilizao conceitual
Quando se reutiliza componentes pr-construdos necessrio
seguir as decises de design feitas pelo desenvolvedor original
do componente.
Isto pode limitar as possibilidades de reutilizao.
No entanto, uma forma mais abstrata de reuso a reutilizao
do conceito quando uma determinada abordagem descrita de
uma maneira independente de aplicao e uma aplicao
ento desenvolvida.
As duas principais abordagens para a reutilizao de conceito
so:
Design patterns (ou padres de projeto);
Geradores Automticos
12
Os padres de projeto
Um padro de projeto uma forma de reutilizar um
conhecimento abstrato sobre um problema e sua soluo.
Um padro uma descrio do problema e da essncia da sua
soluo.
Deve ser suficientemente abstrata para ser reutilizado em
diferentes contextos.
Padres muitas vezes dependemde caractersticas de objetos,
como herana e polimorfismo.
13
Elementos de um Padro
Nome
Um identificador padro significativo.
Descrio do problema.
Soluo descrio.
No um projeto concreto, mas um modelo para uma soluo
de design que pode ser instanciado em diferentes maneiras.
Consequncias
Os resultados e trade-offs da aplicao do modelo.
14
Mltiplos visualizadores (observer)
15
O padro Observer
Nome
Observer.
Descrio
Separa a exibio do estado do objeto a partir do prprio objeto.
Descrio do problema
Usado quando vrios monitores de estado so necessrios.
Descrio da soluo
Veja slide com a descrio UML.
Consequncias
Otimizaes para melhorar o desempenho de exibio so impraticveis.
16
O padro Observer
17
Geradores Automticos
Geradores Programa envolvem a reutilizao de padres e
algoritmos padro.
Estes so incorporados no gerador e parametrizados por
comandos do usurio. Um programa, ento, gerado
automaticamente.
possvel utilizar quando abstraes do domnio e
mapeamento para cdigo executvel podem ser identificados.
Uma linguagem de domnio especfico utilizado para
compor e controlar essas abstraes.
18
Tipos de geradores automticos
Tipos
Geradores de aplicativos para sistemas comerciais;
Parser e geradores de analisadores lxicos para o
processamento da linguagem; Lex/Yacc Flex/Bison
Geradores de cdigo em ferramentas CASE. (Astah,
MDA)
Aplicabilidade pequena dado que limitado por um
nmero relativamente pequeno de domnios de
aplicao.
Para usurios finais, os gerados facilitam o
desenvolvimento
19
Reutilizao atravs da gerao
automtica
20
Descrio da
Aplicao
Domnio
Telas
Gerador de
Programa
Conhecimento de Domnio da
Aplicao
Programa
Gerado
Banco de Dados
Desenvolvimento Orientada a Aspectos
Aborda um problema de engenharia de software - a
separao de assuntos (funcionalidades).
Os assuntos so muitas vezes simplesmente
funcionalidades transversais (afetam todo os
sistema) - por exemplo, todos os componentes podem
monitorar sua prpria operao, todos os componentes
podem ter para manter a segurana, etc
Assuntos transversais so implementados como
aspectos e so dinamicamente ligados em um
programa (pontos de juno).
21
Desenvolvimento Orientado a Aspectos
22
Frameworks de aplicaes
Frameworks so um projeto sub-sistema composto por uma
coleo de classes abstratas e concretas e as interfaces
(chamadas) entre eles.
O sub-sistema implementado pela adio de componentes
para preencher as partes do projeto e, instanciando as classes
abstratas do framework.
23
Classes Framework
Frameworks de infra-estrutura do sistema
Apoiar o desenvolvimento de componentes de infraestruturas,
tais como comunicaes, interfaces de usurio e compiladores.
Middleware
Padres e classes que oferecem suporte comunicao de
componentes e intercmbio de informaes.
Frameworks de aplicaes empresariais
Apoiar o desenvolvimento de tipos especficos de aplicao, tais
como telecomunicaes ou sistemas financeiros.
24
Estendendo Frameworks
Frameworks so genricos e so estensveis para criar
uma aplicao mais especfica ou sub-sistema.
Estender um framework engloba:
Adicionar classes concretas que herdam as operaes a partir de
classes abstratas no framework;
Adicionar mtodos
Problema com frameworks a sua complexidade, o que
significa que ele leva muito tempo para us-los
eficazmente.
25
Model View Controller
Framework de infra-estrutura para o projeto grfico.
Permite a vrias apresentaes de um objeto separado e
interaes com essas apresentaes.
Framework MVC envolve a instanciao de uma srie de
padres (como discutido anteriormente no conceito de
reutilizao).
26
Model-view-controller
27
Reuso de Sistemas de Aplicao
Consiste na reutilizao de sistemas aplicativo
inteiro seja por configurar um sistema para um
ambiente ou pela integrao de dois ou mais
sistemas para criar uma nova aplicao.
Dois enfoques abordados aqui:
COTS
Produtos de linha.
28
Reutilizao de produtos COTS
COTS Commercial Off-the-shelf.
so normalmente sistemas aplicativos completos que oferecem
uma API (Application Programming Interface).
A construo de sistemas atravs da integrao de
grandes sistemas COTS agora uma estratgia de
desenvolvimento vivel para alguns tipos de sistemas, tais
como sistemas de comrcio eletrnico.
O principal benefcio o desenvolvimento rpido de
aplicativos e menores custos de desenvolvimento.
29
Projeto de escolha de COTS
Quais so os produtos COTS oferecem a funcionalidade mais
adequada?
Podemhaver vrios produtos similares que podem ser
utilizados.
Como os dados sero trocados?
Produtos de uso individual das suas estruturas de dados prprias
e formatos.
Quais as caractersticas do produto sero realmente usadas?
A maioria dos produtos tem mais funcionalidades do que o
necessrio. Voc deve tentar negar o acesso a funcionalidades
no utilizadas.
30
COTS reutilizao
Client
Web browser
E-mail system
Server
E-commerce
system
Ordering and
invoicing system
E-mail system
Adaptor
Adaptor
31
COTS reutilizao
No cliente, o padro de e-mail e programas de navegao na
web so usados.
No servidor, uma plataforma de comrcio eletrnico tem
que ser integrada com um sistema j existente de ordenao.
Isso envolve a escrita de um adaptador para que possam trocar
dados.
Um sistema de e-mail tambm est integrado ao gerar e-mails
para os clientes. Isso tambm requer um adaptador para receber
dados do sistema de faturamento de pedidos.
32
Reuso: COTS problemas
A falta de controle sobre as funcionalidade e desempenho
sistemas COTS podem ser menos eficazes do que parecem
Interoperabilidade
Diferentes sistemas COTS podem fazer suposies diferentes
que significa a integrao difcil
Sem controle sobre a evoluo do sistema
Suporte dos fornecedores COTS
fornecedores COTS pode no oferecer suporte durante a vida
til do produto
33
Produtos de Linha
Linhas de produto de software ou famlias de aplicao
com funcionalidades genricas que podem ser adaptados
e configurados para uso em um contexto especfico.
A adaptao pode envolver:
Componente e configurao do sistema;
Adicionar novos componentes ao sistema;
Seleo de uma biblioteca de componentes j existentes;
Modificar componentes para atender as novas exigncias.
34
Configurao
Implantao de configurao
Um sistema genrico configurado por incorporao de
conhecimento dos requisitos do cliente e processos de negcios.
O software em si no alterado.
Design de configurao de tempo
Um cdigo comum genrico adaptado e modificado de acordo
com as exigncias dos clientes em particular.
35
Organizao do sistema ERP
36
Sistemas ERP
Um Enterprise Resource Planning (ERP) um sistema
genrico que suporta processos comuns de negcios
Estes so amplamente utilizados em grandes empresas - que
representam provavelmente a forma mais comum de
reutilizao de software.
O ncleo genrico adaptado, incluindo mdulos e ao
incorporar o conhecimento dos processos de negcio e
regras.
37
Referncias
38
Ian Sommerville, Engenharia de Software. 8 edio Traduo
das Notas de Aula disponibilizadas em http://www.cs.st-
andrews.ac.uk/~ifs/Books/SE8/Syllabuses/index.html

Vous aimerez peut-être aussi