desenvolvimento orientado a componentes - deinf/ufmageraldo/dob/16componentes.pdf · padrão...

39
Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Desenvolvimento Orientado a Componentes

Upload: buitruc

Post on 20-Jan-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Curso de Especialização – DEINF - UFMA

Desenvolvimento Orientado a Objetos

Prof. Geraldo Braz Junior

Desenvolvimento Orientado a

Componentes

Page 2: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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

Component Based Software Engineering) é uma abordagem aodesenvolvimento de software que se baseia em reutilização de software 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 objetose podem ser considerados prestadores de serviço autônomo.

2

Page 3: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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 bemdefinidas;

Plataformas de componentes são compartilhados e reduzem os custos de desenvolvimento.

4

Page 5: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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

disponibilizados através de uma interface e todas as

interações entre componentes realizada através da

interface.

5

Page 6: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Problemas CBSE

Confiabilidade de componentes

Certificação de componentes - Quem vai certificar a

qualidade dos componentes?

Previsão de Propriedade Emergente- Como é possível

prever propriedades emergentes em relação aos

componentes?

Trade-off entre compromissos de Requisitos do sistema

com componentes disponíveis em mercado

6

Page 7: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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ções

em 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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Interfaces de Componentes

Provides int erfaceRequires int erface

Component

Defines the services

from the component’s

environment that it

uses

Defines the services

that are provided

by the component

to other components

10

Page 11: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Um componente Coletor de Dados

Provides int erfaceRequires int erface

Data collector

addSensor

removeSensor

star tSensor

stopSensor

testSensor

listAll

repor t

initialise

sensorManagement

sensorData

11

Page 12: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Modelos de Componentes

Um modelo de componente é uma definição de normas

para 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 interfaces

devem ser definidas e os elementos que devem ser

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

12

Page 13: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Elementos de um modelo de

componentes

Component model

InterfacesUsage

informationDeployment

and use

Interface

definition

Specific

inter faces

Composition

Naming

convention

Meta-data

access

Customisation

Packag ing

Documentation

Evolution

suppor t

13

Page 14: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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 de interfaces utilizadas para acessar as implementações de serviço.

14

Page 15: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Modelo de Serviços de Componentes

Platform services

AddressingInter face

definitionComponent

communications

Exception

management

Horizontal services

Security

Transaction

management

Concurrency

Component

management

Persistence

Resource

management

15

Page 16: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Componente de desenvolvimento para

reutilização

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

Um componente é mais provável de ser reutilizável, se associado a uma abstração de domínio estável (objeto de negó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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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 do componente.

Há um trade-off entre reusabilidade e usabilidade

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

No entanto, a reutilização é mais complexa

17

Page 18: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

O processo CBSE Quando reutilizar componentes, é essencial para fazer

trade-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 a mudançã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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

O processo CBSE

22

Requisitos Gerais do Sistema

Identificar Componentes

Candidatos

Alterar Requisitos de acordo com componentes identificadas

Projeto de Arquitetura

Identificar Componentes

Candidatas

Page 23: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

O processo de identificação de

componentes

23

Busca de Componentes

Seleção de Componentes

Validação de Componentes

Page 24: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Questões na identificação de

componentes Confiança:Você precisa ser capaz de confiar no fornecedor de um

componente. Na melhor das hipóteses, um componente nãoconfiável pode não funcionar como anunciado, na pior das hipó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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Composição de componentes

O processo de montagem de componentes para criar um

sistema. (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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Tipos de composição Composição seqüencial

componentes compostos são executados em seqüência. Isso envolvecompor 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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Tipos de composição

(a)

A A

B B

A B

(b) (c)

27

Page 28: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Composição através de um adaptador

O postCodeStripper componente é o adaptador que facilita a

composição seqüencial dos componentes addressFinder e

mapper.

31

address = addressFinder.location (phonenumber) ;

postCode = postCodeStripper.getPostCode (address) ;

mapper.displayMap(postCode, 10000) ;

Page 32: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Adaptador para coletor de dados

Data collector

addSensor

removeSensorstar tSensor

stopSensor

testSensor

listAll

repor t

initialise

sensorManagement

sensorData

Adaptersensor

star t

getdata

stop

32

Page 33: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Interface

Você tem que confiar na documentação do componente para

decidir 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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Foto composição biblioteca

Photo

Library

adaptorImage

Manager

getImage

User

Inter face

getCatalogEntry

addItem

retrieve

catEntry

34

Page 35: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

OCL

O Object Constraint Language (OCL) é destinado a definir

as 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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Descrição 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

Page 37: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

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: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Composição: relação de ganho Ao compor componentes, você pode encontrar conflitos entre

requisitos 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 requisitos

funcionais?

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

Quais serão as propriedades emergentes do sistema composto?

38

Page 39: Desenvolvimento Orientado a Componentes - DEINF/UFMAgeraldo/dob/16Componentes.pdf · Padrão padronização de componentes significa queum componente é usado em ... Remover métodos

Referências

39

Ian Sommerville, Engenharia de Software. 8 edição Tradução

das Notas de Aula disponibilizadas em http://www.cs.st-

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