Skip to content

Latest commit

 

History

History
30 lines (18 loc) · 8.67 KB

Introdução.md

File metadata and controls

30 lines (18 loc) · 8.67 KB

Introdução

Desculpe-me mas... você disse 'lâminas'?

-- City Gent #1 (Michael Palin), The Architects Sketch [111]

Assim como previsto anteriormente por Perry e Wolf [105], a arquitetura de software tem sido um ponto de foco para pesquisas de engenharia de software nos anos 1990. A complexidade dos sistemas de software modernos implicaram em uma ênfase ainda maior em sistemas separados por componentes, onde a implementação é particionada em componentes independentes que se comunicam para realizar as tarefas desejadas. A pesquisa científica de arquitetura de software investiga métodos para determinar qual a melhor maneira de particionar um sistema, como identificar seus componentes e estabelecer a comunicação entre eles, como a informação é estabelecida, como os elementos do sistema podem evoluir independentemente e como tudo isso pode ser descrito utilizando-se de uma notação formal e informal.

Uma boa arquitetura não é criado no vácuo. Todas as decisões de design em um nível arquitetônico deveriam ser feitas dentro de um contexto de requerimentos funcionais, comportamentais e sociais do sistema sendo criado, que é um princípio que se aplica tanto para a arquitetura de software quanto para arquitetura do ramo de construção tradicional. A diretriz que indica que "a forma segue a função" vem de centenas de anos de exeperiência com projetos de construção que falharam e são frequentemente ignorados por particantes de software. A parte engraçada do esboço de Monty Python, citado acima, é uma noção absurda que um arquiteto que, ao ser confrontado com o objetivo de projetar um bloco urbano de apartamentos, apresentaria um design de construção com todos os componentes de um frigorífico moderno. Pode até ser o melhor design do melhor frigorífico já concebido, mas seria de pouquíssimo conforto para os inquilidos assim que fossem levados para os corredores contendo lâminas rotativas.

A hipérbole do O Esboço dos Arquitetos (do grupo Monty Python) pode parecer ridícula, mas considere o quão frequentemente vemos projetos sendo começados com a adoção da última moda em design arquitetônico e somente mais tarde descobrem se o tipo de arquitetura adotada atende, de fato, os requerimentos. Design-por-burbúrio (Design-by-buzzword) é uma ocorrência bem comum. Pelo menos algum deste comportamento adotado dentro da indústria de software é devido a falta de compreensão do motivo de um conjunto de restrições é útil. Em outras palavras, a razoabilidade por trás de boas arquiteturas de software não são aparentes para projetistas quando estas arquiteturas são selecionadas para reutilização.

Esta dissertação explora uma junção nas fronteiras da investigação em duas disciplinas da ciência da computação: software e networking. Pesquisas de software têm se interessado, por muito tempo, pela categorização de projetos de software e o desenvolvimento de metodologias de design, mas raramente tem conseguido avaliar objetivamente o impacto dos vários tipos de design no comportamento de um sistema. A pesquisa na área de networking, por outro lado, está focada nos detalhes da comunicação genérica entre sistemas e na melhoria do desempenho de técnicas de comunicação específicas, frequentemente ignorando o fato de que ao mudar a forma de como os estilos de interações acontecem em uma aplicação pode ter mais impacto na performance do que os protocolos de comunicação utilizados para estas mesmas interações. Meu trabalho é motivado pelo desejo de compreender e avaliar o estilo de arquitetura de aplicações de software baseadas em redes através do uso de princípios de restrições arquitetônicas, obtendo, assim, a funcionalidades, desempenho e propriedades sociais (comunicação entre elementos) desejadas de uma arquitetura. Quando um nome e um conjunto coordenado de restrições arquitetônicas se torna um estilo arquitetônico.

Os primeiros capítulos desta dissertação definem um framework para se compreender a arquitetura de software por meio de estilos de arquitetura, revelando como estes estilos podem ser utilizados para direcionar o desenvolvimento de arquiteturas de aplicações de software baseados em rede. Estilos comuns de arquitetura avaliados e classificados de acordo com as propriedades arquitetônicas que elas induzem when aplicadas a uma arquitetura de hipermídia baseada em rede. Esta classificação é utilizada para identificar um conjunto de restrições arquitetônicas que poderiam ser usadas para melhorar a arquitetura da nova era da Rede Mundial - World Wide Web.

Arquitetar a Web exige uma compreensão de seus requerimentos, como discurtiremos aidante no Capítulo 4. A Web se destina a ser um sistema hipermídia de Internet distribuída em escala, o que significa mais do que uma simples consideração de disperção geográfica. A Internet é sobre a interconexão de redes de informação entre fronteiras organizacionais. Os fornecedores de serviços de informação devem ser capazes de lidar com as exigências de escalabilidade desordenado (anárquico) e a implantação independente de componentes de software. Hipermídia distribuídas fornece um método uniforme de acesso aos serviços através da incorporação de controles de ação dentro do âmbito da apresentação de informações recuperadas a partir de sites remotos. Uma arquitetura para a Web deve, portanto, ser desenvolvida com o contexto de comunicar grandes massas de objetos de dados através de redes de alta latência e vários limites de confiança.

O Capítulo 5 introduz e elabora o estilo de arquitetura REST - Transferência de Representação de Estado (Representation State Transfer - REST) sistemas de hipermídia distribuídos. REST proporciona um conjunto de registrições arquitetônicas que, when aplicadas em um todo, enfatiza a escalabilidade de interações de componentes, generalização de interfaces, distribuição independente de componentes e intermediação de componentes de forma a reduzir a latência de interação entre eles, reforço de segurança e o encapsulamento de sistemas legados. Eu descrevo os princípios de engenharia de software que direcionam o estilo de arquitetura REST e as restrições de interação escolhidas para manter esses princípios, contrastando-as com restrições de outros estilos arquitetônicos.

Ao longo dos últimos seis anos, o estilo arquitetônico REST foi usado para orientar o design e desenvolvimento da arquitetura da Web moderna, como apresentado no Capítulo 6. Este trabalho foi feito em conjunto com minha autoria dos padrões da Internet para o Protocolo de Transferência de Hipertexto (Hypertext Transfer Protocol - HTTP) e Identificador Uniforme de Recursos (Uniform Resource Identifier - URI), as duas especificações que definem a interface genérica usada por todas as interações de componentes na Web.

Como a maioria dos sistemas do mundo real, nem todos os componentes da arquitetura da Web implementados obedecem a cada restrição presente em seu projeto arquitetônico. REST tem sido utilizada tanto como um significado para definir melhorias arquitetônicas quanto para identificar discrepâncias arquitetônicas. Discrepâncias ocorrem quando, devido à ignorância ou descuido, um software é implementado e distribuído violando as restrições arquitetônicas. Enquanto discrepâncias não podem ser evitadas em geral, é possível identificá-las antes que se tornem padrões efetivados. Muitas discrepâncias dentro da arquitetura da Web moderna são resumidas no Capítulo 6, juntamente com análises de por quê elas surgiram e como elas desviam do REST.

Em resumo, esta dissertação apresenta as seguintes contribuições para a pesquisa de software dentro do campo da Ciência da Informação e Computação:

  • um framework para a compreensão de arquitetura de software através de estilos arquitetônicos, incluindo um conjunto consistente de terminologias para descrever arquitetura de software;
  • uma classificação de estilos de arquitetura de aplicações de software baseadas em redes por meio das suas propriedades arquitetônicas que elas induziria quando aplicadas à arquitetura de um sistema hipermídias distribuídas;
  • REST, um estilo arquitetônico inovador para sistemas de hipermídias distribuídas; e,
  • aplicação e avaliação do estilo arquitetônico REST na concepção e implantação da arquitetura a Rede Mundial (World Wide Web) moderna.