Escolar Documentos
Profissional Documentos
Cultura Documentos
Sumário
Objetivo do trabalho............................................................................................................ 4
Introdução........................................................................................................................... 5
Contextualização sobre tarefa ambiental abordada no projeto aplicada à plataforma
desenvolvida....................................................................................................................... 5
Exemplos de utilização da plataforma.................................................................................6
Fundamentos da comunicação de dados em rede..............................................................7
TCP/IP................................................................................................................................ 7
Soquetes de Berkeley.......................................................................................................10
Arquitetura cliente/servidor................................................................................................11
Tecnologias utilizadas...................................................................................................13
Banco de dados................................................................................................................13
Linguagem de programação – Backend............................................................................14
Linguagem de programação - Frontend............................................................................14
Plano de desenvolvimento da aplicação...........................................................................15
Metodologia agile..............................................................................................................15
Conceito............................................................................................................................ 15
Indivíduos e iterações mais que processos e ferramentas................................................16
Software funcional mais que documentação abrangente..................................................16
Colaboração do cliente mais que negociação de contratos...............................................16
Responder a mudanças mais que seguir um plano...........................................................16
Módulos do projeto........................................................................................................ 17
Divisão das iterações (sprints)..........................................................................................17
Divisão das iterações (sprints)..........................................................................................17
Cronograma de execução.................................................................................................19
Administração do processo...............................................................................................20
Projeto: Estrutura do programa......................................................................................22
Arquitetura de módulos a serem desenvolvidos................................................................22
3
Objetivo do trabalho
Introdução
https://img.r7.com/images/2016/02/25/5r5e39p7wi_4s2327aee4_file?dimensions=460x305
1https://jornalismosocioambiental.files.wordpress.com/
2016/03/12321416_1061750913864251_8128724941793527854_n.jpg?
w=1400
Mais de três anos após a tragédia ainda é
possível visualizar algumas consequências do desastre, exemplos:
• População de outras cidades afetados pela lama da barragem, sofrendo com
efeitos na contaminação da água dos rios por metais pesados, que a tornavam
imprópria para consumo, podendo causar doenças respiratórias e de pele.
• Este desastre impactou diretamente a vida aquática, onde ocorreu morte de
milhares de peixes por falta de oxigênio na água e de obstrução de suas brânquias,
além de peixes também houve diversos seres vivos mortos, que destruiu
completamente a cadeia alimentar nos ambientais atingidos
7
Incêndio no Amazonas
Os
https://conteudo.imguol.com.br/c/noticias/bb/2019/08/19/ceu-escuro-em-sao-paulo- https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcR5DgKWgR9py1eoDXT-
1566244250745_v2_1920x1280.jpg UsIFRQn4ZhTceCaSi1npTStwgqU98gHl&usqp=CAU
TCP/IP
uma guerra nuclear. A partir de 1972 o projeto ARPANET começou crescer em uma
comunidade internacional e hoje se transformou no que conhecemos como Internet.
O protocolo TCP/IP, atualmente é o protocolo mais usado em redes locais.
Isso deve-se basicamente à popularização da Internet, a rede mundial de
computadores.
Abaixo temos alguns dos benefícios do protocolo TCP/IP:
• Padronização: Como o próprio nome já diz, determina um padrão de
um protocolo que é o mais completo e aceito protocolo disponível atualmente, todos
os sistemas operacionais modernos oferecem suporte para este protocolo, e boa
parte das grandes redes se baseiam em TCP/IP para a maior parte de seu tráfego.
• Roteamento: Basicamente permite tecnologias mais antigas e novas se
conectarem à internet. Trabalha com protocolos de linha como P2P (point to point
protocol), permitindo conexão remota a partir de linha discada ou dedicada.
• Interconectividade: Tecnologia responsável por conectar sistemas não
similares, o FTP e Telnet utilizam desta tecnologia.
• Protocolo Robusto: escalável, multiplataforma, com estrutura para ser
utilizada em SO cliente/servidor, permitindo a utilização de aplicações desse porte
entre dois pontos distantes.
• Internet: É através dos protocolos TCP/IP que obtemos acesso a
internet, basicamente: As redes locais distribuem servidores de acesso a internet
(proxy servers) e os hosts locais se conectam a estes servidores para obter o acesso
à internet.
Soquetes de Berkeley
Soquetes Berkeley originou com o 4.2BSD Unix sistema operacional
(lançado em 1983), como uma única interface de programação. Só em 1989, no
entanto, poderia UC Berkeley versões de lançamento de seu sistema operacional e
de rede biblioteca livre das restrições de licenciamento.
Na computação, um Socket é utilizado em ligações de redes de
computadores para uma conexão bidirecional de comunicação entre dois
programas. A interface padronizada de sockets surgiu originalmente no sistema
operacional Unix BSD (Berkeley Software Distribution), desenvolvidos para
aplicações Cliente / Servidor, aonde Cliente e Servidor pode, estar em máquinas
diferentes, havendo uma comunicação através de protocolos de transportes,
11
fazendo com que quando o aplicativo interagir com o software de protocolo, ele deve
informar se o mesmo é um cliente ou um servidor.
Um Socket por sua vez é uma abstração computacional que mapeia
diretamente a uma porta de transporte, através dos protocolos TCP ou UDP, e mais
um endereço de rede. Os Sockets, por sua vez, se abstraem e conseguem usar
qualquer um dos meios TCP ou UDP já citados acima. Com esse conceito, é
possível identificar unicamente um aplicativo ou servidor na rede de comunicação IP.
Em documentos de RFC (Request for Comments) relacionado a TCP, um
socket em um computador é definido como a combinação de um endereço IP, um
protocolo, e o número da porta do protocolo.
Sockets e RPCs têm a função de implementar numa aplicação as funções
de rede, mas fazem de formas diferentes.
A aplicação cliente utiliza a porta ‘portC’ da máquina ‘hostC’ para enviar
solicitações de serviços e para receber retornos a suas solicitações. A aplicação
servidora visualiza constantemente a porta ‘portS’ da máquina ‘hostS’ aguardando a
chegada de solicitações de serviço. Quando alguma solicitação é recebida, a
aplicação servidora executa o serviço e utiliza a conexão para enviar o retorno com
os resultados do serviço
Os "sockets" de Berkeley são uma API genérica para programação sobre
protocolos de comunicação. A implementação das system-calls desta interface é
"standard" em todos os sistemas operativos UNIX e estende-se também a muitas
outras plataformas.
Dentro do possível é mantida a semântica associada aos descritores de
ficheiros (io.h), os descritores são números inteiros usados para facultar o acesso a
controle das comunicações embebido no núcleo e são aqui conhecidos por
"sockets".
Arquitetura cliente/servidor
A tecnologia cliente/servidor é uma arquitetura na qual o processamento
da informação é dividido em módulos ou processos diferentes. Um processo é
responsável pela manutenção da informação (servidores) e outros responsáveis pela
obtenção dos dados (os clientes).
12
Tecnologias utilizadas
Banco de dados
Metodologia agile
Conceito
Ao longo do desenvolvimento de um projeto vários pontos devem ser
levados em consideração. Esses pontos podem ser internos ao projeto, como
conhecimento técnica da equipe, quanto externos ao mesmo que influenciam
diretamente nele, como a legislação que é alterada e nessa alteração mudar
completamente a regra de negócio que o projeto visa atender.
Com isso em mente, imaginemos o desenvolvimento de um sistema que foi
estipulado um tempo total de 8 meses para sua entrega. O usuário reunia-se com a
equipe de analistas onde os requisitos do projeto eram levantados e a partir deles o
desenvolvimento era iniciado, e só depois de 8 meses o cliente tinha contato com o
produto que ele solicitou. Pensemos que se tratando da área de tecnologia em 8
meses muita coisa pode acontecer, a regra de negócio pode ter mudado, a estrutura
para implantação do sistema pode ter sido alterada, não era bem aquilo que o
cliente imaginava, dentre outros cenários ruins. Pensando em aplicativos como
Nubank, Ifood, Uber a situação se agrava ainda mais, quando a equipe está
correndo contra o tempo para entregar a solução antes de seus concorrentes.
Com esse cenário e dores passadas durante o processo de
desenvolvimento, membros influentes da comunidade de desenvolvimento reuniram-
se em Snowbird em 2001 e publicaram o Manifesto Ágil, documento que agrupa os
princípios e práticas desta metodologia de desenvolvimento. A partir deste manifesto
fundou-se a Agile Alliance, uma organização não lucrativa que promove o
desenvolvimento ágil, além de ter acontecido a adoção desta metodologia por
diversas empresas e startups.
Segundo a Agile Manifest, os principais valores da metodologia são:
16
Módulos do projeto
Task – Dentro de cada User stories existem uma ou muitas tasks, que são
as tarefas a nível técnico que precisam ser realizadas para que aquela User storie
esteja completa.
Com essa estrutura para gerenciamento das tarefas conseguimos dividir o
projeto em partes pequenas, detalhando-as de forma que não fique dúvida ou
subentendido a respeito do que deve ser feito, e se mesmo assim restar dúvida
gerar a direção do que deve ser buscado pelo grupo.
Com isso em mente dividimos o projeto em 5 principais EPICS, conforme a
imagem abaixo:
Com isso foi possível definir as tarefas que tínhamos em mente, podendo
acompanhar cada uma por meio de um status que é possível atribuir as mesmas e
uma quantidade de horas para ser realizada.
Além disso num cenário em que surge um bug na parte de desenvolvimento
ou então uma correção na parte escrita, é possível adicionar a tarefa no quadro e
atribuir um status e tempo para a tarefa ser realizada.
Cronograma de execução
Com boa parte das tarefas definidas o grupo partiu para a divisão das
responsabilidades do projeto.
Administração do processo
Finalmente, com a configuração das iterações definidas, tarefas
determinadas, áreas atribuídas a seus devidos responsáveis e tempo de
desenvolvimento dessas atividades determinado, conseguimos observar por meio da
dashboard que a plataforma nos oferece o andamento do projeto.
em que cada uma delas se encontra. Assim que completas essas tarefas podem ser
movidas pelo mesmo.
É possível também acompanhar se a quantidade de horas total das tarefas
passa ou não da quantidade de horas total de todos os membros daquela iteração.
Por exemplo, se temos uma iteração
de 7 dias corridos, com uma pessoa
trabalhando por 2.5 (2 horas e 30min) por dia,
multiplicamos 7 por 2.5 e teremos uma
iteração com 17,5 (17h30min) de
desenvolvimento total da equipe.
A barra verde acaba sendo as tarefas restantes da iteração atual que ainda
não tiveram seu status alterado.
Recursos
Os recursos são descritos nas URIs das requisições, essas descrições
dependem do recurso que deseja ser acessado, porém, é recomendado indicar o
recurso da URI da mais genérica até a mais específica.
por exemplo:
Ações
Baseado no recurso que você terá diferentes ações a serem aplicadas a fim
de reutilizar o mesmo recurso mantendo uma lógica em cima da ação. As 4 mais
utilizadas são:
Conteúdo
E para que essa comunicação seja possível e necessária definir ainda o
valor que está sendo enviado. Dessa forma o Content-type da requisição irá indicar
que tipo de conteúdo que está sendo enviado pela requisição.
Os serviços RESTful (basicamente serviços que implementaram a
arquitetura REST) normalmente utilizam os formatos YAML, XML e JSON para
transitar as informações.
24
base objetos JavaScript, podemos armazenar como valor de chave coleções (listas)
e objetos, como pode ser visto na chave filmes-favoritos.
Figura 01 - Exemplo de documento objeto JSON gravado em um banco de
dados NoSQL:
{
"nome": "Jefferson da Silva",
"Idade": 30,
"Hobbies" : ["filmes", "jogos",
"Series"]
}
Diagrama de classe
O diagrama de classe tem como objetivo fornecer uma visão macro das
principais classes do sistema e como elas se relacionam.
A figura, mostra a estrutura básica das classes utilizadas na construção da
aplicação server-side (que fica no servidor) ou backend do projeto.
Figura01 - Diagrama de Classe
User Collection:
{
users: {
-doknem: {
id: string,
name: string,
login: string,
password:
string,
access: string
}
}
}
Chat Collection:
{
"chats": {
"ijduiohnhuiwnbd_": {
id: string,
participants: [{
id: string,
name: string,
password: string,
access: string
}],
mensagens: [{
id: string,
owner: {
id: string,
name: string,
password:
string,
access: string
},
receiver: {
id: string,
name: string,
password:
28
string,
access: string
},
content: string,
timestamp: int
}]
},
}
}
}
Message Collection:
Message: {
-djoiwn: {
id: string,
owner: {
id: string,
name: string,
password:
string,
access: string
},
receiver: {
id: string,
name: string,
password: string,
access: string
},
content: string,
timestamp: int
}
}
Coments Collection:
Coments: {
-snijnw:{
id: string,
29
content: string,
timestamp: int,
owner: {
id: string,
name: string,
login: string,
password:
string,
access: string,
leaf: int
}
}
}
Posts Collection:
posts: {
-kemsom:{
id: string,
content: string,
coments: [{
id: string,
content: string,
timestamp: int
}],
tags: [string],
owner: {
id: string,
name: string,
login: string,
password:
string,
access: string
},
timestamp: int
}
}
30
Design
Logo
A prototipagem é uma das partes essenciais a qualquer projeto. É nela que
colocamos todas as nossas ideias e funcionalidades de uma maneira visual, mais
clara.
Aplicação
Nosso primeiro desafio foi fazer um logo que representasse naturalmente
nossa aplicação web.
Depois de diversas horas investidas em
pesquisas, achamos algo que se encaixava
perfeitamente na finalidade da nossa aplicação
web.
Dois balõezinhos retangulares paralelos
intercepto, e nesta intersecção uma folha. Os
dois balões representam, comumente na
linguagem da internet, bate-papo. Normalmente
utilizado em diversos outros logos de aplicativos
mensageiros como o WhatsApp, Facebook Messenger e tantos outros... enquanto a
folha significava o meio-ambiente/sustentabilidade.
Nome
A escolha do nome envolveu um nível grande de brainstorming. Primeiro
escolhemos palavras que nos remetiam a finalidade do nosso aplicativo web: meio-
ambiente, sustentabilidade, florestas, app, chat…
Como o inglês é um idioma muito presente na área de tecnologia,
resolvemos que o nome do nosso aplicativo deveria estar nessa língua.
Depois de diversas conversas em grupo, ficou decidido que a aplicação web
deveria se chamar Environment Chat ou Leaf Chat. Como o nosso logo tem uma
folha dentro dele, decidimos que Leaf Chat se encaixaria perfeitamente.
Paleta de cores
31
Protótipos
Iniciar sessão
Essa é a primeira tela que aparecerá caso o usuário não esteja logado na
sua conta.
Para logar será solicitado o seu e-mail e senha.
32
Caso não tenha um login, o usuário terá a opção de criar uma conta.
Caso não tenha um login, o usuário terá a opção de criar uma conta.
33
Página Inicial
Logo após o usuário fazer o login, será redirecionado para a página inicial.
Onde ele terá algumas funcionalidades disponíveis
● Cadastrar novos posts, visualizar, comentar e/ou dar “leaf” na
postagem;
● Listar mensagens da conversa, enviar mensagem, enviar arquivo de
áudio, enviar arquivo de vídeo;
● Alternar entre visualizar os contatos ou conversas;
● Sair da sua conta
Na
aba
de
34
Usuários
Essa parte da página só estará disponível para contas que forem admin.
Dentro dela será possível visualizar os usuários, criar novos usuários e editar/deletar
usuários já existentes.
● Reciclagem
● Mudanças climáticas
● Espécies animais
● Poluição
Usuário Comum:
Conforme indica o diagrama no primeiro acesso que o usuário comum terá
acesso a tela de efetuar login, recuperar sua senha ou cadastrar um novo login.
Somente ao realizar o login o usuário comum terá acesso a página home, onde ele
terá uma listagem dos posts realizados por outros usuários, uma listagem das
conversas que ele realizou com outros usuários, poderá realizar um novo post e
visualizar numa espécie de lista de contatos os usuários disponíveis para iniciar uma
conversa.
Ao estar logado o usuário terá acesso a uma listagem dos usuários do
sistema, tendo ainda a possibilidade de buscar por um específico. Caso ele queira, é
possível iniciar uma conversa ao selecionar um usuário de interesse.
O cadastro do post que o usuário tem a possibilidade de fazer será uma
mensagem ou um texto com uma tag relacionada a ecologia.
Existirá a listagem dos posts para que os usuários logados interajam lendo e
comentando nas postagens.
Finalmente, teremos uma listagem das conversas realizadas pelo usuário
que estará logado. A partir dessa listagem é possível selecionar uma conversa e
enviar novas mensagens ou então arquivos multimídia (áudios e vídeos) nessa
conversa.
Usuário Administrador:
O usuário administrador terá todos os acessos que o usuário comum tem,
com o acréscimo da tela de usuários, onde somente usuários do tipo admin além de
visualizar uma listagem de todos os usuários no sistema, conseguem cadastrar
novos usuários, editar ou ainda deletar conforme a necessidade.
38
Referências bibliográficas
https://www.bbc.com/portuguese/brasil-47206026
https://brasilescola.uol.com.br/biologia/impactos-ambientais-acidente-mariana-
mg.htm
https://noticias.uol.com.br/ultimas-noticias/afp/2019/08/21/desmatamento-e-principal-
causa-de-incendios-na-amazonia-afirma-paulo-moutinho.htm
https://www.infoescola.com/ecologia/crime-ambiental/
https://rbispo77.jusbrasil.com.br/artigos/627921409/voce-sabe-o-que-sao-crimes-
ambientais
https://ibracam.com.br/blog/o-que-e-considerado-um-crime-ambiental-no-brasil
https://www.space.com/amazon-rainforest-fires-2019-nasa-satellite-views.html
https://www.json.org/json-en.html
http://www.cienciaedados.com/top-6-nosql-databases/
https://aws.amazon.com/pt/nosql/
https://www.devmedia.com.br/como-criar-um-chat-com-node-js/33719
https://www.luiztools.com.br/post/criando-um-chat-com-nodejs-e-socketio/?
gclid=CjwKCAjwvOHzBRBoEiwA48i6AlxyIkf_A5QxBGUBW1H_-5Jw7Q3T-oAtdgm-
RwtOhNZvnBhoH4g0PhoCLkQQAvD_BwE
https://blog.schoolofnet.com/o-que-e-uma-spa-single-page-application/
https://medium.com/@joaomarcuraa/o-protocolo-tcp-ip-1dc2cdb88b07 https://
paginas.fe.up.pt/~mrs01003/TCP_IP.htm
https://sites.google.com/site/rodrigoerubentic/-o-protocolo-da-internet-o-tcp-ip
https://protocolo-tcp-ip.webnode.pt/noticias/
https://wiki.portugal-a-programar.pt/dev_geral:c:sockets_de_berkeley
https://www.dei.isep.ipp.pt/~asc/doc/sockets-berkeley.html
https://pt.qwe.wiki/wiki/Berkeley_sockets#History_and_implementations
https://arqserv.wordpress.com/2012/03/17/como-funciona-a-arquitetura-cliente-
servidor/
40
https://profsalu.com/2014/05/18/arquitetura-clienteservidor/
https://www.tecmundo.com.br/internet/982-o-que-e-cliente-servidor-.htm
https://pt.wikipedia.org/wiki/Desenvolvimento_%C3%A1gil_de_software
https://docs.microsoft.com/en-us/azure/devops/?view=azure-devops
http://sao-paulo.pm.org/pub/arquitetura-rest-e-o-servico-web-restful-
https://medium.com/@luanacm/protocolo-http-api-e-rest-de-forma-resumida-
36a5494f3da4
https://blog.caelum.com.br/rest-principios-e-boas-praticas/
https://www.ateomomento.com.br/o-que-e-caso-de-uso/
https://medium.com/operacionalti/uml-diagrama-de-casos-de-uso-29f4358ce4d5
https://firebase.google.com/docs
https://blog.totalcross.com/pt/banco-de-dados-relacional-nao-relacional/
Logo:
https://br.pinterest.com/pin/830773462497417259/
Inspiração do layout:
https://uimovement.com/design/profile-page-1/
https://web.whatsapp.com/