IGTI Blog

Arquitetura de software: sua definição e aplicação nos negócios

Por trás de um aplicativo ou sistema há uma estrutura desenvolvida pelo arquiteto de software 

Todos os dias usamos diferentes aplicativos, ferramentas e sistemas online, seja no desktop ou celular. Isso não é segredo para ninguém. O que muitos desconhecem é que por trás de um aplicativo há uma grande estrutura organizacional desenvolvida pela arquitetura de software.

Esta área da TI é responsável pela análise estratégica dos componentes operacionais antes de criar soluções viáveis para uma tecnologia, considerando o desempenho, escalabilidade, interoperabilidade, compatibilidade e performance.

O que é arquitetura de software e o como ajuda os negócios

Com a arquitetura de software, é possível entender as diferenças entre as linguagens, sistemas operacionais e ambientes da computação. Ou seja, qualquer componente tecnológico pode ser usado para integrar uma solução arquitetural. Essa parte é essencial porque otimiza o trabalho dos designers e desenvolvedores, permitindo que uma aplicação esteja dentro dos padrões básicos necessários para funcionar de forma assertiva.

O professor de Arquitetura de Software do IGTI Rafael Lobato explica que a área é importante para automatizar novos processos ou melhorar os já existentes. Assim, os projetos desenvolvidos pelo arquiteto de software acabam diminuindo os riscos associados ao sistema. “Em poucas palavras, as tecnologias concretizam um software de modo funcional e adequado para resolver a solução de um negócio”, completa.

Além da escolha dos algoritmos e estruturas de dados, a arquitetura envolve: decisões sobre as estruturas que formarão o sistema, controle, protocolos de comunicação, sincronização e acesso a dados, atribuição de funcionalidade a elementos do sistema, distribuição física dos elementos escalabilidade e desempenho e outros atributos de qualidade.¹ 

O surgimento da arquitetura de software

No fim da década de 60, cientistas começaram a pesquisar mais sobre o conceito de arquitetura de software. A ideia era enfatizar a importância de estruturar um sistema antes de seu desenvolvimento. Mas foi apenas nos anos 90 que os estudos desta área evoluíram. Na época, foi escrito o livro Software Architecture: Perspectives on an Emerging Discipline trazendo a perspectiva dos padrões, estilos e modelos arquiteturais como base para desenvolver os softwares.

Este salto da história da arquitetura de software foi só o começo. Mais tarde a área evoluiu drasticamente após a criação da primeira norma padrão – mais conhecida como ISO/IEEE 1471-2000, que significa uma arquitetura de organização fundamental de um sistema.

Hoje, muitas ações do nosso cotidiano só são possíveis por conta da idealização e, depois, do desenvolvimento de soluções tecnológicas, seja no ambiente de trabalho ou no âmbito pessoal da vida, como e-mail, intranet, lojas online e serviços na nuvem.

Aplicando a arquitetura de software nos negócios

Para as empresas, a arquitetura de software tem o objetivo de atender uma visão orientada aos negócios. Pensando nisso, os profissionais são encarregados pela estrutura de um sistema, planejamento estratégico, padrões de projetos arquiteturais, otimização e escalabilidade do negócio e construção de soluções para aplicações.

“O arquiteto deve ter sempre o senso crítico de avaliar novas formas de aplicar estas tecnologias ou até de sugerir algo que nunca antes tenha sido utilizado”, diz Lobato. O que na prática é a criação ou seleção dos componentes e interações fundamentais para que a tecnologia seja implantada. Assim, por trás de toda a tecnologia, há uma representação de informação adequada às necessidades dos consumidores ou colaboradores.

Com isso, destacamos os principais benefícios que a arquitetura de software traz ao mundo corporativo:

  • Redução de riscos ao negócio
  • Alinhamento de expectativas entre os diferentes setores da empresa
  • Construção de aplicações flexíveis e de qualidade
  • Integração com diferentes linguagens e sistemas
  • Segurança das aplicações

Diferentemente de algumas áreas, a arquitetura de software é indispensável nas empresas, principalmente àquelas que têm a tecnologia como premissa no modelo de negócio. Exemplo disso são marcas como o NuBank, Facebook, Uber, Slack e até os Correios, que  criam diversas soluções com base no desenvolvimento ágil, transformação digital e arquiteturas escaláveis.

Normalmente, essas companhias buscam por uma modelagem específica, combinando componentes com base em uma visão arquitetural que mais se adeque ao software. Para isso acontecer, os arquitetos avaliam todas as opções de implementação de um sistema.

Para os profissionais do ramo, essa parte é conhecida como visões da arquitetura, porque permitem uma análise geral do sistema e, a partir daí, selecionam as estruturas dos conjuntos que farão parte do processo para o melhor funcionamento da aplicação.

O que é framework? Entenda se você precisa de um

Dentro de um processo de arquitetura de software, o framework é a parte do desenvolvimento que une os componentes dentro da infraestrutura de um sistema ou aplicação, sendo basicamente a interface.

O principal diferencial de utilizar um framework é garantir que o desenvolvedor tenha a possibilidade de ajustar o projeto de acordo com a personalização solicitada. Por isso, cada vez mais, os desenvolvedores buscam por esse tipo de ferramenta.

Para eles, já ter disponível parâmetros preestabelecidos possibilita maior produtividade para que o trabalho seja feito de modo mais rápido e estruturado. Sem contar que o gerenciamento de ferramentas também fica mais fácil: não é necessário reinventar a roda para colocar um software de pé.

Só que antes da escolha de qualquer template, o arquiteto de software precisa montar a estrutura necessária para desenvolver sua ideia.  

Ao utilizar a visão da arquitetura, será viável capturar as principais decisões do design estrutural do software, tal qual seus componentes, formulários, restrições e requisitos funcionais ou alternativos.

Por fim, toda essa parte é direcionada para o Documento de Arquitetura de Software que armazenará as visões, abstrações ou simplificações dos modelos criados e suas características. Afinal, essa etapa é importante para aumentar a qualidade dos modelos arquiteturais antes de ir para a parte do desenvolvimento.

A escolha do modelo arquitetural para um software

Depois de aplicar a visão da arquitetura, podemos avançar mais na rotina do arquiteto de software. Considerando o melhor caminho para estruturar um sistema, será fundamental pensar na próxima fase do projeto que é a definição do padrão arquitetural – lembre-se que há uma infinidade deles. “Não existe um funcionamento básico de tecnologia. Há formas infinitas de aplicar e atender os diversos problemas existentes”, ressalta Rafael Lobato, professor do IGTI.

Mas, atualmente, há alguns padrões que são mais usados para a criação da solução do software, que também são conhecidos como estilo de arquitetura. Veja mais:

  • Arquitetura em camadas (Layered pattern)

    Organiza um sistema de conjunto em camadas que podem ser desconstruídas em diferentes serviços, trazendo um modelo incremental de desenvolvimento. Os casos mais comuns para o uso desse padrão são em software de e-commerce e desktop.

  • Arquitetura cliente-servidor (Client-server pattern)

    Estilo organizado em serviços combinando dados do cliente e do servidor. Para isso, é primordial que o cliente disponibilize uma rede de acesso às informações.  Este cenário é um dos mais conhecidos na rotina das pessoas, já que podem ser aplicativos bancários e e-mail.

  • Arquitetura MVC (Model-view-controller pattern)

    Distribuído em três camadas (Modelo, Visão e Controle), este padrão é um dos mais comuns para o online, porque traz um modelo interativo de sistema.

  • Arquitetura de microsserviços (Microservices pattern)

    Este padrão utiliza múltiplos serviços e componentes para desenvolver uma estrutura modular favorecida. Hoje, é um dos modelos preferidos dos desenvolvedores e arquitetos de software por possibilitar a escalabilidade e independência dos módulos – que até podem utilizar diferentes linguagens e programações.

Além de ser um dos modelos favoritos do momento, o microsserviços também fica entre os destaques das tendências para a evolução da arquitetura de software.

O futuro da arquitetura de Software

Definitivamente, no futuro do desenvolvimento dos sistemas estarão os modelos de microsserviços, computação em nuvem e inteligência artificial. “Com os últimos avanços ficou claro que ainda estamos longe de atingir um limite para o uso da tecnologia. Estamos apenas no início de uma revolução e com as possibilidades totalmente em aberto”, completa Rafael Lobato, professor de arquitetura de software do IGTI.

Essas três tendências têm caminhado bem próximas umas das outras, porque são uma evolução natural da arquitetura de software, e também parte da revolução digital. Separamos as principais razões para ficar de olho em:

  • Computação em nuvem (cloud computing)

    Em sua explicação mais simples, a computação em nuvem é uma solução tecnológica com acesso remoto a diferentes conteúdos online. Isso significa que não é necessário mais um computador pessoal ou um servidor local para acessar informações. Em nosso dia a dia já usamos a computação em nuvem para editar documentos no Google Drive ou para escutar uma playlist no Spotify.

    Só é preciso se atentar se o serviço que você desenvolverá precisará de uma nuvem pública (o cliente é responsável por subir as informações ao provedor), privada (modelo mais apropriado às empresas que oferecem domínio interno aos colaboradores) ou híbrida (combinação dos serviços citados anteriormente), porque cada uma tem um impacto diferente em uma organização, inclusive no custo e desempenho do serviço.

  • Inteligência artificial

    Desenvolver software com base em inteligência artificial já é uma prática realizada no mercado de TI, mas logo essa evolução tecnológica ficará mais fácil e acessível para a produção de softwares e aplicativos. Graças a facilidade na hora de programar e uma interface mais intuitiva que atende mais rapidamente às necessidades dos negócios.

  • Microsserviços

    A praticidade dos microsserviços criará um movimento de migração de sistemas para as empresas que têm uma área de TI mais fortalecida e com maior produtividade.

“O futuro da arquitetura, por mais que seja muito difícil prever, tem grandes chances de sempre procurar por novas tecnologias que otimizam o que já existe no mercado”, ressalta Lobato.

Fonte 1: Shaw, D. Garlan; Software Architecture. Perspectives on an Emerging Discipline, Prentice Hall, 1996. Garlan and Mary Shaw. An introduction to software architecture. Technical Report- CMU-CS-94166,Carnegie Mellon University, January 1994.