Mínimo Produto Viável – MVP

Startups são empresas em fase inicial que desenvolvem produtos ou serviços inovadores, com potencial de rápido crescimento. Neste contexto de empreendedorismo, principalmente abordando o tema startups, temos o conceito de MVP que no português significa Mínimo Produto Viável.

O MVP é a versão mais simples de um produto que pode ser lançado com uma quantidade mínima de esforço e desenvolvimento. Um MVP ajuda os empreendedores a iniciarem um processo de aprendizagem, poupando tempo e esforços.

O MVP pode ser uma das primeiras etapas do processo empreendedor. Eleger um MVP significa observar e coletar dados sobre clientes e criar situações práticas de negócio que façam com que a startup aprenda e se molde rapidamente com o intuito de lançar uma solução inovadora.

A prática ajuda a investir em um produto certeiro, que seja realmente útil para o seu público alvo. Além disso, depois de algum tempo de prática será possível prever os fatos antes que eles aconteçam, lançar novidades antes que seja tarde demais.

Desenvolver um MVP para ideia de negócio não é garantia de sucesso. Eles são projetados para testar as suposições de um problema que queremos resolver sem que haja muitos investimentos. Para tanto, existem alguns tipos de MVP para auxiliar a escolha da estratégia inicial.

 

Tipos de MVP

 

Papel

Podem ser desenhos feitos à mão, de uma interface para usar como protótipo, ou exemplos ilustrados de um projeto. Fáceis de fazer, visuais que criam entendimento compartilhado. Este tipo de MVP possui algumas limitações, a sua interação é limitada e não testa usabilidade ou hipóteses. Alguns exemplos são diagramas ou esboços.

 

Protótipo Interativo

Estes podem ser representados por maquetes interativas, clicáveis. Testa designs e usabilidades, itera soluções rapidamente e ainda usa entrevistas com clientes. Este não testa hipóteses e nem tecnologias de apoio. Exemplos são HTMLs ou maquetes clicáveis, ou ainda vídeos.

 

Concierge

É um serviço pessoal, em vez de um produto, que manualmente guia o cliente pelo processo, usando os mesmos passos propostos para resolver o problema do cliente no produto digital. Reduz a complexidade, suporta pesquisa generativa, valida suposições qualitativamente com baixo investimento. Seus contras são a escalabilidade limitada, é manual e tem uso intensivo de recursos, o cliente sabe do envolvimento humano.

 

Mágico de Oz

Este é o produto real em operação. Apesar de nos bastidores, todas as funções são executadas manualmente sem o conhecimento da pessoa que está usando o produto. Uma solução em operação da perspectiva do cliente, uma pessoa no papel do mágico pode conseguir envolvimentos mais próximos. Possibilita pesquisa de avaliação para preço e validação da proposta de valor. Alguns dos contras podem ser a escalabilidade limitada devido a um alto comprometimento de recursos.

 

Micronicho

Micronicho consiste em reduzir todas as features do produto ao mínimo, a fim de descobrir se os clientes estão interessados ou dispostos a pagar por ele. Um teste altamente focado, dedicado a qualquer tópico específico, exige mínimo esforço. Um dos contras seria a necessidade de investimento financeiro, pois um dos exemplos deste seria a disponibilização de uma página web simples com o produto oferecido.

 

Software em Operação

Como o próprio nome deste MVP já diz, trata-se de oferecer o produto em operação funcionando plenamente para resolver o problema de um cliente, equipado para medir comportamento de cliente e interações. Alguns dos benefícios são testar hipóteses em um ambiente real, valida suposições qualitativamente. Porém este é caro, precisa de investimento em pessoas e ferramentas.

 

Empresas que utilizaram MVP

 

Facebook

A rede social foi testada, inicialmente, para dentro dos muros da Universidade de Harvard. O período em que a rede atingia apenas os alunos da comunidade universitária foi importante para que o jovem Mark promovesse alterações fundamentais, em linha com o que foi se revelando necessário ao longo do processo de validação.

 

Groupon

A primeira versão do Groupon era um site extremamente simples, feito em wordpress e que gerava cupons em pdf, os quais eram enviados de forma manual a cada interessado.

 

Apple

O iPhone 1 era o típico exemplo de MVP. O aparelho não possuía algumas funções básicas, como copiar e colar, além de exigir download obrigatório do iTunes para ativação. O objetivo aqui era claramente segurar algumas funcionalidades para que fossem lançadas nas versões seguintes do equipamento, gerando ansiedade e euforia entre os clientes.

 

Foursquare

Antes de ir a campo, o serviço de localização coletou depoimentos e sugestões de possíveis usuários, por meio do Google Docs, além de disponibilizar uma versão mais restrita do produto a um grupo seleto de futuros clientes.

 

Autor: Giovani Augusto Varaschini

Um pouco sobre Bootstrap

 

 

 

 

 

 

Desenvolva com facilidade e praticidade.

Principal Framework CSS usado em front-end de aplicações web, com seus recursos, tornam o desenvolvimento de páginas mais fácil, páginas que se adaptam a diversos tamanhos de tela.

Conceito

Bootstrap é um conjunto de componentes correlacionados para ajudar a desenvolver interface com o usuário de forma ágil e fácil. Foi criado em agosto de 2011 pelos desenvolvedores do Twitter, Mark Otto e Jacob Thorton. Tem como objetivo central fornecer ao usuário uma facilidade de desenvolvimento de layouts pré-configurados, tanto para questão de produtividade como também da questão da responsividade.

Customização, responsivo e documentação são as principais características do Bootstrap. Pois a customização é rápida e fácil, responsividade torna o site mais responsivo e a documentação conforme o site do desenvolvedor, mostra que é bem simples e prático de aprender tornando a implementação fácil. Geralmente usado em frond-end, mas atualmente é utilizado em back-end, pois suas ferramentas visuais tornam o visual dos projetos avançados mais aperfeiçoado. Dessa forma, o usuário fica mais familiarizado com o sistema.

Incluso em seu conjunto de recursos, se encontram o HTML 5, CSS 3, Jquery, Node, JavaScript, Ajax. Dessa forma, ao baixar o pacote Bootstrap, não será mais preciso baixar os plug-ins do Jquery por exemplo, pois já faz parte do pacote do Bootstrap.

Rápido

Bootstrap é rápido por quatro motivos:

  1. Seus arquivos tem um tamanho bem pequeno.
    1. js tem no máximo 83kb;
    2. css tem no máximo 98kb
    3. webfont tem no máximo 144kb.
  2. Carrega só o que precisa, somente o que for utilizado no projeto.
  3. Escrever menos código, não precisará definir todo o layout do formulário, pois irá usar classes pré-definidas e melhorar o layout do formulário sem precisar codificar mais nada por exemplo.
  4. Utiliza o sistema de Grids, principal enfoco do Bootstrap, por causa das 12 colunas que se trabalha de forma dinamizada da ferramenta.

 Fases do Bootstrap:

  • Versão 1 – Somente disposto para facilitar o desenvolvimento para desktops. Não tinha os conceitos ligados a responsividade de acordo com outros dispositivos, exemplo tablets, smartphones.
  • Versão 2 – Desenvolvimento para desktop com adaptação para tablete e por fim smartphones. Foi implementado a responsividade para dispositivos móveis.
  • Versão 3 – Surgiu o conceito de mobile first, que é justamente a questão da responsividade inicial para mobile para posteriormente adaptação dos desktops. Inverso da segunda versão.
  • Versão 4 – Realizado a mudança do modelo Less para o Sass, deixando a compilação mais rápida. Fim do suporte para IE8 e lançamento do Bootstrap themes.

Sistema de grade (Grids System) é responsivel e permite até 12 colunas através da página. Tem 4 tipos de classes, dependendo do dispositivo e pode ser ntegrado com outro para criar layouts flexíveis. O layout de sites que são visualizados tanto em navegadores de desktops ou mobile, são de extrema importância, pois o uso das grids, tem o papel de ajustar o layout conforme o tamanho da tela. Assim, tornando sistemas de grade útil.

Bootstrap fornece ferramentas para a construção de sites e aplicações modernas, agregando recursos dinâmicos. Sendo uma ferramenta gratuita e de fácil acesso, vale muito a pena o uso de Bootstrap em projetos mais avançados.

Autor Douglas Beux
Fontes:
Baseado em http://www.ericplatas.com.br/artigos/introducao-bootstrap-framework/.
Adaptado de https://imasters.com.br/design-ux/design-responsivo/7-razoes-para-desenvolver-seus-web-designs-no-bootstrap/?trace=1519021197&source=single.
Adaptado de https://www.youtube.com/watch?v=0o2GWZ0uUeY&t=1839s.

O que é e onde aplicar Angular JS

AngularJS

No passado usavam-se sites estáticos, sem iteração com os usuários, porém logo surgiram aplicações Web, essas sim necessitavam de recursos e o nível de complexidade aumentou.

Inicialmente usou-se JavaScript/Jquery mas nem sempre ela garantia a alta produtividade e a facilidade na manutenção de código.

O que é o Angular JS?

AngularJS é um framework front-end que auxilia a criação de Single Page Aplications(SPA), e vem ganhando destaque desde de seu surgimento em 2011-2012 por Misko Every e Adam Ebrons, cujo objetivo era facilitar a criação de aplicações web. É baseado em um modelo MVW(Model View Whatever), uma brincadeira da Google dando um ponto final a uma longa discussão entre a comunidade de desenvolvedores que não chegavam em um acordo sobre o modelo utilizado cujos principais eram: MVC(Model View Controller), MVP(Model View Presenter) e MVVM(Model View View Model).

O começo:

Angular JS, foi desenvolvido por Misko Hevery em um projeto pessoal com o objetivo de aprimorar o desempenho de aplicações Web. Pouco tempo depois, Hevery entrou para o Google e aplicou sua framework no projeto Google feedback, diminuindo o número de linhas do código e aumentou sua performance. Google feedback e uma ferramenta que está presente em todos os produtos da Google como: Google+, Chrome, Hangouts entre outros, onde você pode enviar impressões do que estão acontecendo nos produtos como: erros, críticas e com isso o suporte vai poder observar se usuário final está gostando ou não dos produtos. Atualmente, o Google e o principal contribuinte para o código do AngularJs.

O AngularJS veio para padronizar a estrutura de desenvolvimento de aplicações para web, fornecendo um template com base nos padrões client-side.

Quem usa AngularJS:

Muitos clientes de grande porte usam Angular, devido a sua performance com simplicidade, os sites possuem o framework Angular: Airlines, paypal, cvs shop ,Micro Soft, Google Play,ABC News, San Disk, Trello.

Por que usar?

Usar este framework facilita a produtividade pelo reuso de código. Também visando a continuidade, hoje o mesmo está sendo mantido pelo Google, tendo como a certeza que ele não deixará o mercado tão cedo, tendo esforços de grandes equipes na linha de desenvolvimento, o angular segue muito bem o mantra da produtividade. Por ser orientado a componentes, é muito rápido e fácil programar com ele.

Praticamente qualquer coisa que se precisa já tem pronta por aí nos milhares de repositórios do GitHub. Existe inclusive um site que reúne mais de 2000 módulos open-source para facilitar a busca https://angular.io/guide/ngmodules. Possui comunidade Sólida o Repositório do Angular no GitHub tem 49 mil estrelas e mais de mil contribuintes, além de mais que 150 mil repositórios com scripts que utilizam a tecnologia.

No Stack Overflow, a maior comunidade de perguntas e respostas do mundo, temos quase 180 mil perguntas. Caso o interesse seja em vídeos sobre o assunto, o YouTube nos dá uma marca impressionante de 470 mil vídeos. O interesse da comunidade tem subido exponencialmente nos últimos anos, de acordo com o Google.

O Angular está sendo conhecido pela internet também pela sua curva de aprendizado. Em poucos minutos você aprende seus conceitos e já está desenvolvendo seu primeiro app.

O AngularJS usa em sua arquitetura o modo MVC (Model View Controller), que é um padrão para dividir uma aplicação em diferentes partes (modelo, visão e controle), cada uma com suas respectivas responsabilidades. Contando com três camadas de comunicação, que são elas:

  • Controller : Sempre que você pensar em manipulação de dados, pense em model. Ele é responsável pela leitura e escrita de dados, e também de suas validações.
  • View: Simples: a camada de interação com o usuário. Ela apenas faz a exibição dos dado.
  • O responsável por receber todas as requisições do usuário. Seus métodos chamados actions são responsáveis por uma página, controlando qual model usar e qual view será mostrado ao usuário.

Um exemplo disso seria um restaurante, o Controller é o pessoal da cozinha que prepara o prato, mas não sabe para quem irá fazer, a View é o cliente que apenas recebe o prato e consome, mas não sabe quem fez, o Scope é como se fosse o garçom que faz o meio de campo entre Controller e View.

Outro recurso interessante para economia de dados e melhor performance é carregar apenas uma página principal, recursos de aplicação e outras páginas são carregadas por demanda, deixando a experiência mais fluida. Essa funcionalidade é conhecida como Route Engine. Este mecanismo de rotas é disponibilizado com o nome de angular-route.js.

A utilização deste framework torna a aplicação mais rápida e mais enxuta do que as outras formas de desenvolver interface para web.

 

Autor: Michel Toffolo

Fonte de referências:

https://tasafo.org/2014/11/26/porque-utilizar-angularjs-no-seu-proximo-projeto/

http://blog.algaworks.com/o-que-e-angularjs/

https://waldyrfelix.com.br/8-motivos-que-me-levaram-a-usar-o-angularjs-como-primeira-op%C3%A7%C3%A3o-em-meus-projetos-cccc222fd22e

 

Computação Cognitiva com o IBM Watson

Computação Cognitiva com o IBM Watson

Desde a década de 60 é investido em estudos em tecnologias que tenham a mesma capacidade dos seres humanos, de pensar e raciocinar sobre diversos assuntos, que possam tomar decisões baseadas na bagagem emocional e social, no entanto, estes estudos tiveram altos e baixos e poucos resultados significativos foram obtidos, mas no início dos anos 2000 essa tecnologia passou a ganhar uma maior notoriedade. A IBM, girante da tecnologia mundial, foi uma das pioneiras a lançar no mercado uma tecnologia de computação cognitiva, o IBM Watson, um software com capacidade de tomar decisões baseadas no conhecimento adquirido.

O IBM Watson foi criado em 2003 e recebeu este nome em homenagem ao fundador da IBM, o empresário norte-americano Thomas Watson. O Watson ganhou uma maior notoriedade somente em fevereiro de 2011 em um famoso show de perguntas e respostas de conhecimento geral nos Estados Unidos chamado Jeopardy, no qual venceu a disputa.  Esta tecnologia de computação cognitiva chegou ao Brasil em 2014, já com APIs traduzidas para a língua portuguesa.

O data center da IBM que hospeda o software do Watson é composto por duas grandes unidades, divididas cada uma em cinco torres, com 10 servidores IBM Power750. Tudo isso equivale a 2.800 computadores juntos. A memória é de 15 trilhões de bytes.

O Watson pode interpretar dados não estruturados vindos da web em qualquer formato, seja vídeo, texto ou foto, como faz um ser humano, mas com a velocidade de uma máquina com tecnologia de ponta. É daí que vem o nome de computação cognitiva, já que a cognição é o processo por meio do qual nós adquirimos conhecimentos a partir dos nossos sentidos.

À sua maneira, o IBM Watson pode pensar, graças a algoritmos complexos de inteligência artificial baseados em redes neurais e na tecnologia de aprendizagem chamada deep learning. Por dia, 2,5 bilhões de gigabytes de informações da web são processadas para que ele se torne ainda melhor.

Conforme os dados vão sendo lançadas ao IBM Watson, o sistema vai aprendendo cada vez mais sobre o complexo processamento de linguagem. Ele varia de idioma para idioma, mas se baseia em três pilares: gramática, estrutura e relação de palavras. É por isso que o Watson sabe que a manga da camisa não é uma fruta e o banco da praça não é uma instituição financeira.

Toda a análise é criada com base em computação probabilística, em que o resultado varia em função de um espectro e não simplesmente de parâmetros de “sim ou não” e “se isso, então aquilo”, como acontece em sistemas menos complexos.

Atualmente, a IBM oferece mais de 30 APIs (Interface de Programação de Aplicação) do IBM Watson a desenvolvedores. Com isso, a expertise de computação cognitiva é oferecida para empresas e startups que queriam criar um produto com inteligência artificial. Hoje, o Watson já tem aplicações importantes em quase 20 segmentos, incluindo saúde, advocacia, gastronomia e educação.

As APIs fornecidas pela IBM, disponíveis no site Bluemix, são na sua grande maioria gratuitas e podem ser utilizadas por desenvolvedores, no entanto, a partir do momento que há ganhos em escala com as aplicações, esses recursos passam a ser cobrados.

Dentre as diversas APIs oferecidas pela IBM na plataforma do Watson, foram listadas a seguir 5 exemplos que podem ser facilmente utilizadas, com uma breve descrição de cada uma.

Text to Speech

Transforma texto em áudio com entonação e cadência apropriada. Está disponível em diverso idiomas. Em português, há uma versão com voz feminina disponível, chamada de Isabela. Não tem custo para até 10 mil caracteres por mês.

Speech to Text

O serviço converte a fala humana para texto e pode ser usado para toda aplicação que precisa de uma ponte entre a voz e um documento escrito, incluindo sistemas de controle, transcrição de entrevistas ou conferências telefônicas e ditar e-mails e notas. A ferramenta usa inteligência de máquinas combinadas com informações de gramática e estruturas de linguagem com arquivos de áudio por gerar transcrições mais precisas. O serviço está disponível em Inglês (EUA), inglês (RU), japonês, árabe (MSA), mandarim, português (Brasil), espanhol, francês, coreano. O serviço é gratuito para até 100 minutos de áudio por mês.

Tone Analyser

Este serviço pode captar diversas informações de sentimento por meio da entonação de um texto, como: alegria, tristeza, raiva, etc. Essa entonação pode impactar a efetividade de uma comunicação em diferentes contextos. O Tone Analyser realiza análise cognitiva linguística para identificar melhores entonações para diferentes contextos de comunicação. Ele detecta diferentes tipos de tons: emocionais (raiva, desgosto, medo, alegria e tristeza), propensão social (abertura, conhecimento) e estilos de escrita (analítica, confessional e argumentativa) em um texto. Não tem custo para até 2500 chamadas de API por mês.

Personality Insights

A ferramenta oferece insights baseados em dados transacionais e mídias sociais para identificar perfis psicológicos que podem determinar decisões de compra, intenções e comportamentos e, assim, ampliar taxas de conversão. É gratuito para até 1000 chamadas de API por mês.

Watson Assistant (formerly Conversation)

A ferramenta permite que desenvolvedores projetem formas para que aplicações interajam com usuários finais por meio de uma interface de conversação. O Dialog Service habilita aplicações com linguagem natural para prover respostas automáticas para questões encaminhadas por consumidores, encaminhamento de processos, ou atendimento para resolução de tarefas. A tecnologia pode, ainda, armazenar e mapear informações dos perfis dos usuários para aprender mais sobre os consumidores de uma empresa, guiando os consumidores por meio de processos ou os abastecendo de informações relevantes. A ferramenta é grátis para as primeiras 10 mil chamadas de APIs por mês.

O IBM Watson proporcionou uma quebra de paradigma para desenvolvedores e empresas de software, tornando acessível a experiência de trabalhar com computação cognitiva. Com as diversas APIs do Watson é possível agregar valor aos softwares desenvolvidos com essas tecnologias.

Autor: Ronaldo Santos

Gamification em Aplicativos como Forma de Ampliar o Engajamento

O mundo dos jogos atrai milhares de pessoas em todo o mundo, sejam eles eletrônicos, de tabuleiro ou por atividades físicas. Este texto tem por objetivo, esclarecer o conceito de gamification, mostrar casos de aplicação, e entender como utilizar este método no meio empresarial, para ampliar o engajamento efetivo em atividades variadas.

O que é Gamification?

Gamification (gamificação) pode ser definido, de forma mais consistente, como sendo uma estratégia, apoiada na aplicação de elementos de jogos, para atividades non-game que é utilizada para influenciar e causar mudanças no comportamento de indivíduos e grupos (BUNCHBALL INC., 2010). Gamificação é um termo recente, mas a ideia de utilizar os mecanismos dos jogos para resolver problemas e aumentar o engajamento, existe há bastante tempo.

Na educação infantil, os professores utilizam, de uma vasta variedade de jogos para desenvolver uma experiência lúdica, e mais interessante para os alunos, na hora de aprender os números, letras e sílabas.

No meio empresarial, temos diversos casos de aplicação da gamificação, seguem alguns exemplos:

Programa de Milhas

As companhias aéreas, têm dificuldade em fidelizar o cliente, pois este, acaba buscando outras companhias devido ao baixo custo da passagem. Por isso, as companhias criaram o programa de milhas, onde a cada viagem, são acumulados pontos que são revertidos em descontos, nas passagens aéreas e outros benefícios.

Duolingo

A plataforma de ensino de idiomas, soma quase 6 milhões de downloads do aplicativo na loja Google Play. Os conteúdos são divididos em níveis, e para desbloquear os níveis mais avançados, o usuário deve somar pontos, completando os exercícios disponibilizados. Um ranking de classificação é montado a partir da lista de amigos que utilizam a plataforma.

Strava

As corridas, pedaladas e outras atividades físicas, têm sido mais competitivas com o uso do Strava. Além do aplicativo armazenar as informações de geolocalização, e performance do usuário durante a atividade física, os trajetos comuns entre os atletas são monitorados. Com esta informação a plataforma monta um ranking diário, semanal, mensal e geral de performance dos atletas. O usuário conquista troféus, na modalidade bronze, prata e ouro, caso supere suas marcas pessoais, ou supere marcas de outros usuários.

Isto é engajamento!

Os desafios impostos pelos games geram uma motivação intrínseca, ou seja, parte da própria pessoa envolvida na atividade.

O termo “engajamento”, em um contexto empresarial, indica a conexão entre o consumidor e um produto ou serviço. Não há uma métrica específica, que mensure suficientemente o engajamento, é melhor pensar em um conjunto de métricas (ZICHERMANN; CUNNINGHAM, 2011), são elas:

  • Recência;
  • Frequência;
  • Duração;
  • Viralidade;
  • Avaliações.

Para um engajamento mais significativo, uma combinação entre as métricas deve ser levado em consideração, conforme a necessidade do negócio. Por exemplo, para o Duolingo, são consideradas mais importantes a frequência e duração da atividade no aplicativo.

E agora, como “Gamificar”?

Para a implementar a gamificação, alguns atributos chaves podem ser levados em consideração:

  • Programas de pontuação
  • Leaderboards / painel com ranking
  • Feedback / divulgação dos méritos alcançados
  • Regras
  • Premiações / recompensas
  • Selos, adesivos e distintivos
  • Mudança de nível
  • Troféus

É possível encontrar exemplos de gamificação em aplicativos de produtividade, mídias sociais, sites colaborativos, campanhas de incentivo, ações de marketing e muito mais, sempre com o objetivo de envolver os participantes, gerar mais engajamento e produtividade.

O método de gamificação se mostra muito eficiente, através dos desafios impostos e recompensas, que motivam e engajam os usuários. É importante conhecer o negócio, para analisar e descobrir qual forma de engajamento é necessária, e aplicar os métodos de gamificação baseados nesta perspectiva.

Autor: Gabriel Susin

Referências

BUNCHBALL INC. Gamification 101: an introduction to the use of game dynamics to influence behavior. 2010. Disponível em: <http://jndglobal.com/wp-content/uploads/2011/05/gamification1011.pdf>. Acesso em: 28 abril. 2018.

ZICHERMANN, G.; CUNNINGHAM, C. Gamification by design. Sebastopol: O’Reilly, 2011.

Extração de dados de equipamentos em tempo real

O que é extração de dados em tempo real?

A extração de dados em tempo real é um processo realizado para captura dados de equipamentos de hardware com objetivo de empregar em aplicações de software especificas. Frequentemente utilizado em aplicações direcionadas a IoT (Internet das coisas) a extração de dados em tempo real tem algumas limitações, empregada de forma correta a extração pode se torna uma forte ferramenta para o desenvolvimento de diversas aplicações com foco em automação e controle.

A extração de dados em tempo real

O processo de extração de dados é utilizado com objetivo de reduzir o tempo e tornar mais assertivo o processo de monitoramento e utilização de dados. Por exemplo, um sistema que tem como objetivo realizar o controle de um processo industrial recebe com um frequência “x” uma informação referente ao processo que é inserida por um usuário passível de erro, essa informação gera um dado no sistema, se o mesmo sistema pudesse realizar a consulta da mesma informação no tempo em que ela foi gerada o sistema eliminaria o risco de erro durante esse pequeno processo, considerando que esse processo é realizado com frequência o tempo que usuário insere a informação reflete no tempo do monitoramento do dado, enquanto a coleta em tempo real diminui em grande parte esse tempo.

Como é realizada a coleta em tempo real

O sistema embarcado compatível com captura de dados em tempo real realiza a leitura dos sensores e se comunica com a aplicação, informando os dados capturados pelos sensores para utilização na aplicação.

Exemplos de utilização de captura de dados em tempo real.

  • Aplicativos de comunicação com computador de bordo do carro;
  • Centros de monitoramento de processos Industriais;
  • Identificação por radiofrequência RFID;
  • Sistemas de automação residencial;

Algumas vantagens na utilização de captura de dados em tempo real.

  • Elimina falhas humanas;
  • Agiliza e torna mais assertivo o processo;
  • Reduz os custos dos processos;
  • Aumenta a produtividade;

 

Autor: Tiago Spadetto dos Santos

Referências

KING ROGERS, Lorie. Data capture basics: Data capture technology can help an operation see its products in real time and take proactive steps to keep materials moving smoothly through the supply chain. Here’s a look at several basic data capture technologies.. 1. Disponível em: <https://www.mmh.com/images/site/MMH1110_EquipReport_Data.pdf>. Acesso em: 27 abr. 2018.

DO BRASIL, GE. Análise de dados e máquinas conectadas: conheça o centro de monitoramento da GE Water & Process Technologies! 1. Disponível em: <https://gereportsbrasil.com.br/análise-de-dados-e-máquinas-conectadas-conheça-o-centro-de-monitoramento-da-ge-water-process-6c4f79399132>. Acesso em: 20 abr. 2018.

Rest API

A Representational State Transfer (REST), em português Transferência de Estado Representacional, é um estilo de arquitetura que define um conjunto de restrições e propriedades baseados em HTTP. Neste artigo, abordaremos alguns conceitos básicos sobre esta arquitetura:

 

O QUE É API?

O acrônimo API que provém do inglês Application Programming Interface (Em português, significa Interface de Programação de Aplicações), trata-se de um conjunto de rotinas e padrões estabelecidos e documentados por uma aplicação A, para que outras aplicações consigam utilizar as funcionalidades desta aplicação A, sem precisar conhecer detalhes da implementação do software.

Desta forma, entendemos que as APIs permitem uma interoperabilidade entre aplicações. Em outras palavras, a comunicação entre aplicações e entre os usuários.

 

O QUE É REST?

REST significa Representational State Transfer. Em português, Transferência de Estado Representacional. Trata-se de uma abstração da arquitetura da Web. Resumidamente, o REST consiste em princípios/regras que, quando seguidas, permitem a criação de um projeto com interfaces bem definidas. Desta forma, permitindo, por exemplo, que aplicações se comuniquem com clareza.

 

ORIGEM DO REST

O HTTP é o principal protocolo de comunicação para sistemas Web, existente há mais de 20 anos, e em todo esse tempo sofreu algumas atualizações. Nos anos 2000, um dos principais autores do protocolo HTTP, Roy Fielding, sugeriu, dentre outras coisas, o uso de novos métodos HTTP. Estes métodos visavam resolver problemas relacionados a semântica quando requisições HTTP eram feitas.

Estas sugestões permitiram o uso do HTTP de uma forma muito mais próxima da nossa realidade, dando sentido às requisições HTTP.

 

EM RESUMO

  • REST é abreviatura de Representational State Transfer;
  • É uma outra forma de desenvolver WebServices
  • REST é um conjunto de princípios que definem como Web Standards como HTTP devem ser usados
  • Aderindo aos princípios REST, teremos um sistema que explora a arquitetura da Web nosso beneficio

 

MÉTODOS HTTP

Abaixo, os métodos padrões para a execução de requisições HTTP, em consumo de serviços REST:

 

  • PUT (INSERIR)

Semelhante ao método POST, a ideia básica do método PUT é permitir a atualização de um recuso no servidor.

 

  • DELETE (EXCLUIR)

Como você já deve estar imaginando, o método DELETE é utilizado com o intuito de remover um recurso em um determinado servidor.

 

  • GET (CAPTURAR)

O método GET é utilizado quando existe a necessidade de se obter um recurso. Ao executar o método GET sob um recurso, uma representação será devolvida pelo servidor.

 

  • POST (ATUALIZAR)

Utilizamos o método POST quando desejamos criar algum recurso no servidor a partir de uma determinada representação. Exemplo disso é quando fazemos a submissão de algum formulário em uma página Web.

 

O QUE SIGNIFICA RESTFUL

Existe uma certa confusão quanto aos termos REST e RESTful. Entretanto, ambos representam os mesmo princípios. A diferença é apenas gramatical. Em outras palavras, sistemas que utilizam os princípios REST são chamados de RESTful.

 

REST: conjunto de princípios de arquitetura

RESTful: capacidade de determinado sistema aplicar os princípios de REST.

 

CONCLUSÃO

Neste artigo, eu procurei oferecer um rápida introdução sobre os conceitos por trás do REST, a arquitetura da Web. É extremamente importante entender o conceito da arquitetura Restful para evitar perda de tempo na construção da API, facilitando a vida de outros usuários que podem estar do outro lado do mundo tentando consumir a sua API. É muito importante evitar que suas APIS sofram alterações constantes e mudam de versão a todo momento, assim dificultando ainda mais a comunicação. Por isso é bom planejar e projetar bem antes de disponibilizá-la.

 

Autor Jonatan Maicon da Costa

 

Referências:

Baseado em,

https://imasters.com.br/front-end/entendendo-como-funciona-o-restful-de-verdade/

https://www.infoq.com/br/articles/rest-introduction

https://becode.com.br/o-que-e-api-rest-e-restful/

http://blog.algaworks.com/4-conceitos-sobre-rest-que-qualquer-desenvolvedor-precisa-conhecer/

UI Design Patterns

O que é UI Design

O User Interface Design (Design de Interface do Usuário), é aonde ocorre a interação e controle de um dispositivo, software, aplicativos ou sites por parte do usuário. Esta interação pode ocorrer através de botões, menus e demais componentes da interface.

Projetos de UI podem ser utilizados para garantir as necessidades que o usuário irá utilizar, e assim criando uma interface que contenha elementos de fácil utilização e acesso, para que seja alcançado um bom nível de experiencia amigável ao usuário e não cause frustações ao utilizar um sistema.

Atualmente é muito importante entender que User Interface não é apenas como uma aplicação se parece e quais cores foram utilizadas para tal processo, também se baseia como uma aplicação irá funcionar e como a interação do usuário será realizada indo além da aparência. Para que possa ser alcançado devemos utilizar a User Experience (UX Design) que por mais que os nomes sejam parecidos são abordagens bem diferentes, já que UX estará relacionado com a experiencias e os sentimentos do usuário e a UI será a maneira com que este usuário alcançara a experiencia.

Diferença entre UI Design e UX Design

UI é quando falamos de criação de interfaces para que o usuário final possa interagir com a aplicação, utilizando as melhores práticas para que seja criado uma interface de fácil utilização e visualização de todas informações.

UX normalmente confundido com UI por serem apresentados juntamente na interface, mas a verdade, é que UX se encaixa na sensação que um usuário irá ter ao navegar por uma interface. Assim a UX é responsável por criar um sentimento bom ao usuário enquanto os mesmos utilizam a aplicação tornando esta experiencia em algo inesquecível. UX também está relacionada com a forma que as funções principais serão utilizadas pelo usuário, usabilidade criação de novos cadastros, e pesquisas.

 

 

Preocupações com a Usabilidade

É necessário que um usuário consiga identificar elementos de interface e o que os mesmos realizam de uma forma clara. Por isso a criatividade ao compor um elemento é muito importante, mas deve se levar em conta os padrões que os usuários já estão acostumados a utilizar e reconhecer facilmente.

Um exemplo fácil de utilizar e a cor de botões que estamos acostumados a utilizar e ver aplicações. Aonde a maioria utiliza a cor verde para ações positivas como salvar, adicionar, e a cor vermelha para ações de negação com deletar. Se trocar as cores para as ações podem acontecer confusões durantes processos simples deixando o usuário frustrado com a situação.

A utilização de palavras abreviadas ou apenas uma palavra em um botão e a utilização de ícones poderá dar ao usuário uma mensagem mais clara e adequada sobre as funcionalidades de tomar uma ação.

Acessos Facilitados

É muito importante que a interface seja redundante, deixando mais de um caminho possível para que o usuário chegue em seu objetivo ou desfaça alguma ação errada, este papel de guiar de forma fácil o usuário é do profissional de UI Design.

Um exemplo que podemos utilizar e a tela de cadastro que muitos sites utilizam quando um usuário arrasta o mouse pra fora da área de trabalho do browser e a janela modal de fotos do facebook, que podem ser facilmente fechadas utilizando um clique em qualquer parte da tela fora do modal, clique na opção fechar no canto superior e ou apertando o ESC do teclado.

Interação com o usuário

A importância de interação com o usuário é muito importante, a interface deve realizar esta tarefa com muita frequência para que seja mostrado informações sobre ações tomadas e os processos realizados pela aplicação. Exemplos muito simples são as barras de carregamento que podem deixar o usuário esperando o seu carregamento ou finalizar um processo por não ser se o mesmo será carregado.

Prototipagem

A utilização de protótipos, rascunho e wirefrmaes é muito comum para o profissional de UI, para que possa ser desenhado a estrutura inicial do projeto. É a parte essencial, pois através da prototipagem começara a ter uma visão geral do layout e das hierarquias de todo conteúdo da aplicação, a disposição dos elementos da interface e pontos de interação.

 

 

Para trabalhos com HTML, CSS e aplicativos mobile não é aconselhado a criação de interfaces sem que antes o cliente tenha aprovado todo projeto, pois para realizar modificações torna-se muito trabalhoso e demorado.

Referências

Lovi, Rafael. O Que é User Interface (UI)?. Disponível em: < https://www.raffcom.com.br/blog/o-que-e-ui/>. Acesso em  25 abril de 2018.

As Diferenças entre UI Designer e UX Designer. Disponível em: < http://multiad.com.br/design/as-diferencas-entre-ui-designer-e-ux-designer/>. Acesso em 27 abril de 2018.

Rodrigues, Raianne. 5 Dicas: UX e UI design. Disponível em: < https://blog.novatics.com.br/5-dicas-ux-e-ui-design-d787ef46b6b8 >. Acesso em 27 abril de 2018.

Matiola, Willian. O Que é UI Design e UX Design?. Disponível em: < http://designculture.com.br/o-que-e-ui-design-e-ux-design>. Acesso em 28 abril de 2018.

Matiola, Willian. O Que é UI Design e UX Design?. Disponível em: < http://designculture.com.br/o-que-e-ui-design-e-ux-design>. Acesso em 28 abril de 2018.

Firebase: O Que é e Como Funciona

Criar um aplicativo de sucesso não é fácil. Além de fazer o aplicativo funcionar da forma desejada em vários tipos de dispositivos diferentes, o desenvolvedor deve pensar na infraestrutura, possíveis falhas, atualizações que não causem novos problemas, segurança nas transferências de dados, e tudo isso enquanto tenta alcançar o maior número de usuários possível e garantir uma experiência satisfatória para os mesmos. Pensando nisso, foi construído o Firebase, uma solução que possuí todas as ferramentas necessárias para a construção de um aplicativo de sucesso.

Continue lendo “Firebase: O Que é e Como Funciona”

O que é Machine Learning?

O Machine Learning é a ciência que faz com que os computadores exerçam suas funções sem que pareçam explicitamente programados para tal. O Machine Learning foi responsável pelo aprofundamento do desenvolvimento dos carros automáticos, recursos de reconhecimento de fala, buscas na web e possibilitou um avanço na compreensão do genoma humano. É um método de análise de dados que automatiza o desenvolvimento de modelos analíticos. Usando algoritmos que aprendem interativamente a partir de dados, o aprendizado de máquinas permite que os computadores encontrem respostas sem serem explicitamente programados para procurar algo específico.

 

Para que fins é utilizado?

 

  • Detecção de fraudes.
  • Resultados de pesquisa na Web.
  • Anúncios em tempo real em páginas da web e dispositivos móveis.
  • Análise de sentimento baseada em texto.
  • Pontuação de crédito e próximas melhores ofertas.
  • Previsão de falhas em equipamento.
  • Novos modelos de precificação.
  • Detecção de invasão na rede.
  • Reconhecimento de padrões e imagem.
  • Filtragem de spams no e-mail.

 

Métodos de Machine Learning

 

  • Supervisionado:

É usado sempre que o programa é “treinado” sobre um conjunto de dados pré-definido. Baseado no treinamento com os dados pré-definidos, o programa pode tomar decisões precisas quando recebe novos dados. Exemplo: Por exemplo, uma peça de equipamento pode ter pontos de dados rotulados com “F” (com falha) ou “R” (em funcionamento). O algoritmo de aprendizagem recebe um conjunto de entradas junto com as saídas corretas correspondentes, e o algoritmo aprende comparando a saída real com as saídas corretas para encontrar erros. Em seguida, ele modifica o modelo de acordo. Por meio de métodos como a classificação, regressão e previsão o aprendizado supervisionado usa padrões para prever os valores do rótulo em dados adicionais não rotulados.

  • Não Supervisionado:

É usado contra a dados que não possuem rótulos históricos. O sistema não sabe a resposta certa. O algoritmo deve descobrir o que está sendo mostrado. O objetivo é explorar os dados e encontrar alguma estrutura neles. O aprendizado não supervisionado funciona bem em dados transacionais. Por exemplo, ele pode identificar segmentos de clientes com atributos semelhantes que podem ser tratados de modo semelhante em campanhas de marketing. Ou ele pode encontrar os principais atributos que separam os segmentos de clientes uns dos outros. As técnicas mais populares incluem   decomposição de valores singulares, para segmentar tópicos de texto, recomendar itens e identificar os valores discrepantes dos dados.

  • Semisupervisionado:

É usado tanto contra dados rotulados quanto não marcados para o treinamento, normalmente uma pequena quantidade de dados rotulados com uma grande quantidade de dados não rotulados. Esse tipo de aprendizagem pode ser usado com métodos como a classificação, regressão e previsão. O aprendizado semisupervisionado é útil quando o custo associado à rotulagem é muito elevado para permitir um processo de treinamento totalmente rotulado. Os primeiros exemplos disso incluem a identificação do rosto de uma pessoa.

  • Por Reforço:

É muitas vezes usado para a robótica, jogos e navegação. Com o aprendizado por reforço, o algoritmo descobre pela tentativa e erro quais ações geram as maiores recompensas. Este tipo de aprendizagem tem três componentes principais: o agente (o aluno ou tomador de decisões), ambiente (tudo com o qual o agente interage) e ações (o que o agente pode fazer). O objetivo é que o agente escolha ações que maximizem a recompensa esperada ao longo de um determinado período de tempo. O agente atingirá o objetivo muito mais rápido seguindo uma boa política. Assim, o objetivo do aprendizado por reforço é aprender a melhor política.

 

Exemplos de algoritmos

 

  • Árvores de Decisão:

É um algoritmo de apoio que utiliza um gráfico ou modelo de decisões e suas possíveis consequências, incluindo resultados de eventos futuros, custos de recursos e utilidade. Do ponto de vista da decisão de negócios, uma árvore de decisão é o número mínimo de perguntas que devem ser respondidas para avaliar a probabilidade de tomar uma decisão correta, na maioria das vezes. Como um método, permite-lhe abordar o problema de uma forma estruturada e sistemática para chegar a uma conclusão lógica.

 

  • Classificação Naïve Bayes:

São uma família de classificadores probabilísticos simples com base na aplicação Bayes ‘teorema com forte independência entre as características.

 

  • Regressão Linear de Mínimos Quadrados:

É um método para a realização de regressão linear. Você pode pensar em regressão linear como a tarefa de encaixar uma linha reta através de um conjunto de pontos. Existem várias estratégias possíveis para isso e a de “mínimos quadrados comuns” é assim: você pode desenhar uma linha e, em seguida, para cada um dos pontos de dados, medir a distância vertical entre o ponto e a linha e somá-los. A linha ajustada seria aquela em que esta soma de distâncias é a menor possível. Linear refere-se ao tipo de modelo que você está usando para ajustar os dados, enquanto mínimos quadrados refere-se ao tipo de métrica de erro que você está minimizando.

 

  • Regressão logística:

É uma poderosa forma estatística de modelar um resultado binomial com uma ou mais variáveis explicativas. Ela mede a relação entre a variável dependente categórica e uma ou mais variáveis independentes, estimando as probabilidades usando uma função logística, que é a distribuição logística cumulativa.

 

  • Support Vector Machine:

É um algoritmo binário da classificação. Dado um conjunto de pontos de 2 tipos em lugar N dimensional, o algoritmo gera um hiperplano (N – 1) dimensional para separar esses pontos em 2 grupos. Digamos que você tem alguns pontos de 2 tipos em um papel que são linearmente separáveis. O algoritmo encontrará uma linha reta que separa esses pontos em 2 tipos e situados o mais longe possível de todos esses pontos.

 

  • Ensemble Methods

São algoritmos de aprendizagem que constroem um conjunto de classificadores e, em seguida, classificam novos pontos de dados, tendo um ponderado voto de suas previsões. O método de conjunto original é a média bayesiana, mas os algoritmos mais recentes incluem codificação de saída, correção de erros e reforço.

 

  • Algoritmos de Agrupamento:

A tarefa de agrupar um conjunto de objetos de tal forma que os do mesmo grupo são mais semelhantes uns aos outros do que aqueles em outros grupos.

 

 

AUTOR: Ricardo José Boff

Novembro de 2017

 

FONTES

https://www.sas.com/pt_br/insights/analytics/machine-learning.html

http://www.cienciaedados.com/conceitos-fundamentais-de-machine-learning/

https://br.udacity.com/course/intro-to-machine-learning–ud120

http://www.semantix.com.br/10-algoritmos-de-machine-learning/

https://www.coursera.org/learn/machine-learning#

Integração Contínua

“Integração Contínua é uma pratica de desenvolvimento de software onde os membros de um time integram seu trabalho frequentemente, …” Martin Fowler.

A Integração Contínua surgiu como parte das práticas da metodologia ágil XP (Extreme Programming), tendo como foco o desenvolvimento de software em ciclos menores, proporcionando melhor resposta a alterações e inclusão de novos requisitos. Mas a prática da Integração Contínua não se limita apenas a equipes utilizando a metodologia XP ou metodologias ágeis, trata-se de um conjunto de boas práticas que também podem ser adotadas em metodologias de desenvolvimento convencionais.
Devido ao grande impacto que vem ocorrendo com as metodologias ágeis, tais como eXtreme Programming, Scrum, entre outras, a integração contínua vem ganhando mais espaço e se tornando cada vez mais importante quando se fala em desenvolvimento de software.
A maior causa desse ganho de espaço da integração contínua ocorre pelo simples fato de que usando ela você tem um feedback instantâneo.
A grosso modo, a integração contínua funciona da seguinte forma: cada mudança que é feita no sistema, é feito o build automaticamente, todos os testes são feitos de forma automática e todas as falhas são detectadas nesse momento. Se alguma falha for detectada, toda a equipe fica sabendo, seja por email ou outras formas de comunicação.
Identificando os erros logo no início, a equipe pode tomar alguma ação para corrigi-los e assim não causar mais nenhum incomodo e/ou evitar que esses erros passe por eventuais testes e vão para as versões que posteriormente iriam para os cliente.
Claro que esses testes poderiam ser rodados manualmente, mas para isso teriam que ser usadas algumas horas de um integrante do projeto que poderia estar desenvolvendo, apenas para fazer essas validações.
Existem algumas ferramentas que podem ser utilizadas para fazer uso da integração continua:
• CruiseControl.rb: desenvolvida pela ThoughtWorks
• Selenium: desenvolvida pela ThoughtWorks
• Jenkios
• Hudson

 

Willian Marcolin

Banco de dados relacionais

Um banco de dados é uma aplicação que lhe permite armazenar e obter de volta dados com eficiência. O relacionamento se dá pela maneira como os dados são armazenados e organizados no banco de dados através de tabelas, com colunas e linhas. Estas tabelas são usadas para gravar os dados referentes ao objeto ou entidade relacionado. Onde cada linha representa os valores do objeto enquanto suas colunas definem tipos de dados a serem gravados que definem o objeto, ou seja, seus atributos.

Algumas definições importantes que devem ser apresentadas de um banco de dados relacional, como sua interface de comunicação o SQL, a sua integridade de dados, ou seja, a forma em que os bancos mantem sua precisão e consistência de dados, assegurada principalmente pelo seu sistema de transações que garantem que “tudo ou nada” seja gravado.

SQL

O SQL, ou Structured Query Language, tornou-se padrão do American Nacional Standards Institute (ANSI) em 1986, e este padrão de SQL é seguido por todos mecanismos populares de banco de dados relacionais, e alguns tem como padrão funções específicas referentes a ele, como adicionar, atualizar ou excluir linhas, ou mesmo recuperar dados para processamento de transação, além de analisar e gerenciar aspectos do banco.

Integridade de Dados

A integridade de dados se deve as várias constraints que ajudam nas regras de negócio evitando a gravação de campos importantes sem dados ou com dados errados, algumas dessas constraints são chaves primárias, chaves estrangeiras entre outras. Outra forma que os bancos têm para manter sua integridade é a transação, que deve ser completa como uma só e caso não aconteça nada é gravado e tudo volta como estava anteriormente.

As transações em bancos de dados devem estar em conformidade com o ACID, ou seja, atômicas, consistentes, isoladas e duráveis para que possam garantir a integridades dos dados no banco. A atomicidade prevê que toda transação deva ser executada com êxito, e no caso de falha seja invalidada. A consistência prevê que os dados gravados em banco por meio de uma transação devem aderir a todas regras definidas e suas restrições. O isolamento garante que cada transação seja independente por si só. A Durabilidade garante que toda alteração feita no banco seja permanente assim que a transação seja concluída com êxito.

Comparação

Tendo em vista o conteúdo abordado alguns bancos de dados serão comparados em alguns quesitos. Funcionalidades fundamentais que são implementadas nativamente em um SGBD, limites de tamanho de dados, recursos do banco de dados, são alguns dos dados que serão comparados.

  • Funcionalidades fundamentais:

As funcionalidades principais que contenham em cada banco comparado são: ACID, Transações e que tipo de interface é usada em cada um dos bancos.

  • Limites

Informações sobre os limites de tamanhos de dados.

  • Recursos do banco de dados

Alguns recursos utilizados pelos bancos de dados para consultas em suas tabelas.

Pode-se perceber que com os dados comparados todos seguem um mesmo caminho, apenas algumas funcionalidades e recursos divergentes que dependendo da aplicação que irá utilizar pode gerar uma vantagem ou desvantagem.

Felipe Modesto

Links

https://elias.praciano.com/2013/09/o-que-e-um-banco-de-dados-relacional/

https://aws.amazon.com/pt/relational-database/

https://www.postgresql.org/docs/devel/static/explicit-locking.html

https://mariadb.com/kb/en/mariadb/mariadb-10122-release-notes/

https://dev.mysql.com/doc/relnotes/mysql/5.7/en/

http://www.oracle.com/technetwork/database/rdb/learnmore/rdb-pmatrix-rdb-086351.html

https://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems

Padrões de Codificação no Desenvolvimento de Sistemas

Como os idiomas reais, cada linguagem de programação tem suas respectivas regras, pontuações, pausas e pontos, sendo necessário conhecer esses padrões para manter o código organizado e com fácil entendimento. Nas linguagens de programação precisamos seguir alguns padrões básicos para que o código não vire uma bagunça no meio de um desenvolvimento.

Exemplos de padronização em Java

Java é umas das linguagens mais utilizadas hoje no mundo do desenvolvimento e os programadores costumam utilizar alguns padrões definidos pela comunidade que serão descritos abaixo.

Convenção de Nomes

Mantenha o tamanho dos nomes grande o bastante para transmitir o que eles representam. Exemplo: primeiroNome, sobrenome, ordemServico.

Nomes de Classes e Interfaces

Os nomes de classe devem ser substantivos e, em caso de nomes compostos, utilize nomes com a primeira letra de cada palavra interna maiúscula. Use palavras inteiras evitando acrônimos e abreviaturas. Exemplo: Cliente ou ContaCliente.

Nomes de Métodos

Os nomes dos métodos devem ser verbos, em casos compostos com o primeiro nome minúsculo, e com a primeira letra de cada palavra interna em maiúsculo. Exemplo: calcularPagamento().

Nomes de Variáveis

Os nomes de variáveis devem estar com uma primeira letra minúscula e, em caso de nomes compostos, com a primeira letra de cada palavra interna em maiúsculo. Exemplo: contraPeso, primeiroNome.

Nomes de Constantes

Os nomes de constantes para tipos de dados ordinais devem ter todas as letras em maiúsculo, separadas por underline. Exemplo:

1

2

public static final int MAX_POLICY_AMOUNT; ou

public static final char PROCESS_INFO_COMMAND;

Comentários

Adicione comentários para facilitar a compreensão do código. Mantenha o comentário simples e separe-os de tal forma o código fique limpo e legível. Escreva também os comentários onde alguma explanação é necessária. Não escreva comentários para as coisas óbvias.

Use Linhas em Branco

Forneça linhas em branco entre as seções do código para melhorar a legibilidade. Use uma linha em branco nas seguintes circunstâncias:

  • Para separar as definições de classes das definições de métodos;
  • Para separar as variáveis locais de um método;
  • Para separar blocos de código;
  • Para separar comentários das seções lógicas do código.

Espaços em Branco e Tabulação

Use o espaço em branco para melhorar a legibilidade do código nas seguintes circunstâncias: Entre uma palavra-chave e um parêntese. Exemplo:

1

2

while (condicao) {

}

Após vírgulas na lista entre parênteses. Exemplo:

1 operacao(param1, param2, param3);

Entre um operador binário e seu operando. Exemplos:

1

2

x += y + z;

a = (a + b) / (c * d);

Variáveis Locais

Declare uma variável local por linha do código e adicione um comentário que identifique a variável. Exemplo:

1 int contador = 0; // contador para número de referências

Atributos

Para declarar atributos utilize os seguintes padrões:

  • Finalidade: Documente a finalidade do atributo;
  • Visibilidade: Mantenha a visibilidade tão baixo quanto possível;
  • Iniciação: Certifique-se de que todos os atributos estão inicializados antes que sejam alcançados. Inicialize todos os atributos no momento da criação do objeto. A inicialização posterior pode ser usada para os campos que não são acessados regularmente.

Métodos

Para declarar métodos de membro utilize os seguintes padrões:

  • Nomenclatura: use get/set como um prefixo do nome do campo para todos os métodos de ascensão, a menos que forem do tipo booleano. Use o prefixo “is” para nomes de métodos que referenciem campos booleanos. Utilize também a primeira palavra do nome do método de membro como um verbo forte, ativo. Exemplo: getPotenciaMotor(), setPotenciaMotor(), isAutomatico(), reduzirMarcha().
  • Visibilidade: Mantenha a visibilidade de funções de membro tão restritiva quanto possível para minimizar o acoplamento entre as classes;
    Documentação: Inclua um cabeçalho para especificar as seguintes informações da função de membro:

    • O propósito da função;
    • Seu valor de retorno;
    • Os parâmetros;
    • As mudanças nas versões do código.

Declarações ou Comandos

Cada linha deve conter no máximo um comando.

Chaves ou Blocos

Siga um esquema consistente para a abertura e fechamento de chaves. Alinhe a abertura e fechamento das chaves verticalmente. Isto facilitará a identificação do começo e término dos blocos. Exemplo:

1

2

3

4

5

6

7

8

9

class Cliente

{

    public void operacaoParaCliente()

    {

        if(condicao)

        {

        }

    }

}

Utilização de Chaves

Sempre utilize chaves para delimitar blocos de comandos, mesmo que estes tenham apenas uma instrução:

1

2

3

4

5

6

if(determinadaCondicao) // EVITE ISSO!

    realizaOperacao();

 

if(determinadaCondicao){ // OK

    realizaOperacao();

}

 

Quando utilizamos padrões e boas práticas, garantimos que todos da equipe conseguirão ter o mínimo de entendimento do código que está sendo desenvolvido. Em linguagens como o Java já temos padrões indicados e definidos pela comunidade de forma documentada para que os desenvolvedores adotem um padrão universal de codificação, facilitando assim o entendimento de qualquer código desenvolvido na linguagem. Visto isso é indicado adotar sempre o padrão de codificação da linguagem utilizada.

 

Autor: Ricardo José Boff

 

Referências

Padrões de Codificação, por Tadeu Pereira, acesso em: <http://www.devmedia.com.br/padroes-de-codificacao/16529>

Introdução a Padrões de Codificação, por Diego Eis, acesso em: <https://tableless.com.br/introducao-a-padroes-de-codificacao/>

Dicas de Boas Práticas de Codificação, por Luiz Gustavo S. de Souza, acesso em: <https://luizgustavoss.wordpress.com/2010/09/09/dicas-de-boas-praticas-de-codificacao/>

Convenções de Código Java, por Carlos Eduardo, acesso em: <http://www.devmedia.com.br/convencoes-de-codigo-java/23871>

Tipos de bancos de dados NoSQL

Banco de dados não relacionais ou distribuídos, tem como princípio básico não possuírem o conceito de modelagem por tabelas como o relacional, diferenciam-se pela sua utilização horizontal, através da distribuição de dados em diferentes servidores. São indicados para aplicações projetadas com alta carga de dados, onde o modelo relacional não consegue atender. Para a maioria das aplicações de grande escala, a disponibilidade e a tolerância são mais importantes que a consistência, sendo as características BASE mais fáceis de serem alcançadas do que as ACID. Um caso importante a ser citado foi o Banco NoSQL CassandraDB, que inicialmente foi desenvolvido para um recurso do Facebook.

Os bancos de dados NoSQL não são todos iguais. Há grandes diferenças no que se refere como a forma de armazenamento e conceitos de modelagem. Basicamente se subdividem em técnicas de armazenamento diferentes. Há 4 tipos básicos de bancos de dados NoSQL, a seguir eles são descritos.

NoSQL orientado a documento: consiste em uma estrutura baseada em uma coleção de documentos, sendo um documento um objeto que contém um código único com um conjunto de informações, podendo ser strings, documentos aninhados ou ainda listas. Inicialmente pode ser semelhante ao modelo de chave-valor(Key-value), no entanto, diferencia-se m ter um conjunto de documentos e cada um destes recebe um identificador único, assim como as chaves, dentro da coleção. Ao se armazenar os dados em JSON, o desenvolvimento é facilitado, pois há suporte a vários tipos de dados. Exemplos destes são o MongoDB e CouchBase.

Figura 1 – organização de um NoSQL orientado a documento.

 

NoSQL Key-Value (chave-valor): consiste em uma modelagem que indexa os dados a uma chave. Ao se armazenar os dados, sua forma de procura se dá por uma base similar a um dicionário, onde estes possuem uma chave. Esta forma de armazenamento é livre de “schema”, permite a inserção de dados em tempo de execução, sem conflitar o banco e não influenciando na disponibilidade, pois seus valores são isolados e independentes entre si. Alguns exemplos são: Oracle NoSQL, Riak, Azure Table Storage, BerkeleyDB e Redis.

Figura 2 – Exemplo de organização de um banco de dados NoSQL chave-valor.

 

NoSQL representado por Grafos: Este modelo armazenamento utiliza três componentes básicos: um grafo para representar um dado, arrestas ou ligações para representar a associação entre os grafos e os atributos (ou propriedades) dos nós e relacionamentos. Modelo altamente usado onde exijam dados fortemente ligados. Este modelo é vantajoso onde há consultas complexas frente aos outros modelos, pois seu diferencial é o ganho de performance. Alguns exemplos são: Neo4J, OrientedDB, GraphBase e InfiniteGraph.

Figura 3 – Exemplo de organização de um banco de dados NoSQL orientado a grafos.

 

NoSQL modelo Colunar: Este modelo foi inicialmente desenvolvido baseado no Big Table da Google. Basicamente consiste em uma Tabela, onde nela possui várias famílias de colunas, e dentro destas famílias, colunas onde estão as propriedades.  Neste modelo, as entidades são representadas por tabelas e os dados gravados em disco modelo caracteriza-se por indexar um dado por uma Tripla, que consiste em linha, coluna e timestramp, sendo este o que permite verificar as diferentes versões de um dado. Os valores das propriedades das colunas podem são semelhantes ao modelo “Key-Value”.  São bancos de dados indicados para mídias sociais e problemas que envolvem consultas complexas.

Figura 4 – Exemplo de organização de um banco de dados NoSQL orientado a Colunas.

 

Há também o Hadoop, que é um framework paralelo no processamento de dados que tem sido usado para redução de mapas e Jobs. Diferentemente do Spark que armazena os dados em memória, o Hadoop armazena em disco e utiliza a técnica de replicação para garantir tolerância a falhas. Foi projetado para funcionar desde um único servidor até um cluster com milhares de máquinas. È uma solução comcebida para detectar e tartar falhas na camada de aplicação, fornecendo um serviço de alta disponibilidade baseado em um grid de computadores. No entanto o Hadoop possui uma grande latência para as consultas. Há dois componentes principais do Hadoop: Hadoop Distributed File System (HDFS) e o Mapreduce.

Figura 5 – Exemplo de funcionamento do Hadoop.

 

Referências Bibliográficas.

https://pt.slideshare.net/Celio12/trabalho-no-sql-aricelio-de-souza – acessado 17/04/2017

Nosql Essencial – Um Guia Conciso Para o Mundo Emergente da Persistência Poliglota – Martin Fowler, Pramod J. Sadalage – ISBN: 978-85-7522-338-3 – Ano: 2013

https://dzone.com/articles/a-primer-on-open-source-nosql-databases – acessado 17/04/2017

http://aptuz.com/blog/is-apache-spark-going-to-replace-hadoop/ – acessado em 13/05/2017

https://www.ibm.com/developerworks/br/data/library/techarticle/dm-1209hadoopbigdata/   acessado em 12/05/2017