Engenharia de Software Orientada a Serviços

Documentos relacionados
Engenharia de Software Orientada a Serviços

Aula 12 -QS -Engenharia de SW Orientada a Serviço

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Introdução a Web Services

Web Services - Definição. Web Services - Introdução. Universidade Federal de Santa Catarina. DSOOII Web Services

Web Services. Tópicos. Introdução (1/3) CONTEXTO HISTÓRICO WEB SERVICES Conclusões

Por que é importante?

Reuso de Software Aula Maio 2012

DESENVOLVIMENTO BASEADO EM COMPONENTES

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

Engenharia de Software. Projeto de Arquitetura

contidos na descrição do serviço para localizar, contactar e chamar o serviço. A figura mostra os componentes e a interação entre eles.

Web Services. Sistemas Distribuídos Marcos Costa

Desenvolvimento de Software Baseado em Componentes. Paulo C. Masiero

CBSE. Independência e Padronização. Características da CBSE. Fundamentos da CBSE. Middleware e Processo 22/05/2013

Sistemas distribuídos. Prof. Emiliano Monteiro

Desenvolvimento de Aplicações Distribuídas

GERENCIAMENTO BASEADO NA WEB. Baseado em slides gentilmente cedidos pelo Prof. João Henrique Kleinschmidt da UFABC.

Desenvolvimento de Software Baseado em Componentes. Paulo C. Masiero

PMR3507 Fábrica digital

Projeto. Observatório Nacional de Clima e Saúde

INFORMÁTICA. Instruções: Para responder às questões de números 71 e 72, considere o texto a seguir:

Visão Geral do RUP (Rational Unified Process)

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

O que é um sistema distribuído?

Projeto Integrador. <Projeto Integrador> Documento Visão. Versão <1.0>

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

STD29006 Sistemas Distribuídos

Sistemas Distribuídos

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

Grupo I [7v] 1. [1,0] Apresente o conteúdo do IDL relativo a este programa. Assuma PROGRAM=62015 e VERSION=1.

Agenda do Curso. Reuso de Software. Agenda da Aula. Tipos de Reuso. Vantagens de Reuso. Reuso de Software. Eduardo Figueiredo

SERVIÇOS WEB. Frankley Gustavo F. Mesquita, Tamiris Souza Fonseca. 27 de junho de 2016

Técnicas para Reutilização de Software Prof. Eduardo Figueiredo Estagiário: Johnatan Oliveira

REUSO E REUSABILIDADE

Delimitar claramente o escopo do projeto Estimar custo, tempo e retorno do investimento (feasibility)

Concepção lança o projeto

RUP RATIONAL UNIFIED PROCESS CONCEITOS CHAVES. Prof. Fabiano Papaiz IFRN

Publicação Versão 2.6.0

ENGENHARIA DE SOFTWARE. Aula 17 Reuso de software

Projeto de Arquitetura

MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO

GERENCIAMENTO DE DADOS Exercícios

Introdução à Gestão de Processos de Negócios

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

Arquitetura Orientada a Serviços A Evolução de Estruturas Complexas a partir de Estruturas Simples. Neil Paiva Tizzo GEINFO

Sistemas Distribuídos

Programação Distribuída. Arquiteturas

Técnicas para Reutilização de Software

Comentários: Desenvolvimento de Sistemas Rogério Araújo

! Introdução. " Motivação para Processos de Software. ! Processo Unificado (USDP) " Definições " RUP x USDP " Características do Processo Unificado

5 Conclusão e trabalhos futuros

Invocação Remota. Prof. Leonardo Barreto Campos. 1/29

5 Arquitetura Proposta

Análise e Projeto de Software

TESTES DE SOFTWARE Lista de Exercício 02. Luiz Leão

4/14/11. Processos de Engenharia de Requisitos. Engenharia de requisitos. Elicitação e análise. A espiral de requisitos

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

Sérgio Koch Van-Dall

Linguagem de Programação I Apresentação da Disciplina

FECWEB Visão v 1.0. Histórico das Revisões Data Versão Descrição Autor 23/05/2006 v Fabiana Marçal Tatiana Santa Clara Wagner Schau

Introdução a Computação em Nuvem

Princípios da Engenharia de Software aula 03

Manutenção Leitura: Sommerville; Pressman

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

Protótipo de Protocolo de Aplicação para Troca de Documentos da Área Extra Judicial. Acadêmico: Fabrício Bento Orientador: Paulo Fernando da Silva

SERVIÇO CONTRATO Especificação das operações de Serviço

Principais Funcionalidades

Análise e projeto de sistemas

Análise de Requisitos

5 Processo de Reificação e de Desenvolvimento com ACCA

Engenharia de Software

Tópicos da Aula. A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. Introdução à UML e Diagrama de Casos de Uso.

Guia do Processo de Teste Metodologia Celepar

ARIES. Visão Geral da Metodologia Aries

Estilos Arquiteturais

Capítulo 5 Modelação do Sistema 1

2ª edição. Daniel Adorno Gomes. Novatec

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software

Manual de Integração Consulta Automática de NFS-e

Atualizações do sistema Adendo do usuário

CAPÍTULO 36 Como utilizar os serviços da Web

Engenharia de Software

Engenharia de Software

PROJETO DE ARQUITETURA (PARTE 2)

Business Process Modeling and Notation

Introdução a Web Services

Daniel Wildt

Introdução à Análise e Projeto de Sistemas

Frameworks funcionais para JSF que proporciona o desenvolvimento de aplicações computacionais WEB

ENGENHARIA DE SOFTWARE. Introdução

Rede de computadores Cliente- servidor. Professor Carlos Muniz

O que se espera para o futuro dos Web Services? As tecnologias são respectivamente JSON e REST.

Classes de Projeto. Prof. Anderson Cavalcanti UFRN-CT-DCA

Introdução a Computação em Nuvem

Versão: 1.0 Doc Manager

Processos de Software

Introdução a UML (Unified Modeling Language)

2

Transcrição:

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

Roteiro Contexto Arquiteturas Orientadas a Serviços Engenharia de Serviços Desenvolvimento de Software como Serviço Teste de Serviços Tópicos de Pesquisa 2

Roteiro Contexto Arquiteturas Orientadas a Serviços Engenharia de Serviços Desenvolvimento de Software como Serviço Teste de Serviços Tópicos de Pesquisa 3

Contexto Premissas do desenvolvimento de software tradicional ( mundo fechado ): O mundo externo ao sistema desenvolvido muda muito devagar e o software pode permanecer estável por um longo período. Todos os requisitos das interações do sistema com o mundo externo (fechado) podem ser previamente elicitados. As mudanças são feitas por meio de solicitações que são organizadas por prioridades e em seguida implementadas, testadas e implantadas. As mudanças são prejudiciais à qualidade do software e devem ser evitadas. 4

Contexto Cenário real e atual: As premissas do desenvolvimento tradicional (mundo fechado) não são válidas para muitos casos atualmente. Há muitas aplicações que funcionam em um mundo aberto, em que o ambiente muda constantemente e o software deve se adaptar e reagir dinamicamente a essas mudanças. No mundo aberto os sistemas podem localizar e utilizar funcionalidades dinamicamente, mesmo as que não estavam disponíveis quando o software foi criado. As mudanças devem ser abraçadas, pois são naturais e inevitáveis. 5

Serviços como componente reusável São componentes reusáveis, com baixo acoplamento, encapsulam funcionalidade discreta (que pode ser distribuída) e são acessados por meio de programas. Tem uma interface provides e não possui interface requires Geralmente não armazena estado. São usados em composições (ou aplicações) 6

Roteiro Contexto Arquiteturas Orientadas a Serviços Engenharia de Serviços Desenvolvimento de Software como Serviço Teste de Serviços Tópicos de Pesquisa 7

Arquiteturas Orientadas a Serviços O serviço é o bloco de construção principal de um software orientado a serviços Serviços são módulos independentes e autocontidos que oferecem funcionalidades de negócio específicas. Os serviços são descritos de forma padronizada, possuem interfaces publicadas e se comunicam com outros serviços por meio de invocações remotas. 8

Arquiteturas Orientadas a Serviços Um serviço pode assumir dois papéis em uma arquitetura orientada a serviços: Servidor/Provedor Prestador de um serviço. Possui interface publicada com a descrição dos serviços prestados. Cliente/Consumidor Solicita (consome) serviços de um provedor. 9

Arquiteturas Orientadas a Serviços Serviços compartilham muitas características com os componentes de software: São auto-contidos São altamente reusáveis São unidades de composição com interfaces bem definidas São fornecidos como caixa-preta 10

Arquiteturas Orientadas a Serviços Existem algumas diferenças entre componentes e serviços: Serviços devem ser mais fracamente acoplados do que os componentes Os componentes podem ser instalados fisicamente na máquina de seus clientes/consumidores enquanto os serviços são acessados apenas remotamente 11

Arquiteturas Orientadas a Serviços 12

Serviços Web Um Web Service é um tipo de serviço, isto é, é uma instância de uma ideia mais geral de serviço. Cada serviço Web deve ser identificado por uma URI (Uniform Resource Identifier). A comunicação entre os serviços Web ocorre via protocolos como o SOAP (Simple Object Access Protocol). 13

Serviços Web As descrições dos serviços Web e suas interfaces são expressas por meio de um arquivo WSDL (Web Services Description Language). A composição de serviços 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 são baseados na linguagem XML 14

Exemplo 15

WSDL Tem a função de descrever o web service. Informações contidas no arquivo.wsdl: O que o serviço faz. Como o consumidor pode invocar o serviço. Formatos das mensagens. Tipos de dados envolvidos. etc. 16

DOCUMENTO WSDL DESCRIÇÃO ABSTRATA TYPES MESSAGES PORTTYPES OPERATIONS Tipos de dados usados e definidos no documento WSDL Mensagens enviadas e recebidas Juntamente com suas partes (Parâmetros de entrada/saída) Operações disponibilizadas pelo serviço OPERATIONS DESCRIÇÃO CONCRETA BINDINGS OPERATIONS SERVICES PORTS Como o serviço será acessado na rede, através de qual protocolo Onde o serviço está localizado p/ acesso endereço do serviço na rede 17

<?xml version="1.0" encoding="utf-8" standalone="no"?> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.labes.br/infotempo/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/xmlschema" name="infotempo" targetnamespace="http://www.labes.br/infotempo/"> <wsdl:types> <xsd:schema targetnamespace="http://www.labes.br/infotempo/"> <xsd:element name="obterinfotempo"> <xsd:complextype> <xsd:sequence> <xsd:element name="cep" type="xsd:string"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="obterinfotemporesponse"> <xsd:complextype> <xsd:sequence> <xsd:element name="clima" type="xsd:string"/> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:schema> </wsdl:types> 18

<wsdl:message name="obterinfotemporequest"> <wsdl:part element="tns:obterinfotempo" name="parameters"/> </wsdl:message> <wsdl:message name="obterinfotemporesponse"> <wsdl:part element="tns:obterinfotemporesponse" name="parameters"/> </wsdl:message> <wsdl:porttype name="infotempointerface"> <wsdl:operation name="obterinfotempo"> <wsdl:input message="tns:obterinfotemporequest"/> <wsdl:output message="tns:obterinfotemporesponse"/> </wsdl:operation> </wsdl:porttype> 19

Exemplo Um sistema de informação em um carro fornece aos motoristas informações sobre o clima, condições de tráfego da estrada, informações locais etc. Ele é ligado ao rádio do carro para entregar ao um sinal a um canal específico. O carro tem receptor GPS para descobrir sua posição e com base nessa posição recebe informação de serviços como postos e restaurantes. O motorista pode especificar a linguagem desejada. 20

Roteiro Contexto Arquiteturas Orientadas a Serviços Engenharia de Serviços Desenvolvimento de Software como Serviço Teste de Serviços Tópicos de Pesquisa 21

Engenharia de serviços É o processo de desenvolvimento de serviços para reuso nas aplicações orientadas a serviços. Os engenheiros devem assegurar que o serviço desenvolvido representa uma abstração reusável que poderia ser útil em diversos sistemas Esse processo inclui a documentação e registro do serviços 22

23

Engenharia de serviços É o processo de desenvolvimento de serviços para reúso em aplicações orientadas a serviços. Existem três atividades principais Identificação de serviço candidato Projeto de interface do serviço Implementação e implantação de serviço 24

Identificação de serviço candidato Envolve a compreensão e análise dos processos de negócio de um organização para decidir quais serviços reusáveis são necessários para apoiar os processos Não existe uma fórmula pronta para definir o que é e o que não é um serviço O resultado do processo de identificação é uma lista de serviços candidatos e seus requisitos funcionais e não-funcionais 25

Identificação de serviço candidato Três tipos fundamentais de serviços: Utilitário De negócios De coordenação ou de processo 26

Identificação de serviço candidato Serviços podem ser orientados a entidades ou a tarefas Serviços orientados a tarefas são os associados com alguma atividade, enquanto os orientados a entidade estão associados a alguma entidade do negócio. É preciso identificar os requisitos funcionais e não-funcionais de cada serviço candidato 27

Identificação de serviço candidato A identificação de serviços não é simples, assim como não é tão simples decompor um sistema em objetos ou componentes. Existem métodos de identificação de componentes a partir dos requisitos e modelos de análise que podem ser utilizados na identificação de serviços 28

Identificação de serviço candidato Ao pensar em possíveis candidatos a serem fornecidos como serviços, algumas perguntas devem ser respondidas: 1. Para um serviço orientado a entidade, o serviço é associado a uma única entidade lógica usada em diferentes processos de negócios? Quais operações normalmente executadas sobre aquela entidade devem ser fornecidas? 29

Identificação de serviço candidato 2. Para um serviço orientado a tarefas, a tarefa é cumprida por diferentes pessoas na organização? Elas estarão prontas a aceitar a inevitável padronização que ocorre quando um único serviço é fornecido? 3. O serviço é independente? Em que extensão ele depende de outros serviços? 30

Identificação de serviço candidato 4 O serviço precisa manter estado? Existe um banco de dados para manter este estado? Em geral serviços que dependem de estado interno são menos reusáveis. 5 O serviço poderia ser usado por clientes fora da organização? Ele pode ser acessado interna e externamente? 31

Identificação de serviço candidato 6 Espera-se que diferentes consumidores do serviço tenham diferentes requisitos não-funcionais? Se sim, isso sugere que mais de uma versão de um serviço deva talvez ser implementada. 32

Projeto de interface de serviço É necessário definir as operações e os parâmetros de cada serviço selecionado na fase anterior Deve-se projetar a interface do serviço para minimizar a troca de mensagens o maior número de informações possíveis deve ser passada de uma vez (Exemplo: Garçom) 33

Projeto de interface de serviço Há três estágios na especificação da interface: Projeto de interface lógica: identificação das operações associadas ao serviço, as entradas e as saídas, e as exceções Projeto de mensagem: estruturação das mensagens enviadas e recebidas pelo serviço Criação da interface: tradução do projeto lógico e das mensagens para uma descrição abstrata escrita em WSDL. 34

Projeto de interface de serviço O estágio final do processo de projeto de serviço é traduzir o projeto de interface de serviço em WSDL A tradução da especificação da interface para o WSDL pode ser feita manualmente, mas em geral os ambientes de desenvolvimento fazem isto automaticamente 35

Implementação e Implantação A implementação de um serviço pode ser feita em diversas linguagens. A linguagem em que o serviço é desenvolvido não importa muito para o cliente final, pois a comunicação é feita via rede e com protocolos padronizados 36

Implementação e Implantação Após a implementação o serviço deve ser publicado para acesso de seus consumidores Se o objetivo é tornar o serviço público para outras organizações deve-se registrá-lo em um registro de serviços 37

Serviços de sistemas legados Um dos usos mais importantes de serviços é a criação de wrappers em sistemas legados. Esses sistemas podem então ser acessados por meio da Web e integrado com outras aplicações, mesmo de forma heterogênea 38

Roteiro Contexto Arquiteturas Orientadas a Serviços Engenharia de Serviços Desenvolvimento de Software como Serviço Teste de Serviços Tópicos de Pesquisa 39

Desenvolvimento de software como serviço Baseia-se na idéia de compor e configurar serviços para criar um serviço composto (composição). Os serviços envolvidos em uma composição podem ser: criados especificamente para uma aplicação serviços de negócios de uma empresa parceira reusados de um provedor externo 40

Desenvolvimento de software como serviço Muitas empresas dedicam-se à conversão de aplicações em serviços. Com isso abre-se a possibilidade para ampliar o reuso dentro da empresa. Os serviços também são utilizados de forma interorganizacional entre fornecedores confiáveis. Em um cenário mais amplo as empresas podem acessar mercados de serviços para adquirir serviços para suas composições. 41

Desenvolvimento de software como serviço A composição de serviços pode ser usada para integrar processos de negócios separados a fim de fornecer um processo integrado que ofereça funcionalidades extensas e mais completas. Obs. Não confundir com o termo software como serviço usado para um tipo de modelo de negócio. 42

Desenvolvimento de software como serviço Estágios no processo de construção de um serviço composto (ou uma aplicação): 1. Formular esboço de workflow 2. Descobrir serviços 3. Selecionar serviços 4. Refinar workflow 5. Criar programa de workflow 6. Testar serviço 43

Composição de serviços Orquestração 44

Composição de serviços Coreografia (Colaboração) 45

Exemplo de composição Compartilhamento de recursos de alto desempenho. Duas organizações com workflows separados que colaboram entre si. No exemplo usamos a linguagem gráfica BPMN 46

47

Exemplo de processo 48

Composição de serviços processo BPEL 49

BPEL Uma linguagem de especificação de composição de serviços Web É usada para compor um conjunto de serviços Web em um fluxo de negócios e funciona basicamente como um código de ligação (glue code). Possui mecanismos para especificar parceiros, variáveis, atividades básicas, estruturadas e de tratamento de dados. A linguagem também trata eventos e exceções. 50

Roteiro Contexto Arquiteturas Orientadas a Serviços Engenharia de Serviços Desenvolvimento de Software como Serviço Teste de Serviços Tópicos de Pesquisa 51

Teste de serviços Dificuldades e desafios Aplicações orientadas a serviços são altamente dinâmicas a longo prazo não será capaz de saber quais serviços serão utilizados pelas aplicações. Isto será definido em tempo de execução Os serviços das composições estão sob o controle dos fornecedores 52

Teste de serviços Dificuldades e desafios O comportamento não-funcional dos serviços não depende apenas de como são usados nas aplicações. O uso por parte de outros consumidores também influencia seu desempenho. O modelo de pagamento de serviços pode tornar o teste uma atividade muito cara. Se o serviço for gratuito, pode haver cláusulas de quantidade de invocações por período de tempo. 53

Teste de serviços Dificuldades e desafios Serviços dependente de estados podem ser afetados por outros consumidores. Serviços estão em ambiente real de execução (produção) e não estão em ambientes de teste. 54

Perspectivas Desenvolvedor/Fornecedor/Provedor Cliente/Integrador Certificador Usuário final 55

Roteiro Contexto Arquiteturas Orientadas a Serviços Engenharia de Serviços Desenvolvimento de Software como Serviço Teste de Serviços Tópicos de Pesquisa 56

Tópicos de Pesquisa Requisitos Especificação Integração/Composição Registros de serviços Teste Manutenção Monitoração Certificação 57