sábado, 31 de outubro de 2015

Lógica pós-binária: criado um trit, que guarda 0, 1 ou 2



 
O trit é baseado em um memristor, também conhecido como neurônio artificial, ou sinapse artificial. [Imagem: SNF]


Lógica pós-binária

Uma equipe do Instituto Federal de Tecnologia de Zurique, na Suíça, construiu um memristor - comumente conhecido como "neurônio artificial" - que aponta para uma lógica pós-binária.
O componente, fabricado a partir de uma fatia de perovskita de apenas 5 nanômetros de espessura, possui três estados resistivos estáveis.
Como resultado, ele pode armazenar não apenas os valores 0 ou 1 comumente guardados por um bit, mas também pode ser utilizado para guardar informações codificadas por três estados - 0, 1 ou 2, ou seja, um "trit".
"Nosso componente poderia, portanto, ser útil para um novo tipo de tecnologia da informação que não seja baseada em lógica binária, mas em uma lógica que ofereça informações localizadas 'entre' o 0 e o 1," explica a professora Jennifer Rupp, coordenadora da equipe.
"Isto tem implicações interessantes para a chamada lógica fuzzy [lógica nebulosa, ou difusa], que busca incorporar uma forma de incerteza no tratamento da informação digital. Podemos descrevê-la como uma computação menos rígida," acrescentou.
Outra aplicação potencial do trit é na computação neuromórfica, que busca componentes eletrônicos para reproduzir a maneira pela qual os neurônios processam informações, e na qual os memristores, os transistores iônicos e os transistores sinápticos são as principais ferramentas.

O quarto Componente

O princípio de funcionamento do memristor foi descrito pela primeira vez em 1971, como o quarto componente básico dos circuitos eletrônicos (ao lado de resistores, capacitores e indutores).
A partir dos anos 2000, pesquisadores vêm sugerindo que certos tipos de memória resistiva poderiam atuar como memristores, mas somente em 2008 a existência do quarto componente eletrônico fundamental foi comprovada.
"As propriedades de um memristor em um determinado momento no tempo dependerá do que já aconteceu antes," explica Rupp referindo-se ao efeito de memória que faz com que o memristor se assemelhe aos neurônios. "Isto imita o comportamento dos neurônios, que somente transmitem informação quando um limiar específico de ativação foi atingido."
Principalmente a Intel e a HP têm investindo pesadamente no desenvolvimento de memristores para substituir as memórias flash usadas em cartões de memória USB, cartões SD e discos rígidos SSD - a expectativa é que a nova tecnologia de memória da Intel chegue ao mercado até o final deste ano. Mas o protótipo do trit desenvolvido pela equipe suíça ainda está em fase inicial de desenvolvimento.

Bibliografia:

Uncovering Two Competing Switching Mechanisms for Epitaxial and Ultrathin Strontium Titanate-Based Resistive Switching Bits
Markus Kubicek, Rafael Schmitt, Felix Messerschmitt, Jennifer L. M. Rupp
ACS Nano
Vol.: Article ASAP
DOI: 10.1021/acsnano.5b02752

quarta-feira, 28 de outubro de 2015

Engenheiro de Software e Profissões afins

A Engenharia de Software é uma área relativamente nova se comparado as demais, então é normal surgirem dúvidas quanto a profissão de cada área. Vamos sanar essa dúvida?

A maior dúvida de todas.  

>> Um Engenheiro de Software é Desenvolvedor também?

Vamos pensar um pouco.... um Engenheiro Civil é Pedreiro? não!, então, um Engenheiro de Software, não é desenvolvedor (programador), pode-se dizer que o Engenheiro de Software não põe a mão na massa, assim como o Engenheiro Civil não vai à obra assentar tijolos. Mas veja, assim como um Engenheiro Civil pode ser um Pedreiro (raríssimo isso acontecer), um Engenheiro de Software também pode ser Desenvolvedor, isso depende da escolha, formação e habilidades de cada um. 





 Lembre-se: O Engenheiro de Software não desenvolve e nem especifica o software. Ele viabiliza e acompanha o processo de produção, fornecendo e avaliando as ferramentas e técnicas que julgar mais adequadas a cada projeto da empresa.


Vejamos aqui, algumas profissões que podem ser confundidas, e o que cada uma faz:

Gerente de projetos: cuida de um projeto específico, garantindo que os prazos e orçamentos sejam cumpridos. 
Analista: é o responsável pela compreensão do problema relacionado ao sistema que será desenvolvido.
Designer: propõe a melhor tecnologia para se produzir um sistema executável, levando em conta as especificações do analista.
Programador:  responsável por construir a solução física a partir das especificações do designer. É ele quem gera o produto final. O programador deve conhecer profundamente a linguagem e o ambiente de programação.


Mas o que o Engenheiro de Software faz?
> O Engenheiro de Software escolhe e muitas vezes, especifica os processos de planejamento, gerência e produção a serem implantados.
> Ele acompanha e avalia todos os projetos da empresa para verificar se o projeto estabelecido é executado de forma eficiente e efetiva. 
> Caso seja necessário mudanças no processo estabelecido, ele as identifica e realiza, garantindo que a equipe adote tais mudanças.
> Ele reavalia o processo continuadamente.  



Esse artigo foi baseado no livro Engenharia de Software por: RAUL WAZLAWICK

terça-feira, 27 de outubro de 2015

O que é ENGENHARIA DE SOFTWARE?

Mas o que é Engenharia de Software?

Engenharia de que...? Hã? Que bicho é esse? Será que morde?
Pode parecer engraçado, porém essa é a reação de praticamente todas as pessoas que me perguntam qual o curso que estou cursando. Pois é, muita gente não conhece, e nem sabe o que é a Engenharia de Software.


Pois bem, primeiramente, você sabe o que é "Engenharia"?



Segundo o dicionário do Google, Engenharia é a "aplicação de métodos científicos ou empíricos à utilização dos recursos da natureza em benefício do ser humano." em outras palavras, é um "conjunto de atividades e funções de um engenheiro, que vão da concepção e do planejamento até a responsabilidade pela construção e pelo controle dos equipamentos de uma instalação técnica ou industrial."

Ou seja, Engenharia é o processo de criação de um projeto, que possui suas etapas, que vão desde a concepção do que será feito e do planejamento de como será feito, até a construção de determinada coisa que está em processo de engenharia.

O que é um Software?

Segundo Pressman, um software consiste em:
  1. Instruções (programas de computador) que, quando executadas, fornecem características, funções e desempenho desejados; 
  2. Estruturas de dados que possibilitam aos programas manipular informações adequadamente; 
  3. Informação descritiva, tanto na forma impressa como na virtual, descrevendo a operação e o uso dos programas;


Software não é apenas o programa, mas também toda a documentação associada e os dados de configuração necessários para fazer com que esses programas operem corretamente. SOMMERVILLE, 2011 

E o que é a Engenharia de Software?

Basicamente, o próprio nome já diz o que é. Trata-se da Engenharia de um Software, ou seja, é o processo de criação de um software, em outros termos, é um conjunto de atividades que vão desde a concepção e planejamento de um software até a criação do mesmo.

Engenharia de Software é uma área completamente voltada para a "computação", ela está diretamente ligada as especificações de desenvolvimento, e a manutenção de softwares (programas), com isso, ela é sempre aplicada à organização e qualidade do software.

Podemos simplificar tudo isso em, especificação, desenvolvimento, gerenciamento e a evolução de softwares.

A Engenharia de Software é uma disciplina da engenharia que se ocupa de todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até a manutenção desse sistema, depois que ele entrou em operação. 
SOMMERVILLE, 2011 


Quais as áreas de conhecimento da Engenharia de Software?

Segundo o SWEBOK (Guia do Conjunto de Conhecimentos em Engenharia de Software - em breve faremos uma postagem sobre o que é o SWEBOK, e a importância dele para a Engenharia de Software.) as áreas de conhecimento de Engenharia de Software são:

  1. Requisitos de Software.
  2. Projeto de Software.
  3. Construção de Software.
  4. Teste e Validação de Software.
  5. Manutenção de Software.
  6. Gerenciamento das Configurações Pessoais do Software.
  7. Gerenciamento da Engenharia de Software.
  8. Processos de Engenharia de Software.
  9. Ferramentas Específicas e Métodos de Engenharia de Software.
  10. Qualidade e Controle dos Softwares.


Bem, espero que com este artigo, esclareçam algumas dúvidas sobre a Engenharia de Software, qualquer dúvida, critica, sugestão, comente. :)


Esse artigo foi baseado no livro Engenharia de Software - por Roger S. Pressman, Engenharia de Software - por Ian Sommerville e no SWEBOK v.3