Você está na página 1de 10

ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

LEONARDO MAICON DA SILVA ROCHA

PROJETO INTEGRADO IV

Patos de Minas
2022
LEONARDO MAICON DA SILVA ROCHA

PROJETO INTEGRADO IV

Trabalho de ADS apresentado como requisito parcial


para a obtenção de média bimestral na disciplina do
Projeto Integrado IV

Patos de Minas
2022
SUMÁRIO

1 Tarefa:................................................................................................................... 3
2 Tarefa:................................................................................................................... 4
3 Tarefa:................................................................................................................... 7
4 Tarefa:................................................................................................................... 9
3

1 TAREFA:

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 recursos computacionais
de alto desempenho e ambiente de nuvem devido à redução de custos 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
a caso.

O modelo de serviço é mais apropriado para este caso seria Plataforma


como serviço, nesse caso, um provedor de serviços oferece acesso a um ambiente na nuvem
no qual os usuários podem construir e fornecer aplicativos, nesse ambiente, os usuários têm
acesso a armazenamento e outros recursos de computação, podendo usar ferramentas pré-
montadas para desenvolver, personalizar e testar seus próprios aplicativos, em outras palavras,
PaaS também ajuda a possibilitar SaaS.
Afinal, PaaS é o serviço de hospedagem e implementação de hardware e
software usado, por exemplo, para oferecer software como serviço na internet, mais uma vez,
o custo e a facilidade de implementação são os principais benefícios, as soluções de PaaS
permitem que aplicativos e softwares sejam disponibilizados com uma pequena fração do
preço que um desenvolvedor teria ao construir a plataforma por conta própria.
4

2 TAREFA:

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; b) Pesquise os estados das threads; c) Os benefícios da
programação multithread; d) Operações de thread.

A- Um programa ou processo tem normalmente um fluxo de controle,


assim o programa é executado sequencialmente com seu único fluxo de controle.
Nesse ponto entram as threads, com as threads podemos ter mais de um
único fluxo de controle em nosso aplicativo, assim o nosso aplicativo comportara como se
tivessem vários aplicativos com partes de seu código atuando em paralelo no sistema. Threads
são entidades escalonadas para executarem na CPU, as threads concorrerão pelo processador
juntamente com mais threads que tiverem no programa, ou concorrerá apenas com o fluxo do
programa.

B- A execução de uma thread pode passar por quatro estados:

Novo: quando é criada. Ou seja, quando é alocada área de memória para ela
através do operador new, ao ser criada, a thread passa a ser registrada dentro da JVM, para
que a mesma posso ser executada.
Executável: quando for ativada, o processo de ativação é originado pelo
método start(), é importante frisar que uma thread executável não está necessariamente sendo
executada, pois quem determina o tempo de sua execução é a JVM ou o S.O.
Bloqueado: quando for desativada, para desativar uma thread é necessário
que ocorra uma das quatro operações a seguir:
Foi chamado o método sleep(long tempo) da thread;
Foi chamado o método suspend() da thread (método deprecado);
A trhead chamou o método wait();
A thread chamou uma operação de I/O que bloqueia a CPU;
Para a thread sair do estado de bloqueado e voltar para o estado de
executável, uma das seguintes operações deve ocorrer, em oposição as ações acima:
Retornar após o tempo especificado, caso a thread estiver adormecida;
5

Retornar através do método resume(), caso a thread tiver sido suspensa


(método deprecado);
Retornar com o método notify() (ou notifyAll()), caso a thread estiver em
espera;
Retornar após a conclusão da operação de I/O.
Encerrado: quando encerrar a sua execução. Isto pode acorrer pelo término
do método run(), ou pela chamada explícita do método stop().

C- Threads permitem que múltiplas execuções ocorram no mesmo


ambiente do aplicativo com um grande grau de independência uma da outra, portanto, se
temos muitas threads executando em paralelo no sistema é análogo a múltiplos aplicativos
executando em paralelo em um computador, devemos pensar que multithreading nada mais é
do que um aplicativo que possui múltiplas threads nesse mesmo aplicativo e compartilham o
mesmo espaço de endereçamento do aplicativo em execução, então vê-se que ao invés de
criarmos um novo aplicativo para fazer uma determinada tarefa para o nosso aplicativo, é
muito mais barato apenas criar uma thread para esse fim, visto que criar um aplicativo requer
muito processamento por parte do processador, além de alocar mais memória para o novo
aplicativo.

D- Há quatro operações básicas na gestão de threads: criar, terminar,


thread join e thread yield.
Criar (thread creation): Basicamente uma thread pode criar outra(s),
sendo que depois essas mesmas threads são executas 'simultaneamente'. A thread criadora é a
thread-mãe e a thread criada é a thread-filho. Threads incluídas na função main quando
executadas podem criar threads-filho. Um exemplo seria a thread A que executa inicialmente,
mais tarde é criada a thread B, depois de criadas, a thread A e thread B executam
simultaneamente, em seguida a thread A pode criar uma ou mais threads (por exemplo uma
thread C), depois de criada a thread C, há três threads executando simultaneamente e todas
disputam o uso da CPU. Entretanto, a thread que pode ser executada a qualquer momento não
é de conhecimento da CPU.
Terminar (thread termination): Na maioria dos casos as threads não são
criadas e executadas eternamente, depois de terminado o seu objetivo, a thread termina, então,
a thread que criou estas duas threads-filho termina também, porque sua tarefa atribuída se
completa.
6

Na matrix de multiplicação (matrix multiplication), uma vez que o valor de


C[i,j] é computado, a thread correspondente termina, em geral quando a tarefa atribuída a
thread completa, a thread pode ser terminada, além disso, se a thread-mãe terminar, todas as
threads filho terminam também.
Porque isso é importante? Isso é importante porque as threads-filho
compartilham recursos com a thread-mãe, incluindo variáveis, quando a thread-mãe termina,
todas as variáveis são perdidas e a thread-filho não poderá aceder aos recursos que a thread-
mãe possuía, assim, se a thread-mãe terminar mais cedo que a thread-filho haverá um
problema! Uma thread pode terminar das seguintes maneiras:

 Retornando da sua rotina mais externa, a thread criadora.


 Quando termina a rotina em que foi começada.
 Chamando pthread_exit, fornecendo um estado de saída.
 Terminando através da função pthread_cancel
 Sincronizar (Thread Join)

A junção de threads (thread join): A thread pode executar o thread join e


aguardar até a outra thread terminar, em geral o thread join é utilizado para a thread-mãe se
sincronizar com uma das threads-filho.
Thread Yield (Rendimento da thread): Suponha que você executa um
certo número de programas o tempo todo no computador, isso é possível devido a CPU
escalonar pouco a pouco outros ciclos da CPU, assim outros programas podem ser
executados. Isso pode ser um problema de política de planejamento do Sistema Operacional,
quando escrevemos programas com múltiplas threads, temos que fazer corretamente para que
algumas threads não ocupem a CPU eternamente, ou por um tempo muito longo sem
abandoná-lo, senão terminar na situação acima quando uma ou duas threads executam
enquanto outras simplesmente esperam para retornar, liberamos espaço na memória graças a
thread yield, quando a thread executa o thread yield, a execução da thread é suspensa e a CPU
passa para uma outra thread em execução, essa thread aguardará até a CPU tornar-se
disponível novamente.
7

3 TAREFA:

Descreva detalhadamente todos os métodos HTTP existentes e cite um


exemplo de utilização para cada um deles.

O protocolo HTTP define oito métodos (GET, HEAD, POST, PUT,


DELETE, TRACE, OPTIONS e CONNECT) que indicam a ação a ser realizada no recurso
especificado, o método determina o que o servidor deve fazer com o URL fornecido no
momento da requisição de um recurso, um servidor HTTP deve implementar ao menos os
métodos GET e HEAD. Os métodos GET e POST são os que aparecem mais comumente
durante o desenvolvimento web.
Uma solicitação HTTP, ou HTTP Request é uma maneira do navegador
mostrar uma página da internet utilizando um dos oito métodos de solicitação do protocolo
HTTP.
Além de solicitar um determinado arquivo, envia várias informações para o
servidor, sendo elas, o seu IP, a versão do navegador que está usando, que página utilizou
para pedir a HTTP Request e o idioma que você usa.

O método GET requisita uma representação do recurso especificado.


Requisições usando GET devem apenas recuperar dados e não devem ter qualquer outro
efeito.

HEAD é uma variação do GET em que o recurso não é retornado, é usado


para obter metainformações por meio do cabeçalho da resposta, sem ter que recuperar todo o
conteúdo.

O método POST envia dados para serem processados (por exemplo, dados
de um formulário HTML) para o recurso especificado, os dados são incluídos no corpo do
comando, sua utilização em uma requisição ocorre quando é necessário enviar dados ao
servidor para serem processados, geralmente por um programa script identificado no Request-
URI, Uma requisição por meio desse método sempre requer que as informações submetidas
sejam incluídas no corpo da mensagem e formatadas como uma query string, além de conter
cabeçalhos adicionais especificando seu tamanho (Content-Length) e seu formato (Content-
Type), por isso, esse método oferece uma maior segurança em relação aos dados transferidos,
8

ao contrário do método GET que os dados são anexados a URL, ficando visíveis ao usuário.
O método PUT envia os dados de forma semelhante ao POST, através do
corpo do HTTP a diferença entre os 2 métodos é semântica, caso você necessite atualizar os
dados de um usuário, utilizando o método PUT você pode os atualizar diversas vezes, pois o
PUT vai sobrescrever os dados com isso ficará somente com um único registro atualizado, se
você executasse este mesmo procedimento utilizando o método POST, você criaria diversos
registros para cada requisição realizada.

O método DELETE exclui o recurso.

O método TRACE ecoa o pedido, de maneira que o cliente possa saber o


que os servidores intermediários estão mudando em seu pedido.

O método OPTIONS recupera os métodos HTTP que o servidor aceita.

O método CONNECT serve para uso com um proxy que possa se tornar um
túnel SSL e TLS (um túnel pode ser usado, por exemplo, para criar uma conexão segura).
9

4 TAREFA:

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 escrita na linguagem C que implementa um


banco de dados que utiliza a linguagem SQL para criar sua estrutura e realizar consultas, ele é
considerado um banco de dados portátil pois você consegue rodar uma instancia dele sem
necessariamente rodar um processo inteiro de um SGBD para isso.
Sua portabilidade é sua principal vantagem sendo bastante usado para
projetos e processos seletivos em rotina de teste automatizado e em POCs (Provas de
Conceito), outras vantagens são a facilidade de usar, usar sintaxe SQL padrão com mínimas
alterações, ser baseada em arquivos e ser fácil de configurar.
Podemos contar como suas desvantagens não possuir recursos de segurança, não ser
facilmente escalável, não ter customização, não ser adequada para grandes bases de dados
nem ter gerenciamento de usuários.

Você também pode gostar