Linha 629: Linha 629:
* '''Conceito'''
* '''Conceito'''
** A eXteme Programming (Programação Extrema, em Português), também conhecida como XP, é uma metodologia ágil aplicada como processo de desenvolvimento de softwares. É, majoritariamente, atribuída a equipes de pequeno e médio porte, que baseiam seu trabalho em requisitos vagos e que se modificam rapidamente. Como características conceituais, a XP traz consigo um foco desenvolvimentista em sistemas orientados a objeto e em enquadramento de projeto incremental (ou iterativo), no qual o sistema começa a ser implementado logo no início e vai ganhando novas funcionalidades ao longo do tempo.
** A eXteme Programming (Programação Extrema, em Português), também conhecida como XP, é uma metodologia ágil aplicada como processo de desenvolvimento de softwares. É, majoritariamente, atribuída a equipes de pequeno e médio porte, que baseiam seu trabalho em requisitos vagos e que se modificam rapidamente. Como características conceituais, a XP traz consigo um foco desenvolvimentista em sistemas orientados a objeto e em enquadramento de projeto incremental (ou iterativo), no qual o sistema começa a ser implementado logo no início e vai ganhando novas funcionalidades ao longo do tempo.


<br>
<br>
Linha 640: Linha 641:
***'''Colaboração com o cliente''' mais que negociação de contratos;
***'''Colaboração com o cliente''' mais que negociação de contratos;
***'''Responder a mudanças''' mais que seguir um plano.
***'''Responder a mudanças''' mais que seguir um plano.
  <br>
   
 
<br>




Linha 671: Linha 674:
consecutiva, existe um problema sério no projeto que deve ser resolvido não com aumento de horas trabalhadas, mas com melhor planejamento, por exemplo.  
consecutiva, existe um problema sério no projeto que deve ser resolvido não com aumento de horas trabalhadas, mas com melhor planejamento, por exemplo.  


Fonte: TELES (2006)
Fonte: TELES (2006)/Comparação entre Metodologias Ágeis e Tradicionais para o Desenvolvimento de Software *[http://infocomp.dcc.ufla.br/index.php/INFOCOMP/article/view/68]-pdf disponível para download
Fonte*: Comparação entre Metodologias Ágeis e Tradicionais para o Desenvolvimento de Software [[http://infocomp.dcc.ufla.br/index.php/INFOCOMP/article/view/68 ]]
 
 
<br>
<br>


Linha 682: Linha 686:
***DSDM - Dynamic System Development Model - https://www.agilebusiness.org/
***DSDM - Dynamic System Development Model - https://www.agilebusiness.org/
***LSD - Lean Software Development - https://www.lean.org.br/o-que-e-lean.aspx
***LSD - Lean Software Development - https://www.lean.org.br/o-que-e-lean.aspx


<br>
<br>
Linha 688: Linha 693:
* '''Criadores'''
* '''Criadores'''
** Em 1996, o programador e consultor em T.I, Kent Beck, idealizou e introduziu as primeiras primeiras práticas da eXtreme Programming, que eram frutos de anos de experiência e trabalho em métodos leves, ao lado de seu parceiro Ward Cunningham. Na ocasião, a empresa Chrysler solicitou os serviços de Beck, para unificar quatro sistemas de softwares legado, com 20 anos de uso. O trabalho era um tanto complicado, pois a função do sistema era controlar a folha de pagamento de quase 86 mil funcionários da empresa. Para atingir o objetivo, Kent não apenas avaliou e orientou diversas pessoas da grande equipe disponível, como distribuiu funções e dividiu, em pequenos grupos, o contingente de responsáveis pela tarefa, introduzindo, pela primeira vez, sua metodologia. No fim, com 14 meses de trabalho, o resultado foi um grande sucesso e a XP começou a ser adotada por diversos times de desenvolvimento pelo mundo.
** Em 1996, o programador e consultor em T.I, Kent Beck, idealizou e introduziu as primeiras primeiras práticas da eXtreme Programming, que eram frutos de anos de experiência e trabalho em métodos leves, ao lado de seu parceiro Ward Cunningham. Na ocasião, a empresa Chrysler solicitou os serviços de Beck, para unificar quatro sistemas de softwares legado, com 20 anos de uso. O trabalho era um tanto complicado, pois a função do sistema era controlar a folha de pagamento de quase 86 mil funcionários da empresa. Para atingir o objetivo, Kent não apenas avaliou e orientou diversas pessoas da grande equipe disponível, como distribuiu funções e dividiu, em pequenos grupos, o contingente de responsáveis pela tarefa, introduzindo, pela primeira vez, sua metodologia. No fim, com 14 meses de trabalho, o resultado foi um grande sucesso e a XP começou a ser adotada por diversos times de desenvolvimento pelo mundo.
<br>
<br>


* '''Referências'''
* '''Referências'''

Edição das 05h03min de 16 de abril de 2018

 Agora que cada um já possui seu tema, acesse http://www.sourceinnovation.com.br/wiki/Template_Temas
 Avalie se seu tema se enquadra em Metodologia, Tecnologia ou Software e escolha um dos templates
 Utilizando basicamente Google Academic, Revistas, Livros ou sites de fornecedor, realize sua pesquisa e responda aos itens
 Seu conteúdo deve ser escrito abaixo do link no final da página. Exemplo: Algoritmos


Tema Aluno
Algoritmos Vitor Manoel Gonçalves Teixeira
API Paulo Reis dos Santos Junior
App Carlos Augusto Dantas Marquez
Arduino João Vitor Santos Izidoro
Banco de Dados Otávio Augusto de Oliveira
Barramentos Leonardo Henrique Rodrigues Montes
BI Daniela
BigData Vinícius Carvalho Cazarotti
BlockChain Victor Hugo
CanvAs Vinicius Stachechen Machado
Cloud Computing Vitória Caroline de Paulo
CLP Caio Rafael dos Santos
Compiladores Mauricio Neto
Conectores Marcel Felipe de Paiva Maciel
CPU Marcus Vinicius Marchiori
Criptografia Igor de Castro
Data Mining Vinicius Calixto Rocha
DMA Vinicius Alves Martins
ERP Emerson Martins dos Santos
ETL Gabriel Pires
eXtreme Programming Gabriel Alcântara da Costa Batista
Firewall Caio Marcio
Firmware Agilson Jr
Frameworks Paulo Victor Silva Mello
IA Estela Rezende Goulart
IDE Matheus Ferreira Riguette de Souza
Inteligência Cognitiva Bruno Henrique Rodrigues dos Reis
Integração Contínua Joao Victor Johanson
IoT Helton Pereira de Aguiar
IPSec Hugo Borges Oliveira
Linguagens de Programação Frederico Marques Fulgêncio
Machine Learning Diego Batistuta Ribeiro de Andrade
Memória RAM Railson da Silva Martins
Mineração de Dados Murilo
Modelo Estruturado Gabriel Victor Duarte Pereira
Modelo Orientado a Objeto Guilherme Bartasson Naves Junker
Modem Klesley Silva de Oliveira
Normalização (BD) Estevão
NoSQL César Ricardo Salomão Junior
Open Source Guilherme Daisuke
Plataformas Alexandre Mariano
Processadores Nicolas de Melo Proença
Portas Matheus Candido Ferreira de Faria
Protocolos Gabriel Dal Belo Gomes Santos
PWA Heldson Luiz da Silva
RA Luiz Fellipe Silva Lima
Raspberry Henrique Tornelli Duarte
Redes de Computadores Victor Silva Santos
Redes Neurais Matheus Fagundes
Renderização Pedro Eduardo
Roteador Matheus Negrisolli Rosa Seixas
Satélite Fernando Toshiharu
Scrum Artur Amaro
Sistema embarcado Pedro Henrique Silva Medeiros
SO Gabriel Hernandes de Oliveira Bogás
Sockets Eduardo Silvestre Gonçalves
Speech Recognition Gabriel Vieira
SQL Max Pereira Ziller
Virtualização Vitor Hugo Celio Machado
Web Isaque dos Reis
Webservice Wallyson Pedrosa Ferreira
Pesquisa dos temas


Algoritmos

  • Conceito:
    • Algoritmo é um termo antigo que vem do nome do matemático iraniano al-Khwārizmī, que teve grande influência no crescimento da ciência. O conceito mais abrangente da palavra é “uma sequência de ações a serem feitas para resolver um problema ou atingir um objetivo”, e essa tecnologia já era usada até mesmo pelos antigos filósofos gregos, como Euclides e Erastóstenes. Existem vários tipos de algoritmos, e esses podem ser implementados por humanos, computadores e robôs: humanos podem criar a lista de ações(o algoritmo em si) e, dependendo do tipo de ações requisitadas, ele mesmo ou outras pessoas podem seguir esses passos, ou atribuí-los ao computador, escrevendo um programa com base na lista. Existem também métodos de representação de algoritmos, com regras específicas para que a pessoa, robô ou computador(após o código ter sido escrito e compilado) possa interpretar claramente os passos a serem seguidos, pois a linguagem natural humana permite múltiplas interpretações diferentes para cada frase, e isso pode comprometer o cumprimento do objetivo. Na computação, as representações de algoritmo mais utilizadas são os fluxogramas e o pseudocódigo;
      • Fluxograma:
      • Pseudocódigo:
    • Para que serve um algoritmo e como ele pode ser usado?
      • O algoritmo básico, escrito como uma simples lista de tarefas que um humano é capaz de fazer, para cumprir determinado objetivo, como “fazer um bolo”, serve para organizar e ordenar o que deve ser feito para cumprir tal objetivo, além de direcionar a pessoa que deseja cumprí-lo. Para problemas ou objetivos mais complexos, como detalhar um plano para expansão de uma empresa ou negócio por meio de ações e, comumente são usados fluxogramas e gráficos para estabelecer o que deve ser feito.
      • Na computação, o algoritmo também pode ser tratado em formas diferentes: como já foi citado, os fluxogramas e o pseudocódigo são métodos de representação de algoritmos, que são usados principalmente nas primeiras etapas de desenvolvimento de um software antes de sua codificação. Servem como uma “planta” para que o programador analise e se direcione, assim tendo mais facilidade no cumprimento de sua tarefa, que, em vez de simplesmente codificar sem referência ou certeza do que deve ser feito e como deve ser feito, irá converter essas representações diretamente para uma das linguagens de programação. Não só isso: todo software é, essencialmente, um algoritmo.



  • Funcionamento:
    • Descreva aqui o funcionamento, as técnicas e detalhes desta tecnologia



  • Estado da Arte::
    • Cite o estágio mais atual desta tecnologia, ou seja, exemplos de aplicações bem recentes



  • Integrações:
    • Informe aqui com que outras tecnologias esta depende ou interage



API

  • Conceito:
    • API's (Application Programming Interface, ou em Português, Interface de Programação de Aplicações) trata-se de um conjunto de rotinas (partes de códigos feitos para resolver problemas muito específicos) e padrões preestabelecidos por um software que permitem a utilização de parte de suas funcionalidades dentro de outro sistema. Basicamente, funciona como "ponte" entre diferentes aplicações, enviando e recebendo dados de um sistema a outro.
    • Esta tecnologia tem grande utilidade, pois:
      • Permite que sistemas criados utilizando tecnologias diferentes comuniquem-se sem que seja necessário se adequar ao sistema que deseja utilizar em sua aplicação.
      • Reduzem o tamanho de aplicações, pois com a manipulação específica de dados de uma API, o sistema não necessita ser ocupado com dados desnecessários.
      • Trazem grande segurança aos dados, já que apenas uma certa informação será disponibilizada pela empresa que gera certa API de seu sistema.
      • Permitem a monetização por acesso (por exemplo, Netflix, que dispõe seu acervo apenas a seus assinantes.)
      • Informam sobre quem acessou, quando acessou, de onde acessou e o que acessou. Isso permite melhorias no sistema, já que há uma visão detalhada do fluxo de dados.
    • Um grande exemplo de API é o Google Maps, o qual é utilizado dentro de muitas aplicações para geolocalização e afins em sites de hotéis. Um exemplo de API local, é a requisição de data do sistema pelo Excel (quando se utiliza CTRL+;)



  • Funcionamento:
    • Uma API, como citado, é um conjunto de rotinas e padrões que permitem que funcionalidades de um software sejam acessadas por outro, como por exemplo o login por Facebook. Uma API é gerada quando uma empresa proprietária de determinado sistema deseja disponibilizar partes de suas funcionalidades a outros sistemas.O trabalho feito pela API é o de enviar ao servidor ao qual se refere (por exemplo, o servidor do Facebook) a solicitação feita pelo usuário. Após isso, a API recebe os dados que foram requisitados e os retorna ao cliente, ou usuário. Esse dado pode ser algum tipo de confirmação de login ou permissão para acesso, por exemplo.
    • Utilizando-se de analogias, API's são como garçons que recebem o pedido dos fregueses (usuário) e o transmitem para o cozinheiro (servidor), retornando o alimento que foi solicitado (dados).



  • Estado da Arte::
    • APIs atualmente conseguem até mesmo prover inteligências artificiais. Podemos citar o Projeto Oxford, da Microsoft, que provém uma série de serviços de Inteligencia Artificial, como Computer Vision, reconhecimento facial, reconhecimento de emoções, text to speech, comandos por voz, spelling check. Outra API que provê serviços de inteligência artificial é a IBM Watson, que possui um sistema de machine learning tão poderoso que conseguiu vencer até mesmo campeões mundiais de xadrez utilizando-se das lições aprendidas.



  • Integrações:
    • API's são adicionais que podemos utilizar em nossos sistemas. A mesma já é gerada com o objetivo de ser inserida em outro sistema, portanto, depende completamente destes, seja em Web ou local. Inserida em outro sistema, a mesma depende do servidor de origem para coleta de dados e geração de informação. API's podem utilizar-se também do hardware do dispositivo onde está o sistema para realizar certas tarefas, dependendo de sua utilidade e objetivo.




App


Arduino

  • Conceito:
    • Explique aqui o que é esta tecnologia, para que serve e como pode ser usada



  • Funcionamento:
    • Descreva aqui o funcionamento, as técnicas e detalhes desta tecnologia



  • Estado da Arte::
    • Cite o estágio mais atual desta tecnologia, ou seja, exemplos de aplicações bem recentes



  • Integrações:
    • Informe aqui com que outras tecnologias esta depende ou interage


Banco de Dados

  • Conceito:
    • Bancos de dados são conjuntos de informações (agrupamento de dados organizado de modo que crie um sentido e conhecimento) que se relacionam entre si criando um sentido,semelhante a um armário com gavetas, nas quais estão guardadas pastas contendo diversas informações que de alguma forma se relacionam, esta comparação era o modo o qual empresas e organizações armazenavam suas informações, um modo físico (papel) e pouco eficiente, visto que, com um grande número de informações organizadas deste modo, poderia levar um tempo significativo para encontrar uma específica.
    • Sua principal função é a de armazenar informações de forma eficiente e digital,possibilitando maior velocidade e eficiência em pesquisas, estudos ou em uso empresarial (garantindo uma melhor comunicação entre as diversas áreas de uma empresa por exemplo), podendo ser usado para gerenciar os bens de uma empresa, informações sobre clientes, informações necessárias para o funcionamento de uma aplicação.



  • Funcionamento:
    • Sendo operados por um SGBD (Sistema de Gerenciamento de Dados), o qual é um conjunto de softwares que tem como responsabilidade o gerenciamento de um banco de dados,exixstem dois tipos de bancos de dados: os bancos de dados relacionais (que utilizam SQL) e os NoSQL.
  • Os bancos de dados relacionais (que utilizam SQL) já estão consolidados no mercado há muito tempo,são os mais famosos : Oracle, MySQL e SQL Server. Nestes bancos de dados,a interface é constituída por APIs ou drivers do SGBD que executam comandos em SQL (Structured Query Language).
  • Os bancos de dados NoSQL vem ganhando espaço no mercado devido a sua baixa exigência de hardware, a sua fácil manutenção e a seu baixo custo de investimento em escalabilidade,são seus representantes mais famosos: Apache e MongoDB. Nestes bancos a interface pode ser simples, utilizando arrays associativos ou pares chave-valor (Key-Values pairs) , porém também pode utilizar o padrão XQuery.
  • Seu funcionamento consiste basicamente em: armazenar e gerenciar dados, criando informações, por meio de um SGBD ou outros meios nos bancos NoSQL e também criar tabelas e regras.



  • Estado da Arte::
    • Os bancos de dados mais recentes e mais utilizados atualmente são: Postgre, MariaDB, Firebird, MySQL, Oracle, SQL Server (Microsoft), CloudSQL, MongoDB e Cassandra (desenvolvido originalmente para o Facebook).Os bancos de dados NoSQL vem ganhando espaço no mercado já que conseguem responder melhor a um grande volume de dados do que os relacionais.



  • Integrações:
    • Depende das tecnologias: SQL, XQuery, SGBD, API, Hardware.
    • Interage com as tecnologias: Servidor, SQL, XQuery.



Barramentos


  • Conceito:
    • Componentes de computadores como; Placa de vídeo, processador, HD são conectados à placa-mãe a partir do que chamamos de barramento (bus),

são as linhas de transmissão que transmitem as informações entre componentes e todos os demais periféricos do computador. Basicamente é o encaixe de que cada peça precisa para funcionar corretamente, sua principal ação é executar uma comunicação.

  • Funcionamento:
    • O Barramento é expresso em bits, existe um número de linhas físicas nas quais os dados são enviados simultaneamente.

As três principais funções desempenhadas por tal são:

  • Barramento de endereços: (Address Bus) Mostra o local onde os processos devem ser extraídos e para onde devem ser enviados depois de

processados, é usado para selecionar a origem ou destino de sinais transmitidos nos outros barramentos.

  • Barramento de dados: (Data Bus) Esse tipo de barramento desempenha a função de troca de dados no computador, dados enviados e recebidos.

O Barramento de Dados é bi-direcional, isto é, pode transmitir em ambas as direções.

  • Barramento de controle: (Control Bus) Como o próprio nome já deixa a entender, ele é o que controla as outras funções e sincroniza as

atividades do sistema.

  • Estado da Arte:
    • Barramento "SATA", substituto da antiga tecnologia "ATA", encontrado no HD, essa nova tecnologia resolveu problemas de perdas de dados

ocasionadas por interferências. Outro exemplo a ser citado é o caso do Barramento PCI-Express, que é basicamente o substituto dos antigos PCI e AGP, que são peças encontradas em Placa mãe, placa de vídeo de um computador que tem como ação a transferência de dados, a atual tecnologia é capaz de trabalhar com taxa de transferência de dados com cerca de 4 GB por segundo, fazendo os antigos barramentos sair de linha.

  • Integrações:
    • Placa de Vídeo; É um componente de um computador que envia sinais deste para o ecrã.
    • HD; É uma memória, que serve para armazenar arquivos, programas, jogos e todo tipo de conteúdo que se deseja manter no computador.
    • Processador; a sua função é acelerar, endereçar, resolver ou preparar dados, dependendo da aplicação.
    • USB; Permite a conexão de periféricos, tem função de transmitir e armazenar dados.
    • Placa de rede; Responsável pela comunicação entre os computadores de uma rede


  • Referências:

BI

  • Conceito:
    • Conhecido tecnicamente como Business intelligence, BI é um processo de coleta, organização, análise, compartilhamento e monitoramento de informações. É um conjunto de técnicas e ferramentas para auxiliar na transformação de dados brutos em informações significativas e úteis. Sendo assim, facilita a análise para criação de projetos dentro de uma empresa.



  • Procedimentos:
    • Sistemas de BI funcionam da seguinte maneira:
      • 1º - Data Warehousing: processo que ocorre a coleta massiva de dados internos e externos ao negócio, o que cria um armazém de dados (DW), que serão ser- utilizados futuramente.
      • 2º - Data Mining: nesse processo são buscados padrões nos dados presentes no DW (armazém de dados), assim são criados novos dados e a partir desses são gerados relatórios.
      • 3º - Benchmarking: é o processo onde implementa se práticas para o melhoramento do negócio, essas práticas que são criadas a partir de analises dos relatórios que são gerados na fase de DM (Data Mining).



  • Concorrentes:
    • Uma metodologia que está entrando em destaque no mercado é a Data Analytics. Big Data Analytics é o trabalho analítico e inteligente de grandes volumes de dados, estruturados ou não-estruturados, que são coletados, armazenados e interpretados por softwares de altíssimo desempenho. Trata-se do cruzamento de uma infinidade de dados do ambiente interno e externo, gerando uma espécie de “bússola gerencial” para tomadores de decisão, em tempo reduzido.



  • Criadores:
    • O termo Business Intelligence® surgiu apenas na década de 80, pela empresa Gartner Group, segundo Primak (2008, pag. 5). O mesmo autor, ainda, definiu o Business Intelligence® “como o processo inteligente de coleta, organização, análise, compartilhamento e monitoração de dados contidos em Data Warehouse e/ou Data Mart, gerando informações para o suporte à tomada de decisões no ambiente de negócios”. Desde a década de 90 até a atualidade, foi presenciada uma grande evolução em todos os setores, inclusive no setor da tecnologia da informação e ambiente empresarial. Diante de tamanho progresso, as ferramentas de software ganharam maior abrangência e importância, e o próprio termo Business Intelligence ganhou reconhecimento mundial.



BigData


  • Conceito:
    • Big Data é o termo utilizado para designar o gerenciamento do grande número de dados estruturados e não estruturados, integrando e gerenciando tais juntamente com dados convencionais. Seu grande diferencial é a possibilidade de cruzar esses diferentes tipos de dados para obter insights precisos de maneira eficiente. A partir desta tecnologia podemos saber o que: os usuários da rede estão pensando sobre tal coisa, suas satisfações e insatisfações sobre um determinado produto ou serviço; desejos e necessidade, ou seja, quando você entra em um site de compras como a Amazon, por exemplo, você busca um tipo de produto e isto se torna dados. Esses dados captados na rede serão cruzados com dados internos da empresa para criar insights, informações que dizem sobre o interesse do usuário para as mais diversas finalidades nos mais diversos setores.
    • Um dos desdobramentos do Big Data é o Big Data Analytics, que refere-se aos softwares capazes de tratar essa grande quantidade de dados, facilitando a descoberta de certas oportunidades que estão além da compreensão humana.
    • O Big Data também pode ser definido pelos seus 5 V's :
      • Volume: Imensa quantidade de dados. São dados estruturados e não estruturados, de baixa densidade(por exemplo, fluxo de clicks, feed de dados em uma rede social) que serão convertidos em informações valiosas às empresas.
      • Velocidade: O grande fluxo de dados que são recebidos e, se necessário, administrados. Muito importante em segmentos de IoT como de segurança e saúde, que necessitam de avaliações e ações em tempo real. No mercado digital, por exemplo, as aplicações buscam cruzar dados sobre as preferências pessoais do usuário e localização para gerar ofertas de marketing em tempo real para aquele único usuário.
      • Variedade: Vários tipos de dados não estruturados. São dados como textos, áudio e vídeo que necessitam de um processamento adicional para que aquilo gere um significado para algo. Após tal processamento esses dados não estruturados passam a ter os mesmos requisitos que os dados funcionais.
      • Valor: Todos os dados possuem seu valor, mesmo que esteja "escondido", porém sempre terá tal, que vai desde opinião do cliente até a situação de um hardware que está prestes a falhar. O valor de cada dado é obtido a partir de algoritmos e técnicas quantitativas e investigativas.



  • Funcionamento:
    • Descreva aqui o funcionamento, as técnicas e detalhes desta tecnologia



  • Estado da Arte::
    • Cite o estágio mais atual desta tecnologia, ou seja, exemplos de aplicações bem recentes



  • Integrações:
    • Informe aqui com que outras tecnologias esta depende ou interage


CanvAs

  • Conceito:
    • Explique aqui o que é a metodologia, para que serve



  • Procedimentos:
    • Descreva aqui o funcionamento, as técnicas e detalhes da metodologia



  • Concorrentes:
    • Cite outras metodologias com o mesmo propósito e que concorrem com ela



  • Criadores:
    • Informe quem criou, propôs ou idealizou esta metologia



Cloud Computing

  • Conceito:
    • Explique aqui o que é esta tecnologia, para que serve e como pode ser usada



  • Funcionamento:
    • Descreva aqui o funcionamento, as técnicas e detalhes desta tecnologia



  • Estado da Arte::
    • Cite o estágio mais atual desta tecnologia, ou seja, exemplos de aplicações bem recentes



  • Integrações:
    • Informe aqui com que outras tecnologias esta depende ou interage


CLP



Compiladores

  • Conceito:
    • Um compilador é um software complexo, que cumpre um papel de tradução, conversão e ligação entre um programa escrito em linguagem de programação ou linguagem fonte em um programa de linguagem de máquina ou linguagem objeto. Ou seja, converte um programa escrito em linguagem de programação para uma linguagem cuja o computador entenda. Nos primórdios, os compiladores não traduziam diretamente a linguagem fonte para a linguagem objeto, fazendo-se necessária a tradução em uma linguagem simbólica (Assembly), para que a partir de tal seja feita a tradução em linguagem objeto. Visto isto, fica claro que os compiladores são de suma importância nos tempos atuais, sabendo que cada vez mais há o estreitar da relação homem/máquina, sendo os compiladores hoje, peça fundamental de diálogo e aprimoramento das tecnologias que surgem atualmente.


           


  • Operação:
    • As atividades dos compiladores se resumem em duas tarefas, análise e síntese.
      • Análise: Onde o compilador analisa o código fonte descrito, reconhecendo a estrutura e significado do programa. Dentro do processo de análise há algumas subdivisões, iniciando o processo pelo analisador léxico que verifica planamente o programa fonte e transforma o texto em um fluxo de tokens, sendo então criada a tabela de símbolos. Logo após a ação do analisador léxico é iniciada a análise sintática, que lê o fluxo de tokens e valida tal estrutura criando em seguida a árvore sintática. Logo esses passos executados entra em ação a análise semântica, que é responsável pela aplicação das regras semânticas.
      • Síntese: Onde ocorre a síntese do programa equivalente em Assembly. Aqui ocorre a geração do código intermediário, que cria uma abstração do código, seguida da otimização do código, culminando então na geração do código objeto, que tem a finalidade de geral o código de baixo nível correspondente a arquitetura da máquina alvo.
               



  • Benchmarking::
    • Diferente do compilador o interpretador recebe como entrada uma especificação executável e produz como saída, a execução dessa especificação. Linguagens como PHP, Scheme, Python são interpretadas. Um interpretador pode ser entendido como um processo que, ao invés de visar um conjunto de instruções de um processador, visa produzir o efeito de sua execução. Eles normalmente interpretam uma representação intermediária do programa fonte. Os compiladores e interpretadores possuem muitas características em comum pois podem executar as mesmas tarefas, como por exemplo, analisar um programa e determinar se ele é válido ou não, porém os interpretadores são um tipo de tradutor no qual, algumas fases do compilador são substituídas por um programa que executa o código produzindo o seu efeito.



  • Desenvolvedores:
    • Existem algumas empresas que desenvolvem compiladores como, IBM, Microsoft, GCC entre outros. CodeBlocks, IDE Visual Studio, Javac, são exemplos de compiladores disponibilizados por eles.


Conectores


CPU

  • Conceito:

Acrônimo para Central Processing Unit (Unidade Central de Processamento). É o cérebro do computador, onde é feito o processamento de dados, a maior parte dos cálculos, onde interpreta e executa programas. É composta basicamente por: ULA (Unidade lógica-aritmética), UC (Unidade de Controle) e registradores.

ULA: Executa as operações lógicas e aritméticas determinadas pela UC.

UC: É o elemento que extrai instruções da memória, decodifica e executa, requisitando a ULA quando necessário. Busca dados que devem ser processados, interpreta quais operações devem ser realizadas e envia para outros hardwares com as instruções do código para execução da tarefa.

Registradores: Local onde os dados para o processamento são armazenados temporariamente.



  • Funcionamento:

A CPU trabalha em dois ciclos, Ciclo de Busca e Ciclo de Execução.

Logo que o computador é ligado, a CPU entra no Ciclo de Busca, em seguida passa para o Ciclo de Execução e volta para o Ciclo de Busca. Ela continua nesse processo até que precise ser desligada, saindo do Ciclo de Execução para o estado final.

Durante o Ciclo de Busca, é a Unidade de Controle que atua. Uma nova instrução é buscada da Memória para que possa ser decodificada. Nessa fase os registradores PC (Contador de Programas) e IR (Registrador de Instrução) são utilizados.O PC é logo lido para se saber que instrução será executada, essa instrução é trazida para o IR e, finalmente, é decodificada pela Unidade de Controle. Assim que esse processo termina, caso a instrução não diga respeito à um laço, ou à uma repetição, o conteúdo de PC é incrementado. Ou seja, PC recebe PC + 1. Assim, no próximo Ciclo de Busca a instrução do endereço seguinte será carregada da memória e executada. Esse comportamento garante a característica de execução sequencial dos programas.

No passo seguinte a CPU entra em Ciclo de Execução. Agora a Unidade de Controle já sabe exatamente que operação será executada, com quais dados e o que fazer com o resultado. Essa informação é passada para a ULA e os registradores envolvidos. Durante o Ciclo de Execução há cinco possíveis tipos de operação que podem ser executadas. (Citadas no item Integrações)



  • Estado da Arte::

Todos os componentes pertencentes a CPU estão integrados em um único chip titulado microprocessador.

Intel e AMD são desenvolvedoras de microprocessadores.

Memória Cache: Atualmente, para melhorar o desempenho, os processadores possuem uma memória de velocidade maior comparada a memória RAM ou disco rígido, para arquivar os dados de maior utilização, evitando acessos constantes à memória.



  • Integrações:

As estruturas internas (UC, ULA, Registradores) interagem entre si. Podem se interagir externamente também, como por exemplo:

 1.Processador e memória

Trata simplesmente da transferência de dados entre CPU e memória principal;

 2.Processador e Entrada e Saída

Diz respeito à transferência de dados entre a CPU e um dispositivo de Entrada e Saída, como teclado, mouse, monitor, rede, impressora etc.;

 3.Processamento de Dados

São operações simplesmente de processamento dos dados, como operação aritmética ou lógica sobre os registradores da CPU;

 4.Controle

São instruções que servem para controlar os dispositivos do computador, como para ligar um periférico, iniciar uma operação do disco rígido, ou transferir um dado que acabou de chegar pela Internet para a Memória Principal;

5.Operações compostas

São operações que combinam uma ou mais instruções das outras em uma mesma operação.



Criptografia


  • Conceito:
    • Explique aqui o que é esta tecnologia, para que serve e como pode ser usada



  • Funcionamento:
    • Descreva aqui o funcionamento, as técnicas e detalhes desta tecnologia



  • Estado da Arte::
    • Cite o estágio mais atual desta tecnologia, ou seja, exemplos de aplicações bem recentes



  • Integrações:
    • Informe aqui com que outras tecnologias esta depende ou interage



Data Mining


  • Conceito:
    • Atualmente armazenamos uma enorme quantidade de dados diariamente, e a tendência é armazenarmos cada vez mais, pois, boa parte do nós fazemos gera dados. Sabemos que podemos obter informações e conhecimentos a partir de dados e devido a complexidade para operadores humanos realizarem este processo a partir de uma quantidade colossal de dados, foi desenvolvido as técnicas de Data Mining (Mineração de dados,MD), que é o uso de métodos matemáticos, para realizar o processo de obtenção de padrões(conhecimentos) a partir da análise de dados. Podemos obter resultados importantíssimos que são utilizados em diversas áreas, seja para motivos comerciais, de pesquisas, e desenvolvimento de organizações.(KDD: Knowledge Discovery in Databases, tem este mesmo principio de extração de conhecimento apartir de dados, alguns definem MD e o conceito como sinônimos, outros como MD sendo um subtópico de KDD)


  • Funcionamento:
    • É importante ressaltar que, geralmente a análise de dados através da mineração de dados não é um processo automático, por isso, para que tudo ocorra corretamente é necessário, além das técnicas matemáticas realizadas pelo responsável da aplicação (Equações, Algoritmos, Regressão Logística, Redes Neurais Artificiais, Machine Learning, entre outros), podemos seguir determinados procedimentos fundamentais para a obtenção de um conhecimento importante e útil, planejados pelos especialistas em MD e os especialistas do domínio (organização que vai usar os conhecimentos obtidos, pesquisadores, comerciantes, produtores, entre outros). Existem muitos procedimentos, e nesta abordagem vamos seguir este:
      • 1 - Conhecimento do domínio: É o procedimento de definição de objetivos e metas que a análise deve seguir e estudo das exigências e limitações do domínio. No caso de ser bem detalhado e planejado, os próximos procedimentos vão ser mais claros e fáceis de realizar.
      • 2 - Pré-processamento:É necessário a aplicação de métodos para a limpeza, organização, união e redução de volume dos dados do domínio para posteriormente serem aplicados às técnicas matemáticas.
      • 3 - Extração de padrões:Nessa etapa os especialistas em MD buscam analisar os objetivos e metas que foram planejadas, definir quais técnicas usar e com isso realizam a extração dos padrões por agrupamentos. As metodologias das técnicas usadas são:
        • Associações: Busca relações entre itens ocorridas com maiores frequências. Ex, se cliente compra item A ele tem chance de comprar o item B em 60% das vezes, com uma promoção, ele compra o item B em 70% das vezes.
        • Classificações: Processo de classificação usando dados para definição de valores a outro dado. Ex se cliente X realiza A e B então classificação de X é determinada.
        • Agrupamentos: São estabelecidas relações de um grupo para um item com maior frequência. Ex, uma pessoa A tem um grupo de características x1,x2,x3,x4, portanto, A pode fazer X.
      • 4 - Pós-Processamento: Após o processo de extração é obtido diversos padrões, alguns não são tão relevantes, por isso, é necessário realizar questionamentos afim de selecionar os conhecimentos úteis.
      • 5 - Utilização do conhecimento: O usuário final do conhecimento decide como vai aplicar o conhecimento obtido.




  • Estado da Arte::
    • A mineração de dados pode ser usada em diversas finalidades na atualidade, como por exemplo, na parte de negócios, os conhecimentos podem ser usados para estratégias de possíveis investimentos em determinados produtos, métodos organizacionais da empresa, clientes e funcionários, realizar previsões de mercado, ajudar em realização de contratos com outros negócios ao fazer classificações, estratégias de vendas, estratégias de anúncios e muitos outros.
    • Pode ser usado na parte de educação para classificações de métodos de ensino e a qualidade de seus materiais, na parte da saúde para classificar a eficácia de determinados tratamentos ou até descobrir possíveis problemas de saúde que um paciente possui ou poderá possuir caso medidas não sejam tomadas. Já foi usado em ações sociais, em um projeto de reintegração de moradores de rua, usando a metodologia de agrupamento, foi definido qual era a melhor forma de reintegração para cada morador de rua.


  • Integrações:
    • KDD, sinônimo ou tópico.
    • Big Data, Banco de Dados, Data Warehouse e outras formas de armazenamento de dados.
    • BI, Data warehousing,KM (Knowledge Management: Gestão do conhecimento) são relacionados.
    • Equações, Algoritmos, Regressão Logística, Redes Neurais Artificiais, Machine Learning são métodos/tecnologias matemáticas usadas.


DMA

  • Conceito:
    • O Direct Memory Access (DMA), também conhecido como Acesso Direto à Memória, é o nome dado à funcionalidade aplicada em certos hardwares que promove o acesso das portas de entrada e saída à memória de um sistema, sem a necessidade de se utilizar um processador para essa tarefa (FREITAS; MARTINS, 2001, 32). Por mais que pareça algo simples, essa funcionalidade pode ser considerada bastante útil, pois, ao resguardar o processador de mais uma tarefa, ela o livra de uma sobrecarga em operações de recepção e envio de mensagens, e faz com que a comunicação entre o hardware e o sistema seja mais rápida e eficaz (SILVA et al., 2009, p. 2-3).



  • Funcionamento:
    • De acordo com Maziero (2011, p. 24), o mecanismo de DMA possui um funcionamento simples, e o mesmo autor sugere a seguinte sequência de passos para escrever dados de um buffer em memória RAM para o controlador de um disco rígido:


Passo 1. O processador acessa os registradores do canal DMA associado ao hardware desejado, para informar o endereço inicial e o tamanho da área de memória RAM que contém os dados que serão escritos no disco;

Passo 2. O DMAC (Controlador de Acesso Direto à Memória) reivindica a transferência de dados da memória RAM ao disco, e, em seguida, aguarda essa operação ser concluída. Tal reivindicação é feita ao controlador do disco;

Passo 3. Os dados da memória são enviados para o controlador do disco;

Passo 4. Se a quantidade de dados a serem transferidos for maior do que o tamanho aceitável para que cada transferência ocorra pelo controlador de disco, a pode haver uma repetição da operação anterior;

Passo 5. Após a transferência de dados ser realizada, o próprio DMAC, através de uma interrupção, informa o processador que a operação foi concluída.


  • Estado da Arte:
    • Os canais de DMA são muito lentos, e, em decorrência disso, são utilizados somente por hardwares mais lentos, tais como placas de som, portas paralelas (padrão ECP) e drivers de disquetes. Os periféricos considerados mais rápidos, por sua vez, utilizam um tipo de versão “aprimorada” do DMA, chamada de Bus Mastering (MORIMOTO, 2002).



  • Integrações:
    • O DMA possui uma interação direta com a CPU de um periférico, uma vez que ele auxilia na transferência de dados. Além disso, o DMA está presente em alguns modelos de Arduino, que consiste em uma plataforma eletrônica de código aberto baseada em hardware e software fáceis de usar.




ERP


eXtreme Programming

  • Conceito
    • A eXteme Programming (Programação Extrema, em Português), também conhecida como XP, é uma metodologia ágil aplicada como processo de desenvolvimento de softwares. É, majoritariamente, atribuída a equipes de pequeno e médio porte, que baseiam seu trabalho em requisitos vagos e que se modificam rapidamente. Como características conceituais, a XP traz consigo um foco desenvolvimentista em sistemas orientados a objeto e em enquadramento de projeto incremental (ou iterativo), no qual o sistema começa a ser implementado logo no início e vai ganhando novas funcionalidades ao longo do tempo.




  • Classificação Metodológica e "Manifesto Ágil"
    • Em relação à classificação metodológica, como já mencionado, a eXtreme Programming se encaixa no grupo das metodologias ágeis. É importante ressaltar e esclarecer esse ponto, pois a definição e o funcionamento da XP são altamente ligados ao contexto histórico e ao surgimento das inovadoras metodologias ágeis. O marco principal desse contexto é nomeado como "Manifesto Ágil", pois, embora as práticas da XP já existissem desde 1996, foi somente cinco anos depois que seus líderes, através do manifesto, definiram seu conceito atualizado, formalizado e completo, composto pelas premissas originais de Kent Beck (criador da metodologia), incrementadas pelos valores do documento, eventualmente, redigido.
    • No ano de 2001, no resort Snowbird, nas montanhas nevadas do estado de Utah, EUA, foi realizada uma reunião que contou com a presença de 17 líderes da comunidade de métodos de desenvolvimento de software, como eXtreme Programming, Scrum e outros - na época denominados por métodos leves. Nessa reunião, foram observados pontos em comum, entre as ideias de Beck, Shwaber e Sutherland (criadores do Scrum), e outros desenvolvedores da área, fato que levou à decisão de documentar e registrar tais pontos, dados em quatro valores (filosofia) e doze princípios (prática), intitulados por "Manifesto Ágil". Esse movimento abriga e considera metodologias que propõem os seguintes valores:
      • Indivíduos e interação entre eles mais que processos e ferramentas;
      • Software em funcionamento mais que documentação abrangente;
      • Colaboração com o cliente mais que negociação de contratos;
      • Responder a mudanças mais que seguir um plano.




  • Procedimentos, Princípios e Práticas
    • A metodologia é composta por uma série de princípios e práticas, que possuem a finalidade de conferir maiores eficiência e rendimento nos aspectos de rapidez, qualidade do produto e, bom e constante relacionamento com o cliente. A origem dos conceitos das práticas da XP é o conjunto de princípios constados no "Manifesto Ágil", em um número de doze. Essa lista pode ser encontrada no seguinte endereço: http://www.manifestoagil.com.br/principios.html
    • Além das bases conceituais, existem também algumas práticas específicas da eXtreme Programming que se notabilizam pela dinâmica e o encaixe às características para desenvolver em períodos e movimentos que economizam tempo. São elas:
    • Cliente Presente: O XP trabalha com a premissa de que o cliente deve conduzir o desenvolvimento a partir do feedback que recebe do sistema.
    • Jogo do Planejamento: No início de cada iteração ocorre o jogo do planejamento. Trata-se de uma reunião onde o cliente avalia as funcionalidades que serão

implementadas.

    • Stand Up Meeting: A equipe se reúne a cada manhã para avaliar o trabalho que foi executado no dia anterior e priorizar aquilo que será implementado no dia que se

inicia.

    • Programação em Par: Os desenvolvedores implementam as funcionalidades em pares, ou seja, diante de cada computador, existem sempre dois desenvolvedores que trabalham juntos para produzir o mesmo código.
    • Desenvolvimento Guiado para Testes: Testes são escritos para cada funcionalidade antes de codificá-las. Fazendo isso, eles aprofundam o entendimento das

necessidades do cliente.

    • Refactoring: O refactoring é o ato de alterar um código sem afetar a funcionalidade que ele implementa. O objetivo é tornar o software mais simples de ser mantido.
    • Código Coletivo: Os desenvolvedores têm acesso a todas as partes do código e podem alterar aquilo que julgarem importante sem pedir autorização de outra pessoa.
    • Código Padronizado: Para facilitar a manutenção no código por parte de toda a equipe, padrões de codificação são definidos tornando o sistema mais homogêneo e permitir que qualquer membro da equipe tenha condições de dar manutenção no sistema.
    • Design Simples: Para que o cliente possa obter feedback logo, a equipe precisa ser ágil no desenvolvimento, o que a leva a optar pela simplicidade do design.
    • Metáfora: Para facilitar a criação de um design simples, a equipe de desenvolvimento utiliza metáforas, já que elas têm o poder de transmitir ideias complexas de

forma simples.

    • Ritmo Sustentável: Para garantir que a equipe tenha sempre o máximo de rendimento e produza software com melhor qualidade possível, o XP recomenda que os

desenvolvedores trabalhem apenas oito horas por dia e evitem fazer horas-extras, visto que é essencial estar descansado a cada manhã, de modo a utilizar a mente na sua plenitude.

    • Integração Contínua: Prática utilizada com o objetivo de checar/testar toda a aplicação, sempre que uma nova funcionalidade é implementada, seja de forma manual,

ou automática, forma esta, que se utiliza de ferramentas especializadas para tal.

    • Releases Curtos: O XP tem como objetivo gerar um fluxo contínuo de valor para o cliente. Sendo assim, ele trabalha com releases curtos, ou seja, a equipe produz

um conjunto reduzido de funcionalidades e coloca em produção rapidamente.

    • 40 Horas Semanais*: a XP assume que não se deve fazer horas extras constantemente. Caso seja necessário trabalhar mais de 40 horas pela segunda semana

consecutiva, existe um problema sério no projeto que deve ser resolvido não com aumento de horas trabalhadas, mas com melhor planejamento, por exemplo.

Fonte: TELES (2006)/Comparação entre Metodologias Ágeis e Tradicionais para o Desenvolvimento de Software *[1]-pdf disponível para download







  • Criadores
    • Em 1996, o programador e consultor em T.I, Kent Beck, idealizou e introduziu as primeiras primeiras práticas da eXtreme Programming, que eram frutos de anos de experiência e trabalho em métodos leves, ao lado de seu parceiro Ward Cunningham. Na ocasião, a empresa Chrysler solicitou os serviços de Beck, para unificar quatro sistemas de softwares legado, com 20 anos de uso. O trabalho era um tanto complicado, pois a função do sistema era controlar a folha de pagamento de quase 86 mil funcionários da empresa. Para atingir o objetivo, Kent não apenas avaliou e orientou diversas pessoas da grande equipe disponível, como distribuiu funções e dividiu, em pequenos grupos, o contingente de responsáveis pela tarefa, introduzindo, pela primeira vez, sua metodologia. No fim, com 14 meses de trabalho, o resultado foi um grande sucesso e a XP começou a ser adotada por diversos times de desenvolvimento pelo mundo.





Firewall


  • Conceito:

Com o passar dos anos e o desenvolvimento da tecnologia as pessoas começaram a armazenar dados em inúmeros dispositivos e a segurança deles se tornou algo imprescindível. Firewall foi criado com o intuito de ser uma ferramenta de proteção para computadores e redes, sendo baseado em hardware ou software, sendo a segunda opção o mais comum. Seguindo as regras e instruções ele impede que Malwares como, por exemplo, os vírus afetem o computador e ele continue funcionando normalmente.

  • Operação:

O Firewall determina quais operações de transmissão ou recepção de dados podem ser executadas, para isso ele é constituído de regras e instruções, como podemos ver no exemplo a seguir: ""(regra 1, ação 1)"" ""(regra 2, ação 2)"" ""(regra 3, ação 3)"" "" etc.""

Ao receber uma quantidade de dados, o firewall executa as regras na ordem ate encontrar uma que corresponde aos dados. Caso ele encontre ele poderá executar ações como aceitar pacote, encaminhar pacote e caso não encontre ele executará ações como recusar pacote, ignorar pacote. O firewall poderá ser configurado de diversas maneiras, alguns exemplos a seguir: -Bloquear totalmente o tráfico no computador ou rede, assim isola completamente o computador ou rede. -Criar uma regra para que o aplicativo aguarde autorização do Usuário ou administrador - Autorizar o tráfego de determinados tipos de dados e bloquear outros. Tipos de Firewall: -Filtragem de Pacotes (packet filtering): -Firewall de Aplicação (proxy services): -Inspeção de Dados (Stateful Inspection) Arquitetura dos Firewall; O modo como o Firewall é implementado, por possuir vários tipos ele consegue ser usado de diversas formas, alguns exemplos a seguir: -Arquitetura Dual-Homed Host -Screened Host -Screened Subnet

  • Benchmarking::

Cite alguns sistemas que fazem o mesmo ou próximo do que este faz

  • Desenvolvedores:

Informe que empresa, profissional ou instituição comercializa ou disponibiliza este software



Frameworks


  • Conceito:
    • Framework, palavra em inglês para estrutura, é um conjunto de classes inter-relacionadas, códigos-fonte, funções, técnicas e metodologias que facilitam o desenvolvimento de softwares. Em outras palavras, framework é como se fosse uma "fonte" de onde se pode desenvolver algo mais específico e complexo. A utilização dos frameworks em softwares, está diretamente relacionada à economia de tempo que o mesmo providencia, já que o usuário não precisaria começar tudo do zero. Além disso, os frameworks podem ser úteis para que o programador foque diretamente no processo de desenvolvimento de seu projeto, já que não gastaria muito tempo e pensamento programando o que é sempre comum nesses mesmos projetos.



  • Operação:
    • A utilização de um framework depende de um conhecimento de pelo menos nível básico da linguagem que aquele framework aborda, por exemplo, javascript, PHP, entre outras linguagens. Após feita a análise de requisitos de um projeto de software e instalado um framework, o programador poderá fazer seu código normalmente e, quando necessário, chama uma classe presente no framework que já teve seu código desenvolvido. Os frameworks costumam disponibilizar um documento em seus sites que contém informações para como utilizar-lo, já que, diferentemente das bibliotecas, os frameworks possuem módulos estruturados que seguem algum padrão (como por exemplo o MVC - Model View Controller, que faz a separação entre um modelo de dados, a interface do usuário e o controlador de tudo operando junto), e que se esses padrões não forem seguidos, torna-se quase impossível construir uma aplicação.



  • Benchmarking:
  • Frameworks para C++:
      • CollEntRes -> Versão mais recente: 1.1.0, lançada em 20/02/2018;
      • Poco -> Versão mais recente: 1.9.0, lançada em 08/03/2018;
      • CppCMS -> Versão mais recente: 1.2.0, lançada em 16/01/2018;


  • Frameworks para Java:
      • Spring -> Versão mais recente: 5.0.4, lançada em 19/02/2018;
      • Google Web Toolkit -> Versão mais recente: 2.8.1, lançada em 24/04/2017;
      • Apache Wicket -> Versão mais recente: 7.9.0, lançada em 19/09/2017;


  • Frameworks para PHP:
      • CodeIgniter -> Versão mais recente: 3.1.8, lançada em 23/03/2018;
      • CakePHP -> Versão mais recente: 3.5.14, lançada em 19/03/2018;
      • Yii -> Versão mais recente: 2.0.14, lançada em 19/02/2018;



  • Desenvolvedores:
    • Algumas empresas grandes trabalham bastante com frameworks e por estarem ligadas ao mundo de desenvolvimento de softwares, disponibilizam muitos frameworks para os outros usuários. Algumas dessas empresas são: Google, Apache, MIT, GPL. A importância de disponibilizar esses frameworks para todo mundo é que facilita a compartilhação de informação entre os usuários, visto que torna-se possível o "upgrade" desses frameworks.



IA



  • Conceito:
    • A palavra inteligência, vem do latim inter (entre) e legere (escolher), e a artificial vem do artificiale em latim, ou seja, juntando os significados dessas palavras pode-se chegar à conclusão que a Inteligência Artificial é uma tecnologia criada pelo homem para fazer com que as máquinas possam ter a capacidade de pensar como seres humanos, por exemplo a de tomar decisões, comunicar-se, aprender e armazenar. Além disso, pode ser definida também como um ramo da Ciência da Computação que visa em desenvolver dispositivos e mecanismos que simulem a capacidade humana, enfim, esse termo IA, criado pelo professor universitário John McCarthy, descreve o mundo onde as máquinas poderiam resolver problemas que atualmente são designados aos humanos.
    • A Inteligência artificial é e/ou pode ser usada para diversas formas de auxiliar as pessoas, como: a ferramenta de pesquisa do Google que preenche as buscas utilizando esse recurso; a robô Sophia criada para ajudar nos cuidados da saúde, terapia, educação e atendimento de clientes que consegue conversar, andar e fazer expressões faciais mesmo, por enquanto, com suas limitações; o Facebook utilizando o reconhecimento de imagem para reconhecer as pessoas que estão na foto para marca-las; carros automáticos desenvolvidos para tentar evitar colisões e engarrafamento; a assistente pessoal Siri, que utiliza processamento de voz para conversar com seus usuários; entre outros exemplos.



  • Funcionamento:
    • Para a Inteligência Artificial funcionar necessita de uma combinação de diversas tecnologias, e várias áreas da ciência da computação compõe o que é IA, como:
      • Machine Learning (aprendizado de máquina): é o conceito de uma máquina de aprende com um mínimo de informação possível, no qual através dos dados recebidos possa decidir em qual alternativa é melhor ser tomada, dependendo menos de ajustes, como, por exemplo, as recomendações personalizadas na Netflix e na Amazon. Sendo o fundamental impulsionador da IA.
      • Deep Learning (aprendizado profundo): trabalha com algoritmos mais complexos imitando as redes neurais do cérebro humano, permitindo que as máquinas possam aprender com pouca ou nenhuma supervisão.
      • Processamento de Linguagem Natural (PLN): ao utilizar os conceitos de Machine Learning faz com que a máquina detecte padrões em grandes conjuntos de dados puros e reconheça a linguagem natural, sendo capaz de compreender sentimentos, como em análise de publicação nas redes sociais.
    • Uma das primeiras áreas a utilizar IA foram as indústrias, utilizando desde as matérias-primas até os produtos propriamente dito, realizando funções básicas que não precisam de ajuda manual.
    • Primeiramente um desenvolvedor para desenvolver algo que envolva IA deve-se criar leis no qual a máquina criada deverá seguir para saber quais decisões seguir ou não tomar sobre certas situações ou atitudes, conhecidas como Leis de Asimov ou Leis de Platina. Dentre essas leis se encontra a proibição de auto replicação, proibição de expedição, proibição de acesso remoto, confidencialidade e entre outras.



  • Estado da Arte::
    • Atualmente a Inteligência Artificial se encontra em desenvolvimento constante e acelerado, trazendo diversos avanços ou possíveis consequências, como se dizia Stephen Hawking em uma entrevista à BCC, "o desenvolvimento da inteligência artificial total poderia significar o fim da raça humana".
    • Dentre os exemplos atuais podemos citar:
      • Robô Sophia: criada pela empresa Hanson Robotics e ligada em 2015, faz 62 expressões faciais e de pescoço, consegue interagir com pessoas e andar e contém câmeras nos olhos para “ler” as reações faciais e tentar corresponder da melhor forma possível. Para isso ela possui três interações: uma plataforma de pesquisa em IA, para responder perguntas simples; um programa que recita frases pré-carregadas; e um “chatbot”, que olha e ouve para as pessoas e escolhe uma resposta apropriada para a situação e dar dados retirados da internet. Além disso, conseguiu uma cidadania na Arábia Saudita.
      • Placa de vídeo Titan V: criada pela empresa de hardware NVIDIA, para área científica voltada a aplicações da Inteligência Artificial para tentar ultrapassar os limites tanto da IA quanto da computação de alto performasse, de acordo com o presidente e fundador Jensen Huang.



  • Integrações:
    • A Inteligência Artificial só é possível com a interação de big data (acesso a processo de dados não identificados, para continuar seu aprimoramento), computação em nuvem (grande potência com custo acessível, para um processamento rápido e eficiente) e bons modelos de dados (processando, classificando e analisando de forma inteligente).




IDE


  • Conceito:
    • IDE, do inglês, Integrated Development Environment, é definido como um ambiente de desenvolvimento integrado que reúne editor, compilador e depurador em um único software, com o objetivo de tornar o processo de codificação mais eficiente e produtivo.



  • Operação:
    • Descreva aqui como funciona a operação deste sistema



  • Benchmarking:
    • Cite alguns sistemas que fazem o mesmo ou próximo do que este faz



  • Desenvolvedores:
    • Informe que empresa, profissional ou instituição comercializa ou disponibiliza este software


Integração Contínua


  • Conceito:
    • Integração contínua consiste em uma prática de desenvolvimento que permite a disponibilização de uma interface a qual possui um código-fonte central, possibilitando adicionar novas partes ou alterações de algum código já integrado. Essa técnica visa a rapidez para disponibilização/atualização do software e simplifica a comunicação entre a equipe de desenvolvimento que não precisa estar no mesmo lugar para colaborar o projeto, além de facilitar a detecção e correção de bugs do conjunto.


  • Funcionamento:
    • O código-fonte(central) é disponibilizado em um ambiente onde permite a integração de novas partes de código para complementar a central e, durante o processo de adição, a central é capaz de testar se o código-fonte em conjunto ao código adicionado são compatíveis. Dependendo do ambiente, é possível parametrizar requisitos para a validação da nova adição.


  • Estado da Arte:
    • Existem serviços(centrais) pagos, exemplo: Amazon CodeBuild e GitHub; e serviços gratuitos opensource: TortoiseCVS e Apache Subversion. Os serviços gratuitos possuem a característica de serem OpenSource, permitindo que a ferramenta de repositório(central) seja evoluída assim como o projeto que utiliza a ferramente.


  • Integrações:
    • A integração contínua precisa de um repositório central que será hospedado em um ambiente que permite acesso de qualquer lugar de forma segura, logo será necessário internet e proteção para a conexão e compartilhamento de arquivos. O repositório central deve estar dotado de um controle de alterações, sistema de rollback(ponto de restauração) e automatização de testes.



Inteligência Cognitiva

Conceito: Primeiramente vamos definir o que é cognição,que seria o processo de adquirir o conhecimento incluindo estados mentais como raciocínio, atenção, juízo entre outros.Sendo assim a Inteligência Cognitiva pode ser resumida em novos pensamentos, que são adquiridos através da sua atividade ela traz o novo e pode transformar as situações em novas perspectivas diferentes das experiências anteriores.Por isso é muito importante sair da zona de conforto e buscar novos conhecimentos novas experiências,que estimulem todas as habilidades envolvidas e uma dica para isso seria com o aprendizado de programação e robótica, desta forma seria possível assimilar todas elas.

Funcionamento: A inteligência cognitiva é estruturada em duas categorias: atividade criativa e atividade reprodutiva, a criativa, a pessoa cria novas condições e situações que ainda não teve experiência, é elaborado pela criatividade de cada um. Já a atividade reprodutiva é o processo de identificação e reprodução das condições e situações já estabelecidas através do ambiente, das relações com outras pessoas, meios de informações, experiências já vivenciadas, entre outros.


Estado da Arte: Hoje esta tecnologia vem sendo usada na área da saúde ajudando na agilidade e na mobilidade e na segurança do paciente, e também ajudando na transição entre computador e se humano, esta tecnologia vem avançando cada dia mais e auxiliando diversas empresas da área tecnológica.A tecnologia já está sendo aplicada em diversos países para solucionar diferentes desafios, principalmente nas áreas de engajamento com clientes, suporte à decisão clínica e apoio à descoberta científica.

Integrações: Internet das coisas, Inteligencia artificial, Linguagens de programação entre outros.

Referências.' http://saudebusiness.com/noticias/computacao-cognitiva-na-saude-revolucao-da-inteligencia-artificial/

http://www.mxm.com.br/blog/presidente-da-mxm-sistemas-fala-sobre-gestao-e-inteligencia-cognitiva-para-o-ibm-client-voices/

http://www.ctrlplay.com.br/blog/o-que-e-inteligencia-cognitiva-e-como-a-criatividade-pode-ajudar/

IoT



  • Conceito:
    • "Internet das Coisas é um conceito em que o real e o virtual se conectam para criar um mundo mais inteligente em diferentes segmentos da sociedade." Renata Rampim.
    • A Internet of Things (IoT) ou Internet das Coisas é simplesmente conectar coisas na Internet, por ex. dispositivos, carros, prédios, uma casa, etc, utilizando hardwares com sensores e softwares, conectados numa rede na Internet, coletando e processando esses dados.
    • A IoT permite que objetos coletem dados e enviem para uma central e que sejam controlados remotamente pela Internet. Criando, assim, oportunidades entre o mundo físico e o digital.
    • Portanto, isso resulta em melhoria de eficiência e precisão de objetos, com impacto na economia, como economizar tempo e dinheiro usando IoT.



  • Funcionamento:
    • Precisa-se apenas de um hardware e um software, alguns casos são simples, outros mais complexos. O hardware que é a parte física, por ex. um Arduino, um Raspberry Pi, ou hardware proprietário. Já a parte de software que é a programação, em geral é usado C, C++ e Python.
    • É conectado alguns sensores no hardware, programa a leitura desses sensores para acionar algum botão e/ou motor, em seguida, esses dados são enviados a um servidor central e processados.



  • Estado da Arte:
    • Atualmente, estão surgindo muitos outros produtos de IoT em uma escala comercial, acessível a quase todos, por ex. o Nest, que foi comprado pelo Google, é um termostato inteligente que controla temperatura de ambientes, muito popular na América do Norte. O principal diferencial do Nest é um sensor de temperatura conectado a uma inteligência artificial, que lê a temperatura do ambiente e conforme regulado no uso do dia a dia, começa a configurar-se automaticamente.
    • Outro exemplo, é o Philips Hue que são lâmpadas Leds coloridas, colocadas num soquete normal de lâmpada e interligado a um Hub conectado à Internet, e a um App no smartphone consegue configurar a luz de toda a casa.
    • E também, tem os SmartThings, que transforma a casa em Smart Home, permite controlar remotamente objetos de toda casa, conectados e centralizados por um aplicativo de celular. Através de um Hub conectado à Internet e a todos os dispositivos nele, por ex. Philips Hue, fechadura digital, lâmpada, controlador de temperatura, sensor de presença, sensor de movimento, etc.



  • Integrações:
    • Inteligência Artificial, Machine Learning, Linguagens de Programação, Redes, Arduino, etc.


  • “Se você acha que a internet mudou a sua vida, pense novamente. A Internet das coisas está prestes a mudar tudo de novo!” — Brendan O’Brien, cofundador, Aria Systems



IPSec


  • Conceito:
    • Explique aqui o que é esta tecnologia, para que serve e como pode ser usada



  • Funcionamento:
    • Descreva aqui o funcionamento, as técnicas e detalhes desta tecnologia



  • Estado da Arte::
    • Cite o estágio mais atual desta tecnologia, ou seja, exemplos de aplicações bem recentes



  • Integrações:
    • Informe aqui com que outras tecnologias esta depende ou interage


Linguagens de Programação



  • Conceito:
    • É um método padronizado para comunicar instruções para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas sob várias circunstâncias. Linguagens de programação podem ser usadas para expressar algoritmos com precisão.
    • O conjunto de palavras, compostos de acordo com essas regras, constituem o código fonte de um software. Esse código fonte é depois traduzido para código de máquina, que é executado pelo microprocessador.
    • Uma das principais metas das linguagens de programação é que programadores tenham uma maior produtividade, permitindo expressar suas intenções mais facilmente do que quando comparado com a linguagem que um computador entende nativamente (código de máquina). Assim, linguagens de programação são projetadas para adotar uma sintaxe de nível mais alto, que pode ser mais facilmente entendida por programadores humanos. Linguagens de programação são ferramentas importantes para que programadores e engenheiros de software possam escrever programas mais organizados e com maior rapidez.




  • Funcionamento:
    • Ao usarmos uma linguagem de programação você cria o chamado “Código Fonte”. Um código fonte é um conjunto de palavras escritas de acordo com as regras sintáticas e semânticas de uma linguagem. Regras sintáticas dizem respeito à forma de escrita e regras semânticas ao conteúdo. O importante para sabermos agora é que o código fonte não é executado pelo computador. O computador não entende o código fonte, mas sim o código que representa seu programa e dados em memória (nos nossos exemplos o código é binário). Assim, é preciso traduzir o código fonte para o formato que o computador entenda. Este formato compreensível pelo computador é chamado de “Código de Máquina”. A este processo de “tradução” é dado o nome de Compilação.



  • Estado da Arte:
    • Existem várias linguagens de programação; de acordo com o Índice Tiobe, as 20 mais populares são:
    • 1.Java
    • 2.C
    • 3.C++
    • 4.Python
    • 5.C#
    • 6.JavaScript
    • 7.Visual Basic .NET
    • 8.R
    • 9.PHP
    • 10.MATLAB
    • 11.Swift
    • 12.Objective-C
    • 13.Assembly
    • 14.Perl
    • 15.Ruby
    • 16.Delphi / Object Pascal
    • 17.Go
    • 18.Scratch
    • 19.PL/SQL
    • 20.Visual Basic


    • As linguagens de programação podem ser classificadas e sub-classificadas de várias formas. Classificação da ACM - Association for Computing Machinery
    • A ACM mantém um sistema de classificação com os seguintes sub-itens:
    • Linguagens aplicativas, ou de aplicação
    • Linguagens concorrentes, distribuídas e paralelas
    • Linguagens de fluxo de dados
    • Linguagens de projeto
    • Linguagens extensíveis
    • Linguagens de montagem e de macro
    • Linguagens de microprogramação
    • Linguagens não determinísticas
    • Linguagens não procedurais
    • Linguagens orientadas a objeto
    • Linguagens de aplicação especializada
    • Linguagens de altíssimo nível


  • Kotlin( 2016/2017 )
    • É uma Linguagem de programação que compila para a Máquina Virtual Java e que também pode ser traduzida para JavaScript e compilada para código nativo. É desenvolvida pela JetBrains, seu nome é baseado na ilha de Kotlin onde se situa a cidade russa de Kronstadt, próximo à São Petersburgo. Apesar de a sintaxe de Kotlin diferir da de Java, Kotlin é projetada para ter uma interoperabilidade total com codigo Java, permitindo que as empresas possam fazer uma migração gradual de Java para Kotlin.
    • Compatibilidade: Kotlin é totalmente compatível com o JDK 6, garantindo que os aplicativos possam ser executados em dispositivos Android mais antigos, sem problemas. A ferramenta Kotlin é totalmente suportada no Android Studio e compatível com o sistema de compilação do Android.
    • Desempenho: um aplicativo Kotlin é tão rápido quanto um Java equivalente, graças a uma estrutura de bytecodes muito semelhante. Com o suporte da Kotlin para funções inline, o código usando lambdas geralmente é executado ainda mais rápido que o mesmo código escrito em Java.
    • Interoperabilidade: o Kotlin é interoperável a 100% com Java, permitindo usar todas as bibliotecas Android existentes em um aplicativo Kotlin.
    • Tempo de compilação: o Kotlin suporta compilação incremental eficiente, por isso, enquanto há algumas sobrecargas adicionais para construções limpas, as compilações incrementais geralmente são tão rápidas ou mais rápidas do que com o Java.
    • Curva de aprendizado: para um desenvolvedor Java começar com o Kotlin é muito fácil. O conversor automático Java para Kotlin incluído no plugin Kotlin ajuda com os primeiros passos.



  • Integrações:
    • Uma linguagem de programação pode ser convertida, ou traduzida, em código de máquina por compilação ou interpretada por um processo denominado interpretação. Em ambas ocorre a tradução do código fonte para código de máquina.
    • Um compilador é um programa de computador (ou um grupo de programas) que, a partir de um código fonte escrito em uma linguagem compilada, cria um programa semanticamente equivalente, porém escrito em outra linguagem, código objeto. Classicamente, um compilador traduz um programa de uma linguagem textual facilmente entendida por um ser humano para uma linguagem de máquina, específica para um processador e sistema operacional.
    • Interpretadores são programas de computador que leem um código fonte de uma linguagem de programação interpretada e o converte em código executável. Seu funcionamento pode variar de acordo com a implementação. Em alguns casos, o interpretador lê o código fonte linha a linha e o converte em código objeto (ou bytecode) à medida que o executa, em outros casos, converte o código fonte por inteiro e depois o executa.
    • Na verdade, em princípio, pode-se implementar compiladores e interpretadores para qualquer linguagem de programação. Mas, dependendo da necessidade, pode ser melhor criar um interpretador ou um compilador.
    • Se o método utilizado traduz todo o texto do programa (também chamado de código), para só depois executar o programa, então diz-se que o programa foi compilado e que o mecanismo utilizado para a tradução é um compilador (que por sua vez nada mais é do que um programa). A versão compilada do programa tipicamente é armazenada, de forma que o programa pode ser executado um número indefinido de vezes sem que seja necessária nova compilação, o que compensa o tempo gasto na compilação. Isso acontece com linguagens como Pascal e C.
    • Se o texto do programa é executado à medida que vai sendo traduzido, como em JavaScript, BASIC, Python ou Perl, num processo de tradução de trechos seguidos de sua execução imediata, então diz-se que o programa foi interpretado e que o mecanismo utilizado para a tradução é um interpretador. Programas interpretados são geralmente mais lentos do que os compilados, mas são também geralmente mais flexíveis, já que podem interagir com o ambiente mais facilmente.



Machine Learning


  • Conceito:
    • Machine Learning(ML) ou Aprendizado de Maquina(AM) é um subcampo de Inteligencia Artificial(IA) que busca fazer com que as maquinas possam agir e tomar decisões, dessa forma é preciso a utilização de algoritmos mais flexíveis, pois as maquinas irão coletar os dados, analisa-los e então tomar alguma decisão ou realizar alguma ação, ou seja, não é preciso programar a maquina para realizar uma tarefa especifica, alem disso com o passar do tempo a maquina ira adquirir mais conhecimento tornando assim mais fácil operar ou tomar decisões quando encontrar novos dados.
    • Aprendizado de Maquina pode ser utilizado de varias formas, um exemplo comum e a filtração de dados onde a maquina ira olhar em um certo conjunto de dados e separá-los, por exemplo em emails decidindo quais são importantes e quais podem ser excluídos, outro exemplo é a utilização de Machine Learning para separar itens de acordo com outras visualizações do usuários que é um sistema utilizado por exemplo na Netflix e na Amazon.



  • Funcionamento:
    • Aprendizagem Supervisionada:Neste tipo de aprendizado o programador coloca exemplos de entradas e de possíveis saídas para que a maquina durante o seu funcionamento busque dados semelhantes aos apresentados, ou seja, de acordo com dados pré-determinados a maquina ira procurar dados semelhantes, alem disso os problemas de aprendizado de maquina podem ser separados em dois tipos, problemas de classificação e problemas de regressão.
      • Classificação: neste problema as entradas(Atributo) são divididas em duas ou mais classes que são determinadas pelo programador,alem disso as saídas(Classes) são discretas, um exemplo disso seria um programa que analisa tumores e os classifica como benignos ou malignos.
      • Regressão: neste problemas tentamos prever as saídas que por sua vez são continuas em vez de discretas, um exemplo seria dada uma imagem de uma pessoa o programa tenta prever sua idade com base em dados da imagem ou baseado em um grupo de dados o programa tenta prever o índice da inflação.
    • Árvores de Decisão: é um fluxograma com a estrutura semelhante a de uma arvore na qual haverá Nós que basicamente são testes e dependendo das entradas ira gera uma saída.exemplo de uma arvore de decisão no link: [[[2]]]







    • Aprendizagem Não Supervisionada: neste tipo de aprendizado o programa analisa os dados que não são classificados e busca agrupa-los de alguma maneira, ou seja, forma agrupamentos ou clusters, pode se dizer que essa aprendizagem nos permite abordar problemas com os quais temos pouca ou nenhuma ideia de seus resultados
      • Clustering: técnica na qual se consiste um juntar um grupo de dados que possuem alguma semelhança(clusters)







    • Aprendizado por reforço:neste aprendizado a maquina interage com um ambiente dinâmico e deve aprender com ele, ou seja, a maquina deve aprender como o ambiente trabalha.um feedback é enviado ao programa para mostrando se suas ações estão corretas ou errôneas.
    • Modelo Gerador:este modelo gera valores de dados quando a a falta de alguns parâmetros, em machine learning eles são usados para modelagem de dados de forma direta ou como um avanço para a formação de funções de densidade de probabilidade condicional.
    • Modelos Condicionais:frequentemente usado em aprendizado supervisionado, pois pode modelar a dependência de uma variável y em uma variável x ou seja esse modelo tenta calcular probabilidades condicionais.
    • Aprendizagem Profunda (Deep Learning):neste aprendizado há múltiplas camadas que processam os dados em uma rede neural artificial. Esta abordagem tenta modelar abstrações de alto nível de dados usando grafo profundo com várias camadas de processamento.



  • Estado da Arte:
    • Uber:
    • Overwatch:
    • Google:



  • Integrações:
    • Aprendizado de Maquina tem ligação com varias tecnologia, por exemplo Deep Learning, IA, Big Data, Banco de Dados, Business Intelligence, Mineração de Dados e Estatísticas.



Memória RAM

  • Conceito:
    • A memória RAM (Random Access Memory - Memória de Acesso Aleatório) é um hardware de armazenamento randômico e volátil, que permite o acesso direto a qualquer um dos endereços disponíveis para o gerenciamento de dados e informações circunstancialmente com programas e softwares, e de forma bastante rápida, pois o processador não necessita procurar os dados diretamente do HD. Diferentemente da memória do HD, a RAM é uma memória que não armazena conteúdos permanentemente, uma vez que perde energia, as informações são apagadas. Comparando a uma analogia com a memória humana, ela funciona como a sua memória quando você precisa lembrar de um número de telefone para uma única ligação que ocorrerá em seguida. Você repete o número algumas vezes para lembrar imediatamente e digita-o no telefone e, rapidamente o esquece, pois não será necessário. A memória RAM faz isso, sem a necessidade de ficar repetindo os dados para si mesma, nem precisar digitar algo no telefone!



  • Funcionamento:
    • Quanto maior a memória RAM, maior sua capacidade, logo, maior seu fluxo de bits suportados. Para ter acesso a uma grande quantidade de memória no HD de uma só vez, é necessário uma grande quantidade de memória RAM. São estes, portanto, os megabites ou gigabites que aparecem nas configurações. As memórias desta índole podem ser dividas em estáticas e dinâmicas. As primeiras mantêm seu conteúdo inalterado desde que exista uma fonte de energia. As segundas, ao contrário, envolvem uma "leitura destrutiva", ou seja, a informação é perdida ao ser lida e para evitar isso deve-se restaurar os dados com uma operação de "refresco". A memória RAM é um chip semelhante a um micro-processador, composto por milhões de transistores e capacitores. O capacitor é uma peça capaz de armazenar elétrons. Quando ele está carregado, o sistema faz uma leitura com base no famoso código binário de “zeros e uns”. Cada leitura dessa em zero ou um significa um bit de informação. Essa leitura é feita de forma muito rápida, são muitas em poucos milésimos de segundos. É assim que a memória RAM processa todas as ações executadas pelo usuário.



  • Estado da Arte::
    • A DRAM (Memória de Acesso Aleatório Dinâmico) é o padrão de memória que perdura até hoje, mas para chegar aos atuais módulos, a história teve grandes reviravoltas. A partir da metade da década de 70, a memória DRAM foi definida como padrão mundial, dominando mais de 70% do mercado. Nesse ponto da história, a DRAM já havia evoluído consideravelmente e tinha os conceitos básicos que são usados nas memórias atuais. Enquanto os computadores evoluíram baseados nas memórias DIMM SDRAM, outros dispositivos aderiram a memórias alternativas. É o caso do Playstation 3, que aderiu à linha de memórias XDR DRAM. O padrão XDR é como se fosse um sucessor das antigas memórias baseadas no RIMM (também conhecida como memória Rambus DRAM). Atualmente, as memórias são do tipo SGRAM (RAM de sincronia gráfica). Todas elas são baseadas na memória RAM, mas têm certas diferenças.



  • Integrações:
    • A memória RAM é um componente essencial não apenas nos PCs, mas em qualquer tipo de computador. Por mais que exista espaço de armazenamento disponível, na forma de um HD ou memória flash. Processadores, placas mãe, discos rígidos, ventoinhas, placas de som são exemplos de tecnologias, metodologias e softwares que interagem com a memória RAM. A memória RAM, essencial no processamento e armazenamento dos seus programas, atuando em conjunto principalmente com o seu processador e seu HD.



Modelo estruturado


  • Conceito:
    • O modelo estruturado é considerado uma metodologia, ou seja, uma forma de se programar computadores. O foco principal da metodologia estruturada é a utilização de subtarefas, estruturas de laços de repetição, estruturas condicionais e em bloco. O modelo estruturado, também pode ser definido por alguns métodos correspondentes, que são: Análise Estruturada, Projeto Estruturado, Programação Estruturada, Análise Essencial, além de ser conhecido como um paradigma de programação. O modelo estruturado orienta o desenvolvimento de algoritmos que deixa mais fácil o entendimento dos programas por meio das limitadas técnicas de controle do andamento dos programas. É possível desenvolver qualquer algoritmo para diversas aplicações, e independente da linguagem de programação a qual será utilizada, utilizando essas técnicas essenciais.



  • Procedimentos:
    • A razão fulcral da programação estruturada é que um programa deve ser modularizado, ou seja, separar o programa em partes de código que sejam fundamentais e que se relacionam entre si através de três procedimentos básicos, que são sequência, seleção e iteração. Na sequência são implementados os passos de tratamento indispensáveis para relatar qualquer programa. Abaixo segue um exemplo de uma denotação desse procedimento por meio de um algoritmo, expressado por duas tarefas sendo executas em sequência, ou seja, uma seguida de outra.
    • Na seleção, é especificado a viabilidade de escolher o curso de andamento do processamento tendo como base fatos lógicos. Existem duas estruturas básicas de condição. O if que permite simbolizar os fluxos da seguinte forma: "se a condição logica a for verdadeira, faça a Tarefa a, do contrário, faça a tarefa b. Outra estrutura de condição, é o switch, que é capaz de mostras ps fluxos da seguinte forma: "se a variável x tem o valor 1, faça a tarefa a; se x tem um valor 2, faça a tarefa b, assim por diante, e se nenhum valor dos retratados forem atingidos, então existe uma tarefa padrão que é executada.
    • Na iteração, é permitido rodar segmentos do programa de forma repetida, ou seja, é possível executar um loop desde que um condição lógica seja verificada. Após a verificação desta condição, caso verdadeira, o conjunto de instruções que está associado ao comando é executado. Ao final, essa condição para novamente pela avaliação, e da mesma forma que anteriormente, se satisfazer ao teste, então o bloco de comandos novamente é executado, e assim até que a condição seja falsa.
    • O modelo estruturado é mais indicado para alguns casos particulares, pois tem um escopo mais abrangente, que muitas vezes é conveniente. Nesse modelo, é possível criar alguns diagramas que facilitam o entendimento do problema, para a implementação. Alguns desses diagramas são: DFD (Diagrama de fluxo de dados e DER (Diagrama entidade relacionamento).
  • Concorrentes:
    • O modelo estruturado concorre diretamente com o modelo orientado. O modelo orientado à objetos, conhecido como programação orientada à objetos (POO) preza a reutilização de partes de programa, ou de programas inteiros, isso para ter melhores resultados. Entretanto, cada modelo tem suas particularidades e melhores casos para aplicação. Alguns casos, é necessário utilizar o modelo orientado, em outros o modelo estruturado, entretanto, é necessário verificar quais das estratégias são as melhores para casa um dos casos.



  • Criadores:
    • O modelo estruturado, ou paradigma estruturado, surgiu no final de 1950, juntamente com as linguagens ALGOL 58 e ALGOL 60, e acabou sendo bastante alimentado pelos benefícios que o paradigma disponibiliza. Não há registros de um criador do paradigma, ou impulsionador.


Modelo Orientado a Objeto

  • Conceito:
    • O Modelo Orientado a Objetos é um paradigma de programação que busca aproximar o mundo real do virtual, para isso é usado o objeto, uma vez que o nosso mundo é composto de objetos. Os objetos se assemelham bastante ao conceito de objeto que temos no mundo real, possuindo atributos (características) e sendo capazes de executarem métodos (ações), o conceito de objetos será melhor abordado na secção "Funcionamento", logo após essa. As linguagens Orientadas a Objetos (baseadas no paradigma Orientado a Objetos) atuam como ferramentas para o desenvolvimento de softwares, esses que são utilizados nos mais diversos aparelhos, como computadores, smartphones, aparelhos domésticos, servidores e diversos outros. A Oracle, proprietária do Java (uma linguagem de programação Orientada a Objetos), afirma que mais de 3 bilhões de aparelhos utilizam Java, o que da uma boa dimensão do quanto o Modelo Orientado a Objetos esta difuso no mundo atual.



  • Funcionamento:
    • Como foi citado na secção anterior, o modelo orientado a objetos tem como foco central os objetos. Os objetos tentam ao máximo se assimilar aos objetos do mundo real, possuindo características (atributos) e sendo capazes de realizar ações (métodos). A seguir serão elucidados alguns conceitos da Orientação a Objetos:
    • Classes: Todo objeto está atrelado a uma classe. Classes são conceitos abstratos a respeito de um conjunto de objetos semelhantes, definem as características e ações básicas que todos os objetos derivados dessa classe possuirão. Para explicar melhor o conceito de uma classe pode-se imaginar um grupo de cachorros, todos pertencem a classe dos cachorros, possuindo portanto as características básicas de um cachorro (4 patas, focinho, calda, pelo cobrindo o corpo, cor do pelo) e podem realizar todas as ações básicas de um cachorro (latir, correr, pular), entretanto, os cachorros desse grupo podem se diferenciar um dos outros, tanto em características (cor do pelo, por exemplo) ou em ações (tom do latido, por exemplo). Dessa forma, uma classe é, ao mesmo tempo, um conjunto de objetos e também a estrutura básica para todos o objetos que dela derivam.
    • Objetos: Os objetos são estruturas pertencentes a uma classe, possuem atributos e métodos derivados da classe a qual pertencem, no entanto podem ser diferentes entre si. São o pilar básico da orientação a objetos e frequentemente utilizados para representar partes de um problema durante o desenvolvimento do código

    • Atributos: Atributos são as variáveis de um objeto, geralmente são utilizadas para armazenar dados relacionados ao objeto, dados esses que podem ser utilizados pelos métodos do objeto ao qual estão atrelados ou acessados por outros objetos
    • Métodos: Os métodos são os comandos que o objeto é capaz de executar, são trechos de código definidos na classe a qual o objeto pertence e que podem ser executados pelo objeto a qualquer momento. Métodos são como funções (uma vez que podem receber argumentos/métodos), mas são especificas de cada classe.
    • Agora que os conceitos centrais da orientação a objetos foram esclarecidos podemos dar inicio ao funcionamento da mesma, que consiste basicamente em dividir um problema em partes menores (os objetos e classes aos quais eles pertencem) que contribuirão individualmente, ou em conjunto, para a resolução do problema. Por exemplo, imagine que um banco queira cadastrar seus clientes, poderíamos criar uma classe banco e uma classe clientes, a classe banco teria um método responsável por criar um objeto cliente e esse objeto por sua vez seria preenchido com os dados do cliente. Da mesma forma o objeto clientes também possuiria seus métodos, como realizar um saque, por exemplo. Esse processo poderá se repetir quantas vezes forem necessárias e com uso de pouco código, uma das vantagens de se utilizar o modelo orientado a objetos. Observe que no exemplo anterior os dois objetos do mundo real (banco e cliente) foram recriados em um ambiente virtual por meio da orientação a objetos e podiam realizar ações semelhantes a que realizariam no mundo real, essa é a ideia da orientação a objetos, representar o real em um contexto virtual de modo a facilitar a resolução de problemas, tanto no que tange ao entendimento do problema, quanto a escrita do código.



  • Estado da Arte:
    • A primeira linguagem a utilizar o modelo orientado a objetos foi a Simula, criada entre 1962 e 1968. Atualmente existem diversas outra linguagens que se utilizam desse paradigma sendo as mais conhecidas: Java, Python e C++. Pode-se dizer que o estado mais atual dessa tecnologia são as modernas linguagens de programação que a utilizam, entretanto, uma vez que linguagens de programação são ferramentas utilizadas para a construção de softwares, inúmeras aplicações desenvolvidas no modelo orientado a objetos podem ser citados como a forma mais atual dessa tecnologia, como, por exemplo o YouTube, que é desenvolvido em Python



  • Integrações:
    • O Modelo Orientado a Objetos depende de diversas tecnologias, ferramentas e softwares, são elas: Computadores, Compiladores, Interpretadores, Editores de Texto, Interfaces, IDE's, entre outras.
    • O Modelo Orientado a Objetos ainda interage com outras tecnologias, ferramentas e softwares, são elas: Linguagens de Programação, WebServices, Banco de Dados, Algorítimos, IDE's, Compiladores, Interpretadores, API's, Frameworks, entre outras.



Modem


Normalização (BD)

  • Conceito:
  • Normalização é o procedimento usado para ordenar dados em um devido banco de dados, essa organização acontece por meio de tabelas e a conexão entre elas de acordo com as 3 regras criadas para a maior proteção dos dados, para tornar o banco de dados mais ágil e eliminando dados supérfluos. Esses dados ocupam espaço e geram problemas na manutenção. A organização desses dados facilita na atualização e alteração de dados que estão em uma mesma tabela e em mais nenhum outro lugar do Banco de Dados .


  • Procedimentos:
  • A metodologia tem como base 3 regras de normalização de banco de dados, cada regra tem o nome de “forma normal”. Essas regras são necessárias para garantir a maior proteção dos dados e informações. As regras(formas normais) possuem uma ordem de precedência onde você só estará executando a segunda forma normal se passar e respeitar todos os requisitos da primeira forma,dentre essas regras a terceira forma normal é considerada a de maior nível por suprir as maiores necessidades da maioria dos aplicativos. As três regras são:
  • Primeira Forma Normal (1FN)  : A primeira forma é definida e orientada para não autorizar o uso de propriedades como mais de um valor, é necessário que os

valores sejam únicos,com isso, estaremos cumprindo com o os requisitos dessa forma normal.

  • Segunda Forma Normal (2FN) : Para cumprir com os requisitos da 2FN é necessário que cumpra também os requisitos da 1FN e não conter nenhum tipo de dependência parcial. Para estar dentro dos requisitos da 2FN os atributos os atributos não-chave devem depender de toda a chave primária e não só de algumas partes.
  • Terceira Forma Normal (3FN) : Para cumprir com os requisitos da 3FN é necessário que cumpra também os requisitos da 2FN e nenhuma propriedade que não faça

parte da chave tiver uma dependência transitiva. Para estar dentro dos requisitos da 3FN um atributo não-chave não pode ter uma funcionalidade determinada por outro atributo não-chave.



Concorrentes:

Cite outras metodologias com o mesmo propósito e que concorrem com ela

Criadores:

Informe quem criou, propôs ou idealizou esta metologia


NoSQL


  • Conceito:
    • NoSQL refere-se à um modelo de banco de dados não relacional alternativo ao sistema de banco de dados relacional comumente utilizado. Este modelo é bastante reconhecido por priorizar maior escalabilidade, disponibilidade e, principalmente, desempenho na estruturação e manuseio dos dados.


  • Funcionamento: O funcionamento será mostrado de acordo com uma comparação feita entre o banco de dados relacional e o banco de dados não relacional.
    • Banco de dados tradicional (relacional):
      • Possui um modelo estrutural tabular pré-definido, logo é conveniente apenas quando há poucas alterações no registro de estrutura de dados.
      • Demanda de um alto custo e complexidade para alcançarem escalabilidade, pois para aumentar sua infraestrutura é necessário:
        • Distribuição vertical ou scale-up: quanto maior a quantidade de dados, mais configurações físicas serão necessárias, ou seja, é algo limitado. Esse recurso de distribuição é o mais comum nesse modelo de banco de dados.
        • Distribuição horizontal ou scale-out: quanto mais dados, mais servidores serão necessários (não há necessidade de serem computadores de alto nível).
      • De primeiro momento, o scale-out parece ser um processo bem simples e eficaz, porém a grande problemática é que o processo usado para uma configuração se integrar com os demais servidores existentes no sistema de banco de dados relacional é caro, demorado e muito complexo.
      • O armazenamento e a recuperação de dados é feito através de consultas ao Structured Query Language (SQL), realizadas por um sistema de gerenciamento de banco de dados RDBMS.
      • Utiliza o modelo ACID (atomicidade, consistência, isolamento e durabilidade) em sua estrutura.
        • Atomicidade: uma transação tem de ser concluída ou não, ou seja, não pode "ficar pela metade".
        • Consistência: quando uma transação é concluída, os dados devem estar de acordo com os do schema do banco de dados.
        • Isolamento: transações simultâneas devem ser executadas separadas uma das outras.
        • Durabilidade: é a capacidade do sistema de recuperar de alguma falha, seja interna ou externa.
      • Devido ao modelo ACID, as transações podem ser feitas com segurança, garantia da atomicidade, isolamento e consistência dos dados, porém assegurar isso tudo gera muito custo, pouco desempenho e requer uma configuração de alto processamento. Logo, é melhor usado quando os dados são de altíssima importância, por exemplo, em sistemas de transações financeiras.
    • Banco de dados não relacional (NoSQL):
      • Criado a partir do modelo BASE (como se fosse um ACID, mas com alterações). Nesse modelo, não há muita consistência de dados, mas em contrapartida há maior facilidade de particionamento (dados permanecem inalterados caso o sistema de banco de dados seja implantado em servidores diferentes), assim o sistema torna-se mais escalável, eficiente em questão de desempenho e de menor custo.
      • Maior facilidade na distribuição horizontal scale-out, tornando a utilização mais eficiente e econômica.
      • Grande diversidade quanto ao tipo de modelos de banco de dados, garantindo muitas opções para uso do desenvolvedor de acordo com suas necessidades. Alguns modelos mais comuns são:
        • Baseado em documentos (document-store);
        • Baseado em chaves/valores (key/value);
        • Baseado em grafos (Graph).
      • A inserção e recuperação de dados são feitos através de chaves de partição que permitem que os aplicativos procurem pares de chave-valor, documentos semi-estruturados ou grafos na memória.
      • Devido a suas características, o uso do NoSQL é viável para bancos de dados que necessitam de ter alta escalabilidade, desempenho e que possam ter tolerância a algumas falhas.



  • Estado da Arte:
    • Devido a suas características, o uso de um banco de dados não relacional (NoSQL) é muito comum nos dias atuais. Algumas empresas, por exemplo, a Google e a Amazon fazem o uso do NoSQL juntamente com a distribuição horizontal scale out. Além disso, a boo-box faz o uso de um sistema híbrido, em que há presença de sistemas de bancos de dados relacionais atuando em conjunto com NoSQL. Outrossim, outras empresas e softwares utilizam essa tecnologia com modelos de dados específicos, por exemplo:
      • Baseado em documentos (document-store): utilizado pelo CouchDB.
      • Baseado em chaves/valores(key/value): utilizado pela Amazon Simple DB.
      • Baseado em grafos(Graph): utilizado pelo software Neo4j.



  • Integrações:
    • A tecnologia NoSQL, além de depender, faz interações com diversas outras tecnologias, por exemplo:
      • API;
      • Linguagem de programação;
      • Sistemas Operacionais;
      • SQL.

Plataformas

  • Conceito:
    • No mundo da computação, o conceito de Plataforma consiste em um ambiente capaz de prover infraestrutura, ferramentas, bibliotecas entre outros recursos a fim de suportar aplicações e outros serviços. As Plataformas podem se diferir de acordo com a finalidade à qual elas serão empregadas, dentre estas, podemos considerar plataformas que são responsáveis por prover um ambiente para a implantação de aplicações, fornecendo assim recursos e serviços para que estas aplicações sejam suportadas e possam ser colocadas em produção. Também podemos levar em conta plataformas que forneçam recursos para o desenvolvimento de aplicações, dentro deste conceito é possível notarmos a diferença entre uma Plataforma e um Framework, onde a principal diferença é que o Framework fornece apenas recursos de software para o desenvolvimento de aplicações, enquanto a plataforma também oferece recursos de Hardware, sendo assim é possível criar ambientes de testes e homologação dentro de uma plataforma a fim de simular situações reais.
    • Além de todas as características que foram citadas acima, podemos ressaltar também alguns pontos importantes que uma plataforma busca trazer, como, escalabilidade, que consiste em permitir que se cresça ou reduza o ambiente de acordo com as necessidades demandadas. Também podemos citar a disponibilidade, esta visa que o sistema esteja sempre acessível e provendo suas funções esperadas mesmo que ocorram falhas dentro do ambiente. Redundância, que consiste em termos um ambiente espelho pronto para assumir a função do ambiente principal caso algum problema ocorra. E por fim um ponto de muita importância que é a segurança e privacidade da informação manipulada. É imprescindível que as informações que são processadas dentro de um sistema sejam totalmente sigilosas, pois o vazamento ou perda delas pode impactar até no fim das atividades de uma empresa.


  • Funcionamento:
    • O funcionamento de uma plataforma é descrito basicamente de um conjunto de softwares que interligam com uma infraestrutura e podem ser configurados de acordo com protocolos e padrões adotados pela empresa que irá utilizar o recurso. Podemos evidenciar o protocolo SOAP que é muito utilizado quando falamos de plataformas, uma vez que ele é destinado a ambientes distribuídos. Além do SOAP existem outros protocolos que são utilizados de acordo com a complexidade do produto final que se espera inserir em uma plataforma, dentre estes padrões, podemos evidenciar o REST e JSON.



  • Estado da Arte::
    • Quando pensamos no conceito de Plataformas é inevitável que se leve em consideração os custos para se obter um ambientes que agrega tanto uma infraestrutura quanto um conjunto de softwares para prover serviços específicos. Em vista disso, novas tecnologias são criadas a fim de contemplar o conceito de Plataformas e uma delas são as Clouds. Com a utilização de Clouds é possível criar ambientes munidos de recursos de Hardware e Software de maneira muito mais barata e sem a necessidade de se preocupar com a alocação física de tais recursos. Quando uma Plataforma criada em cloud é disponibilizada para comercialização nos deparamos com o surgimento de um novo conceito dentro da computação, sendo este o conceito de PAAS (Platform as a Service).



  • Integrações:
    • Uma Plataforma pode ser interligada com diversas tecnologias, podemos evidenciar alguns exemplos como: Clouds, Protocolos de rede, IOT, Bancos de dados, etc.Basicamente uma Plataforma pode acabar por englobar quase todos os conceitos da computação, pois, de acordo com a finalidade que a mesma terá, ela irá abordar tecnologias dos mais variados tipos.



  • Referências:
    • MAGALHAES, Guilherme. Comparação entre Plataformas de Computação em Nuvem. Disponível na internet via [3]
    • SOUSA. Flávio. MOREIRA, Leonardo. Computação em Nuvem: Conceitos, Tecnologias, Aplicações e Desafios. Disponível na internet via [4]


Portas

  • Conceito:
    • Porta pode ser compreendido de três maneiras, uma de forma física (hardware), de forma lógica (dispositivos eletrônicos) ou em rede de computadores (software) que será abordado no texto. As portas no conceito de rede de computadores (software) tem como principal função o ponto final de uma transmissão de dados. O maior propósito é identificar o tipo de aplicação e processo no computador, fazendo que todos os dados que estão "entrando" em um desktop funcionem sem conflito, por exemplo, um programa de e-mail, um navegador, downloads via bittorrent e outros programas que geram informações. Hoje existem mais de 65000 portas, e uma das portas mais conhecida é a porta 80 que é a http, ou seja, paginas de internet, é por essa porta que "entram" as informações da Internet. É importante entender também que as portas estão diretamente ligadas ao IP da máquina, as informações chegam na máquina através do IP mas só são devidamente entregues em seus "pontos finais" em virtude das portas.



  • Funcionamento:
    • As portas possuem um número associado a um tipo de aplicação que quando adicionado ao IP, determina a aplicação que funciona em determinada máquina. Resumidamente, é possível chegar informações em uma determinada máquina através do IP dela, mas essas informações só conseguem ser corretamente direcionadas em suas devidas aplicações através das portas. Por exemplo, supondo uma máquina que após a conexão com a internet gerou um IP 200.130.20.8, todas as informações vão chegar na máquina através desse IP, porém, se não fosse a função das portas todas essas informações estariam completamente bagunçadas. Imaginando uma informação que chegou pelo google chrome, a porta que foi responsável por aquele tipo de informação (porta 80) agiu naquele dado e enviou para a aplicação correta. A porta sempre fica após o IP, no caso dessa informação ficaria: 200.130.20.8:80. Existem várias analogias a esse tipo de processo, um dos que chamam a atenção é a seguinte analogia: Imaginemos um funcionário em um prédio com vários andares e apartamentos, esse funcionário tem a função de entregar as correspondências para os moradores daquele prédio. As correspondências chegam na mão do funcionário, para isso, o correio deve possuir o endereço do prédio, o CEP, o número, cidade, bairro, enfim, uma variedade de informações (isso seria o IP da máquina), chegando as correspondências na mão do funcionário agora ele tem o dever de entregar cada correspondência em seu devido apartamento, isso só sera possível se ele tiver o nome de cada correspondência ligado ao apartamento (isso seria a porta), com o nome da pessoal da correspondência e o apartamento ele pode entregar para a pessoa a correspondência dela.



  • Estado da Arte:
    • Esse tipo de software pode ser considerado padrão em computadores, sendo difícil de se tratar sobre alguma função que evoluiu ou anda evoluindo em relação as portas. Portanto, não tratarei sobre o estado da arte em relação as portas.



  • Integrações:
    • Como dito anteriormente, as portas estão completamente ligadas ao valor do IP (Internet Protocol ou Protocolo da Internet), sem o valor do IP não existira função para as portas, pois as informações nem chegariam na máquina. Um diagrama que podemos adotar seria:

Máquina -> Internet -> IP -> Informações -> Porta -> Aplicação


REFERÊNCIAS

FOROUZAN, B. Data Communications and Networking. 4th Edition. New York: The McGraw-Hill Companies, 2007.

https://www.youtube.com/watch?v=h70939yYgXM&t=1s

https://pt.wikipedia.org/wiki/Porta_(redes_de_computadores)




Protocolos

  • Conceito:
    • Conjunto de regras que permite a conexão, comunicação e transferência de dados entre dois sistemas computacionais, sendo implementados pelo hardware,

software, ou pela combinação de ambos. Protocolo é a "língua" dos computadores, ou seja, uma espécie de idioma que segue normas e padrões determinados. É através dos protocolos que é possível a comunicação entre um ou mais computadores. Os protocolos de rede nasceram da necessidade de conectar equipamentos de fornecedores distintos, executando sistemas distintos, sem ter que escrever a cada caso programas específicos.


  • Funcionamento:
    • Com base no modelo OSI (Open System Interconnection) que divide as redes de computadores em 7 camadas (Em ordem decrescente: Application > Presentation > Session > Transport > Network > Data Link > Physical), os protocolos estão divididos, associados e atuando em cada uma dessas camadas. O objetivo de cada camada 'n' é fornecer informações ás camadas superiores, trocando essas informações com a camada 'n' correspondente em outras máquinas. Dentre as principais funções dos protocolos estão a especificação clara do ponto de destino de mensagens e dados, estabelecimento de conexão entre a fonte e o destino, controle de fluxo e de erros, retransmissão de dados, e confirmação da recepção destes dados. Os protocolos são divididos em dois tipos principais: Abertos (Podem se comunicar com outros protocolos independente da plataforma (Windows, Linux, e etc)) e Proprietários (Comunicam-se apenas com uma plataforma padrão), e executam dois tipos de serviços diferentes: Orientados á conexão (TCP, onde ocorre o processo de handshaking, que confere se os pacotes de dados serão enviados e recebidos com segurança e sem perdas) e os Não Orientados á conexão (UDP, onde não há handshaking, e portanto, não há garantia da chegada de todos os pacotes de dados). Apenas protocolos mais simples são executados de maneira independente, com a maioria deles sendo executadas em duplas ou conjuntos maiores, formando as chamadas "Pilhas de Protocolos". A pilha de protocolos mais conhecida é chamada TCP/IP, cujo nome é derivado dos protocolos Transmission Control Protocol (que em português é literalmente Protocolo de Controle de Transmissão) e IP (Internet Protocol, o Protocolo da Internet). Essa pilha, por sua vez, segue um modelo próprio de 4 camadas (Application > Transport > Web > Interface) e é formada pela sequência dos protocolos HTTP, FTP, ARP, ICMP, IP, TCP, UDP, SMTP, Telnet e NNTP.


  • Estado de Arte e Integrações:
    • Os protocolos são fundamentais e indispensáveis se tratando de rede e comunicação de sistemas e computadores modernos, estando integrados em todas as áreas das tecnologias de informação e representando um padrão seguido por elas na atualidade.


PWA


RA


  • Conceito:
    • Realidade Aumentada é uma tecnologia que permite a imersão do usuário ao meio virtual, possibilitando que haja maior interação com um ambiente criado por meio de computação. Esta faz possível a interação dos mundos físico e os desenvolvidos virtualmente.



  • Funcionamento:
    • Essa tecnológia não se restringe a apenas uma maneira de realização, ou seja, pode ser executada de inúmeras formas. Algumas delas são por meio de etiquetas QR e rastreamento de imagem.
      • O primeiro deles, a etiqueta serve como porta de entrada ao software, onde é lida e as informações referentes são transmitidas ao usuário e o aplicativo é responsável pela leitura e processamento do código contido na mesma.

      • No segundo caso o software é programado por meio de objetos, imagens e sinais capturados por câmeras, ou seja, são informações obtidas do mundo real. Assim que as recebe, o programa apenas as processa, interpreta e exibe os resultados.



  • Estado da Arte:
    • Devido ao grande avanço nessa tecnologia, podemos vê-la atualmente integrada à dipositivos e aplicativos, exemplos destes são o HoloLens e Google Glass, sendo atualmente sinônimos de tecnologia de ponta.



  • Integrações:
    • A Realidade Aumentada depende de três componentes básicos para existir, sendo eles:
      • Um objeto real com uma marca de referência, para que seja possível interpretar e criar sua versão virtual;
      • Dispositivo que transmita a imagem do objeto a ser virtualizado;
      • Software capaz de interpretar o sinal de imagem transmitido pelo pelo dispositivo



Raspberry

  • Conceito:
    • O Raspberry Pi é basicamente um micro-computador, que pode ser conectado, assim como um computador, a um monitor/TV, junto de periféricos, e utilizado da forma que o usuário quiser. Muito utilizada para aqueles que querem possuir uma Smart-TV, porem não querem adquirir a mesma. Neste caso, é comum a utilização de um Raspberry ou algum variante do mesmo.
    • Ele é pequeno, fácil de usar e possui diversas funcionalidades. Alem disso, também existem vários projetos variados que utilizam essa tecnologia, como os ligados à robótica e automação por exemplo.



  • Funcionamento:
    • A estrutura do Raspberry é muito similar a de um computador, com Chip, CPU, Memória Ram, GPU, Wireless e Bluetooth. Apenas ligando em uma fonte de energia e os periféricos básicos, ele já vem integrado com um S.O. próprio chamado Raspbian, baseado em Debian (Linux).
    • A partir disso, é possível criar ilimitadas possibilidades de sua utilização, desde a transformação de uma TV em Smart-TV, até incríveis automações.



  • Estado da Arte::
    • A última versão do Raspberry, é o Raspberry Pi 3 lançado no dia 29 de fevereiro de 2016. Este é o primeiro modelo que utiliza um Chip Broadcom BCM2837 que contem um processador 1.2GHz 64-bit quad-core ARMv8 CPU, 1 GB de RAM e Bluetooth 4.1.
    • Atualmente o Raspberry possui seu sistema operacional oficial, chamado Raspbian, entretanto este também é compatível com sistemas operativos baseados em GNU/Linux e Windows 10 IoT versão gratuita e adaptada para IoT.
    • A partir deste ultimo modelo, ainda são criadas inúmeras variedades de utilização da tecnologia, como robôs e ate mesmo video-games, como por exemplo, a versão miniatura do Nintendo 64.


  • Integrações:
    • O Raspberry possui relação com o famoso Arduino, sendo também muito utilizado na área da robótica. Entretanto, o Raspberry tenta ser bem mais moderno, com suas pré-instaladas portas de acesso USB, saídas de vídeo e entre várias, isso porque ele tenta ser um computador pessoal barato e simples, diferente do Arduino. Porem eles possuem uma grande relação, o Raspberry teve suas raízes no mesmo microcontrolador que o Arduino utiliza, o ATmega.



Redes de Computadores


  • Conceito:
    • Uma rede de computadores pode ser definida como dois ou mais computadores conectados, por estruturas físicas (equipamentos) e lógicas (programas, protocolos),de forma que possam compartilhar informações entre si. Elas são projetadas com o objetivo de compartilharem recursos de hardware e software e viabilizar a troca de informações entre os seus usuários. Os meios mais comuns para a transmissão dos dados são por cabos, via satélite e redes sem fio (wireless).


  • Funcionamento:
    • Cada rede de computadores possui características próprias como, quantidade de máquinas conectadas, tecnologias utilizadas, alcance e finalidade. Para facilitar a criação de redes, elas são separadas por categorias e podem ser classificadas pelo meio físico de transmissão de dados, a dimensão da rede, a capacidade de transferência de informação.
    • Quanto à dimensão da rede, ela pode ser classificada como LAN, WAN, MAN, CAMPUS, WLAN, VLAN, SAN VPN, PAN.
    • A LAN (Local Área Network) é uma rede pequena, que pode variar entre 10 metros à 1 Km de distância. São muito utilizadas em residências, empresas de pequeno porte.
    • WAN (Wide Area Network) é uma rede de longa distância e pode ligar desde um país a todo o planeta, como a Internet por exemplo.
    • MAN (Metropolitan Area Network) são redes com um alcance um pouco maior que a LAN e menor que a WAN. Normalmente liga várias LAN's dentro de uma mesma cidade, como diferentes pontos de uma mesma empresa.
    • WLAN (Wireless Local Area Network) são redes de curta distância sem fio.
    • SAN (Storage Area Network) são redes de armazenamento, usados para ligações de curta distância entre dispositivos e servidores de massivo armazenamento.
    • Para que haja uma rede que permita a comunicação, são necessários, no mínimo, 2 itens. O primeiro é um meio para a propagação dos dados, como os cabos para as redes com fio, ou a própria atmosfera para as redes sem fio. O segundo item são os chamados protocolos, eles são códigos ou padrões específicos que são emitidos por um sistema de perguntas e respostas. Esses padrões permitem a comunicação entre software e hardware.


  • Estado da Arte::
    • Atualmente tem-se como estado mais avançado das redes de computadores os cabos de fibra óptica, para redes com fio, que são feixes de "fios de vidro" revestidos em duas camadas de plástico reflexivo. Uma fonte de luz é ligada e desligada rapidamente em uma das extremidades do cabo, essa luz viaja pelo fio utilizando o princípio físico da reflexão total da luz. As vantagens de utilizar esse tipo de cabeamento é que a transmissão ocorre de maneira bem mais veloz que nos cabos de cobre, são imunes às interferências eletromagnéticas, tem maior segurança de sinal e uma instalação facilitada. Em contrapartida, o custo é elevado, as fibras são mais frágeis, tem maior dificuldades para ramificações.
    • Para as redes sem fio, o estado elevado que se tem atualmente são as redes wireless, ou popularmente conhecida wifi, são redes que não necessitam de um meio físico para a propagação dos dados, o meio utilizado é a atmosfera.



  • Integrações:
    • As redes de computadores dependem de várias outras tecnologias para seu funcionamento como, switchs, hubs, placas de rede, roteadores, servidores, etc, e cada um desses exercendo uma função diferente em um ambiente específico.
    • Os hubs, por exemplo, são dispositivos são dispositivos que captam e concentram os dados da rede e depois os distribui entre as outras máquinas, durante esse processo nenhuma máquina consegue enviar algum sinal até que a distribuição dos dados tenha sido finalizada. Os hubs são mais utilizados em redes domésticas, podendo ter de 8 a até 32 portas, e existindo com 4 modelos diferentes, os ativos, passivos, empilháveis e inteligentes.
    • Os switchs são aparelhos semelhantes aos hubs, porém funcionam como pontes, ou seja, ele envia dados apenas para a máquina que o solicitou. Possui também muito mais portas de entrada e um melhor desempenho, fazendo com que dessa forma, seja possível sua utilização em redes maiores.
    • As placas de rede são dispositivos que permitem a comunicação entre os computadores pertencentes àquela rede. Como cada rede tem uma arquitetura, então elas dependem de placas específicas, sendo as mais comuns, placas do tipo Ethernet e Token Ring (rede em anel).


Redes Neurais


  • Conceito:
    • Redes Neurais são processadores que são projetados baseando-se na estrutura do cérebro humano, elas podem ser criadas virtualmente (como um software) ou fisicamente (como um processador que simula a estrutura cerebral), para simular um cérebro uma grande quantidade de “neurônios artificiais”, que são basicamente unidades de processamento, são associados e distribuídos de forma paralela, o que permite que uma rede neural possa processar grandes quantidades de informação simultaneamente, ou então processar uma mesma informação de várias formas diferentes ao mesmo tempo.Esse processamento em paralelo permite que as redes neurais desenvolvam certas características como:
      • Aprendizagem e Adaptabilidade: uma Rede Neural, diferente de um processador comum, não tem uma programação definitiva que define qual será sua utilidade desde o início, em vez disso ela passa por um processo de aprendizado mediado por uma fonte externa (algoritmo de aprendizagem) que irá definir o que fazer em determinada situação, mas que não irá limitar ela a fazer somente aquilo que foi inicialmente aprendido, o que permite que uma rede neural possa futuramente passar por outro processo de aprendizado, que a permitirá realizar novas ações, sem a necessidade de passar por um processo de reprogramação.
      • Tolerância a Falhas: uma rede neural física pode potencialmente resistir a falhas que seriam muito graves para um processador comum, como um curto circuito em uma unidade de processamento, essa resistência é possível devido ao processamento em paralelo das redes neurais, que faz com que a informação que passa por ela seja transmitida por vários canais diferentes, por causa disso, caso ocorra uma falha a rede apenas sofrerá uma queda de desempenho em vez de uma falha total, vale dizer que uma rede neural ainda pode ser inutilizada por falhas desse tipo, mas para isso a falha teria que ocorrer em uma escala muito maior.
    • Devido a seu processamento e às várias características inerentes de uma rede neural, as redes neurais podem ser aplicadas em várias tecnologias que precisem de uma programação adaptável ou que exijam o processamento de uma grande quantidade de informação em um período reduzido de tempo, como programas de Data Mining, de reconhecimento de voz, ou na programação de uma Inteligência Artificial.



  • Funcionamento:
    • O funcionamento de uma rede neural irá depender inicialmente de seu aprendizado, um algoritmo de aprendizagem ira simular uma situação desejada que será processada por todos os neurônios artificiais presentes na rede neural, e dependendo da resposta dada pelo neurônio artificial será gerado um sinal de erro ou de acerto, se o sinal retornado for um erro, um mecanismo de controle irá realizar ajustes no neurônio em questão para que o seu sinal de saída seja algo mais próximo da resposta desejada, esse processo se repetirá várias vezes até que o sinal enviado pelo neurônio retorne um acerto consistentemente.
    • Após o processo de aprendizado a rede neural estará pronta para executar a função desejada, toda informação será processada simultaneamente pelos vários neurônios artificiais, caso seja desejado que a rede neural em questão realize outra função ela irá passar por outro processo de aprendizado, mas caso ocorra uma mudança inesperada na informação recebida pela rede neural, ela poderá realizar um processo de generalização, que irá permitir que a rede neural possa gerar uma resposta correta para uma situação que não foi inclusa no processo de aprendizado.
    • Vale dizer que: o processo de generalização só é possível se a informação recebida ainda se encaixar nos resultados já aprendidos pela rede neural, e também que as redes neurais ainda necessitam de outros sistemas para que possam funcionar tal como o algoritmo de aprendizagem e o mecanismo de controle.



  • Estado da Arte:
    • Um exemplo recente de aplicação de redes neurais seria o Xulia, que é um programa de reconhecimento de voz que traduz a língua portuguesa para a interface de comandos de voz da Microsoft (que não é adaptada à língua portuguesa originalmente), o que permite que os brasileiros que não sabem falar as línguas suportadas pelo programa original possam utilizá-lo.



  • Integrações:
      • Data Minig
      • IA
      • Machine Learning
      • Algoritmos




Roteador


*Conceito: Seu nome é atribuído por conta de quando conectado à um modem ele é responsável por pegar os sinais do modem da sua banda larga e dividi-lo entre os dispositivos,o roteador ira “criar” uma rede interna, podendo assim compartilhar tal rede com outros diferentes dispositivos e consequentemente obtendo acesso à internet.Roteador tem como função primordial enviar e receber pacotes de dados, por meio de protocolos, de aparelhos diversos, como: smartphones, tablets e computadores, por uma rede interna que tenha conexão com internet.

*Funcionamento: O roteador,multiplica conexões, ademais,realiza o processamento das melhores rotas para enviar pacotes de dados, garantindo que seus sinais cheguem ao destino final de maneira mais rápida. É um equipamento usado para fazer a ligação de protocolos, a comunicação entre diferentes redes de computadores provendo a comunicação entre computadores distantes entre si. Uma característica estética muito comum em roteadores é a posse de antenas em sua construção, e que têm uma função muito importante em relação à amplificação de sinal, em contrapartida, a quantidade de antenas não irá trazer benefícios muito significativos em relação ao alcance do roteador à outros dispositivos, o beneficio maior será na precisão do sinal. Uma ressalva muito importante é lembramos que o sinal wifi emitido pelo roteador dual band, opera em 2 frequências divergentes,cada uma com uma com funcionalidadade especifica, sendo essas frequências de 2.4GHz e 5 GHz respectivamente, onde a de menor frequência possui mais interferência com outros aparelhos eletrônicos sem fio,por conta de usarem a mesma freqüência, e seu carro chefe é disponibilizar um alcance maior, entretanto com uma velocidade menor,já a de maior frequência possui uma velocidade maior em relação à de 2,4 GHz e sofre menos com o problema de interferência, pois menos aparelhos utilizam- a, no entanto com um alcance bastante reduzido.Vale lembrar também que existem dois tipos de roteadores, os estáticos e os dinâmicos. Os estáticos são aparelhos mais baratos, que funcionam priorizando a rota mais curta para o envio de pacotes de dados,sendo assim, não levando em conta possíveis congestionamentos na transmissão nas redes, já os dinâmicos são mais caros e sofisticados, funcionam fazendo uma avaliação prévia das condições das rede, ademais, priorizam as rotas mais eficientes,deste modo, conseguem evitar vias de acesso que encontram-se congestionadas pelo excesso de dados. Roteadores possuem diferentes valores em suas potencias de transmissão, estesvalores indicam a potência (ou capacidade) de transmissão do roteador e isso influenciará diretamente com a velocidade da sua conexão, este valor tambem indicará qual o limite da capacidade do roteador transferir e manusear dados baseado na velocidade da sua internet. Para calcular a real capacidade do roteador, é necessário dividirmos por 8 o valor de Mbps (megabit por segundo) que é informado pelo fabricante, pois assim teremos o valor em Megabytes por Segundo. Em um âmbito que tange a segurança nas redes, é extremamente importante citar o papel do roteador nessa efera. Praticamente todos os roteadores usam os mesmos padrões de segurança ,o que realmente faz difença na segurança da sua conexão é o protocolo (criptografado) de segurança adotado e a “força” da senha escolhida pelo usuário.Os protocolos mais comuns são: WEP, WPA e WPA2, indubitavelmente o mais usado é o WPA2, por possuir o famoso AES(Advanced Encryption Standard), que seria um padrão de criptografia avançado,mesmo que o invasor já tenha acesso a rede ele irá levar de 2 à 14 horas no mínimo para conseguir realmente invadir a rede.

*Estado da Arte: O roteador RT-AC5300 da ASUS é hodiernamente considerado o melhor do mercado ele trabalha em três bandas: capaz de entregar velocidades de até 1 Gbps na banda de 2,4 GHz e até 2,167 Gbps em cada uma das duas bandas 5 GHz. Portanto o roteador possui 5,3 Gbps no total. As oito antenas do roteador da ASUS estão montadas num esquema 4×4 MIMO com tecnologia AiRadar. desta forma cobrindo uma área de cerca de 500 m².

*Integrações: O roteador é altamente dependente do Modem, pois ele seria a “ponte” entre a conexão local e a internet basicamente. O roteador pode ter interação com inúmeras tecnologias, sejam elas wireless ou não,desde que tenham conectividade com a internet,isso é, desde uma impressora até um celular ou câmera de segurança.

*FONTES E REFERENCIAS https://s3.amazonaws.com/academia.edu.documents/3451208/cap1.pdf?AWSAccessKeyId=AKIAIWOWYYGZ2Y53UL3A&Expires=1523760444&Signature=z4HgdlIcWDlHDa5v70sBmUbtkNs%3D&response-content-disposition=inline%3B%20filename%3DRedes_de_Computadores_e_Internet.pdf

https://www.howtogeek.com/234233/whats-the-difference-between-a-modem-and-a-router/

https://patents.google.com/patent/US5309437A/en

http://www.techtudo.com.br/dicas-e-tutoriais/noticia/2016/03/roteador-com-duas-ou-tres-antenas-veja-qual-e-o-melhor.html

https://www.hardware.com.br/artigos/basico-entendendo-rotesdores-wireless/

http://www.techtudo.com.br/noticias/noticia/2015/09/novo-asus-ac5300-ou-o-top-ac3200-da-d-link-qual-o-roteador-mais-veloz.html

https://www.makeuseof.com/tag/10-crucial-features-use-wireless-router-setup-home/

https://geek360.com.br/melhores-roteadores-wifi/

http://www.fazfacil.com.br/manutencao/roteador/

http://www.producaodesites.com.br/noticia/como-funciona-um-roteador-e-saiba-quais-os-tipos-existentes/472

https://www.magazineluiza.com.br/portaldalu/roteadores-o-que-sao-pra-que-servem/308/

http://www.techtudo.com.br/artigos/noticia/2013/05/como-funciona-um-roteador-e-saiba-quais-os-tipos-existentes.html

http://www8.hp.com/br/pt/campaigns/wireless-printing-center/wireless-network-help4.html

Satélite


  • Conceito:

Satélite é um corpo que orbita,de maneira natural ou artificial, outro corpo de massa maior. Podemos definir os satélites artificiais como artefatos feito pelo homem e que orbitam nosso planeta e outros corpos celestes, como a Lua, o Sol ou outros planetas.

Existem diversos tipos de satélites, cada um com sua função. Por causa da cobertura global dos satélites, grande parte dos satélites que estão em funcionamento se destinam aos meios de comunicação. Os satélites de comunicação são utilizados para a transmissão do sinal de rádio, televisão e telefone, de internet e outros serviços.

Os satélites meteorológicos têm como função principal fornecer dados e imagens que permitem monitorar e prever as condições meteorológicas do planeta.

Os satélites astronômicos servem para observar os objetos celestes sem a interferência da atmosfera terrestre, que são basicamente telescópios colocados no espaço e que permitem a observação dos fenômenos do Universo em diversos comprimentos de onda (como luz visível, raios X, infravermelho e raios gama). Isso permite que eles sejam usados para fotografar os planetas do sistema solar, descobrir a composição das estrelas e estudar fenômenos que acontecem muito distante de nós, como buracos negros e quasares, dentre outras aplicações.

As estações espaciais, que também são um tipo satélite, são espaçonaves capazes de suportar uma tripulação no espaço durante um período estendido de tempo, onde outras espaçonaves podem ancorar. Elas são utilizadas para estudar os efeitos causados pela longa permanência de seres humanos no espaço e servem como plataforma para diversos estudos que não seriam possíveis em outras naves ou na Terra, como, por exemplo, experimento na microgravidade.

Os satélites militares são utilizados para captar e retransmitir a comunicação entre as forças bélicas (como aviões, navios e submarinos). Os satélites de reconhecimento são tipos de satélites militares utilizados para fornecer informação de inteligência sobre outros países. Basicamente existem quatro tipos de satélites de reconhecimento. O primeiro utiliza imagens do território inimigo para detectar eventuais áreas de lançamentos de mísseis e movimentação de armas. O segundo tipo é o satélite que funciona como radar, detectando movimentação mesmo através das nuvens. O terceiro são satélites super sofisticados que permitem capturar o sinal de rádio e microondas emitido em qualquer parte do mundo. E por fim os satélite militares de comunicação que fazem a comunicação muito mais rápido transmitindo dados de satélites espiões para estações de recepção na Terra.


  • Funcionamento:

Como as ondas eletromagnéticas viajam em linha reta, a curvatura da Terra não permite que duas regiões distantes do globo se comuniquem diretamente. Por isso, o sinal é transmitido para o satélite que realiza a recepção e transmissão de dados através de um aparelho chamado transponder. Este aparelho recebe o sinal enviado da Terra, o amplifica, processa e então retransmite de volta para outras regiões, permitindo, assim, a comunicação global. Para fazer a cobertura simultânea de praticamente todos os pontos do globo foi criado o conceito de "constelação de satélites", que formam uma espécie de rede que envolve todo o mundo.

Dependendo da função, os satélites são colocados em órbitas de diferentes altitudes. A maioria se encontra em uma órbita geoestacionária, em que sua rotação acompanha a rotação da Terra. Os satélites meteorológicos estão geralmente localizados nessas órbitas, de onde se tem uma visão constante da mesma área, que também é bastante utilizada nos meios de comunicações. Os satélites do Sistema de Posicionamento Global (GPS) fazem órbitas semissíncronas, uma órbita praticamente circular na qual o satélite leva doze horas para completar uma revolução. Por isso, a cada 24 horas o satélite passa sobre o mesmo ponto no Equador duas vezes.


  • Estado da Arte:

Atualmente os satélites artificiais conseguem receber e transmitir dado pelo todos os pontos do planeta, facilitando, assim, os meios de comunicação, científico, militar e também de posicionamento. Exemplos de aplicações recentes são o GLONASS que é um sistema de navegação global por satélite (GNSS) russo e o NAVSTAR/GPS dos Estados Unidos. Atualmente são os dois únicos sistemas GNSS completamente operacionais.


  • Integrações:

Os satélites artificiais interagem com os meios de comunicação como a televisão, rádio, a internet, com as redes de computadores, redes militares e no meio científico.

Todo satélite depende de um controle de posição, antenas para que ocorra a transmissão e recepção de dados, um sistema operacional que controle as funções do satélite e uma fonte de energia, que geralmente é obtida a partir do Sol por painéis solares.


  • Referências:

https://pt.wikipedia.org/wiki/Sat%C3%A9lite_artificial

http://www.scielo.br/pdf/rbef/v30n1/a11v30n1

https://pt.wikipedia.org/wiki/GLONASS

Scrum


  • O que é

Scrum é um framework simples e ágil para gerenciamento de projetos complexos. Normalmente é usado quando há pouco conhecimento dos requisitos e/ou uma tecnologia complexa, difícil de ser dominada, havendo a formação de um cenário caótico, no qual o Scrum é melhor aplicado. Possui 3 pilares fundamentais, sendo eles: transparência, inspeção e adaptação. A transparêcia é bem nítida no Scrum, possibilitando a todos terem conhecimento dos requisitos, dos processos e do andamento dos projetos. A inspeção também é algo constante, tanto em reuniões diárias como em sprint reviews (momento e quem o Scrum Team inpeciona a ultima Sprint e cria um plano de melhorias para a próxima), para detectar indesejáveis variações, porém não pode ser frequente a ponde de atrapalhar o andamento dos processos. E a adaptação pode ser vista de duas formas: a primeira é que o produto a ser construído sofre adaptção constante conforme as mudanças vão acontecendo e sendo necessárias e a segunda é que, preservando valores e práticas, pode-se adaptar o Scrum à realidade da empresa.

  • Como funciona

No Scrum, os projetos são dividos em ciclos (tipicamente mensais) chamados de Sprints.

O Time Scrum (composto por um Product Owner, uma Equipe de desenvolvimento e um Scrum Master) é auto-organizável e multifuncional, ou seja, escolhe a melhor forma para realizar seu trabalho e possui todas as competências, não dependendo de outros fora da equipe.

O Product Owner é responsável por maximizar o valor do produto e o trabalho da equipe, além de ser o único que pode gerenciar o Product Backlog (lista contendo todas as funcionalidades desejadas para um produto). A equipe de desenvolvimento reporta-se somente a ele.

Na Equipe de desenvolvimento ou Scrum Team, não há função específica para seus integrantes, todos são desenvolvedores independente da tarefa que realizem. Deve conter entre 3 e 9 integrantes, de modo a não ser pequena a ponto de haver restrições de habilidades, nem tão grande a ponto de ser complicada de gerenciar.

Já o Scrum Master, age com um facilitador do Daily Scrum (reunião diária feita pela equipe para transmitir o que foi foi no dia anterior), e deve garantir que o Scrum seja entendido e aplicado. Deve comunicar claramente os objetivos e itens do Product Backlog, treinar a equipe em autogerenciamento e remover impedimentos ao longo do processo.

A partir do Product Backlog, é feito um Sprint Backlog que contém todo o trabalho a ser realizado durante o Sprint, com duração entre 2 e 4 semanas geralmente.

  • Concorrentes:

Cite outras metodologias com o mesmo propósito e que concorrem com ela

  • Criadores:

Informe quem criou, propôs ou idealizou esta metologia

Sistema embarcado

  • Conceito:

Um sistema embarcado é um sistema no qual o computador é exclusivamente dedicado ao dispositivo ou sistema que ele controla. O usuário final não tem acesso ao sistema interno, somente através de interfaces , entradas do sistema. Diferentemente dos computadores convencionais , um sistema embarcado realiza tarefas predefinidas , com requisitos específicos, assim através da engenharia é possível otimizar um projeto, reduzindo custos , tamanho , entre outros.

Portanto, sistemas embarcados são desenvolvidos para realizar uma tarefa unica, específica para uma determinada situação ou processo. O sistema também é executado com recursos computacionais limitados: sem teclado, sem tela e com pouca memória. Sua classificação é definida pela capacidade computacional do sistema para o qual foi desenvolvido.

  • Funcionamento:

Existem dois modos de funcionamento do sistema embarcado , que são determinantes para programação e o comportamento para a qual foi desenhado.

Reativo: o funcionamento é através de resposta a eventos externos, que podem ser periódicos ou assíncronos ( acionamento do usuário).Existe uma necessidade de entrada de dados para que aconteçam as ações de funcionamento.

Controle em tempo real: existem limites de tempo para executar cada tarefa (leitura de sensor, emissão de sinais para um atuador, atualização de display, etc.). Por isso mesmo, nem sempre tempo real é igual ao modo mais rápido de executar uma tarefa, esse modo é capaz de tomar decisões mesmo com a ausência do usuário.

  • Estado da Arte:

Exemplo de aplicações: Computadores de bordo automotivos, Smartphones , Sistemas de controle de acesso biométrico, Controle de temperatura de ar-condicionado, Impressoras, Equipamentos de rede, Equipamentos portáteis de medição, Sistemas de monitoramento médico. A evolução mais recente é o desenvolvimento de aplicações embarcadas para chip. o PSoC (Programmable System on Chip), um microcontrolador desenvolvodo pela Cypress. Um CI que poderá ser customizado pelo usuário final , graças as diversas entradas e periféricos disponíveis.

  • Integrações:

Os sistemas Embarcados dependem do quão avançada está a tecnologia, pois o tamanho e peso são fatores decisivos na competitividade do produto. Além disso, durante o desenvolvimento de um sistema embarcado é necessária a análise do ambiente ao qual o sistema ficará exposto, ou seja , a robustez do equipamento interfere diretamente em seu desempenho.

  • Referências Bibliográficas

http://files.comunidades.net/mutcom/ARTIGO_SIST_EMB.pdf http://www.academia.edu/download/42673850/Embarcados.pdf ftp://143.54.11.3/pub/flavio/cmp231/jai2003.pdf

SO


  • Conceito:
    • Explique aqui o que é esta tecnologia, para que serve e como pode ser usada



  • Funcionamento:
    • Descreva aqui o funcionamento, as técnicas e detalhes desta tecnologia



  • Estado da Arte:
    • Cite o estágio mais atual desta tecnologia, ou seja, exemplos de aplicações bem recentes



  • Integrações:
    • Informe aqui com que outras tecnologias esta depende ou interage


Sockets


  • Conceito:
    • Sockets são o meio de dois processos se comunicarem, podendo ser por redes, hardware, ou software.
    • Utilizando se de portas que geram o IP e protocolos como TCP para poderem se comunicarem, sem errar o caminho.



  • Funcionamento:
    • Funcionamento de um socket e fazer um ponto final de um link de comunicação bidirecional entre dois host em execução na rede. Por exemplo um computador/servidor tem portas que contem endereços diferentes, a função dele e fazer uma ligação entre o numero da porta com a chamada TCP para ver qual dados serão enviados para o aplicação, e seria basicamente isso: o http://192.168.0.01:9090, onde o protocolo é o HTTP, o IP é o 192.168.0.01 e a porta é a 9090. isso tudo seria o socket.




  • Estado da Arte::
    • A versão mais recente do socket é Release 4 (SVR4).



  • Integrações:
    • Socket interage bastante com a tecnologia de Protocolos e portas, pois utilizasse TCP e portas para fazer ligação entre as aplicações, sem errar o caminho.



Speech Recognition


SQL

  • Conceito:
    • SQL é a sigla para Structured Query Language, ou, em português, Linguagem de Consulta Estruturada. Suas utilizações incluem consulta selecionada e modificações (como deleção, inclusão ou atualização) de dados, principalmente em Bancos de Dados estruturais.
  • Funcionamento:
    • SQL oferece grande flexibilidade ao usuário na manipulação de bancos de dados. Normalmente é executado através de uma interface que permite inserção de linha de comando, a qual utiliza cláusulas pré-determinadas para execução de suas ações. As cláusulas básicas de suas ações são SELECT para consulta, UPDATE para atualização, DELETE para exclusão e INSERT para inclusão de dados.
    • Cada uma das cláusulas possui as suas normas de sintaxe para seleção de quais tabelas terão seus dados atualizados, quais campos dessas tabelas serão selecionados e há, inclusive, possibilidade de utilização de ordenação específica dos dados.
  • Estado da Arte:
    • Devido à grande popularização de sua utilização, em 1986 foi necessária padronização pela International Organization for Standardization (ISO) e o American National Standards Institute (ANSI). Desde então, 8 revisões dessa padronização já foram feitas por esses órgãos, realizadas a intervalos médios de aproximadamente 4 anos, sendo a mais atual a SQL:2016.
  • Integrações:
    • Para utilização do SQL é necessário um Sistema de Gerenciamento de Banco de Dados (SGBD), com os quais é possível integrar os Bancos de Dados a sistemas dos mais diversos como Java, Web, dentre outros, organizando sistemas de forma multi-camadas para manipulação de grandes quantidades de informação.


Virtualização

  • Conceito:
    • Basicamente, é a técnica de separar aplicação e sistema operacional dos componentes físicos. Por exemplo, uma máquina virtual possui aplicação e sistema operacional como um servidor físico, mas estes não estão vinculados ao software e pode ser disponibilizado onde for mais conveniente. Uma aplicação deve ser executada em um sistema operacional em um determinado software. Com virtualização de aplicação ou apresentação, estas aplicações podem rodar em um servidor ou ambiente centralizado e ser deportada para outros sistemas operacionais e hardwares.



  • Funcionamento:
    • O gerenciamento de memória nestes sistemas portáveis de virtualização inicia-se num nível superior de abstração que num caso típico de máquina física. Alguns programas de virtualização, como a popular JVM, gerem os endereços de memória numa determinada maneira, que requerem um seguro gerenciamento automático da memória permitindo à maquina virtual manter registos de referências indicativas, e não permitir que o código fonte possa construir novas referências indicativas na memória. Outros tipos de software de virtualização como os LLVM, são mais parecidos como uma computador tradicional, permitindo o uso e manipulação de indicadores de memória. A CIL oferece uma solução híbrida entre as soluções apresentadas, oferecendo os dois tipos de controle da memória (como o JVM, que permite gestão de memória automática), e também um modo "inseguro" que permite manipulação de indicadores num modo que pode violar os constrangimento dos tipo e suas permissões.



  • Estado da Arte::
    • Adobe Flash Player, JVM, LLVM, CPython entre vários outros



  • Integrações:
    • Compilador just-in-time ou JIT, refere-se ao método de compilação do código nativo diferindo para o último momento possível, de preferência mesmo antes ou durante a execução do programa. A dificuldade do JIT têm haver mais com a implementação que arquitetura da máquina de virtualização, mesmo assim, novas teorias e implementações começaram a ter em conta a eficiência. A técnicas mais simples de JIT, simplesmente executam a compilação para um fragmento-código de maneira similar a um compilador tradicional. As técnicas mais utilizadas, têm em conta o tipo de código especializado aos parâmetros que só são conhecidos na altura da execução.


Web

  • O que é



A ideia inicial da World Wide Web era prover um ambiente onde era possível acessar uma vasta gama de documentos que são ligados entre si, daí o nome "Web" que significa teia. Foi idealizada por Tim Berners-Lee, enquanto trabalhava no CERN, com o intuito de criar um modo mais fácil para o compartilhamento de documentos de pesquisas entre seus colegas. Esses documentos estão em forma de hipermídia.

Para entendermos o que é hipermídia, primeiro é preciso definir o conceito de hipertexto, que significa um texto que não está preso em ser linear, dentro deste texto existem hiperligações(geralmente chamadas de links) que tem o objetivo de conectar um texto com outro. A hipermídia serve para estender o conceito de hipertexto, e permitir que se inclua gráficos, videos ou som.


A web pode ser acessada por um web browser(navegador web), um software que tem a função de acessar esses documentos e exibi-los na tela do computador e permitir que o usuário siga as hiperligações, possibilitando assim partir de um documento partir para outro e assim sucessivamente "navegar na Web".
Nesta primeira fase, a web era muito semelhante a uma wiki, porém ainda não dava o poder de edição para o usuário, era somente leitura, quem tinha o dever de adicionar, remover ou modificar conteúdo era o administrador da página.
A evolução natural da web foi permitir que o usuário interagisse com a página, podendo postar comentários, enviar imagens, sons ou videos e arquivos, criando uma web colaborativa, podemos considerar que estamos nesta fase da Web, evoluindo para um tipo de Web de Dados, que não se limita a hipertexto mas de maneira similar procura relaciona os dados entre si, extravasando-os para além das aplicações. Esses são os objetivos da chamada Web semântica.


  • Funcionamento



A Web funciona basicamente em uma relação cliente-servidor:

  • Quem acessa a Web através de um navegador em casa ou pelo Smartphone é considerado cliente;
  • Quem armazena as páginas Web, é o servidor. Quando o cliente precisa acessar uma página ele pede para o servidor lhe enviar uma cópia da página para sua máquina(baixar) para ser exibida na tela do computador. Para que esse acesso dê certo é preciso levar em conta outros componentes que trabalham junto para o funcionamento da Web:


  1. Acesso a internet;
  2. DNS;
  3. URI;
  4. HTTP;
  5. Arquivos do componente:
    1. Arquivos de código;
    2. Assets.



Sem o acesso a internet é impossível alcançar qualquer conteúdo Web, ela age como uma ponte: se em algum ponto ela estiver obstruída, não é possível acessar a um servidor web.O DNS, Domain Name System ou Sistema de Nomes de Domínio é capaz de dar nome a um endereço de IP específico, facilitando assim para que o usuário não tenha que decorar a sequencia de números específica para cada página, porém ainda não é tudo, cabe a URI fazer a tradução e descobrir o endereço exato do servidor HTTP, onde está de fato a página, essa solicitação é feita através do protocolo HTTP, que é a unica forma do servidor entender que aquela página em específico está sendo requerida. A função do servidor HTTP é devolver a página web, solicitada pelo usuário. Esta página contém arquivos de código, que são em HTML, CSS e JavaScript e outras tecnologias, esses códigos são como as "engrenagens" da página: eles que definem o aspecto visual e funcional da mesma. Por fim as páginas podem conter Assets, que são arquivos, imagens ou videos que podem ser acessados pelo usuário.


  • Estado da arte


A Web hoje está em um estágio bem refinado desde que foi idealizada. Tenologias como o HTML 5 e JavaScript são responsáveis por prover um nível altíssimo de interatividade. Estamos numa fase da web onde os usuários estão interagindo muito com a web, inflando-a com dados e mais dados. Exemplos de sites da web atuais:



  • Integrações


A Web depende e/ou interage com tecnologias como:

  • Servidor Web, local onde o conteúdo é armazenado;
  • PHP, linguagem interpretada que atua do lado do servidor, podendo coletar dados, gerar páginas, etc;
  • HTML e CSS (HyperText Markup Language) para representar as páginas;
  • JavaScript é uma linguagem interpretada criada para Web, que permite que se rode scripts do lada do cliente, evitando assim que seja necessário se comunicar com o servidor para por exemplo alterar o conteúdo exibido;
  • Navegador Web, é um software que serve para exibir o conteúdo web. Ele se comunica com o servidor web, enviando e recebendo informações.


Referências



Webservice


  • Conceito:
    • É uma solução que permite a integração de sistemas e comunicação entre aplicações, possibilitando que novas aplicações consigam "conversar" de forma compatível com sistemas existentes e que foram desenvolvidos em plataformas diferentes.
    • Para as empresas o Web Service pode trazer agilidade para os processos e eficiência na comunicação entre cadeias de produção. Toda e qualquer comunicação entre sistemas passa a ser dinâmica, rápida e segura, pois não há intervenção humana.


  • Funcionamento:
    • O Web Service faz com que os recursos da aplicação estejam disponiveis sobre a rede de forma normalizada. Em outras palavras o Web Service permite a chamada de tarefas simples ou complexas mesmo que as duas aplicações estejam em diferentes sistemas e escritas em linguagens diferentes.
    • Cada aplicação pode ter sua própria "linguagem" que é traduzida pra uma linguagem, um formato intermediário para aquele contexto sendo XML, Json, CSV as opções mais comuns.


  • Estado da Arte:
    • Existem varias linhas de novos desenvolvimentos sobre essa tecnologia variando de metodologias de segurança da informação que trafega entre o contexto das aplicações a novas estruturas baseadas em tecnologias mais recentes e/ou que sofreram melhora significativas (Qos, Posicionamento Geográfico)
    • O exemplo mais comum são os browsers da Internet, eles acessam as páginas Web disponíveis usando por norma as tecnologias da Internet, HTTP e HTML


  • ntegrações:
    • A base para a construção de um Web Service são padrões XML SOAP; A transferência de dados são realizados via protocolos de acesso HTTP, HTTPS e REST.
    • No geral um Web Service pode interagir com diversas tecnologias e aplicações porem seguindo as limitações de comunicação do protocolo SOAP já que o encapsulamento e envio das requisições feitas á um Web Service esta construída sobre esse protocoloco