0 FUNDAÇÃO DE ENSINO EURÍPIDES SOARES DA ROCHA CENTRO UNIVERSITÁRIO “EURÍPIDES DE MARÍLIA” – UNIVEM CURSO DE ADMINISTRAÇÃO DE EMPRESAS COM HABILITAÇÃO EM ANÁLISE DE SISTEMAS BRUNO CÉSAR LOPES TRECENTI UM ESTUDO SOBRE REDES WIRELESS NO DESENVOLVIMENTO DE UM SISTEMA. MARÍLIA 2007 1 BRUNO CÉSAR LOPES TRECENTI UM ESTUDO SOBRE REDES WIRELESS NO DESENVOLVIMENTO DE UM SISTEMA. Trabalho de conclusão de curso apresentado ao Curso de Administração de Empresas com Habilitação em Análise de Sistemas do Centro Universitário Eurípides de Marilia, mantido pela Fundação de Ensino Eurípides Soares da Rocha, para obtenção do Título de Bacharel em Administração de Empresas com Habilitação em Análise de Sistemas. Orientador: Professor Ms. Ricardo Petruzza do Prado MARÍLIA 2007 2 3 A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original. (Albert Einstein) 4 TRECENTI, Bruno César L.. UM ESTUDO SOBRE REDES WIRELESS NO DESENVOLVIMENTO DE UM SISTEMA. 2007. 69 f. Trabalho de Conclusão de Curso (Bacharel em Administração de Empresas com habilitação em Análise de Sistemas) – Centro Universitário Eurípides de Marília, Fundação de Ensino Eurípides Soares da Rocha, Marília, 2007. RESUMO Este estudo buscou identificar e explorar os padrões IEEE 802.3; 802.11 e 802.16 – conhecidos respectivamente como Ethernet, Wireless LAN (Wi-fi) e Wi-Max, demonstrando suas características e refletindo-as na engenharia de software como uma variável que permite a abertura de novos horizontes para o desenvolvimento de software. Palavras Chave: Redes, Wireless, Engenharia de Software. 5 TRECENTI, Bruno César L.. UM ESTUDO SOBRE REDES WIRELESS NO DESENVOLVIMENTO DE UM SISTEMA. 2007. 69 f. Trabalho de Conclusão de Curso (Bacharel em Administração de Empresas, habilitado em Análise de Sistemas) – Centro Universitário Eurípides de Marília, Fundação de Ensino Eurípides Soares da Rocha, Marília, 2007. ABSTRACT This study sought to identify and exploit the IEEE 802.3; 802.11 and 802.16 standards, respectively known as Ethernet, Wireless LAN (Wi-fi) and Wi-Max, demonstrating its features and reflecting them in engineering software such as a variable that allows the opening of new horizons for the development of software. Keywords: Network, Wireless¸ Software Engineering. 6 LISTA DE ILUSTRAÇÕES Figura 1.1: Modelo Cliente Servidor .................................................................................... 17 Figura 1.2: Modelo Cliente Servidor .................................................................................... 18 Figura 1.3 Aparelho Roteador D-Link WBR-2310. ............................................................. 22 Figura 1.4 Aparelho Switch D-Link DES-1024D ................................................................ 23 Figura 1.5 Exemplo de uma rede Broadcast. ........................................................................ 26 Figura 1.6 Exemplo de uma rede Multicast .......................................................................... 27 Figura 1.7 Rede Ponto a Ponto ............................................................................................. 27 Figura 1.8 Rede em Anel ...................................................................................................... 28 Figura 1.9 Rede em Estrela................................................................................................... 28 Figura 1.10 Rede Hierárquica. .............................................................................................. 29 Figura 1.11 Rede Distribuída................................................................................................ 30 Figura 2.1 Modelo em Cascata ............................................................................................. 49 Figura 2.2 Modelo de desenvolvimento evolucionário ........................................................ 50 Figura 2.3 Camadas da aplicação. ........................................................................................ 57 Figura 2.4 Arquitetura cliente-servidor de três camadas. ..................................................... 59 Figura 2.5 Arquitetura de objetos distribuídos. .................................................................... 61 7 LISTA DE TABELAS Tabela 1.1 Classificação de processadores interconectados por escala................................ 25 Tabela 1.2 Os modelos de Referência OSI e TCP/IP ........................................................... 37 Tabela 1.3 Protocolos e Redes no modelo TCP/IP ............................................................... 38 Tabela 1.4 Os Tipos mais comuns de cabeamento Ethernet ................................................ 39 Tabela 2.1 Especificação de requisitos de sistema utilizando um formulário padrão. ......... 53 Tabela 3.1 Métricas para especificação de requisitos não funcionais. ................................. 66 8 LISTA DE ABREVIATURAS E SIGLAS CORBA: Common Object Request Broker Architecture DCOM: Distributed Component Object Model DEC: Digital Equipment Corporation DSSS: Direct Sequence Spread Spectrum ERP: Enterprises Resources Planning FTP: File Transfer Protocol FHSS: Frequency Hopping Spread Spectrum HTTP: Hyper Text Transfer Protocol IEEE: Institute of Electrical and Electronics Engineers IP: Internet Protocol ISM: Industrial, Scientific, Medical (Bandas de Radiofreqüência) LAN: Local Area Network LLC: Logical Link Control MAC: Medium Access Control MAN: Metropolitan Area Network Mbps: Mega Bytes por segundo Mhz: Megahertz PAN: Personal Area Network OFDM: Orthogonal Frequency Division Multiplexing OSI: Open Systems Interconnection SMTP: Simple Mail Transfer Protocol TCP: Transmissão de Controle de Protocolo orientado a Conexão UDP: Protocolo de Transmissão não orientado a Conexão 9 WAN: Wide Area Network WAP: Wireless Internet Protocol Wi-Fi: Wireless Fidelity Wi-Max: Worldwide Interoperability for Microwave Access WLAN: Wireless Local Area Networks WWW: World Wide Web. 10 SUMÁRIO INTRODUÇÃO .................................................................................................................... 12 CAPÍTULO 1 - REDES ....................................................................................................... 14 1.1. Redes de Comunicação .............................................................................................. 14 1.2. Redes de Computadores ............................................................................................ 15 1.2.1. Aplicações comerciais ........................................................................................... 16 1.2.2. Aplicações Domésticas e Lazer ............................................................................. 18 1.2.3. Usuários móveis ..................................................................................................... 20 1.3. Hardware e Tipos de Rede......................................................................................... 21 1.3.1. Emissores e Receptores ......................................................................................... 21 1.3.2. Meios de Transmissão ........................................................................................... 23 1.3.3. Tipos de Redes ....................................................................................................... 24 1.3.4. Topologia das Redes. ............................................................................................. 25 1.3.5. Redes Locais .......................................................................................................... 30 1.3.6. Redes Metropolitanas ............................................................................................ 31 1.3.7. Redes Geograficamente Distribuídas..................................................................... 32 1.4. Modelos de Referências e Camadas .......................................................................... 32 1.4.1. Hierarquia de protocolos ........................................................................................ 33 1.4.2. Tipos de Serviços ................................................................................................... 33 1.4.3. Modelo OSI............................................................................................................ 35 1.4.3.1. Camada Física .................................................................................................... 35 1.4.3.2. Camada de Enlace de Dados .............................................................................. 35 1.4.3.3. Camada de Rede ................................................................................................. 36 1.4.3.4. Camada de Transporte ........................................................................................ 36 1.4.3.5. Camada de Sessão .............................................................................................. 36 1.4.3.6. Camada de Apresentação ................................................................................... 37 1.4.3.7. Camada de Aplicação ......................................................................................... 37 1.4.4. Modelo de referência TCP/IP ................................................................................ 37 1.4.4.1. Camada Host/Rede ............................................................................................. 38 1.4.4.1.1. Ethernet ........................................................................................................... 39 1.4.4.2. Camada de Rede ................................................................................................. 40 1.4.4.3. Camada de Transporte ........................................................................................ 41 1.4.4.4. Camada de Aplicação ......................................................................................... 42 1.4.5. Arquitetura IEEE 802 ............................................................................................ 42 1.4.5.1. Medium Access Control (MAC) ........................................................................ 42 1.4.5.2. Logical Link Control (LLC) ............................................................................... 43 1.5. Redes Wireless .......................................................................................................... 43 11 CAPÍTULO 2 - DESENVOLVIMENTO DE SOFTWARE................................................ 47 2.1. Engenharia de Software ............................................................................................. 47 2.2. Modelos de Processos de Software ........................................................................... 48 2.2.1. Modelo Cascata...................................................................................................... 48 2.2.2. Modelo de Desenvolvimento Evolucionário ......................................................... 49 2.3. Especificação ............................................................................................................. 50 2.3.1. Estudo de viabilidade ............................................................................................. 51 2.3.2. Requisitos............................................................................................................... 51 2.3.2.1. Requisitos de Sistema......................................................................................... 52 2.4. Projeto e Desenvolvimento........................................................................................ 54 2.4.1. Projeto de Arquitetura ............................................................................................ 55 2.4.1.1. Arquitetura de sistemas distribuídos .................................................................. 56 2.4.1.1.1. Arquiteturas de cliente-servidor ..................................................................... 57 2.4.1.1.2. Arquiteturas de objetos distribuídos. .............................................................. 59 2.5. Validação e Evolução ................................................................................................ 61 CAPÍTULO 3 - WIRELESS E O DESENVOLVIMENTO DE SOFTWARE............................. 63 3.1. Visão geral ................................................................................................................. 63 3.2. Wireless e o processo de especificação de software.................................................. 63 3.3. Wireless no desenvolvimento e arquitetura de software ........................................... 66 CONCLUSÕES .................................................................................................................... 68 REFERÊNCIAS ................................................................................................................... 70 12 INTRODUÇÃO Atualmente, com a realidade da globalização, nota-se uma grande evolução na utilização de meios de comunicação mais ágeis, seguros e eficientes, como celulares, internet, rádio freqüência, etc. Entretanto o meio de comunicação cuja demanda está em ascensão atualmente são as Redes Wireless. Uma Rede de Comunicação pode ser definida como a utilização de um meio físico para conectar dois ou mais componentes de um grupo. Transferindo este conceito para área de informática uma rede pode utilizar de fios, cabos, radiofreqüência, para fazer a comunicação entre dois ou mais computadores de um grupo. Wireless é um termo inglês e sua tradução é justamente sua característica, ou seja, a não utilização de fios para transmissão de informações entre o grupo. Uma rede desse tipo utiliza-se de transmissores e receptores, que são capazes de emitir e receber ondas de radiofreqüência, para efetuar a comunicação entre os diversos computadores do grupo. Podese notar dentro dessa tecnologia diversas variações que influenciam principalmente em: área de cobertura, velocidade da conexão, e segurança; e implementam diferentes métodos para transmissão de dados como: Bluetooth, Radiofreqüência e Infravermelho. Tendo em vista essa tecnologia emergente e sua grande presença no mercado atual, esse projeto identifica e caracteriza as diferentes possibilidades de utilização de redes Wireless no desenvolvimento de um software, destacando principalmente as diferenças e semelhanças, em todo o processo, em relação a uma rede de fios convencional (Par-trançado). O projeto também define as referidas redes sem fio de acordo com os padrões da IEEE, assim possibilitando também uma análise técnica de suas características e funcionalidades, e como elas interferem no desenvolvimento de software. 13 Como o objetivo do projeto é identificar as influências de uma rede sem fio em um software, este descreve ainda todas as fases do desenvolvimento de software, bem como as dos diversos processos. 14 CAPÍTULO 1 - REDES 1.1. Redes de Comunicação A comunicação é um avanço tecnológico da humanidade que contribui para a melhoria das interações sociais, a partir da escrita o homem pôde comunicar-se e assim agilizar e facilitar as atividades desenvolvidas de acordo com sua necessidade. Além disso, a comunicação permitiu a criação de regras e doutrinas a serem seguidas pelos integrantes da sociedade. A comunicação em geral envolve vários elementos básicos: o emissor, o receptor, a mensagem, o canal e o meio de comunicação, esses elementos são as variáveis da comunicação que está a ser transmitida em um determinado ambiente. A rede de comunicação de um grupo é na verdade varias comunicações estabelecidas entre um receptor e um emissor, através de um canal em certo meio de comunicação. Podemos observar as primeiras redes de comunicação desde a Idade Antiga 4.000 a.C. onde as sociedades, em um mesmo grupo, se comunicavam através de mensageiros. Essa tecnologia foi sendo aprimorada juntamente com a escrita devido ao grande crescimento da população mundial as expansões marítimas e a dispersão de diversas comunidades pelo mundo, criou a demanda de um meio de comunicação mais ágil e eficaz, pois muitas vezes a mensagem não chegava ao receptor, ou chegava com ruídos ou incompleta, comprometendo a comunicação. A posterior invenção do telégrafo elétrico, do rádio, do televisor e do telefone para suprir essa crescente demanda criada pelas necessidades sociais e por necessidades surgidas nas guerras, foi um importante avanço na comunicação à distância o que deu origem a várias redes de comunicação em escala global. 15 Entretanto o nascimento e crescimento da indústria de informática foi o avanço tecnológico que impactou as redes de comunicação. Conforme cita Tanenbaum (2003): O século XVII foi a época dos grandes sistemas mecânicos [...] O século XIX foi a era das máquinas a vapor [...] As principais conquistas do século XX se deram no campo da aquisição, do processamento e da distribuição das informações. Entre outros desenvolvimentos, [...] o nascimento e criação sem precedentes da indústria da informática e o lançamento de satélites de comunicação. Assim os computadores criaram uma enorme facilidade na manutenção das informações, obviamente cresceu também o volume dessas informações o que levou a demanda de um meio de comunicação mais eficiente e de um processamento de informações mais avançado. Contudo essas tecnologias tiveram um rápido avanço e em menos de 20 anos havia milhares de computadores espalhados pelo mundo, sendo eles utilizados para fins comerciais, industriais, e lazer. Em uma empresa, antigamente a utilização do computador era restrita a uma pessoa por vez, executando apenas um processo, atualmente devido ao advento das Redes de Comunicação um mesmo processo pode ser efetuado por vários computadores interconectados e diferentes pessoas. Essa nova estrutura e as Redes de Comunicação, que vamos citar por Redes de Computadores, são o objeto de estudo e aplicação no desenvolvimento de um software. 1.2. Redes de Computadores As redes de computadores como citado anteriormente pode ter diversas funcionalidades e finalidades, ou seja, podemos utilizá-las para diversos fins como: comercial 16 e industrial, doméstico e lazer, cada qual com suas especificidades e características mencionadas abaixo. 1.2.1. Aplicações comerciais A quantidade de informações necessárias para o funcionamento de uma empresa é muito grande quando pensamos em transcrevê-las em papéis e documentos físicos, este aspecto nas empresas foi um fator crítico para globalização e para a utilização de computadores no processamento de informações. Hoje se percebe um grande numero de computadores dentro das empresas com esta finalidade, entretanto essa informação não tem valor algum se tratada individualmente, e nesse ponto surgiu a necessidade de criar um grupo interconectado de computadores para o processamento dessas informações. A correlação entre esses computadores permitiu o compartilhamento de recursos e criação de uma empresa informatizada, agilizando todos os processos sejam eles processos físicos como: impressoras, scanners, etc. ou de informações como registros de clientes, produtos, etc. Esse avanço permitiu a integração das diversas áreas da administração de empresas com a informática permitindo a empresa um ganho excepcional em eficiência e agilidade, com esse objetivo, empresas de desenvolvimento de software criaram sistemas que integram todas as áreas e processos da empresa, um sistema que implementa o modelo cliente servidor, ou seja, um servidor de informações ou de aplicações que pode ser acessado por diversos clientes, assim todos os integrantes das diversas áreas da empresa tinham comum acesso as informações de todas as áreas. Um exemplo do modelo cliente servidor convencional pode ser observado na Figura 1.1: 17 Figura 1.1: Modelo Cliente Servidor Fonte: http://www.fccn.pt/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=425&M MN_position=208:5. Acessado em 18/09/2007 O modelo cliente servidor basicamente efetua uma transferência, entre o emissor e o receptor, da mensagem, por exemplo, o cliente envia uma solicitação para o servidor através da rede, este processa a solicitação e devolve uma resposta para o cliente. Nesse caso, como podemos observar na Figura 1.2, temos duas comunicações uma na direção cliente – servidor e outra na direção servidor – cliente onde cada um são respectivamente emissor e receptor em cada transação. 18 Figura 1.2: Modelo Cliente Servidor Fonte: Adaptada de: http://www.fccn.pt/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=425&M MN_position=208:5. Acessado em 18/09/2007 A partir do modelo cliente servidor essas empresas criaram software como o Enterprises Resources Planning (ERP), que são responsáveis por controlar, fazer manutenção e planejar todos os recursos físicos e de informação da empresa através do modelo cliente servidor com um potencial banco de dados. A importância de uma rede em um sistema ERP está descrita no capitulo 3, bem como as técnicas de implementação de uma rede cliente servidor, ou seja, LANs, MANs, WANs e suas topologias: anel, ponto a ponto, difusão, barramento, malha e estrela. 1.2.2. Aplicações Domésticas e Lazer As redes não são somente uma interação entre os computadores de uma empresa, mas pode também abranger metrópoles, e ser até uma rede mundial, com todo esse potencial surgiu a World Wide Web (WWW) que tem âmbito mundial e funciona como uma rede convencional, as pessoas têm acesso a informações de todo o mundo a partir de seus computadores pessoais. 19 Além disso, pode ser utilizado para a comunicação informal entre grupos de pessoas como nos chats abertos ou chats privados, como exemplo o MSN Messenger sistema de mensagens instantâneo ou o Internet Relay Chat (IRC), e mais recentemente através de recursos audiovisuais com a criação do Voice Internet Protocol (VoIP), que implementa um sistema para áudio-conferência através da internet. As redes estão presentes também nos sistemas de e-mail também é de grande utilidade não somente doméstica, mas comercial também, é um sistema capaz de enviar e receber correspondências com pessoas de todo o mundo com diversos recursos audiovisuais. Podemos também citar o uso de redes para entretenimento através de jogos interativos onde jogadores compartilham através da internet o mesmo jogo, competindo com diversos jogadores de todo o mundo. Um dos jogos mais bem sucedidos da atualidade é o Counter-Strike da produtora Valve, que simula em um ambiente urbano ataques terroristas e a repressão dele com forças militares, um jogo típico de tiro em terceira dimensão e multiplayer, para vários jogadores através de uma rede. Há também outras opções de jogos com capacidade para até cinco mil jogadores simultaneamente, são os chamados massively multiplayer on-line games ou MMOG ou ainda MMO, geralmente são jogos de Role Playing Game (RPG) que simulam uma história desenvolvida pelo personagem (jogador) dentro de um mundo virtual. Um exemplo desse tipo de jogo é o World of Warcraft da produtora Blizzard e o Second Life da Liden Research, que implementam um mundo virtual cheio de possibilidades e de variações. Além disso, podemos citar o uso da internet para compras e comércio de mercadorias, assim abrindo um enorme leque de possibilidades para as empresas expandirem seus negócios e facilitando a vida de compradores. 20 Tanenbaum (2003) cita alguns dos usos mais populares da internet para usuários domésticos: Acesso a informações remotas, comunicação entre pessoas, entretenimento interativo e comércio eletrônico. Um dos adventos da utilização doméstica de redes foi o surgimento de diversas redes não hierárquicas para compartilhamento de informações, ou seja, não existem conexões cliente-servidor fixas e cada usuário pode ter acesso as informações de outro usuário. Esse fato possibilitou as conexões diretas mais conhecidas por suas abreviações como Peer-to-Peer (P2P), Business-to-Business (B2B), etc. e também a circulação ilegal de musicas e vídeos sem direitos autorais. 1.2.3. Usuários móveis As redes de computadores, não são somente aquelas redes interligadas por fio como vimos anteriormente, elas implementam também a tecnologia wireless, sem fio ou o padrão IEEE 802.11, possibilitando assim a conexão de usuários moveis como notebooks, Personal Digital Assistants (PDA) e quaisquer aparelhos eletrônicos móveis com conectividade a uma rede local ou global. Uma pessoa que possui um notebook pessoal pode acessar a internet ou a rede interna de sua empresa com seu próprio equipamento apenas utilizando a tecnologia wireless. Entretanto nem toda rede sem é móvel e nem toda rede móvel é sem fio, observe que um computador do tipo desktop pode estar conectado a uma rede sem fio através de um roteador wireless (rede sem fio imóvel) e um notebook quando utilizado em um hotel através de uma rede conectada via fio telefônico (rede com fio móvel). 21 Nota-se atualmente a presença de redes também nos celulares mais recentes que implementam a tecnologia Wireless Application Protocol (WAP), pode-se com essa tecnologia ter acesso a contas de banco, e-mail, chats, e sites da internet em geral através do celular. Além dessa rede celulares também implementam a tecnologia Bluetooth, que implementa o padrão IEEE 802.11b e também presente nos padrões 802.15(Wireless PANs) e 802.16(Wireless MANs). O Bluetooth citado acima é uma das redes em ascensão no mercado mundial, algumas das redes sem fio para escritório e residenciais já utilizam dessa tecnologia. 1.3. Hardware e Tipos de Rede As redes podem ser constituídas de diversas tecnologias para a emissão, recepção fluxo e segurança das informações, em função disso dispõem-se também diversas formas de estruturação do grupo ou dos grupos constituintes em uma rede. Essa estruturação facilita o fluxo da informação e agiliza o processo de difusão da rede. 1.3.1. Emissores e Receptores Os emissores e receptores de rede normalmente são implementados em um único aparelho, e normalmente implementa-se uma única tecnologia como o padrão IEEE 802.3 Ethernet para conexões em redes locais com fio, entretanto não é difícil encontrar atualmente aparelhos que implementam duas ou mais tecnologias como a Ethernet e Wireless. Um exemplo desse aparelho e o roteador D-Link modelo WBR-2310, apresentado na Figura 1.3, que implementa quatro padrões IEEE: 802.11g, 802.11b, 802.3 e 802.3u. 22 Figura 1.3 Aparelho Roteador D-Link WBR-2310. Fonte: http://www.dlink.com/products/?sec=0&pid=470. Acessado em 17/09/2007 Para computadores em uma rede convencional, utilizam-se o padrão IEEE 802.3 que geralmente é implementado juntamente com a placa-mãe dos computadores, quando não este pode ser adaptado através de uma placa de rede que utiliza o mesmo padrão. Em uma rede de pequeno porte, a conexão entre os computadores pode ser configurada de modo a ser intermediada por um aparelho chamado Hub que facilita distribuição da rede, esse aparelho interconecta dois ou mais computadores, entretanto não é muito eficiente pois permite o tráfego interno de uma conexão por vez. Em redes de grande porte não convém a utilização de um Hub já que este prejudica a velocidade de conexão, contudo um outro aparelho chamado Switch, como ilustra a Figura 1.4, possui a mesma função de um Hub entretanto o Switch faz com que cada conexão nele seja independente, segmentada, e assim evita colisões de dados e a espera por uma conexão, podendo ser chamado também de comutador. 23 Figura 1.4 Aparelho Switch D-Link DES-1024D Fonte: http://www.dlink.com/products/?sec=0&pid=75. Acessado em 17/09/2007 1.3.2. Meios de Transmissão Os meios de transmissão podem ser: guiados ou sem fio. Para transmissão guiada temos: Meios magnéticos (Fita Cassete, DVD); Cabo de Par Trançado (Diversos fios traçados em pares); Cabo coaxial (Fio único com camadas de proteção); Fibra ótica (Fio com proteção refletora da luz). Transmissão sem fio: Transmissão de radio; Transmissão de Microondas; Transmissão por ondas de infravermelho; Transmissão por ondas de Luz. 24 1.3.3. Tipos de Redes As redes podem estar dispostas de diversas formas sem uma regra geral, entretanto existem algumas distribuições que são mais adequadas a uma determinada situação ou disposição física existente. Em função disso Tanenbaum (2003) cita que: Não existe nenhuma taxonomia de aceitação geral na qual todas as redes de computadores possam ser classificadas, mas duas dimensões se destacam das demais: a tecnologia de transmissão e a escala. Assim temos que as redes dispõem-se atualmente de duas formas: Difusão; Ponto a Ponto. Em um sistema por difusão temos que a mensagem é divulgada em um canal para todos os integrantes da rede, essas mensagens contém um campo de endereçamento que contém o destino da mensagem, entretanto a mensagem não muda seu caminho de acordo com o destino. Na realidade ela é distribuída a todos da rede e apenas aqueles que estão citados no endereço podem recebê-la. Esse método é também conhecido como broadcasting. As redes de pequeno porte geralmente são redes multicasting devido a sua alta versatilidade e simplicidade, entretanto redes com um grande número de integrantes tendem a seguir outro método o ponto a ponto ou unicasting. O unicasting consiste em várias conexões entre dois computadores, um pacote tem que passar por diversas máquinas até chega seu destino e não necessariamente precisa dirigir-se a todas elas, geralmente pacotes seguem o caminho mais rápido os quais são calculados entre os receptores e emissores por roteadores. Segundo Tanenbaum (2003) outro método de analisar as redes é através de sua escala, veja a Tabela 1.1 a seguir: 25 Tabela 1.1 Classificação de processadores interconectados por escala Distância entre Processadores Processadores Localizados no(a) mesmo(a) Exemplo 1 metro Metro quadrado Rede Pessoal 10 metros Sala 100 metros Edifício 1 quilometro Campus 10 quilômetros Cidade 100 quilômetros País 1.000 quilômetros Continente 10.000 quilômetros Planeta Rede Local Rede Metropolitana Rede Ortograficamente distribuída A Internet Fonte: Redes de computadores, Tanenbaum (2003) 1.3.4. Topologia das Redes. A topologia regra as distribuições físicas de uma rede de acordo com suas necessidades e funcionalidades. Assim dispõe Tauroco (1977, p.46): A topologia da rede depende do projeto das operações, da confiabilidade e do custo operacional da rede... Ao planejar uma rede muitos fatores devem ser considerados na escolha da topologia mais adequada. Esses fatores dependem de: quais e quantos computadores terão acesso à rede, qual a disposição física desses computadores, quais operações utilizaram a rede, a rede se conectará com outras. Além disso, um fator determinante da topologia é o tipo de rede: difusão ou ponto a ponto, entretanto não podemos dizer que as topologias apresentadas a seguir são únicas ou 26 regras gerais, elas podem assumir infinitas formas de acordo com a necessidade, entretanto as que aqui apresento são as principais e mais utilizadas devido a sua versatilidade. As estruturas básicas são de ponto a ponto e por difusão, existem também topologias mistas formando redes mais complexas como: as redes do tipo estrela, hierárquica, em anel e as redes distribuídas. Uma rede onde os pacotes (mensagens) são comumente difundidos, ou seja, para todos os integrantes do grupo, é definida como broadcasting, banda-larga ou multiponto, como ilustra a Figura 1.5: Figura 1.5 Exemplo de uma rede Broadcast. Fonte: http://www.wildpackets.com/images/compendium/epnx_broadcast.gif. 17/09/2007 Acessado em Ainda citando broadcasting, pode-se observar a difusão da mensagem de uma forma diferente, ou seja, com destinatários identificados, esse método recebe outro nome multicasting, onde o destinatário pode ser um ou um grupo de integrantes da rede. Um exemplo dessa topologia de rede pode ser observado na Figura 1.6: 27 Figura 1.6 Exemplo de uma rede Multicast Fonte: http://www.gamedev.net/reference/programming/features/multicast/diagram3.jpg Uma rede ponto a ponto, ilustrada na Figura 1.7, é o tipo mais simples de conexão que pode ser feita entre dois computadores, consiste em uma conexão única e direta, pode utilizarse de um cabo de par trançado, fibra ótica ou de redes sem fio: Bluetooth e Infravermelho, basicamente aceita todos os meios de transmissão por ser a mais simples. Figura 1.7 Rede Ponto a Ponto Fonte: http://www.uem.mz/chess/imagens/rede5c.jpg. Acessado em 17/09/2007 Uma rede ponto a ponto pode-se estender em diversas formas e tamanhos, sempre havendo a conexão entre dois computadores diretamente, duas topologias destacam-se nesse caso: A topologia do anel consiste em efetivar a conexão dos computadores de modo com que forme um ciclo fechado entre eles, tendo assim a forma de um anel, é uma estrutura versátil, entretanto pode não eficaz caso haja uma falha em dois pontos da conexão, o que 28 pode comprometer em parte ou por completo a rede, podemos observar um exemplo dessa topologia na Figura 1.8: Figura 1.8 Rede em Anel Fonte: http://www.apena.rcts.pt/cform/cursos2001/internet1/paginas3/Image25.gif, acessado em 17/09/2007 Uma topologia muito utilizada durante a fase de crescimento das redes nas empresas foi a rede em estrela, apresentada na Figura 1.9, onde todos os computadores tem acesso ao computador central. Figura 1.9 Rede em Estrela Fonte: http://upload.wikimedia.org/wikipedia/gl/thumb/1/1c/Topolox%C3%ADa_en_estrela.png/180pxTopolox%C3%ADa_en_estrela.png . Acessado em 08/10/2007. Essa topologia foi substituída posteriormente por uma mais adequada à utilização de computadores em redes nas empresas, que com o passar do tempo cresceu exponencialmente e devido a esse crescimento a utilização de uma rede mais eficaz se tornou um fator chave para agilidade e versatilidade dos processos. 29 As redes hierárquicas fizeram esse papel de substituto das antigas redes em estrela, tendo assim um maior controle dos usuários. Esse processo foi muito utilizado, conforme cita Tarouco (1977, p.49), para supervisão de processos em real-time. Pode-se dizer que a utilização dessa topologia contribui também para a utilização do sistema ERP, facilitando o controle dos usuários, a qual é uma característica chave desse sistema. Pode-se observar um exemplo dessa topologia na Figura 1.10: Figura 1.10 Rede Hierárquica. Fonte: http://www.microsoft.com/brasil/pequenasempresas/images/sgc/sus_2_0_overview_03.jpg. Acessado em 17/09/2007. Todas essas topologias se fundiram em uma com o advento da internet e a World Wide Web (WWW), originando as redes distribuídas uma das maiores e mais utilizadas redes mundialmente, a vantagem de uma rede desse tipo é que sua conexão raramente pode ser interrompida já que oferece diversos caminhos para um mesmo ponto. Por isso também sua implementação foi um sucesso para a internet, como mostra a Figura 1.11. 30 Figura 1.11 Rede Distribuída. Fonte: http://www.sonicguard.com/Media/gatewaydiagram.jpg, Acessado em 08/10/2007. As redes wireless podem assumir diferentes topologias dependendo do seu uso e funcionalidade, segundo Tanenbaum (2003): o padrão 802.11 da IEEE poderia funcionar em dois modos, na presença de uma estação-base ou na ausência de uma estação base, isso implica que: quando essa rede disponibilizar de uma estação base os computadores estariam conectados via difusão ou broadcasting, e quando não eles se comunicariam entre si formando uma rede ponto a ponto. Essa flexibilidade que a torna a tecnologia atual de maior importância para o mundo da informática. 1.3.5. Redes Locais A definição de uma rede local é uma característica subjetiva que depende da percepção de tamanho de cada, por exemplo, a distancia de um quilômetro pode não significar local para uma pessoa e pode se muito perto para outra, entretanto Tanenbaum (2003) define 31 redes locais como sendo “redes privadas contidas em um único edifício ou campus universitário com até alguns quilômetros de extensão”. Uma rede local também pode ser definida com uma rede privada onde somente os integrantes previamente autorizados podem ter acesso a ela, por ser uma rede local um termo usual lhe é conferido LAN acrônimo do inglês Local Area Network. Geralmente as redes locais são conectadas por difusão através de cabos, geralmente os cabos de par trançado, que permitem uma conexão que varia de 10 Mbps a 100 Mbps, entretanto há redes com maiores velocidades de conexão como 1 Gbps a 10 Gbps, e justamente por serem composta de fios são limitadas as distancias de conexão entre os pares de computadores. Atualmente com o advento da tecnologia wireless as redes locais estão migrando para essa nova tecnologia passando a implantá-la, entre os diversos benefícios físicos que esta apresenta os mais importantes são a velocidade que pode variar entre 11 Mbps a 54 Mbps e a ausência de fios. O alcance das redes sem fio locais varia entre 50 metros com o aparelho cercado por paredes ou obstáculos e 500 metros ao ar livre sem nenhum obstáculo. 1.3.6. Redes Metropolitanas Redes metropolitanas assim como as redes locais também dependem da percepção de cada pessoa sobre seu tamanho, entretanto podemos dizer que uma rede metropolitana como o próprio nome sugere é uma rede que abrange uma metrópole ou uma cidade. Redes de televisão a cabo, estações de rádio são exemplos práticos dessa tecnologia. As redes metropolitanas ou MAN geralmente são redes de difusão ou broadcasting atualmente estas redes não se restringem apenas a redes de TV ou rádio, fornecendo também 32 conexão para internet mais conhecida como conexão de “banda larga”, e hoje se observa também esse mesmo serviço, porém wireless. 1.3.7. Redes Geograficamente Distribuídas Wide Area Network (WAN) esse é o termo para denominar redes que abrangem uma região geograficamente distribuída, geralmente um continente ou país. Essas redes geralmente utilizam a topologia de redes distribuídas, onde se observa diversas redes e algumas sub-redes interligando-as, as redes são compostas por computadores normalmente denominados hosts e a sub-rede de servidores e roteadores que direcionam, encaminham e gerenciam as mensagens transmitidas. Normalmente os comutadores que têm por função direcionar as mensagens transmitidas são capazes de medir os caminhos mais rápidos a serem utilizados, através de algoritmos de roteamento, tornando a velocidade de conexão mais ágil. Como podemos observar a tecnologia wireless também é presente nesse tipo de rede, tornando as redes mais flexíveis e simples, o termo mais utilizado para esse tipo de rede wireless é Wi-Max, o qual é uma tecnologia atual e com constantes avanços. 1.4. Modelos de Referências e Camadas Neste tópico descrevem-se as redes em suas estruturas físicas e teóricas, um modelo de referência descreve a arquitetura de uma rede. Citarei dois exemplos importantes o modelo OSI e o TCP/IP, o primeiro apesar de menos freqüente possui características básicas importantes e o segundo tem em seus protocolos uma importante referência para qualquer rede. 33 No modelo OSI observa-se sete camadas, cada qual deve possuir uma função definida, entretanto no OSI não observamos o tratamento de arquitetura de rede, pois não especifica os protocolos e serviços a serem utilizados, apenas descreve a função das camadas. 1.4.1. Hierarquia de protocolos Para reduzir a complexidade do projeto de uma rede elas são organizadas em camadas ou níveis, que varia de rede para rede, entretanto cada camada tem uma função definida e deve oferecer serviços a camada de nível superior a ela. Entre duas camadas existe uma interface que define as operações e serviços que são oferecidos a camada superior pela inferior. As interfaces podem ser diferentes de rede para rede desde que o não prejudique o funcionamento correto da camada superior. Entretanto as interfaces são desenvolvidas de forma a reduzir o volume de informações de uma camada para outra e simplificar a comunicação entre as duas camadas. O conjunto de camadas e protocolos e chamado de arquitetura de rede, uma arquitetura de rede contem informações suficientes para que sejam desenvolvidos softwares e hardwares capazes de utilizar os protocolos definidos por ela. 1.4.2. Tipos de Serviços Os serviços oferecidos pela camada inferior a superior podem ser de dois tipos diferentes: serviços orientados a conexão e serviços não orientados a conexão. Os serviços orientados a conexão baseia-se em conexão, ou seja, necessita de uma conexão para ser realizado assim para utilizar do serviço primeiro e necessário estabelecer a conexão, utilizá-la e depois liberá-la. 34 Por outro lado os serviços não orientados a conexão são relativamente independentes, não é necessário uma conexão para efetivar a transmissão da mensagem, para isso a própria mensagem contem informações do endereço e é roteada até o seu destino. Geralmente os serviços dispõem de confirmação das mensagens enviadas, esse serviço é dito como um serviço confiável, já um serviço que não dispõem de uma confirmação é dito um serviço não confiável. Ambos são importantes e ambos têm suas vantagens e desvantagens, por exemplo, um serviço confiável que dispõe de uma confirmação pode tornar o trafego de informações maior, já que a resposta utiliza o mesmo meio para trafegar, por outro lado existem situações em que a resposta é extremamente importante para o usuário que esta utilizando o serviço. Um serviço é especificado por diversas primitivas que definem qual processo é executado ou qual ação deve tomar em determinada situação. Como exemplo temos um sistema cliente/servidor: as primitivas seriam LISTEN, CONNECT, RECEIVE, SEND, DISCONNECT. Em primeira instancia o servidor executa a primitiva LISTEN estando o mesmo aguardando para aceitar uma conexão, assim o cliente executa CONNECT estabelecendo a conexão, o servidor por sua vez se prepara para receber a informação executando a primitiva RECEIVE, o cliente por seguinte envia a informação através da primitiva SEND, ao final da transação o cliente executa DISCONNECT liberando o servidor para executar outro LISTEN para futuras conexões. É importante diferenciar serviço de protocolo: o serviço executa uma operação ou serviço na interface entre as camadas, já o protocolo relaciona-se com os pacotes enviados entre duas ou mais maquinas. 35 1.4.3. Modelo OSI Esse modelo é baseado em uma proposta desenvolvida pelo International Standards Organization (ISO) em uma iniciativa para padronizar as conexões entre os computadores, desse projeto originou-se o modelo de referência em questão. O OSI é um acrônimo do termo em inglês Open Systems Interconnection, que significa interconexões de sistemas abertos. 1.4.3.1. Camada Física A camada física trata da transmissão de bits brutos por um canal de comunicação, essa camada deve garantir a integridade da informação transmitida sem que haja ruídos e distorções na mensagem enviada. E responsabilidade dessa camada a representação de um bit, que depende da voltagem e da duração, estabelecer sentidos da transmissão: se apenas um sentido ou nos dois sentidos simultaneamente, o inicio e o termino de uma conexão, e por fim a quantidade de conectores e suas finalidades. Podemos citar dois meios físicos que se aplicam a redes: Meios guiados e meios não guiados. Para o primeiro podemos citar fios de cobre e fibra ótica, e para o segundo ondas de rádio e raios laser transmitidas pelo ar. 1.4.3.2. Camada de Enlace de Dados A camada de enlace atua gerenciando a transmissão de dados identificando erros não aparentes na camada física, separando a mensagem em frames (quadros) fazendo com que esses quadros sejam transmitidos seqüencialmente, e por fim aplicando controle de erros e de fluxo. 36 1.4.3.3. Camada de Rede A camada de rede tem como principal função o estabelecimento, a manutenção e o termino de uma conexão, para tanto converte os endereços lógicos dos pacotes em endereços físicos fazendo com que os pacotes cheguem ao seu destino. As rotas definidas podem ser estáticas ou dinâmicas: pré-definidas de acordo com a rede, ou estabelecida e determinadas a cada conexão, respectivamente. Cabe ainda a camada de rede gerenciar essas rotas e evitar congestionamento e gargalos de dados. 1.4.3.4. Camada de Transporte Sua função é captar os dados da camada anterior, adequá-los e repassar para a camada de rede garantindo que todas essas unidades cheguem corretamente a outra extremidade. A ISO define o protocolo de transporte para operar em dois modos: orientado a conexão (TCP) e não orientado a conexão (UDP). 1.4.3.5. Camada de Sessão A camada de sessão atua gerenciando a conversa através de uma sessão. Essa sessão dispõe de diversos serviços como: controle de diálogo, gerenciamento de tokens e sincronização. O controle de diálogo gerencia a transmissão ordenando quem deve transmitir evitando colisões, o gerenciamento de tokens impede que as partes executem uma operação critica ao mesmo tempo e que por fim essa conexão termine, e a sincronização realiza verificações periódicas permitindo que uma ação seja retomada de onde foi interrompida caso haja alguma falha. 37 1.4.3.6. Camada de Apresentação A responsabilidade principal dessa camada é a apresentação dos dados ao receptor, assim ela faz as adaptações necessárias para que o computador de destino possa compreender a mensagem enviada. 1.4.3.7. Camada de Aplicação Esta camada dispõe aos usuários protocolos para serviços como e-mail, transferência de arquivos, acesso a paginas da internet. 1.4.4. Modelo de referência TCP/IP O modelo TCP/IP surgiu a partir sucessão da ARPANET, uma rede de pesquisa utilizada por universidades e patrocinada pelo Departamento de Defesa dos Estados Unidos que por causa do surgimento de redes de rádio e satélite teve seu funcionamento prejudicado por problemas com os protocolos existentes, o que forçou a criação de uma nova arquitetura de referência, o TCP/IP. As principais camadas colocadas em comparação com o modelo OSI podem ser observadas na Tabela 1.2 a seguir: Tabela 1.2 Os modelos de Referência OSI e TCP/IP 7 6 5 4 3 2 1 OSI Aplicação Apresentação Sessão Transporte Rede Enlace de dados Física TCP/IP Aplicação Transporte Inter-redes Host/Rede Fonte: Redes de computadores, Tanenbaum (2003) 38 Observa-se que diferentemente do modelo de referência OSI o modelo TCP/IP possui apenas quatro camadas, que são suficientes para uma conexão eficiente e versátil. Observam-se na Tabela 1.3 os principais protocolos utilizados do modelo de referência TCP/IP: Tabela 1.3 Protocolos e Redes no modelo TCP/IP Serviços Protocolos TELNET FTP SMTP TCP Camadas HTTP DNS UDP Transporte IP Redes ARPANET PPP LAN Aplicação Rede ETHERNET Wi-Fi Host Rede Fonte: Adaptada de Redes de Computadores, Tanenbaum (2003) 1.4.4.1. Camada Host/Rede Segundo Tanenbaum (2003) a camada de host/rede não é muito bem especificada pelo modelo de referência TCP/IP, relatando que o host conecta-se à rede utilizando algum protocolo capaz de enviar pacotes IP. Portanto não é definido nenhum protocolo e o mesmo pode variar de host para host. Entretanto para o nosso projeto iremos destacar e aprofundar um pouco mais o sistema Ethernet de cabeamento para camadas físicas ou de Host/Rede, esse é o sistema atualmente mais usado mundialmente e esta em suposto declínio devido a acessão do sistema Wireless Fidelity (Wi-Fi). 39 1.4.4.1.1. Ethernet Desenvolvido no Palo Alto Research Center (PARC) da Xerox por Robert Metcalfe, e aperfeiçoado posteriormente pela Digital Equipment Corporation (DEC), Intel e Xerox conjuntamente estabelecendo o padrão DIX que viera se tornar o padrão IEEE 802.3 a Ethernet se tornou uma dos sistemas mais utilizados nas diversas redes locais de todo o mundo, principalmente quando Metcalfe impulsionou seu mercado com a criação da empresa de tecnologia de rede a famosa 3Com. Ethernet faz menção ao éter luminoso, material utilizado no cabeamento de um dos primeiros sistemas criados. Um sistema que utiliza cabeamento Ethernet basicamente utiliza uma rede do tipo multiponto, onde o computador antes de transmitir verifica a disponibilidade de utilizar o meio de transmissão, no caso o cabo. Esse sistema fora atualizado com o tempo, o mais utilizado de todos foi o cabeamento 10Base-T ou cabeamento par trançado, devido a sua adaptabilidade as necessidades da época: flexibilidade, extensão, velocidade, etc. Entretanto existem outros tipos que também são bastante usados, os mais comuns estão descritos na Tabela 1.4. Tabela 1.4 Os Tipos mais comuns de cabeamento Ethernet Nome Cabo Máximo de seg. Nós/ seg. Vantagens 10Base5 Coaxial Grosso 500 m 100 Cabo Original 10Base2 10Base-T 10Base-F Coaxial Fino Par Trançado Fibra óptica 185 m 100 m 2.000 m 30 1.024 1.024 Sem necessidade de hubs Sistema mais econômico Melhor entre edifícios Fonte: Redes de Computadores, Tanenbaum (2003) 40 Com a evolução incessante da tecnologia e da capacidade de armazenamento dos computadores, exigiu-se mais das redes e o sistema Ethernet teve que ser várias vezes otimizado. Assim surgiram diversas formas de cabeamento, e diversas velocidades de transmissão e atualmente com o advento da internet de banda larga e a expansão de LANs por todo o mundo, criou-se o cabo do tipo 100Base-T de categoria 5, o que significa que pode ser utilizado para freqüências de até 100mhz e transmitir dados em até 100mbps. A desvantagem da Ethernet e dos cabeamentos par trançado 100Base-T e 10Base-T é a sua restrição ao tamanho máximo que dois hosts podem estar conectados que é de cem metros, devido a confiabilidade e a algoritmos de detecção de colisão que não entraremos em detalhes por serem muito complexos e não afetar o projeto em suma importância. Existem, entretanto cabeamentos Ethernet para grandes distâncias, é o caso da fibra ótica que pode alcançar até cinco mil metros de distância máxima entre hosts e velocidades que variam de 10mbps a 1gbps de cabeamentos 10Base-F e 1000Base-LX. As tecnologias que utilizam fibra ótica são de alto custo para empresas e difícil flexibilidade, o cabo não pode sofre algumas ou nenhuma deflexão para garantir a transmissão dos dados. A vantagem do uso de uma rede Ethernet é sua simplicidade de flexibilidade já que permite a conexão de diversos computadores, até mesmo ramificando com hubs e switchs e ser interativa com outros meios de transmissão como wireless, que veremos mais adiante. 1.4.4.2. Camada de Rede A camada de rede como citado no modelo OSI é responsável pela manutenção da conexão e sua efetivação, no modelo TCP/IP o pacote oficial para esta tarefa é o IP: Internet 41 Protocol, esta camada permite a camada de host injetar os pacotes em qualquer rede e garante seu trafego independentemente da rede. Os pacotes, de um modo simplificado, possuem divisões que contem informações sobre sua: tamanho, endereço de origem, endereço de destino e a mensagem. Em conjunto a esse protocolo observa-se também o ICMP acrônimo de Internet Control Message Protocol que atua como um controlador de pacotes e de rotas enviando pacotes com mensagens para tanto. 1.4.4.3. Camada de Transporte Mantém a conversação entre os pares de host, observam-se aqui dois protocolos para executar tal tarefa: TCP acrônimo de Transmission Control Protocol é um protocolo orientado a conexão, como descrito no modelo OSI este fragmenta os bytes em mensagens e os repassa para a próxima camada no host de origem, e o inverso ocorre no host destino tudo isso a dentro de uma chamada solicitada pelo host de origem e terminada após a transmissão, esse protocolo verifica erros e os corrige, descarta pacotes duplicados, e recupera pacotes que são perdidos. UDP acrônimo de User Datagram Protocol é um protocolo não orientado à conexão que não é capaz de realizar testes de verificação de erros, nem aceita recuperação de dados perdidos, por isso é utilizado em aplicações que não requerem o controle do fluxo, como transmissão de dados de voz ou de vídeo. 42 1.4.4.4. Camada de Aplicação Contem os protocolos de nível mais alto que fornecem uma interface para o usuário como: SMTP: Simple Mail Transfer Protocol serviços de correio eletrônico; HTTP: HyperText Transfer Protocol que provem as famosas páginas da internet e transferência de arquivos; FTP: File Transfer Protocol utilizado exclusivamente para transferência de arquivos; DNS: Domain Name Systems que traduz endereços de IP para nomes e nomes para endereços IP; TELNET um protocolo que permite acesso remoto ao sistema operacional de um sistema. 1.4.5. Arquitetura IEEE 802 A arquitetura IEEE 802 estabelece padrões para as camadas: física e de enlace de dados; dos modelos ISO/OSI. As duas subcamadas mais importantes estabelecidas por esse padrão são: MAC e LLC. 1.4.5.1. Medium Access Control (MAC) Tem sua principal função controlar o acesso ao meio, ou seja, decidir quem terá acesso para continuar a transmissão caso haja mais de um emissor, também estabelece um único endereço fixo para a placa de rede e proporciona acesso a seus recursos através de um 43 driver. Em palavras simples é o porteiro de um brinquedo no parque de diversões que decide a hora dos foliões entrarem ou esperar. 1.4.5.2. Logical Link Control (LLC) É a subcamada superior da camada de enlace de dados que esta descrita segundo os padrões 802.2 do IEEE, assim esta subcamada é responsável por acrescentar ao pacote um cabeçalho especifico que poderá ser reconhecido na subcamada LLC destino. Este cabeçalho do LLC que permite a utilização de diversos protocolos na camada de rede, e permite o que os pacotes trafeguem em qualquer camada física estabelecida pelo padrão IEEE 802. Assim é possível estabelecer pontes de conexões entre os diversos meios físicos como wireless e par-trançado 1.5. Redes Wireless As redes sem fio são redes que utilizam ao invés de fios, para realizar a comunicação entre diversos computadores, outras tecnologias que podem ser radiofreqüência, microondas e infravermelho. Atualmente destacam-se vários tipos de redes sem fio, ordenados por amplitude da área de cobertura do menor para o maior: WPAN é um acrônimo do termo americano Wireless Personal Areal Network, envolve conexões de rede sem fio a nível pessoal ou particular de curta distância (até 1 metro) dentro dessa categoria estão celulares, notebooks e PDAs quando utilizam, por exemplo, a tecnologia Bluetooth, ou qualquer tecnologia que implementa o padrão IEEE 802.15, para se comunicar. 44 WLAN é outro acrônimo do termo americano Wireless Local Area Network, trata-se de redes locais de pequeno alcance variando de 10 a 100 metros a distância entre os hosts, utilizam o padrão IEEE 802.11, geralmente difusos por radiofreqüência, entretanto já se observa a utilização de WLAN com Bluetooth e também infravermelho. Uma observação importante: o padrão IEEE 802.11 é um projeto para redes que possuam móveis, entretanto não impede usuários fixos de utilizá-la. Wi-Max é uma sigla em inglês do termo Worldwide Interoperability for Microwave Access, como segue a ordem, trata de redes com amplitude metropolitana, segundo Ribeiro (2005): O Wi-Max na versão 802.16a, ratificada pelo fórum em janeiro de 2004, funciona nas freqüências entre 2 e 11 GHz, com alcance máximo de 50 quilômetros, além da transmissão de dados à velocidade de 70 Mbps. Entretanto ao contrario do que se pensa o Wi-Max não é um projeto para redes de usuários moveis, mas sim uma rede para usuários fixos por ser originado de redes de TV por assinatura (sem fio), entretanto o padrão IEEE 802.16e pretende garantir essa mobilidade. Existem dois tipos de conexão sem fio: com estação base e sem estação base. Com estação base a transmissão e feita por uma antena de alto alcance ligada por um fio ou diretamente a um servidor e os hosts recebem e transmitem os dados através de uma antena, geralmente utiliza os padrões 802.11 ou 802.16 do IEEE. Sem estação base a conexão da rede é feita diretamente entre os hosts que desejam se comunicar sem a necessidade da informação seguir para um servidor e depois retransmitida, geralmente utiliza o padrão 802.15 mais comum o Bluetooth. 45 Um exemplo de uma conexão desse tipo é a troca de arquivos de música, ringtones, imagens ou qualquer outro arquivo entre dois celulares via Bluetooth. As redes wireless, como o próprio nome já nos diz, tratam de uma rede sem fio que utiliza outros meios para efetivar a comunicação entre dois ou mais computadores, abaixo estão descritos os mais comuns meios de transmissão da camada física segundo o modelo ISO/OSI e o padrão IEEE 802.11: Infravermelho é uma transmissão difusa que permite duas velocidades de 1 a 2 mbps, é um tipo de rede restrito a um ambiente fechado ou totalmente aberto já que seus sinais não são capazes de atravessar paredes. Por esse motivo, por ser uma rede de largura de banda pequena e sofrer freqüentes ruídos causado por raios solares esta não é uma rede muito popular. Frequency Hopping Spread Spectrum (FHSS) utiliza uma transmissão dentro de uma faixa de freqüência dividida em 79 canais, assim a transmissão e feita entre os diversos canais dispostos, para tanto os hosts devem utilizem o mesmo modo para o alternador de freqüência as conexões permaneceram sincronizadas alternando aleatoriamente os canais. Isso permite maior segurança contra invasores que dificilmente conseguem identificar o canal de transmissão já que o mesmo se altera em no máximo 400 milissegundos. É um meio popular, entretanto de baixa largura de banda. Direct Sequence Spread Spectrum (DSSS) semelhante ao FHSS efetua a transmissão trocando os canais, entretanto a sua diferença é que os canais não são trocados aleatoriamente, mas sim em uma seqüência. Por isso motivo ela torna-se uma tecnologia não segura para transmitir necessitando de criptografias para que seja uma transmissão segura. 46 Orthogonal Frequency Division Multiplexing (OFDM), foi uma das primeiras tecnologias a utilizar uma largura de banda maior que as outras podendo transmitir até 54 mbps, em uma analogia simples funciona semelhantemente ao FHSS porem transmitindo em vários canais simultaneamente. A subcamada MAC de enlace de dado é diferenciada do padrão 802.3 para Ethernet, pois como o meio nem sempre é igual para todos alguns usuários podem estar fora do alcance de outros usuários o que implica que os dois podem transmitir ao mesmo tempo para o mesmo destino causando colisões. Isso foi tratado de duas formas na subcamada MAC através de dois modos de operação: Distributed Coordination Function (DCF): nesse modo há dois métodos de operação, o primeiro analogamente é semelhante à Ethernet o emissor transmite seu quadro se o canal estiver desocupado e se houver colisões os transmissores aguardam um tempo aleatório definido pelo algoritmo de recuo binário igual à Ethernet. Outro método é a utilização de um canal virtual, onde todos que desejam transmitir um quadro reivindicam um canal virtual, esse é formado pelos hosts dentro da área do transmissor que informa outros hosts dentro da sua área sobre a disponibilidade do canal e assim sucessivamente deixando o canal livre para transmissão. Point Coordination Function (PCF): nesse modo todas estações são controladas pela estação-base, que efetua um polling perguntando quais estações desejam enviar quadros, e assim ordenando a utilização do canal. 47 CAPÍTULO 2 - DESENVOLVIMENTO DE SOFTWARE 2.1. Engenharia de Software O desenvolvimento de um software, ao contrário do que pressupõe o censo comum, trata não apenas da criação de um algoritmo e interfaces para interação com o usuário, mas sim de todo o processo de sua produção. O desenvolvimento de todos esses processos é conhecido como Engenharia de Software conforme cita Sommerville (2004): 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. Portanto podemos identificar em um software uma estrutura a qual foi previamente elaborada e estruturada, essa estruturação comum a todos os softwares e efetuada por processos, que são um conjunto de atividades para esse fim. Em um desenvolvimento de um software há diversos processos, que podemos organizá-los dessa forma: Especificação: onde são definidas as restrições de operações e funcionalidades. Desenvolvimento: produção do software de acordo com as especificações. Validação: garante a funcionalidade do software de acordo com o desejo do cliente. Evolução: deve garantir que o software esteja sempre atualizado complementando necessidades futuras do cliente. Para este projeto iremos destacar as fases de especificação e desenvolvimento já que elas estão presentes e interagem diretamente com o assunto tratado. 48 2.2. Modelos de Processos de Software A união de todos esses processos faz-se criar o que chamamos de engenharia de software, esses processos por sua vez podem ser organizados de forma a simplificar e dividir as etapas da engenharia, essa divisão podemos chamar de modelos de processo. Atualmente os modelos em cascata e de desenvolvimento evolucionário são os mais utilizados no mercado para o desenvolvimento de sistemas práticos, esses modelos basicamente possuem as mesmas etapas, entretanto o primeiro e desenvolvido seqüencialmente e o segundo em múltiplos aspectos. Contudo há outros dois modelos relevantes: o desenvolvimento formal e o desenvolvimento orientado a reuso. O primeiro raramente é utilizado, entretanto foi muito utilizado antigamente por tratar de projetos complexos, já o desenvolvimento orientado ao reuso tende a um crescimento por estar diretamente ligado a reutilização de código, um fato que podemos considerar essencial para projeto de softwares web ou para internet. 2.2.1. Modelo Cascata O modelo cascata foi o primeiro modelo de processo de software publicado, originou-se de outros processos de engenharia. Basicamente define cinco etapas que vão da especificação até a evolução do software, como mostra a Figura 2.1: 49 Figura 2.1 Modelo em Cascata Fonte: Engenharia de Software, Sommerville (2004) Nesse modelo cada fase é executada seqüencialmente, sendo assim a fase seguinte somente será iniciada ao termino da fase anterior. Quando o software é colocado em operação, podem ser detectados erros ou até mesmo necessidade atualizações e para tanto há um retrocesso nas fases anteriores a fim de suprir a necessidade ou corrigir o erro. 2.2.2. Modelo de Desenvolvimento Evolucionário O modelo de desenvolvimento evolucionário é conhecido por não trabalhar seqüencialmente como no modelo em cascata, ao invés disso são efetuadas diversas etapas durante o processo sem uma seqüência previamente estabelecida. Basicamente esse modelo compreende o desenvolvimento de um software inicial e atualização constante dele com base nas informações obtidas do usuário (cliente) até que seja concluído um software final com os aprimoramentos desejados, geralmente utilizando técnicas de prototipação, como ilustra a Figura 2.2. Esse modelo apresenta vantagens no que diz respeito a agilidade e atendimento das expectativas do cliente. Entretanto há problemas quando o software for demasiadamente 50 complexo pois há uma má estruturação do projeto, alem de exigir técnicas de programação e desenvolvimento rápidos. Figura 2.2 Modelo de desenvolvimento evolucionário Fonte: Engenharia de Software, Sommerville (2004) 2.3. Especificação Na engenharia de software foi visto que há vários processos que compõem seu desenvolvimento, o primeiro passo para criação de qualquer que seja o software utilizando qualquer metodologia ou modelo é o processo de especificação, que por se tratar da primeira etapa se torna importante, pois define o que será feito em todas as outras próximas etapas. É ressaltar que esse processo deve ser muito bem elaborado, pois todos os processos seguintes dependem diretamente do que for estabelecido na especificação, isto implica que se houver uma má definição da especificação todos os outros processos serão prejudicados ampliando o custo geral do projeto. 51 O processo de especificação envolve quatro componentes básicos: o estudo da viabilidade, levantamento e análise de requisitos, especificação de requisitos e validação de requisitos. Para este trabalho a especificação é uma parte importante, pois é justamente na especificação que entram definição das variáveis de rede como, usar uma rede distribuída, ou uma rede multiponto; qual tecnologia usar wireless ou par-trançado. E esse é justamente o objetivo desse trabalho demonstrar como uma rede sem fio pode interferir no desenvolvimento de um software. Contudo neste capítulo apenas farei menções sobre a engenharia de software e no capítulo seguinte introduzirei as interferências citadas acima. 2.3.1. Estudo de viabilidade O estudo de viabilidade é feito de forma rápida e barata, analisando do ponto de vista comercial e financeiro se o sistema proposto é viável. O resultado deve decidir a progressão ou não do projeto. 2.3.2. Requisitos Como vimos os requisitos devem ser muito bem definidos para efetivação de um bom software, entretanto não é fácil estabelecer com exatidão as necessidades do cliente e o que o sistema deve fazer, e é justamente esse problema que a engenharia de requisitos resolve. A engenharia de requisitos é um método eficaz de captar as informações, analisá-las e estruturá-las dentro do projeto, segundo Sommerville (2004): Alguns dos problemas que surgem durante o processo de engenharia de requisitos são resultantes da falta de uma nítida separação entre esses diferentes níveis de descrição. Ainda segundo este autor a separação acima citada se confere em três: 52 Requisitos do usuário: descrevem as funções que o sistema deve fornecer e as restrições sob as quais deve operar normalmente em linguagem natural ou diagramas. Requisitos de sistema: estabelece detalhadamente as funções e restrições do sistema, em alguns casos pode até mesmo ser usada como contrato. Especificação de projeto de software: uma descrição abstrata do projeto servido de base para a estrutura do projeto e da implementação. Analisando superficialmente os diferentes níveis de especificação o primeiro deve tratar uma linguagem simples e objetiva sem termos técnicos para serem apresentadas a gerentes do cliente e dos fornecedores que não possuam conhecimento técnico do assunto. Já os requisitos de sistema devem descrever detalhadamente e tecnicamente como irá funcionar todo o processo do sistema, tendo como alvos profissionais técnicos e gerentes de projeto. E o ultimo deve ser voltado para os engenheiros que irão definir o projeto e seu desenvolvimento. 2.3.2.1. Requisitos de Sistema Vamos tratar aqui apenas os requisitos de sistema, pois engloba as outras duas divisões para especificação de requisitos. Como vimos este documento estabelece uma descrição mais detalhada dos requisitos de usuário e podem até servir como base para um contrato e por isso deve conter uma especificação completa e consistente de todo o sistema. Essa especificação e freqüente descrita em linguagem natural, entretanto essa linguagem pode ser ambígua em alguns casos, pode adquirir diversas compreensões por diferentes leitores e muitas vezes pode ser restrita a detalhes técnicos. Pensando em resolver esses problemas de linguagem foram criadas diversas notações para especificação de requisitos de sistemas, a mais freqüente e a que irei citar é a linguagem 53 natural estruturada, que pode ser compreendida com um exemplo citado por Sommerville (2004). Esse exemplo disposto na Tabela 2.1 introduz formulários com o propósito de descrever em linguagem natural estruturada as entradas, saídas e outros detalhes da função adicionar nós de um sistema de edição de projeto. Há outras linguagens de especificação de requisitos: Linguagem de descrição de projeto: semelhante a uma linguagem de programação, entretanto com recursos abstratos para especificar os requisitos pela definição de um modelo operacional do sistema. Notações gráficas: utiliza desenhos e notas textuais para definir o sistema. Especificações matemáticas: utiliza conceitos matemáticos para detalhar o sistema, é muito complexa e raramente compreendida. Tabela 2.1 Especificação de requisitos de sistema utilizando um formulário padrão. Função Descrição Entradas Origem Saídas Destino Requer PréCondição PósCondição Efeitos Colaterais Adicionar nós. Adiciona um nó em um desenho existente. O usuário seleciona o tipo de nó e seu posicionamento. Quando adicionado ao desenho, o nó se torna a seleção atual. O Usuário escolhe a posição do nó movimentando o cursor para a área em que o nó será adicionado. Tipo de nó, Posição do nó, Identificador do desenho. Tipo de nó e Posição do nó são entradas fornecidas pelo usuário; Identificador de desenho se origina da base de dados. Identificador do desenho. O banco de dados do desenho. O desenho é designado para a base de dados no término da operação. Gráfico de desenho associado ao identificador de desenho de entrada. O desenho é aberto e exibido na tabela do usuário. O desenho é imutável, a não ser pela adição de um nó do tipo especificado em dada posição. Fonte: Engenharia de Software, Sommerville (2004) Nenhum 54 As especificações dos requisitos de sistemas são freqüentemente classificadas como funcionais ou não funcionais ou requisitos de domínio: Requisitos funcionais: declaram o que o sistema deve fazer (funções), como ele reage a entradas e como destina as saídas, alem de definir o comportamento em situações especificas. Requisitos não funcionais: são restrições sobre os serviços ou funções oferecidas pelo sistema. Requisitos de domínio: são requisitos que se origina do domínio de aplicação do sistema e que refletem características do domínio. Nesse projeto vale ressaltar a importância dos requisitos não funcionais, pois alem de definir diversas características de hardware necessárias eles definem as características da rede em qual o sistema deve ser instalado, definindo assim as métricas dela. Assim pode-se comparar qual o melhor tipo de rede e como isso afeta no projeto. 2.4. Projeto e Desenvolvimento O desenvolvimento e a implementação de um software estão diretamente ligados ao projeto, por se tratar da conversão do que foi projetado em um sistema executável. O projeto em si descreve o que deve ser implementado no software até mesmo citando algoritmos a serem utilizados. Normalmente durante o projeto são efetivadas diversas versões não oficiais do software a fim de obter um feedback para correção de projetos anteriores, à medida que são liberadas essas versões são acrescentadas formas e detalhes de forma a suprir alguma necessidade não observada anteriormente. 55 Existem diversas atividades especificas no processo de projeto, e por serem divididas elas sugerem uma seqüência, entretanto as atividades podem ser intercaladas com o feedback e a reestruturação. Entrarei em detalhes apenas no projeto de arquitetura e os outros apenas citarei cada atividade para compreensão do processo: Projeto de arquitetura: identifica e documenta os subsistemas. Especificação abstrata: para cada subsistema existe uma especificação abstrata assim como as especificações de sistema. Projeto de interface: identifica e documenta como deve ser implementada a interface entre os subsistemas. Projeto de componentes: projeta as funções dos componentes de cada interface. Projeto de estrutura de dados: referencia e especifica as estruturas de dados e seus relacionamentos. Projeto de algoritmos: projeta os algoritmos para os serviços definidos detalhadamente. O processo de projeto de software não é restrito a esse modelo e pode ser flexível de acordo com a necessidade do cliente. 2.4.1. Projeto de Arquitetura O projeto de arquitetura onde os subsistemas decompostos anteriormente necessitam de uma interação de definição, o processo de identificar e comunicar os subsistemas é chamado projeto de arquitetura. 56 O projeto de arquitetura em suma estrutura o sistema em diversos subsistemas principais cada qual com diversos módulos, ao final do projeto têm-se um documento de projeto de arquitetura, contendo uma serie de representações gráficas e textuais do sistema. 2.4.1.1. Arquitetura de sistemas distribuídos Irei enfatizar a arquitetura de sistemas distribuídos, pois estas são as arquiteturas que dizem respeito ao meu trabalho por tratar de sistemas que cooperam entre si conectados através uma rede. Um sistema distribuído trata de um software que tem como características a divisão de suas tarefas e atividades a mais de um computador, geralmente são vários computadores interligados por uma rede, vimos no primeiro capítulo a topologia de uma rede distribuída a qual esse sistema é adepto, entretanto o conceito de sistema distribuído não o restringe a apenas redes distribuídas mas sim a todo e qualquer tipo de rede. Portanto cabe a engenharia de software criar uma arquitetura adequada a esses sistemas, tendo em vista sua grande utilização causada pelo surgimento de redes flexíveis, simples e rápidas como a Ethernet e mais recentemente com a ascensão das redes wireless. Sommerville (2004) faz uma importante descrição dessa tarefa da engenharia para criar uma arquitetura de software adequada: O desafio para os projetistas de sistemas distribuídos esta em projetar software e hardware para que eles forneçam características desejáveis dos sistemas distribuídos e, ao mesmo tempo, minimizem os problemas inerentes a esse sistema. Neste projeto, analisei duas modalidades de arquitetura de sistemas distribuídos apresentados pelo autor: Arquiteturas cliente-servidor: serviços fornecidos aos clientes pelo sistema. 57 Arquiteturas objetos distribuídos: sistema como um conjunto de objetos, sem distinção entre um provedor e o usuário desse serviço. 2.4.1.1.1. Arquiteturas de cliente-servidor Em uma arquitetura cliente-servidor a modelagem de uma aplicação é feita como um conjunto de serviços fornecidos pelo servidor aos seus clientes. Ambos são tratados como processos diferentes, sendo que os clientes necessitam saber a disponibilidade do servidor, mas não necessariamente de outros clientes. A arquitetura cliente-servidor deve refletir as atividades desenvolvidas da aplicação de uma maneira simples porem objetiva. Um modo de demonstrar essas atividades é através de camadas como pode ser observado na Figura 2.3, onde o software é estruturado em três camadas: a camada de apresentação, camada de processamento de aplicações, e a camada de gerenciamento de dados. Figura 2.3 Camadas da aplicação. Fonte: Engenharia de Software, Sommerville (2004) 58 Sobre essa estrutura pode-se definir claramente as atividades que serão atribuídas aos clientes e aos servidores. Geralmente as camadas são dividas em duas: uma na parte do cliente e outra na parte do servidor assim surge dois modelos para a arquitetura cliente-servidor: Modelo cliente-magro: onde todo o processamento de aplicação e gerenciamento de dados é efetuado no servidor, e o cliente é responsável apenas pela apresentação. Modelo cliente-gordo: onde o servidor se encarrega apenas pelo gerenciamento de dados, encarregando o cliente pelo processamento da aplicação e apresentação. O modelo cliente-magro descrito é uma tendência atual devido à flexibilidade proporcionada por sistemas web, os quais utilizam como software de apresentação um browser de protocolos da rede como o HTTP. A desvantagem é que nesse modelo há um grande tráfego na rede e exige uma capacidade muito grande de processamento do servidor dependendo do número de clientes, iremos discutir a evolução dessas características mais adiante no terceiro capítulo. Em contrapartida o cliente-gordo utiliza um servidor com a capacidade apenas de gerenciar o banco de dados e o cliente se responsabiliza pela grande carga de processamento, isso permite um menor tráfego de dados na rede à medida que exige mais dos hardwares do cliente. Há, contudo, métodos de programação em linguagem de gerenciamento de banco de dados que visam minimizar esse tráfego e amenizar a carga de processamento do cliente, geralmente utilizam-se funções, threads e triggers no banco de dados para executar tarefas básicas, por exemplo, de inserção e busca. Há também uma desvantagem quanto à manutenção desse software o qual pode ser bem dispendioso caso haja muitos clientes. 59 Atualmente com as tecnologias tendendo para o desenvolvimento de softwares flexíveis e mais acessíveis, como o de aplicativos web, houve uma separação das atividades do servidor, dividindo assim as fisicamente as camadas lógicas de aplicação. Assim de modo simplificado temos um cliente, um servidor para aplicações web e um servidor para gerenciamento de banco de dados, como ilustra a Figura 2.4. Figura 2.4 Arquitetura cliente-servidor de três camadas. Fonte: Engenharia de Software, Sommerville (2004) As arquiteturas cliente-servidor de três camadas são mais escalonáveis, ou seja, podem ser aumentadas ou diminuídas sem prejudicar a arquitetura geral, além de permitir um menor tráfego na rede, reduz a carga de processamento distribuindo a tarefa entre dois servidores. 2.4.1.1.2. Arquiteturas de objetos distribuídos. Vimos na arquitetura cliente-servidor que os clientes são restritos a apenas receber serviços de servidores, não podendo recebê-los de outro cliente, esse modelo é bem pratico para certos tipos de aplicações, mas de certo modo restringe a flexibilidade para os projetistas 60 que necessitam planejar expansões e meios de distribuir a carga excedente de uma expansão nos servidores. A arquitetura de objetos distribuídos elimina essa distinção existente entre cliente e servidor, ou seja, todos os componentes do sistema atuam como clientes e servidores trabalhando em conjunto com um intermediador, o autor cita dois desses intermediadores que não entraremos em detalhes o Common Object Request Broker Architecture (CORBA) e o Distributed Component Object Model (DCOM). Atualmente temos o Java RMI e Java IDL seu funcionamento basicamente é semelhante, ou seja, fornecer uma gama de serviços que permita a comunicação entre os objetos como mostra a Figura 2.5. Diferentemente da arquitetura cliente-servidor não há preocupação com o tráfego na rede e por conseqüência quanto à cliente-gordo ou magro, afinal os objetos podem se localizar em diversos pontos da rede. Alem de ser uma arquitetura de sistema muito aberta que permite a entrada de recursos facilmente, ela é totalmente flexível pode-se criar objetos que venham substituir outros que possuem mesmas características de serviços sem interferir os outros objetos. Há também a opção de fazer com que objetos migrem pela rede diminuindo cargas de processamento e aumentando o desempenho do sistema. A desvantagem perceptível dessa arquitetura é que exige muito trabalho para serem projetadas por serem muito complexas. Um exemplo dessa arquitetura é observado na Figura 2.5 . 61 Figura 2.5 Exemplo de uso do Java RMI. Fonte: http://www.devmedia.com.br/images/articles/178782/arqrmi.gif. Acessado em 11/12/2007. O Java RMI utiliza a camada de transporte para fazer a comunicação entre objetos que podem estar em um mesmo computador ou em diversos computadores. Ele permite a utilização dos métodos de um objeto remotamente através do Remote Method Invocation, assim permitindo a interação dos diversos objetos do sistema. Além disso não é necessária a preocupação do programador com o empacotamento dos dados já que esse é feito pelo próprio RMI. 2.5. Validação e Evolução A validação do software se caracteriza por uma serie de verificações, testes e validações de todas as variáveis do sistema, seu objetivo principal e demonstrar que o software atende as especificações do cliente e esta de acordo com os requisitos préestabelecidos. Em grandes projetos, onde os sistemas são subdivididos em subsistemas, módulos e unidades, requerem vários estágios de testes, estes incluem: testes de componentes, testes de 62 integração dos módulos e subsistemas ao sistema geral, e por fim o teste do usuário para aceite do sistema. Um teste de usuário essencial para grandes projetos consiste em distribuir versões beta para usuários que concordem com sua utilização, assim podem ser reportados erros detectados por esses usuários que porventura tenham passado em branco por todos os outros testes. Esse retorno desperta os projetistas para correção do erro e depois o sistema e depurado novamente, não há restrições quanto à quantidade de versões beta, entretanto é comum haver uma ou duas versões desse tipo. A evolução do software trata de sua manutenção e atualização depois de liberado a versão final, segundo Sommerville (2004) costuma-se diferenciar o desenvolvimento da evolução, entretanto trata-se de um processo conjunto. Em vias gerais isso é percebido no mercado atual já que varias empresas abandonaram a forma de cobrança única pelo software e adotaram a cobrança por pacotes de serviço ao software por prazos determinados, e algumas até mesmo por assinatura de software. 63 CAPÍTULO 3 - WIRELESS E O DESENVOLVIMENTO DE SOFTWARE 3.1. Visão geral Vimos durante os dois capítulos as diferentes variáveis que temos em ambos as teorias, tanto em redes como no desenvolvimento de software. Por exemplo, existem diferentes tipos de redes: redes com fios, redes sem fios, redes por difusão, redes ponto-aponto, alem de uma gama de protocolos de redes diferentes para cada tipo. E da mesma forma temos a engenharia de software com projetos que possuem especificações diferentes, mais adequadas às necessidades do cliente, projetos de arquiteturas diferentes que afetam seu desenvolvimento. É fato que as redes são um fator muito importante atualmente para o desenvolvimento de um software de grande porte ou até mesmo para pequenas organizações, afinal o que seria dele sem uma rede para trafegar todos os dados. Imagine milhões e milhões de papeis de um lado para outro, provavelmente sem nenhuma organização, alem de muitas perdas e transtornos. Além disso, a rede tem um papel importante na definição do software, por exemplo, uma empresa com um grande número de filiais em um amplo espaço que necessita utilizar o mesmo sistema de controle gerencial solicita o desenvolvimento desse software. Certamente durante a análise de requisitos e estudo de viabilidade será questionado qual o tipo de rede, topologia, tecnologia, etc. adequados para esse sistema, e de acordo com a decisão como deve ser tratado a arquitetura desse software, e como isso impacta no seu desenvolvimento. 3.2. Wireless e o processo de especificação de software Dentro do processo de especificação de software trabalha-se com o levantamento e análise dos requisitos não funcionais e funcionais do sistema a ser desenvolvido, de acordo 64 com o que foi levantado já é possível definir qual tecnologia será utilizada para se construir o software dentro de uma definição da rede. Não podemos dizer que a rede define como o software deve ser, nem que o software define a rede, mas sim que ambos são interdependentes e devem ser definidos em conjunto, apesar da existência de exceções esse é o modo correto de visualização de uma rede e um software. Geralmente a engenharia de software não deve ser voltada apenas para um tipo de tecnologia ou se prender a um tipo de rede, mas sim deve ser flexível e apto para possíveis mudanças futuras, isso tudo pode ser definido no documento de requisitos a partir de sua análise. Segundo Sommerville (2004) uma falha em cumprir um requisito não funcional pode tornar todo o sistema inútil, tal fato seria comprovado se, por exemplo, uma nova rede não seja capaz de suportar o tráfego de informações e o sistema necessite dessa rede. Portanto temos que para redes wireless os requisitos não funcionais variam das redes convencionais de par trançado (Ethernet) apenas no padrão IEEE da camada física e nos protocolos da subcamada de enlace MAC, tendo em vista que as camadas superiores são padronizadas pela subcamada de enlace LLC. As seguintes especificações sobre taxa de transmissão, área de cobertura e banda, devem ser observadas segundo o padrão IEEE 802.11: Infravermelho: suporta taxas de transmissão entre 1 a 2 mbps e restrito a ambientes fechados. FHSS: suporta taxas de transmissão entre 1 e 2 mbps, cobre um área de até 300 metros em ambientes abertos e 120 metros em ambientes fechados, disponibilidade de uso da banda ISM de 2,4 MHz. 65 DSSS: suporta taxas de transmissão entre 1, 2, 5.5 e 11 mbps, cobre um área de até 300 metros em ambientes abertos e 120 metros em ambientes fechados, disponibilidade de uso da banda ISM de 2,4 MHz. OFDM: suporta taxas de transmissão de até 54 mbps, cobre um área de até 300 metros em ambientes abertos e 120 metros em ambientes fechados, disponibilidade de uso da banda ISM de 5 Mhz. Já o padrão IEEE 802.16 possui algumas características diferentes entretanto todos podem chegar com uma área de cobertura de até 50 km em campo aberto, mas há projetos que visam a aproximação desse padrão com o IEEE 802.11: Quadrature Amplitude Modulation (QAM-64): usado para clientes que situam-se próximo a antena de transmissão, para 25 Mhz de banda (valor típico) alcança até 150 mbps de taxa de transmissão. Quadrature Amplitude Modulation (QAM-16): usado para clientes que situam-se a uma distância media da antena de transmissão, para 25 Mhz de banda (valor típico) alcança até 100 mbps de taxa de transmissão. Quadrature Phase Shift Keying (QPSK): usado para clientes que situam-se distantes da antena de transmissão, para 25 Mhz de banda (valor típico) alcança até 50 mbps de taxa de transmissão. A subcamada MAC de enlace de dados é compatível em dois modos para o padrão IEEE 802.11, entretanto diferenciam do padrão IEEE 802.16 que é completamente orientado a conexões. 66 As redes wireless também podem ser usadas de diferentes modos de acordo com seu tipo: com estação-base ou sem estação-base. O primeiro permite a criação de LANs, MANs e WANs na arquitetura cliente servidor e o segundo na arquitetura de objetos distribuídos como veremos a seguir. Portanto ao definir qual rede utilizar deve ser levado em conta sua capacidade e restrições alem de sua funcionalidade, tudo isso deve ser levantando e definido qual se adapta as necessidades e partir dessa decisão documentar os requisitos e adequar o software a eles. Um modo de documentá-los é descrito por Sommerville (2004) conforme a Tabela 3.1. Tabela 3.1 Métricas para especificação de requisitos não funcionais. Propriedade Velocidade Tamanho Facilidade de Uso Confiabilidade Robustez Portabilidade Métrica Transações processadas / Segundo Kb, Mb, Gb Tempo de treinamento Taxa de ocorrencia de falhas Probabilidade de que dados sejam corrompidos por falhas Número de sistemas alvo, Área de cobertura, Meio utilizado. Fonte: Adaptada de Engenharia de Software, Sommerville (2004) 3.3. Wireless no desenvolvimento e arquitetura de software As redes wireless são disponíveis para praticamente qualquer tipo de software desenvolvido que utilize mais de um computador justamente pela sua flexibilidade, essa flexibilidade permite que diversas arquiteturas sejam moldadas a partir dessa tecnologia. Diferentemente de uma rede do tipo par-trançado que restringe apenas a redes com pouca mobilidade ou nenhuma, as redes wireless permitem uma gama enorme de possibilidades e soluções para o desenvolvimento de software. 67 Sommerville (2004) em relação aos sistemas distribuídos atuais cita que: Hoje em dia, existem limites bem distintos entre esses tipos de sistema, mas esses limites vão desaparecer no futuro. À medida que os sistemas de rede sem fio de alta velocidade se tornarem amplamente disponíveis, será possível integrar dinamicamente produtos com sistemas embutidos, como agendas eletrônicas com sistemas mais genéricos. A utilização de uma rede wireless permite tanto a criação de um software com uma arquitetura cliente-servidor quanto uma arquitetura de objetos distribuídos: Cliente-servidor: Para essa arquitetura a utilização da rede pode ser muito intensa se for um cliente-gordo como estudamos em engenharia e, portanto deve-se pensar em tecnologias com maior taxa de transmissão. Ao contrario quando se fala em clientemagro podendo ser utilizado uma tecnologia com menor taxa de transmissão. Isso impacta no custo do projeto já que aparelhos com maior capacidade tendem a ser mais dispendiosos. Além disso deve-se trabalhar com uma estação-base, geralmente no servidor de dados ou de aplicações, aumentando ainda mais os custos. Apesar dos altos custos é uma ótima opção para empresas cujos hosts são notebooks e que possuam alta mobilidade. Objetos Distribuídos: apesar de complexa pode ser facilmente adaptada a uma rede wireless, inclusive seria um adaptação ótima já que as essas rede não depende de uma estação-base, podendo cada host interligar ao outro e estabelecer uma rede. 68 CONCLUSÕES Analisando a grande ascensão das redes wireless pode-se definir essa tecnologia como sendo essencial não somente na definição e desenvolvimento de softwares, como também em sua utilização. Segundo a empresa MSL Wireless SA fornecedora de serviços de rede, existe atualmente cerca de dois bilhões de usuários dessa tecnologia e nos últimos cinco anos a velocidade de equipamentos WLAN para internet foi multiplicada por cem, nota-se, portanto wireless que é uma tecnologia emergente e como o trabalho apresentou deve ser estudada dentro do desenvolvimento de um software. Durante o projeto verificou-se que há inúmeras oportunidades para se criar um software adequado a rede e de se estabelecer uma rede adequada ao software. Também foi possível observar que estes são interdependentes é que não há uma maneira de separar o desenvolvimento de software das redes, apesar de atualmente ter sido um fato ocorrente e prejudicial ao projeto. Além disso, dentro das várias pesquisas efetuadas entre os autores e na internet, podem-se compreender a fundo todas as tecnologias envolvidas com o desenvolvimento de software e também as redes de computadores, principalmente as redes wireless e seus aspectos determinantes no desenvolvimento do software conforme o proposto pelo tema. Como se observa no trabalho a tecnologia wireless por ser um conceito atual e emergente demanda diversos estudos no campo de desenvolvimento de software, visando esse ponto sugere-se como pesquisa futura temas como: o estudo de novas arquiteturas de objetos distribuídos, mensurar a comparação entre wireless e par trançado, comparar arquiteturas cliente-servidor e objetos distribuídos. 69 Contudo, com em todos esses conceitos estudados e pesquisados, pode-se concluir que as redes wireless estão presentes no mercado atual proporcionando flexibilidade e facilidades aos desenvolvedores, projetistas, analistas e engenheiros que podem hoje usufruir dessa tecnologia para garantir a criação de softwares de qualidade e adequados as necessidades atuais do mercado. 70 REFERÊNCIAS IEEE. GetIEEE 802. Disponível em: <http://standards.ieee.org/getieee802/index.html>. Acesso em: 23 setembro 2007. MSL Wireless S.A.. A Revolução Wireless. Disponível em: <http://www.mls.com.br/servicos/wireless.cfm>. Acesso em: 11 setembro 2007. RIBEIRO, Priscila. ESTUDO DE TECNOLOGIA WIRELESS PARA APLICAÇÕES E COMPARTILHAMENTO EM REDES. Monografia (Pós-Graduação em Redes de Computadores e Internet) – Centro Universitário Eurípides de Marília, Fundação de Ensino Eurípides Soares da Rocha, Marília, 2005. SOMMERVILLE, Ian. Engenharia de Software. Addison Wesley, 2003. TANENBAUM, Andrew S.. Redes de Computadores. Tradução da 4ª Edição. Campus, 2003. TAROUCO, Liane M. R.. Redes de comunicação de dados. FENAME/MEC e CAPRE/SEPLAN, 1977. Wikipédia. Software Engineering. Disponível em: <http://en.wikipedia.org/wiki/Software_engineering>. Acesso em: 28 agosto 2007. ______. Computer Network. Disponível em: <http://en.wikipedia.org/wiki/Computer_network>. Acesso em: 17 junho 2007. ______. OSI model. Disponível em: <http://en.wikipedia.org/wiki/OSI_model>. Acesso em: 17 junho 2007. ______. TCP/IP model. Disponível em: <http://en.wikipedia.org/wiki/TCP/IP_model>. Acesso em: 21 junho 2007. ______. IEEE 802. Disponível em: <http://en.wikipedia.org/wiki/IEEE_802> Acesso em: 22 junho 2007. 71 TRECENTI, Bruno César L. Um estudo um estudo sobre redes wireless no desenvolvimento de um sistema / Bruno César L. Trecenti; orientador: Ricardo Petruzza do Prado. Marília, SP: [s.n.], 2007. Trabalho de Conclusão (Curso de Administração de Empresas com Habilitação em Análise de Sistemas) – Centro Universitário Eurípides de Marília – Fundação de Ensino Eurípides Soares da Rocha. 1. Redes 2. Wireless 3. Engenharia de Software CDD: 38453