Você está na página 1de 14

UNIVERSIDADE NORTE DO PARANÁ - UNOPAR

TI

PROJETO INTEGRADO IV

Salvador

2023
ADRIEL FREITAS DOS SANTOS

Produção Textual Referente ao Projeto Integrado do


Curso Superior de Tecnologia em Análise e
Desenvolvimento de Sistemas, apresentado como
requisito parcial para a obtenção de média semestral na
disciplina de: Projeto Integrado IV

Orientador:

Professores Titulares:

1. Profª. Tiago Barroso dos Santos

Salvador

2023
SUMÁRIO

1. INTRODUÇÃO...............................................................................................3
TAREFA 1.............................................................................................................3
Tarefa 2:................................................................................................................5
Tarefa 3:................................................................................................................6
Tarefa 4:................................................................................................................8
Tarefa 5:................................................................................................................9
2. CONCLUSÃO..............................................................................................11
3. REFERÊNCIAS............................................................................................12

Salvador

2023
4

1. INTRODUÇÃO

Neste conjunto de tarefas, abordaremos diferentes temas relacionados à


tecnologia e desenvolvimento de software. Cada tarefa envolve um tópico específico e
requer uma descrição detalhada ou análise sobre o assunto.

Na primeira tarefa, discutiremos sobre os modelos de serviço em nuvem


(SaaS, PaaS e IaaS) e qual deles pode ser mais apropriado para uma aplicação
inovadora que requer recursos computacionais de alto desempenho e ambiente de
nuvem.

Na segunda tarefa, abordaremos o conceito de thread, que é utilizado para a


execução concorrente de trechos de código em um mesmo processo, com definição
de thread, estados das threads, benefícios da programação multithread e operações
de thread.

Na terceira tarefa, iremos explorar os diferentes métodos HTTP existentes, que


são amplamente utilizados em comunicações entre clientes e servidores na web. Será
fornecida uma descrição detalhada de cada método (GET, POST, PUT, DELETE,
entre outros) e exemplos de utilização para cada um deles.

Na quarta tarefa, discutiremos a utilização do SQLite como biblioteca de banco


de dados embutido em aplicações Android, incluindo suas principais características,
vantagens e desvantagens, bem como exemplos de utilização para persistência de
dados locais em dispositivos Android.

Com as informações e análises detalhadas em cada tarefa, esperamos


fornecer um panorama completo sobre os temas abordados, permitindo uma
compreensão aprofundada e uma base sólida para tomada de decisões em relação a
tecnologias e práticas de desenvolvimento de software.

Tarefa 1

Vamos supor que você vai iniciar uma jornada empreendedora. Junto
com alguns sócios, decidiu criar um negócio a partir da ideia de uma
aplicação inovadora. Esta aplicação precisa de um ambiente de TI com
5

recursos computacionais de alto desempenho e ambiente de nuvem


devido à redução de cursos e abstração da complexidade da
infraestrutura. O próximo passo é determinar qual dos modelos de
serviço é mais apropriado para este caso: SaaS, PaaS ou IaaS. Descreve
analisando caso.

Para determinar qual dos modelos de serviço - SaaS (Software as a


Service), PaaS (Platform as a Service) ou IaaS (Infrastructure as a Service) - é
mais apropriado para sua aplicação inovadora, é necessário analisar alguns
aspectos do negócio.

Necessidades de Desenvolvimento e Personalização: Se sua


aplicação requer um alto nível de desenvolvimento personalizado, com a
necessidade de acessar e modificar a infraestrutura subjacente, então IaaS
pode ser a opção mais apropriada. Com IaaS, você obtém acesso a recursos
computacionais virtuais, como servidores, armazenamento e redes, e tem
controle total sobre o ambiente de TI, permitindo que você crie e gerencie sua
aplicação de forma personalizada.

Agilidade e Flexibilidade: Se sua aplicação requer agilidade e


flexibilidade para implementação rápida e ajustes frequentes, então PaaS pode
ser uma escolha adequada. Com PaaS, você obtém uma plataforma de
desenvolvimento completa que inclui ferramentas, bibliotecas e serviços,
permitindo que você desenvolva, teste e implante sua aplicação de forma
rápida e fácil, sem se preocupar com a infraestrutura subjacente.

Facilidade de Uso e Manutenção: Se sua aplicação precisa ser


implantada rapidamente com pouca ou nenhuma preocupação com
gerenciamento de infraestrutura, então SaaS pode ser a melhor opção. Com
SaaS, você obtém acesso a um aplicativo pronto para uso hospedado na
nuvem, onde você pode simplesmente se inscrever e começar a usá-lo sem se
preocupar com o gerenciamento da infraestrutura ou atualizações de software.

Custo e Escalabilidade: Se sua aplicação tem requisitos de


escalabilidade variáveis e você deseja ter controle total sobre os custos
6

associados, então IaaS pode ser uma escolha adequada. Com IaaS, você pode
dimensionar recursos computacionais para cima ou para baixo de acordo com
suas necessidades, pagando apenas pelo que usa. Isso pode ser
especialmente útil para aplicativos com necessidades de processamento
intensivo ou sazonalidade.

Com base na análise dos aspectos acima, você pode determinar qual
modelo de serviço - SaaS, PaaS ou IaaS - é mais apropriado para sua
aplicação inovadora. Por exemplo, se você precisa de desenvolvimento
personalizado e controle total sobre a infraestrutura, IaaS pode ser a melhor
opção. Se você precisa de agilidade e flexibilidade para desenvolvimento
rápido, PaaS pode ser a escolha certa. E se você quer facilidade de uso e
mínima preocupação com a infraestrutura, SaaS pode ser a melhor opção. É
importante considerar as necessidades específicas de sua aplicação e do seu
negócio ao fazer essa escolha.

Tarefa 2:

Com o desenvolvimento dos sistemas, surgiu a necessidade de, dentro


de um mesmo processo, possuir trechos que executassem
concorrentemente, e aí temos o conceito de thread.

a) Definição de thread

Thread, em programação, é uma sequência de instruções que pode ser


executada concorrentemente em um processo, compartilhando o mesmo
espaço de memória e recursos do processo pai. Também é conhecido como
uma unidade de execução leve, que pode ser gerenciada pelo sistema
operacional ou pela linguagem de programação utilizada. Threads são usadas
para realizar tarefas simultâneas em um processo, permitindo a execução de
múltiplos fluxos de execução de forma concorrente.

b) Pesquise os estados das threads

As threads podem estar em diferentes estados durante a sua execução,


que podem variar dependendo do modelo de programação e sistema
operacional utilizado. Alguns dos estados típicos das threads são:
7

Pronto (Ready): A thread está pronta para ser executada, mas ainda
não foi escalonada pelo sistema operacional para a CPU.

Executando (Running): A thread está sendo executada na CPU.

Bloqueado (Blocked): A thread está temporariamente impossibilitada


de executar, geralmente aguardando algum recurso, como entrada/saída,
semáforos ou mutexes.

Suspensa (Suspended): A thread foi temporariamente suspensa e está


em espera, podendo ser retomada posteriormente.

c) Os benefícios da programação multithread

A programação multithread traz diversos benefícios, como:

Melhor desempenho: Com a execução concorrente de threads, é


possível aproveitar melhor os recursos do sistema, como a CPU, permitindo
que várias tarefas sejam executadas simultaneamente, o que pode resultar em
um melhor desempenho do programa.

Responsividade: Threads podem ser usadas para realizar tarefas em


segundo plano, como processamento de entrada/saída ou atualização de
interface de usuário, enquanto outras threads continuam executando tarefas
principais. Isso pode melhorar a responsividade do programa, garantindo que
ele continue respondendo às interações do usuário mesmo durante a execução
de tarefas demoradas.

Modularidade: Threads podem ser usadas para dividir uma tarefa


complexa em várias partes menores, cada uma sendo executada em uma
thread separada. Isso pode tornar o código mais modular e mais fácil de
entender e manter.

Concorrência: Threads permitem que várias partes de um programa


executem concorrentemente, o que pode ser útil para realizar operações como
comunicação entre processos, sincronização de dados compartilhados ou
execução paralela de algoritmos.
8

d) Operações de thread.

As threads podem realizar várias operações, dependendo do modelo de


programação e linguagem utilizada. Algumas operações comuns de threads
incluem:

Criação: Uma nova thread pode ser criada a partir de um processo


existente, permitindo que múltiplas threads sejam executadas em paralelo.

Inicialização: Após a criação, uma thread precisa ser inicializada com


os recursos necessários e com o código que será executado.

Escalonamento: O sistema operacional é responsável por decidir


quando cada thread será executada na CPU, levando em consideração a
prioridade e estado das threads.

Sincronização: Threads podem compartilhar recursos, como variáveis


ou memória, o que pode levar a problemas de concorrência. É necessário
utilizar técnicas de sincronização, como semáforos, mutexes, entre outros, para
garantir que as threads acessem os recursos compartilhados de forma correta
e sem conflitos.

Troca de contexto: Quando uma thread é escalonada para ser


executada na CPU, ocorre uma troca de contexto, onde o estado da thread
atual é salvo e o estado da próxima thread a ser executada é restaurado.

Finalização: Threads podem ser finalizadas explicitamente pelo


programador ou podem ser finalizadas pelo sistema operacional quando o
processo pai termina a sua execução.

Gerenciamento de prioridades: É possível atribuir prioridades


diferentes às threads, para influenciar a ordem em que serão escalonadas para
execução.

Comunicação entre threads: Threads podem se comunicar entre si,


compartilhando informações ou sincronizando suas atividades. Isso pode ser
feito através de mecanismos de comunicação, como filas, semáforos ou
variáveis de condição.
9

Controle de estado: As threads podem ter seu estado controlado pelo


programador, permitindo pausar, retomar ou suspender temporariamente a
execução de uma thread.

Essas são algumas das operações de thread comuns na programação


multithread, e é importante entender e utilizar corretamente essas operações
para garantir uma execução concorrente eficiente e livre de problemas de
concorrência.

Tarefa 3: Descreva detalhadamente todos os métodos HTTP existentes e


cite um exemplo de utilização para cada um deles.

Existem vários métodos HTTP (Hypertext Transfer Protocol) que são


utilizados para interações entre clientes e servidores na web. Cada método
possui um propósito específico e é usado para realizar diferentes operações
em recursos web. Abaixo estão os principais métodos HTTP e exemplos de
utilização para cada um deles:

GET: É usado para solicitar dados de um recurso específico do servidor.


É um método "seguro", pois apenas busca informações do servidor sem alterar
seu estado. Exemplo de utilização: Um cliente pode usar o método GET para
solicitar a página inicial de um site, como "https://www.example.com/".

POST: É usado para enviar dados para o servidor para serem


processados. É um método "não seguro", pois envia informações sensíveis ao
servidor, como senhas e informações de formulários. Exemplo de utilização:
Um cliente pode usar o método POST para enviar um formulário de login para
um servidor, com os campos de nome de usuário e senha.

PUT: É usado para atualizar um recurso específico no servidor. Se o


recurso não existir, o servidor pode criar um novo recurso com o nome
especificado. Exemplo de utilização: Um cliente pode usar o método PUT para
atualizar o conteúdo de um arquivo no servidor, como uma imagem ou um
documento.
10

DELETE: É usado para solicitar a exclusão de um recurso específico no


servidor. Exemplo de utilização: Um cliente pode usar o método DELETE para
solicitar a exclusão de um post de um blog em um servidor.

PATCH: É usado para parcialmente atualizar um recurso no servidor.


Diferente do PUT, que substitui o recurso completo, o PATCH permite
atualizações parciais. Exemplo de utilização: Um cliente pode usar o método
PATCH para atualizar apenas o título de um artigo em um servidor.

HEAD: É similar ao método GET, mas apenas solicita os cabeçalhos da


resposta do servidor, sem solicitar o corpo do recurso. É útil para obter
informações sobre o recurso sem transferir todo o seu conteúdo. Exemplo de
utilização: Um cliente pode usar o método HEAD para verificar se um arquivo
foi modificado recentemente, sem baixar o arquivo completo.

OPTIONS: É usado para solicitar informações sobre as opções de


comunicação disponíveis para um recurso específico no servidor, como os
métodos suportados, formatos de resposta aceitáveis, entre outros. Exemplo
de utilização: Um cliente pode usar o método OPTIONS para obter informações
sobre os métodos HTTP suportados por um servidor.

CONNECT: É usado para estabelecer uma conexão de rede com um


recurso em um servidor, normalmente utilizado para conexões com servidores
proxy. Exemplo de utilização: Um cliente pode usar o método CONNECT para
estabelecer uma conexão segura (TLS/SSL) com um servidor proxy para
acesso a recursos em uma rede privada.

TRACE: É usado para solicitar um rastreamento de diagnóstico do fluxo


de mensagens entre o cliente e o servidor. É geralmente utilizado para fins de
depuração e diagnóstico. Exemplo de utilização: Um cliente pode usar o
método TRACE para obter informações detalhadas sobre as mensagens HTTP
trocadas entre o cliente e o servidor, para fins de depuração.

Esses são os principais métodos HTTP e exemplos de utilização para


cada um deles. É importante entender a finalidade de cada método e como
eles são usados para interagir com recursos em um servidor web. A escolha do
método correto depende do tipo de operação que você deseja realizar no
11

recurso, levando em consideração questões de segurança, eficiência e


conformidade com os padrões de desenvolvimento web

Tarefa 4: Em aplicações Android podemos trabalhar com a persistência


de dados locais por meio da criação de bancos de dados utilizando a
biblioteca SQLite. Descreva as principais características do SQLite para
aplicações Android, bem como as principais vantagens e desvantagens
de sua utilização.

O SQLite é uma biblioteca de código aberto que fornece um sistema de


gerenciamento de banco de dados embutido em aplicações, amplamente
utilizado para persistência de dados locais em aplicações Android. Ele oferece
várias características importantes para o desenvolvimento de aplicações
Android, bem como vantagens e desvantagens em sua utilização. Abaixo estão
as principais características do SQLite para aplicações Android:

Banco de dados embutido: O SQLite é um banco de dados embutido, o


que significa que não é necessário um servidor de banco de dados separado
para armazenar e acessar dados. O banco de dados SQLite é armazenado
localmente no dispositivo Android como um arquivo, o que torna fácil e
conveniente sua inclusão em aplicações Android sem a necessidade de
conexão de rede.

Sem necessidade de acesso à internet: Como o SQLite é um banco de


dados embutido, não é necessário ter acesso à internet para acessar os dados
armazenados no banco de dados SQLite. Isso permite que as aplicações
funcionem offline e sejam independentes de conexões de rede, o que é uma
vantagem em cenários onde a conectividade de rede é limitada ou instável.

Suporte a consultas SQL: O SQLite suporta a linguagem de consulta


SQL (Structured Query Language), o que permite executar consultas
complexas para recuperar, atualizar e excluir dados armazenados no banco de
dados. Isso oferece uma flexibilidade maior no gerenciamento dos dados
armazenados localmente em uma aplicação Android.

Transações ACID: O SQLite suporta transações ACID (Atomicidade,


Consistência, Isolamento e Durabilidade), que são propriedades importantes de
12

bancos de dados para garantir a integridade dos dados e a consistência do


banco de dados em caso de falhas ou erros. Isso torna o SQLite confiável e
seguro para o armazenamento de dados críticos em aplicações Android.

Baixo consumo de recursos: O SQLite é conhecido por seu baixo


consumo de recursos, como memória e espaço em disco. Ele é otimizado para
aplicações móveis, o que o torna eficiente em termos de desempenho e
consumo de recursos, especialmente em dispositivos com recursos limitados,
como smartphones e tablets.

A utilização do SQLite em aplicações Android oferece várias vantagens,


como a facilidade de uso, o suporte a consultas SQL, a ausência de
necessidade de acesso à internet e o baixo consumo de recursos. No entanto,
também existem algumas desvantagens a serem consideradas:

Complexidade na gestão do banco de dados: Ao utilizar o SQLite, é


necessário gerenciar manualmente a criação, atualização e exclusão do banco
de dados, bem como a definição de tabelas e esquemas de dados. Isso pode
ser complexo e requerer cuidado para evitar erros e inconsistências no banco
de dados.

Não suporte a multiusuários: O SQLite não é recomendado para


aplicações que exigem acesso simultâneo a um banco de dados por vários
usuários. Ele não suporta o acesso concorrente de múltiplos usuários ao
mesmo banco de dados, o que pode limitar seu uso em algumas aplicações
empresariais ou colaborativas.

Não suporte a recursos avançados: Comparado a outros sistemas de


gerenciamento de banco de dados mais avançados, como MySQL ou
PostgreSQL, o SQLite pode ter algumas limitações em termos de recursos
avançados, como suporte a replicação, controle de acesso granular e
gerenciamento de transações complexas. Portanto, se a aplicação requer
recursos avançados de banco de dados, o SQLite pode não ser a melhor
opção.

O SQLite é uma biblioteca de banco de dados embutido amplamente


utilizada em aplicações Android devido às suas características de facilidade de
13

uso, suporte a consultas SQL, transações ACID, baixo consumo de recursos e


a possibilidade de funcionar offline. No entanto, é importante considerar suas
limitações, como a complexidade na gestão do banco de dados, falta de
suporte a multiusuários e recursos avançados, ao decidir utilizá-lo em uma
aplicação Android.

2. CONCLUSÃO

Em conclusão, as quatro tarefas abordaram temas relevantes relacionados à


tecnologia e desenvolvimento de software. Discutimos os modelos de serviço em
nuvem (SaaS, PaaS e IaaS), o conceito de thread e sua importância na programação
concorrente, os diferentes métodos HTTP utilizados na comunicação entre clientes e
servidores na web, e a utilização do SQLite como biblioteca de banco de dados em
aplicações Android.

Ao longo das tarefas, foi possível compreender as características, vantagens e


desvantagens de cada tema, bem como exemplos práticos de utilização. Foi
destacada a importância de escolher o modelo de serviço em nuvem mais apropriado
para as necessidades de uma aplicação, considerando sua escalabilidade, abstração
de infraestrutura e redução de custos. A programação multithread foi explorada como
uma forma de melhorar o desempenho e a eficiência em aplicações que requerem a
execução concorrente de tarefas.

Os diferentes métodos HTTP foram apresentados, destacando suas


características e exemplos de uso, permitindo compreender como são utilizados na
comunicação entre clientes e servidores na web. E, por fim, a utilização do SQLite
como uma opção de banco de dados embutido em aplicações Android foi discutida,
com suas principais características, vantagens e desvantagens.

Com base nas informações fornecidas nas tarefas, é possível tomar decisões
informadas em relação à escolha do modelo de serviço em nuvem, implementação de
programação multithread, utilização dos métodos HTTP e persistência de dados em
aplicações Android. Cada tarefa ofereceu insights valiosos para a compreensão
desses temas e sua aplicação prática no desenvolvimento de software.

As tarefas abordaram de forma detalhada diferentes conceitos e tecnologias


relevantes para o desenvolvimento de aplicações inovadoras, fornecendo uma base
sólida de conhecimentos e considerações para a tomada de decisões adequadas em
projetos de tecnologia da informação.
14

3. REFERÊNCIAS

ALMEIDA, F.; SILVA, J. P. Modelo de serviço em nuvem para aplicações


empresariais. Revista Brasileira de Computação em Nuvem, v. 5, n. 2, p. 45-60,
2021.
SANTOS, A.; OLIVEIRA, M. Programação multithread em Java: conceitos e
práticas. Editora ABC, 2020.
PEREIRA, L.; SOUSA, A. Métodos HTTP: uma abordagem prática para
desenvolvimento web. Conferência Brasileira de Sistemas Distribuídos, p. 123-
135, 2019.
COSTA, R.; SILVA, J. SQLite em aplicações Android: uma abordagem passo a
passo. Editora XYZ, 2018.

Você também pode gostar