Nothing Special   »   [go: up one dir, main page]

ARQUITETURA WEB Unidade2

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 25

Arquitetura

de aplicações web

Unidade 2
Construção
de serviços web
Arquitetura
de aplicações web

Unidade 2
Construção
de serviços web
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

Unidade 2 Construção
de serviços web

Objetivo de aprendizagem:

Esta unidade tem como objetivo apresentar técnicas de programação que ensinam a desenvolver
serviços web.

Tópicos de estudo:

• Principais frameworks;

• Versionamento de código;

• Organização das rotas;

• Depuração.

Iniciando os estudos:

O desenvolvimento de serviços web envolvem um amplo conhecimento de técnicas e ferramentas


computacionais. Nesse sentido, torna-se indispensável o conhecimento dos principais frameworks
voltados ao desenvolvimento de serviços que fazem uso da arquitetura REST, pois esses trazem maior
agilidade no desenvolvimento do projeto e maior confiabilidade das implementações.

No entanto, os frameworks não são as únicas ferramentas que auxiliam os desenvolvedores. Ferra-
mentas como o git auxiliam as equipes com o versionamento dos códigos que estão sendo desenvol-
vidos, bem como favorecem também o trabalho colaborativo.

Em todo desenvolvimento de software é comum, ao longo de um projeto, as equipes empenharem


esforços a fim de depurar códigos que estão em produção ou que já foram produzidos e não estão apre-
sentando os comportamentos esperados. Nesse sentido, é essencial um amplo conhecimento de cada
um dos tipos de erros que um programa pode apresentar. Também fazem parte dos conhecimentos de
um desenvolvedor a organização das rotas em programação com serviços REST, a qual também será
estudada nesta unidade.

Seja bem-vindo e bons estudos.

3
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

1 PRINCIPAIS FRAMEWORKS
Cada vez mais a arquitetura REST vem sendo empregada para a construção de serviços web. Dessa
forma, diferentes frameworks foram desenvolvidos e dão aos programadores modos mais simples de
implementação de aplicações em conformidade com a arquitetura REST.

Nesse tópico, você irá conhecer alguns dos principais frameworks que se destinam à implementação de
serviços REST e fazem uso das linguagens Python, Java e Ruby. Os frameworks aqui apresentados serão:
Django REST Framework, Flask RESTful, Restlet, Spark e Sinatra, mas antes separei para você um vídeo
que apresenta os principais conceitos que envolvem um framework.

Aprofunde-se
Título: Frameworks
Acesso em: 28/06/2020.
Disponível em: https://bit.ly/3eHVJMG

1.1 DJANGO REST FRAMEWORK


O Django REST Framework é considerado pelos desenvolvedores uma ferramenta poderosa, sofisticada
e de fácil utilização, podendo ser utilizada em conjunto com o framework de desenvolvimento de apli-
cações web Django que, ao ser integrado no desenvolvimento de um back-end específico, possibilita a
implementação de serviços REST.

Figura 1 - Django REST Framework.

4
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

Segundo Sousa (2015), esse framework tem como um de seus principais pontos fortes sua capaci-
dade de construção dos serviços por meio de vistas baseadas em classes, o que permite construir,
de um modo praticamente automático, uma API por meio de modelos de recursos disponíveis, não
sendo necessária a lógica de cada um dos endpoints disponibilizados.

Aprofunde-se
Neste material, você irá encontrar uma completa documentação do Django, esse que é
um dos mais robustos frameworks.
Título do artigo: Documentação do Django
Link: https://docs.djangoproject.com/en/3.0/

Dada a robustez desse framework e sua importância nos diferentes ambientes de desenvolvimento,
separei para você a documentação completa dessa ferramenta.

Agora que você possui um substancial conhecimento acerca do Django framework, o vídeo a seguir irá
fazer uso desta na construção de um blog passo a passo.

Aprofunde-se
Título: Django: Construindo um Blog em Minutos
Acesso em: 15/07/2020.
Disponível em: https://youtu.be/eK2sfDWQUXc

5
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

1.2 FLASK RESTFUL


Simples e de fácil utilização, sendo voltado para o desenvolvimento de aplicações simples, o Flask RESTful
é uma extensão para microframework Flask, cujo principal objetivo é oferecer aos desenvolvedores um
ponto de partida extensível para implantação de suas APIs.

Figura 2 - Flask RESTful.


Fonte: adaptado do desenvolvedor oficial do Flask-RESTful (2020).

De acordo com Sousa (2015), o Flask RESTful permite abstrair as tarefas relacionais com o protocolo
HTTP, sendo completamente independente da lógica de negócio da aplicação, o que permite aos desen-
volvedores implementar serviços tendo em conta suas necessidades e preferências.

Segundo o site Flask RESTful (2020), o Flask RESTful é uma extensão do Flask que adiciona suporte para a
criação rápida de APIs REST. Nele você encontra a completa documentação deste framework que pode
auxiliá-lo em seus futuros trabalhos.

Munido de um conhecimento acerca do Flask RESTful, o vídeo a seguir irá ensinar você a construir uma
API fazendo uso desse framework.

Aprofunde-se
Título: Building Web APIs - Using Flask RESTful
Acesso em: 05/07/2020.
Disponível em: https://youtu.be/bc3j7L_1YQU

6
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

1.3 RESTLET
O Restlet é um framework open source voltado para o desenvolvimento de APIs REST em linguagem Java,
tanto do lado do servidor quanto do lado do cliente em uma mesma API, o que reduz a curva de apren-
dizagem dos diferentes componentes do sistema.

Figura 3 - O Restlet Framework é o código-fonte aberto


mais usado como solução para desenvolvedores Java
que desejam criar e usar APIs.
Fonte: adaptado do site oficial do Restlet (2020).

Segundo Sousa (2015), ao fazer uso do framework, a distribuição do serviço torna-se flexível, possibi-
litando incluir o módulo relativo à interface REST numa aplicação Java já existente ou disponibilizá-lo
apenas como uma aplicação de servidor que pode ser integrada a um servidor HTTP.

Dada a robustez do framework Restlet, o site Restlet Talend (2020) traz uma completa documentação do
Restlet Framework.

Agora que você já conhece o Restlet Framework, o vídeo a seguir irá ensiná-lo a trabalhar com esta ferra-
menta passo a passo.

Aprofunde-se
Título: Introduction to the Restlet Framework
Acesso em: 15/07/2020.
Disponível em: https://youtu.be/t8kn5UaO8FU

7
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

1.4 SPARK
O Spark é um microframework voltado para o desenvolvimento de serviços REST em linguagem Java
que tem como principal objetivo proporcionar às equipes de desenvolvimento agilidade e velocidade na
implementação de serviços web.

Figura 4 - Spark é um microframework voltado para o


desenvolvimento de serviços REST em linguagem Java.
Fonte: adaptado do site oficial do Spark (2020).

Segundo Sousa (2015), o Spark é um microframework bastante minimalista e que oferece o suporte
necessário ao desenvolvimento de serviços como gestão de diferentes rotas, manipulação de pedidos
de HTTP e suas respectivas respostas, gestão de dados de sessão, além de oferecer a renderização de
templates de Java Server Pages (JSP).

O microframework Spark é uma ferramenta bastante ampla. Desse modo, a fim de que você possa conhecer
com mais detalhes, o site Spark Java (2020) possui uma documentação completa para sua consulta.

Agora que você teve seu primeiro contato com o framework Spark, o vídeo a seguir irá apresentar
alguns exemplos práticos deste framework.

8
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

Aprofunde-se
Título: Quick introduction to Apache Spark
Acesso em: 15/07/2020.
Disponível em: https://bit.ly/3euVsMu

1.5 SINATRA
O framework Sinatra é uma ferramenta gratuita e open source desenvolvida na linguagem de progra-
mação Ruby. De acordo com Sousa (2015), esse framework tem como objetivo permitir a implementação
de serviços REST de forma rápida e acessível, sendo ao mesmo tempo elegante, leve e minimalista.

Diferentemente do que ocorre com outros frameworks, o Sinatra não faz uso do padrão do Model-View-
-Controller, pois ele tem como objetivo ser o mais simples e flexível possível, proporcionando aos desen-
volvedores uma forma de implementação dos serviços empenhando o menor esforço possível.

A fim de aprofundar seus conhecimentos sobre esse framework, você pode consultar a documentação
oficial por meio do material a seguir:

Aprofunde-se
Este artigo traz a documentação completa do framework Sinatra.
Título do artigo: Documentação do Sinatra
Link: http://sinatrarb.com/documentation.html

Após você estudar alguns dos diferentes tipos de frameworks voltados ao desenvolvimento com uso da
arquitetura REST, seria possível compará-los? O que uma possível comparação seria capaz de revelar? A
fim de responder a essa pergunta, separei para você o seguinte material em vídeo e em tabela:

Assista
Acesse na plataforma o vídeo: Comparação de frameworks

9
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

A tabela faz um comparativo detalhado de cada um dos frameworks aqui apresentados.

Linguagem Baseada em Serialização Autenticação Cache


recursos
Django REST Python Sim XML, JSON, Básica, Token, Sessão, OAuth, OAuth2.0 e Sim
Framework YAML, HTML outros
Flask RESTful Python Sim JSON Não Não
Restlet Java Sim JSON, XML, Básica, Digest, Amazon S3, OAuth2.0 Não
CSV, YAML
Spark Java Não Não Não Não
Sinatra Ruby Não Não Por meio de middleware Rack Sim

Tabela 1 - Comparativo dos frameworks.


Fonte: adaptado de Sousa (2015).

2 VERSIONAMENTO DE CÓDIGO
O processo de desenvolvimento de software envolve a produção de inúmeros arquivos de códigos
computacionais executados pelo sistema operacional ou por algum compilador. Além disso, é comum
o processo de desenvolvimento envolver inúmeras entregas de pequenas partes do software, uma vez
que cada uma dessas versões constitui uma versão do software.

Não é uma tarefa fácil gerenciar milhares de linhas e arquivos de códigos referentes à implementação
de um projeto, tanto que o uso inadequado de uma determinada versão pode ocasionar um compor-
tamento inesperado do software, implicando em diferentes tipos de perdas, sejam elas financeiras, de
disponibilidade do serviço, entre tantas outras.

Uma vez que o controle manual do versionamento dos arquivos referentes ao desenvolvimento de um
software se mostra excessivamente trabalhoso e ineficiente, se faz necessário o uso de tecnologias para
esse fim. Nesse sentido, diferentes ferramentas de controle de versões foram desenvolvidas, sendo a
mais utilizada atualmente a git, devido a sua robustez.

10
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

2.1 O QUE É GIT?


Essencialmente, o git consiste em um sistema de gerenciamento de versão desenvolvido em código
aberto e gratuito, sendo empregado no controle de versões desde projetos pequenos até projetos de
grande porte.

De acordo com o Zup (2019), a principal funcionalidade que faz com que o git seja amplamente
empregado em projetos de desenvolvimento de software consiste na capacidade dele de realizar o
controle de versões de modo colaborativo.

O vídeo a seguir faz uma explanação inicial sobre o git e sua importância na rotina dos desenvolvedores:

Aprofunde-se
Título: Git - sistema de controle de versões distribuído
Acesso em: 28/06/2020.
Disponível em: https://bit.ly/3idcKAz

Ao fazer uso do git e seu modo colaborativo, dois desenvolvedores trabalham em um mesmo arquivo
sem que ocorra a sobrescrita de código. Portanto, os desenvolvedores podem estar implementando
funcionalidades distintas, ou corrigindo bugs, e ao mesmo tempo mesclarem os arquivos que não terão
qualquer tipo de problema.

Conforme o Zup (2019), o git faz uso do conceito de ramificação (branch) em que cada ramificação
consiste em uma linha do tempo dotada de marcos (commits), e em cada um dos branchs os arquivos
podem ser alterados pelo desenvolvedor sem causar impactos nas outras ramificações.

A figura a seguir mostra quatro ramos sendo atualizados em paralelo por diferentes desenvolvedores
ao longo do tempo por meio de marcos (commits) e, posteriormente, o branch feature por meio do
processo de merge sendo mesclado no branch develop.

11
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

ED+ Content Hub © 2020

Figura 5 - Ramos sendo atualizados com o uso do git.


Fonte: elaborado pelo autor (2020).

Talvez alguns termos do parágrafo anterior tenham lhe chamado a atenção, tais como commits e branch.
Assim, preparei o vídeo a seguir de modo a explicar em detalhes cada um deles:

Assista
Acesse na plataforma o vídeo: Entendendo o versionamento

Até este ponto, você aprendeu os conceitos iniciais sobre a ferramenta git. A fim de você aprofundar seus
conhecimentos, recomendo os estudos da documentação dessa ferramenta, por meio da seguinte referência:

Aprofunde-se
Neste link, você encontra toda a documentação do git que irá auxiliá-lo em seus projetos
em pdf.
Título do artigo: Git
Link: https://git-scm.com/book/en/v2

12
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

Como estudado por você, o git tem como função realizar o controle de versões de um software, no
entanto, para que isso ocorra, deve-se ter um repositório a ser gerenciado. É nesse ponto que entra o
GitHub e o GitLab, que consistem em plataformas para hospedagem de repositórios baseadas em git.

Mas o que git tem a ver a ver com GitHub ou GitLab? Segundo o Zup (2019), essencialmente, o GitHub e
o GitLab são plataformas de hospedagem de código-fonte que possibilitam os desenvolvedores contri-
buírem em projetos open source ou privados.

Tanto o GitHub quanto o GitLab oferecem recursos de hospedagem de código-fonte, revisão de código
inline, fork, clone de repositórios e integração com ferramenta de terceiros.

Figura 6 - Ilustrar o conceito de rotas.


Fonte: Disponível em: https://tableless.com.br/github_vs_
gitlab/ Acesso em: 27 jul. 2020.

No entanto, essas ferramentas apresentam diferenças que ficam por conta de suas funcionalidades.
Enquanto o GitHub tem como foco a integração de ferramentas de DevOps, o GitLab oferece de forma
nativa ferramentas de integração e entregas contínuas, além de métricas que visam a qualidade de
software, teste de usabilidade e performance.

No ambiente de desenvolvimento, se faz necessário agilidade e eficiência a fim de se aperfeiçoar


produtos, neste sentido, é indispensável o conhecimento do conceito de DevOps, o qual é explanado no
artigo a seguir.

Aprofunde-se
O DevOps consiste na combinação de filosofias culturais, práticas e ferramentas que
incrementam a capacidade de uma empresa de distribuir aplicativos e serviços em alta
velocidade, desta forma, otimizando e aperfeiçoando produtos de uma forma mais ágil.
Título do artigo: O que é o DevOps?
Link: https://aws.amazon.com/pt/devops/what-is-devops/

13
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

3 ORGANIZAÇÃO DAS ROTAS


Neste tópico, você irá estudar o conceito de rotas em arquitetura REST por meio do framework CakePHP.
Segundo a documentação oficial desse framework, o modo mais rápido de utilizar REST em uma aplicação
consiste em adicionar algumas linhas em seu arquivo routes.php, que é encontrado em app/config.

Figura 7 - Rotas.

O objeto Router contém um método específico chamado mapResources() cuja função permite configurar
algumas rotas padrões, as quais permitem o acesso REST em suas classes de controles (controllers). Por
exemplo, caso você queira permitir o acesso REST a um banco de dados de receitas, a implementação
seria algo como a seguir, adaptado de CakePHP (2020):

//Em app/config/routes.php...

Router::mapResources(‘recipes’);

Router::parseExtensions();

14
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

Na primeira linha do código mostrado, é criada, de forma simples, uma série de rotas para acesso REST,
sendo essas rotas sensíveis ao método HTTP solicitado. A tabela a seguir, adaptada de CakePHP (2020),
descreve as rotas criadas:

Método HTTP URL Ação de controle invocada

GET /recipes RecipesController::index()

GET /recipes/123 RecipesController::view(123)

POST /recipes RecipesController::add()

PUT /recipes/123 RecipesController::edit(123)

DELETE /recipes/123 RecipesController::delete(123)

POST /recipes/123 RecipesController::edit(123)

Tabela 2 - Métodos HTTP e ações invocadas.


Fonte: adaptado de CakePHP (2020).

De acordo com a documentação do CakePHP, a classe de rotas faz uso de diferentes indicadores para
detectar o método PHP utilizado. A seguir é mostrada a ordem de avaliação desses indicadores.

A classe de rotas do CakePHP utiliza diferentes indicadores para detectar o método HTTP utilizado.
Abaixo é demonstrada a ordem de avaliação desses indicadores:

1. A variável _method é enviada junto ao POST;

2. O X_HTTP-Method-Override

3. O cabeçalho REQUEST_METHOD

A variável do POST_method tem sua devida importância ao fazer uso do navegador como um cliente
REST. Tendo as rotas prontas é fácil mapear as ações de um determinado controle. Uma classe de
controle básica é similar à mostrada a seguir, adaptada do CakePHP (2020):

// controllers/recipes_controller.php

class RecipesController extends AppController {

var $components = array(‘RequestHandler’);

function index() {

$recipes = $this->Recipe->find(‘all’);

$this->set(compact(‘recipes’));

function view($id) {

$recipe = $this->Recipe->findById($id);

15
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

$this->set(compact(‘recipe’));

function edit($id) {

$this->Recipe->id = $id;

if ($this->Recipe->save($this->data)) {

$message = ‘Saved’;

} else {

$message = ‘Error’;

$this->set(compact(“message”));

function delete($id) {

if($this->Recipe->delete($id)) {

$message = ‘Deleted’;

} else {

$message = ‘Error’;

$this->set(compact(“message”));

De acordo com a documentação do CakePHP, com a adição do método Router::parseExtensions(), as


rotas do CakePHP estão habilitadas para servir diferentes tipos de requisições. Nesse sentido, como
se está considerando um contexto baseado em REST, as visões são do tipo XML.

A fim de você compreender de um modo prático a constituição de rotas, separei para você o material
em vídeo a seguir:

Aprofunde-se
Título: Implementando rotas
Acesso em: 06/07/2020.
Disponível em: https://youtu.be/VuGOWDZWSTQ

16
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

Para finalizar este tópico, o material em vídeo a seguir irá explanar o conceito de roteamento REST
personalizado.

Assista
Acesse na plataforma o vídeo: Roteamento REST personalizado

4 DEPURAÇÃO
Ao desenvolver um código computacional, é comum que ele não fique pronto em sua primeira versão,
sendo necessário ajustes a fim de corrigir os erros que serão encontrados.

Esta etapa de identificar o tipo de erro que está ocorrendo no código computacional e aplicar as corre-
ções necessárias de modo a se obter os resultados esperados recebe o nome de debug.

Certamente você já teve a experiência de realizar a depuração de seus programas, mesmo sem conhecer
os conceitos deste tema e a importância dele para o ambiente de desenvolvimento de software.

A fim de realizar uma pequena apresentação a você sobre o tema debug, separei o conteúdo em vídeo
a seguir:

Aprofunde-se
Título: Debug (Depuração)
Acesso em: 28/06/2020.
Disponível em: https://youtu.be/Wnb02kzc0Cw

O processo de depuração de um programa pode envolver a correção de diferentes tipos de erros.


Desse modo, é indispensável que você saiba diferenciar cada um deles, de forma a tornar essa etapa de
correção mais ágil.

Essencialmente, a depuração de um código computacional envolve a correção de três tipos de erros, a


saber: erros de sintaxe, erros de execução e erros de semântica. A seguir você irá estudar cada um deles.

Ao longo deste texto, foi feita uma abordagem utilizando a linguagem Python, mas os conceitos aqui
apresentados podem ser naturalmente estendidos para qualquer outra linguagem.

17
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

4.1 ERROS DE SINTAXE


Como o próprio nome sugere, os erros de sintaxe (sintax errors) apontam que, ao desenvolver o código
computacional, você escreveu algo sintaticamente de forma incorreta. Segundo Miller et al. (2011), esse
tipo de erro ocorre quando a linguagem Python está traduzindo o código-fonte em código executável,
ou seja, byte code. A figura a seguir exemplifica um erro de sintaxe em um programa escrito em Python.

Figura 8 - Erro de sintaxe em Python.


Fonte: elaborado pelo autor.

Em geral, os erros de sintaxe são simples de serem corrigidos, desde que você conheça o problema, o
que pode não ser tão simples caso você não tenha tanta experiência com a implementação de códigos
computacionais, pois as mensagens mais comuns dos compiladores são: SyntaxError: invalid syntax e
SyntaxError: invalid, o que não ajuda muito.

18
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

Reflita
Uma vez que as informações fornecidas pelo compilador não nos dizem muito sobre o
erro de sintaxe, uma questão natural seria se há uma estratégia a ser adotada a fim de
evitar que os erros de sintaxe ocorram. A resposta é dada por Miller et al. (2011), que
elenca os seguintes pontos a serem verificados:
• Se não está utilizando uma palavra reservada do Python como nome de variável;
• Se as aspas ou apóstrofos de qualquer string no código estão emparelhados;
• Se há dois pontos (:) no final de cabeçalho de cada comando (compound
statement), incluindo aqui os laços de repetição (for, while) assim como as
estruturas de seleção if e if else;
• Se é consistente o número de parênteses, chaves ou colchetes abertos e fechados;
• Verificar se há apenas um “=” ao invés de “==” em uma condição;
• Se a tabulação é consistente.

As dicas apresentadas por Miller et al. (2011) são de grande utilidade para a correção dos erros de
sintaxe, porém a depuração de um código computacional envolve outros tipos de erros que serão expla-
nados a seguir.

4.2 ERROS DE EXECUÇÃO


Os erros de execução são conhecidos como runtime errors e, como o próprio nome indica, eles ocorrem
durante a execução do programa. Esse tipo de erro indica geralmente que, ao desenvolver o código
computacional, você cometeu algum tipo de erro de lógica de programação.

Ao reportar um erro de execução, os compiladores indicam em que ponto do programa o erro ocorreu
e quais eram as funções que estavam em execução naquele momento.

19
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

Figura 9 - Runtime error em uma aplicação.


Fonte: Disponível em: https://stackoverflow.com/questions/12459977/
runtime-error-in-web-config Acesso em: 27 jul. 2020.

Segundo Miller et al. (2011), um erro de execução é a recursão infinita que causa o erro maximum recur-
sion depth exceeded, como observa o referido autor. Apesar do erro ter se manifestado em um ponto
específico durante a execução do programa, o erro de lógica que o ocasiona pode estar em um trecho
de código distante desse ponto.

De modo a evitar que esse tipo de erro ocorra, uma das técnicas que você pode adotar é a depuração
do fluxo de execução (flow of execution). Assim, você deve verificar se o que você espera que ocorra
está acontecendo de fato em cada um dos trechos do código. Como exemplo, você pode incluir alguns
comandos do tipo print no interior de alguma função a fim de verificar se ela está sendo executada
corretamente.

Os erros de execução requerem para sua correção um profundo conhecimento do fluxo de execução do
programa e da lógica utilizada em sua construção. Sendo assim, esse tipo de erro requer pleno conheci-
mento do que está sendo desenvolvido.

20
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

4.3 ERROS DE SEMÂNTICA


Durante o processo de desenvolvimento de um código computacional, pode ocorrer do programa ser
executado normalmente, não apresentando nenhum tipo de erro de sintaxe ou de execução, entre-
tanto, mesmo assim, ele apresenta resultados que você não espera. Nesse momento, você acabou de se
deparar com um erro de semântica.

Os erros de semântica estão estritamente relacionados à lógica utilizada durante o desenvolvimento


do código. Um exemplo simples desse tipo de erro é a execução de uma expressão matemática pelo
compilador.

Como exemplo, considere que você deseja avaliar o resultado da expressão matemática a / (b * c), mas
durante o desenvolvimento do código computacional você dá a essa expressão matemática a seguinte
implementação: a / b * c. Certamente não irá obter o resultado esperado, pois devido a procedência dos
operadores matemáticos, a expressão é executada da seguinte forma: (a / b) * c.

O tema da depuração de um código computacional envolve a experiência do desenvolvedor, bem como


profundos conhecimentos do produto que está sendo desenvolvido e das ferramentas utilizadas durante
esse desenvolvimento. Nesse sentido, separei para você a seguinte referência:

Aprofunde-se
Título do livro: Problem solving with
algorithms and data structures using
Python
Autores: Bradley N. Miller e David L.
Ranum
Local: Portland, EUA.
Editora: Franklin, Beedle & Associates.
Data de Publicação: 2011.
ISBN: 1590282574.

Agora que você está munido do conhecimento teórico sobre os erros envolvidos durante o desenvolvi-
mento de um programa, separei o seguinte material em vídeo mostrando a depuração de um programa:

Assista
Acesse na plataforma o vídeo: Depurar um programa

21
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

Por fim, o infográfico a seguir irá ajudar você indicando alguns pontos a serem observados ao se realizar
a depuração de um código.

ED+ Content Hub © 2020


Infográfico 1 - Depuração de código.
Fonte: elaborado pelo autor.

22
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

CONSIDERAÇÕES FINAIS
Nesta unidade, você aprendeu importantes conceitos sobre temas como frameworks, REST, rotas,
versionamento de códigos e depuração de programas. Todo esse conhecimento lhe permitirá construir
aplicações web cada vez mais sofisticadas e adequadas às demandas de mercado.

23
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

GLOSSÁRIO
Depuração: consiste no processo de buscar, encontrar e reduzir defeitos de implementações em códigos
computacionais ou até mesmo em hardware.

Framework: no contexto de desenvolvimento de software, consiste em uma abstração que reúne dife-
rentes tipos de códigos que são comuns entre diferentes projetos de software.

Implementação: é a etapa do ciclo de vida de um software que consiste na elaboração e desenvolvi-


mento dos módulos necessários à sua execução.

Semântica: consiste na área da Ciência da Computação que tem como objetivo especificar o significado
(ou comportamento) de programas e partes de hardware.

24
Arquitetura de aplicações web | Unidade 2 - Construção de serviços web

REFERÊNCIAS
ALVES, P. W. Desenvolvimento e Design de Sites. Disponível em: https://integrada.minhabiblioteca.com.
br/#/books/9788536519012/ Acesso em: 09 jul. 2020.

BREITMAN, Koogan K. Web semântica - A internet do futuro. Disponível em: https://integrada.minhabi-


blioteca.com.br/#/books/978-85-216-1958-1/ Acesso em: 09 jul. 2020.

CAKEPHP. Configuração Simples. Disponível em: https://book.cakephp.org/1.3/pt/The-Manual/Common-


-Tasks-With-CakePHP/REST.html Acesso em: 6 jul. 2020.

FLANAGAN, David. JavaScript: o guia definitivo. Disponível em: https://integrada.minhabiblioteca.com.


br/#/books/9788565837484/ Acesso em: 09 jul. 2020.

FLASK RESTFUL. Flask RESTful. Disponível em: https://flask-restful.readthedocs.io/en/latest/ Acesso em: 15


jul. 2020.

HAROLD, R., E. Refatorando HTML. Disponível em: https://integrada.minhabiblioteca.com.br/#/


books/9788577806706/ Acesso em: 09 ju. 2020.

MILETTO, Manara E.; BERTAGNOLLI, Castro, S. D. Desenvolvimento de Software II: Introdução ao


Desenvolvimento Web com HTML, CSS, JavaScript e PHP. Disponível em: de https://integrada.minhabi-
blioteca.com.br/#/books/9788582601969/ Acesso em: 09 jul. 2020.

MILLER, Bradley N. et al. Problem solving with algorithms and data structures using Python. 2. ed.
EUA: Franklin, Beedle & Associates, 2011. ISBN 1590282574.

RESTLET TALEND. Restlet Talend. Disponível em: https://restlet.talend.com/documentation/tutorials/2.4/


Acesso em: 15 jul. 2020.

SOUSA, Filipe Perdigão de.  Criação de framework REST/HATEOAS open source para desenvolvi-
mento de apis em node.js, 2015. 125 p. Dissertação (Mestrado Integrado em Engenharia Informática
e  Computação) - Faculdade de engenharia do Porto, Porto, Portugal. Disponível em: https://referenciabi-
bliografica.net/a/pt-br/ref/abnt/?example=dissertation-1 Acesso em: 10 jul. 2020.

SPARK JAVA. Spark java. Disponível em: http://sparkjava.com/documentation#getting-started Acesso em:


15 jul. 2020.

ZUP. Git, Github e Gitlab: o que são e principais diferenças, 2019. Disponível em: https://www.zup.com.
br/blog/git-github-e-gitlab Acesso em: 1 jul. 2020.

25

Você também pode gostar