sexta-feira, 31 de maio de 2013

FILE TRANSFER

File Transfer Protocol(ftp) é um protocolo padrão de rede usado para transferir arquivos de um hospedeiro para outro HOST através de uma rede baseada em TCP, tais como a Internet.
FTP é construído em uma arquitetura cliente-servidor e utiliza as conexões de dados e de controle separado entre o cliente e o servidor. Os usuários de FTP podem autenticar-se usando um nome de usuário e senha, mas pode ligar anonimamente, se o servidor estiver configurado para permitir isso. Para a transmissão de seguro que se esconde (criptografa) o nome de usuário e senha e criptografa o conteúdo, FTP geralmente é protegido com SSL / TLS ("FTPS"). SSH File Transfer Protocol ("SFTP") é, por vezes, também usado no lugar, mas é tecnologicamente diferente.
As primeiras aplicações do cliente de FTP eram aplicativos de linha de comando desenvolvidos antes que os sistemas operacionais tiveram interfaces gráficas de usuário, e ainda são enviados com a maioria Windows, Unix e sistemas operacionais Linux. Dezenas de clientes FTP e utilitários de automação tem sido desde desenvolvido para desktops, servidores, dispositivos móveis e hardware, e FTP foi incorporada em centenas de aplicativos de produtividade, como editores de páginas de internet.

Como ocorre a transferência de arquivo?
A transferência de arquivos dá-se entre um computador chamado "cliente" (aquele que solicita a conexão para a transferência de dados) e um servidor (aquele que recebe a solicitação de transferência). O utilizador, através de software específico, pode selecionar quais arquivos enviar ou receber do servidor. Para existir uma conexão ao servidor,caso o servidor exija,o utilizador informa um nome de utilizador (ou username, em inglês) e uma senha password, bem como o nome correcto do servidor ou seu endereço IP.
Se os dados foram informados corretamente, a conexão pode ser estabelecida.

Vantagens e desvantagens

Usar um servidor de FTP oferece algumas vantagens por si só. Por um lado, um usuário pode usar um programa para executar um carregamento em massa para um servidor, não tendo que se preocupar em ter que repetidamente procurar pelos arquivos e enviá-los novamente usando um formulário. Baixar também pode ser realizado em massa. Infelizmente, um servidor de FTP ainda requer um cliente FTP para ser usado, e a utilização de um seria particularmente difícil para aqueles que apenas queiram enviar uma ou duas imagens.

EXEMPLOS DE USO

Caso 1:
Uma loja com vários pontos de venda precisa compartilhar as informações do cadastro de produto.
Para fazer com que esse compartilhamento aconteça o “ponto 1” exporta seu cadastro para o ftp. Assim, o “ponto 2” acessa esse ftp para realizar a transferência do cadastro do “ponto 1”. Dessa forma é possível manter todos os pontos com o cadastro dos mesmos produtos.

Caso 2:
Hoje temos o caso de uma montadora multinacional que esta implantando um novo sistema e precisa que seus dois sistemas conversem, pois o sistema novo precisa receber dados como garantia, consulta de chassis, e o segundo software também precisa dessas informações.
Então foi utilizado um FTP para fazer o Envio do Arquivo pelo software de origem, para que o sistema destinatário possa receber, tratar e enviar outras informações para o software de origem.

 CONCLUSÃO

O compartilhamento do FTP é simples, fácil e pratico de se usar para a troca de arquivos, tanto por empresas como por estudantes.
Pode ser utilizado com segurança solicitando usuário e senha para acessar algumas pastas e pode ser integrado a varios sistemas operacionais/softwares, pois o acesso é via navegador.

   REFERÊNCIAS BIBLIOGRÁFICAS

Comparativo de clientes de FTP. Disponível em: <http://www.homehost.com.br/artigos/comparativo_de_clientes_de_ftp-029.html>. Acesso em 20/05/2013.
 File Transfer Protocol. Disponível em <http://en.wikipedia.org/wiki/File_Transfer_Protocol>. Acesso em 20/05/2013.
 Transferência de arquivo HTTP vs. FTP. Disponível em: <http://www.ehow.com.br/transferencia-arquivo-http-vs-ftp-sobre_16165/>. Acesso em 20/05/2013.
 Servidor FTP. Disponível em: <http://pt.wikipedia.org/wiki/Servidor_FTP>. Acesso em 20/05/2013.


segunda-feira, 13 de maio de 2013

Camadas

INTRODUÇÃO

Arquitetura de 3 camadas independentes permite a divisão da troca de arquivos por um SGBD(Sistema de Gerenciamento de banco de dados), sem afetar as regras de negocio da aplicação isso facilita a reusabilidade das classes de negocio em outras aplicações, permite maior flexibilidade na escolha de tecnologias para implementar a aplicação.

As três camadas da arquitetura podem ser vistas e tem os seguintes papéis:
Camada de Apresentação: Esta camada tem a função de implementar uma interface de entrada e saída, para a interação da aplicação com usuário.
Camada de Negócio: Esta camada representa o núcleo da aplicação e é responsável por implementar a lógica de negocio da aplicação.
Camada de Persistência: Esta camada é responsável pela persistência e acesso aos dados da aplicação, ela isola o resto da aplicação do meio do armazenamento usado (Memórias arquivos e aplicações).

O trabalho foi desenvolvido em ASP.NET utilizando o framework 4.0, tomaremos como exemplo uma aplicação web, desenvolvida em sala de aula na disciplina de Programação Web II com MS Ednilson Rodella.

ASP.NETTem como objetivo de criação de sites comerciais e com pequenas aplicações para intranet, A principal ferramenta para o desenvolvimento é o Microsoft Visual Studio, que apresenta excelente produtividade ao permitir uma interface Windows Forms.

CAMADA DE APRESENTAÇÃO
É a camada onde exibiremos informações e coletar dados do usuário.Esta camada é geralmente camada de GUI (Graphical User Interface ) e, no caso de aplicações .NET, oferece conteúdo estático e conteúdo dinâmico personalizado, que pode ser apresentado nos mais variados formatos disponíveis, como HTML, Windows Forms ou XML, para atender aos diferentes tipos de dispositivos cliente, como Desktop PC, celulares e PDAs.
A camada de apresentação é implementada com uso dos componentes visuais da plataformas .NET, como C# e VB.NET.

CAMADA DE NEGÓCIO

Por princípio, regras de negócio são as definições de uma organização, com base em condições específicas. Todas as organizações possuem regras de negócio, não importando o tipo de atividade que exerçam e elas podem ser encontradas em diversos pontos.

No Módulo de Clientes tem a tela de pesquisa que quando colocado um código ou o nome do cliente e clicar em pesquisar ele apresentará todos os clientes com aquele nome ou código em uma Grid, podendo alterar o cadastro do cliente.
Na tela de pesquisa como por exemplo foi colocado o “e” no campo Nome e clicado em pesquisar, ao clicar em alterar ele levará todas as informações para a tela de cadastro
Salvar: Ao salvar é feito todas as validações de campos, verificando se algum está vazio ou com formato errado.
Alterar: Na alteração ele leva todas as informações para a tela de cadastro, sendo necessário salvar novamente ou excluir, se salvar ele será tratado para apenas salvar por cima.
Excluir: Ao clicar em excluir ele chamará uma função EXCLUIR que comunicará com o banco de dados que é a terceira camada..

CAMADA DE PERSISTÊNCIA
Ela é responsável por se conectar ao banco de dados e extrair, inserir e atualizar as informações. É responsável por transformar modelos de Objetos em modelos Relacionais, pois possui casos com banco relacionado.
Em ASP.NET existem 2 formar de acesso usando um framework (DAO e AR) , ou escrevendo SQL próprio.

CONCLUSÃO
Vantagens:
Reduzem complexidade: agrupam componentes e simplificam a comunicação entre eles;
Reduzem dependência/acoplamento: a regra de comunicação evita dependências diretas entre componentes de Camadas diferentes;
Favorecem a coesão: componentes de responsabilidades relacionadas são agrupados;
• Promovem reusabilidade: camadas podem ser reutilizadas em outros sistemas ou podem ser substituídas;
• É um padrão arquitetural conhecido: facilita a comunicação e entendimento entre desenvolvedores.
Desvantagens:
• Limitadas pela tecnologia: algumas regras precisam ser quebradas por limitações tecnológicas.
• Apenas complicam um sistema muito simples: não é qualquer sistema que exige o uso de Camadas;
• Possibilidade de overdose: muitos arquitetos acabam criando Camadas demais e tornando a aplicação extremamente complexa

domingo, 5 de maio de 2013

Microsoft Dynamics AX

O Microsoft Dynamics AX é uma linha de soluções de ERP e CRM (customer relationship management - gestão de relacionamento com clientes), adaptáveis e projetadas para satisfazer praticamente todas as necessidades das empresas e ajudar os funcionários a tomar decisões importantes com mais confiança. 

O Dynamics funciona como e com os softwares familiares da Microsoft, facilitando a adoção e reduzindo os riscos na implementação de uma nova solução. Essas soluções automatizam e dinamizam processos financeiros, de relacionamento com o cliente e da cadeia de fornecedores de uma forma que pode levar ao sucesso da empresa.

Com seu crescente avanço no mercado internacional, o ERP da Microsoft encontra-se no Brasil a pouco tempo, e vem conquistando grandes clientes no mercado do país, como o Habib's, Honda, Scania, Frigelar, Cinemark, Avon, Sephora, Chesterton, SEB, Poliedro, Ricetec Brasil e Argentina, entre outros que podem ser visualizados em Clientes do AX.

Forte concorrente do ERP SAP (que no Brasil é mais conhecido), o produto da Microsoft tende a se fortalecer no mercado e promete ser o mais forte produto ERP do país.

Aos fanáticos pela Microsoft, vale a pena se especializar no produto, pois hoje no Brasil, temos poucos profissionais na área, e que dominam a linguagem utilizada no ERP que é o axapta, ou melhor X++. Essa linguagem é muito parecida com VB e C#, vale a pena dar uma olhada em como o produto funciona para os desenvolvedores em Microsoft Dynamics AX 2012 for Developers [AX 2012].

sexta-feira, 3 de maio de 2013

Reporting Services

Introdução
O SQL Server Reporting Services fornece uma ampla variedade de ferramentas e serviços prontos para uso, para ajudá-lo a criar, implantar e gerenciar relatórios para a sua organização, além de recursos de programação que permitem estender e personalizar a funcionalidade de seus relatórios.
O que é?
O Reporting Services é uma plataforma de relatório baseada em servidor que fornece funcionalidade de relatório abrangente para várias fontes de dados.O Reporting Services inclui um conjunto completo de ferramentas para você criar, gerenciar e entregar relatórios e APIs que permitem aos desenvolvedores integrar ou estender dados e processamento de relatório em aplicativos personalizados. As ferramentas do Reporting Services funcionam no ambiente do Microsoft Visual Studio e são completamente integrados com as ferramentas e componentes do SQL Server.
O que possuí?
Com o Reporting Services, você pode criar relatórios interativos, tabulares, gráficos ou de forma livre de fontes de dados relacionais, multidimensionais ou baseadas em XML. Os relatórios podem incluir visualização de dados rica, inclusive gráficos, mapas e minigráficos. Você pode publicar relatórios, agendar o processamento de relatório ou acessar relatórios sob demanda. É possível selecionar entre uma variedade de formatos de exibição, exportar relatórios para outros aplicativos, como Microsoft Excel, e assinar relatórios publicados. Os relatórios criados podem ser exibidos através de uma conexão baseada na Web ou como parte de um aplicativo do Microsoft Windows ou site do SharePoint. Você pode criar também alertas de dados em relatórios publicados em um site do SharePoint e receber mensagens de email quando os dados do relatório forem alterados.
Essa ferramenta vem sendo integrada com alguns ERP's, vale a pena conhecer e entender pelo menos o básico, pois seu uso vem crescendo cada vez mais em softwares de médio e grande porte, devido a sua ótima integração.

Nesse blog vocês podem acompanhar o uso da ferramenta dentro do ERP Dynamics AX: Reporting in Dynamics AX


domingo, 21 de abril de 2013

Java Server Faces

Java Server Faces

Java Server Faces é um framework, que tem objetivo desenvolver aplicações web dinâmicas, de forma ágil. Esta tecnologia aciona características de um framework MVC para WEB e de um modelo de interfaces gráficas, baseada em eventos, desta forma traz consigo uma grande vantagem: A separação entre a visualização e as regras de negocio.
Incorpora características de um framework MVC para WEB e de um modelo de interfaces gráficas baseado em eventos. O objetivo do padrão MVC é dividir uma aplicação em três camadas: Modelo, Visualização e Controle. A visualização representa a interface com o usuário, ou seja, define a forma como dos dados serão apresentados e também encaminha as ações dos usuários para o controlador. Já a camada de controle é responsável por fazer a ligação entre o modelo e a visualização, além de interpretar as ações do usuário e as traduzir para operação sobre o modelo, onde são realizadas mudanças e, então, gerar uma visualização apropriada.

Arquitetura do Java Server Faces baseada no MVC

Características:

* Permite que o desenvolvedor crie UIs (Interfaces de Usuário);
* Fornece separação de funções que envolvem a construção de aplicações;
* Reutiliza componentes da página;
* Fornece um conjunto de tags JSP para acessar os componentes;

Vantagens:

*  Reusa Componentes da Página
*  Fornece separação de funções que envolvem a construção da aplicação;
*  Permite que o usuário crie UI (Interface do Usuário)


Implementando JSF:

terça-feira, 16 de abril de 2013

Censo hacker

É realmente engenhoso como um hacker (do bem, é necessário dizer) invadiu milhares de equipamentos e criou o maior e melhor levantamento de dados sobre a internet. A imagem que segue mostra um dos resultados do trabalho, o número de IPs existente em cada lugar do planeta.


Leia a reportagem completa em Link (o caderno de informática do Estadão):
http://blogs.estadao.com.br/link/censo-hacker/

Leia também a reportagem "original" na revista Spiegel:
http://www.spiegel.de/international/world/hacker-measures-the-internet-illegally-with-carna-botnet-a-890413.html

O Problema do Caixeiro Viajante


 por Gabriela Pellegrini Morasco

O Problema do Caixeiro Viajante:

O problema do caixeiro viajante é um dos assuntos mais conhecidos e estudados no universo da Ciência da Computação. Suponha que um caixeiro tenha de visitar n cidades diferentes, iniciando e encerrando sua viagem na primeira cidade. Suponha, também, que não importa a ordem com que as cidades são visitadas e que de cada uma delas pode-se ir diretamente a qualquer outra. O problema do caixeiro viajante consiste em descobrir a rota que torna mínima a viagem total.

Complexidade computacional do problema do caixeiro:

O problema do caixeiro é um problema de otimização combinatória. A primeira coisa que podemos pensar para resolver esse tipo de problema é reduzi-lo a um problema de enumeração: achamos todas as rotas possíveis e, usando um computador, calculamos o comprimento de cada uma delas e então vemos qual a menor.

Para acharmos o número R(n) de rotas para o caso de n cidades, basta fazer um raciocínio combinatório simples e clássico. Por exemplo, no caso de n = 4 cidades, a primeira e última posição são fixas, de modo que elas não afetam o cálculo; na segunda posição podemos colocar qualquer uma das 3 cidades restantes B, C e D, e uma vez escolhida uma delas, podemos colocar qualquer uma das 2 restantes na terceira posição; na quarta posição não teríamos nenhuma escolha, pois sobrou apenas uma cidade; consequentemente, o número de rotas é 3 x 2 x 1 = 6. De modo semelhante, para o caso de n cidades, o número total de escolhas que podemos fazer é (n-1) x (n-2) x ... x 2 x 1. De modo que, usando a notação de fatorial: R(n) = (n - 1)!.

Método reducionista:

Nossa estratégia reducionista consiste em gerar cada uma dessas R(n) = (n - 1)! rotas, calcular o comprimento total das viagens de cada rota e ver qual delas tem o menor comprimento total. Mas será que este trabalho é computacionalmente viável?

Suponhamos temos um computador capaz de fazer 1 bilhão de adições por segundo. No caso de 20 cidades, o computador precisa apenas de 19 adições para dizer qual o comprimento de uma rota e então será capaz de calcular 109 / 19 = 53 milhões de rotas por segundo. Contudo, essa velocidade é pequena em relação às 19! rotas que deverão ser calculadas. O valor de 19! é 121.645.100.408.832.000 (ou, aproximadamente, 1.2 x 1017 em notação científica). Consequentemente, ele precisará de 1.2 x 1017 / ( 53 milhões ) = 2.3 x 109 segundos para completar sua tarefa, o que equivale a cerca de 73 anos. O problema é que a quantidade (n - 1)! cresce com uma velocidade alarmante, sendo que muito rapidamente o computador torna-se incapaz de executar o que lhe pedimos.

Observe que o aumento do número de pontos provoca uma muito lenta diminuição na velocidade com que o computador calcula o tempo de cada rota, mas provoca um imensamente grande aumento no tempo total de cálculo. Em outras palavras: a inviabilidade computacional é devida à presença da fatorial na medida do esforço computacional do método da redução. Então o método reducionista não é prático, a não ser para o caso de poucas cidades.

Utilizando grafos:

Uma alternativa para a modelagem matemática do problema é feita através de uma estrutura matemática denominada grafo. Um grafo é um conjunto de pontos (que chamamos de vértices), os quais podem ser associados através de linhas (que chamamos de arestas). Na figura a seguir temos um grafo com 5 vértices e 6 arestas.
No grafo associado ao problema do caixeiro viajante, cada cidade é representada por um vértice, e as arestas representam as vias (estradas, por exemplo) que ligam as cidades. A cada aresta podemos associar um número que representa a distância entre as duas cidades conectadas por ela. 

O obstáculo à resolução deste problema, como vimos, é o crescimento exponencial do número de trajetos quando aumentam o número de cidades. Esta característica torna inviável o uso da comparação de todas as trajetórias como forma de decidir qual a ótima. Vamos trabalhar, então, com mais uma estrutura de dados: a árvore geradora mínima. A ideia desta árvore é simplificar o grafo, gerando a menor rota computacionalmente viável entre os seus vértices.

Existem diversos algoritmos para o cálculo da árvore geradora mínima, tais como o algoritmo de Prim e o algoritmo de Kruskal. A condição mínima para que o grafo possua uma árvore geradora é que ele seja conexo. A árvore gerada deve ser percorrida em recursão, passando por todos os pontos, para que seja encontrada a rota. Sabemos que a descoberta da árvore geradora mínima a partir de um grafo de cidades não nos dá a melhor solução, pois não considera o ciclo entre as cidades, pelo contrário, a árvore gerada não deve ter nenhum ciclo, porém nos dá uma solução computacionalmente viável.


Bibliografia:

  • http://www.mat.ufrgs.br/~portosil/caixeiro.html 
  • http://www.uff.br/sintoniamatematica/grandestemaseproblemas/grandestemaseproblemas-html/audio-caixeiro-br.html
  • http://www.lti.pcs.usp.br/pcs2059/trabalhos/Tema7-dia1.pdf

quarta-feira, 10 de abril de 2013

Deep Web

Deep Web: a internet invisível!

Conhecida também como Deepnet, Web Invisível, Undernet ou Web Oculta, a Deep Web é um mistério que provavelmente poucas pessoas ouviram falar e é um desafio para a polícia de todo mundo!
Trata-se de um lado da internet que você não tem acesso, e que pode ser chamado de "internet invisível", já que nem todas as informações circulam puramente no protocolo HTTP da web. Ou seja, apenas o seu navegador de internet não é o suficiente para ver esses sites.
A idéia de se criar uma Deep Web surgiu de forma anônima na China. A proposta seria navegar em sites que o governo – através de seu provedor – bloqueia a entrada no país. Os desenvolvedores criaram um software de Proxy, batizado como TOR. O The Orion Router hoje é mantido por contribuições anônimas, programadores voluntários de diversos lugares do mundo, mas, a rede que inicialmente era base de auxílio para quebrar a ditadura imposta pelo governo chinês, tornou-se o objetivo de mentes criminosas, pois o anonimato sempre foi muito visado pelos desenvolvedores, pois quem burlasse o sistema chinês, poderia ser preso.
Diversos fóruns e sites de discussões foram criados pelos usuários chineses para que pudessem interagir entre eles dentro de redes como o TOR, porém com o passar do tempo é que esta rede criou um aspecto mais negro, surgindo fóruns, sites de compartilhamento e portais dos mais diversos assuntos como pedofilia, assassinatos, satanismo, sequestro, tráfego humano, drogas entorpecentes e muito mais. Destes crimes, pouco mais de 31% que a polícia internacional (INTERPOL) sabe dizer que foram obtidos com sucesso para encontrar criminosos e, até os hacker Anonymous ajudaram a prender um dos maiores sites de pedofilia da rede TOR.
Um exemplo é o site Silk Road, descoberto na metade de 2011. O site vendia drogas de todo tipo para vários lugares do mundo. O endereço do site era ianxz6zefk72ulzz.onion e só podia ser acessado usando o TOR (por isso o final ".onion"). O site usava o sistema de pagamento BitCoin, um tipo de moeda criptográfica.


Protocolos e programas:
Além do TOR, existe ainda a Freenet e softwares de compartilhamento de arquivos como o Share e o Perfect Dark, desenvolvidos no Japão com o intuito de dar a seus usuários anonimato durante troca de dados.

Mecanismos de pesquisa:
Os mecanismos de pesquisa não tem em seus bancos de dados todas as páginas de internet. Pelo menos 1/3 da web, dizem alguns, não é pesquisada quando você procura algo no Google, por exemplo.
Mesmo com diversos mecanismos de pesquisa, não é possível encontrar tudo. Então foi criado o site Searchlores para "ensinar" o uso de recursos de pesquisas disponíveis.

Esses fatores, que vão das limitações tecnológicas dos mecanismos de pesquisa aos conteúdos intencionalmente escondidos e protocolos de comunicação inacessíveis sem um sistema configurado corretamente, permitem que exista uma "internet" realmente invisível do ponto de vista da maioria.

Eu devo conhecer a Deep Web?
É recomendável que você não faça isso, pois as consequências psicológicas são imprevisíveis! Há o risco de sua máquina ser invadida e uma simples e rápida passagem por lá pode ser consideravelmente fatal, em termos computacionais! Mas se resolver, saiba que muito do conteúdo mais extremo é inacessível para novos usuários e que para conhecer mais, o risco aumenta...
  
Fontes:
Segurança Digital. Disponível em:
Isso é Bizarro. Disponível em:
Deep Web e o lado obscuro do ser humano. Disponível em:

terça-feira, 2 de abril de 2013

Modelos de componentes


Introdução
Um modelo de componente define novos recursos e serviços que permitem aos desenvolvedores de aplicação implementar, gerenciar, configurar e implantar componentes de forma padronizada, facilitando a reutilização e a manutenção do sistema.
Criada pelo Object Management Group (OMG), o modelo CORBA estabelece e simplifica a troca de dados entre sistemas distribuídos. Propõe a comunicação local e/ou remota entre aplicações que têm como base a tecnologia orientada a objetos. Entretanto, a especificação de CORBA não atende bem a determinados pontos tais como: Padrão para implantação, estender funcionalidades de objetos CORBA, definição de serviços, entre outros, levando a OMG a adotar o CORBA Component Model (CCM) como parte da especificação de CORBA 3.0.
O CCM é uma extensão do modelo de objetos CORBA criado para tratar os problemas citados a cima e que foram deixados em aberto por esta arquitetura.
O modelo descreve como um componente é constituído, como armazena suas propriedades internas (atributos) e como se comunica com outros componentes (portas). Os componentes criados usando o padrão CCM podem ser instalados em servidores de diversos fornecedores (que respeitam a especificação CCM).
OMG – Padronização
O Object Management Group (OMG) é um consórcio internacional da indústria de software fundado em maio de 1989 com o propósito de criar padrões para possibilitar a interoperabilidade e portabilidade das aplicações distribuídas utilizando a tecnologia de objetos.
A organização desenvolve padrões de integração de uma grande variedade de tecnologias, incluindo padrões de middleware e perfis, são baseados na arquitetura de agente de solicitação de objeto (CORBA) e suporta uma grande variedade de indústrias.
Os trabalhos de padronização do OMG são executados sobre um modelo conceitual denominado core object model e uma arquitetura geral de referência denominada Object Management Architecture (OMA) que busca definir de forma abstrata as várias funcionalidades necessárias a computação distribuída, onde cada componente de software é representado como um objeto.
O OMG não tem como propósito a produção de software, somente especificações, criadas a partir de ideias e tecnologias propostas e discutidas pelas organizações membro envolvidas com a computação distribuída.
Dentre os muitos membros podemos destacar as grandes industrias tais como Dell, Ericsson, Microsoft, IBM, HP e Apple.
Origem CCM – Modelo Corba
CORBA é uma tentativa de cooperação da indústria de computação coordenada pelo OMG no sentido de desenvolver um padrão aberto para possibilitar computação distribuída entre ambientes de aplicação. A inovação do modelo foi a orientação a objeto e sua independência em relação a protocolo, sistema operacional, linguagem de programação de plataforma de hardware.
Para utilizar o modelo, exige-se apenas que a aplicação, escrita de qualquer linguagem, instalada em qualquer lugar da rede, mapeie sua interface para IDL (Interface Definition Language), que se trata da linguagem neutra do padrão, desenhada para a disponibilização e acesso a serviços (métodos e funções) de objetos remotos CORBA.
A arquitetura CORBA possui duas partes de destaque: A IDL – que é empregada para estabelecer contratos, limitando a interação das aplicações e estabelecendo as interfaces com os clientes, constituindo-se uma linguagem neutra, dispõe de mecanismos para que as interfaces dos componentes de aplicações distribuídas possam especificar herança de classes, eventos, atributos e exceções em padrão compatível com a base ORB. E sua outra parte ORB – que funciona como uma ponte, disponibilizando a infra-estrutura de comunicação para enviar e receber solicitações e respostas dos clientes para os servidores.
CORBA permite a implementação em linguagens de programação bastante difundidas atualmente como "C", "C++" e Java.
Estrutura CCM
A estrutura de componente CCM possuí quatro tipo de portas, que são os pontos de comunicação dos componentes.
  • Facetas - interfaces fornecida pelo componente;
  • Receptáculos - referências para outros objetos com os quais o componente interage;
  • Emissores de evento - utilizadas para produzir eventos;
  • Receptores de eventos - utilizadas para consumir eventos.
Eventos - Estabelecem uma comunicação entre componentes.
Completando a estrutura verifica-se a existência de cinco tipos de categorias:
  • Serviço (Service) - Componente limitado a duração de execução do método. São usados para chamar métodos como consultas ou execução de código;
  • Sessão (Session) - Disponível durante toda a existência de uma chamada, ou seja, ele fica aberto de forma independente para cada cliente, armazenando as informação enquanto o cliente estiver executando funções. São usados para operações do tipo iterador, ou quando o resultado de uma operação chamada for pré-requisito para o acionamento da próxima operação;
  • Processo (Process) - Componentes persistentes usados para representar, no servidor, processos de negócio em lugar de representar tabelas de BD;
  • Entidade (Entity) - Continua no sistema, mesmo que o cliente que o chamou tenha o fechado, ou seja, podem ser obtidos posteriormente através de uma chave primária.São usados para realizar mapeamento, assim, cada instância representa na forma de objetos uma determina "tupla" de uma tabela.
  • Vazio (Empty) - Um componente vazio tem seu funcionamento customizado pelo desenvolvedor, através dos descritores de instalação e da implementação do executores.
A modelagem CCM é usada por clientes (usuários comuns) para realizar operações através de referência a uma instância, ou seja, podem navegar pelas interfaces dos componentes por intermédio defina em CORBA.Também é usada por desenvolvedores que configuram componentes.
Para que serve?
O modelo CCM estende o modelo de objetos de CORBA, definindo funcionalidades e serviços que permitem que o desenvolvedor implemente, gerencie, configure e implante componentes que integrem os serviços de CORBA, como segurança, transações, persistência e eventos em um ambiente padronizado.
Uma das principais contribuições do CCM é a padronização do processo de desenvolvimento de componentes, tratando alguns problemas deixados em aberto pela arquitetura CORBA. Esta padronização pode ser resumida como: O desenvolvedor de componentes define, em IDL, as interfaces que as implementações dos componentes irão suportar, como armazena suas propriedades internas (atributos), como se comunica com outros componentes (portas), implementar os componentes utilizando ferramentas disponibilizadas pelo fornecedor do CCM, empacotar o componente em uma DLL e implementar o componente por mecanismo desenvolvido pelo fornecedor do CCM.
Os componentes são armazenados num pacote contendo sua implementação e a descrição de suas características, permitindo que o executor tenha acesso às conexões em suas portas, assim como utilizar serviços de objetos da arquitetura. Esse pacote é então utilizado para implantar o componente num servidor de componentes, onde esse pode ser então utilizado por clientes.
Estes componentes são desenvolvidos para executar uma atividade específica combinada para compor aplicações. O componente encapsula, dentro de si, seu projeto e implementação, e oferece serviços, por meio de interfaces para o meio externo. Em geral são desenvolvidos usando os métodos, técnicas, linguagens e ferramentas tradicionais, podendo ser facilmente utilizados e reutilizados em outras aplicações ou fornecidos por terceiros.
Com utilização destes componentes, além de diminuir o tempo para o desenvolvimento do software, a confiabilidade também é melhorada, pois os componentes são testados individualmente.
Outra vantagem do uso de componentes é a manutenção do software, pois os componentes podem ser substituídos e atualizados independentemente do restante da aplicação, e esta atualização é feita pelo fornecedor do componente.


Conclusão
Um modelo de componente define a forma como os componentes são vistos, aspectos da estrutura interna, mecanismo usado para a comunicação entre os componentes, o processo de desenvolvimento, de distribuição e de implementação.
Os componentes desenvolvidos a partir do modelo fornecem serviços a terceiros através de suas interfaces contribuindo para que o tempo de desenvolvimento seja diminuído, devido a reutilização dos códigos, e que a confiabilidade e facilidade na manutenção do software sejam melhorados.


Referências
PUC, Componentes de software, São Paulo, Disponível em <http://www2.dbd.puc-rio.br/pergamum/tesesabertas/0210477_04_cap_02.pdf> Acesso em 16 mar. 2013.
BARBOSA, Nadia Milena, UFCG, O que é CCM?, Paraíba, Disponível em <http://www.dsc.ufcg.edu.br/ ~wdcopin/VWDCOPIN/artigos/nadia/WDCOPIN_nadia.pdf> Acesso em 16 mar. 2013.
NARDI, Ricardo Alexandre, UFPE . Pernambueco, Disponícel em <http://www.cin.ufpe.br/~cagf/sdgrad/aulas/CCM.pdf> Acesso em 16 mar. 2013.

terça-feira, 19 de março de 2013

Arquitetura em 3 Camadas

Válquíria Akemi, Cristiane Pereira, Thamires S. Guimarães

Arquitetura 3 camadas é um padrão de arquitetura que descreve como três camadas de desenvolvimento relacionam entre si. Essa arquitetura fornece uma maneira de dividir as funcionalidades envolvidas na manutenção e apresentação de uma aplicação. Foi desenvolvida com objetivo de mapear as tarefas de entrada, processamento e saída para o modelo de interação com o usuário, assim sendo mais fácil mapear os conceitos no domínio de aplicações.
As camadas são:
  • Camada de Apresentação: tem como função exibir as informações. Usada para receber as entradas e apresentar o resultado, ou seja, é a interface com o usuário.
  • Camada de Regra de Negócio: responsável por controlar todo o fluxo de informação. Intermediária entre a camada de apresentação e acesso a dados. Nesta camada é executada a regra de negócio (inteligência do sistema).
  • Camada de Acesso a Dados: é responsável pela persistência e acesso aos dados da aplicação.
Vantagens e Desvantagens
Como qualquer arquitetura, possui vantagens e desvantagens, são elas:
Vantagens:
  • Facilita o reaproveitamento de código.
  • Facilita a manutenção e adição de recursos.
  • Maior integração da equipe e/ou divisão de tarefas.
  • Facilita em manter o seu código sempre limpo.
  • É possível ter desenvolvimento em paralelo para o modelo, visualizador e controle, pois não são dependentes.
 
Desvantagens:
  • Requer tempo para analisar e modelar o sistema.
  • Requer pessoas especializadas.
  • Não é aconselhável para pequenas aplicações.
Uso de Aplicações em Camadas no segmento Varejo
A seguir, faremos os comentários da divisão em camadas de um terminal PDV.
Definição PDV
  • Sistema computadorizado que registra vendas e trata de pagamentos.
  • Tipicamente usado em lojas de varejo e acoplado a um leitor de código de barra.
Divisão em Camadas
Camada Apresentação: são equipamentos de hardware que fazem interação com o usuário e onde são exibidas as informações, como exemplo: monitor LCD, teclado com visor, display cliente, leitor de código de barra, leitor CMC7, impressora fiscal (ECF), etc.
Camada Regra de Negócio: é a aplicação utilizada. O software onde são realizados os cadastros de formas de pagamentos e tipos de vendas, configurações de parâmetros, emissão de relatórios de vendas, validação do produto após a leitura do código de barra, cálculo da quantidade de itens vendidos e totais de venda.
Camada de Acesso a Dados: quando é feita a validação do cadastro do produto, os dados são enviados para esta camada. A aplicação acessa as tabelas necessárias do banco de dados para verificar se o item é existente.
O item presente em todas as camadas da divisão do PDV é a impressora fiscal, pois realiza a impressão do cupom fiscal e faz interação com o usuário (Camada Apresentação). Quando calcula os itens da venda, realiza processos como leitura X, redução Z, e etc. utiliza um software interno (Camada de Negócios), e ao armazenar todas as transações da venda em seu banco de dados eletrônico (dados são gravados na memória da fita detalhe) faz o uso da 3ª camada: persistência e acesso a dados.