Você está na página 1de 39

Desenvolvimento Orientado a

Componentes
Curso de Especializao DEINF - UFMA
Desenvolvimento Orientado a Objetos
Prof. Geraldo Braz Junior

Introduo
Engenharia de software baseada em componentes (CBSE

Component Based Software Engineering) uma abordagem ao


desenvolvimento de software que se baseia em reutilizao de
software atravs de componentes.
Ela surgiu a partir do fracasso do desenvolvimento orientado
a objetos para apoiar a reutilizao eficaz.
Classes de objetos individuais so muito detalhadas e especficas.

Os componentes so mais abstratos que as classes de objetos

e podem ser considerados prestadores de servio autnomo.

Fundamentos CBSE
Componentes independentes especificados por suas

interfaces.
Padres de implementao de Componentes para facilitar a
integrao de componentes.
Middleware que fornece suporte para a interoperabilidade.
Um processo de desenvolvimento que orientada para a
reutilizao.

CBSE e princpios de projeto


Alm dos benefcios de reutilizao, CBSE baseado em

slidos princpios de projeto de engenharia de software:


Os componentes so independentes, de modo no
interferem uns com os outros;
Implementaes de componentes so ocultadas;
A comunicao ocorre atravs de interfaces bem
definidas;
Plataformas de componentes so compartilhados e
reduzem os custos de desenvolvimento.

Componente como um prestador de


servios
O componente uma entidade independente executvel.

Ele no tem que ser compilado antes de ser usado com


outros componentes.
Os servios oferecidos por um componente so
disponibilizados atravs de uma interface e todas as
interaes entre componentes realizada atravs da
interface.

Problemas CBSE
Confiabilidade de componentes

Certificao de componentes - Quem vai certificar a

qualidade dos componentes?


Previso de Propriedade Emergente- Como possvel
prever propriedades emergentes em relao aos
componentes?
Trade-off entre compromissos de Requisitos do sistema
com componentes disponveis em mercado

Caractersticas
Padro

padronizao de componentes significa que um componente que usado em


um processo CBSE tem de obedecer a algum modelo de componentes
padronizados. Este modelo pode definir as interfaces de componentes, o
componente de meta-dados, a composio, documentao e implantao.

Independente Um componente deve ser independente - deve ser possvel utiliz-lo e


implant-lo sem ter que usar outros componentes especficos. Em situaes
em que o componente precisa de servios fornecidos externamente, estas
devem ser definidas de forma clara em um require" a especificao de
interface.
Passvel de
Para um componente pode ser composto, todas as interaes externas devem
ocorrer por meio de interfaces publicamente definidas. Alm disso, deve
composio
fornecer o acesso externo a informaes sobre si prprio, como os seus
mtodos e atributos.

Caractersticas
Implantvel

Para ser implantado, um componente tem de ser auto-suficiente e deve ser


capaz de operar como uma entidade autnoma sobre a plataforma, que
implementa o modelo de componente. Isso geralmente significa que o
componente um componente binrio que no precisa ser compilado antes de
ser implantado.

Documentado Componentes tm que ser devidamente documentados, para que os potenciais


utilizadores do componente possam decidir se eles atendam s suas
necessidades. A sintaxe e, idealmente, a semntica de todas as interfaces de
componentes devem ser especificados.

Interfaces de Componentes
Interface Forncecida
Define os servios que so oferecidos pelo componente

Interface requerida
Define os servios que especifica quais servios devem ser

disponibilizados para que o componente possa executar


conforme especificado.

Interfaces de Componentes

Requires int erface


Defines the services
from the components
environment that it
uses

10

Provides int erface


Component

Defines the services


that are provided
by the component
to other components

Um componente Coletor de Dados


Requires int erface

Provides int erface


addSensor
removeSensor
star tSensor

sensorManagement
Data collector
sensorData

11

stopSensor
testSensor
initialise
repor t
listAll

Modelos de Componentes
Um modelo de componente uma definio de normas

para documentao de componentes, execuo e


implantao.
Exemplos de modelos de componentes
Modelo EJB (Enterprise Java Beans)
Modelo COM + (. Modelo NET)
Corba

O modelo de componente especifica como as interfaces

devem ser definidas e os elementos que devem ser


includas em uma definio de interface.
12

Elementos de um modelo de
componentes
Customisation
Naming
convention
Composition
Interface
definition

Specific
inter faces

Interfaces

Documentation
Meta-data
access

Usage
information
Component model

13

Packag ing

Evolution
suppor t

Deploy ment
and use

Middleware
Modelos de componentes so a base para o middleware que

fornece suporte para a execuo de componentes.


Implementao do modelo de componentes fornece:

Plataforma de servios que permitem que componentes escritos de acordo

com o modelo possam se comunicar;


Servios horizontais que sejam servios independentes da aplicao utilizada
por diferentes componentes.

Para usar os servios fornecidos por um modelo, os componentes

so implantados em um container. Este um conjunto de


interfaces utilizadas para acessar as implementaes de servio.

14

Modelo de Servios de Componentes


Horizontal services
Component
management

Transaction
management

Resource
management

Concurrency

Persistence

Security

Platform services
Addressing

15

Inter face
definition

Exception
management

Component
communications

Componente de desenvolvimento para


reutilizao
Componentes desenvolvidos para uma aplicao especfica,

normalmente tm de ser generalizado para torn-los


reutilizveis.
Um componente mais provvel de ser reutilizvel, se
associado a uma abstrao de domnio estvel (objeto de
negcio).
Por exemplo, em um hospital, abstraes estveis de domnio
esto associados com o objetivo fundamental
gerenciamento de enfermeiros, pacientes, tratamentos, etc

16

Componente de desenvolvimento
para reutilizao

17

Reutilizao de componentes
Deve refletir abstraes estveis do domnio;
Deve ocultar a representao do Estado;
Deve ser to independente quanto possvel;
Dever publicar excees por meio da interface do
componente.
H um trade-off entre reusabilidade e usabilidade
Quanto mais a interface genrica, maior a capacidade de
reutilizao,
No entanto, a reutilizao mais complexa

Mudanas para reutilizao


Remover mtodos de aplicao especfica.
Mudar de nomes para torn-los geral.
Adicionar mtodos para ampliar a cobertura.
Fazer tratamento de exceo consistente.
Adicionar uma interface de configurao para a adaptao do

componente.
Integrar componentes necessrios para reduzir as
dependncias.

18

Componentes de Sistemas Legados


Sistemas legados existentes que desempenham uma funo

til do negcio podem ser re-empacotados como


componentes para reutilizao.
Trata-se de escrita de um wrapper que implementa e prov
interfaces que acessam o sistema legado.
Apesar de uma abordagem relativamente custosa, a mesma
pode ser muito menos dispendiosa do que reescrever o
sistema legado.

19

Os componentes reutilizveis
O custo de desenvolvimento de componentes

reutilizveis pode ser maior do que o custo de criao de


equivalentes especficos.
Este custo extra deve ser mantido pela organizao e no
pelo projeto.
Componentes genricos podem ser menos eficientes na
alocao de espao e ter tempos de execuo maiores do que
uma soluo especfica.

20

O processo CBSE
Quando reutilizar componentes, essencial para fazer

trade-offs entre os requisitos ideais e os servios


efetivamente prestados pelos componentes
disponveis.
Trata-se de:

Determinar o atendimento a todos os requisitos;


Componentes que possam ser modificados de acordo com a

mudano de funcionalidade ou mudanas de funcionalidades


de acordo com os componentes disponveis
Buscar novamente para descobrir se existem componentes
melhores que satisfaam os requisitos revistos.

21

O processo CBSE
Requisitos
Gerais do
Sistema

22

Identificar
Componentes
Candidatos

Identificar
Componentes
Candidatas

Alterar Requisitos
de acordo com
componentes
identificadas

Projeto de
Arquitetura

O processo de identificao de
componentes

Busca de
Componentes

23

Seleo de
Componentes

Validao de
Componentes

Questes na identificao de
componentes
Confiana:Voc precisa ser capaz de confiar no fornecedor de um

componente. Na melhor das hipteses, um componente no


confivel pode no funcionar como anunciado, na pior das
hipteses, ele pode violar a sua segurana.
Requisitos: Diferentes grupos de componentes iro satisfazer
exigncias diferentes.
Validao:
A especificao do componente pode no ser suficientemente
detalhado para permitir testes abrangentes para ser
desenvolvido.
Os componentes podem ter funes desnecessrias. Como voc
pode testar se isso no ir interferir com o seu pedido?
24

Composio de componentes
O processo de montagem de componentes para criar um

sistema. (de compor)


A composio envolve a integrao de componentes uns com
os outros e com a infra-estrutura componente.
Normalmente voc tem que escrever cdigo cola para
integrar componentes.

25

Tipos de composio
Composio seqencial
componentes compostos so executados em seqncia. Isso envolve

compor as interfaces disponibilidades de cada componente.

Composio hierrquica
Um componente chama servios de outro.

Composio do aditiva
as interfaces de dois componentes so colocadas juntas para

criar um novo componente.

26

Tipos de composio
A

(a)

27

(b)

(c)

Incompatibilidade de Interfaces
Incompatibilidade de parmetro
onde as operaes tm o mesmo nome, mas so de diferentes

tipos.
Incompatibilidade Operao
onde os nomes das operaes nas interfaces compostas so

diferentes.
Inconcluso de Operao
onde a interface provides de um componente um subconjunto

da interface required de um outro componente

28

Componentes Incompatveis
string location(string pn)

phoneDatabase (string command)


addressFinder

string owner (string pn)


string proper ty Ty pe (string pn)

display Map (string postCode, scale)

mapDB (string command)


mapper

29

printMap (string postCode, scale)

Adaptor
Resolver o problema de incompatibilidade de componentes,

conciliando as interfaces dos componentes, que so


compostos.
Diferentes tipos de adaptadores so necessrios dependendo
do tipo de composio.
Um addressFinder e um mapeador (exemplo anterior)
podem ser compostos atravs de um adaptador que tira o
cdigo postal de um endereo e passa isso para o componente
de mapeamento.

30

Composio atravs de um adaptador


O postCodeStripper componente o adaptador que facilita a

composio seqencial dos componentes addressFinder e


mapper.
address = addressFinder.location (phonenumber) ;
postCode = postCodeStripper.getPostCode (address) ;
mapper.displayMap(postCode, 10000) ;

31

Adaptador para coletor de dados


sensorManagement

addSensor
removeSensor
star tSensor

star t
sensor

stop

getdata

32

Adapter

Data collector
sensorData

stopSensor
testSensor
initialise
repor t
listAll

Interface
Voc tem que confiar na documentao do componente para

decidir se as interfaces que so sintaticamente compatveis


so realmente compatveis.
Considere uma interface de um componente Photolibrary:
public void addItem (Identifier pid ; Photograph p; CatalogEntry photodesc) ;
public Photograph retrieve (Identifier pid) ;
public CatalogEntry catEntry (Identifier pid) ;

33

Foto composio biblioteca


getImage

addItem
adaptor
Photo
Library

retrieve
catEntry

getCatalogEntry
User
Inter face

34

Image
Manager

OCL
O Object Constraint Language (OCL) destinado a definir

as restries que esto associadas com os modelos UML.


Baseia-se em torno da noo de especificao de condio de
pr e ps

35

Descrio formal da biblioteca de fotos


usando OCL
-- The context keyword names the component to which the conditions apply
context addItem
-- The preconditions specify what must be true before execution of addItem
pre:
PhotoLibrary.libSize() > 0
PhotoLibrary.retrieve(pid) = null
-- The postconditions specify what is true after execution
post: libSize () = libSize()@pre + 1
PhotoLibrary.retrieve(pid) = p
PhotoLibrary.catEntry(pid) = photodesc
context delete
pre: PhotoLibrary.retrieve(pid) <> null ;
post: PhotoLibrary.retrieve(pid) = null
PhotoLibrary.catEntry(pid) = PhotoLibrary.catEntry(pid)@pre
PhotoLibrary.libSize() = libSize()@pre - 1
36

PhotoLibrary Condies
Como especificado usando OCL:
No deve haver uma fotografia na biblioteca com o mesmo

identificador como a fotografia para ser inscrito;


A biblioteca deve existir com pelo menos 1 item
Cada nova entrada aumenta o tamanho da biblioteca por 1;
Se voc recuperar uma foto passando um identificador, em
seguida voc recebe de volta a foto que voc adicionou;

37

Composio: relao de ganho


Ao compor componentes, voc pode encontrar conflitos entre

requisitos funcionais e no funcionais, e os conflitos entre a


necessidade de entrega rpida e evoluo do sistema.
Voc precisa tomar decises, tais como:
Qual a composio de componentes eficaz para satisfazer os requisitos

funcionais?
Qual a composio de componentes permite mudar o futuro?
Quais sero as propriedades emergentes do sistema composto?

38

Referncias
Ian Sommerville, Engenharia de Software. 8 edio Traduo

das Notas de Aula disponibilizadas em http://www.cs.standrews.ac.uk/~ifs/Books/SE8/Syllabuses/index.html

39

Você também pode gostar