Seguir @luiscarlos_j

sábado, 26 de abril de 2014

O MODELO - ARQUITETURA CLIENTE / SERVIDOR

       O modelo cliente / servidor corresponde a uma arquitetura em que ocorre a distribuição de tarefas entre os que fornecem um determinado tipo de serviço, chamados de servidores, e os que em algum momento podem requerer a utilização desse serviço, os clientes. Esses servidores podem realizar a tarefa de um ou mais serviços a um ou muitos clientes. Para que o cliente possa ter acesso ao recurso de um servidor tem que realizar primeiro uma solicitação. Caso essa solicitação seja atendida uma sessão é estabelecida e é possível a comunicação com o servidor e posteriormente o fornecimento do serviço. 
         Dentre os serviços que um servidor pode atender a um cliente são o acesso a e-mail, navegação web ou até mesmo acesso a um banco de dados. Uma das desvantagens desse modelo é que o clente não pode oferecer o serviço obtido a outros, o que ajudaria bastante na disponibilização de informações. O fato de o servidor ter que atender as requisições uma por uma e essas virem a aumentar no decorrer do tempo consideravelmente, este pode vir a cair por não ter capacidade suficiente para atender a demanda. A vantagem desse processo é que os clientes podem dispor de mais segurança na medida em que não são expostos a outros com interesse diferente da disponibilização de informação. Por exemplo, um cliente (computador) de uma empresa que tem dados sigilosos ficaria muito exposto recebendo requisições de outros clientes. Esses poderiam se aproveitar de falhas para invadir o sistema e se apoderar de dados importantes. Uma outra vantagem do modelo cliente / servidor é a centralização do fornecedor de serviços, o servidor, possibilitando facilidade em caso de manutenção e um maior controle na distribuição das informações. Essa centralização pode virar uma desvantagem no caso de o servidor vir a falhar no fornecimento de recursos e os clientes não forem atendidos. Ao contrário do modelo cliente / servidor, tem o modelo P2P em que as máquinas podem atuar tanto como cliente quanto servidor. Essa arquitetura cliente / servidor é utilizada em redes de computadores mas vale ressaltar que um cliente e servidor podem estar em uma mesma máquina. 

UM POUCO SOBRE IPv4 e IPv6

       Antes de falar sobre as contribuições do IPv6 é necessário entender um pouco do IPv4, a versão antecessora. O IPv4, uma versão do IP, foi bem sucedida possibilitando que a internet tratasse de redes heterogêneas. Independente do tipo de rede, a transferência de dados ocorre através de um formato de pacote uniforme chamado de datagrama IP. Esse datagrama é fundamental para a comunicação entre os computadores pois é responsável por carregar os dados do destino à origem. 
       A versão 4 do IP funcionou bem tanto em nível de software quanto em nível de hardwares, até mesmo em tecnologias que surgiram após o seu desenvolvimento. Um dos grandes fatores que impulsionaram a mudança para o IPv6, foi o tamanho do endereçamento que é de 32 bits no IPv4. Com esse tamanho é possível a geração de 2^32 endereços (4 294 967 296 endereços). Mesmo esse número sendo grande, o avanço da internet e a criação de diversos dispositivos fizeram com que esse números de endereços chegasse ao esgotamento pois cada host em uma rede tem que ter um endereço IP. Com o IPv6 cada endereço contém 128 bits, possibilitando um espaço suficientemente grande para acompanhar o crescimento da internet. O IPv6 é um protocolo extensível, ou seja, na comunicação entre computadores, os projetistas de redes pode configurar para que o remetente possa acrescentar informações no datagrama. O IPv6 foi criado pela IETF (Internet Engineering Task Force) uma entidade internacional que cuida da evolução da internet e é um protocolo que vai reinar durante vários anos devido ao seu grande espaço de endereçamento. A notação do IPv6 é diferente do IPv4. Enquanto no IPv4 a notação tem a forma decimal pontilhada, por exemplo 127.0.0.1, o IPv6 tem a forma de hexadecimal seguida de dois pontos, como 21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A.

MODELO OSI

    Logo no início do desenvolvimento de tecnologias de redes as empresas responsáveis por esse processo implementavam de acordo com suas especificações gerando assim diferentes softwares e hardwares. Acontece que diferentes tecnologias de redes dificultaram o alcance do objetivo principal para o qual uma rede de computadores foi criada, a comunicação e compartilhamento de recursos entre as máquinas. Por volta de 1984, uma organização internacional chamada ISO (International Organization for Standardization), responsável pela padronização e normalização mundial, apresentou o modelo OSI para resolver o problema de comunicação devido os diferentes tipos de tecnologia. O modelo OSI apresenta a comunicação de rede de computadores dividida em 7 (sete) camadas. 
         A adoção de um modelo ajuda no aprendizado, na padronização dos componentes e a divisão de camadas evitas que a alteração em uma afete a outra. As camadas do modelo OSI, de baixo para cima, são: física, enlace, rede, transporte, sessão, apresentação e aplicação. Cada uma dessas camadas tem função específica. A camada física é responsável pela definição das especificações mecânicas e elétricas (voltagem para representar bits 0 e 1). A camada enlace trata da topologia da rede e controle do acesso ao meio. A camada de rede permite a conectividade e o melhor caminho de comunicação entre dois host (dispositivo ligado a rede). A camada de transporte, como o nome já diz, é responsável pelo transporte de dados estabelecendo e terminando os circuitos de comunicação. A camada de sessão trata da sincronização de comunicação entre host para permitir a troca de dados. A camada de apresentação definir a conversão dos formatos dos dados, assim uma informação enviada por uma aplicação origem seja legível na aplicação destino. E finalmente, a camada de aplicação é responsável por intermediar o acesso do usuário com as aplicações, melhor dizendo ela é responsável pela iteração com as aplicações que têm no computador. Importante destacar que a comunicação entre máquinas acontece da seguinte forma, na maquina de origem a transmissão dos dados parte da camada de aplicação para a física. Quando a informação chega na maquina destino, acontece o inverso, parte da camada física até a camada de aplicação. O modelo OSI foi uma adoção muito importante para a evolução das redes de computadores.

segunda-feira, 7 de abril de 2014

A importância do sistema operacional para o bom funcionamento da máquina

       Difícil imaginar o funcionamento de um computador sem a existência de um Sistema Operacional. É extremamente relevante sua importância para que a máquina funcione de modo eficaz e seguro. O Sistema Operacional é como um gestor do computador organizando a execução dos aplicativos, alocando espaço em memória para a execução dos programas, gerenciando a disputa de recursos, tratando o envio e recebimento de dados dos usuários com a máquina dentre outras funções importantes. 
       Além do mais funciona como um intermediário entre o usuário e hardware do computador escondendo detalhes internos de funcionamento permitindo um trabalho mais eficiente e com menos erros ao usuário. Uma de suas funções que merece destaque é o controle da execução de tarefas concorrentes em que um programa só tem acesso a um recurso depois da intermediação e autorização do Sistema Operacional. Tarefas sendo executadas concorrentemente permite a diminuição de custos na medida em que mais de um usuário utiliza as mesmas funcionalidades. 
        Um computador sem Sistema Operacional iria requerer do usuário completo entendimento da máquina (hardware) o que dificultaria o seu uso devido as complexidades de funcionamento. O Sistema Operacional surgiu pra tornar a interação do usuário com o computador mais simples...

A utilização do software livre do ponto de vista da economia de recursos para o governo

         A utilização de softwares livre pelo governo como forma de economizar recursos tem efeito positivo já que estes podem ser empregados em outras áreas que precisam de melhorias. Um software livre é um programa que pode ter seu código alterado por qualquer pessoa, desde que possua conhecimento suficiente para tal, e não exige o pagamento de licença para distribuição assim não implica pagamento para seu uso. Quem o tiver pode usar, copiar, alterar e distribuir sem precisar de autorização. 
         O governo adotando softwares livre além de ganhar com a economia de recursos, ganha com a profissionalização das pessoas pois para alterá-los e adequá-los a uma necessidade específica precisa de mão-de-obra qualificada e com conhecimentos técnicos suficientes para correção em casos de falhas. Outro fator positivo é a questão da segurança, já que grande parte dos softwares livres são menos visados por vírus e/ou programas maliciosos. Caso um funcionário de alguma repartição pública deseja fazer uso de um software livre no lugar de um pago, deve verificar se ele atende as necessidades do dia-a-dia do trabalho e se é eficiente na realização das tarefas. 
       Apesar de livres, alguns softwares não apresentam interfaces intuitivas e têm o processo de instalação complicado. Uma vantagem dos softwares livres é que pode achar um para realização de qualquer tarefa que um software pago faz como edição de texto, edição de planilha, edição de áudio e imagens, banco de dados, servidor web dentre outras. Alguns têm eficiência até maior que um software pago...

Vantagens e Desvantagens dos Modelos de Processo de Desenvolvimento de Software

Modelos de Processo by luiscsj

quinta-feira, 3 de abril de 2014

PERSISTÊNCIA DE DADOS

          O termo persistência refere-se ao armazenado não temporário de determinado dado gerado ou trabalhado em uma aplicação. A orientação a objetos rompeu com a orientação estruturada e isso trouxe diversas vantagens para a programação. A abordagem estruturada trabalhava os sistemas com bases nos dados e funções. Os subsistemas funcionavam de forma independente e não era adequada para problemas mais complexos pois tinha baixa produtividade. A abordagem orientada a objetos trabalha com sistemas levando em consideração os objetos e suas interações. Permite mecanismos de produtividade não oferecidos pela abordagem estruturada como herança, polimorfismo e encapsulamento.
         O nível de abstração com a OO cresceu bastante pois as particularidades dos objetos ficaram mais fáceis de serem percebidas e suas características puderam ser também ser mais facilmente implementada. Os sistemas gerenciam as informações não mais como subsistemas independentes mas como objetos inter-relacionados. As informações geradas por esses sistemas são estruturadas em banco de dados relacionais que são feitos a partir de diagramas que ajudam na elaboração de toda a sua estrutura sem que nenhum detalhe passe despercebido. 
         Com o tempo foram surgindo diversas tecnologias e padrões que facilitaram o processo de acesso e persistência das informações geradas pelos sistemas. Os Sistemas Gerenciadores de Banco de Dados Relacionais são exemplos marcantes da evolução na persistência de dados. Junto com os SGBDRs vieram os frameworks que ajudam bastante os programadores pois já trazem muitas funções prontas para o armazenamento de informações possibilitando a eles dedicação maior de como o modelo dos dados serão construídos.
          A crescente demanda pela sociedade por informações na internet tem levado diversas empresas a construírem tecnologias de armazenamento mais ágeis e robustas que proporcionam persistência de forma eficiente e com alto desempenho. Dependendo da aplicação a ser desenvolvida, pode-se encontrar o modelo mais apropriado para o armazenamento em questão.

ANÁLISE DE SISTEMAS : COMO GARANTIR A QUALIDADE DE UM SISTEMA?

          Análise de Sistema consiste em detalhar, especificar e estudar um problema acerca de um sistema a ser desenvolvido e implantado para automatizar determinado processo (ou processos). Qualquer organização possui um sistema para gerenciamento de tudo o que ocorre em seu ambiente. Esse sistema deve ser construído com determinada qualidade para que atenda ao objetivo para o qual foi idealizado. A importância da análise consiste em fornecer mecanismos necessários para abstrair em todos os aspectos um problema que determinado sistema a ser desenvolvido deva resolver. Se as funções deste sistema não forem analisadas de forma satisfatória, ele não atenderá aos requisitos de qualidade.
          A melhor forma para garantirmos um sistema de qualidade é analisar de forma cuidadosa todas as funções e restrições que esse sistema deve ter. Chamamos de requisito os detalhes a serem implementados em um sistema. Se os requisitos forem especificados de forma incorreta, todos as demais etapas de construção do sistema ocorrerão com erros e na fase final ele não atenderá aos objetivos. 
           O responsável por extrair os requisitos deve ter conhecimento do domínio no qual o sistema implantado. Deve usar técnicas como entrevista, brainstorming, etnografia e outras demais que possam esclarecer as funções e restrições do sistema final. Se uma boa análise dos requisitos for feita o sistema será de fácil compreensão, operação e também fácil para realizar sua manutenção.