Você está na página 1de 17

FORMAÇÃO

PROFISSIONAL EM SEMANA 1

COMPUTAÇÃO
entender o que envolve o pensamento computacional e suas áreas até a área de
formação em computação;
conhecer o perfil e as atividades dos profissionais da computação;
compreender como as habilidades que refletem diretamente no aprendizado do
indivíduo estão relacionadas com o perfil do profissional do futuro.

Pensamento Computacional Capacidade de sistematizar,


representar, analisar e
resolver problemas.

Decomposição Identificação Abstração Algoritmos


de Padrões 4 das 10 habilitades dos profissionais
do futuro estão associados ao
Passos para a resolução de problema pensamento computacional:

com o uso da lógica: Resolução de problemas complexos


Pensamento crítica
Enunciar o problema Criatividade
Descrever as partes constituintes do Flexibilidade Cognitiva
problema

Ordenação lógica das premissas Relação de Causa e Efeito

Avaliação Conclusiva

Conclusão

Na análise indutiva, as premissas ou, ainda, os fatos conduzem a uma “lei de formação”, pela repetição de
algum padrão de comportamento.
No método dedutivo, as premissas são avaliadas e ordenadas em uma sequência de causa e efeito, de
modo que a conclusão obtida seja resultante da sequência completa, emergindo como fato novo extraído
ou, ainda, deduzido a partir das premissas constituintes.

A programação de computadores é o processo de registrar na memória da máquina uma


sequência de comandos, escrita em uma linguagem de programação de computadores. Há
o uso de algoritmos que é uma sequência de instruções, escritas de forma clara, ordenada e
finita, e elaborada para realizar uma determinada tarefa ou resolver um problema.
Utilizar o ambiente Google Colab para criação de
notebook e codificação em Python.
SEMANA 2 Identificar bibliotecas e ferramentas que podem
ser importadas no Colab para facilitar o
desenvolvimento.
Explorar ferramentas que auxiliem em ciência de
dados.

Linguagens de Programação
São constituídas de comandos, que quando usados corretamente, executam uma ação
visando a comunicação com o computador.
Critérios de Avaliação Legibilidade, Facilidade de Escrita, Confiabilidade, Custo e Arquitetura
dos Computadores
Categorias(Paradigmas) Imperativas, funcionais, lógicas e orientadas a objetos.

Trade-off

Confiabilidade e custo de execução


Resolver desafios lógicos;
Descrever a estratégia de desenvolvimento de
programas de computadores; SEMANA 3
Compreender o projeto e a divisão dos processos de
gerenciamento de projetos em grupos.

Projeto:
"Um projeto é um esforço temporário que tem como finalidade um resultado único e possui
recursos delimitados”
É temporário Criar novo produto ou serviço ou aprimorar um existente Deve ter escopo e estimar custos no início

Projeto de Software Engenharia de Software


Envolvem Abordagem sistemática, disciplinada
programas documentos e capaz de ser medida ao longo de
um processo de construção de um
software. Processo é um conjunto de
atividades, ações e tarefas realizadas
Processo: na criação de algum artefato

Tempo indeterminado

estrutura de dados Resultado Padrão

Trabalho Repetitivo

PR CESSO DE SOFTWARE
É um conjunto de atividades para especificação, projeto, implementação e teste de software.
Uma metodologia de processo genérica para engenharia de software estabelece cinco atividades
metodológicas: comunicação, planejamento, modelagem, construção e entrega.
Comunicação: Compreende os objetivos dos envolvidos e define o escopo e os recursos do projeto.
Planejamento: Define um mapa que guia a equipe do projeto, descrevendo tarefas, riscos e recursos.
Modelagem: Esboça e prototipa, para que todos os envolvidos no projeto entendam melhor as necessidades do software a
ser desenvolvido.
Construção: Engloba os testes que são realizados pela equipe do projeto antes de apresentar para o cliente.
Entrega: É avaliada pelo cliente que analisa o que foi apresentado em relação ao escopo definido e acertado entre os
envolvidos, sendo que após essa análise, o cliente deve retornar o aceite ou não.

Pontos-chave: E specificação D esenvolvimento V alidação E volução

MODELO DE PROCESSOS
Cascata: atividades na forma de processos em fases distintas.
Desenvolvimento Incremental: atividades intercaladas apresentando uma série de versões. O mais aplicado
Integração e configuração: baseado na disponibilidade de componentes ou sistemas reusáveis.
Conhecer detalhes históricos sobre a criação de importantes padrões da internet;
Compreender o conceito de bibliotecas e frameworks;
SEMANA 4
Identificar vantagens e desvantagens no uso destas bibliotecas e frameworks;
Conhecer algumas áreas de atuação do profissional de Computação;
Identificar frameworks de desenvolvimento para facilitar a implementação de
aplicativos e sistemas Web.

HISTÓRICO DA INTERNET

1945 1965 1968 1989


Vannevar Bush Vannevar Bush Douglas Engelbart Tim Berners-Lee
Conceito de hipertexto Hipertexto Computação Interativa Início da Internet
Memex Xanadu Pioneiro na comunicação MESH
remota
1990
1992 Tim Berners-Lee
1994 Tim Berners-Lee WWW
Formalização do HTML

2002
Rich Internet Application (RIA): Denomina aplicações web com características e funcionalidades de
softwares para desktop. Transfere o processamento das interfaces para os navegadores no lado do cliente
e mantém o conteúdo no servidor.

Protocolo: surgem para informar aos desenvolvedores as melhores práticas na criação de sites e sistemas,
garantindo aos usuários acessibilidade e compatibilidade.
LINGUAGENS E BIBLIOTECAS
Uma linguagem é um método padronizado para se comunicar com o com-putador. É importante distinguir entre
linguagem de marcação (tipo HTML), na qual definimos (marcamos) elementos, e linguagem de programação
(tipo JavaScript), utilizada para definir programas. Uma biblioteca é uma coleção de códigos já implementados,
empregada para simplificar a escrita do código

Utiliza seletores CSS para


Vasta quantidade de Ocupa pouco espaço em
localizar elementos da estrutura
plug-ins disco
de marcação HTML

Podem ocorrer conflitos


O código-fonte não As aplicações precisam de um
entre scripts dificultando a
é tão protegido servidor para gerenciar sessões
depuração

Facilidade para criar aplicações Componentes Melhorias na performance por


web dinâmicas reutilizáveis conta do virtual DOM

O alto ritmo de Abrange apenas as camadas da


Pouca documentação
desenvolvimento interface do usuário

Uma estrutura consistente que


Estruturas e estilos Foco na experiência do
suporta grande parte dos
responsivos usuário
navegadores

Os estilos podem gerar


HTML não é O JavaScript está vinculado ao
muitos resultados
nativamente compatível jQuery
desnecessários
Os componentes podem ser
Prototipagem mais Reduz a carga das CPUs do
reutilizados em diferentes
rápida de aplicativos servidor
partes da aplicação

Dependência do Aplicações complexas


Pouca documentação
JavaScript apresentam atrasos

FRAMEWORKS PARA O DESENVOLVIMENTO DE SOFTWARES


Frameworks são plataformas de desenvolvimento que
fornecem modelos básicos com diferentes funcionalidades já
implementadas, que podem ser utilizadas ou não pelo
desenvolvedor. Costumam favorecer o gerenciamen-to ágil de
projetos.

falta falar as definições . ( ) HTML (Hypertext Markup


Language ou Linguagem de Marcação de Hipertexto) é o
bloco de construção mais básico da web, no qual "hipertexto"
corresponde aos links que conectam páginas da web entre si.
II. ( ) CSS (Cascading Style Sheets ou Folhas de Estilo em
Cascata) é uma linguagem utilizada para descrever os links de
um documento escrito em HTML.
III. ( ) JavaScript é uma linguagem de programação que
possibilita implementar itens não estáticos, como mapas
interativos, gráficos ou jogos.
IV. ( ) AJAX (Asynchronous JavaScript e XML) é uma prática de
programação da combinação de HTML, CSS, JavaScript, e
XMLHttpRequest object, para a construção de páginas web
mais complexas.
V. ( ) XML (Extensible Markup Language) é uma linguagem de
marcação genérica, em que as tags XML são empregadas
para descrever dados, e não somente apresentar, como as
tags HTML.
VI. ( ) JSON (Notação de Objetos JavaScript) é um formato de
dados concomitante incapaz de representar números,
booleanos, textos, vazios, listas (sequência ordenada de
valores) e objetos (mapeamento de valores de texto),
composto por esses valores (ou por outras listas e objetos)
sem que tenham sido declarados em uma classe básica
anteriormente.

e os comandos de javascript e jquery


Identificar frameworks de desenvolvimento em Python;
Conhecer características específicas do framework Django;
Desenvolver aplicações no framework Django com Python; SEMANA 5
Entender os conceitos de APIs e webservices;
Exercitar os conceitos aprendidos criando uma API do tipo Rest.
DJANGO: é um framework de web server-side extremamente popular e repleto de características, escrito
em Python. Utiliza o padrão model-template-view. O DJANGO apresenta uma estrutura de alto nível que
otimiza o desenvolvimento de aplicativos, possuindo uma variedade de bibliotecas que permitem uma
menor necessidade de codificação e uma grande reutilização de componentes, o que garantirá consistência
a projetos de médio e grande porte. O Django tem como princípio o conceito DRY (Don’t Repeat Yourself –
Não se Repita). Completo - Versátil - Seguro - Escalável - Sustentável - Portável

SEGURANÇA WEB

Quase todos os ataques são bem sucedidos quando a aplicação web confia nos dados do navegador.
Sempre verifique e "desinfete" todos os dados recebidos. Sempre assuma o pior.
CSRF - Cross site request forgery: permitem que um usuário malicioso execute ações usando as
credenciais de outro usuário sem o conhecimento ou consentimento desse usuário.
A forma como a proteção é habilitada é incluindo a tag de template {% csrf_token %} em sua
definição de formulário.
SQL: As vulnerabilidades de injeção de SQL (SQL injection) permitem usuários mal-intencionados
executarem código SQL arbitrário em um banco de dados, permitindo que dados sejam acessados,
modificados ou apagados independentemente das permissões do usuário.
Em quase todos os casos você acessará o banco de dados usando querysets/models do Django,
de mdo que o SQL resultante será devidamente escapado pelo driver de banco de dados
subjacente.
CLICKJACKING: m usuário malicioso sequestra clicks destinados a um site de visível no nível superior e
os encaminha para uma página oculta abaixo. Essa técnica pode ser usada, por exemplo, para exibir um
site de banco legítimo, mas capturar as credenciais de login em um <iframe> invisível, controlado pelo
atacante.
Na forma do X-Frame-Options middleware que, em um navegador de suporte, pode impedir que
um site seja renderizado dentro de um frame.
XSS - Cross site scripting: é um termo utilizado para descrever uma classe de ataques que permitem um
invasor injetar scripts no lado cliente, através do website, no navegador de outros usuários. Issi
geralmente é conseguido armazenando scripts maliciosos no banco de dados onde eles podem ser
recuperado e exibidos para outros usuários, ou fazendo com que usuários cliquem em um link que fará
com que o JavaScript do invasor seja executado pelo navegador do usuário.
O sistema de templates do Django protege você da maioria dos ataques XSS escapando de
caracteres específicos que são "perigosos" em HTML.
Aplicação de SSL/HTTPS: pode ser habilitado no servidor web para criptografar todo o tráfego entre o
site e o navegador, incluindo credenciais de autenticação que seriam enviadas em texto simples (habilitar
HTTPS é altamente recomendado). Se HTTPS estiver habilitado o Django fornece uma série de outras
proteções que você pode utilizar:
SECURE_PROXY_SSL_HEADER pode ser utilizado para verificar se o conteúdo é seguro, mesmo se
for recebido de um proxy não HTTP.
SECURE_SSL_REDIRECT é usado para redirecionar todas as requisições HTTP para HTTPS.
HTTP Strict Transport Security (HSTS). Este é um cabeçalho HTTP que informa ao navegador que
todas as conexões futuras com um determinado site devem sempre utilizar HTTP
SESSION_COOKIE_SECURE e CSRF_COOKIE_SECURE como True. Isso garantirá que os cookies
sejam enviados apenas por HTTPS.
Solução para a integração entre sistemas e aplicações. tendo como base o fornecimento de um
ponto de acesso entre a aplicação e o cliente, seja um usuário ou outra aplicação.
As APIs dizem respeito a um conjunto de rotinas e padrões estabelecidos e documentados por
um sistema, para que outras aplicações consigam utilizar funcionalidades desse sistema sem
que haja a necessidade de conhecimento em detalhes da implementação dos serviços
utilizados. Dessa forma, as APIs permitem a interoperabilidade entre aplicações diferentes e,
com isso, a comunicação entre as aplicações e os usuários.

OBJETIVOS DE UMA API

habilitar consumo na forma de autoatendimento por parte de desenvolvedores de aplicações, assim


como de usuários de aplicações;
reduzir barreiras de acesso a recursos empresariais valorosos;
priorizar as necessidades e preferências dos clientes desenvolvedores de aplicações;
encorajar a colaboração entre recursos internos e externos;
desenvolver endereçamento de segurança e de desafios de escalabilidade, devido à exposição de
recursos de tecnologia da informação (TI) publicamente
Maximizar o valor comercial da interface de acesso.
REST: trata-se de um estilo arquitetural para aplicações baseadas em rede, ou web services. Na arquitetura
REST, tudo está relacionado com recursos, sendo que um recurso é um objeto com seus respectivos dados
associados e tem relacionamentos com outros recursos, bem como um conjunto de métodos ou verbos
para realizar as operações. Em geral, são utilizados os seguintes métodos: GET, para recuperar dados;
POST, para criar novas entradas; PUT, para alterar; e DELETE, para apagar. Oferece suporte às operações
que envolvem o CRUD.
Restrições: cliente-servidor, stateless,
cache, sistemas em camadas, interface
uniforme e código sob demanda.

PROTOCOLO JSON
Considerado um padrão internacional formal de processamento de dados. Diferença com o
JSON não ser uma linguagem de marcação e não possuir tags de abertura e fechamento. Com o
JSON, a informação é representada de forma mais compacta do que no XML. Outra diferença é
que, com o JSON, não é possível executar instruções. O JSON costuma ser utilizado para a troca de
informações, ao passo que o XML possui outras aplicações. Por ser mais enxuto e leve, o JSON tem
sido mais utilizado pelas grandes empresas nas APIs REST do que o XML.
Arquitetura do DJANGO: MTV - O usuário faz uma requisição pelo browser, utilizando uma rota, e é
executado um método das Views, que utiliza os Models para acessar o banco de dados e retornar as
informações. Essas informações são renderizadas pela camada de Template e, finalmente, são
renderizadas para o usuário pelo navegador.
Django suporta (principalmente) quatro bancos de dados (PostgreSQL, MySQL, Oracle, e SQLite
), contudo, existem bibliotecas community que fornecem níveis variados de suporte para outros
populares bancos de dados SQL e NoSQL.
Entender os conceitos de IoT;
Conhecer a arquitetura, o funcionamento e tecnologias envolvidas em
aplicações de IoT; SEMANA 6
Conhecer algumas aplicações de IoT;
Conhecer os conceitos básicos das tecnologias MQTT e REST para
desenvolver soluções IoT por meio de mensagens e WebServices.

INTERNET DAS COISAS

A ênfase está mudando de forma e passou a conectar tudo (todas as coisas) à Internet.
Definições:
Coisa: é um objeto comum colocado em nosso ambiente diário
Dispositivo: um sensor, atuador ou tag
Geralmente, o dispositivo é parte de uma coisa

Arquitetura: Sensores captam dados, a fim de que os gateways concentrem e agreguem dados de
diversos dispositivos. Isso acontece para que os dados sejam armazenados e analisados por um servidor
em nuvem, que entrega os dados já convertidos em informações amigáveis. Assim, o usuário poderá
visualizar o arquivo de qualquer lugar com seu smartphone conectado à Internet.

A internet das coisas demanda Computação em Nuvem em diversos níveis de serviço,


incluindo infraestrutura, plataforma, software e análise de dados.
Infrastructure as a Service - IaaS: deve ir além da provisão da computação e de armazenamento em
servidores. Toda a infraestrutura pode ser virtualizada, criando acesso onipresentea todos os dispositivos
através de uma única interface.
Platform as a Service - PaaS: interoperalidade é a chave. PaaS de propósitos específicos tornarão o
acesso a informações de áreas diversas independentes dos tipos de dispositivos, protocolos e fabricantes.
Software as a Service - SaaS:
Analytics as a Service - AaaS: serviço indispensável. Com a enorme quantidade de dados armazenados,
analisá-los é uma atividade que demanda muitos recursos.
São a base para todo o processo de automação inteligente de ambientes são as RSSFs.
REDES DE SENSORES SEM FIO (RSSF): são dispositivos de sensoriamento com poder de
processamento e comunicação limitados e com restrições energéticas, uma vez que são
muitas vezes alimentados por baterias. Quando utilizadas em conjunto, formam um grande
sistema distribbuído , autonômo e cooperativo que permitem verificar uma variedade de
fen^menos como temperatura, pressão e umidade.
MQTT

Message Queuing Telemetry Transport é um protocolo de mensagens leve para sensores e pequenos
dispositivos móveis otimizado para redes TCP/IP.O esquema de troca de mensagens é fundamentado no
modelo Publicador-Subscritor, extremamente simples e leve. s princípios arquitetônicos são minimizar o
uso de banda de rede e uso de recursos dos equipamentos enquanto garantindo confiabilidade e algum
nível de garantia de entrega. Estes princípios tornam esse protocolo ideal para as comunicações
emergentes (M2M) “machine-to-machine” e para as aplicações “Internet of Things” (Internet das coisas)
um mundo de equipamentos conectados, além das aplicações mobile onde banda e potência da bateria
são relevantes.
O MQTT possui uma estrutura de pacotes
de controle própria, que basicamente é
constituída de três partes:

Cabeçalho fixo — composto de ao


menos [3] 2 bytes, possui 4 bits (posição
byte 1, bits 7–4) designados para definir o
tipo do pacote de controle, 3 bits para
flags (posição byte 1, bits 3–0) e um byte
adicional para suportar bits adicionais do
cabeçalho variável e payload. Flags:
atualmente a maior parte dos parâmetros
de flag (CONNECT, CONNACK..)
encontram-se reservados para usos
futuros.
Cabeçalho variável — nem todos os tipos de mensagem MQTT possuem um cabeçalho variável, que
basicamente traz informações da identificação do pacote. Os tipos de pacotes de controle que usam
identificadores são PUBLISH se QoS > 0), SUBSCRIBE, UNSUBSCRIBE e todos os derivados de confirmação
(PUBACK, SUBACK, UNSUBACK, PUBREC..). Possui um tamanho de até 2 bytes.
Payload — inclui a mensagem como um todo (normalmente os tópicos). Os pacotes de confirmação
(CONNACK, PUBACK, SUBACK…) não necessitam de um payload.

QoS Quality of Service: 0 não tem a confirmação de entrega da mensagem e quem envia não a
armazena para retransmissões

Outros protocolos:
1 que tem a confirmação de entrega com reconhecimento realizado
6LoWPAN
ZigBee que garante a entrega da mensagem exatamente uma vez, com envio
•Advanced Message Queuing 2 de confirmação de recebimento
Protocol (AMQP)
Constrained Application Protocol
(CoAP)

Emuladores:

Cooja, ns, Tossim, Omnet++,


Castalia e Sinalgo.
Entender os conceitos de ciência de dados;
Conhecer as diferenças entre Data Science, Data Analytics e BigData;
Explorar o Colab para desenvolver um exemplo de ciência de dados. SEMANA 7

DATA SCIENCE: área interdisciplinar voltada ao estudo e análise de dados econômicos,


financeiros e sociais, estruturados e não-estruturados, que visa a extração de
conhecimento, detecção de padrões e/ou obtenção de insights para possíveis tomadas de
decisão.

Descrição Método Ferramentas

Análise e Python, R, SAS, Java,


Data Science, Data Data
métodos mais
Análise e extração
Perl, C/C++, Hadoop e
Science de dados
Analytics e Big Data são complexos SQL
áreas de conhecimento e
atuação que trabalham com o
Data Estatísticas Estatísticas
mesmo objeto: dados. É SAS e R
Analytics Descritivas Inferenciais
preciso saber coletar, extrair,
analisar, classificar, examinar e
comparar todos os dados a Processar dados Volume, Velocidade
Big Data //
em larga escala e Variedade
nossa disposição.

A ciência da computação é responsável por armazenar, obter e tratar os dados, já a estatística e a


matemática são as disciplinas por trás das análises estatísticas de mineração e filtragem de dados. Por fim,
a especialização científica refina, questiona e propõe a visualização das informações e dados por meio de
ferramentas gráficas. Os dados são obtidos por intermédio de sistemas diversos, machine learning e
pesquisas empiricas para tratamento por meio das disciplinas supracitadas, em que se dá o nome de
ciência de dados ao uso em conjunto dessas tecnologias e disciplinas.
As ferramentas de BI são utilizadas para analisar descritivamente, ou até mesmo de forma retórica, o que
houve no decorrer do tempo nos processos do negócio, trazendo dados e visões daquilo que já ocorreu,
para que as ferramentas de ciência de dados consigam diagnosticar e prever os próximos passos que
devem ser tomados.
De forma geral, a aplicação da ciência de dados deve ser orientada aos objetivos estratégicos dos negócios,
direcionando as ações das lideranças.

APLICAÇÕES
Uma empresa investe no
gerenciamento e na análise de
dados com o intuito de obter
oportunidades para geração
de receitar e para redução de
cusotos em seus processos
visando o lucro finaceiro.
ATIVIDADES AVALIATIVAS
A sequência geral de análise descritiva do problema, que é contemplada por cinco etapas:
1. Enunciar o problema. 2 Descrever as partes do problema. 3. Ordenar logicamente as premissas.
4. Avaliar as premissas, aplicando o método dedutivo ou indutivo. 5. Concluir formalmente a resolução.
Pensamento computacional é a capacidade de sistematizar, desenhar processos complexos, analisar
e resolver problemas. Os quatro pilares do pensamento computacional são:
Decomposição: identificação dos elementos existentes em um problema, decompondo-se em variáveis
e elementos.
Identificação de padrões: classificação de elementos dentro de categorias ou classes.
Abstração: foco naquilo que realmente importa, no que é primordial, desconsiderando características
menos relevantes.
Algoritmo: conjunto finito de instruções precisas para executar uma ação ou tarefa, comumente
utilizado para a resolução de problemas.
Segundo Booch (1987), a partir da década de 1970, foi desenvolvido o conceito denominado “ciclo de
vida de software”, em que a codificação foi destinada a um papel menor e a manutenção foi
reconhecida como parte importante do ciclo de desenvolvimento. Anteriormente a 1970, as
linguagens de programação e os programadores eram orientados às máquinas. A partir da relevância
dada ao ciclo de vida do software e sua manutenção, tanto programadores quanto linguagens
começaram a ser orientados às pessoas.
Linguagens de programação que utilizam a implementação baseada em compilação traduzem suas
instruções para a linguagem de máquina, e, por isso, tem como principal vantagem a velocidade de
execução dos programas para os usuários.
Já na interpretação pura, os programas são interpretados por um programa “interpretador” que trata
as sentenças de programa em alto nível, em vez de instruções de máquina. Por consequência, o
principal benefício é permitir uma fácil implementação de muitas operações de depuração em
código-fonte, pois todas as mensagens de erro em tempo de execução podem referenciar unidades
de código-fonte.
Por meio da implementação híbrida, é possível obter de forma mais clara uma linguagem mais
próxima da coloquial do ser humano, visto que esse processo compila a informação e traz de
maneira rápida a interpretação, tornando o processo menos complexo.
Python é uma linguagem de programação de alto nível e multiparadigma, criada por Guido van
Rossum em 1989, que permite o desenvolvimento de algoritmos para resolução de problemas por
meio de programas computacionais. É uma linguagem interpretada, imperativa, orientada a objetos,
funcional e de tipagem dinâmica e forte.
O Google Collaboratory corresponde a um serviço de armazenamento em nuvem, com o objetivo de
criar e executar códigos em Python diretamente em um navegador (browser) de Internet. Um dos
principais benefícios desse serviço é permitir o desenvolvimento de aplicações sem a necessidade da
instalação de softwares na máquina, bastando ter uma conta de usuário Google para acessar o
ambiente on-line. Além de não precisar de instalações e configurações, o Google Collaboratory
apresenta interface amigável, facilita o compartilhamento de recursos e o trabalho cooperativo, bem
como fornece acesso gratuito a GPUs e tem bibliotecas pré-instaladas. Esses benefícios são
responsáveis por tornar o Colab um ambiente extremamente amigável de desenvolvimento.
Projetos de desenvolvimento de software têm especificidades inerentes à área da programação e
outras tecnologias envolvidas, assim como projetos de engenharia para a construção de prédios ou
projetos para a criação de um novo produto cosmético também apresentam suas características
particulares inerentes ao produto ou serviço a ser desenvolvido.Normalmente, um gerente de projetos
tem formação acadêmica nas áreas da computação, embora existam diversos profissionais bem
capacitados com formação em outras áreas. Portanto, para esse contexto, ser graduado tanto em
análise e desenvolvimento de sistema quanto em engenharia agronômica são requisitos igualmente
válidos. Já as soft skills desejadas para um gerente de projeto de software são: capacidade de liderança
e de desenvolver equipes, eficiência na comunicação, visão de longo prazo, persistência.
O processo de engenharia de software é a liga que mantém as camadas de ferramentas e métodos
coesas e possibilita o desenvolvimento de software de forma racional e dentro do prazo. Por isso, a
primeira asserção é verdadeira. Todas as abordagens de engenharia devem fundamentar-se em um
comprometimento organizacional com a qualidade, não sendo diferente para a engenharia de software.
Portanto, a segunda asserção é verdadeira, uma vez que a pedra fundamental que sustenta as outras
três camadas é o foco na qualidade de software. Entretanto, o foco em qualidade não é explicação ou
justificativa para os processos serem a base de execução, pois tal justificativa significa conectar as
camadas de métodos e ferramentas.
As cinco atividades sequenciadas que uma metodologia do processo de engenharia de software precisa
ter são:
A comunicação entende os objetivos dos envolvidos para o projeto e alinha entre as partes os
requisitos para a definição dos recursos e das funções do software a ser desenvolvido.
O planejamento cria um “mapa” que ajuda a guiar a equipe na complicada jornada do projeto de
desenvolvimento de um software, definindo cronograma de tarefas, riscos, recursos e produtos
resultantes.
A modelagem cria um “esboço” para que se possa ter uma ideia do todo, criando modelos para
entender melhor as necessidades do software.
A construção combina programação e testes necessários para revelar erros na codificação.
A entrega do software, como uma entidade completa ou como um incremento parcialmente concluído,
é feita ao cliente, que avalia o produto entregue e fornece feedback baseado na avaliação.
Para o desenvolvimento de software, é aconselhável tratá-lo como projeto, no qual, comumente, as
etapas são divididas em: início, organização, execução e fim. Ciclos de vida preditivos têm escopo, prazo
e custo definidos de forma rígida, por isso, são recomendados para projetos em que o escopo do
produto ou serviço a ser entregue está bem definido. Já os ciclos iterativos são recomendados para
projetos com objetivos pouco definidos, ou com alta complexibilidade e pouco conhecimento de como
construir a solução, pois sua natureza incremental permite à equipe se retroalimentar de
conhecimentos e incrementar a experiência durante a execução do projeto. Por fim, os ciclos de vida
adaptativos, também conhecidos como métodos ágeis, são indicados para a participação contínua e
ordenada dos interessados do projeto, com iterações bem estruturadas e que tem por objetivo, ao final
de cada iteração, garantir que o produto esteja pronto para a revisão do cliente.
Um projeto é, obrigatoriamente, temporário, pois deve ter datas de início e fim definidas, mas não
precisa ter datas de pausa estabelecidas. A intenção de um projeto pode ser criar algo novo, ou
aprimorar um produto ou serviço já existente. É imprescindível que exista ao menos um escopo mínimo
de projeto, porém as datas de início e fim podem sofrer alterações – e faz parte do gerenciamento de
projetos administrar tais mudanças. Por fim, é necessário estipular custos e recursos ao iniciar o
projeto e realizar seu acompanhamento durante a execução.
No livro clássico “How to solve it”, George Polya descreveu em linhas gerais a essência da solução de
problemas e, consequentemente, a essência da prática da engenharia de software:

1. Compreender o problema (comunicação e análise).


2. Planejar uma solução (modelagem e projeto de software).
3. Executar o plano (geração de código).
4. Examinar o resultado para ter precisão (testes e garantia da qualidade

De acordo com o segundo princípio KISS, um projeto de software deve ser simples e descomplicado, pois
isso contribui para um sistema mais fácil de compreender, de manter e menos propenso a erros.
Entretanto, simplificar não torna, necessariamente, um projeto mais ágil ou diminui as iterações, porque
muitas vezes são necessárias várias reflexões para simplificar. O quarto princípio determina que “o que
um produz outros consomem” e recomenda especificar, projetar e implementar estando ciente de que
mais alguém terá de entender o que você está fazendo. Portanto, especifique tendo como objetivo os
usuários, projete tendo em mente os implementadores e codifique se preocupando com aqueles que
deverão manter e ampliar o sistema. O sétimo princípio determina: “pense”. Pensar bem e de forma clara
antes de agir quase sempre produz melhores resultados. Quando se analisa alguma coisa,
provavelmente, ela sairá correta. Ganha-se também conhecimento de como fazer correto novamente. O
sexto princípio orienta: “planeje com antecedência, visando à reutilização”. A reutilização economiza
tempo e esforço, reduzindo custos de manutenção e aumentando valor tanto dos componentes
reutilizáveis quanto dos sistemas em que foram implementados.

Um software é um produto digital desenvolvido para execução em meios computacionais. Ele


engloba:

Programas: que quando executados produzem a função e o desempenho desejados.


Documentos: que descrevem a operação e o uso dos programas.
Estruturas de dados: que possibilitam que os programas manipulem, adequadamente, a informação.

Componentes podem ser utilizados por linguagens e frameworks de programação, mas não fazem parte,
obrigatoriamente, da composição de um software. Da mesma forma, bancos de dados podem ser
utilizados para armazenamento de acordo com a estrutura de dados definida, mas não são obrigatórios
para a construção de um software.
Linguagem é uma forma de se comunicar com o computador por meio de codificação estruturada,
podendo ser de alto nível (mais próximo da linguagem humana) ou de baixo nível (mais próximo da
linguagem de máquina). É importante distinguir entre linguagem de marcação (tipo HTML), na qual
definimos elementos, e linguagem de programação (tipo JavaScript), utilizada para definir programas.
Já biblioteca é uma coleção de códigos implementados, que é utilizada para facilitar e tornar mais
produtiva e padronizada a escrita do código. Por fim, framework é uma plataforma de
desenvolvimento que fornece modelos com diferentes funcionalidades já implementadas, que podem
ser utilizadas ou não pelo desenvolvedor, com o intuito de tornar a programação mais fácil e
padronizada.

React abrange apenas as camadas da interface do usuário e é um framework fácil para a criação de
aplicações web dinâmicas, além de apresentar componentes reutilizáveis e de ter boa performance.

AngularJS propicia a reutilização de componentes em diferentes partes da aplicação e é ágil para


prototipar aplicativos, mas apresenta atrasos em aplicações de maior complexidade e pouca
documentação em relação a outros frameworks.
Bootstrap apresenta estrutura consistente que suporta grande parte dos navegadores, com foco na
experiência do usuário. Entretanto, HTML não é nativamente compatível, e o JavaScript está vinculado
ao jQuery.

jQuery apresenta pouca proteção ao código fonte, mas tem vasta quantidade de plugins disponíveis e
ocupa pouco espaço em disco.

A biblioteca jQuery tem sido amplamente utilizada por empresas de todos os portes, inclusive
gigantes como Google, Nokia, Microsoft e Netflix. Isso se deve ao fato de jQuery reduzir o código
JavaScript em poucas linhas para a maioria de tarefas comuns em uma página web, solucionar
problemas de incompatibilidade de navegadores, simplificar o uso de AJAX, dentre outras
funcionalidades. Por fim, as versões slim do jQuery não apresentam os recursos de AJAX nem efeitos
gráficos, com o intuito de poupar espaço de armazenamento.

O profissional especialista no desenvolvimento de interface, capaz de entregar uma interface amigável


ao usuário final, seja nos aplicativos ou navegador, ou ainda em ambos, é denominado desenvolvedor
front-end. Para que um desenvolvedor seja enquadrado como full-stack, ele precisa dominar o
desenvolvimento de back-end e front-end, devendo conhecer de sistemas de hospedagem, redes,
banco de dados, segurança de dados, UX, dentre outros conceitos acerca da completude do
desenvolvimento web.

CSS (Cascading Style Sheets ou Folhas de Estilo em Cascata) é uma linguagem usada para descrever a
apresentação tanto de documentos escritos em HTML quanto em XML, e não para descrever links,
como apresentado na segunda afirmativa. Todas as demais sentenças estão corretas quanto às
características dos padrões clássicos da web.

JSON (Notação de Objetos JavaScript) é um formato de dados permutável, e não concomitante, sendo
capaz de representar números, booleanos, textos, vazios, listas (sequência ordenada de valores) e
objetos (mapeamento de valores de texto), composto por esses valores (ou por outras listas e objetos)
de forma simples, sem necessidade de declarações, classes, bibliotecas ou outros objetos acessórios.

Tim Berners-Lee é considerado o pai da World Wide Web, pois foi o contribuinte mais notável para os
padrões desenvolvidos, especialmente, na década de 1990. A ordem cronológica dos eventos da
questão é:
1989: ele apresenta ao CERN a proposta de seu sistema MESH, com suporte a uma
arquitetura cliente-servidor que deveria prover uma interface (cliente) consistente, que
permitia o acesso à informação, independentemente do ambiente computacional
(servidor) no qual ela estivesse armazenada, além de suportar diversos tipos de
documentos por meio de diferentes tipos de protocolos, e também um sistema de
endereçamento universal que permitiria a qualquer usuário o acesso à informação.

1990: apresenta o protótipo de um servidor que implementou sua proposta, que passou a
ser denominada World Wide Web.

1992: interfaces cliente-servidor são publicizadas e Berners-Lee realiza a primeira


formalização do HTML.

1994: fundou o W3C, formado por universidades, centros de pesquisa e indústrias, com o
objetivo de promover um direcionamento estável para a web.
Para poder capturar um evento, é preciso estabelecer um “observador”
(listener), que fica esperando o evento ocorrer, além de indicar o que fazer
$('#box87').on('click', fx) quando o evento ocorre. Para isso, utiliza-se o método “on”, que aponta o
function fx(event){ evento observado e a função para gerenciá-lo (linha 1). Dentro do código
$('#box87').css('width', 400) exemplificado, a função “fx” recebe automaticamente como parâmetro o
} evento que gerou a chamada (linha 2). Por fim, a função seleciona novamente
o elemento “box87” e modifica a largura para 400 com o método CSS (linha 3)
e encerra o código (linha 4).
Muitas das ameaças mais comuns da web são tratadas pelo framework Django. Sobre as sentenças,
apenas a primeira está incorreta, pois se o HTTPS (e não IPv6) estiver habilitado, o Django fornece
várias proteções, como SECURE_PROXY_SSL_HEADER (verifica se o conteúdo é seguro) e
SECURE_SSL_REDIRECT (redireciona todas as requisições HTTP para HTTPS). As demais afirmativas
estão corretas quanto aos mecanismos de segurança disponibilizados pela plataforma de
desenvolvimento.
O framework Django cuida de grande parte do trabalho do desenvolvimento web, para que o
desenvolvedor possa se concentrar em escrever sua aplicação sem precisar reinventar a roda. Além
disso, é gratuito e de código aberto, o que garante constante evolução. É muito fácil de começar a
desenvolver, permitindo levar os aplicativos do conceito à conclusão o mais rápido possível. É
extremamente escalável, podendo ser utilizado para projetos de médio e grande portes, ou seja, pode
ser utilizado para sites de grande movimentação. Apresenta uma variedade de bibliotecas,
mecanismos de autenticação, administração de conteúdo, mapas do site e vários recursos nativos.
Quanto à segurança, a plataforma de desenvolvimento auxilia os desenvolvedores a prevenir muitos
equívocos recorrentes de segurança, como injeção de SQL, script entre sites, falsificação de
solicitações entre sites e clickjacking. Portanto, apenas a sentença “II” está incorreta.

Para buscar especificamente um recurso (tarefa), deve-se indicar o {id} junto a URL sentenciada pelo
método utilizado. Além disso, não existem os métodos REMOVE, INPUT ou CREATE na arquitetura
REST.

DELETE: apagar recurso/ tarefa.

PUT: atualizar recurso/ tarefa.

GET: requisitar recurso/ tarefa.

POST: criar recurso/ tarefa.


Conforme aponta Rodrigues (2020), os objetivos gerais do design de uma API são: capacidade de
habilitar o consumo na forma de autoatendimento por parte de desenvolvedores de aplicações, assim
como de usuários de aplicações; reduzir barreiras de acesso a recursos empresariais valorosos;
priorizar as necessidades e preferências dos clientes desenvolvedores de aplicações; encorajar a
colaboração entre recursos internos e externos; desenvolver o endereçamento de segurança e de
desafios de escalabilidade, devido à exposição pública de recursos de tecnologia da informação (TI);
foco em maximizar o valor comercial da interface de acesso. Não é objetivo da API implementar o
rastreio de dados, pois as APIs devem manter o foco nos objetivos supracitados, servindo como ponte
de interoperabilidade. Para os casos em que é necessário algum rastreio nas aplicações, outras
tecnologias devem ser utilizadas.
Toda a arquitetura MTV (model-template-view) é interligada, e as camadas conversam entre si.
Conforme ilustrado na figura da questão, quando o usuário faz uma requisição pelo browser, é
executado um método das Views, que utiliza os Models para acessar o banco de dados e retornar as
informações. Essas informações são renderizadas pela camada de Template e, por fim, entregues ao
usuário pelo navegador.
O sistema operacional no qual está sendo instalado e configurado o ambiente do framework Django
não interfere nas opções de uso de bancos de dados. Por sua vez, de forma nativa, apenas quatro
bancos de dados são suportados: PostgreSQL, MySQL, Oracle e SQLite. Mas o que invalida a primeira
sentença é justamente a terceira sentença ser verdadeira, uma vez que outras opções de bancos de
dados podem ser utilizadas para outros bancos SQL e NoSQL. Por fim, o SQLite é destinado para
aplicações menores por ser leve, mas não consegue suportar uma demanda muito alta intrínseca a
aplicações escaláveis.
O site de administração é uma das maneiras mais rápidas de fazer a criação de usuários durante o
desenvolvimento de uma solução, sendo que na seção “Autenticação e Autorização”, você pode clicar
nos links Usuários ou Grupos para ver, criar ou editar seus registros existentes. Ao selecionar a opção
“Add”, podemos criar um novo usuário, em que apenas as informações de “nome de usuário” e
“senha” serão solicitadas imediatamente. Conforme imagem:Somente após salvar esse usuário é que
será possível adicionar as informações complementares, seus grupos e permissões.

Toda a infraestrutura de IoT pode ser virtualizada, criando acesso onipresente a todos os dispositivos
por meio de uma única interface.
No contexto de IoT, interoperalidade é a chave do sucesso para a PaaS (Platform as a Service), pois
essas reformas precisam estar aptas a ambientes heterogêneos.
A análise de dados como serviço (AaaS) é fundamental para a evolução da IoT, pois com a enorme
quantidade de dados armazenados, analisa-los é uma atividade que demanda muitos recursos de
processamento e disponibilidade 24/7, e a melhor forma de garantir esses requisitos é por
intermédio da computação em nuvem.
No contexto do IoT, qualquer objeto comum pode ser considerado uma coisa.
Na arquitetura de IoT, sensores captam dados, a fim de que os gateways concentrem e agreguem
dados de diversos dispositivos. Isso acontece para que os dados sejam armazenados e analisados por
um servidor em nuvem, que entrega os dados já convertidos em informações amigáveis. Assim, o
usuário poderá visualizar o arquivo de qualquer lugar com seu celular conectado à internet.
Broker é um servidor que atua como um intermediário entre subscribers e publishers.
Quando um dispositivo é um publish, ele publica informações pré-estabelecidas, para que dispositivos
subscribed recebam esses dados que estão sendo publicados.
RFID é uma forma barata e escalável de aplicar sensores inteligentes aos objetos de trânsito.

Você também pode gostar