Aula-04-04-11-EngSwOrientadaServicos.pdf

57
Engenharia de Software Orientada a Serviços Paulo Cesar Masiero Engenharia de Software

Transcript of Aula-04-04-11-EngSwOrientadaServicos.pdf

  • Engenharia de Software

    Orientada a Servios

    Paulo Cesar Masiero

    Engenharia de Software

  • 2

    Roteiro

    Contexto

    Arquiteturas Orientadas a Servios

    Engenharia de Servios

    Desenvolvimento de Software como Servio

    Teste de Servios

    Tpicos de Pesquisa

  • 3

    Roteiro

    Contexto

    Arquiteturas Orientadas a Servios

    Engenharia de Servios

    Desenvolvimento de Software como Servio

    Teste de Servios

    Tpicos de Pesquisa

  • 4

    Contexto

    Premissas do desenvolvimento de software tradicional (mundo fechado): O mundo externo ao sistema desenvolvido muda muito devagar e

    o software pode permanecer estvel por um longo perodo.

    Todos os requisitos das interaes do sistema com o mundo externo (fechado) podem ser previamente elicitados.

    As mudanas so feitas por meio de solicitaes que so organizadas por prioridades e em seguida implementadas, testadas e implantadas.

    As mudanas so prejudiciais qualidade do software e devem ser evitadas.

  • 5

    Contexto Cenrio real e atual:

    As premissas do desenvolvimento tradicional (mundo fechado) no so vlidas para muitos casos atualmente.

    H muitas aplicaes que funcionam em um mundo aberto, em que o ambiente muda constantemente e o software deve se adaptar e reagir dinamicamente a essas mudanas.

    No mundo aberto os sistemas podem localizar e utilizar funcionalidades dinamicamente, mesmo as que no estavam disponveis quando o software foi criado.

    As mudanas devem ser abraadas, pois so naturais e inevitveis.

  • Servios como componente

    reusvel So componentes reusveis, com baixo

    acoplamento, encapsulam funcionalidade

    discreta (que pode ser distribuda) e so

    acessados por meio de programas.

    Tem uma interface provides e no possui interface requires

    Geralmente no armazena estado.

    So usados em composies (ou aplicaes)

    6

  • 7

    Roteiro

    Contexto

    Arquiteturas Orientadas a Servios

    Engenharia de Servios

    Desenvolvimento de Software como Servio

    Teste de Servios

    Tpicos de Pesquisa

  • 8

    Arquiteturas Orientadas a Servios

    O servio o bloco de construo principal de um software orientado a servios

    Servios so mdulos independentes e auto-contidos que oferecem funcionalidades de

    negcio especficas.

    Os servios so descritos de forma padronizada, possuem interfaces publicadas e

    se comunicam com outros servios por meio de

    invocaes remotas.

  • 9

    Arquiteturas Orientadas a Servios

    Um servio pode assumir dois papis em uma arquitetura orientada a servios:

    Servidor/Provedor

    Prestador de um servio.

    Possui interface publicada com a descrio dos servios prestados.

    Cliente/Consumidor

    Solicita (consome) servios de um provedor.

  • 10

    Arquiteturas Orientadas a Servios

    Servios compartilham muitas caractersticas com os componentes de

    software:

    So auto-contidos

    So altamente reusveis

    So unidades de composio com interfaces bem definidas

    So fornecidos como caixa-preta

  • 11

    Arquiteturas Orientadas a Servios

    Existem algumas diferenas entre componentes e servios:

    Servios devem ser mais fracamente acoplados do que os componentes

    Os componentes podem ser instalados fisicamente na mquina de seus

    clientes/consumidores enquanto os servios

    so acessados apenas remotamente

  • 12

    Arquiteturas Orientadas a Servios

  • 13

    Servios Web

    Um Web Service um tipo de servio, isto , uma instncia de uma ideia mais geral de servio.

    Cada servio Web deve ser identificado por uma URI (Uniform Resource Identifier).

    A comunicao entre os servios Web ocorre via protocolos como o SOAP (Simple Object Access Protocol).

  • 14

    Servios Web

    As descries dos servios Web e suas interfaces so expressas por meio de um arquivo WSDL (Web Services Description Language).

    A composio de servios Web feita por meio de linguagens como a BPEL (Business Process Execution Language), mas podem ser usadas outras linguagens.

    Tanto SOAP quando WSDL e BPEL so baseados na linguagem XML

  • 15

    Exemplo

  • 16

    WSDL

    Tem a funo de descrever o web service.

    Informaes contidas no arquivo.wsdl:

    O que o servio faz.

    Como o consumidor pode invocar o servio.

    Formatos das mensagens.

    Tipos de dados envolvidos.

    etc.

  • 17

    DOCUMENTO WSDL

    DESCRIO ABSTRATA

    DESCRIO CONCRETA

    TYPES

    MESSAGES

    OPERATIONS

    OPERATIONS

    PORTTYPES

    SERVICES

    PORTS

    BINDINGS

    OPERATIONS

    Tipos de dados usados e

    definidos no documento WSDL

    Mensagens enviadas e recebidas

    Juntamente com suas partes

    (Parmetros de entrada/sada)

    Operaes disponibilizadas

    pelo servio

    Como o servio ser acessado

    na rede, atravs de qual protocolo

    Onde o servio est localizado p/

    acesso endereo do servio na rede

  • 18

  • 19

  • Exemplo

    Um sistema de informao em um carro

    fornece aos motoristas informaes sobre o

    clima, condies de trfego da estrada,

    informaes locais etc. Ele ligado ao rdio

    do carro para entregar ao um sinal a um

    canal especfico. O carro tem receptor GPS

    para descobrir sua posio e com base

    nessa posio recebe informao de

    servios como postos e restaurantes. O

    motorista pode especificar a linguagem

    desejada. 20

  • 21

    Roteiro

    Contexto

    Arquiteturas Orientadas a Servios

    Engenharia de Servios

    Desenvolvimento de Software como Servio

    Teste de Servios

    Tpicos de Pesquisa

  • 22

    Engenharia de servios o processo de desenvolvimento de

    servios para reuso nas aplicaes orientadas a servios.

    Os engenheiros devem assegurar que o servio desenvolvido representa uma abstrao reusvel que poderia ser til em diversos sistemas

    Esse processo inclui a documentao e registro do servios

  • 23

  • 24

    Engenharia de servios

    o processo de desenvolvimento de servios para reso em aplicaes

    orientadas a servios.

    Existem trs atividades principais

    Identificao de servio candidato

    Projeto de interface do servio

    Implementao e implantao de servio

  • 25

    Identificao de servio candidato

    Envolve a compreenso e anlise dos processos de negcio de um organizao

    para decidir quais servios reusveis so

    necessrios para apoiar os processos

    No existe uma frmula pronta para definir o que e o que no um servio

    O resultado do processo de identificao uma lista de servios candidatos e seus

    requisitos funcionais e no-funcionais

  • 26

    Identificao de servio candidato

    Trs tipos fundamentais de servios:

    Utilitrio

    De negcios

    De coordenao ou de processo

  • 27

    Identificao de servio candidato

    Servios podem ser orientados a entidades ou a tarefas

    Servios orientados a tarefas so os associados com alguma atividade, enquanto os orientados a entidade esto associados a alguma entidade do negcio.

    preciso identificar os requisitos funcionais e no-funcionais de cada servio candidato

  • 28

    Identificao de servio candidato

    A identificao de servios no simples, assim como no to simples decompor

    um sistema em objetos ou componentes.

    Existem mtodos de identificao de componentes a partir dos requisitos e

    modelos de anlise que podem ser

    utilizados na identificao de servios

  • 29

    Identificao de servio candidato

    Ao pensar em possveis candidatos a serem fornecidos como servios, algumas perguntas devem ser respondidas:

    1. Para um servio orientado a entidade, o servio associado a uma nica entidade lgica usada em diferentes processos de negcios? Quais operaes normalmente executadas sobre aquela entidade devem ser fornecidas?

  • 30

    Identificao de servio candidato

    2. Para um servio orientado a tarefas, a

    tarefa cumprida por diferentes pessoas na

    organizao? Elas estaro prontas a aceitar

    a inevitvel padronizao que ocorre

    quando um nico servio fornecido?

    3. O servio independente? Em que

    extenso ele depende de outros servios?

  • 31

    Identificao de servio candidato

    4 O servio precisa manter estado? Existe um banco de dados para manter este

    estado? Em geral servios que dependem

    de estado interno so menos reusveis.

    5 O servio poderia ser usado por clientes fora da organizao? Ele pode ser

    acessado interna e externamente?

  • 32

    Identificao de servio candidato

    6 Espera-se que diferentes consumidores do servio tenham diferentes requisitos

    no-funcionais? Se sim, isso sugere que

    mais de uma verso de um servio deva

    talvez ser implementada.

  • 33

    Projeto de interface de servio

    necessrio definir as operaes e os parmetros de cada servio selecionado

    na fase anterior

    Deve-se projetar a interface do servio para minimizar a troca de mensagens o maior nmero de informaes possveis

    deve ser passada de uma vez (Exemplo:

    Garom)

  • 34

    Projeto de interface de servio

    H trs estgios na especificao da interface:

    Projeto de interface lgica: identificao das operaes associadas ao servio, as entradas e as

    sadas, e as excees

    Projeto de mensagem: estruturao das mensagens enviadas e recebidas pelo servio

    Criao da interface: traduo do projeto lgico e das mensagens para uma descrio abstrata escrita em

    WSDL.

  • 35

    Projeto de interface de servio

    O estgio final do processo de projeto de servio traduzir o projeto de interface de

    servio em WSDL

    A traduo da especificao da interface para o WSDL pode ser feita manualmente,

    mas em geral os ambientes de

    desenvolvimento fazem isto

    automaticamente

  • 36

    Implementao e Implantao

    A implementao de um servio pode ser feita em diversas linguagens.

    A linguagem em que o servio desenvolvido no importa muito para o

    cliente final, pois a comunicao feita via

    rede e com protocolos padronizados

  • 37

    Implementao e Implantao

    Aps a implementao o servio deve ser publicado para acesso de seus

    consumidores

    Se o objetivo tornar o servio pblico para outras organizaes deve-se

    registr-lo em um registro de servios

  • 38

    Servios de sistemas legados

    Um dos usos mais importantes de servios a criao de wrappers em sistemas legados.

    Esses sistemas podem ento ser acessados por meio da Web e integrado

    com outras aplicaes, mesmo de forma

    heterognea

  • 39

    Roteiro

    Contexto

    Arquiteturas Orientadas a Servios

    Engenharia de Servios

    Desenvolvimento de Software como Servio

    Teste de Servios

    Tpicos de Pesquisa

  • 40

    Desenvolvimento de software

    como servio

    Baseia-se na idia de compor e configurar servios para criar um servio composto

    (composio).

    Os servios envolvidos em uma composio podem ser:

    criados especificamente para uma aplicao servios de negcios de uma empresa

    parceira

    reusados de um provedor externo

  • 41

    Desenvolvimento de software

    como servio

    Muitas empresas dedicam-se converso de aplicaes em servios. Com isso abre-se a possibilidade para ampliar o reuso dentro da empresa.

    Os servios tambm so utilizados de forma interorganizacional entre fornecedores confiveis.

    Em um cenrio mais amplo as empresas podem acessar mercados de servios para adquirir servios para suas composies.

  • 42

    Desenvolvimento de software

    como servio

    A composio de servios pode ser usada para integrar processos de negcios

    separados a fim de fornecer um processo

    integrado que oferea funcionalidades

    extensas e mais completas.

    Obs. No confundir com o termo software como servio usado para um tipo de modelo de negcio.

  • 43

    Desenvolvimento de software

    como servio

    Estgios no processo de construo de um servio composto (ou uma

    aplicao):

    1. Formular esboo de workflow

    2. Descobrir servios

    3. Selecionar servios

    4. Refinar workflow

    5. Criar programa de workflow

    6. Testar servio

  • 44

    Composio de servios

    Orquestrao

  • 45

    Composio de servios

    Coreografia (Colaborao)

  • Exemplo de composio

    Compartilhamento de recursos de alto desempenho.

    Duas organizaes com workflows separados que colaboram entre si.

    No exemplo usamos a linguagem grfica BPMN

    46

  • 47

  • 48

    Exemplo de processo

  • 49

    Composio de servios

    processo BPEL

  • 50

    BPEL

    Uma linguagem de especificao de composio de servios Web

    usada para compor um conjunto de servios Web em um fluxo de negcios e funciona basicamente como um cdigo de ligao (glue code).

    Possui mecanismos para especificar parceiros, variveis, atividades bsicas, estruturadas e de tratamento de dados.

    A linguagem tambm trata eventos e excees.

  • 51

    Roteiro

    Contexto

    Arquiteturas Orientadas a Servios

    Engenharia de Servios

    Desenvolvimento de Software como Servio

    Teste de Servios

    Tpicos de Pesquisa

  • 52

    Teste de servios

    Dificuldades e desafios

    Aplicaes orientadas a servios so altamente dinmicas a longo prazo no ser capaz de saber quais servios sero

    utilizados pelas aplicaes. Isto ser definido

    em tempo de execuo

    Os servios das composies esto sob o controle dos fornecedores

  • 53

    Teste de servios

    Dificuldades e desafios

    O comportamento no-funcional dos servios no depende apenas de como so usados nas

    aplicaes. O uso por parte de outros consumidores

    tambm influencia seu desempenho.

    O modelo de pagamento de servios pode tornar o teste uma atividade muito cara. Se o servio for

    gratuito, pode haver clusulas de quantidade de

    invocaes por perodo de tempo.

  • 54

    Teste de servios

    Dificuldades e desafios

    Servios dependente de estados podem ser afetados por outros consumidores.

    Servios esto em ambiente real de execuo (produo) e no esto em

    ambientes de teste.

  • 55

    Perspectivas

    Desenvolvedor/Fornecedor/Provedor

    Cliente/Integrador

    Certificador

    Usurio final

  • 56

    Roteiro

    Contexto

    Arquiteturas Orientadas a Servios

    Engenharia de Servios

    Desenvolvimento de Software como Servio

    Teste de Servios

    Tpicos de Pesquisa

  • 57

    Tpicos de Pesquisa

    Requisitos

    Especificao

    Integrao/Composio

    Registros de servios

    Teste

    Manuteno

    Monitorao

    Certificao