Este artigo tem como objetivo identificar os padrões de projeto e as características de uma arquitetura para aplicações web client-side, para então propor um modelo de arquitetura utilizando o framework AngularJS, de forma que atenda aos requisitos arquiteturais de uma aplicação exemplo.
Na prática, demonstraremos um conjunto de técnicas para implementar uma arquitetura executável e reutilizável, exemplificando a estrutura do projeto, padrões utilizados, ferramentas e código-fonte, bem como os demais atores envolvidos no ciclo de vida do software de uma forma geral.
O desenvolvimento de uma arquitetura client-side, traz consigo desafios arquiteturais equivalentes ao modelo tradicional implementado no lado servidor. Então como podemos modelar e implementar uma arquitetura no lado cliente capaz de atender aos requisitos arquiteturais de software de um determinado domínio?
Para o propósito deste artigo, foi selecionado o domínio de uma rede social para realizar a implementação baseada nos requisitos da arquitetura que serão descritos empregando o modelo FURPS, um acrônimo que representa um modelo de classificação de atributos de qualidade de software (requisitos funcionais e não funcionais), e que classifica os requisitos arquiteturais por funcionalidade, usabilidade, confiabilidade, desempenho e suportabilidade.
Neste contexto, a escolha do framework AngularJS foi realizada devido a sua popularidade e ao fato de suas características serem compatíveis com uma arquitetura robusta que possibilita a separação em camadas, assim como outras características importantes como a injeção de dependências.
Arquitetura de Software
Segundo Martin Fowler, a arquitetura de software é um termo com muitas definições, porém sem um consenso entre os autores. No entanto, ele afirma que sempre existem dois elementos em comum, o primeiro é o desmembramento do sistema em partes e o segundo são as decisões difíceis de mudar.
A arquitetura de software de um programa ou sistema computacional é composta pelas estruturas do sistema, que, por sua vez, são compostas por elementos de software, suas propriedades visíveis externamente e as relações entre elas. As formas arquiteturais recorrentes, depois de observadas e analisadas, podem gerar modelos padronizados, que podem ser utilizados mesmo em sistemas diferentes na forma dos chamados “estilos arquiteturais”, modelos de representação de arquitetura.
O estilo arquitetural mais utilizado em aplicações complexas é o estilo em camadas, também conhecido como layers, no qual ele define como um conjunto de subsistemas do software organizados em forma de bolo, onde cada camada é acomodada sobre a camada inferior.
Nesta estrutura a maior camada utiliza os serviços das camadas inferiores, mas as camadas inferiores não conhecem as camadas superiores e por isso não acessam os seus serviços. Entre os benefícios disso, podemos citar: coesão; separação de responsabilidades; redução de dependências; possibilidade de substituição da implementação.
Padrões de Projeto
O software é frequentemente lembrado pelas suas partes como as funções, arquivos fonte, módulos, objetos, métodos, classes, pacotes, bibliotecas, componentes, serviços, subsistemas e assim por diante.
Tudo isto representa visões corretas nas quais os desenvolvedores trabalham. Porém esta visão é focada nas partes, que por sua vez não contemplam a grande quantidade de relacionamentos e decisões que estão por trás do software.
Os padrões de projeto, também conhecidos como design patterns, surgem para descrever, capturar e nomear técnicas para solução de problemas de software. Diferentemente da utilização de experiência de forma empírica, os padrões são documentados, reutilizados em outras aplicações e compartilhados para disseminação do conhecimento.
Os principais padrões de projetos que serão empregados neste artigo estão descritos a seguir.
Dependency Injection
O padrão DI (Dependency Injection) é uma prática onde os objetos são desenhados de uma maneira na qual recebem instâncias de objetos de outras partes do código, ao invés de construí-los internamente.
Isto significa que qualquer implementação da interface que é utilizada pelo objeto pode ser substituída sem alterar o código, resultando na simplificação dos testes e na diminuição do acoplamento.
Service Oriented Architecture
O padrão SOA (Service Oriented Architecture) consiste em uma coleção de componentes distribuídos que fornecem e/ou consomem serviços. Neste padrão, os componentes dos fornecedores e dos consumidores de serviços podem utilizar diferentes plataformas e linguagens de programação.
Serviços são em sua grande maioria independentes e frequentemente pertencem a diferentes sistemas ou até mesmo diferentes organizações.
RESTful Web Services
O REST (Representational State Transfer) é um estilo arquitetural para aplicações em rede proposto por Roy Fielding em 2000. Ele consiste em um conjunto de restrições para tratar a separação de responsabilidades, visibilidade, confiabilidade, escalabilidade, desempenho, etc.
O grande diferencial do REST é a utilização da infraestrutura da web, como por exemplo, o protocolo HTTP, que permite construir aplicações distribuídas e publicar serviços nesta infraestrutura.
Pode ser denominado RESTful Web Services, os serviços web construídos utilizando as tecnologias HTTP, URI, XML e JSON que são padronizadas para utilização na web.
Active Record
O Active Record é um padrão arquitetural para mapeamento de objetos de domínio a estruturas de dados, representando uma tabela ou um documento e encapsulando o acesso ao repositório de dados. Ele é recomendado para domínios com pouca lógica de negócio e que se aproximam muito da modelagem dos dados.
Requisitos Arquiteturais
Para analisar os requisitos arquiteturais, primeiramente precisamos compreender como identificá-los e classificá-los.
Um requisito de software pode ser chamado de r ...
Confira outros conteúdos:
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento integral
12x no cartão
De: R$ 69,00
Por: R$ 59,00
Total: R$ 708,00
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento facilitado
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 64,00 /mês
Tempo mínimo: 12 messes
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.