SOA Modelagem, Análise e Design Preencha a ficha de cadastro no final deste livro E receba gratuitamente informações sobre os lançamentos e as promoções da Elsevier. Consulte também nosso catálogo completo, últimos lançamentos e serviços exclusivos no site www.elsevier.com.br SOA Modelagem, Análise e Design Henrique Shoiti Fugita Kechi Hirama 2012 © 2012, Elsevier Editora Ltda. Todos os direitos reservados e protegidos pela Lei n° 9.610, de 19/02/1998. Nenhuma parte deste livro, sem autorização prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrônicos, mecânicos, fotográficos, gravação ou quaisquer outros. Copidesque: Ana Paula Bezerra Preparação: Pamela Andrade Revisão: Lara Alves Editoração Eletrônica: Thomson Digital Elsevier Editora Ltda. Conhecimento sem Fronteiras Rua Sete de Setembro, 111 – 16° andar 20050-006 – Centro – Rio de Janeiro – RJ – Brasil Rua Quintana, 753 – 8° andar 04569-011 – Brooklin – São Paulo – SP Serviço de Atendimento ao Cliente 0800-0265340 [email protected] ISBN: 978-85-352-5340-5 Nota: Muito zelo e técnica foram empregados na edição desta obra. No entanto, podem ocorrer erros de digitação, impressão ou dúvida conceitual. Em qualquer das hipóteses, solicitamos a comunicação ao nosso Serviço de Atendimento ao Cliente, para que possamos esclarecer ou encaminhar a questão. Nem a editora nem o autor assumem qualquer responsabilidade por eventuais danos ou perdas a pessoas ou bens originados do uso desta publicação. CIP-BRASIL. CATALOGAÇÃO-NA-FONTE SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ F969s Fugita, Henrique Shoiti SOA : modelagem, análise e design / Henrique Shoiti Fugita, Kechi Hirama. - Rio de Janeiro : Elsevier, 2012. Apêndices Inclui bibliografia e índice Contém glossário ISBN 978-85-352-5340-5 1. Arquitetura de computador. 2. Tecnologia da informação. 3. Software - Desenvol- vimento. 4. Projeto de sistemas. I. Hirama, Kechi. I. Título. 12-2643. CDD: 004.22 CDU: 004.2 Agradecimentos Agradeço à minha esposa, a meus pais e irmãos pelo apoio incondicional. Henrique Shoiti Fugita Agradeço aos meus pais (in memoriam), filhos, irmãos, cunhados e sobrinhos pelas alegrias vividas. Kechi Hirama v Prefácio O cenário de aplicações de software tem evoluído muito nos últimos anos, acompa- nhando a crescente necessidade de novas aplicações e de manutenção de soluções existentes. Porém, isso tem exigido novas abordagens de desenvolvimento de softwa- re, deixando os paradigmas tradicionais, como a orientação a objetos, insuficientes em entregar soluções adequadas no contexto atual. O que se observa claramente é que cada vez mais o software precisa ser conce- bido em alto nível de abstração para dar conta de inúmeros requisitos que devem ser atendidos. Se observarmos também a evolução do software juntamente com as abordagens de seu desenvolvimento, poderemos verificar que, no início, nas décadas de 1960 e 1970, o software era apenas uma ferramenta para apoiar alguma rotina de atividade do dia a dia, por exemplo, emissão de relatórios. Visto apenas como uma ferramenta, o software estava desacoplado de uma visão mais ampla da organização. E, assim, progressivamente foi sendo desenvolvido e se proliferando, gerando altos custos de manutenção. Os paradigmas de desenvol- vimento de software, notadamente a estruturada e orientação a objetos, surgiram para disciplinar e minimizar seus impactos na organização, ao longo de seu ciclo de vida. Porém, a distância entre as necessidades da organização, ou de negócio, ainda mais exigentes, e as soluções propostas se tornavam maiores. Isto levou à discussão de novas abordagens de desenvolvimento de software. Atualmente fala-se muito em necessidade de alinhamento da Tecnologia da Informação (TI) com as estratégias de negócio, e o paradigma de orientação a ser- viços tornou-se a forma mais adequada e aceita para esse alinhamento, preservando investimentos através de reuso de aplicações de software. Este livro trata basicamente de tornar esse alinhamento mais simples e produtivo. Para isso, adotou-se uma forma didática para abordar o assunto, desde a concei- tuação básica de serviço até a sua implementação como um software. O livro traz como tema central a modelagem, a análise e o design, provendo um caminho completo desde a modelagem de negócio até a especificação de serviços, complementado por construção, implantação e gerenciamento de serviços. Esse caminho é um diferencial deste livro em relação às outras publicações semelhantes. Além disso, como o paradigma de orientação a serviços carece de uma padronização, pensamos em prover uma maneira bem embasada e enriquecida de ilustrações para que um leitor, mesmo não experiente em orientação a serviços, possa acompanhar os conceitos e exemplos do livro. vii viii Prefácio A modelagem, a análise e o design são frutos de diversas pesquisas acumuladas em engenharia de software e, mais especificamente, pesquisas que foram feitas ao longo de três anos em orientação a serviços até resultar em uma dissertação de mes- trado e dois artigos publicados, sendo um deles publicado em evento nos Estados Unidos (Fugita e Hirama, 2008a e 2008b). Público-alvo Este livro é destinado a estudantes de graduação dos cursos de Engenharia de Com- putação, Ciência de Computação, Tecnologia de Informação, Sistemas de Informação e outros cursos similares. Para os docentes destes cursos, o livro pode ser usado para aulas teóricas e práticas aproveitando os exemplos ou adaptando os casos desenvolvidos. Outro público que também pode se beneficiar do livro é constituído de gerentes e desenvolvedores de software de empresas de software, que estão realizando projetos com Arquitetura Orientada a Serviços (SOA – Service Oriented Architecture). organização do livro Este livro está organizado em oito capítulos, mais referências, apêndices e glossá- rio. O Capítulo 1, Introdução, apresenta uma contextualização da modelagem, da análise e do design, e perguntas mais frequentes. No Capítulo 2, Entendendo SOA, é feita uma caracterização do conceito de SOA, necessária para o bom entendimento das fases de modelagem, análise e design. O Capítulo 3, Ciclo de vida SOA, apresenta boas práticas em modelagem, análise e design e uma descrição de ciclo de vida e papéis e artefatos envolvidos. O Capítulo 4, Modelagem, apresenta as atividades de modelagem de processo as-is e to-be e especificação de requisitos de serviços. O Capítulo 5, Análise, apresenta as atividades de identificação de serviços can- didatos, análise de gap e análise de realização de serviços. O Capítulo 6, Design, apresenta a especificação de contrato, especificação de realização, verificação dos princípios e revisão dos serviços. O Capítulo 7, Fases complementares, apresenta uma descrição complementar do ciclo de vida SOA para as fases de construção e de implantação e gerenciamento de serviços. O Capítulo 8, Considerações finais, apresenta algumas considerações quanto aos aspectos importantes do livro. Na seção Referências, são apresentadas as referências usadas para a elaboração do livro. Na seção Bibliografia complementar, são apresentadas fontes de leitura interes- santes àqueles que queiram se aprofundar no assunto tratado no livro. Prefácio ix Na seção Apêndice, são apresentados o Apêndice A – os elementos gráficos usados no livro, e o Apêndice B – um estudo de caso referente a uma instituição bancária, em que as fases descritas no livro podem ser acompanhadas. Na seção Glossário, é apresentada uma lista de termos que são familiares ao assunto do livro. recomendações ao leitor O livro está organizado de maneira a atender aos diversos tipos de leitores. No entanto, a leitura ficará mais acessível àqueles que tenham noções de orientação a objetos e que tenham alguma familiaridade com o processo de desenvolvimento de software. Aos iniciantes, recomendamos fortemente a leitura desde o início, sem alternar os capítulos. Àqueles que já dominam os conceitos básicos de orientação a serviços, pode-se iniciar pelo Capítulo 3, no qual o ciclo de vida SOA é descrito. À medida que os conceitos estejam bem assimilados, o estudo de caso do Apêndice B pode ser usado para orientar um projeto real de software orientado a serviços em que você esteja envolvido. 1 Introdução objetivo O objetivo deste capítulo é apresentar uma visão geral sobre o novo paradigma de desenvolvimento de software baseado no conceito de SOA (Service Oriented Architecture) para atender às demandas atuais de novas soluções de forma flexível e com reuso de capacidades de sistemas existentes. Além disso, algumas perguntas mais frequentes da área são respondidas. A TI (Tecnologia da Informação) é a área mais impactante na vida das pessoas e das organi- zações. O sucesso e o bem-estar de todos dependem das soluções providas pela TI. Então, conhecê-la é importante para estarmos preparados para as novas necessidades que surgem a cada dia. Velhos conceitos e técnicas podem não ser suficientes em face deste cenário. No estágio atual, o paradigma de orientação a serviços traz muitos benefícios e desafios. Conteúdo 1.1 Visão geral 1 1.2 Perguntas mais frequentes 4 1.1 Visão Geral Atualmente, cada vez mais as empresas pertencentes às diversas áreas fazem uso da TI para conduzir seus negócios. Por outro lado, devido ao avanço da Internet e das tecnologias de integração e comunicação, é comum as organizações fazerem uso do meio eletrônico para realizar seus negócios com clientes, fornecedores e parceiros. As empresas vêm empregando com mais frequência sistemas de TI no suporte aos seus processos de negócio, com o intuito de automatizar atividades e aumentar a produtividade. As empresas utilizam sistemas de TI como ERP (Enterprise Resource Planning) para controlar sua operação, CRM (Customer Relationship Management) para gerenciar informações sobre o relacionamento com seus clientes, SCM (Sup- ply Chain Management) para gerenciar interações com parceiros, fornecedores e consumidores. Dentro desta infraestrutura de TI, cada sistema possui um conjunto de dados e informações próprio. Devido ao fato de os processos de negócio envolverem diversas áreas da organização, eles passam a demandar funções de mais de um sistema e tornam necessária a troca de informações entre estes sistemas. 1 2 SOA: Modelagem, Análise e Design Principalmente nas organizações de maior porte, esses sistemas de TI constituem ambientes extremamente complexos e heterogêneos, onde as aplicações geralmente fazem uso de diferentes tecnologias, linguagens e protocolos. É comum encontrar em um mesmo ambiente aplicações desenvolvidas com tecnologia Web, softwares de prateleira (COTS – Commercial Off-The-Shelf), proprietários e aplicações legadas em mainframes. Para suportar a comunicação entre elas, são utilizados adaptadores, conectores e middlewares de integração. Os negócios têm se tornado mais dinâmicos, exigindo mais agilidade por parte das organizações e, consequentemente, de suas áreas de TI. É necessário que os sistemas sejam capazes de se adaptar rapidamente às necessidades de negócio, em constante mudança. No entanto, em um ambiente de TI heterogêneo este tipo de mudança é difícil de realizar. Dentro desse cenário, vem se desenvolvendo e sendo aceito o conceito de Arqui tetura Orientada a Serviços (SOA). O modelo de referência do OASIS (OASIS, 2006) define SOA como um paradigma para organizar e utilizar competências distribuídas entre vários domínios. Tratase de um modo de estruturar as aplicações de software em elementos chamados serviços. Com SOA, os sistemas podem ser vistos de forma mais próxima ao negócio da organização. Isto facilita o modo como os sistemas são desenvolvidos e mantidos. A linguagem passa a ser menos técnica, sendo o termo “serviço” a ponte entre os processos de negócio e as funções do sistema de software. Para se trabalhar com SOA não bastam ter conceitos, boas práticas e ferramentas, mas estes devem ser orientados por métodos que permitam atender eficazmente às necessidades da organização. Por outro lado, seguindo os fundamentos de Engenharia de Software, para se desenvolver um serviço, antes de tudo, devese fazer uma análise de o quê realmente se pretende automatizar no âmbito do negócio. Assim, para se projetar aplicações que efetivamente sigam o paradigma de orien tação a serviços, e para que elas realmente façam uso dos benefícios trazidos pelo paradigma, é necessário haver uma atenção especial na identificação e especificação dos serviços que as compõem. Os serviços que apoiarão os processos de negócio e atenderão aos seus requi sitos devem ser definidos de forma adequada, para que apresentem atributos como reusabilidade e flexibilidade e estejam alinhados com as metas de negócio. Além disso, os serviços devem ser especificados de modo a fazer parte de um repositório de serviços reusáveis, que possam ser orquestrados (compostos) em sistemas para apoiar os processos de negócio. Assim, é necessário haver alguma abordagem para, a partir dos requisitos e metas de negócio, identificar e modelar processos relevantes que façam uso de serviços disponíveis na infraestrutura de TI ou de novos serviços a serem desenvolvidos. No caso de novos serviços, esta abordagem deve ser feita por meio de atividades para especificálos de modo que eles possam ser implementados utilizando técnicas existentes e consolidadas. Tal abordagem deve ser previsível e repetível, conduzindo de maneira consistente as atividades de análise e especificação. De preferência, esse método deve fazer uso