Top Banner
Componente de Software 1 Desenhando um componente de software
23

Componente de Software1 Desenhando um componente de software.

Apr 18, 2015

Download

Documents

Internet User
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Componente de Software1 Desenhando um componente de software.

Componente de Software 1

Desenhando um componente de software

Page 2: Componente de Software1 Desenhando um componente de software.

Componente de Software 2

O que é um componente?

1. Tem interface externa distinta da implementação interna

2. Interface definida de maneira contratual: assinatura, pré e pós-condições

3. Não é gerado em diversas cópias4. Demanda certo número de operações

do meio no qual é implantado

Page 3: Componente de Software1 Desenhando um componente de software.

Componente de Software 3

5. Provê certo número de operações demandado pelo meio no qual é implantado

6. Pode interagir com outros componentes

7. É vendido (ou distribuido) sob a forma executável (ao invés de código-fonte)

8. Pode oferecer publicações da operações que suporta

Page 4: Componente de Software1 Desenhando um componente de software.

Componente de Software 4

Similaridades e diferenças entre Componentes e Objetos

1. Ambas promovem o encapsulamento (interface x implementação)

2. A propriedade contratual das operações é semelhante

3. Classes geram objetos, mas cópias de componentes serão idênticas em seus valores internos (sem herança)

4. Na OO não consideramos o “meio” em torno de um objeto – Componentes consideram

Page 5: Componente de Software1 Desenhando um componente de software.

Componente de Software 5

5. Um componente executa somente em seu meio designado e provê operações controladas pelo meio (contador de referências em si próprio!)

6. Reutilização é característica comum7. Componentes são mais parecidos com

objetos do que com classes8. Interfaces de componentes atuam como

operações de classes

Page 6: Componente de Software1 Desenhando um componente de software.

Componente de Software 6

Exemplo de um Componente:

GerenciadorDeRecursos

Organização de uma conferência:funcionários, conferência,

projetores

Pool de caminhonetes:funcionários, caminhonetes

Page 7: Componente de Software1 Desenhando um componente de software.

Componente de Software 7

GerenciadorDeRecursos

GerenciadorDeRecursos

ServiçosPadrões

ServiçosDeTipoDeRecursos

ServiçosDeInstânciasDeRecursos

ServiçosDeGruposDeRecursos

ServiçosDeCalendário

Page 8: Componente de Software1 Desenhando um componente de software.

Componente de Software 8

<<interface>>

ServiçosDeTipoDeRecursoobterNúmeroTotal ( ): NúmeroInteiro obterNúmeroDeInstâncias (id: IdDoTipoDeRecurso): NúmeroInteiro obterNome (id: IdDoTipoDeRecurso, nome: string, out nome: string): Booleano especificarNome (id: IDDoTipoDeRecurso, nome: string): Booleano éPresente (nome: string): Booleano obterID (nome: String, out id: IDDoTipoDeRecurso): Booleano obterÉHumano (id: IDDoTipoDeRecurso): Booleano especificarÉHumano (id: IDDoTipoDeRecurso, éHumano): Booleano acrescentar (nome: string, out id: IDDoTipoDeRecurso): Booleano remover (id: IDDoTipoDeRecurso): Booleano ….

Page 9: Componente de Software1 Desenhando um componente de software.

Componente de Software 9

ServiçosDeInstânciaDeRecurso<<interface>>

ServiçosDeInstânciaDeRecurso

obterNúmeroTotal ( ): NúmeroInteiro obterNome (id: IdDaInstânciaDeRecurso, nome: string, out nome: string): Booleano especificarNome (id: IDDaInstânciaDeRecurso, nome: string): Booleano obterTipo (id: IDDaInstânciaDeRecurso, out tipo: IDDoTipoDeRecurso): Booleano especificarTipo (id: IDDaInstânciaDeRecurso, tipo: IDDoTipoDeRecurso): Booleano obterID (nome: string, id: IDDInstânciaDeRecurso): Booleano obterEndDeE-mail (id: IDDInstânciaDeRecurso): String …. acrescentar ( ): Booleano remover (id: IDDoTipoDeRecurso): Booleano removerTodas ( ) ….

Page 10: Componente de Software1 Desenhando um componente de software.

Componente de Software 10

ServiçosDeAgrupamentoDeRecursos

<<interface>>

ServiçosDeAgrupamentoDeRecursos

obterNúmeroTotal ( ): NúmeroInteiro obterNome (IdDGrupo: IDDoGrupoDeRecursos, out nome: string): Booleano especificarNome (IDDoGrupo: IDDoGrupoDeRecursos, nome: string): Booleano obterID (nome: string, out id: IDDoGrupoDeRecursos): Booleano obterHorário (idDoGrupo: IDDoGrupoDeRecurso, horário: HorárioData): Booleano …. ….

Page 11: Componente de Software1 Desenhando um componente de software.

Componente de Software 11

ServiçosDeCalendário

<<interface>>

ServiçosDeCalendário

obterMenorIncrementoDeTempo ( ): NúmeroInteiro especificarMenorIncrementoDeTempo (IncrmentoDeTempo: NúmeroInteiro …. ….

Page 12: Componente de Software1 Desenhando um componente de software.

Componente de Software 12

ServiçosPadrões

<<interface>>

ServiçosPadrões

obterContagemDeReferências ( ): NúmeroInteiro obterIdentificador (cliente: Cliente, nome: nomeDeInterface, out identificador:

IdentificadorDeInterface): Booleano desconectar(cliente: Cliente, identificador: IdentificadorDeInterface): Booleano

….

Page 13: Componente de Software1 Desenhando um componente de software.

Componente de Software 13

Desenho Interno de um Componente

“O desenho interno de componente não precisa ser Orientado a Objetos!”

Page 14: Componente de Software1 Desenhando um componente de software.

Componente de Software 14

GerenciadorDeRecursos:DomínioDeAplicação

ServiçoDeTipoDeRecurso

ServiçoDeInstânciaDe

Recurso

ServiçoDeAgrupamentoDeRecursos

ServiçoDeCalendário

DomínioDeNegócio

PacoteDeRecursos

PacoteDeRecursos

Page 15: Componente de Software1 Desenhando um componente de software.

Componente de Software 15

DomínioDeArquitetura IndependenteDePlataforma

ServiçosDeE-MailIndependentesDe

Plataforma

ServiçoDeBancoDeDados

IndependentesDePlataforma

DomínioDeArquitetura IndependenteDePlataforma

PacoteDeE-Mail

PacoteDeBancoDeDados

Page 16: Componente de Software1 Desenhando um componente de software.

Componente de Software 16

PacoteDeRecursos

InstânciaDeRecurso

endereçoEletrônico: EndereçoEletrônico

ItemDeRecurso

endereçoEletrônico: EndereçoEletrônico

TipoDeRecurso

/ id: IDDoTipoDeRecurso nome: String éHumano: Booleano …

novo (nome: String): Booleano - obterPróximoID: IDDoTipoDeRecursoobterTipoDeRecurso

(nome: string, out tipoDeRecurso: TipoDeRecurso): Booleano

0..* 0..1

0..*

1

Page 17: Componente de Software1 Desenhando um componente de software.

Componente de Software 17

O que um componente provê e requer

componenteEventosnotificados

Eventosdetectados

serviços oferecidos

serviços oferecidos

Page 18: Componente de Software1 Desenhando um componente de software.

Componente de Software 18

Componentes Leves ou PesadosDomínioDeAplicação

ServiçoDeTipoDeRecurso

ServiçoDeInstânciaDe

Recurso

ServiçoDeAgrupamentoDeRecursos

ServiçoDeCalendário

DomínioDeNegócio

PacoteDeRecursos

PacoteDeRecursos

DomínioDeArquitetura IndependenteDePlataforma

ServiçosDeE-MailIndependentesDe

Plataforma

ServiçoDeBancoDeDados

IndependentesDePlataforma

Page 19: Componente de Software1 Desenhando um componente de software.

Componente de Software 19

Vantagens do componente leve:

Menos dispendioso para ser construido

Sendo mais simples deverá ser mais confiável (tanto no início quanto na manutenção)

Não sobrecarregará a memória ou outros recursos

>> Coesão de domínio simples

Page 20: Componente de Software1 Desenhando um componente de software.

Componente de Software 20

Vantagens e desvantagens de usar componentes:

+ Eles são baratos+ Eles estão disponíveis+ Eles estão disponíveis no momento!- Eles talvez estejam praticamente

disponíveis no momento!+ Eles são maduros+ Podem incorporar idéias

“inovadoras” e “sofisticadas”

Page 21: Componente de Software1 Desenhando um componente de software.

Componente de Software 21

- Também estão disponíveis para os concorrentes

- Podem ser complexos demais para as tuas necessidades

- A personalização pode ser trabalhosa ou impossível

- Um componente intransigente pode requer mudanças em seu negócio

Page 22: Componente de Software1 Desenhando um componente de software.

Componente de Software 22

- Os componentes de negócio talvez não estejam disponíveis para ‘nichos’

+ Eles são mantidos por terceiros- Versões revisadas podem demorar

a chegar- Versões revisadas podem chegar

rápido demais

Page 23: Componente de Software1 Desenhando um componente de software.

Componente de Software 23

+ Os componentes seguem normas- Podem envolver diversos

distribuidores- O distribuidor poderá sair do

negócio