39
7/23/2019 16 Component Es http://slidepdf.com/reader/full/16-component-es 1/39 Curso de Especialização – DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Desenvolvimento Orientado a Componentes

16 Component Es

Embed Size (px)

Citation preview

Page 1: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 1/39

Curso de Especialização – DEINF - UFMA

Desenvolvimento Orientado a Objetos

Prof. Geraldo Braz Junior

Desenvolvimento Orientado a

Componentes

Page 2: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 2/39

Introdução Engenharia de software baseada em componentes (CBSE – 

Component Based Software Engineering) é uma abordagem aodesenvolvimento de software que se baseia em reutilização desoftware através de componentes.

Ela surgiu a partir do fracasso do desenvolvimento orientadoa objetos para apoiar a reutilização eficaz.

Classes de objetos individuais são muito detalhadas e específicas.

Os componentes são mais abstratos que as classes de objetos

e podem ser considerados prestadores de serviço autônomo.

2

Page 3: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 3/39

Fundamentos CBSE Componentes independentes especificados por suas

interfaces.

Padrões de implementação de Componentes para facilitar a

integração de componentes.

Middleware que fornece suporte para a interoperabilidade.

Um processo de desenvolvimento que é orientada para a

reutilização.

3

Page 4: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 4/39

CBSE e princípios de projeto Além dos benefícios de reutilização, CBSE é baseado em

sólidos princípios de projeto de engenharia de software:

Os componentes são independentes, de modo nãointerferem uns com os outros;

Implementações de componentes são ocultadas;A comunicação ocorre através de interfaces bem

definidas;

Plataformas de componentes são compartilhados ereduzem os custos de desenvolvimento.

4

Page 5: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 5/39

Componente como um prestador de

serviços

O componente é uma entidade independente executável.Ele não tem que ser compilado antes de ser usado com

outros componentes.

Os serviços oferecidos por um componente sãodisponibilizados através de uma interface e todas as

interações entre componentes realizada através da

interface.

5

Page 6: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 6/39

Problemas CBSE

Confiabilidade de componentes

Certificação de componentes - Quem vai certificar a

qualidade dos componentes?

Previsão de Propriedade Emergente- Como é possívelprever propriedades emergentes em relação aos

componentes?

Trade-off entre compromissos de Requisitos do sistema

com componentes disponíveis em mercado

6

Page 7: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 7/39

Características

 

Padrão padronização 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 composição, documentação e implantação.

Independente Um componente deve ser independente - deve ser possível utilizá-lo e

implantá-lo sem ter que usar outros componentes específicos. Em situaçõesem que o componente precisa de serviços fornecidos externamente, estas

devem ser definidas de forma clara em um “require" a especificação de

interface.

Passível de

composição

Para um componente pode ser composto, todas as interações externas devem

ocorrer por meio de interfaces publicamente definidas. Além disso, deve

fornecer o acesso externo a informações sobre si próprio, como os seus

métodos e atributos.

7

Page 8: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 8/39

Características

 

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

capaz de operar como uma entidade autônoma sobre a plataforma, que

implementa o modelo de componente. Isso geralmente significa que o

componente é um componente binário que não precisa ser compilado antes de

ser implantado.

Documentado Componentes têm que ser devidamente documentados, para que os potenciais

utilizadores do componente possam decidir se eles atendam às suas

necessidades. A sintaxe e, idealmente, a semântica de todas as interfaces de

componentes devem ser especificados.

8

Page 9: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 9/39

Interfaces de Componentes Interface Forncecida

Define os serviços que são oferecidos pelo componente

Interface requerida

Define os serviços que especifica quais serviços devem ser

disponibilizados para que o componente possa executar

conforme especificado.

9

Page 10: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 10/39

Interfaces de Componentes

Provides int erfaceRequires int erface

ComponentDefines the servicesfrom the component’s

environment that it

uses

Defines the servicesthat are provided

 by the component

to other components

10

Page 11: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 11/39

Um componente Coletor de Dados

Provides int erfaceRequires int erface

Data collector 

addSensor 

removeSensor star tSensor 

stopSensor 

testSensor 

listAll

report

initialise

sensorManagement

sensorData

11

Page 12: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 12/39

Modelos de Componentes

Um modelo de componente é uma definição de normaspara documentação de componentes, execução e

implantação.

Exemplos de modelos de componentes Modelo EJB (Enterprise Java Beans)

Modelo COM + (. Modelo NET)

Corba

O modelo de componente especifica como as interfacesdevem ser definidas e os elementos que devem ser

incluídas em uma definição de interface.

12

Page 13: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 13/39

Elementos de um modelo de

componentes

Component model

Interfaces  Usage

information

Deployment

and use

Interface

definition

Specific

inter faces

Composition

 Nam ing

convention

Meta-data

access

Customisation

Packaging

Documentation

Evolution

suppor t

13

Page 14: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 14/39

Middleware Modelos de componentes são a base para o middleware que

fornece suporte para a execução de componentes.

Implementação do modelo de componentes fornece: Plataforma de serviços que permitem que componentes escritos de acordo

com o modelo possam se comunicar;

Serviços horizontais que sejam serviços independentes da aplicação utilizadapor diferentes componentes.

Para usar os serviços fornecidos por um modelo, os componentessão implantados em um container. Este é um conjunto deinterfaces utilizadas para acessar as implementações de serviço.

14

Page 15: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 15/39

Modelo de Serviços de Componentes

Platform services

Addressing  Inter face

definition

Component

communications

Exception

management

Horizontal services

Security

Transaction

management

Concurrency

Component

management

Persistence

Resource

management

15

Page 16: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 16/39

Componente de desenvolvimento para

reutilização

Componentes desenvolvidos para uma aplicação específica,normalmente têm de ser generalizado para torná-losreutilizáveis.

Um componente é mais provável de ser reutilizável, se

associado a uma abstração de domínio estável (objeto denegócio).

Por exemplo, em um hospital, abstrações estáveis 

de domínioestão associados com o objetivo fundamental – 

gerenciamento de enfermeiros, pacientes, tratamentos, etc

16

Page 17: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 17/39

Componente de desenvolvimento

para reutilização

Reutilização de componentes Deve refletir abstrações estáveis do domínio;

Deve ocultar a representação do Estado;

Deve ser tão independente quanto possível;

Deverá publicar exceções por meio da interface docomponente.

Há um trade-off entre reusabilidade e usabilidade

Quanto mais a interface é genérica, maior a capacidade dereutilização,

No entanto, a reutilização é mais complexa

17

Page 18: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 18/39

Mudanças para reutilização

Remover métodos de aplicação específica.

Mudar de nomes para torná-los geral.

Adicionar métodos para ampliar a cobertura.

Fazer tratamento de exceção consistente. Adicionar uma interface de configuração para a adaptação do

componente.

Integrar componentes necessários para reduzir as

dependências.

18

Page 19: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 19/39

Componentes de Sistemas Legados

Sistemas legados existentes que desempenham uma funçãoútil do negócio podem ser re-empacotados como

componentes para reutilização.

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

Page 20: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 20/39

Os componentes reutilizáveis O custo de desenvolvimento de componentes

reutilizáveis 

pode ser maior do que o custo de criação de

equivalentes específicos.

Este custo extra deve ser mantido pela organização e não

pelo projeto.

Componentes genéricos podem ser menos eficientes na

alocação de espaço e ter tempos de execução maiores do que

uma solução específica.

20

Page 21: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 21/39

O processo CBSE

Quando reutilizar componentes, é essencial para fazertrade-offs entre os requisitos ideais e os serviçosefetivamente prestados pelos componentesdisponíveis.

Trata-se de: Determinar o atendimento a todos os requisitos;

Componentes que possam ser modificados de acordo com amudanção de funcionalidade ou mudanças de funcionalidadesde acordo com os componentes disponíveis

Buscar novamente para descobrir se existem componentesmelhores que satisfaçam os requisitos revistos.

21

Page 22: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 22/39

O processo CBSE

22

RequisitosGerais doSistema

IdentificarComponentes

Candidatos

Alterar Requisitosde acordo comcomponentesidentificadas

Projeto deArquitetura

IdentificarComponentes

Candidatas

Page 23: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 23/39

O processo de identificação de

componentes

23

Busca deComponentes

Seleção deComponentes

Validação deComponentes

Page 24: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 24/39

Questões na identificação de

componentes

Confiança:Você precisa ser capaz de confiar no fornecedor de umcomponente. Na melhor das hipóteses, um componente nãoconfiável pode não funcionar como anunciado, na pior dashipóteses, ele pode violar a sua segurança.

Requisitos: Diferentes grupos de componentes irão satisfazerexigências diferentes.

Validação:

A especificação do componente pode não ser suficientementedetalhado para permitir testes abrangentes para ser

desenvolvido. Os componentes podem ter funções desnecessárias. Como você

pode testar se isso não irá interferir com o seu pedido?

24

Page 25: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 25/39

Composição de componentes

O processo de montagem de componentes para criar umsistema. (de compor)

A composição envolve a integração de componentes uns com

os outros e com a infra-estrutura componente.

Normalmente você tem que escrever “código cola” para

integrar componentes.

25

Page 26: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 26/39

Tipos de composição

Composição seqüencial componentes compostos são executados em seqüência. Isso envolve

compor as interfaces disponibilidades de cada componente.

Composição hierárquica

Um componente chama serviços de outro.

Composição do aditiva

as interfaces de dois componentes são colocadas juntas paracriar um novo componente.

26

Page 27: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 27/39

Tipos de composição

(a)

A   A

B B

A   B

(b) (c)

27

Page 28: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 28/39

Incompatibilidade de Interfaces

Incompatibilidade de parâmetro onde as operações têm o mesmo nome, mas são de diferentes

tipos.

Incompatibilidade Operação

onde os nomes das operações nas interfaces compostas são

diferentes.

Inconclusão de Operação

onde a interface provides de um componente é um subconjunto

da interface required de um outro componente

28

Page 29: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 29/39

Componentes Incompatíveis

addressFinder 

 phoneDatabase (string command)string location(string pn)

string owner (string pn)

string proper tyType (string pn)

mapper 

mapDB (string command)displayMap (string postCode, scale)

 printMap (string postCode, scale)

29

Page 30: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 30/39

Adaptor

Resolver o problema de incompatibilidade de componentes,conciliando as interfaces dos componentes, que são

compostos.

Diferentes tipos de adaptadores são necessários dependendo

do tipo de composição.

Um addressFinder e um mapeador (exemplo anterior)

podem ser compostos através de um adaptador que tira o

código postal de um endereço e passa isso para o componente

de mapeamento.

30

Page 31: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 31/39

Composição através de um adaptador

O postCodeStripper componente é o adaptador que facilita acomposição seqüencial dos componentes addressFinder e

mapper.

31

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

Page 32: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 32/39

Adaptador para coletor de dados

Data collector 

addSensor 

removeSensor 

star tSensor 

stopSensor 

testSensor 

listAll

repor t

initialise

sensorManagement

sensorData

Adapter sensor 

star t

getdata

stop

32

Page 33: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 33/39

Interface

Você tem que confiar na documentação do componente paradecidir se as interfaces que são sintaticamente compatíveis

são realmente compatíveis.

Considere uma interface de um componente Photolibrary:

33

public void addItem (Identifier pid ; Photograph p; CatalogEntry photodesc) ;public Photograph retrieve (Identifier pid) ;public CatalogEntry catEntry (Identifier pid) ;

Page 34: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 34/39

Foto composição biblioteca

Photo

Library

adaptor Image

Manager 

getImage

User 

Inter face

getCatalogEntry

addItem

retrieve

catEntry

34

Page 35: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 35/39

OCL

O Object Constraint Language (OCL) é destinado a definiras restrições que estão associadas com os modelos UML.

Baseia-se em torno da noção de especificação de condição de

pré e pós

35

Page 36: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 36/39

Descrição formal da biblioteca de fotos

usando OCL

-- The context keyword names the component to which the conditions applycontext 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 t rue after executionpost: 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

Page 37: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 37/39

PhotoLibrary Condições

Como especificado usando OCL:

Não 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

Page 38: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 38/39

Composição: relação de ganho

Ao compor componentes, você pode encontrar conflitos entrerequisitos funcionais e não funcionais, e os conflitos entre a

necessidade de entrega rápida e evolução do sistema.

Você precisa tomar decisões, tais como:

Qual a composição de componentes é eficaz para satisfazer os requisitosfuncionais?

Qual a composição de componentes permite mudar o futuro?

Quais serão as propriedades emergentes do sistema composto?

38

Page 39: 16 Component Es

7/23/2019 16 Component Es

http://slidepdf.com/reader/full/16-component-es 39/39

Referências

39

Ian Sommerville, Engenharia de Software. 8 edição Traduçãodas Notas de Aula disponibilizadas em http://www.cs.st-

andrews.ac.uk/~ifs/Books/SE8/Syllabuses/index.html