ERRATA Página 16 28 Lê-se Leia-se [FLO2003] 2.2. [FLORES] TEORIA GERAL DA 2.1.1. TEORIA GERAL DA ADMINISTRAÇÃO ADMINISTRAÇÃO 35 2.3. SISTEMAS DISTRIBUIDOS 2.1.2. SISTEMAS DISTRIBUIDOS 35 [SIL2003] [SILVA] 36 [SIL2003] [SILVA] 38 [SIL2003] [SILVA] 40 2.4. SISTEMAS COOPERATIVOS 2.1.3. SISTEMAS COOPERATIVOS 44 2.5. REDES DE COMPUTADORES 2.1.4. REDES DE COMPUTADORES 49 2.6. SISTEMAS OPERACIONAIS 2.1.5. SISTEMAS OPERACIONAIS 58 2.7. AUDITORIA E SEGURANÇA 2.1.6. AUDITORIA E SEGURANÇA 58 [STR2002] [STREBE] 59 [MSC2005] [MICROSOFT] 64 2.8. BANCO DE DADOS 2.1.7. BANCO DE DADOS 66 Capítulo 8 Capítulo 2.1.8 70 2.9. LINGUAGENS DE 2.1.8. LINGUAGENS DE PROGRAMAÇÃO PROGRAMAÇÃO 72 [CHA1996] [CHANDLER] 76 Capítulo 5 Capítulo 2.1.5. 80 2.10. ENGENHARIA DE SOFTWARE 2.1.9. ENGENHARIA DE SOFTWARE 105 Item 4.2 Item 3.1 na sessão Justificativa 124 Na seção 4.6 132 Capitulo 3.4 e capitulo 3.6 Capitulo 2.1.4 e capitulo 2.1.6 135 Posta12l Postal 12 141 Acumulo de papeís Acumulo de papéis No item 5.5 na sessão Materiais e Métodos FUNDAÇÃO COMUNITÁRIA TRICORDIANA DE EDUCAÇAO Decretos Estaduais nº. 9.843/66 e nº. 16.719/74 e Parecer CEE/MG nº. 99/93 UNIVERSIDADE VALE DO RIO VERDE – TRÊS CORAÇÕES/MG Credenciada pelo Decreto Estadual nº. 40.229/98, de 29/12/1998 AUTOMAÇÃO EMPRESARIAL MULTIUSUÁRIO EMPREGANDO CONCEITOS CSCW * POR SISTEMA GROUPWARE: * Computer-Supported Cooperative Work (Trabalho cooperativo suportado por computador) TRÊS CORAÇÕES 2005 EDSON ALVES DE CARVALHO JÚNIOR RONIELTON REZENDE OLIVEIRA AUTOMAÇÃO EMPRESARIAL MULTIUSUÁRIO EMPREGANDO CONCEITOS CSCW * POR SISTEMA GROUPWARE: * Computer-Supported Cooperative Work (Trabalho cooperativo suportado por computador) Monografia de Conclusão de Curso, submetida à Banca Examinadora do Curso de Ciência da Computação, como requisito final à obtenção do grau de Bacharel em Ciência da Computação, sob a orientação do professor Ricardo Resendes Flores e Supervisão da professora Iliana Márcia Lopes da Costa Sales. TRÊS CORAÇÕES 2005 1 EQUIPE TÉCNICA Acadêmicos Edson Alves de Carvalho Júnior Ronielton Rezende Oliveira Professor Orientador Ricardo Resendes Flores Professora Supervisora Iliana Márcia Lopes da Costa Sales Professor Coordenador do Curso Wanderson Gomes de Souza, Ms Colaborador Roniton Rezende Oliveira Revisor Monografia José Reis Donizetti de Oliveira 2 DEDICATÓRIA A minha mãe Rogéria pelo exemplo de vida, luta e dedicação, meu pai Edson pelos ensinamentos. Meus avós e minhas irmãs pela força de todo dia para não desanimar. Edson Alves de Carvalho Júnior Aos meus pais, José Reis e Zêomar, exemplos de vida e persistência, minha fonte de inspiração e refugio na turbulência… A minha avó Dalva (IN MEMORIAN) pelos anos de alegria propiciados… Ronielton Rezende Oliveira 3 "Seja sempre otimista! Faça de cada dificuldade por que passar, um degrau a mais para a sua perfeição. A vitória só tem valor quando é conquistada com luta. Assim, encare todos os problemas da vida como uma oportunidade para avaliar as conquistas das vitórias sobre cada um deles. Eles são degraus de sua subida." Autor Desconhecido 4 AGRADECIMENTOS Edson Alves de Carvalho Júnior Agradeço em primeiro lugar a Deus, por tudo que sou. A minha Mãe Rogéria, que nas mais difíceis horas não me deixou desistir de meu objetivo, e com todo carinho sempre esteve de braços abertos nos problemas e dificuldades enfrentados. A meus avôs Wilson e Janete pelo carinho, ajuda e sempre orando para que meu sucesso fosse alcançado. A minhas irmãs Cynthya e Cynara pelo incentivo, carinho e força em tudo que precisei. A.meu Pai Edson pela esperança da conquistar que sempre sonhou que conquistaria. A meus tios Rose e Paulo, José Maria e Vânia, Alessandro e mesmo que estes longe de mim sempre procuraram ajudar e contribuir no que pudessem. A todos os professores que tive contato em todos os períodos por onde passei do curso de Ciência da Computação – UNINCOR e a experiência e conhecimento que me foi adquirido. Ao professor orientador Ricardo Resendes Flores pelo carinho de um amigo, sempre disposto a ajudar nas dificuldades encontradas. A professora Iliana pela orientação nos momentos onde não sabíamos que rumo tomar. Aos colegas de sala pelo apoio e ajuda nas dificuldades encontradas no desenvolvimento deste. E a todos que por carinho vieram a contribuir para a realização de um sonho. 5 Ronielton Rezende Oliveira Ao Pai Celestial, por nos conceder a VIDA e coragem para enfrentar os desafios. Aos meus pais, José Reis Donizetti de Oliveira e Zêomar Costa Rezende Oliveira, pelo apoio, carinho, amor, compreensão e exemplo de vida. Ao meu irmão, Roniton Rezende Oliveira, por seu empenho e dedicação na realização deste trabalho, pelas criticas e sugestões ao longo do desenvolvimento do projeto. Ao professor orientador e amigo, Ricardo Resendes Flores, pela confiança, orientação e valorosos ensinamentos. Deixo aqui registrado todo respeito, carinho, admiração, por sua dedicação junto aos seus alunos. A professora supervisora, Iliana Márcia Lopes da Costa Sales, pela paciência e compreensão. Ao professor e amigo, Antônio Tibúrcio de Oliveira Junior, por apresentar e orientar nos sobre o mundo FreeBSD e os fundamentos da segurança da informação. Ao amigo, João Pedro de Paula Pannain Souza, por nos apresentar o mundo FreeBSD. Ao amigo, Rodrigo Otávio dos Reis Chediak, pelo apoio nos momentos de dificuldade. A amiga, Nadir Couto Franco, minha madrinha. Aos professores do Curso de Ciência da Computação da UNINCOR, que estabeleceram os fundamentos aplicados durante este trabalho. Aos colegas, que estiveram ao meu lado nos momentos de dificuldade, incentivando e apoiando. A todos que colaboraram direta ou indiretamente, para o êxito deste trabalho. 6 SUMÁRIO LISTA DE ABREVIATURAS E SIGLAS....................................................................... 8 LISTA DE FIGURAS.................................................................................................. 11 LISTA DE TABELAS ................................................................................................. 13 RESUMO................................................................................................................... 14 ABSTRACT ............................................................................................................... 15 I. INTRODUÇÃO ....................................................................................................... 16 II. REVISÃO DE LITERATURA .............................................................................. 18 2.1. Revisão Bibliográfica ...................................................................................... 27 2.2. Teoria Geral da Administração ....................................................................... 28 2.3. Sistemas Distribuidos ..................................................................................... 35 2.4. Sistemas Cooperativos ................................................................................... 40 2.5. Redes de Computadores ................................................................................ 44 2.6. Sistemas Operacionais ................................................................................... 49 2.7. Auditoria e Segurança .................................................................................... 58 2.8. Banco de Dados ............................................................................................. 64 2.9. Linguagens de Programação .......................................................................... 70 2.10. Engenharia de Software ............................................................................... 80 III. JUSTIFICATIVA ................................................................................................... 88 3.1. Problemas ....................................................................................................... 89 3.2. Hipóteses ........................................................................................................ 89 IV. OBJETIVOS ......................................................................................................... 91 4.1. Objetivos Gerais ............................................................................................. 91 4.2. Objetivos Específicos...................................................................................... 91 V. MATERIAIS E MÉTODOS .................................................................................... 93 5.1. Metodologia .................................................................................................... 93 5.2. Recursos Necessários .................................................................................... 93 5.3. Ambiente de Desenvolvimento ....................................................................... 93 5.4. Cronograma de Execução .............................................................................. 98 5.5. Aplicação ...................................................................................................... 101 5.6. AnÁlise do Sistema ....................................................................................... 105 5.7. Diagrama de Fluxo de Dados ....................................................................... 108 5.7.1. Dicionário de Dados do DFD .............................................................. 109 7 5.7.2. Descrição dos Processos do DFD ...................................................... 110 5.8. Modelo de Entidade-Relacionamento ........................................................... 111 5.8.1. Modelo Conceitual .............................................................................. 112 5.8.2. Modelo Lógico..................................................................................... 112 5.8.3. Dicionário de Dados ............................................................................ 113 5.9. Esquema de Navegação............................................................................... 116 5.10. Apresentação .............................................................................................. 117 VI. RESULTADOS E DISCUSSÃO ......................................................................... 137 VII. CONCLUSÃO ................................................................................................... 140 VIII. REFERÊNCIA BIBLIOGRAFICA...................................................................... 143 8 LISTA DE ABREVIATURAS E SIGLAS ACL Access Control Lists ANSI American National Standards Institute API Appplications Programming Interface ARPANET Advanced Research Projects Agency Network ASCII American Standards for Computer Information Interchange ATM Asynchronous Tranfer Mode BIND Berkeley Internet Name Domain BSD Berkeley Software Distribution CASE Computer-Aidede Software Enginnering CERN Conseil Européen pour la Reaserche Nucléaire CGI Common Gateway Interface CLI Command-Line Interface CSCW Computer Supported Cooperative Work CSRG Classic Sports Racing Group CVS Concurrent Versions System DARPA Defense Advanced Research Projects Agency DDL Data Description Language DHCP Dynamic Host Configuration Protocol DML Data Manipulation Language DNS Domain Name Server DSL Digital Subscriber Line DSO Dynamic Shared Objects FTP File Transfer Protocol GNU GNU's Not UNIX GPL General Public License HIDS Host-Based Intrusion Detection Systems HTML HyperText Markup Language HTTP HyperText Transfer Protocol HTTPS HyperText Transfer Protocol Secure IMAP Internet Message Access Protocol INN InterNetNews Package NNTP Sever ISC Internet Systems Consortium 9 ISDN Integrated Services Digital Network ISO International Standardrs Organization ISP Internet Service Providers LAN Local Area Network LGPL Lesser General Public License MAN Metropolitan Area Networks MIT MITSloan School of Management NAT Network Address Translation NCSA National Center for Supercomputing Applications NIDS Network Intrusion Detection Systems NNTP Network News Transport Protocol ODBC Open Data Base Connectivity PC Personal Computer PDF Portable Document Format PHP PHP Hypertext Preprocessor POP3 Post Office Protocol RAM Random Access Memory RDBMS Relational Database Management Systems RDSI-FL Rede Digital de Serviços Integrados de Faixa Larga RFC Request For Comments SGBD Sistema de Gerenciamento de Banco de Dados SGBDR Sistema de Gerenciamento de Banco de Dados Relacional SMP Symmetric MultiProcessor Kernel SMTP Simple Mail Transfer Protocol SQL Structured Query Language SSL Secure Socket Layer TCO Total Cost of Ownership TCP/IP Transmission Control Protocol / Internet Protocol TI Tecnologia da Informação TLS Transport Layer Security UNINCOR Universidade Vale do Rio Verde URL Universal Resource Locator VPN Virtual Private Networks WAN Wide Area Network 10 WINS Windows Internet Name Service WWW World Wide WEB XML Extensible Markup Language 11 LISTA DE FIGURAS FIGURA 1 – MODELO DE PROTEÇÃO EM CAMADAS .......................................... 59 FIGURA 2 – PRINCIPIOS DE SEGURANÇA ............................................................ 60 FIGURA 3 – EXEMPLO DE MARCAÇÃO HTML ...................................................... 76 FIGURA 4 – AMBIENTE DE EXECUÇÃO DA PHP .................................................. 78 FIGURA 5 – EXEMPLO DE CÓDIGO PHP ............................................................... 80 FIGURA 6 – MODELO DA PROTOTIPAÇÃO ........................................................... 86 FIGURA 8 – DREAMWEAVER MX 2004: CODE INTERFACE ................................. 94 FIGURA 9 – DREAMWEAVER MX 2004: DESIGN INTERFACE ............................. 95 FIGURA 10 – MYSQL FRONT: A INTERFACE GÁFICA .......................................... 96 FIGURA 13 – CONSOLE FREEBSD: O ACESSO REMOTO ................................... 97 FIGURA 12 – CONSOLE FREEBSD: SERVIÇOS EM EXECUÇÃO ......................... 98 FIGURA 13 – MACRO VISÃO DO SISTEMA .......................................................... 101 FIGURA 14 – ESCOPO DA FERRAMENTA ........................................................... 102 FIGURA 15 – FLUXO DE COMUNICAÇÃO ............................................................ 104 FIGURA 15 – DFD: DIAGRAMA DE CONTEXTO ................................................... 108 FIGURA 16 – DFD: PROCESSOS DO DIAGRAMA DO FLUXO DE DADOS ......... 109 FIGURA 17 – ER: MODELO CONCEITUAL ........................................................... 112 FIGURA 18 – ER: MODELO LÓGICO..................................................................... 112 FIGURA 19 – ESQUEMA DE NAVEGAÇÃO FERRAMENTA ................................. 117 FIGURA 20 – INTERFACE: CERTIFICADO SSL .................................................... 118 FIGURA 21 – INTERFACE: AMBIENTE SEGURO ................................................. 119 FIGURA 22 – INTERFACE: POLITICA DE PRIVACIDADE .................................... 120 FIGURA 23 – INTERFACE: FORMULÁRIO DE SUPORTE .................................... 121 FIGURA 24 – INTERFACE: FORMULÁRIO DE CONTATO ................................... 122 FIGURA 25 – INTERFACE: AMBIENTE ADMINISTRATIIVO ................................. 123 FIGURA 26 – INTERFACE: CADASTRO DE GRUPOS ......................................... 124 FIGURA 27 – INTERFACE: CADASTRO REGRAS DE MENSAGEM .................... 125 FIGURA 28 – INTERFACE: CADASTRO USUÁRIOS ............................................ 126 FIGURA 29 – INTERFACE: SOLICITAÇÃO DE SUPORTE ................................... 127 FIGURA 30 – INTERFACE: INFORMAÇÕES DE SUPORTE ................................. 128 FIGURA 31 – INTERFACE: RESPOSTA DE SUPORTE ........................................ 128 FIGURA 32 – INTERFACE: PRIMEIRO ACESSO .................................................. 129 12 FIGURA 33 – INTERFACE: VERIFICAÇÃO DE CADASTRO / CPF ...................... 130 FIGURA 34 – INTERFACE: VERIFICAÇÃO DE CADASTRO / MINICURRICULO . 131 FIGURA 35 – INTERFACE: VERIFICAÇÃO DE LOGIN ......................................... 132 FIGURA 36 – INTERFACE: SENHA CRIPTOGRAFADA........................................ 133 FIGURA 37 – INTERFACE: INTERFACE DO USUÁRIO ........................................ 134 FIGURA 38 – INTERFACE: MANUTENÇÃO DADOS CADASTRAIS ..................... 134 FIGURA 39 – INTERFACE: MANUTENÇÃO MINICURRICULO ............................ 135 FIGURA 40 – INTERFACE: AGENDA DE ENDEREÇOS ....................................... 136 13 LISTA DE TABELAS TABELA 1 – CONJUNTO DE TAGS DISPONÍVEIS EM HTML ................................ 74 TABELA 2 – NIVEIS DE ACESSO .......................................................................... 103 TABELA 3 – FLUXO DE COMUNICAÇÃO .............................................................. 103 TABELA 4 – DICIONÁRIO DE DADOS DO DFD .................................................... 109 TABELA 5 – DESCRIÇÃO DOS PROCESSOS DO DFD ....................................... 110 TABELA 6 – DICIONARIO DADOS: TABELA SUPORTE ....................................... 113 TABELA 7 – DICIONARIO DADOS: TABELA LOGIN ............................................. 114 TABELA 8 – DICIONARIO DADOS: TABELA USUARIOS ..................................... 114 TABELA 9 – DICIONARIO DADOS: TABELA GRUPOS_USUARIOS .................... 115 TABELA 10 – DICIONARIO DADOS: TABELA PERMISSOES .............................. 115 TABELA 11 – DICIONARIO DADOS: TABELA CONTATOS_AGENDA ................. 115 TABELA 12 – DICIONARIO DADOS: TABELA GRUPOS_AGENDA ..................... 116 14 RESUMO A possibilidade de haver cooperação entre usuários em sistemas privativos, consigna significado retorno empresarial, pela facilidade de utilização dos recursos disponíveis, considerando a implementação através de mecanismos de cooperação, colaboração e facilidade de comunicação. O trabalho conjunto é desenvolvido com eficiência através da livre circulação da informação, pelo estimulo à inovação, facilitando desta maneira o processo de liderança coletiva. A utilização de sistemas Groupware propicia o relacionamento da empresa com seus clientes, fornecedores (extranet), funcionários e/ou filiais (intranet); baseado no sistema de compartilhamento de áreas de trabalho específicas, desde que devidamente autenticados e autorizados, com a caracterização de duas ou mais pessoas trabalharem juntas e o acrônimo do compartilhamento de experiências e conhecimento, com a automação da política de comunicação e conseqüentemente via de fato a criação de memória organizacional da empresa, o que resulta na superação de fatores determinantes para obtenção significativa de lucros pela superação das barreiras geográficas e customização do tempo. O processo da automatização de "escritório" resulta em considerável diminuição do fluxo de circulação de papel e ganho na utilização dos recursos de computadores, tornando seu uso simplificado para qualquer pessoa, pelo advento do software de colaboração e cooperação, que na desenvoltura do processo de comunicação existente surge com o advento das inovações tecnológicas, aplicado na estrutura da transmissão das informações empresariais, pelo aproveitamento da infra-estrutura existente, enquadrando-se nos moldes da política de comunicação manual, quando considerado o processo de fluxo de dados atual, e resultando nos ganhos de satisfação do cliente e empresário. A ferramenta Groupware, considerada como software, implementa a tecnologia de troca de mensagens entre os usuários armazenando todo um histórico de transmissão efetuada, possibilitando ainda a definição de agenda de eventos para o grupo: chat‟s entre as comunidades envolvidas, troca de arquivos com armazenamento por períodos indeterminados, e ainda apresenta aos usuários informação de contato de todas as pessoas cadastradas no sistema. É importante entender que Groupware não é apenas mais um estágio da tecnologia de computação. Seu objetivo é permitir a eficácia dos grupos existentes ao invés de impor práticas que causem mudanças radicais na forma de trabalho. 15 ABSTRACT The possibility there to be cooperation among users in private systems consigns meaning managerial return for the easiness of use of the available resources, considering the implement through cooperation mechanisms, collaboration and communication easiness, the united work is developed with efficiency, through the free circulation of the information, for the I stimulate the innovation, facilitating of this sorts out the process of collective leadership. The use of systems Groupware propitiates the relationship of the company with your customers and suppliers (extranet) and with employees filial and / or (intranet), based on the system of share of work areas you specify, since properly authenticated and authorized, with the characterization of two or more people to work committees and the acronym of the share of experiences and knowledge, with the automation of the communication politics and consequently he/she saw the creation of memory organization of the company in fact, what results in the overcome of decisive factors for significant obtaining of profits for the overcome of the geographical barriers and build of the time. The process of the office " automation results in considerable decrease of the flow of paper circulation and earnings in the use of the resources of computers, turning your use simplified for anybody, for the coming of the software of collaboration and cooperation, that it appears with the coming of the technological innovations in the agility of the process of existent communication, applied in the structure of the transmission of the managerial information, for the use of the existent infrastructure, being framed in the molds of the politics of manual communication, when considered the process of flow of data current, and resulting in the earnings of the customer's satisfaction and entrepreneur. The tool Groupware, considered as software, it implements the technology of change of messages among the users storing an entire report of made transmission, still making possible the definition of calendar of events for the group; chat's among the involved communities; change of files with storage for uncertain periods; and it still presents to the users information of all the people's contact registered in the system. It is important to understand that Groupware is not just one more apprenticeship of the computation technology. Your objective is to allow the effectiveness of the existent groups instead of imposing practices that cause radical changes in the work form. 16 I. INTRODUÇÃO "A educação faz um povo fácil de ser liderado, mas difícil de ser dirigido; fácil de ser governado, mas impossível de ser escravizado." Henry Peter Este trabalho tem a finalidade de documentar todo o processo envolvido na elaboração da Ferramenta TSDJ Groupware, idealizada durante o desenvolvimento do Projeto de Conclusão de Curso de Ciência da Computação – PCC. O trabalho foi desenvolvido durante as práticas de Estágio Supervisionado da Universidade Vale do Rio Verde – UNINCOR, no período de Julho de 2004 a Maio de 2005. A ferramenta Groupware consiste em software que implementa a tecnologia de troca de mensagens entre os usuários armazenando todo um histórico de transmissão efetuada, possibilitando ainda a definição de agenda de eventos para o grupo: chat's entre as comunidades envolvidas, troca de arquivos com armazenamento por períodos indeterminados, e ainda apresenta aos usuários informação de contato de todas as pessoas cadastradas no sistema. Conforme [FLO2003], que cita o Professor Thomas Malone do MIT: "O Groupware, talvez mais que qualquer outra tecnologia de informação, possibilita-nos mudar as maneiras como as pessoas se relacionam no trabalho. Penso que isto nos coloca perante uma escolha. Podemos usar este novo potencial para criar trabalhos mais produtivos e gratificantes para os seus executantes, ou podemos usar este conceito para criar locais de trabalho menos agradáveis e socialmente mais improdutivos". Fato que torna o Groupware um desafio a ser alcançado, uma nova metodologia de ensino e pesquisa, acima de tudo uma revolução no processo de interação e produtividade, desde que bem empregado e adaptado as necessidades das corporações. A primeira parte deste documento, a pesquisa de elaboração, foi dividida em duas partes: Revisão de Literatura e Revisão Bibliográfica. 17 Na Revisão de Literatura são apresentadas: fontes de consulta e as obras que durante todo o processo de desenvolvimento foram as tangentes seguidas como orientações e fontes de esclarecimento e dúvidas, bem como para obtenção de exemplos. Na Revisão Bibliográfica, foi apresentado um contexto esclarecedor e delimitador de situação. A discussão elaborada nestes capítulos segue uma sistemática de contextualização do tema proposto e uma abordagem ampla das disciplinas envolvidas. É apresentada da seguinte forma: o primeiro capítulo trata da Teoria Geral da Administração, estabelecendo os conceitos primordiais as organizações e o tratamento hierárquico de informações. O segundo capítulo, introduz a relação de sistemas distribuídos e seu funcionamento transparente ao usuário. O terceiro capítulo, apresenta os sistemas cooperativos, seus fundamentos e maneiras de utilização de ferramentas de colaboração no contexto humano. O quarto capítulo faz uma visão geral de redes de computadores, através do histórico de utilização de máquinas individualizadas e o novo contexto de utilização dos computadores interligados. O quinto capítulo, apresenta o sistema operacional FreeBSD e as recomendações de ambiente para execução da ferramenta. O sexto capítulo, auditoria e segurança, traçam as necessidades de proteção da informação no contexto globalizado. O sétimo capitulo, vem definir os bancos de dados, apresentando suas principais características, e ainda neste nos é apresentado o banco de dados MySQL. O oitavo capítulo relaciona as linguagens de programação utilizadas no sistema, HTML, PHP e SQL. O nono capitulo, faz uma abordagem conceitual sobre a engenharia de software e a necessidade de sua utilização em projetos desta natureza. A segunda parte deste documento, a ferramenta foi tratada também em duas partes: Desenvolvimento e Implementação. A parte destinada ao desenvolvimento apresenta as características físicas e lógicas do sistema, bem como sua apresentação. A parte reservada a implementação foi um modelo sugestivo para que a ferramenta possa ganhar vida quando considerada a morte do protótipo e o renascimento em linha de produção. 18 II. REVISÃO DE LITERATURA "Um livro é como uma janela. Quem não o lê, é como alguém que ficou distante da janela e só pode ver uma pequena parte da paisagem." Kahlil Gibran AHTO, Jouni. Et al. Manual do PHP, Copyright © 1997 – 2004 PHP Documentation Group. Tradução do Original para o Português: 2004. Disponível em < http://www.php.net/docs.php >. Originalmente projetada por Rasmus Lerdof nos idos de 1994, PHP, que significa "PHP: Hypertext Preprocessor", é uma linguagem de programação de ampla utilização, interpretada, que é especialmente interessante para desenvolvimento para a WEB e pode ser mesclada dentro do código HTML. A sintaxe da linguagem lembra C, Java e Perl, e é fácil de aprender. O objetivo principal da linguagem é permitir aos desenvolvedores escrever páginas que serão geradas de forma dinâmica e com rapidez, mas você pode fazer muito mais do que isso com PHP. Os programas PHP4 são executados por meio de um navegador da WEB, onde os mesmos estão residentes em um servidor WEB, responsáveis pela sua execução e envio dos resultados provenientes da requisição ao solicitante. AXMARK, David. Et al. MySQL Technical Reference for Version 5.0.0-alpha. Copyright © 1997-2003 MySQL AB. Tradução do Original para o Português por Daniel Coelho Teobaldo e Carlos Henrique Paulino: 2004. Disponível em < http://www.mysql.com/documentation/ >. Este é o manual de referência MySQL: ele documenta o MySQL até a versão 5.0.0-alpha. Mudanças funcionais são sempre indicadas com referência a versão, assim este manual também pode ser utilizado caso você esteja utilizando uma versão mais antiga do MySQL (como 3.23 ou 4.0-produção). Também a referência a versão 5.0 (desenvolvimento). Sendo um manual de referência, ele não fornece instruções gerais sobre SQL ou conceitos de banco de dados relacionais. Como o Programa do Banco de Dados MySQL está sob constante desenvolvimento, o manual também é atualizado freqüentemente. A versão mais recente deste manual está disponível em http://www.mysql.com/documentation/ em diferentes formatos, incluindo HTML, PDF, e versões HELP do Windows. O 19 documento original é um arquivo Texinfo. A versão HTML é produzida automaticamente usando uma versão modificada do texi2html. A versão texto e Info são produzidas com makeinfo. A versão PostScript é produzida usando texi2dvi e dvips. A versão PDF é produzida com pdftex. Se você tiver dificuldades de encontrar informações no manual, você pode tentar a versão disponível em http://www.mysql.com/doc/. Se você tiver qualquer sugestão a respeito de adições e correções neste manual, por favor, envie-os para a equipe de documentação em [email protected]. Este manual foi inicialmente escrito por David Axmark e Michael (Monty) Widenius. Atualmente é mantido pela Equipe de Documentação da MySQL, que conta com Arjen Lentz, Paul DuBois e Stefan Hinz. Para outros colaboradores, veja Apêndice C [Credits], Pagina 945. A tradução deste manual foi feita por Daniel Coelho Teobaldo e Carlos Henrique Paulino sob a supervisão da EAC Software. Os direitos autorais (2003) deste manual pertence à companhia Sueca MySQL AB. Veja Seção 1.4.2 [Direitos Autorais], Página 17, do manual. BEHLENDORF, Brian. Et. al. Apache HTTP Server Version 2.0 - English Version. Copyright 1999-2004 The Apache Software Foundation. Disponível em < http://apache.usp.br/httpd/docs/ >. O Projeto apache é um esforço colaborativo de desenvolvimento de software, criado para ser robusto, em um grau comercial, com a implementação de código fonte livremente disponível de um servidor HTTP. O projeto é administrado juntamente por um grupo de voluntários localizado ao redor do mundo, usando a Internet e a WEB para se comunicar, planejar, e desenvolver o servidor e sua documentação relacionada. Estes voluntários são conhecidos como o Apache Group. Além das centenas de usuários que contribuíram com idéias, código, e documentação ao projeto. Em fevereiro de 1995, o software de servidor mais popular na WEB era o daemon de HTTP de domínio público, desenvolvido por Rob McCool, do Centro Nacional para Aplicações de Supercomputing, Universidade de Illinois, Urbana-Champaign. Porém o desenvolvimento daquele HTTPD tinha protelado depois que Rob deixasse NCSA na metade de 1994, e muitos webmasters tinham desenvolvido suas próprias extensões e muitas eram as dificuldades de manutenção que eram encontradas pela falta de uma distribuição comum. Um grupo pequeno destes webmasters, contatados por email, se reuniu com a finalidade de coordenar as mudanças (na forma de 20 "remendos"). Brian Behlendorf e Ckiff Skolnick reuniram uma lista de clientes e informações compartilhadas. Ao final de fevereiro, oito contribuintes formaram a fundação original do Apache Group: Brian Behlendorf, Roy T. Fielding, Rob Hartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert S. Thau, Andrew Wilson; com contribuições adicionais de Eric Hagberg Frank e Peters Nicolas Pioch. CHIAVENATO, Idalberto. Teoria Geral da Administração. [Capítulo 10: Decorrências da abordagem clássica e neoclássica – tipos de organização]. São Paulo: McGrawHill do Brasil, 1979. Segundo Chiavenato, “…este livro é uma tentativa de resposta aos novos desafios com que os executivos que labutam em Administração estão se defrontando ultimamente. À medida que o ambiente de trabalho se torna cada vez mais turbulento e instável, maior a necessidade de opções diferentes para a resolução de problemas…”, continuando nos prefácios do autor, “…à medida que o executivo em Administração se desloca de trabalhos operacionais voltados para o campo da ação – onde utiliza suas habilidades práticas de saber fazer certas coisas corretamente – para atividades administrativas propriamente ditas voltadas para o campo do diagnóstico e da decisão – onde utiliza suas habilidades conceituais de diagnosticar situações e definir e estabelecer estratégias de ação adequadas – maior a necessidade de se fundamentar conceitos, valores e teorias que lhe permitam o balizamento adequado de seu comportamento.”, o professor menciona sabiamente que “…com a apresentação das diversas teorias das organizações e da sua administração, procurei oferecer um leque de diferentes alternativas de abordagens e pontos de vista acerca da administração das organizações. Cada abordagem se fundamenta em uma diferente perspectiva acerca das organizações, em uma diferente maneira de concepção das características da natureza humana, dos objetivos e valores considerados, etc.” e acima de tudo, conclui: “…guiei-me apenas pela intenção de oferecer algo que contribua para a melhoria da qualidade de vida nas organizações, através da melhoria de sua administração.”. CHOI, Wankyu. Et al. Beginning PHP4 – Programando, Tradução do Original: Beginning PHP4: Aldir José Coelho Correia da Silva e Flávia Cruz. São Paulo. Makron Books: 2001. 21 A PHP é uma tecnologia em rápido crescimento que permite aos projetistas construir aplicativos interativos e dinâmicos na WEB, incorporando as informações de um servidor de banco de dados e incluindo recursos como a integração do correio eletrônico e imagens dinamicamente geradas. A PHP4 adicionou vários recursos para tornar o desenvolvimento de aplicativos WEB ainda mais fácil. DNS & Bind. Berkeley Internet Name Domain. © 2002 Bind.com. Disponível em < http://www.bind.com/bind.html >. Em ambiente Unix, o serviço DNS é implementado através do software BIND, desenvolvido e com o suporte da Internet Software Consortion, que também mantém o DHCP e o INN. O BIND é um sistema cliente servidor. O lado cliente do BIND é chamado resolver. Atualmente encontra-se na distribuição 9.x. Suas configurações são criticas na segurança de sistemas, sendo grande alvo da comunidade black-hat. Basicamente a idéia do DNS é cadastrar os hosts (e seus endereços IP) em um determinado computador – o servidor DNS, ao qual são feitas solicitações de resolução de nome: quando um computador precisa saber a qual endereço IP um nome se refere, solicita a resolução desse nome ao servidor DNS, que busca no seu cadastro o endereço IP correspondente e fornece ao computador solicitante; em resumo visa facilitar a resolução dos hosts numa rede através da utilização de um “nome” amigável em vez do endereço IP do host. FLORES, Ricardo Resendes. Apostila de Sistemas Cooperativos. Três Corações, 2003. Disciplina de Sistemas Cooperativos do Curso de Bacharelado em Ciência da Computação – UNINCOR, 2003. A despeito dos tremendos esforços despendidos para diminuir custos e melhorar a produtividade, as empresas ainda estão enfrentando os mesmos problemas há mais de 30 anos, desde os primórdios da informática comercial: como comunicar e gerenciar o vasto fluxo de dados e informações gerados diariamente. É surpreendente como, apesar das inúmeras inovações tecnológicas, a forma de trabalho e de comunicação nas empresas mudou muito pouco. Esta apostila realiza um levantamento das principais ferramentas comerciais Groupware para intranets corporativas. 22 FreeBSD Handbook. Copyright © 1995-2004 por The FreeBSD Documentation Project. Tradução do Original para o Português: 2004. Disponível em < http://doc.fugspbr.org/handbook/index.html >. Bem vindo ao FreeBSD! O handbook aborda a instalação e o uso diário do FreeBSD 4.10-RELEASE e do FreeBSD 5.2.1-RELEASE. Este manual é um trabalho em andamento e é o resultado do trabalho de muitos indivíduos. Muitas sessões ainda não existem e algumas das que existem precisam ser atualizadas. Se você está interessado em ajudar com este projeto, envie um e-mail para lista de discussão do projeto de documentação do FreeBSD. A ultima versão deste documento está sempre disponível no WEB site do projeto FreeBSD. Ele também pode ser obtido em uma grande variedade de formatos e opções de compactação a partir do Servidor de FTP do projeto FreeBSD, ou em um dos numerosos sites espelhos. FreeBSD Project. FreeBSD: The Power To Serve. © 1995-2004 The FreeBSD Project. Disponível em < http://www.freebsd.org/ >. Em síntese, FreeBSD é um sistema operacional UNIX-like para plataformas i386 e Alpha/AXP, baseado no ``4.4BSD-Lite'' da Universidade da Califórnia em Berkeley, com alguns aprimoramentos adotados do ``4.4BSD-Lite2''. O FreeBSD também é baseado, indiretamente, na conversão de William Jolitz conhecida como ``386BSD'' para a plataforma i386 do ``Net/2'' da Universidade da Califórnia, em Berkeley; apesar de que pouquíssimo código originado do 386BSD ainda exista no FreeBSD. HATCH, Brian. LEE, James. KURTZ, George. Hackers Expostos - Linux. Tradução do Original - Hacking Linux Exposede: Linux Security Secrets & Solutions para o Português por Aldir José Coelho Corrêa da Silva. São Paulo: Pearson Education do Brasil, 2002. No mundo em constante mudança das comunicações globais de dados, conexões de baixo custo da Internet e rápido desenvolvimento de softwares, a segurança está freqüentemente sendo comprometida. O Linux sempre foi considerado o parque de diversões digital dos hackers. Muitas invasões, explorações e ferramentas de segurança em rede são escritas no Linux porque sua disponibilidade é imediata, como se defender dos ataques mais recentes é o 23 objetivo de compreensão desta obra, que explora o modo sinistro de pensar do hacker. JEPSON, Brian. PECKHAM, Joan. SADASIV, Ram. Programando Aplicativos de banco de Dados em Linux. Tradução do original: Database Application Programming with Linux. Jeremias R. D. P. Santos e Rogério Maximiliano dos Santos. São Paulo. Makron Books, 2002. A popularidade do Linux como uma solução de programação empresarial tem aumentado cada vez mais graças ao suporte dos grandes fabricantes de software para banco de dados. Com novo software sendo lançado a cada ano, e com melhorias constantes no software existente, os programadores precisam poder desenvolver aplicativos de bancos de dados usando o Linux. Este guia detalhado e que envolve aplicações práticas, escrito por especialistas nas comunidades de banco de dados e de código-fonte aberto, oferece todas as ferramentas, técnicas e as informações de que você precisará para começar a se tornar um especialista em banco de dados Linux. Apresentando os fundamentos sobre o desenvolvimento de banco de dados no mundo real, o livro inicia incluindo a coleta dos requisitos, o projeto da interface do usuário e do banco de dados, e o projeto orientado a objetos. OpenSSH. This site Copyright © 1999-2004 OpenBSD. Disponível em < http://www.openssh.com/ >. OpenSSH é uma versão grátis do protocolo SSH um conjunto de ferramentas de conectividade de rede que inúmeras pessoas na Internet confiam. Muitos usuários de telnet, rlogin, ftp, e outros programas que poderiam não perceber que a senha dele é transmitida livremente, sem criptografia pela Internet, mas o OpenSSH codifica todo o tráfico (inclusive senhas) eliminando a espionagem efetivamente na conexão, e outros ataques de rede. Adicionalmente, OpenSSH provê umas muitas capacidades de segurança, como também uma variedade de métodos de autenticação. O conjunto de ferramentas OpenSSH inclui o ssh programa que substitui rlogin e telnet, scp que substitui rcp, e sftp que substitui ftp. OpenSSH é desenvolvido principalmente pelo Projeto OpenBSD, e sua primeira inclusão em um sistema operacional estavam no OpenBSD 2.6. O software é desenvolvido fora do E.U.A., enquanto usando código de asperamente 10 países, e é livremente usado e reusado por todo o mundo debaixo de uma licença BSD. 24 OpenSSL. Welcome to the OpenSSL Project. Copyright © 1999-2002 The OpenSSL Project. Disponível em: < http://www.openssl.org/ >. O Projeto de OpenSSL é um esforço de colaboração mútua para desenvolver um robusto toolkit de Fonte Aberto que implementa a Secure Sockets Layer (v2/v3 de SSL) e Transport Layer Security (v1 de TLS) protocolos de criptografia de propósito geral. O projeto é administrado por uma comunidade mundial de voluntários que usam a Internet para comunicar, planejar e desenvolver o toolkit da OpenSSL e sua documentação relacionada. OpenSSL está baseado na excelente biblioteca de SSLeay desenvolvida por Eric A. Young e Tim J. Hudson. O toolkit de OpenSSL é autorizado sobre uma licença do estilo Apache que basicamente é grátis para adquirir e usar a nível comercial e propósitos nãocomerciais sujeita a algumas condições de licença simples. PALMA, Luciano. PRATES, Rubens. Guia de Consulta Rápida TCP/IP. São Paulo. Ed Novatec: 2000. Este guia de consulta rápida contém uma referencia completa do TCP/IP. Inclui tópicos como: arquitetura, roteamento, DNS, WINS, DHCP, FTP, TELNET, PING e muito mais. Afinal o TCP/IP é o protocolo utilizado na Internet, e está se tornando o padrão das redes coorporativas. Seu conhecimento traz um grande diferencial profissional aqueles que utilizam redes de computadores. Este guia é indicado tanto para o usuário que quer um primeiro contato com o TCP/IP, quanto para o administrador que o utiliza diariamente. PETROVIC, Dušan. SQL Server 2000 – Guia Prático. Tradução do original – SQL Server™ 2000 – A Beginner‟s Guide para o português por César Camargos, Rogério Maximiliano, João Tortello. São Paulo: MAKRON Books Ltda., 2001. A solução rápida para apreender e começar a trabalhar com o SQL Server 2000. Desenvolva e aperfeiçoe aplicativos de larga escala utilizando o SQL Server 2000. Este livro apresenta de maneira minuciosa como usar este banco de dados e apresenta os principais conceitos relacionados a banco de dados. PRATES, Rubens. Guia de Consulta Rápida MySQL. São Paulo. Ed Novatec: 2000 O MySQL é um gerenciador de banco de dados poderoso, estável, extremamente eficiente, com milhares de instalações no mundo inteiro. É a solução ideal para empresas e sites de pequeno e médio portes. Este guia contém uma referencia 25 completa dos recursos do MySQL. Descreve comandos SQL, funções, utilitários, operadores, tipos de dados e muito mais. É indicado tanto para programadores WEB, quanto para administradores de banco de dados, sendo indispensável para quem quer obter o máximo proveito do MySQL, sem perder tempo consultando volumosos manuais sendo prático para carregar e consultar. PRESSMAN, Roger S. Engenharia de Software. Tradução do original: Software Enginnering – A Practitionar‟s Approach, 3ª ed. Por José Carlos Barbosa dos Santos. São Paulo: Makron Books, 1995. Esta obra discute a disciplina de engenharia de software da década de 90, estruturada em cinco partes possibilita o entendimento fácil e a leitura agradável: Software, o processo e sua administração, apresenta um cuidadoso tratamento das questões de gerenciamento de projetos de software; Análise dos requisitos de software e sistemas, cobre os fundamentos da analise e os requisitos de métodos e notações de modelagem; O Projeto e implementação de software, apresenta seis capítulos que enfatizam tanto os métodos convencionais como os orientados a objetos; Garantindo, verificando e mantendo a integridade do software, destaca as atividades que são aplicadas para garantir a qualidade ao longo de todo o processo de engenharia de software; O Papel da automação, discute o impacto das ferramentas CASE sobre o processo de desenvolvimento de software. PROFTPD. Copyright (C) 1999-2003, The ProFTPD Project. Disponível em: < http://www.proftpd.org/ >. ProFTPD cresceu para ser um seguro e configurável servidor de FTP. Há um número muito limitado de servidores de FTP que rodam em Unix atualmente (ou Unix-like) os anfitriões. Comumente o servidor usado é wu-ftpd. Enquanto wu-ftpd provê desempenho excelente e geralmente é um produto bom, falta numerosas características achadas em Win32 mais novo servidores de FTP e tem uma história de segurança pobre. Muitas pessoas, inclusive os desenvolvedores que trabalham no ProFTPD, passaram muitas vezes fixando bugs e eliminando características no wu-ftpd. Infelizmente, ficou claro depressa que para se ter servidor de FTP completo era necessário para implementar e configurar as características desejadas. ProFTPD não é um servidor baseado em qualquer outro servidor, é uma árvore de fonte independente de baixo para cima. 26 POSTFIX Home Page. Postfix project. In: Postfix Documentation. Disponível em < http://www.postfix.org/documentation.html >. O Postfix é um MTA criado por Wietse Venema, com o intuito de ser rápido fácil de administrar e seguro, mantendo também a compatibilidade com o Sendmail. Era originalmente conhecido com Vmailer, tendo sido lançado em 1998 como IBM Secure Mailer e posteriormente como Postfix. É um produto de fonte aberto liberado com a licença pública da IBM. Embora a IBM tenha apoiado o desenvolvimento do Postfix, ela se abstém de controlar à sua evolução. O objetivo é ter o Postfix instalado na quantidade máxima de sistemas possíveis. A fim de atingir esta meta, o software é distribuído sem restrições, de modo que possa evoluir com entradas fornecidas e sob controle de seus usuários. Em outras palavras a IBM lançou o Postfix somente uma vez. SOARES, Luiz Fernando Gomes. Et al. Redes de Computadores: das LANs, MANs e WANs às Redes ATM. 2ª Edição. Rio de Janeiro: Campus, 1995. Esta obra oferece uma visão completa e coerente sobre redes de computadores apresentando as funções e serviços realizados por LANs, MANs e WANs, exemplificados com padrões de fato e jure. Rede de computadores aborda os conceitos essenciais, discorre por todas as tecnologias e discute as redes ATM, em particular a RDSI-FL, escrito para estudantes de graduação, pós-graduação e para profissionais da Ciência da Computação, este livro reflete a ampla experiência dos autores. STOCO, Lúcio M.. Guia de Consulta Rápida Integrando PHP com MySQL. São Paulo. Ed Novatec: 2000. Este guia descreve de forma prática e direta a integração entre a linguagem PHP e o banco de dados MySQL, apresentando conceitos básicos da linguagem PHP, suas funções de conectividade nativa com o MySQL, com exemplos práticos como desenvolver páginas WEB dinâmicas utilizando MySQL. Descreve um exemplo completo de cadastro, alteração, exclusão e pesquisa de dados, incluindo o código-fonte completo. Útil para desenvolvedores iniciantes e experientes como um guia de referência rápido mostrando os principais recursos, tais como: instalação do PHP e do MySQL no ambiente Windows, conexão com banco de dados, tratamento de erros e códigos avançados, sendo indispensável 27 para quem deseja conhecer e implementar de maneira rápida páginas WEB dinâmicas com banco de dados MySQL. STREBE, Matthew. PERKINS, Charles. Firewalls. Uma Fonte Indispensável de recursos para os Administradores de Sistema. Tradução do Original - Firewalls 24 seven para o Português por Lavio Pareschi. São Paulo: MAKRON Books, 2002. Firewalls fornece informações detalhadas e de alto nível que os profissionais de rede realmente precisam saber para alcançar o nível de especialistas, a obra possui informação avançada sobre como entender a filtragem de pacotes, a conversão dos endereços de rede, a criptografia, a autenticação e o tunelamento; aborda entre outros os diferentes tipos de hackers que ameaçam as redes, suas técnicas de invasão e as melhores maneiras de se proteger contra eles, sendo uma obra completa com informações avançadas onde é apresentado tudo que você precisa saber para proteger sua rede ao conectá-la na internet. SUEHRING, Steve. MySQL, a Bíblia, Tradução do Original: MySQL Bible: Edson Furmankiewicz. Rio de Janeiro. Campus: 2002. O MySQL é o líder entre os sistemas de gerenciamento de banco de dados relacional de código-fonte aberto. Ele é poderoso, estável e, o melhor de tudo, é livre e gratuito. Abordando tudo desde os princípios básicos de SGBDR até tópicos avançados, como replicação, o veterano em banco de dados Steve Suering mostra como montar e manter seu próprio sistema de banco de dados MySQL. Seja você um iniciante em banco de dados que precisa de ajuda com a interface de linha de comando, um administrador que deseja dicas sobre segurança e ajuste de desempenho ou um desenvolvedor procurando toda a verdade sobre a construção de aplicações Perl, PHP, Java e ODBC compatíveis com MySQL, este é o único guia de que precisa para aproveitar todo o poder do MySQL. 2.1. REVISÃO BIBLIOGRÁFICA "Estratégia é a arte ou ciência de saber identificar e empregar meios disponíveis para atingir determinados fins, apesar de a eles se oporem obstáculos e/ou antagonismos conhecidos." Sun Tzu 28 2.2. TEORIA GERAL DA ADMINISTRAÇÃO Para, [CHIAVENATO] a Administração revela-se nos dias atuais, como uma das áreas do conhecimento humano mais impregnadas de complexidades e desafios. O profissional que utiliza à Administração como meio de vida, pode trabalhar nos mais variados níveis de uma organização: desde o nível hierárquico de supervisão elementar até o nível de dirigente máximo. Não há duas organizações iguais, assim como não existem duas pessoas idênticas. Cada organização tem seus objetivos, o seu ramo de atividade, os seus dirigentes, o seu pessoal, os seus problemas internos e externos, o seu mercado, sua situação financeira, sua tecnologia, os seus recursos básicos, sua ideologia, política de negócios, enfim. Em cada organização, portanto, o administrador soluciona problemas, dimensiona recursos, planeja sua aplicação, desenvolve estratégias, efetua diagnósticos de situações, etc., exclusivos daquela organização. Alguns autores salientam que talvez não haja área de atividade humana tão importante quanto à administração, isto porque vivemos em uma civilização onde o esforço cooperativo do homem é a base da sociedade, então constatamos que a tarefa básica da administração é de fazer as coisas através das pessoas, fortalecendo o trabalho em conjunto na busca de resultados, onde estes dependem principalmente da capacidade daqueles que exercem funções administrativas. O avanço tecnológico e o desenvolvimento do conhecimento humano, por si apenas, não produzem efeitos se a qualidade da administração efetuada sobre os grupos organizados de pessoas não permitir uma aplicação efetiva destes recursos humanos. Por definição [CHIAVENATO], apresenta que o trabalho do administrador em uma organização qualquer seja ele um supervisor de primeira linha ou o dirigente máximo da organização, é essencialmente o mesmo. Embora a tarefa que cabe ao administrador possa variar infinitamente, o fato permanece, onde os princípios gerais relacionados com a tarefa de administrar se aplicam a qualquer tipo ou tamanho de organização. Concluindo a necessidade da administração [CHIAVENATO], apresenta que toda organização, precisa ser administrada adequadamente para alcançar os seus objetivos com a maior eficiência e economia de ação e de recursos. Devido às suas limitações físicas, biológicas e psíquicas, o homem tem necessidade de cooperar com outros homens para, em conjunto, alcançarem objetivos. A 29 coordenação do esforço humano torna-se um problema essencialmente administrativo. Onde quer que a cooperação de indivíduos no sentido de alcançar um ou mais objetivos comuns se torne organizada e formal, o componente essencial e fundamental desta associação é a Administração – a função de conseguir fazer as coisas através das pessoas, com os melhores resultados. É importante estabelecer o contexto claro de distinção entre Administração e Organização, ainda que reconhecendo o emprego de ambas as palavras como sinônimos, [CHIAVENATO] em sua obra Fayol, faz uma profunda distinção entre ambas estruturas. Para ele, “administração” é um foco do qual a “organização” é uma das partes. O seu conceito amplo e compreensivo de administração, como um conjunto de processos entrosados e unificados, abrange aspectos que a organização por si só não envolveria, tais como os da previsão, comando e controle. A “organização” abrange somente o estabelecimento da estrutura e da forma, sendo, portanto, estática e limitada. Antes de apresentarmos o modelo de organização, é pertinente uma breve pausa, para que sejam estabelecidos os conceitos de grupo e as mudanças de paradigma implícito, nesta estrutura de agrupamento administrativa. A necessidade de se definir claramente com objetivos bem determinados à estrutura de grupos dentro de uma organização, pois é preciso mudar o comportamento das pessoas nas suas relações recíprocas, sem que se restrinja sua liberdade, nem limite o seu potencial de desenvolvimento, para que aceitem e se respeitem reciprocamente. Como a mudança ou a resistência à mudança é grandemente influenciada pela natureza dos grupos aos quais as pessoas pertencem, as tentativas de mudanças devem necessáriamente considerar a dinâmica dos grupos. Através de Cartwright, [CHIAVENATO] define que os grupos podem participar do processo de mudança em pelo menos três perspectivas diferentes, a saber: a) o grupo como instrumento de mudança – aparece como fonte de influência sobre seus membros. Os esforços para mudar o comportamento podem encontrar apoio ou resistência do grupo sobre seus membros. b) o grupo como meta de mudança – para mudar o comportamento de indivíduos, pode-se tornar necessário mudar os padrões do grupo, 30 seu estilo de liderança, seu ambiente emotivo, etc. Muito embora a finalidade possa ser a mudança do comportamento de indivíduos, o grupo se torna à meta da mudança. c) o grupo como agente de mudança – certas mudanças de comportamento podem ser provocadas somente através de esforços organizacionais de grupos que atuem como agentes de mudança, onde a resistência foi definida por Lewin como um fenômeno geral dos organismos sociais. Pode ser esquematizada como uma lei de ação e reação: toda ação tende a provocar uma reação que visa a anular os seus efeitos. Para [CHIAVENATO], o conceito de grupo é dos mais difíceis de definir. Não basta uma convergência de pessoas no espaço e no tempo para construir um grupo. Nem tampouco o define o fato de terem tais pessoas um ou vários traços em comum, fato que constituirá apenas uma classe. O que caracteriza o grupo humano é o fato de terem os seus membros um alvo comum, um objetivo comum. O Grupo, portanto, tem as seguintes características: a) Uma finalidade, ou seja, um objetivo comum; b) Uma estrutura; c) Uma organização dinâmica; e d) Uma coesão interna. Em resumo, [CHIAVENATO] determina que o grupo formado de menor número de pessoas tende a desfrutar de um moral mais elevado do que os grupos formados por número elevado de indivíduos, onde todos fazem o mesmo serviço e onde há dificuldade de se formar grupos estáveis e perfeitamente identificados, e assim saber lidar com pessoas, individualmente ou em grupos, passou a ser um dos maiores problemas da empresa, no sentido de se obter o maior rendimento da mãode-obra, dentro do máximo de satisfação e do mínimo de desgaste, onde o administrador tem a função, de um lado, de ser capaz de criar condições para que sua empresa atinja da melhor forma os seus objetivos e, de outro lado, criar condições para que seu pessoal atinja os seus objetivos individuais. Para [CHIAVENATO], a organização como função administrativa, envolve a noção de organização como uma parte do processo administrativo. Neste sentido: “é o agrupamento de atividades necessárias para atingir os objetivos da empresa e a 31 atribuição de cada agrupamento a um executivo com devida atividades. A autoridade para organização atingir requer, tais pois, o estabelecimento de relações de autoridade com disposições para a coordenação entre as mesmas, tanto vertical como horizontalmente, na estrutura da empresa”. Mantendo a linha de raciocínio de [CHIAVENATO], após o planejamento, geralmente segue-se a função de organização, dentro dos moldes clássicos e neoclássicos. Para que os objetivos possam ser atingidos, os planos executados, e as pessoas possam trabalhar eficientemente, as atividades precisam ser adequadamente agrupadas de maneira lógica e a autoridade distribuída de maneira a evitar conflitos e confusões. A palavra organizar, na abordagem clássica e neoclássica, esta relacionada com: a) Determinação das específicas atividades necessárias para o alcance dos objetivos planejados; b) Agrupamento das atividades em um padrão moldura ou estrutura lógicos; c) Designação das atividades às específicas posições e pessoas. Assim, no processo de organizar três questões básicas, impõem-se à administração: 1) Como a organização será dividida em departamentos? 2) Como os esforços destes departamentos separados serão coordenados para alcançar esforço unificado? 3) Como será dividido o trabalho dentro de cada departamento? A organização é uma atividade básica da administração: serve para agrupar e estruturar todos os recursos – sejam humanos ou não-humanos – para atingir os objetivos predeterminados. A estrutura organizacional pode ser visualizada sob dois aspectos intimamente relacionados entre si: o aspecto vertical e o aspecto horizontal. O aspecto vertical se refere basicamente à dimensão escalar ou hierárquica e envolve a nivelação das decisões, a cadeia de comando, o número de níveis hierárquicos necessários, a amplitude administrativa, como itens principais. 32 O aspecto horizontal ou lateral se refere basicamente ao fluxo de relações dentro da organização e envolve à departamentalização, a divisão do trabalho, órgãos de linha e de staff, o papel de comissões interdepartamentais, a coordenação, procedimentos de tomada de decisão entre setores diferentes da organização, como itens principais. Dentre os princípios gerais da Administração aplicados à função de organização, podemos alinhar: 1. Principio da Especialização na Organização A base elementar da organização é a especialização, seja no sentido horizontal ou vertical, de um modo geral: a) Especialização horizontal – é uma decorrência da divisão do trabalho, pois a organização cria e estimula a especialização, fazendo com que se desenvolvam determinadas zonas de atribuições especificas. Ocorre na medida em que o desenvolvimento de um órgão faz com que o mesmo cresça horizontalmente ou se divida em outros órgãos paralelos e no mesmo nível para aumentar à sua perícia no desempenho de uma dada atividade. Com a especialização horizontal há um desdobramento de órgãos no mesmo nível. É a chamada departamentalização. b) Especialização vertical – é também uma decorrência da divisão de trabalho, a característica básica de toda atividade organizada. Ela leva também à especialização vertical, ou seja, à diferenciação entre os órgãos supervisores e os órgãos executores. Com a especialização vertical há um desdobramento do órgão em vários níveis hierárquicos, especializando a supervisão exercida. 2. Principio da Definição Funcional O conteúdo de cada posição e as relações formais entre os ocupantes devem ser claramente definidos por escrito. Os deveres, atribuições, autoridade e relações de cada participante do todo da empresa, além de situados no organograma, devem ser claros e completamente definidos por escrito, através daquilo que chamamos Descrição do Cargos, que é o relacionamento das tarefas de 33 um ou mais (se idênticos) postos de trabalho, definindo a subordinação do mesmo e a qualidade e quantidade de autoridade atribuída ao seu ocupante para responder às responsabilidades que lhe foram delegadas. 3. Principio da Paridade da Responsabilidade e Autoridade A autoridade é o poder de ordenar a realização de tarefas e a responsabilidade é a obrigação de as realizar. O principio da paridade salienta que a autoridade necessária para tanto deve corresponder à responsabilidade. Essa paridade não é matemática, mas coextensiva, uma vez que ambas se referem às mesmas atribuições. Essa correspondência entre o volume de responsabilidade e de autoridade é necessária para evitar responsabilizar subordinados por certos deveres sem que estes tenham a necessária autoridade. Ou em caso contrário, dar-se demasiada autoridade para muito pouca responsabilidade. A responsabilidade pode ser delegada: é uma obrigação de realizar, é devida ao ocupante da posição. O administrador pode transferir responsabilidades para seus subordinados, mas sem isentar-se delas, pois responde subsidiariamente por elas. O presidente eleito não pode livrar-se da total responsabilidade pela direção da empresa, por tê-la entregue à sua equipe de gerentes: É Responsável em nível mais elevado pela empresa. Por outro lado, a autoridade significa o poder, em qualquer nível, de tomar decisões no campo de sua especialidade. Somente os assuntos que a limitação de autoridade impede de decidir é que devem ser levadas as instâncias superiores. Daí o principio de autoridade e responsabilidade: a cada responsabilidade deve corresponder uma autoridade que permita realizá-la e cada autoridade dever corresponder uma responsabilidade que lhe dê conteúdo e objetivo. 4. Principio das funções de “Staff” e de Linha É preciso definir, da forma mais clara possível, não só a quantidade de autoridade delegada, mas igualmente a qualidade ou natureza dessa autoridade. Este princípio leva a estabelecer uma distinção entre funções de “staff” e linha dentro da organização. As funções de linha são aquelas diretamente ligadas aos objetivos da empresa ou do departamento, enquanto as funções de staff são aquelas que não se encontram diretamente ligadas àqueles objetivos, 34 O critério de distinção é o relacionamento direto ou indireto com os objetivos propostos e não o grau de importância de um setor sobre o outro. É possível mesmo que um órgão indiretamente relacionado aos objetivos da empresa seja mais importante, dadas as condições de mercado, conjuntura, etc., que outros diretamente relacionados. Todavia, um mesmo órgão ou cargo pode assumir caráter diferente: a) De uma empresa para outra; b) Numa mesma empresa, ao serem alterados os seus objetivos. 5. Principio Escalar Refere-se à cadeia de relações diretas de autoridade de um superior para um subordinado, em toda a organização, sendo que a autoridade máxima deve ser sempre fixada em algum lugar e deve haver uma linha bem definida ligando esta a qualquer outra posição na organização. Salienta que cada subordinado deve saber exatamente quem delega autoridade e a quem deve dirigir-se quanto a assuntos que fujam de sua alçada de autoridade. Estabelecidos os princípios gerais de administração aplicados, a organização, deve ter em mente os princípios de direção, que nos introduzem as características humanísticas de autoridade e poder. Para [CHIAVENATO], a função de direção se relaciona diretamente com a maneira pela qual o objetivo é alcançado através da orientação das operações que devam ser executadas. A função de direção se preocupa com que as operações sejam executadas e os objetivos atingidos. Assim a função de direção implica “em dizer a outras pessoas o que fazer e conseguir que elas o façam da melhor maneira possível. Para produzir os resultados necessários determinará seu sucesso ou fracasso”, envolvendo basicamente a influência e induzimento dos subordinados ao comportamento do papel que eles devem ocupar na organização. Envolve além do conhecimento da motivação humana e do processo de ativar o comportamento humano, o conhecimento do processo de liderança. Igualmente importante é o conhecimento relacionado com o como o individuo pode exercer autoridade e poder, ou exercer influência sobre os outros. O poder implica em potencial para exercer influência, esta sendo feita através de muitos meios: seja através de sanções, pela persuasão, etc. 35 A autoridade refere-se ao poder que é inerente ao papel de uma posição dentro da organização. É legitima quando o poder é visto como um direito e apropriado pelos membros da organização. Ela é delegada por meio de descrição de posições, títulos organizacionais, procedimentos de operações padronizadas e políticas relacionadas. Concebido a direção, o processo administrativo se torna fundamentado pela atividade de controle. Conforme [CHIAVENATO], a palavra controle tem muitas conotações e seu significado depende da função ou área especifica em que é aplicado: a) Pode ser a função orgânica da administração, como os elementos de controle da supervisão. Neste caso, é parte do processo administrativo, como o planejamento, organização e direção; b) Pode ser os meios de regulação de um individuo ou organização, como as tarefas especficas que um controller aplica em uma empresa; c) Pode ser a função restritiva de um sistema para manter os participantes dentro dos padrões desejados, como é o caso do controle de freqüência e expediente do pessoal. Há casos ainda em que o controle é um sistema automático que mantém um grau constante de fluxo ou de funcionamento do sistema total. Ele atua no sentido de ajustar as operações a determinados padrões previamente estabelecidos e funciona de acordo com a informação que recebe. Essa informação permite a oportunidade de ação corretiva, que é à base do controle, portanto, deve ser definido de acordo com os resultados que se pretende obter a partir dos objetivos, planos, políticas, organogramas, procedimentos, etc. 2.3. SISTEMAS DISTRIBUIDOS Para [SIL2003], a computação, em geral, tem baseado o seu desenvolvimento numa relação muito forte com o progresso tecnológico. Isto é, a medida que a tecnologia computacional se moderniza, novos conceitos e novas maneiras de se processar informações são criados, sempre buscando o aperfeiçoamento do processo computacional. A indústria computacional avançou como nenhuma outra. Há pouco mais de uma década, os sistemas computacionais eram na sua maioria sistemas centralizados (único processador), compartilhados 36 entre diversos usuários. A maioria das organizações possuía poucos computadores, e por falta de meios de interconexão estes operavam separadamente. Dois avanços tecnológicos, envolvendo processadores e formas de interconexão de computadores, começaram a mudar este panorama. Poderosos microprocessadores foram desenvolvidos, alguns com poder computacional comparável a mainframes, a custo mais acessível. Além disso, microprocessadores dobraram seu desempenho a cada 18 meses na última década, e continuam a evoluir em uma taxa muito maior que supercomputadores. A tecnologia de interconexão de computadores evoluiu de forma similar. Difundiu-se o uso de redes de computadores, à medida que estas se tornavam mais confiáveis e permitiam maiores taxas de transmissão. Esta combinação de fatores levou ao desenvolvimento de uma nova forma de organização dos sistemas computacionais, baseada na interconexão de vários computadores, não necessariamente homogêneos, através de uma rede de computadores. Estes são geralmente chamados sistemas distribuídos, em contraste aos sistemas centralizados anteriormente citados. Para [SIL2003], Coulouris cita ainda um terceiro fator de estímulo para a difusão de sistemas distribuídos: o desenvolvimento do sistema UNIX, que serviu como base para grande parte dos primeiros sistemas distribuídos desenvolvidos. Não existe uma única definição para Sistemas Distribuídos. Uma definição precisa e completa do que é um sistema distribuído é difícil de apresentar, visto que cada autor na literatura disponível apresenta definições próprias e com diversos pontos conflitantes. Em linhas gerais [SIL2003] sugere o critério de Tanenbaum e Van Renesse para definir um sistema distribuído, observando que a tolerância à falha é um fator muito importante. Neste contexto, pode-se definir os sistemas distribuídos como um grupo de computadores com capacidade de processamento autônomo, interconectado por uma rede e que para o usuário aparenta ser um único computador. A utilização dos sistemas distribuídos, principalmente arquitetura estação de trabalho/servidor, apresenta algumas vantagens e desvantagens. Dentre as vantagens, pode-se destacar: Resposta previsível: para as tarefas “locais” executadas nas Estações de Trabalho (execução monousuário); 37 Extensibilidade / modularidade: o sistema pode crescer gradativamente, com a instalação de novos software e hardware, sem afetar o desempenho do sistema como um todo. Permitindo também uma maior facilidade na manutenção de software e ou hardware; Compartilhamento de recursos: permite o compartilhamento de recursos físicos e lógicos de alto custo, possibilitando uma utilização (relativamente) barata. Ex.: servidores de arquivos, banco de dados, impressoras, correio eletrônico, etc.; Replicação: diversas cópias de um mesmo arquivo podem ser armazenadas em locais distintos aumentando a confiabilidade. Disponibilidade: o sistema como um todo não é interrompido devido a falha de um elemento; Mobilidade dos usuários: dependendo do modelo arquitetural usado os usuários ficam livres para acessar o sistema de diversos pontos. Outras vantagens podem ser identificadas durante a análise e comparação dos sistemas distribuídos com outros sistemas. Com relação às desvantagens pode-se destacar: Gerenciamento: dependendo do modelo arquitetural utilizado, cada usuário pode necessitar ser um gerente, tendo que: o Executar rotinas de backup; o Alocar tempo de processamento; o Dar manutenção / evolução do software. Desempenho / Confiabilidade: o desempenho e a confiabilidade está relacionado a rede utilizada. A rede pode tornar-se o gargalo, principalmente se existirem servidores sobrecarregados de serviços; Segurança: para aumentar a flexibilidade do sistema existem clientes com acesso à comunicação básica e isto enfraquece a segurança. Via de regra, qualquer informação colocada na rede deixa de ser “segredo”. Mas existem diversos mecanismos para melhorar a segurança, e estes devem ser implementados de acordo com a necessidade do sistema; Complexidade: elementos individuais são mais simples, mas com a utilização de um conjunto de componentes cria-se uma complexidade 38 razoavelmente grande, tanto para implementação do software e do hardware. Por definição, [SIL2003], apresenta os principais elementos que compõem um sistema distribuído: a) Estações de Trabalho: desde máquinas simples (PC‟s) até estações especializadas, com capacidade gráfica, processamento científico, etc. Padrão: Tela de alta resolução: 1000 x 800 (ou maior); Colorido ou monocromático; Mouse (janelas, “icons”, menus, etc); Microprocessador 32 bits (ex: Pentium); Com pelo menos 32 Mbytes de RAM Fisicamente adequado a uso pessoal (pequena e silenciosa). Interface para rede local (Ethernet). b) Servidor de Arquivos: Estação de Trabalho com elevada capacidade de armazenamento em massa e processamento. Normalmente pode se tornar um ponto de estrangulamento no sistema. c) Servidor de Impressão: faz o gerenciamento de impressoras remotas. d) Servidor de Nomes: gerencia tabelas de nomes e funções do sistema. É um elemento fundamental em um Sistema Distribuído. Os servidores não necessariamente estarão em máquinas separadas, dependendo do sistema implementado, apenas um servidor pode ser utilizado como servidor de arquivo, impressão, nomes e outros. No contexto das aplicações comerciais deve-se observar alguns fatores como sendo de vital importância para a constituição de um sistema distribuído: Confiabilidade e segurança; Acesso concorrente; Possibilidade de crescimento; Acesso de pontos distantes; Para [SIL2003], um projeto de Sistemas Distribuídos necessita conter alguns aspectos chaves que as pessoas envolvidas no projeto de um sistema distribuído devem tratar, e apresenta suas principais características. a) Transparência: Este é provavelmente o tópico mais importante de tudo, pois trata de como obter uma imagem única do sistema. A 39 transparência pode ser obtida em diversos níveis: 1. A maneira mais simples de obtê-la é escondendo dos usuários o fato de eles estarem tratando com um sistema distribuído; e 2. Em um nível mais baixo, é possível também fazer com que o sistema pareça transparente para os programas. Em outras palavras, pode-se projetar a interface das chamadas do sistema de forma a tornar invisível a existência dos vários processadores. No entanto, “tampar” os olhos do programador é muito mais difícil do que fazê-lo com os usuários. O conceito de transparência pode ser aplicado a vários aspectos dos sistemas distribuídos: Transparência à localização, Transparência à migração, Transparência à replicação, Transparência à concorrência e Transparência ao paralelismo. b) Flexibilidade: A segunda característica importante do projeto de um sistema distribuído é a flexibilidade. Existem duas linhas quanto a flexibilidade da estrutura dos sistemas distribuídos: Kernel Monolítico e o MicroKernel. O Kernel Monolítico é o kernel tradicional que fornece a maioria dos serviços. É um sistema operacional centralizado que foi ampliado com facilidades de rede e integração de servidores remotos; o Microkernel é o kernel que deve fornecer apenas os serviços básicos. c) Confiabilidade: Um dos objetivos originais que se buscava com a construção de sistemas distribuídos era fazê-los mais confiáveis que os sistemas centralizados, baseados em um único processador. A idéia básica por trás disso é o fato de que se algumas máquinas do sistema saírem do ar por algum motivo, as demais aquentarão a barra. Na teoria os servidores funcionariam de forma independente, podendo ocorrer falhas. Mas na prática é necessário que um conjunto de servidores esteja funcionando para que o sistema funcione como um todo. d) Performance: A construção de um sistema distribuído transparente, flexível e confiável não vai ter nenhuma serventia, se ele for lento. Uma aplicação rodando em um Sistema Distribuído não pode comportar-se de maneira pior do que se rodasse em um único processador. 40 e) Escalabilidade: Um sistema distribuído deve permitir a expansão em termos do número de usuários e recursos e, mesmo assim, manter a performance relativa de atendimento a serviços do usuário. A maioria dos sistemas distribuídos atuais é projetada para trabalhar com poucas centenas de processadores. Os sistemas complexos, abrangendo multiprocessadores, redes de computadores e sistemas distribuídos, possuem características de hardware e software bem definidas, tanto os sistemas distribuídos quanto os multiprocessadores apresentam-se ao usuário como um sistema único. A rede de computadores deixa transparecer ao usuário a existência explícita de seus diversos computadores e recursos existentes. 2.4. SISTEMAS COOPERATIVOS Para estabelecer as fronteiras dos sistemas cooperativos encontramos [FLORES], que menciona a despeito dos tremendos esforços dispendidos para diminuir custos e melhorar a produtividade, as empresas ainda estão enfrentando os mesmos problemas há mais de 30 anos, desde os primórdios da informática comercial: como comunicar e gerenciar o vasto fluxo de dados e informações gerados diariamente. É surpreendente como, apesar das inúmeras inovações tecnológicas, a forma de trabalho e de comunicação nas empresas mudou muito pouco. Mesmo com investimentos contínuos em automação de escritório, e na persistente busca do sonho do "escritório sem papel", o volume de papel dispendido diariamente é assombroso. Outra parte do problema é que os sistemas de informações tradicionais tratam de apenas uma pequena parte das informações utilizadas nas organizações. Para automatizar o resto dos processos, além de abrir espaço para o tráfego extra nos sistemas e tornar o uso de computadores muito fácil para qualquer pessoa, também significaria tornar as redes de dados tão abertas e fáceis de usar como, por exemplo, o sistema telefônico. De certa forma, recentes desenvolvimentos parecem ter concorrido para colocar esses objetivos ao alcance de qualquer organização. Embora a Internet não seja uma tecnologia emergente, o aumento de popularidade e crescimento da "rede das redes" nos anos recentes é um fenômeno mundial que extrapola aos circunscritos ambientes dos negócios e dos computadores. O crescimento 41 exponencial da Internet e da WWW trouxe para dentro das organizações uma das mais excitantes e importantes tecnologias: as intranets corporativas. Basicamente, intranet envolve o uso de tecnologias desenvolvidas para a Internet para criar "internets" privadas nas organizações. A tecnologia WWW, com os arquivos padrão HTML, e servidores HTTP oferece uma interface simples e uniforme, tornando-a um efetivo integrador e denominador comum entre diferentes plataformas. Sem a complexidade dos velhos sistemas centralizados, as intranets compõem um ambiente de trabalho que oferece abordagens inovadoras para a autoria, gerenciamento e publicação de informações distribuídas, possibilitando dinamizar o fluxo de informações, democratizar as redes internas e ajudar a diminuir a opressiva carga de papel gerada diariamente. Numa intranet, a informação passa a ser criada e gerenciada por aqueles que a produzem, sem ter que depender de programadores para criar entradas de dados e extrair relatórios. Outra mudança que está acontecendo nas organizações é advinda dos benefícios da computação colaborativa para grupos de trabalhos. A complexidade e o tamanho das tarefas do mundo atual exigem maior interação entre as pessoas, e entre grupos de pessoas de talentos multidisciplinares. Proporcionar o suporte operacional para que pessoas possam interagir cooperativamente é o objetivo da disciplina que se convencionou chamar CSCW e Groupware tem sido usado para designar os softwares que implementam essa tecnologia. CSCW é o acrônimo para trabalho cooperativo suportado por computador, e foi cunhado por Irene Greif e Paul Cashmann em 1984, ao organizarem um workshop com pessoas de várias disciplinas que compartilhavam o interesse em estudar como grupos trabalham, e procurar descobrir meios como a tecnologia (especialmente computadores) poderia auxiliá-los. O termo Groupware já tinha sido usado por Peter e Trudy Johnson-Lenz em 1982, mas passou a ser adotado pela comunidade CSCW para definir as tecnologias comerciais que procuram implementar sistemas CSCW. Atualmente existem conferências anuais para Groupware, focalizando sistemas comerciais, e CSCW, direcionadas para sistemas experimentais e estudo da natureza do espaço do trabalho e organizações. Para Ellis, Gibbs e Rein, o objetivo de Groupware é dar assistência aos grupos na comunicação, colaboração e coordenação de suas atividades. Estes autores definem Groupware especificamente como "sistemas de 42 computadores que assistem grupos de pessoas engajadas em uma tarefa (ou objetivo) comum e que provêem uma interface com um ambiente compartilhado". Consultando [FLORES], deparou-se com a afirmação de Baecker, CSCW e Groupware representam uma mudança de paradigma na ciência da computação, pois são enfatizadas a coordenação, comunicações e resolução de problemas entre humano-humano ao invés de humano-máquina. Sistemas CSCW podem integrar voz e vídeo, comunicação com espaços de trabalho digitais compartilhados, e podem suportar trabalho que ocorre tanto de forma síncrona como assíncrona. Assim, a tecnologia Groupware permite uma expansão dos conceitos de reunião e de trabalho colaborativo, ao habilitar aos participantes transcenderem aos requerimentos de estarem no mesmo lugar e trabalharem juntos ao mesmo tempo. Através de [FLORES], encontra-se o texto de Borges que considera que sistemas que promovem a comunicação entre os membros de um grupo de trabalho, como o correio eletrônico, são sistemas Groupware, pois contribuem para que o resultado seja maior do que a soma das contribuições individuais. Numa visão ainda mais prática Hills considera que Groupware é qualquer ferramenta que ajuda as pessoas a trabalharem juntas, mais fácil e eficazmente, citando o telefone como a mais simples e comumente utilizada dessas ferramentas. Para o contexto computacional, a mesma autora define Groupware como um conjunto de hardware e software numa rede, que procura atender a três propósitos: Comunicação, Coordenação e Colaboração. Para realizar esses propósitos, Groupware deve permitir que duas ou mais pessoas trabalhem juntas ajudando a compartilhar seus conhecimentos e especialidades, automatizar suas atividades, criar uma memória organizacional, e a conectá-las, mesmo através de pontos geográficos e tempos diferentes. É importante estabelecer que a Internet é a rede mundial de computadores que se comunica por um conjunto de protocolos de software abertos. A Internet iniciou nos anos 60 como um projeto do Departamento de Defesa dos Estados Unidos patrocinando pesquisas para conectar uma rede experimental denominada ARPANET, e outras várias redes de rádio e satélite. Da mesma maneira Intranet é uma rede interna de computadores de uma corporação baseada nos padrões de funcionamento da Internet, como o protocolo TCP/IP, arquivos HTML, e servidores HTTP, que caracterizam a WWW, o serviço 43 mais popular e de maior crescimento na Internet. Normalmente a intranet fica protegida de acessos externos pela Internet por um firewall. Groupware é uma ferramenta que ajuda as pessoas a trabalharem juntas com mais facilidade ou eficiência, permitindo que se comuniquem, coordenem e colaborem. Esta ferramenta às vezes recebe outras denominações, como computação colaborativa (collaborative computing) ou sistema de suporte a grupos (group support system). O Groupware possibilita a livre circulação da informação, o que estimula à inovação e facilita a liderança coletiva. Seu uso deve resultar em uma organização mais bem preparada para enfrentar os desafios do mercado atual. Uma das ferramentas mais simples de auxílio ao trabalho em conjunto é o telefone, todavia nós comumente não pensamos nele como uma ferramenta de Groupware. Por exemplo, caso trabalhássemos no mesmo prédio, em vez de perder tempo indo a seu escritório eu posso simplesmente ligar para você. Isso economiza tempo e facilita o trabalho em conjunto. No passado, havia uma distinção entre ferramentas de Groupware e de workgroup. Ferramentas de workgroup destinam-se geralmente a produtividade pessoal, como processadores de textos, planilhas de cálculos, agenda pessoal e ferramentas de planejamento que as pessoas usam para coordenar suas atividades. Muitos produtores dessas ferramentas as estão transformando em ferramentas de colaboração, fazendo com que as distinções entre elas comecem a desaparecer. O Groupware consiste em hardware e software em uma rede, com a finalidade de: Ajudar duas ou mais pessoas a trabalharem juntas; Permitir o compartilhamento de experiências e conhecimentos; Automatizar suas atividades; Ajudar a criar uma memória organizacional; Possibilita superar incompatibilidade entre geografia e tempo. O Groupware geralmente serve a três propósitos: 1. Comunicação: Ajuda as pessoas a compartilharem informações. 2. Coordenação: Ajuda as pessoas a coordenarem suas atuações individuais com as dos demais. 3. Colaboração: Ajuda as pessoas a trabalharem em conjunto. Colaborar é trabalhar em conjunto para produzir um produto muito maior que a soma de suas partes. Durante o processo os colaboradores desenvolvem uma 44 compreensão compartilhada muito mais profunda do que seria se tivessem trabalhado sozinhos ou contribuído com uma pequena parte do produto final. O que é conhecimento e como você o captura e compartilha? Observa-se ao longo dos anos que se pode obter dados e colocá-los em relatórios, mas para torne-os verdadeiramente úteis alguém deve interpretá-los e, a partir disso, tomar decisões. Há poucos anos, adicionamos ferramentas para transformar os dados em informações, identificando tendências. Com o conhecimento, avançamos um outro passo. Captamos mais do que simplesmente números e tendências: entendemos o que as pessoas fazem com aqueles números e seu impacto potencial. Captamos a habilidade da organização para compartilhá-los com todos. O conhecimento pode ser um, ou todos, dos seguintes: O que as pessoas têm aprendido ao desenvolver produtos. O que você sabe sobre sua concorrência e seus produtos. O que você sabe acerca de quem são seus clientes, o que eles querem e o que pensam sobre seus produtos e os de sua concorrência. A habilidade de seus empregados mais bem treinados. Uma vez captado o conhecimento, a forma de utilizá-lo é o que atribuirá à sua empresa uma margem competitiva. Uma vez que seus funcionários são seu maior bem, captar e compartilhar suas idéias, invenções e inovações serão a chave para sua competitividade futura. Coletar e manter esse conhecimento é uma das muitas aplicações do Groupware. As intranets, da maneira como normalmente são utilizadas, são basicamente uma forma de Groupware, porque proporcionam conferências e bancos de informações para armazenamento e compartilhamento de informações. Já sabemos muito sobre o benefício das intranets. Trata-se de uma maneira de economizar dinheiro e aumentar produtividade, mas os resultados finais reais, advindos do Groupware, só aparecem quando todos trabalham em harmonia. Tendo atingido esse estágio, sua empresa contará com as melhores decisões, os melhores produtos e o melhor serviço ao cliente. 2.5. REDES DE COMPUTADORES Em sua obra, [SOARES], apresenta a evolução tecnológica e a conseqüente diminuição dos custos dos computadores como uma forma da mais 45 atraente para a distribuição do poder computacional em módulos processadores localizados em diversos pontos de uma organização. A necessidade de interconexão desses módulos processadores, para permitir o compartilhamento de recursos de hardware e software e a troca de informações entre seus usuários, criou o ambiente propicio para o desenvolvimento das redes de computadores. A comunicação é uma das maiores necessidades da sociedade humana desde os primórdios de sua existência. Conforme as civilizações se espalhavam, ocupando áreas cada vez mais dispersas geograficamente, a comunicação à longa distância se tornava cada vez mais uma necessidade e um desafio. Formas de comunicação através de sinais de fumaça ou pombos-correios foram as maneiras encontradas por nossos ancestrais para tentar aproximar as comunidades distantes. A invenção do telegrafo por Samuel F. B. Morse em 1838 inaugurou uma nova era nas comunicações. Sabiamente [SOARES], afirma que a conjunção de duas tecnologias – comunicação e processamento de informações – vieram revolucionar o mundo em que vivemos, abrindo as fronteiras com novas formas de comunicação, e permitindo maior eficácia dos sistemas computacionais. Redes de computadores são hoje uma realidade neste contexto. Para que possa entender, é necessário que observar como se deu a evolução dos sistemas de computação até os dias de hoje, onde a distribuição do poder computacional é uma tendência indiscutível. Na década de 1950, computadores eram máquinas grande porte e complexas, operadas por pessoas altamente especializadas. Não havia nenhuma forma de interação direta entre usuários e máquinas, longos períodos de espera eram comuns até que se pudesse obter algum resultado, dado que todo processamento era feito job a job de acordo com a ordem que eram submetidos. Os avanços da década de 1960 possibilitaram o desenvolvimento dos primeiros terminais interativos, permitindo aos usuários acesso ao computador central através de linhas de comunicação. Os usuários passavam a ter então um mecanismo que possibilitava a interação direta com o computador, ao mesmo tempo em que os avanços nas técnicas de processamento davam origem a sistemas de tempo compartilhado (time-sharing), permitindo várias tarefas dos diferentes usuários ocupassem simultaneamente o computador central, através de uma espécie de revezamento no tempo de ocupação do processador. 46 Mudanças na caracterização dos sistemas de computação ocorreram durante a década de 1970: de um sistema único centralizado e de grande porte, disponível para todos os usuários de uma determinada organização, partia-se em direção à distribuição do poder computacional. O desenvolvimento de minicomputadores e microcomputadores com desempenho, com requisitos menos rígidos de temperatura e umidade, permitiu a instalação de considerável poder computacional em várias localizações de uma organização, ao invés da anterior concentração deste poder em uma determinada área. Com o desenvolvimento tecnológico, a continua redução do custo do hardware acompanhada do aumento da capacidade computacional levou também ao uso cada vez maior dos microcomputadores. Esses sistemas pequenos e dispersos eram mais acessíveis ao usuário, possuíam uma responsividade melhor e eram mais fáceis de utilizar do que os grandes sistemas centralizados com compartilhamento de tempo. A exigência de que grande parte dos dados estivessem associados a um sistema de grande capacidade centralizado e a razão de custo, justificava a utilização compartilhada de periféricos especializados. Assim, a interconexão entre vários sistemas para o uso compartilhado de dispositivos periféricos tornou-se importante, aliado ao fator da capacidade de troca de informações, onde usuários individuais de sistemas de computação não trabalham isolados e necessitam de alguns dos benefícios oferecidos por um sistema centralizado. Ambientes de trabalho cooperativo se tornaram uma realidade tanto nas empresas como nas universidades, tornando ainda mais necessária a interconexão dos equipamentos nessas organizações. Compreendido a evolução dos sistemas de computação, [SOARES] apresenta o conceito de uma Rede de Computadores, que é formada por um conjunto de módulos processados1 capazes de trocar informações e compartilhar recursos, interligados por um sistema de comunicação. O sistema de comunicação vai se constituir de um arranjo topológico interligando os vários módulos processadores através de enlaces físicos (meios de transmissão) e de um conjunto de regras com o fim de organizar a comunicação 1 Se refere a qualquer dispositivo capaz de se comunicar através do sistema de comunicação por troca de mensagens. Poderíamos citar, por exemplo, um microcomputador, uma máquina copiadora, um computador de grande porte, um terminal videotexto, etc. 47 (protocolos). Redes de computadores são sistemas cujas distâncias entre os módulos processadores se enquadram na faixa de alguns poucos metros a alguns poucos quilômetros. As Redes Locais (LANs) surgiram, para viabilizar a troca e o compartilhamento de informações e dispositivos periféricos (recursos de hardware e software), preservando a independência das várias estações de processamento, e permitindo a integração em ambientes de trabalho cooperativo. Pode-se caracterizar uma rede local como sendo uma rede que permite a interconexão de equipamentos de comunicação de dados numa pequena região. De fato, tal definição é bastante vaga principalmente no que diz respeito às distancias envolvidas. Em geral, nos dias de hoje, costuma-se considerar “pequena região” distâncias entre 100 m e 25 km, muito embora as limitações associadas às técnicas utilizadas em redes locais não imponham limites a essas distâncias. Outras características típicas encontradas e comumente associadas a redes locais são: altas taxas de transmissão (de 0,1 a 100 Mbps) e baixas taxas de erro (de 10-8 a 10-11). É importante notar que os termos “pequena região”, “altas taxas de transmissão” ou “baixas taxas de erro” são susceptíveis à evolução tecnológica. Outra característica dessas redes é que elas são, em geral, de propriedade privada. Cabe neste momento uma pequena introdução e conceituação sobre protocolo de rede, visto a necessidade de implementação do mesmo para o estabelecimento de um sistema de comunicação válido. Assim [PALMA], questiona o que é um protocolo de rede? E define como sendo um conjunto de regras utilizadas pelos computadores de uma rede para estabelecer a comunicação entre eles. Assim como na linguagem falada, onde duas pessoas somente se comunicam se falarem a mesma língua, dois computadores só podem de comunicar se utilizarem o mesmo protocolo. Ainda [PALMA], indaga sobre o Protocolo TCP/IP? Apresentando-o como um conjunto de protocolos usados em redes de computadores. TCP e IP são dois protocolos dessa família e por serem os mais conhecidos, tornou-se comum usar o termo TCP/IP para se referir à família inteira. O protocolo TCP/IP permite a conexão de computadores tanto em pequenas redes locais (LANs) quanto em redes coorporativas interligando diversos países (WANs). O maior exemplo disso é a 48 própria Internet, que adota o protocolo TCP/IP. Todos os sistemas operacionais atuais fornecem uma implementação do protocolo TCP/IP. Um dos objetivos do TCP/IP é estabelecer um padrão para que computadores de fabricantes distintos se comuniquem. Esse padrão consiste na definição de como acontecerá a comunicação, estabelecendo regras que norteiam o envio e o recebimento dos dados. Padrões são normalmente discutidos e definidos por organizações independentes. Assim cada fabricante desenvolve seus programas de comunicação, de acordo com o que estipula o padrão. Diz-se então que o fabricante implementa o padrão, ou seja, o software TCP/IP que acompanha um sistema operacional é a implementação de seu fabricante. É possível, portanto encontrar pequenas diferenças entre as implementações de fabricantes distintos, seja em termos de desempenho ou de funcionalidade, uma vez que algumas regras do padrão podem ser de implementação opcional. Para fins de conhecimento histórico, o protocolo TCP/IP foi desenvolvido nos primórdios de 1969, com o projeto ARPANET, da Agência de Projetos de Pesquisas Avançadas do Departamento de Defesa dos Estados Unidos. O objetivo deste projeto foi desenvolver uma rede que interligasse os computadores do governo americano, de diferentes fabricantes utilizando diferentes sistemas operacionais. Essa rede deveria ser descentralizada e mesmo que um dos computadores dessa rede fosse destruído num eventual ataque militar, os demais continuariam a funcionar normalmente, graças a um mecanismo de rotas alternativas. Algum tempo depois desse início com finalidade militar, a National Science Fondation criou uma rede semelhante para interconectar instituições de pesquisa e universidades, utilizando os mesmos protocolos da rede ARPANET. Desses projetos surgiu o protocolo TCP/IP, que serviu como alicerce para a construção da rede que hoje conhecemos com Internet. Entretanto é importante estabelecer que os termos servidor e cliente são muito utilizados em redes baseadas em TCP/IP. Isso porque a maior parte das aplicações atuais utilizam a arquitetura cliente-servidor, estimuladas pelo grande poder de processamento das estações de trabalho atuais capazes de fazer bem mais do que os antigos terminais, meros dispositivos de entrada e saída de dados conectados a equipamentos que centralizavam todo o processamento. 49 A descentralização, por outro lado, tem seus limites, bancos de dados, por exemplo, normalmente devem ser centralizados. Nesse caso, um servidor é responsável por manter os dados e realizar as buscas no banco de dados. Os clientes, em vez de realizarem as buscas simplesmente enviam uma solicitação ao servidor e aguardam pela resposta. O poder de processamento das estações geralmente é utilizado para oferecer ao usuário uma interface gráfica avançada e atraente. Essa “divisão de tarefas” tira maior proveito dos processadores das máquinas e reduz o trafego de dados na rede. 2.6. SISTEMAS OPERACIONAIS Este capítulo ao contrário do título sugestivo, sistemas operacionais, não apresentará a teoria envolvida na arquitetura de um sistema operacional. Então se pergunta o porquê do titulo? É simples a resposta. Abordará nas próximas linhas conceitos e características do Sistema Operacional FreeBSD, ou seja, um servidor UNIX, desenvolvido por Jordan Hubbard, Nate Williams e Rod Grimes, ao final deste módulo será feita uma breve menção ao servidor WEB Apache. Em seu artigo [LEHEY], indaga sobre alguns acrônimos do mundo do open source, onde a palavra “Linux” é quase um sinônimo de Sistema Operacional, mas esse não é o único sistema operacional UNIX™ de código aberto. De acordo com o Contador de Sistemas Operacionais da Internet, em Abril de 1999, 31.3% das máquinas conectadas na rede rodam Linux. 14.6% rodam BSD UNIX. Alguns dos responsáveis pelas maiores operações da rede no mundo, como o Yahoo!, rodam BSD. O servidor FTP mais requisitado do mundo, ftp.cdrom.com, usa BSD para transferir 1.4 TerraBytes de dados por dia. É claro, que não se trata de um nicho de mercado: O BSD é um segredo muito bem guardado. Então, qual é o segredo? Por que o BSD não é mais bem difundido, mais conhecido? BSD significa “Distribuição do Sistema de Berkeley”. É o nome da distribuição de códigos fonte proveniente da Universidade da Califórnia, Berkeley, as quais foram originalmente extensões para o sistema operacional UNIX do departamento de Pesquisas da AT&T. Vários projetos de sistemas operacionais de código aberto são baseados em uma distribuição desse código fonte, conhecido como 4.4BSD-Lite. Em adição, tais sistemas constituem-se de várias porções de outros projetos de Código Aberto, incluindo o notável projeto GNU. A constituição total do sistema operacional inclui: 50 O kernel BSD, que cuida do agendamento de processos, gerenciamento de memória, multiprocessamento simétrico (SMP), dispositivos de controle, etc. (ao contrário do kernel do Linux, existem vários kernels distintos de sistemas BSD com diferentes características e recursos); A biblioteca C, a API base do sistema (a biblioteca C do BSD é baseada em código proveniente de Berkeley, e não do projeto GNU); Programas utilitários como shells, utilitários de manuseio de arquivos, compiladores, linkadores. (Alguns desses programas são derivados do projeto GNU, outros não); O sistema X Window, que provê uma interface gráfica (O sistema X Window usado na maioria das versões do BSD é mantido por um projeto separado, o Projeto XFree86. Trata-se do mesmo código usado por sistemas Linux. O BSD normalmente não especifica nenhum “desktop gráfico” como o GNOME ou o KDE, contudo, tais ambientes estão sempre disponíveis); Muitos outros programas e utilitários. Neste momento [LEHEY] questiona-se sobre o que é um UNIX verdadeiramente e nas próximas linhas estabelece a definição. Os sistemas operacionais BSD não são clones, mas sim, código livre derivado diretamente do sistema operacional UNIX da AT&T, que também é o ancestral dos modernos UNIX System V. Talvez isso lhe surpreenda. Como pode ser isso, se a AT&T nunca disponibilizou seus fontes como código aberto? É verdade que o UNIX da AT&T não é Open Source, e do ponto de vista da licença de direitos legais, o BSD definitivamente não é UNIX, mas por outro lado, a AT&T importou muito código de outros projetos, especialmente do Grupo de Pesquisas de Ciências Computacionais da Universidade da Califórnia, em Berkeley, CA. Desde 1976 o CSRG lançava fitas magnéticas com cópias de seu software, o qual era chamado de Distribuição do Software de Berkeley ou BSD. As versões iniciais do BSD consistiam-se fundamentalmente de programas em nível de usuário, mas essa realidade mudou dramaticamente assim que o CSRG fechou um contrato com a DARPA para atualizar os protocolos de comunicação que eram usados em sua rede, a ARPANET. Os novos protocolos passaram a ser conhecidos como Protocolos de Internet, e mais tarde como TCP/IP 51 se tornando os mais importantes protocolos de todos os tempos. A primeira implementação amplamente distribuída desses protocolos eram parte do 4.2BSD, em 1982. Ao longo da década de 80, várias empresas que produziam estações de trabalho começaram a se espalhar. Muitas delas preferiam licenciar o UNIX ao invés de desenvolverem sistemas operacionais por si mesmas. A Sun Microsystems em particular, licenciou o UNIX e implementou uma versão do 4.2BSD, a qual eles chamaram de SunOS. Quando a AT&T se deu permissão para vender o UNIX comercialmente, começaram a desenvolver uma implementação “na unha” chamada de System III, que seria rapidamente sucedida pelo System V. A base do código do System V não incluía o suporte a networking, então todas as implementações passaram a incluir software adicional do BSD, incluindo o TCP/IP, e também programas utilitários como o interpretador de linha de comandos csh e o editor vi. Em sua coletividade, estas aprimorações foram conhecidas como Extensões de Berkeley. As fitas magnéticas do BSD continham código fonte da AT&T e por isso precisavam de uma licença de fontes do UNIX. Por volta de 1990, os fundos do CSRG estavam acabando. Alguns membros do grupo decidiram lançar o código BSD, que era Open Source, sem o código proprietário da AT&T. Finalmente isso aconteceu com o Networking Tape 2, normalmente conhecido como Net/2. O Net/2 não era um sistema operacional completo: aproximadamente 20% do código do kernel estava faltando. Um dos membros do CSRG, William F. Jolitz, escreveu o código que faltava e o lançou em 1992, como o 386BSD. Ao mesmo tempo, um outro grupo de membros do extinto CSRG formou uma empresa comercial chamada de Berkeley Software Design Inc. e lançou uma versão beta de seu sistema operacional, chamada de BSD/386, baseado nos mesmos fontes. Depois o nome do sistema operacional mudou para BSD/OS. O 386BSD nunca se tornou um sistema operacional estável. Ao invés disso, outros dois projetos nasceram à partir dele, em 1993: O NetBSD e o FreeBSD. Originalmente os dois projetos divergiram devido a diferenças quanto à paciência na espera de novas melhorias no 386BSD: o pessoal do NetBSD começou o projeto no início do ano, e a primeira versão do FreeBSD não ficou pronta até o final do ano. No meio tempo, a base do código se modificou o suficiente para tornar difícil uma união. Em adição, os projetos tinham objetivos diferentes, como veremos 52 a seguir. Em 1996, um projeto posterior, o OpenBSD, originou-se à partir do NetBSD. Por algumas razões, o BSD é relativamente desconhecido, onde destacamos três da citação de [LEHEY]: 1. Os desenvolvedores do BSD estão frequentemente mais interessados em aprimorar seu código do que fazer propaganda dele. 2. A maior parte da popularidade do Linux se deve a fatores externos ao projeto Linux, como a imprensa, e companhias criadas para oferecer serviços em Linux. Até recentemente, os BSDs open source não contavam com tais proponentes. 3. Os desenvolvedores BSD tendem a ser mais experientes do que desenvolvedores Linux, e tem menos interesse em tornar o sistema fácil de utilizar. Novatos tendem a se sentir mais confortáveis com Linux. Então qual é realmente a diferença entre, digamos, o Debian Linux e o FreeBSD? Para maioria dos usuários, as diferenças são surpreendentemente pequenas: ambos são sistemas operacionais UNIX-like. Ambos são desenvolvidos por projetos não comerciais (é claro que isso não se aplica a muitas outros distribuições Linux). Nenhuma pessoa ou corporação é dona do BSD. Ele é criado e distribuído por uma comunidade de contribuidores altamente técnicos em todo o mundo. Alguns dos componentes do BSD são projetos Open Source gerenciados por mantenedores de projetos distintos. Os kernels do BSD são desenvolvidos e mantidos seguindo o modelo de desenvolvimento do Open Source. Cada projeto mantém uma „árvore de código fonte‟ publicamente acessível sob o CVS, que contém todos os arquivos fontes do projeto, incluindo documentação e outros arquivos acidentais. O CVS permite que usuários façam „check out‟ (em outras palavras, extrair uma cópia) de qualquer versão desejada do sistema. Um grande número de desenvolvedores ao redor do mundo contribui para as melhorias do BSD. Eles são divididos em 3 tipos: Contribuidores escrevem código e documentação. Eles não tem permissão de commit (adicionar código) diretamente na árvore de código fonte. Para que seu código seja incluso no sistema, é 53 necessário que seja revisado e aprovado por um desenvolvedor registrado, os quais são conhecidos como committer. Committers são desenvolvedores com acesso de escrita na árvore do código fonte. Para se tornar um commiter, o indivíduo deve mostrar habilidade na área em que ele é ativo. Faz parte da responsabilidade individual de cada desenvolvedor considerar quando devem obter autorização antes de fazer um commit na árvore. No geral, desenvolvedores experientes podem fazer modificações que são obviamente corretas sem precisar de consenso. Por exemplo, um commiter do projeto de documentação pode corrigir erros tipográficos ou gramaticais sem a necessidade de uma revisão. Por outro lado, espera-se que desenvolvedores que fazem alterações muito abrangentes ou complicadas enviem suas mudanças para revisão antes de adicioná-las. Em casos extremos, um membro do Grupo Central (Core Team) cuja função seja, o Arquiteto Principal pode ordenar que as modificações sejam retiradas da árvore do código fonte, em um processo conhecido como backing out. Todos os desenvolvedores recebem mensagens de correio eletrônico sobre cada alteração individual, portanto é impossível fazer alguma modificação secretamente. O Grupo Central. O FreeBSD e o NetBSD cada qual, tem um grupo central que gerencia o projeto. Tais grupos centrais foram criados no decorrer dos projetos e seu papel não é sempre bem definido. Não é preciso ser um desenvolvedor para se tornar membro do grupo central, apesar de que, normalmente esse é o caso. As regras para o grupo central variam de um projeto para o outro, mas no geral eles tem mais voz na hora de dizer as direções que o projeto deve seguir, do que outros membros fora do grupo. Esse modelo se diferencia do Linux em inúmeras maneiras: 1. Não existe uma pessoa em especial que controla o conteúdo do sistema. Na prática, essa diferença é sobre taxada, considerando que o Arquiteto Chefe pode solicitar que códigos sejam retirados do sistema, e que até mesmo o projeto Linux tem várias pessoas autorizadas a fazer modificações. 54 2. Por outro lado, existe um repositório central, um lugar único onde os fontes inteiros do sistema operacional podem ser encontrados, incluindo todas as versões anteriores. 3. Os projetos BSD mantém um ``Sistema Operacional'' completo, não apenas o kernel. Essa distinção é marginalmente proveitosa: nem o BSD nem o Linux são úteis sem aplicações. As aplicações usadas sob BSD são frequentemente as mesmas aplicações usadas sob Linux. 4. Como resultado da manutenção formalizada de uma única árvore CVS do código fonte, o desenvolvimento do BSD é limpo, e é possível acessar qualquer versão do sistema por seu número de lançamento (release) ou por data. O CVS ainda oferece manutenção incremental ao sistema: por exemplo, o repositório do FreeBSD é atualizado em média 100 vezes por dia. As maiorias dessas alterações são de pequena ordem. Cada projeto BSD oferece o sistema em três “versões (releases)” diferentes. Como no Linux, os releases são identificados por um número, como 1.4.1 ou 3.5. Em adição, o número da versão tem um sufixo, indicando seu propósito: A versão de desenvolvimento do sistema é chamada de CURRENT. O FreeBSD relaciona um número ao CURRENT, por exemplo FreeBSD 5.0CURRENT. O NetBSD usa um esquema de denominação um pouco diferente, adicionando um sufixo com uma letra única que indica modificações nas interfaces internas, por exemplo NetBSD 1.4.3G. O OpenBSD não adiciona números (“OpenBSD-current”). Todo novo desenvolvimento no sistema vai nesse branch. Em intervalos regulares, entre duas a quatro vezes por ano, os projetos lançam uma nova versão de RELEASE do sistema, que é disponibilizado em CDROM e por download gratuito em sítios de FTP, por exemplo OpenBSD 2.6RELEASE ou NetBSD 1.4-RELEASE. A versão do RELEASE é destinada a usuários finais e é a versão normal do sistema. O NetBSD oferece ainda patch releases (releases de correções) com um terceiro dígito, por exemplo, NetBSD 1.4.2. Conforme os problemas são encontrados em uma versão RELEASE, eles são corrigidos, e as correções são adicionadas à árvore CVS. No FreeBSD a versão resultante é chamada de STABLE, enquanto que no NetBSD e no OpenBSD elas continuam sendo chamadas de versão RELEASE. Novas características menores 55 também podem ser adicionadas nesse branch depois do período de testes no CURRENT. Em contraste, o Linux mantém duas árvores de código separadas: a versão estável e a versão de desenvolvimento. A versão estável tem ainda um número menor de versão, como 2.0, 2.2 ou 2.4. Versões em desenvolvimento têm o número menor ímpar, como 2.1, 2.4 e 2.5. Em cada caso, a versão é ainda seguida de um número posterior designando o release exato. Em adição, cada vendedor de Linux coloca suas próprias aplicações e utilitários à nível de usuário, portanto o nome de sua distribuição também é importante. Cada distribuição do vendedor ainda é acrescida de seu próprio número, então a descrição completa seria algo parecido com “TurboLinux 6.0 com kernel 2.2.14” Em contraste com as numerosas distribuições Linux, existe apenas três BSDs de código livre. Cada projeto BSD mantém sua própria árvore de código fonte e seu próprio kernel. Na prática, as divergências entre o código à nível de usuário parece ser ainda menor entre os projetos BSD do que entre os vários Linux. É difícil categorizar os objetivos de cada projeto: as diferenças são bastante subjetivas. Basicamente, O FreeBSD oferece a alta performance e facilidade de uso para usuários finais, e é o favorito de provedores de conteúdo da rede mundial de computadores. Ele pode ser usado em PC‟s e Compaqs com processadores Alpha. O projeto FreeBSD possui significativamente mais usuários do que os outros projetos. O NetBSD foi usado pelo potencial em portabilidade: “é lógico que roda NetBSD”. Ele roda de máquinas palmtop à grandes servidores, e vem sendo usado até em missões espaciais da NASA. É particularmente uma boa escolha para rodar em equipamentos antigos que não sejam Intel. O OpenBSD, segurança e pureza de código: ele usa uma combinação dos conceitos de código livre com rigorosas revisões de seu código para criar um sistema demonstravelmente correto, tornando-o a escolha de organizações conscientes com a segurança como bancos e departamentos do governo. Como o NetBSD, ele roda em várias plataformas. Existem ainda dois sistemas operacionais BSD adicionais que não são de código livre, o BSD/OS e o Mac OS X da Apple: O BSD/OS é o mais velho dos derivados do 4.4BSD. Ele não é de código livre, apesar de que as licenças de seu código fonte é 56 disponível a um preço relativamente baixo. Ele assemelha-se ao FreeBSD de diversas formas. O Mac OS X é a mais recente versão do sistema operacional da linha Macintosh da Apple Computers Inc. Ao contrário do resto do sistema operacional, o kernel é código livre. Como parte desse desenvolvimento, desenvolvedores chave da Apple tem acesso de modificações na árvore do FreeBSD. Atualmente as versões do FreeBSD em produção são FreeBSD 4.11RELEASE e FreeBSD 5.3-RELEASE, ambos pertencem a família de servidores 32 bits e por sua forte base no protocolo TCP/IP torna-se uma grande ferramenta para a Internet. Por este motivo, bem configurado pode ser um grande servidor de páginas (WWW), um servidor de email (SMTP, POP3 e IMAP), um servidor de FTP, servidor DNS entre outros serviços de Internet e Intranet. Falemos um pouco sobre o Servidor WEB Apache, que junto a plataforma FreeBSD alcança excelentes níveis de desempenho e escalabilidade provendo serviços para a Intenet. O servidor WEB é um programa responsável por disponibilizar páginas, fotos, ou qualquer outro tipo de objeto ao navegador do cliente. Ele também pode operar recebendo dados do cliente, processando e enviando o resultado, para que o cliente possa tomar a ação desejada (como em aplicações CGI, banco de dados WEB, preenchimento de formulários, etc). O Apache é um servidor WEB extremamente configurável, robusto e de alta performance desenvolvido por uma equipe de voluntários (conhecida como Apache Group), buscando criar um servidor WEB com muitos recursos e com código fonte disponível gratuitamente via Internet. Segundo a Netcraft 2, o Apache é mais usado que todos os outros servidores WEB do mundo juntos. O servidor WEB determina que tipo de ambiente operacional ele precisa, examinando a extensão do arquivo requisitado. Tudo isso é feito através de mapeamento. Quando um servidor WEB é configurado, lhe é informado como lidar com tipos específicos de arquivos. Em arquivos com a extensão .html, o servidor HTTP (como o Apache) só passa o conteúdo para o navegador. O servidor não tenta entender ou processar o 2 http://www.netcraft.com/survey/ 57 arquivo; esse é o serviço do navegador. Porém, os arquivos com a extensão *.php são processados de forma diferente, pois são analisados em busca do código PHP. O servidor WEB inicia em modo HTML. Inicia uma análise e verifica se o arquivo contém apenas HTML, CSS, JavaScript, texto simples ou algum outro tipo que terá de ser passado para o navegador sem ser interpretado pelo servidor. Caso encontre alguma instrução da linguagem PHP como <?php (comandos) ?>, que é usada para sair do código HTML, ele entra no modo PHP. O servidor HTTP executa o código PHP e envia a saída do script (gerada pela instrução “echo” no PHP), para o navegador. Quando o final da instrução é alcançado, o servidor volta para o modo HTML e continua a enviar o conteúdo do documento para o navegador sem nenhum processamento do lado do servidor. Pode-se incluir várias instruções PHP no código HTML. O Apache tem como base o servidor WEB NCSA 1.3, que foi desenvolvido por Rob McCool. Quando ele deixou o NCSA, o desenvolvimento foi interrompido, assim muitos desenvolvedores buscaram personalizar sua própria versão do NCSA ou adicionar mais características para atender às suas necessidades. Neste momento começa a história do Apache com Brian Behlendorf e Cliff Skolnick abrindo uma lista de discussão para interessados no desenvolvimento, conseguindo espaço em um servidor doado pela HotWired e trocando patches, corrigindo problemas, adicionando recursos e discutindo idéias com outros desenvolvedores e hackers interessados neste projeto. A primeira versão oficial do Apache foi a 0.6.2, lançada em abril de 1995 (neste período a NCSA retomava o desenvolvimento de seu servidor WEB, tendo como desenvolvedores Brandon Long e Beth Frank, que também se tornaram membros especiais do grupo Apache, compartilhando idéias sobre seus projetos). Nas versões 2.x do Apache, a escalabilidade do servidor foi ampliada suportando as plataformas Win32 (não obtendo o mesmo desempenho que em plataformas UNIX mas sendo melhorado gradativamente). Abaixo estão algumas características que fazem desse servidor WEB o preferido entre os administradores de sistemas: Suporte a scripts CGI usando linguagens como PHP, Perl, ASP, Shell Script, etc; Módulos DSO permitem adicionar/remover funcionalidades e recursos sem necessidade de recompilação do programa; 58 Autenticação, requerendo um nome de usuário e senha válidos para acesso a alguma página/sub−diretório/arquivo (suportando criptografia via Crypto e MD5). Suporte à autorização de acesso, podendo ser especificadas restrições de acesso separadamente para cada endereço/arquivo/diretório acessado no servidor; Suporte a virtual hosting, por nome ou endereço IP: é possível servir 2 ou mais páginas com endereços/portas diferentes através do mesmo processo, ou usar mais de um processo para controlar mais de um endereço; Suporte a servidor proxy, ftp e http, com limite de acesso, caching (todas flexivelmente configuráveis). Suporte a proxy e redirecionamentos baseados em URLs para endereços internos; Suporte a criptografia via SSL, certificados digitais; · Negociação de conteúdo, permitindo a exibição da página WEB no idioma requisitado pelo Cliente Navegador. Suporte a tipos mime; Personalização de logs. 2.7. AUDITORIA E SEGURANÇA Foi traçado dentro deste capitulo alguns aspectos referentes à segurança. Muitas são as tangentes que delimitam esta área da TI, que hoje se tornou o foco principal de relação entre o provedor de serviços de informática e o cliente. Em Firewalls [STR2002], inicia com a afirmação de que “os países que não controlam suas fronteiras não podem garantir a proteção e a segurança de seus cidadãos, nem podem evitar a pirataria e o roubo”. As redes sem acesso controlado não podem garantir a segurança e a privacidade dos dados armazenados, nem podem evitar que os recursos da rede sejam explorados por hackers. A eficiência da comunicação fornecida pela Internet tem causado uma corrida para conectar redes privadas diretamente a ela. As conexões Internet diretas facilitam para os hackers a exploração dos recursos privados de uma rede. Antes da Internet, a única forma amplamente disponível para um hacker se conectar de sua casa a uma rede privada era via discagem direta com modems usando a rede de telefonia pública. A questão da segurança do acesso remoto era relativamente pequena. 59 Simplesmente, ao conectar uma rede privada a Internet, estará na verdade ampliando o perímetro de atuação da sua rede, conectando-se a todas as redes ligadas diretamente a Internet. Não há nenhum ponto central inerente de controle de segurança. Hoje estar seguro envolve um conceito mais complexo e sistêmico, onde apenas a utilização de um firewall bem configurado de nada adianta para proteção de uma rede. A necessidade da proteção em camadas é uma premissa que a cada dia se aprimora e se fixa na vida dos profissionais de TI. Podemos visualizar um esboço da proteção em camadas na figura 1, conforme sugestão de [MSC2005]. FIGURA 1 – MODELO DE PROTEÇÃO EM CAMADAS Afinal a estratégia de segurança de uma organização é mais eficaz, quando os dados são protegidos por mais de uma camada de segurança. Uma estratégia de segurança de proteção em camadas utiliza várias camadas de proteção. Se uma camada for comprometida, isso não significa necessariamente que toda a organização será comprometida. A estratégia de proteção em camadas aumenta o risco de detecção do invasor e reduz a chance de que ele tenha êxito. Para minimizar a possibilidade de um ataque bem-sucedido contra os computadores cliente da organização, necessita-se implementar o nível apropriado de proteção em cada camada. Há várias maneiras de proteger cada camada individual através de ferramentas, tecnologias diretivas e práticas recomendadas. Por exemplo: Diretivas, procedimentos e camada de reconhecimento – programas educacionais de segurança para usuários. 60 Camada de segurança física – guardas de segurança, travas e dispositivos de controle. Camada do perímetro – firewalls de hardware e/ou de software e VPNs (redes virtuais privadas) com procedimentos de quarentena Camada de rede da Internet – segmentação da rede, protocolo IPSec e NIDS (sistemas de detecção de intrusos na rede) Camada de host – práticas de proteção avançada de servidor e de cliente, ferramentas de gerenciamento de patches, métodos de autenticação forte e HIDS (sistemas baseados em host para detecção de intrusos) Camada de aplicativo – práticas de proteção avançada de aplicativos e software antivírus Camada de dados – listas de controle de acesso (ACLs) e criptografia Muitas são as metas de proteção para que se possa absorver os conceitos de confidencialidade (garante a proteção do acesso às informações), disponibilidade (garante o acesso imediato as informações) e integridade (garante que as informações não sejam modificadas) na proteção da informação – Figura 2. Devido a extensão e complexidade do assunto estaremos apenas tratando a proteção no seu nível fundamental e necessário para a existência do paradoxo mínimo de segurança neste trabalho, porém ressaltamos que na medida da ampliação dos horizontes os conceitos de proteção acima mencionados devem ser seguidos e implementados a risca e em totalidade, para que seja provido a máxima segurança possível no ambiente operacional. FIGURA 2 – PRINCIPIOS DE SEGURANÇA 61 Um componente principal: para [STREBE] firewalls são usados para criar pontos de controle de segurança nas fronteiras das redes privadas, ao fornecer a função de roteamento entre a rede privada e a Internet, os firewalls inspecionam toda a comunicação passando entre as redes e/ou a transmitem ou a abandonam, dependendo de como cada comunicação segue as normas programadas. Se um firewall estiver configurado adequadamente e não contiver nenhum erro sério que possa ser explorado, a rede estará livre de riscos tanto quanto possível. Neste instante é necessário esclarecer que um firewall apenas funciona como um simples porteiro no exercício de sua função, ou seja, realiza a inspeção de cara – crachá, onde a conferência destas credenciais sendo satisfatória permitirá que todo o tráfego flua entre as redes privada e a Internet, o que nos recomenda um tratamento mais rígido quanto as informações autorizadas a trafegar pelo canal de comunicação de nossa rede. Os firewalls se localizam nas fronteiras da rede, criando passagens estreitas entre a rede interna e externa para que todo o tráfego entre uma e outra tenha de passar através de um único ponto de controle. Eles operam usando primeiramente três métodos fundamentais a segurança: filtragem de pacotes, NAT e serviços proxy. Muitos dos firewalls disponíveis no mercado, sejam eles baseados em hardware ou software, ainda realizam as funções de autenticação criptografada e túneis criptografados. Para manter um nível absolutamente mínimo de segurança na Internet que seja eficaz, é preciso controlar a segurança nas fronteiras usando Firewalls que realizem todas as funções básicas dos firewalls. Estes devem ser dedicados, evitando-se prover qualquer outro tipo de serviços públicos no próprio firewall, a menos que o software de serviço acompanhe o software do fabricante de firewall. Neste instante é plausível a indagação: Mas porque eu haveria de me preocupar em saber como funciona o TCP/IP, se não sou um programador de computadores ou um engenheiro de redes? Esta preocupação é necessária porque os hackers que possam tentar passar pela segurança da rede certamente exercem estas funções, são autodidatas ou o que seja, e a fim de pará-los é necessário entender e corrigir os pontos fracos do TCP/IP, em outras palavras saber o que o inimigo sabe. E necessário conhecer que protocolos a rede suporta, ter um conhecimento básico de como os protocolos interagem com os firewalls, com os 62 computadores clientes da rede e com outros computadores fora do firewall na Internet. É necessário entender os riscos e benefícios de abrir portas de um firewall para os vários serviços que os clientes da rede gostariam de usar. É fundamental estar ciente das limitações que um firewall impõe no tráfego da rede, e deve entender que protocolos são facilmente usados pelos hackers e quais não são. Não tão pouco importante como fundamental, a criptografia, é uma ferramenta que se desenvolveu do uso de espiões e diplomatas para tornar-se parte integral das comunicações modernas. A finalidade principal da criptografia é manter segredo. Diz [STREBE], que a criptografia foi usada pela primeira vez para proteger mensagens de modo que somente a pessoa que soubesse o “truque” para decodificar a mensagem poderia tê-la. A história esta repleta de casos em que foram usados códigos e cifras inteligentes por reis e príncipes, espiões, generais, comerciantes e inventores. São diversas as maneiras de utilizar-se da criptografia, onde ela não é somente útil na comunicação, pode ser usada na proteção de dados armazenados, como os dados gravados em disco rígido. Uma outra utilização é com o objetivo de conferir identidades, através da autenticação de usuários que acessam os computadores. É empregada em assinaturas e certificados digitais, que são úteis, porque embora qualquer pessoa possa conferir a assinatura somente a pessoa com a chave privada pode criar a assinatura, onde a diferença entre assinatura digital e certificado digital, é a possibilidade de conferencia da autenticidade de um certificado com uma autoridade de certificados. Na transmissão WEB segura, deve-se ser preferido a utilização de HTTPS que utiliza SSL, que não somente criptografa os dados antes que sejam transferidos ao site WEB como também decifra os que são recebidos dele. Portanto, todos os dados que trafegam no canal são enviados pela rede na forma criptografada. Isto acontece de maneira que antes da transmissão de qualquer dado, é estabelecida uma conexão segura na porta TCP 443, e todos os dados subsequentes são enviados com criptografia. Desta maneira, se houvesse alguma informação confidencial como nome de usuário e senha de autenticação ou algum dado sigiloso, eles jamais serão lidos por uma escuta hacker na rede. Outro aspecto a se considerar são as senhas. Há várias estratégias para implementar a proteção de senhas. O conceito principal é usar senhas adequadas 63 que não serão reveladas pelo uso de programas de decifração com ataques de dicionário. Para [HATCH], a primeira regra para conseguir uma senha adequada é nunca criar uma senha fraca. Como regra geral, as senhas fracas são baseadas em alguma combinação de nomes, palavras e/ou números. As senhas que são fáceis de lembrar podem ser rapidamente decifradas devido a capacidade de processamento dos equipamentos de hardware atuais; portanto, é essencial que não sejam escolhidas senhas deste tipo. Se a senha for composta de uma palavra que existe em algum dicionário, então será suscetível a um ataque de senha. Adicionar dígitos (como números de telefone, aniversários, seqüências numéricas comuns), ou escrever a palavra de maneira inversa, não aumenta a eficácia da senha porque os programas de decifração de senhas são escritos para acrescentar essas seqüências de caracteres ao texto que estiverem testando. Portanto, é recomendável evitar senhas que contenham estas combinações. Uma maneira adequada de criar-se uma senha, que é uma senha eficaz, e é difícil de ser quebrada e adivinhada, e jamais baseá-la em palavras de dicionário e ser uma senha relativamente fácil de lembrar. A questão ser relativamente fácil de lembrar é importante: se a senha for muito difícil de lembrar, os usuários podem ficar tentados a anotá-las. Isto é perigoso, porque, se isso for feito, outra pessoa poderá ler a informação. E finalmente para criar uma senha, a maneira mais eficaz e utilizar do pensamento abstrato, onde pensando em uma frase que é relativamente obscura, mas fácil de lembrar, pode-se extrair dela caracteres que formarão uma abreviatura, que deve conter caracteres especiais, números e pontuação. Exemplo: I came, I saw, I conquered. (Vim, Vi e Venci.) = Ic,Is,Ic. E finalmente não use a mesma senha em máquinas diferentes, visto que se em uma delas a senha for decifrada, todas as máquinas serão comprometidas. Para fortalecer a segurança entre suas redes geograficamente espalhadas utilize VPNs que são uma forma economicamente viável de estender redes locais através da internet até redes remotas e computadores remotos. Elas usam a internet para encaminhar tráfego de rede local oriundo de uma rede privada para outra, encapsulando o tráfego local em pacotes IP, estes por sua vez são criptografados e ilegíveis para os computadores intermediários na internet e podem conter qualquer tipo de comunicação de rede local. 64 Para [STREBE] as redes privadas virtuais resolvem o problema de acesso direto a servidores via internet por meio de uma combinação dos seguintes componentes fundamentais de segurança, obrigatórios em uma VPN de verdade: Encapsulamento IP; Autenticação criptográfica; Criptografia dos dados contendo as informações. Ainda, as VPNs são mais baratas que as redes de longa distância (WANs), considerando que o custo de uma conexão dedicada e a largura de banda, extrapolam os orçamentos quando comparados as tecnologias de conectividade existentes a custos menores, como os modems analógicos comuns, ISDN, xDSL ou cable modems, simplesmente VPNs brilham frente as redes de longa distância tradicionais, seja pelos custos ou pela conectividade em áreas geográficas amplas. E finalmente, as VPNs são mais fáceis de instalar, por utilizar tecnologias acessíveis à implantação e manutenção, quando se identifica os fatores de gerenciamento de uma rede de longa distância com seus roteadores, gateways e os equipamentos telefônicos especializados. Observados os mínimos preceitos exigidos para prover a segurança, deixamos para o final deste capítulo a observação de que todo o conjunto acima descrito aplicado a organização para proteção da rede e seu perímetro de nada valem se não for realizada a conscientização do usuário da rede. Por isso, ressalvamos nestas ultimas linhas a necessidade do treinamento e estabelecimento de uma cultura comprometida com a segurança para todos os usuários do sistema informatizado. 2.8. BANCO DE DADOS Trataremos este capítulo em três partes distintas: sistemas de banco de dados – uma visão geral, projeto de banco de dados e banco de dados MySQL. Parte I – Sistemas de Banco de Dados Um sistema de banco de dados é um conjunto de diferentes componentes de software contendo as seguintes partes: Aplicações de Banco de dados; Componentes front-end (cliente) Sistemas gerenciadores de banco de dados; 65 Banco de dados. Para [PETROVIC], uma aplicação de banco de dados é um software com um propósito específico, projetado e implementado, ou pelo próprio usuário ou por empresas de software independentes. Em contraste, componentes front-end são softwares de banco de dados de propósito geral, projetados e implementados por um fabricante de softwares de banco de dados ou como softwares de terceiros. Usando aplicações de banco de dados e componentes front-end, os usuários podem gerenciar e fazer consultas a um banco de dados. A razão de ser de um sistema gerenciador de banco de dados é gerenciar os dados armazenados em um banco de dados. Em geral, pode ser visto sob duas perspectivas: a do usuário e a do SGBD. Os usuários visualizam um banco de dados como uma coleção de dados logicamente agrupados. Para um SGBD, um banco de dados é simplesmente uma série de bytes, usualmente armazenadas em um disco rígido. Embora estas duas visões de um banco de dados sejam totalmente diferentes, elas possuem alguma coisa em comum. O sistema de banco de dados não somente necessita fornecer interfaces que habilitam usuários para criar banco de dados e encontrar ou modificar dados, mas também necessita fornecer componentes de sistema para gerenciar os dados armazenados. Um sistema de banco de dados precisa fornecer os seguintes recursos: Variedade de interfaces de usuário; Independência física de dados; Independência lógica de dados; Otimização de consulta; Integridade dos dados; Controle concorrente; Backup e recuperação; Segurança e autorização. Abrimos um parêntese neste instante para sustentar o conceito de banco de dados relacionais3. Em oposição aos sistemas de banco de dados então 3 O conceito de Banco de Dados Relacionais foi primeiramente introduzida por E.F. Codd em seu artigo “A Relational Modelo f Data for Large Shared Data Banks” (um Modelo Relacional de Dados para grandes Bancos de dados Compartilhados) publicado em 1970. 66 existentes, tal como sistemas hierárquicos, um sistema de banco de dados relacional é baseado em um modelo relacional de dados, o qual possui um forte background matemático. O conceito central do modelo relacional de dados são as tabelas e seus relacionamentos. Desta forma, do ponto de vista do usuário, um banco de dados relacional contém tabelas e nada mais que tabelas. Em uma tabela, existem uma ou mais colunas e nenhuma ou várias linhas. Em uma dada posição de linha e coluna há sempre um único valor. Indagando neste instante o que é um banco de dados? Deparamos com [JEPSON] que estabelece que um banco de dados é um conjunto de tabelas relacionadas. O banco de dados pode ser usado como uma forma de controlar quem tem acesso a um conjunto particular de tabelas. Uma prática muito comum é fornecer para cada usuário (ou projeto) o seu próprio banco de dados. Os usuários podem assim criar tabelas e outros objetos de banco de dados conforme necessário. Alguns bancos de dados podem restringir o acesso de usuários a tabelas de forma seletiva. Desta maneira, um banco de dados é semelhante a um diretório home. Este é o momento mais apropriado para estabelecermos a diferença entre um Banco de dados e um Servidor de Banco de Dados. [JEPSON], assim apresenta, que um servidor de banco de dados é grosseiramente sinônimo de um sistema de banco de dados, descrito anteriormente. Um servidor de banco de dados é o daemon que funciona nos bastidores e gerencia os dados propriamente ditos, assim como o acesso dos clientes aos dados. Um sistema de banco de dados inclui o servidor e todos os programas utilitários, bibliotecas e outros arquivos que suportam a operação do banco de dados. É muito comum ouvir alguém referindo-se a um servidor de banco de dados como ”o banco de dados”. Isso pode causar confusão, e é melhor então não trocar as expressões. Por exemplo, se o administrador de banco de dados disser “o banco de dados estará off-line maior parte da tarde”, ele quer dizer que o banco de dados de contabilidade estará off-line, ou que todo o servidor de banco de dados estará fora do ar (e, portanto, todos os bancos de dados naquele servidor, incluindo o banco de dados de contabilidade). Ainda no contexto de banco de dados, estabelecemos o limite da SQL, que será abordada no capítulo 8, por hora fiquemos com a definição que é a Linguagem de Consulta Estrutura, uma linguagem para acessar e manipular bancos de dados relacionais. Enquanto o SQL tem sido padronizado, há algumas poucas implementações que se situam próximas da norma. 67 Parte II – Projeto de Banco de Dados Os sistemas de banco de dados usam tabelas para armazenar informações sobre os objetos do mundo real ou conceitos (entidades). Uma tabela é um repositório para os dados. A vantagem da tabela de banco de dados é a facilidade de pesquisa. Em um sistema de banco de dados relacional, os relacionamentos entre tabelas espelham os relacionamentos entre as entidades que você esta tentando modelar. Os sistemas de banco de dados de arquivos de texto organizam as informações em tabelas, de forma muito parecida como fazem os sistemas de banco de dados relacionais. Entretanto os sistemas de arquivos planos não oferecem facilidades para a criação e gerenciamento dos relacionamentos entre as tabelas. Em um sistema de banco de dados relacional, os relacionamentos entre as tabelas o ajudam a modelar o comportamento no mundo real das entidades no seu banco de dados. Uma tabela é basicamente uma grade de linhas e colunas [JEPSON]. Cada linha representa uma determinada ocorrência de uma entidade (como uma pessoa, um local ou um evento). Pode ser útil pensar em um sistema de banco de dados relacional em termos de orientação a objeto. Se você pensar em cada linha como uma ocorrência, então poderá pensar em cada coluna como um atributo (ou propriedade). Por exemplo, uma pessoa pode ter um determinado endereço, um número de telefone ou preferência de assento para assistir um evento esportivo. Se localizarmos uma intersecção de uma linha e uma coluna, também identificaremos um único valor, como o número de telefone desta pessoa. Para maioria dos sistemas de gerenciamento de banco de dados, quaisquer paralelos entre banco de dados e os objetos terminam aqui: os sistemas de gerenciamento de bancos de dados puramente relacionais não são orientados a objetos. Para obtermos o máximo desempenho e flexibilidade de um banco de dados, é necessário seguir um conjunto estabelecido de diretrizes de projeto de banco de dados que podem ser ampliados e podem tratar de tudo, desde as mais simples até as mais exóticas consultas. Em sistemas típicos de banco de dados, exigisse preocupação somente com a estrutura lógica do banco de dados: as tabelas, suas colunas, índices e os relacionamentos entre as tabelas. A estrutura física do banco de dados é tratada pelo SGBD, e inclui como e onde as tabelas estão armazenadas no disco, os algoritmos usados para indexar as tabelas e outras 68 facetas do gerenciamento de banco de dados com os quais não é necessário preocupação. As etapas envolvidas no projeto de um banco de dados simples, são as seguintes: a) Identifique as entidades que você quer representar – é a etapa de certificar-se na questão de estabelecer quais as entidades que queremos que o banco de dados represente. b) Identifique as entidades prováveis – é a etapa de transformar nossas entidades em tabelas e os atributos em colunas através do uso da DDL (linguagem de definição de dados). c) Normalização – é a etapa onde solucionaremos problemas não-óbvios com o banco de dados, através do processo conhecido por normalização que muda a estrutura do banco de dados para adequarse a uma ou mais formas normais4. d) Criando um dicionário – é a etapa de estabelecer um dicionário de dados para o banco de dados. O dicionário de dados é uma referencia escrita sobre cada entidade e atributo, neste estágio do projeto serão tomadas as decisões em relação a qual tipo de dado usar para cada atributo quando criar as tabelas. e) Criar as tabelas – é a etapa de tradução direta do que foi planejado para criação da estrutura de armazenamento que existirá no banco de dados, realizada através de comandos SQL. f) Colocando dados no banco de dados – ultima etapa do processo de projeto de banco de dados, consiste em popular o banco de dados com informações. Parte III – O Banco de Dados MySQL Onde o MySQL se enquadra entre os produtos de SGBDR? [SUEHRING]. De varias maneiras, o MySQL oferece o melhor cenário de todos: ele executa em muitas plataformas, oferece um baixo TCO e é estável. A documentação do MySQL 4 Formas Normais – Em número de cinco (1NF a 5NF), são padrões de projetos de dados estabelecidos que permitem desenvolver bancos de dados que possibilitam expansão futura (mesmo quando suas tabelas tiverem muitas linhas), e podem ser consultadas de forma flexível. 69 é excelente. O MySQL AB tem um site WEB completo contendo material de referência, bem como um link para arquivos de listas de discussão, eles oferecem suporte de alta qualidade para seus produtos, incluindo um serviço que permite aos desenvolvedores MySQL efetuar logon em seu servidor para corrigir problemas e preventivamente ajuda na otimização. Simplesmente, o MySQL está ganhando uma fatia do mercado de RDBMS porque oferece estabilidade, suporte e baixo custo O MySQL está disponível para muitos sistemas operacionais diferentes em uma variedade de arquiteturas de computador, o que por sua disponibilidade de versões para diversas plataformas aprimorou a sua popularidade. Além do servidor de banco de dados padrão, uma versão aprimorada do MySQL está disponível – o MySQL-Max. Ele inclui o servidor padrão do MySQL, mais suporte para tabelas de transações seguras como InnoDB ou Berkeley DB. O MySQL está disponível como um binário ou como código-fonte para download; se quiser adicionar um recurso de MySQL à sua aplicação, você pode, pois ele é distribuído sob a GPL de GNU e a LGPL de GNU. O MySQL também oferece muitas APIs para permitir ao desenvolvedor acessar e modelar o banco de dados via programas em várias linguagens. O MySQL segue quase inteiramente o padrão SQL-92, e estende o padrão SQL de maneiras distintas (embora possa ser utilizado em um modo somente ANSI). Além isso, como seria de se esperar, se você utilizar algumas extensões do padrão especificas do MySQL, seu banco de dados pode não continuar sendo portável para outro SGBDR se você optar por migrá-lo posteriormente. Então o que o MySQL faz de melhor? Aplicações WEB – as aplicações WEB em geral apresentam muitas leituras e poucas gravações. O MySQL é rápido e pode atender às demandas de velocidade da Internet; Aplicações de nível corporativo – O MySQL oferece suporte diretamente pela empresa pai, MySQL AB. O conjunto de recursos do MySQL inclui quase tudo que uma aplicação de nível corporativo precisa. Suporte a código-fonte aberto – O MySQL AB também responde bem as solicitações de recursos. O MySQL tem seu código-fonte aberto; 70 todo mundo é convidado a fazer download dele e estender o código para atender às suas próprias necessidades; Sobrecarga baixo – O MySQL executa confortavelmente muitas aplicações em um computador de classe Intel Pentium com 32MB de RAM ou menos; Tamanho grande de tabela disponível – as tabelas do MySQL podem crescer bastante, embora às vezes encontrem limitações de tamanho de arquivos do sistema operacional host. Algumas arquiteturas, porém, podem acomodar até 8 TerraBytes por tabela utilizando MySQL; Estabilidade – todo software está em desenvolvimento. Alguns recursos no MySQL são mais novos que outros, possivelmente tornando-os menos estáveis que outros. O MySQL concorre – e vence – alguns de seus correspondentes comerciais em muitas áreas [SUEHRING]. Particularmente em desempenho, escalabilidade e estabilidade, o MySQL pode ter um desempenho tão bom ou melhor que seus concorrentes. 2.9. LINGUAGENS DE PROGRAMAÇÃO Neste capitulo estaremos finalmente apresentando de maneira sucinta, rápida e objetiva as linguagens de programação utilizadas neste trabalho de conclusão de curso. Em primeira linha, discutiremos sobre a SQL, uma linguagem de banco de dados; e posteriormente apresentaremos a PHP, uma linguagem de scripts para a Internet, em conjunto com o HTML. A origem do SQL está relacionada ao projeto conhecido como sistema R, que foi projetado e implementado pela IBM no inicio da década de 80. Esse projeto mostrou que é possível construir um sistema de banco de dados relacional usando os fundamentos teóricos de E.F. Codd. O SQL foi construído na primeira fase do projeto, em que a meta era implementar somente um protótipo com funcionalidade limitada. Após o sucesso do Sistema R, várias empresas construíam seus próprios sistemas de banco de dados relacionais escolhendo SQL como linguagem. Todas as implementações expandiram a linguagem, criando diferentes dialetos, à medida que cada companhia implementou suas próprias extensões. Por essa razão, o ANSI e a 71 ISSO fundaram um comitê em 1982 com o objetivo de planejar uma versão padrão do SQL. O primeiro padrão do SQL, que foi baseado primeiramente no dialeto SQL da IBM, foi liberado em 1986. Após a liberação de um padrão intermediário em 1989, um padrão muito mais extenso, chamado SQL92, foi desenvolvido e finalmente liberado em dezembro de 1992. Nos últimos anos, ambas as organizações vinham desenvolvendo um novo padrão – o SQL3 – o qual abrangia diversos novos conceitos de banco de dados, incluindo triggers, procedimentos armazenados e numerosos conceitos relacionados à Orientação a Objetos. As principais partes do padrão SQL3 foram liberadas em setembro de 1999 (por esta razão, o sinônimo para SQL3 é SQL99). Ao contrário das linguagens de programação tradicionais, o SQL é uma linguagem projetada para trabalhar com conjuntos de registros de dados em vez de registros isolados. Isso significa que o SQL pode consultar diversas linhas (registros) a partir de uma ou mais tabelas usando apenas um única instrução, ao passo que linguagens tradicionais podem trabalhar apenas com uma única linha por vez. Está é uma das mais importantes vantagens do SQL, permitindo o uso desta linguagem em um nível logicamente mais alto do que outras linguagens. Outra característica importante do SQL é o fato de não ser procedural. Cada programa escrito em um linguagem procedural precisa descrever em detalhes como uma tarefa é realizada, passo a passo. O SQL, pelo contrário, descreve apenas o que o usuário deseja. Assim, o sistema é responsável por encontrar a maneira apropriada para atender aos pedidos dos usuários. O SQL se divide em outras duas sublinguagens: uma linguagem de definição de dados – DDL – e uma linguagem de manipulação de dados – DML. As instruções DDL são usadas para descrever o esquema de tabelas de um banco de dados. A DDL contém três instruções SQL genéricas: CREATE, ALTER e DROP. Estas instruções criam, alteram e removem objetos do banco de dados tais como tabelas, colunas e índices. A DML, por outro lado, inclui todas as operações que manipulam os dados. Geralmente existem quatro operações genéricas para manipular os dados em um banco de dados: recuperação, inserção, eliminação e modificação. A instruções respectivas seriam SELECT , INSERT, DELETE e UPDATE. Qualquer recurso da WWW depende de equipamento servidor WEB e do equipamento clientes WEB. O servidor é o computador que torna as informações 72 disponíveis para a Internet, como discutimos no capitulo 5 – WEB Server Apache – O cliente é o programa que obtém e exibe as informações dos servidores da WEB. Discutiremos agora o HTML, que é a linguagem utilizada pelos clientes da WEB para exibição de páginas de Internet através de Browsers. HTML não é uma linguagem avançada de editoração eletrônica [CHA1996]. Ela permite o uso de listas com marcadores, numeradas e aninhadas. A especificação da HTML é revisada constantemente, a fim de possibilitar a aceitação de novos recursos. Além da formatação em texto, a maior parte dos browsers aceita a exibição de gráficos. O que torna o HTML um recurso útil na exibição de conteúdo estático na Internet. Como núcleo de toda página da WEB, a HTML é uma linguagem de descrição de página com características incorporadas para a criação de hipertexto. Embora ainda esteja longe de possuir todos os recursos de formatação de um processador de textos ou de uma linguagem de editoração eletrônica, a HTML permite pelo menos uma formatação bem melhor do que um simples texto em ASCII. Um pouco de história. A HTML 0, a primeira versão, foi desenvolvida no CERN no inicio de 1990, e praticamente não é mais usada. A HTML 1 incorporou imagens em linha e estilos de texto, e foi a versão de HTML utilizada por quase todos os primeiros paginadores da WEB. A HTML 2 foi um padrão publicado sobre a forma de um RFC. A HTML 3 o incorporou tabelas, figuras, equações e outros recursos mais avançados de formatação. A HTML é na verdade, apenas texto ASCII com códigos de formatação que especificam diferentes fontes e estilos. O padrão difundido atualmente é a HTML 4.01, que combina novos recursos com a tecnologia XML, e por vezes pode ser reconhecida como XHTML. Ela é muito semelhante aos primeiros processadores de textos, que exigiam a inserção de tags de formatação para a especificação de tipos em negrito, sublinhado ou itálico. A editoração de HTML pode ser feita com o uso de editores de texto simples, porque a linguagem é compacta e se baseia no padrão ASCII. Todos os recursos de formatação da HTML especificam estilos lógicos, e não estilos físicos, isso permite a visualização do conteúdo em diversas plataformas e diversos tipos de clientes. A desvantagem desse enfoque é a impossibilidade de controlar a formatação exata de qualquer documento HTML, porque os usuários podem escolher suas próprias fontes e seus estilos, combinando-os com os estilos de HTML. 73 Os três elementos básicos em HTML são indicados em seu nome: • Hypertext (Hipertexto): é o nome dado para um link. Um formulário de recurso de ajuda on-line é um link de hipertexto, por exemplo; • Markup (Anotação): é exatamente o que anuncia – um sistema de símbolos escritos em um documento que permite que o processador; seja humano, seja uma máquina, reconheça como fazer para apresentar e formatar o documento; • Linguagem: são vários símbolos ou sons que possibilitam a comunicação. Se uma pessoa fala francês e outra alemão, não poderão comunicarse muito bem. Entretanto, se os dois falarem espanhol como segundo idioma, terão um meio comum de comunicação e poderão trocar idéias. Um documento hipertexto é constituído de trechos de texto, parecidos com os que se produz em um editor de textos. Na verdade, para se construir páginas em HTML, basta utilizar um editor de textos. O documento hipertexto se diferencia pela possibilidade de ligar uma palavra ou um trecho de texto, com outras partes desse ou de outros documentos. Esta ligação é chamada de link de hipertexto, ou, simplesmente, link. Ao dar um clique em um link, o HTML irá se encarregar de desviar sua leitura para um novo trecho do documento, correlacionando para o assunto apontado por essa ligação. Como já mencionado HTML é uma linguagem simples que possui uma centena de comandos distintos. A estrutura do seu código baseia-se na inserção de palavras reservadas entre os sinais “< >”. Por exemplo, <B>Texto</B> tornaria o texto negrito. É uma linguagem interpretada. O interpretador é o browser, que converte os comandos anotados na representação gráfica de objetos estruturados (textos e imagens). A estrutura de um programa HTML, apresenta-se da seguinte forma: a) Cabeçalho – todo documento HTML deve começar por declarar a si mesmo, através do comando <HTML>, colocado no começo, e </HTML> no final. O topo do documento deverá conter também uma seção cabeçalho, delimitada pelo par <HEAD> e </HEAD>. Existem várias informações que podem ser incluídas neste cabeçalho. No geral, os cabeçalhos são ignorados pelos browsers. Entretanto, as informações contidas nessa seção são de suma importância para a recuperação dos conteúdos. 74 b) Corpo do documento – o corpo do documento é todo formado por texto e imagens, hiperlinkados ou não, contidos entre <BODY> e </BODY>. É a página propriamente dita, aquilo que será mostrado na tela do monitor. Em termos de elementos, pode-se programar e configurar o seguinte: Textos de cabeçalhos; Parágrafos de texto; Listas de itens; Lista de definição; Links e âncoras de hipertexto; Imagens inseridas; Links de imagem; Formulários eletrônicos; E outros. c) Links de Hipertexto – a linguagem HTML tem disponível apenas um tipo de link, que é uma associação unidirecional entre uma origem e um destino. Links são os elementos que diferem um documento da Internet de um impresso. Os seus principais recursos são a manipulação de strings e de imagens. No caso das strings, a HTML permite manipular seus atributos (negrito, itálico, corpo da fonte, espaçamento interparagrafar) e sua posição relativa na página (diagramação). No caso de imagens, é possível determinar apenas sua posição. A HTML permite definir também âncoras e links de hipertexto e hiperimagem. d) Tags HTML – os documentos HTML são compostos apenas de texto. Parte do texto são instruções para o browser realizar algo com o texto puro associado. Essas instruções são chamadas tags. Os tags são descritos usando-se os sinais de menor < e de maior >. A maioria dos tags é usada em pares, para ligar e desligar um recurso de formatação em um bloco de texto. O tag de finalização é igual ao de início, exceto pela barra (/) na frente do identificador. Todas as tags de formatação HTML podem ser escritas em letras maiúsculas, minúsculas ou misturadas [CHANDLER]. A Tabela 1 mostra um pequeno conjunto dos muitos tags disponíveis na HTML. TABELA 1 – CONJUNTO DE TAGS DISPONÍVEIS EM HTML <HTML>...</HTML> O tag HTML é o primeiro e o último em um documento 75 HTML. Ele diz ao browser para que apresente o documento como hipertexto, em vez de texto puro. O tag HEAD identifica o início da seção do documento <HEAD>...</HEAD> HTML. Entre outras coisas, o título do documento fica em cabeçalho. <TITLE>...</TITLE> O tag TITLE contém o título que aparece na barra de títulos do browser WEB. O tag BODY circunda a maior parte de uma página WEB. <BODY>...</BODY> Ele contém tudo que um usuário vê quando acessa sua página na WEB. Os tags HEADER criam vários tamanhos de cabeçalho <Hn>...</Hn> de texto. Substitua o n por um número entre 1 e 6. Quanto mais baixo o número, maior o cabeçalho. Os tags HORIZONTAL RULER desenha uma linha <HR> horizontal na página WEB, tornando-a mais fácil para o usuário ler. Um exemplo da marcação HTML é mostrado na figura 3, o texto foi extraído da página inicial da Ferramenta TSDJ Groupware. 76 FIGURA 3 – EXEMPLO DE MARCAÇÃO HTML Estabelecido os conceitos de utilização da HTML, compreendamos agora como prover conteúdo dinâmico para a WEB através da integração da linguagem estática HTML com a linguagem dinâmica PHP4. A PHP Hypertext Preprocessor, como é introduzida em [CHOI] é uma linguagem de programação para desenvolvimento de sites WEB interativos e dinâmicos, originalmente projetada por Rasmus Lerford nos idos de 1994. Desde então, passou por varias alterações e foi adotada por programadores WEB ao redor do globo. Em termos técnicos, a PHP4, a quem nesta obra estaremos tratando apenas como PHP, é uma linguagem se script da WEB, rodando no servidor, multiplataforma, em uma combinação com comandos HTML, onde o código escrito com PHP e HTML, é tratado de maneira que usamos o primeiro para controlar e o segundo para formatar. Estes programas são colocados em um servidor WEB, discutido no capítulo 5, e assim podemos acessá-los pela utilização de um navegador da WEB, que exibe o HTML resultante. Isso significa que nossos programas podem ser 77 disponibilizados para que outras pessoas tenham acesso através da WEB, simplesmente colocando-os em um servidor público da WEB. Uma menção a utilização do HTML é recomendada antes de prosseguirmos. [CHOI], ressalva a familiarização com o HTML, esclarecendo que essa linguagem é utilizada para gravar páginas WEB, combinando texto e tags especiais que informam ao navegador como tratar aquele texto. O HTML é usado para descrever como elementos diferentes devem ser exibidos em uma página WEB, como as páginas devem ser vinculadas, onde colocar as imagens e assim por diante. Documentos HTML puro, por toda à sua versatilidade, são pouco mais do que arranjos estáticos de textos e quadros, embora com boa apresentação; mas a maioria dos sites que você pode encontrar na WEB não são estáticos e sim dinâmicos e até mesmo interativos. Eles mostram uma lista de sites com palavras que você especificou, apresentam últimas noticias e até o saúdam pelo nome quando você se conecta. Permitem que você interaja e apresentam páginas WEB diferentes, de acordo com às suas escolhas. Você não pode desenvolver um site WEB como esse utilizando HTML simples, e é nesta hora que a PHP entra em cena. Ela proverá alguns recursos que irão: Apresentar dados de uma grande variedade de fontes diferentes, como bancos de dados ou arquivos; Incorporar elementos interativos, como recursos de procura, quadros de mensagens e votações preliminares; Permitir ao usuário desempenhar ações, como enviar mensagens de correio eletrônico ou comprar algo. Trocando em miúdos, a PHP, pode ser utilizada para gravar o tipo de site WEB que qualquer pessoa familiarizada com a WEB usa diariamente. De sites de comércio eletrônico a mecanismos de procura e portais de informações, a maioria dos principais sites da WEB na Internet incorpora alguns ou todos esses tipos de programação. Portanto, a PHP pode ser utilizada para uma grande variedade de aplicativos, de utilitários, e de ferramentas corporativas. O que há de melhor sobre a PHP4 é que ela tem o suporte a um grande numero de ISPs, o que significa que uma vez que você tenha escrito um aplicativo em PHP, pode facilmente colocá-lo na WEB para que todos o utilizem. A PHP é 78 baseada no processador de script Zend, de propriedade da Zend Technologies 5, onde informações específicas sobre a PHP, podem ser obtidas, assim como artigos, estudos de caso e novidades sobre os vários usos que ela está desempenhando atualmente nos ambientes de negócios. O Site oficial do Projeto PHP 6, é fonte essencial de informações e o canal para obtenção das novas versões da linguagem, portáveis para várias plataformas. A figura 4 exibe um ambiente configurado para executar a PHP, onde o acesso é realizado através do navegador Internet Explorer. FIGURA 4 – AMBIENTE DE EXECUÇÃO DA PHP O Ambiente de programação da PHP é estritamente simples, e a exemplo da programação HTML pode ser feito utilizando-se um simples editor de texto. O conceito de armazenamento é tratado pela PHP com o uso de variáveis, que são as estruturas de dados responsáveis pelo armazenamento e manipulação temporário 5 http://www.zend.com 6 http://www.php.net/ 79 das informações que trafegam no sistema PHP. O sufixo .php caracteriza o script PHP, ou seja, onde o nosso código fonte estará armazenado e pronto para ser interpretado pelo processador PHP. Um script PHP é sempre escrito dentro do documento que combina HTML e PHP dentro das tags <?php e ?>. A PHP tem uma grande biblioteca de palavras reservadas, conhecidas como funções, e elas desempenham tarefas comuns como retornar a data ou hora, enviar mensagens de correio eletrônico, executar algumas operações matemáticas mais complexas ou interromper a execução de um script por alguns segundos. Uma questão extremamente importante no código php é o símbolo “;”, exigido como terminador de linha pela PHP, o que esclarece para a linguagem que aquela seqüência de comandos terminou (há uma ou duas exceções para essa regra). Finalmente, depois de compreendidos os conceitos preliminares da linguagem, podemos estabelecer a premissa que a PHP é um script que roda do lado do Servidor. Toda informação contida entre as tags <?php e ?> é entendida como código PHP sendo enviada ao pré-processador de script PHP para processamento, e assim é enviado ao cliente somente o conteúdo HTML, que será exibido de maneira apropriada as marcações HTML. A obtenção de informações do cliente é manipulada por intermédio de formulários HTML, e enviadas para o servidor WEB, onde estas informações serão tratadas de acordo com as instruções do código fonte. Um exemplo básico de código PHP é exibido abaixo, o mesmo produz o resultado observado na Figura 5. <HTML> <HEAD> <TITLE>Um exemplo simples de Código PHP</TITLE> </HEAD> <BODY> <p font face=”Verdana”> A data atual é</p> <?php echo gmdate(“M d Y”); ?> </BODY> </HTML> 80 FIGURA 5 – EXEMPLO DE CÓDIGO PHP Resumindo, a PHP é uma combinação de três itens: texto, marcação HTML e script PHP, que gera código fonte interpretado pelo servidor WEB gerando resultados em HTML puro para o cliente de maneira que o navegador possa entender, através da utilização de trafego http de um lado para o outro. 2.10. ENGENHARIA DE SOFTWARE Este capítulo buscará os conceitos fundamentais da engenharia de software, que devem coexistir a todo projeto que implemente ferramentas baseadas em software. Seu objetivo é estabelecer as boas práticas e determinar conceitos sobre softwares. Em Engenharia de Software, [PRESSMAN], determina que durante as três primeiras décadas da era do computador, o principal desafio era desenvolver um hardware que reduzisse o custo de processamento e armazenamento de dados. Ao longo da década de 1980, avanços na microeletrônica resultaram em maior poder de computação e a um custo de processamento e armazenamento de dados. Ao longo da década de 1980, avanços na microeletrônica resultaram em maior poder de computação a um custo cada vez mais baixo. Hoje, o problema é diferente. O principal desafio durante a década de 1990 foi melhorar a qualidade (e 81 reduzir o custo) de soluções baseadas em computador - soluções que são implementadas com software. O poder de um computador mainframe da década de 1980 agora está à disposição sobre uma escrivaninha. As assombrosas capacidades de processamento e a magia de armazenagem do moderno hardware representam um grande potencial de computação. O software é o mecanismo que nos possibilita aproveitar e dar vazão a esse potencial. Há vinte anos, menos de 1% do público poderia descrever de forma inteligível o que significa "software de computador". Hoje, a maioria dos profissionais bem como a maior parte do público, em grande medida, acha que entende o que é software. Será que entendem? Uma descrição de software no livro didático poderia assumir a seguinte forma: "Software é: (1) instruções (programa de computador) que quando executadas, produzem a fundição e desempenho indesejados; (2) e estruturas de dados que possibilitam que os programas manipulam adequadamente a informação; e (3) documentos que descrevem a operação e o uso dos programas". Não há dúvida de que outras definições, mais completas, poderiam ser oferecidas. Mas precisamos de algo mais que uma definição formal. Para [PRESSMAN], para que se possa obter a compreensão do que o software (e, em última análise, uma compreensão da engenharia de software) é importante examinar as características do software que o tornaram diferente das outras coisas que os seres humanos constroem. quando o hardware é construído, o processo criativo humano (análise, o projeto, construção e teste) é imediatamente traduzido numa forma física. Se construímos um novo comprador, nossos esboços iniciais, desenhos de projeto formais e protótipo em forma digna para esta a cada breadboard (arranjo experimental de circuitos eletrônicos) evoluem para um produto físico (chips VLSI, e placa de circuito, fontes de energia, etc.). O software é um elemento de sistema lógico, e não físico. Portanto, o software tem características que são comuns consideravelmente diferentes da do hardware: 1. O software é desenvolvido e projetado por engenharia, não manufaturado no sentido clássico; 2. Software não se desgasta; 3. A maioria dos softwares se é feita sob medida em vez de ser montada a partir de componentes existentes. 82 O software de computador é uma informação que existe em duas formas básicas: componentes não executáveis em máquina e componentes executáveis em máquinas. Os componentes de software são criados por meio de uma série de conversões que mapeiam as exigências do cliente para o código que executaram em máquina. Um modelo (o protótipo) das exigências é convertido num projeto. O projeto de software é convertido numa forma de linguagem que especifica a estrutura de dados do software, os atributos procedimentais e os requisitos relacionados. A forma de linguagem é processada por um tradutor que converte em instruções executáveis em máquina. A reusabilidade é uma característica importante um componente de software de alta qualidade, ou seja, o componente deve ser projetado implementado de forma que possa ser reusado em muitos programas diferentes. Os componentes de software são construídos usando uma linguagem de programação e tem um vocabulário limitado, uma gramática explicitamente definida e regras de sintaxe e semântica bem formadas. Esses atributos são essenciais para a tradução por máquina. As formas de linguagem em uso são linguagens de máquina, linguagem de alto nível e linguagens não-procedimentais. O software pode ser aplicado a qualquer situação em que um conjunto previamente especificado e passos procedimentais (isto é, um algoritmo) tiver sido definido (notáveis exceções a essa regra são o software de sistema e especialista e o software de rede neural). O conteúdo de informação e a determinância7 são fatores importantes na determinação da natureza de um aplicativo. A palavra conteúdo refere-se ao significado e a forma das informações que entram e saem. Por exemplo, muitas aplicações comerciais fazem uso de dados de entrada altamente estruturados (um banco de dados) e produzem "relatórios" formatados. Desenvolver categorias genéricas para as aplicações de software é uma tarefa um tanto difícil. A medida que a complexidade do software cresce, desaparece 7 Determinância de informação - Refere-se a previsibilidade da ordem e dar oportunidade da informação. Um programa de análise de engenharia aceita dados que tem uma ordem predefinida, executa os algoritmos de análise sem interrupções e produz dados resultantes em relatório ou em formato gráfico. As aplicações são determinadas. um sistema operacional multiusuário, por outro lado, aceitam entradas que tem conteúdo variado e regulagem de tempo arbitrária, executou o ritmos que podem ser interrompidos por condições externas e produz saída que varia com uma função do ambiente do tempo. Aplicações com essas características são indeterminadas. 83 a clara visão em compartimentos. As seguintes áreas de software indicam amplitude das aplicações potenciais: Software básico; Software de tempo real; Software comercial; Software científico e de engenharia; Software embutido; Software de computador pessoal; e Software de inteligência artificial. Para [PRESSMAN], os problemas que afligem o desenvolvimento de software podem ser caracterizados a partir de uma série de perspectivas diferentes, mas os gerentes responsáveis pelo desenvolvimento de software concentraram-se nas questões de "primeiro plano": (1) as estimativas de prazo de custo foram correntemente imprecisas; (2) a produtividade do pessoal da área de software não tem acompanhado a demanda por seus serviços; e (3) a qualidade de software às vezes em menos adequada. Custos excessivos de uma ordem de magnitude tem sido experimentados. Os prazos arrasta-se por meses ou anos. Pouca coisa tem sido feita para melhorar a produtividade dos profissionais da área de software. Os índices de erros para novos programas causam insatisfação do cliente e falta de confiança. Esses problemas são a manifestação mais visível de outras dificuldades do software. Cada um dos problemas descritos anteriormente pode ser corrigido. Uma abordagem de engenharia do desenvolvimento de software, aliada a uma contínua melhoria de técnicas e ferramentas, oferece a chave. Os profissionais da área de software (a geração passada foi chamada programadores; esta geração está completando conquistando o título de engenheiros de software) tem recebido pouco treinamento formal em novas técnicas para o desenvolvimento de software. Cada pessoa que aborda a tarefa de "escrever programas" com a experiência derivada dos esforços passados. Algumas pessoas desenvolvem uma abordagem ordeira e eficiente ao desenvolvimento de software por meio de ensaio e erro, mais muitas outras desenvolvem maus hábitos que resultam em qualidade e manutenibilidade deficientes. A aflição que contaminou o desenvolvimento do software não desaparecerá da noite para o dia. Reconhecer os problemas e suas causas e desmascarar os mitos do software são os primeiros passos em direção as soluções. 84 Mas as próprias soluções devem oferecer assistência prática ao desenvolvedor de software, melhorar a qualidade do software e, por fim, permitir que o mundo do software acompanhe os passos do mundo dos hardware. Não existe uma abordagem em particular que seja melhor para a solução da aflição de software. Entretanto, ao combinarmos métodos abrangentes para todas as fases de desenvolvimento de software, melhores ferramentas para automatizar esses métodos, blocos de construção mais poderosos para a implementação do software, melhores técnicas para garantia da qualidade do software e uma filosofia de coordenação predominante, controle e administração, podemos conseguir uma disciplina para o desenvolvimento dos sócios, a engenharia de software. A engenharia de software é um rebento da engenharia de sistemas e de hardware, ela abrange um conjunto de três elementos fundamentais - métodos, ferramentas e procedimentos - que possibilitam ao gerente o controle do processo de desenvolvimento do software e oferece ao profissional uma base para a construção de sorte ou área de alta qualidade produtivamente [PRESSMAN]. Os métodos de engenharia de software proporcionam os detalhes de "como fazer" para construir o software, eles envolvem um amplo conjunto de tarefas que incluem planejamento e estimativa de projeto, a análise de requisitos de software e de sistemas, projeto da estrutura de dados, a arquitetura de programa e algoritmo de processamento, codificação, teste e manutenção. As ferramentas de software proporcionam apoio automatizado o semiautomatizado aos métodos. Atualmente, existem ferramentas para sustentar cada um dos métodos adotados anteriormente. Quando as ferramentas são integradas de forma que a informação criada por uma ferramenta possa ser usado por outra, é estabelecido um sistema de suporte ao desenvolvimento de software chamado engenharia de software auxiliada por computador (CASE). O CASE combina software, hardware e um banco de dados de engenharia de software (uma estrutura de dados contendo importantes informações sobre a análise, projeto, codificação de teste). Os procedimentos da engenharia de software constituem o elo de ligação que mantém juntos os métodos e as ferramentas e possibilita o desenvolvimento racional e oportuno do software de computador. Os procedimentos definem a se conhecer em que os métodos serão aplicados, os produtos que se exige que sejam entregues (documentos, relatórios, formulários, etc.), os controles que ajudam a 85 assegurar a qualidade e a coordenar as mudanças, e os marcos de referência possibilitam aos gerentes de software avaliar o progresso. Em Engenharia de software são adotados alguns modelos de desenvolvimento de software, os quais, apenas citaremos neste capítulo, ressaltando que o modelo de prototipação receberá atenção especial devido à sua utilização no projeto. Para o desenvolvimento de software coexiste possibilidade de utilização de algum modelo de desenvolvimento de software: o ciclo de vida clássico, usualmente chamado de modelo cascata; a prototipação; o modelo espiral; ou técnicas de quarta geração (4GT). Estes paradigmas podem e devem ser combinados de forma que as potencialidades de cada um possa ser obtido um único projeto. O paradigma do modelo espiral realiza isso diretamente, combinando a prototipação e elementos do ciclo de vida clássico numa abordagem evolucionária. Mas qualquer um dos paradigmas pode constituir uma base sobre a qual os outros são integrados. Sobre a prototipação, devemos esclarecer que é um processo que capacita o desenvolvedor a criar um modelo do software que será implementado. O modelo pode assumir uma das três formas: (1) um protótipo em papel o modelo baseado em PC que retrata a interação homem-máquina de uma forma de capacete usuário a entender quando a interação ocorrerá; (2) um protótipo de trabalho que implementa algum subconjunto da função exigida do software desejado; o (3) um programa existente que executa parte ou toda a função desejada, mais que tem outras características que serão melhoradas em um novo esforço de seu desenvolvimento. A seqüência de eventos para o paradigma de prototipação é ilustrada na figura 6. Como todas as abordagens ao desenvolvimento de software, a prototipação inicia-se com a coleta dos requisitos. O desenvolvedor e o cliente reúnem-se e definem os objetivos globais para o software, identificam as exigências conhecidas e esboçam as áreas em que uma definição adicional é obrigatória. Ocorrem tal a elaboração de um "projeto rápido". O projeto rápido concentra-se na representação daqueles aspectos do software que serão visíveis ao usuário (isto é, a abordagem de entrada e formato de saída). O projeto rap leva a construção de um protótipo que é avaliado pelo cliente/usuário e é usado para refinar os requisitos para o software a ser desenvolvido. Um processo de interação ocorre quando o é feita uma "sintonia fina" do protótipo para satisfazer as necessidades do cliente, 86 capacitando, ao mesmo tempo, o desenvolvedor a compreender melhor aquilo que precisa ser feito. FIGURA 6 – MODELO DA PROTOTIPAÇÃO Idealmente, o protótipo serve como um mecanismo para identificar os requisitos de software. Se um protótipo de trabalho for construído, o desenvolvedor tentará usar fragmentos de programas existentes ou aplicará ferramentas que possibilitem que programas de trabalho sejam gerados rapidamente. O protótipo pode servir como "o primeiro sistema" - sistema esse que deverá ser descartado. Mas essa pode ser uma visão idealizada. Ainda que possam ocorrer problemas, a prototipação é um paradigma eficiente da engenharia de software. A chave é definir se às regras do jogo logo no começo; ou seja, o cliente e o desenvolvedor devem ambos concordar que o protótipo seja construído para servir como um mecanismo a fim de definir os requisitos. Ele será depois descartado (pelo menos em parte) e o software real será projetado, levando-se em conta a qualidade e a manutenibilidade. O processo de engenharia de software, para [PRESSMAN] é visto de maneira genérica em três fases distintas, independentemente do paradigma de engenharia de software escolhido. As três fases, definição, desenvolvimento e manutenção, são encontradas em todo o desenvolvimento de softwares, independentemente da área de aplicação, o tamanho do projeto ou complexidade. A fase de definição focaliza "o quê", ou seja, qual informação tem de ser processadas, qual fundição e desempenho são desejados, quais interfaces devem 87 ser estabelecidas, com as restrições de projeto existente e quais critérios de validação são exigidos para se definir um sistema bem sucedido. A fase de desenvolvimento focaliza "como", ou seja, como a estrutura de dados e a arquitetura de software têm de ser projetadas, como os detalhes procedimentais têm de ser implementados, como o projeto será traduzido numa linguagem de programação e como os testes têm de ser realizados. A fase de manutenção concentra se nasce "mudanças" que estão associadas a correção de erros, adaptações exigidas à medida que o ambiente do software evolui e ampliações produzidas por exigências variadas do cliente. Enfim, [PRESSMAN] esclarece que a engenharia de software é uma disciplina que integra métodos, ferramentas desenvolvimento de software de computadores. e procedimentos para o 88 III. JUSTIFICATIVA "É melhor tentar e falhar, que preocupar-se e ver a vida passar; é melhor tentar, ainda que em vão, que sentar-se fazendo nada até o final. Eu prefiro na chuva caminhar, que em dias tristes em casa me esconder. Prefiro ser feliz, embora louco, que em conformidade viver ..." Martin Luther King A possibilidade de haver cooperação entre usuários em sistemas privativos consigna significado retorno empresarial pela facilidade de utilização dos recursos disponíveis, considerando a implementação através de mecanismos de cooperação, colaboração e facilidade de comunicação, o trabalho conjunto é desenvolvido com eficiência, através da livre circulação da informação, pelo estimulo à inovação, facilitando desta maneira o processo de liderança coletiva. A utilização de sistemas Groupware propicia o relacionamento da empresa com seus clientes e fornecedores (extranet) e com funcionários e/ou filiais (intranet), baseado no sistema de compartilhamento de áreas de trabalho especificas, desde que devidamente autenticados e autorizados, com a caracterização de duas ou mais pessoas trabalharem juntas e o acrônimo do compartilhamento de experiências e conhecimento, com a automação da política de comunicação e conseqüentemente via de fato a criação de memória organizacional da empresa, o que resulta na superação de fatores determinantes para obtenção significativa de lucros pela superação das barreiras geográficas e customização do tempo. O processo da automatização de "escritório" resulta em considerável diminuição do fluxo de circulação de papel e ganho na utilização dos recursos de computadores, tornando seu uso simplificado para qualquer pessoa, pelo advento do 89 software de colaboração e cooperação, que na desenvoltura do processo de comunicação existente surge com o advento das inovações tecnológicas, aplicado na estrutura da transmissão das informações empresarial, pelo aproveitamento da infra-estrutura existente, enquadrando-se nos moldes da política de comunicação manual, quando considerado o processo de fluxo de dados atual, e resultando nos ganhos de satisfação do cliente e empresário. É importante entender que Groupware não é apenas mais um estágio da tecnologia de computação. Seu objetivo é permitir a eficácia dos grupos existentes ao invés de impor práticas que causem mudanças radicais na forma de trabalho. 3.1. PROBLEMAS Mesmo com investimentos contínuos em automação de escritório, e na persistente busca do sonho do "escritório sem papel", o volume de papel dispendido diariamente é assombroso. Outra parte do problema é que os sistemas de informações tradicionais tratam de apenas uma pequena parte das informações utilizadas nas organizações o que de maneira relevante caracteriza a perda de produtividade e conseqüentemente um desgaste na circulação da informação que por sua vez, é retransmitida entre portadores antes mesmo de alcançar seu destino. Tal deficiência caracteriza prejuízo a estrutura organizacional, onde é considerado e sempre apontado como primitiva o jargão popular "tempo é dinheiro.", nesta célebre da sabedoria popular constatamos que a ideologia do Groupware aliado às ferramentas tecnológicas, apresenta soluções satisfatórias que urgem como minimizador da perca de tempo, e via de regra um otimizador de soluções para a circulação da informação no âmbito empresarial. 3.2. HIPÓTESES Estabelecer uma ferramenta coorporativa, utilizando a tecnologia WWW, com os arquivos padrão HTML, e servidores HTTP através de uma interface simples e uniforme, tornando-a um efetivo integrador e denominador comum entre diferentes plataformas. Sem a complexidade dos velhos sistemas centralizados, compor um ambiente de trabalho que oferece abordagens inovadoras para a autoria, gerenciamento e publicação de informações distribuídas, possibilitando dinamizar o fluxo de informações, democratizar as redes internas e ajudar a diminuir a opressiva 90 carga de papel gerada diariamente, customizando a utilização de material de escritório e acima de tudo, melhor aproveitamento da mão de obra humana. Relevando que numa intranet, a informação passa a ser criada e gerenciada por aqueles que a produzem, sem ter que depender de programadores para criar entradas de dados e extrair relatórios. 91 IV. OBJETIVOS 4.1. OBJETIVOS GERAIS Criação de uma ferramenta que ajude as pessoas a trabalharem juntas com mais facilidade ou eficiência, no âmbito empresarial baseado em modelo administrativo teórico adaptável a estrutura organizacional das instituições permitindo que se comuniquem, coordenem e colaborem, possibilitando a livre circulação da informação entre os usuários devidamente autenticados e ressaltando o seu nível de permissão e acesso ao sistema, o que estimula à inovação e facilita a liderança coletiva. Seu uso deve resultar em uma organização mais bem preparada para enfrentar os desafios do mercado atual, possibilitando a diminuição do fluxo de papeis na organização e ganho de tempo na transmissão das informações, aliada a confiabilidade e segurança prevista para o tratamento dos dados trafegados na rede empresarial. 4.2. OBJETIVOS ESPECÍFICOS Estabelecer a estrutura da ferramenta seguindo o modelo administrativo proposto pela teoria clássica e neoclássica dos tipos de organização formal, pela utilização do modelo de “Organização Linha-staff8”, salutando que os órgãos de staff providenciam serviços especializados, fator bastante importante em uma era de intensa especialização, onde é possível manter o princípio de autoridade única do superior sobre os subordinados diretos. Através da busca de valores e da implementação da tecnologia, o software terá a possibilidade de apresentar ferramentas que facilitam o trabalho em grupo, ratificando os prepostos gerais, ou seja, tornar o processo de comunicação, coordenação e colaboração a um nível aceitável através do uso sistêmico da ferramenta. Serão agregados a ferramenta com o intuito de torná-la fundamental e essencial ao processo de gerenciamento organizacional, os seguintes: 8 Calendário com agenda de tarefas e compromissos; Catalogo de endereços; As funções de linha são aquelas diretamente ligadas aos objetivos da empresa ou do departamento, enquanto as funções de staff são aquelas que não se encontram diretamente ligadas àqueles objetivos. 92 Chat (para reuniões e conferências); Fórum (para discussões de assuntos específicos); Área para administração de arquivos com segurança; Sistema de newsletter (publicação de informativos para a comunicação interna); Enquetes (visando a interação do grupo); Entre outros recursos que podem ser customizados de acordo com a utilização e necessidade do grupo. Vale identificar, que estas ferramentas serão adaptadas ao software na medida de customização da aplicação, lembrando que o desenvolvimento de forma modular, propícia que os valores sejam identificados e apresentados de maneira sistêmica e gradual. 93 V. MATERIAIS E MÉTODOS 5.1. METODOLOGIA Elaboração de sistema de Banco de Dados para armazenamento das mensagens enviadas e recebidas pelos usuários, proposto através da organização do nível de acesso por usuário autorizado por privilégios específicos de acesso as informações; implementação de sistema de chat, agenda eletrônica, área de 7arquivos e informações dos usuários no sistema com interface WWW, através de linguagem interpretadora de scripts multiplataforma rodando no servidor em combinação com comandos HTML, pela utilização de aplicativos de Licença Pública Geral (GNU/GPL). 5.2. RECURSOS NECESSÁRIOS Linguagem PHP 4 Banco de Dados MySQL Servidor de WWW Apache Editores de linguagem HTML/PHP e Editor de Imagens Edson Alves de Carvalho Júnior Ronielton Resende Oliveira 5.3. AMBIENTE DE DESENVOLVIMENTO O ambiente de desenvolvimento constitui da união de várias ferramentas de autoria para programação WEB, onde aqui destacamos e apresentamos as de maior utilização. Esta medida se faz necessária pelo fato de determinadas tarefas serem executadas com aplicativos auxiliares, e pela grande oscilação da utilização destas ferramentas, optamos por somente classificar e comentar as de uso constante. Por uma breve exposição, apresentará o Ambiente Integrado Macromedia Dreamweaver MX 2004, é um editor de HTML profissional para o desenvolver páginas, sites e aplicativos para a Internet que é bastante utilizado no meio dos desenvolvedores pela facilidade que sua interface apresenta. Com o Dreamweaver é fácil criar e editar páginas compatíveis com diversos navegadores e plataformas. Ele oferece ferramentas suficientes para aqueles que gostam de trabalhar em modo texto, como por exemplo, as dicas de código que são exibidas à medida 94 que são digitados os comandos. A figura 8 exemplifica o código gerado pela ferramenta. FIGURA 8 – DREAMWEAVER MX 2004: CODE INTERFACE O DreamWeaver MX também facilita a vida daqueles que não tem afinidade com códigos HTML, ele possui uma interface gráfica que possibilita a criação de páginas, sites e aplicativos sem a necessidade de digitação de uma só linha de código. Possuindo painéis, guias, menus e o inspetor de propriedades junto da área de trabalho, facilita-se a busca de problemas e se agiliza as definições em geral, pela programação drag-and-drop o desenvolvimento das interfaces é bastante simplificado como e visualizado na figura 9. 95 FIGURA 9 – DREAMWEAVER MX 2004: DESIGN INTERFACE Sendo um produto da família Macromedia ele tem ligações com outros aplicativos como, por exemplo, o Flash, o Fireworks, o ColdFusion etc. No decorrer deste trabalho, veremos como o DreamWeaver MX conversa com alguns desses aplicativos. O DreamWeaver MX possui também extensões que devem ser baixadas do site da Macromedia9. Tais extensões trazem novos recursos para o aplicativo que podem ser bastante úteis. Na Internet você também encontra muitas referências sobre o DreamWeaver MX e as versões que o antecederam. Devido a estas funcionalidades e pela facilidade de utilização o Macromedia Dreamweaver MX 2004 foi a ferramenta escolhida para o desenvolvimento da interface e do código PHP. Como muitos outros bancos de dados, o MySQL, é programado e administrado por meio de sua interface CLI, sendo por onde os usuários tratam a 9 Download da versão Trial e Extensões em http://www.macromedia.com.br 96 maioria de suas interações diárias com o banco de dados. Porém esta não é a única maneira de interagir com o Banco de Dados MySQL. Sem sombra de dúvidas a interface gráfica é agradável de utilizar e facilita a manipulação das informações. Escolhemos a interface gráfica do MySQL Front 10, uma excelente opção front-end que pelo constante desenvolvimento possibilita a administração de maneira idêntica a interface CLI, onde é possível: criar banco de dados, editar privilégios para usuários, recarregar o servidor, diagnosticar variáveis de servidor, criar consultas SQL, entre muitas outras funções. A figura 10 ilustra a utilização do MySQL Front. FIGURA 10 – MYSQL FRONT: A INTERFACE GÁFICA Mesmo com o desenvolvimento através de interfaces gráficas, seja para o layout de telas, programação do código e estruturação do banco de dados, a interação com o servidor é realizada por prompt de comando. 10 Download da versão Trial em http://www.mysqlfront.de/ 97 Esta por sua vez, de duas maneira: console ou remoto. Por console, quando da necessidade de instalação do sistema FreeBSD, aplicação de patches, configuração de aplicativos, e gerenciamento diverso. Remotamente, durante os ajustes e testes da aplicação, neste tipo de acesso a ferramenta Putty 11, foi a escolhida pela simplicidade de utilização e poder na segurança das informações, com a utilização do tráfego criptografado por canal SSL. A figura 11, apresenta um acesso remoto realizado enquanto a figura 12 comprova os serviços em utilização no servidor. FIGURA 13 – CONSOLE FREEBSD: O ACESSO REMOTO 11 Download do Freeware em http://the.earth.li/~sgtatham/putty/0.58/x86/putty.exe 98 FIGURA 12 – CONSOLE FREEBSD: SERVIÇOS EM EXECUÇÃO Outros aplicativos foram utilizados durante as etapas de analise e desenvolvimento da Ferramenta TSDJ Groupware, apenas citamos, os mesmos para justificar a denominação de outros apresentada na seção Recursos Necessários: PHP Editor, Macromedia Fireworks MX 2004, Corel Draw 12, DBDesigner, Microsoft Office Visio 2003, e FTP Woyager. 5.4. CRONOGRAMA DE EXECUÇÃO 99 100 101 5.5. APLICAÇÃO A ferramenta TSDJ Groupware, será o protótipo para a implementação de um sistema corporativo educacional privativo de comunicação, baseado em interface WEB, que deverá após estudo de viabilidade, entender a compreensão do domínio, passando pelas analises de levantamento de requisitos, classificação, solução de conflitos, priorização e finalmente validação incorporar à esta instituição de ensino um sistema automatizado de comunicação interna. O diagrama da figura 13 apresenta a estrutura organizacional da Universidade, na visão externa ao processo de comunicação e hierarquia, praticados atualmente pelos diversos órgãos e entidades envolvidas no processo de comunicação. Consideremos que esta macro visão do sistema busca as possibilidades de expansão máxima do sistema de comunicação Groupware, quando da implementação em larga escala, onde a mesma deve ser alvo de estudo detalhado e aprimoramento, sendo direcionado entre todos os setores envolvidos. Visão do Sistema - Macro Visão Externa UNINCOR REITORIA ADMINISTRAÇÃO OPERACIONAL Tesouraria Secretaria Almoxarifado Relações Públicas Financeiro ( . . . ) Audio Visual Laboratórios Impressão Xerox ( . . . ) PRO-REITORIA DE GRADUAÇÃO ISE INCOA PRO-REITORIA DE PÓS-GRADUAÇÃO INCIS BIOLOGIA CIÊNCIA DA COMPUTAÇÃO ENFERMAGEM PROFESSORES PROFESSORES PROFESSORES EDUCAÇÃO FÍSICA ADMINISTRAÇÃO FARMÁCIA BIOQUÍMICA PROFESSORES PROFESSORES PROFESSORES GEOGRAFIA AGRONOMIA FISIOTERAPIA PROFESSORES PROFESSORES PROFESSORES HISTÓRIA BIBLIOTECONOMIA FONOAUDIOLOGIA PROFESSORES PROFESSORES PROFESSORES LETRAS CIÊNCIAS CONTÁBEIS MEDICINA PROFESSORES PROFESSORES PROFESSORES MATEMÁTICA COMUNICAÇÃO SOCIAL MEDICINA VETERINÁRIA PROFESSORES PROFESSORES PROFESSORES MÚSICA DIREITO NUTRIÇÃO PROFESSORES PROFESSORES PROFESSORES NORMAL SUPERIOR ENGENHARIA HÍDRICA ODONTOLOGIA PROFESSORES PROFESSORES PROFESSORES PEDAGOGIA ENGENHARIA AMBIENTAL PSICOLOGIA PROFESSORES PROFESSORES PROFESSORES QUÍMICA TURISMO RADIOLOGIA (TECNÓLOGO) PROFESSORES PROFESSORES PROFESSORES CURSOS PROFESSORES CURSOS PROFESSORES CURSOS PROFESSORES (. . . ) PROFESSORES TERMALISMO E ÁGUAS MINERAIS PROFESSORES REALAÇÕES INTERNACIONAIS PROFESSORES FIGURA 13 – MACRO VISÃO DO SISTEMA 102 Neste ponto é importante ressaltar, que o diagrama apresentado na figura 13, deve ser registrado como a idealização da ferramenta em seu escopo total, e ainda que o software desenvolvido durante a evolução do PCC - Projeto de Conclusão de Curso, aplicou os conceitos relacionados num protótipo de visão reduzida. Após compreensão da Universidade como um todo, mediante o levantamento macro de sua estrutura hierárquica, o que é analisado em minúcias na seção “Analise do Sistema”, definimos o escopo de implementação da ferramenta protótipo, que segue as orientações da figura 14. Detalhadamente, pode-se apresentar a estrutura de comunicação a ser implementada nesta versão de software, que basicamente constituirá a fundação do sistema. O processo de comunicação será intermediado entre os setores organizacionais denominados: REITORIA, PRO-REITORIA, INCOA, CURSO CIÊNCIA DA COMPUTAÇÃO e PROFESSORES. Visão do Sistema - Nível Operacional REITORIA PRO-REITORIA DE GRADUAÇÃO INCOA CIÊNCIA DA COMPUTAÇÃO PROFESSORES FIGURA 14 – ESCOPO DA FERRAMENTA Determinado o escopo, é importante especificar as autorizações de acesso ao sistema, que seguem o modelo descrito na tabela 2. Serão atribuídos os privilégios aos usuários do sistema, que serão funcionários internos da instituição, sendo os mesmos identificados no sistema através de acesso mediante 'usuário' e 'senha', sendo permutado este acesso através de controle administrativo, a ser 103 controlado por um Administrador do Sistema ou uma Equipe de Administradores do Sistema. Vale ressaltar que diferem as funções de Desenvolvedores do Sistema e Administradores do Sistema, onde múltiplas pessoas podem estar envolvidas e que cada uma desempenhará função inerente e não cumulativa para que um melhor desempenho e controle sejam obtidos. TABELA 2 – NIVEIS DE ACESSO Níveis de Acesso 0 - Administrador 1 - Reitoria 2 - Pro-Reitoria 3 - INCOA 4 - Ciência da Computação 5 - Professores Com as considerações aplicadas na tabela 2, é possível descrever o fluxo de comunicação entre as entidades envolvidas, o qual será feito mediante o envio de mensagens PRIVADA e PÚBLICA, o esquema de comunicação esta descrito na tabela 3. Reitoria Pro-Reitoria INCOA C. Computação Professores TABELA 3 – FLUXO DE COMUNICAÇÃO Reitoria - P P * * Pro-Reitoria P - P P * INCOA P P - P P C. Computação P P P - P Professores P P PP PP PP Legenda P = MSG Pública PP = MSG Pública || Privada * = Comunicação Bloqueada 104 Neste ponto consideremos as definições a seguir: Mensagem Privada ocorre entre emissor e destinatário, sendo oculta aos demais participantes do grupo. Deverá ser utilizada quando o assunto inerente à comunicação for privado ao grupo. Mensagem Pública enviada por um emissor a todos os componentes do grupo sendo visível aos mesmos. Deverá ser utilizada quando o assunto inerente à comunicação for público ao grupo, sendo distribuída como comunicado geral. O fluxo de comunicação é associado de maneira global, mediante o entendimento da tabela 3 no diagrama da figura 15. FIGURA 15 – FLUXO DE COMUNICAÇÃO O sistema deverá ser organizado internamente, através da adoção de uma estrutura organizada de pastas e sub-rotinas que facilitará a inclusão de novos módulos e a manutenção do sistema. O sistema deverá automatizar o envio de comunicados e documentos entre os participantes do processo educacional, propiciando uma melhor 105 comunicação, aliada a agilidade computacional e manutenção do histórico permanente da organização. O controle será feito em módulos que abrangem os cursos oferecidos pela Universidade, onde este módulo estará direcionado ao Curso de Ciência da Computação, e os envolvidos na sua pirâmide hierárquica conforme detalhado na figura 8. Cada envolvido na comunicação está alocado em um nível administrativo, controlado através de inserção de seus dados cadastrais no sistema. Sua colaboração será restrita a seu nível, bem como a visualização dos conteúdos que trafegam no sistema, não sendo permitido o acesso as informações que não dizem respeito à sua função. Todas as mensagens enviadas serão armazenadas em banco de dados, conseqüentemente não é permitida a alteração do conteúdo de qualquer mensagem postada no sistema, o acesso às mesmas é facultado aos envolvidos, ou seja, emissor e receptor. Um acesso administrativo propiciará a equipe administrativa todo o controle para as informações trafegadas e armazenadas, sendo estes os únicos a possuírem acesso integral ao sistema, sendo os responsáveis pelo cadastramento, exclusão e controle de usuários. A interface de acesso ao sistema estará disponível na Intranet e na Internet os dados trafegarão em interface criptografada através de SSL utilizando uma chave de 128bits, que garantirá a segurança no tráfego das informações. As restrições ao sistema adotam a sistemática que tudo que não é expressamente permitido deve ser considerado proibido, e modificações e/ou sugestões serão encaminhadas à administração do software para análise e estudo de viabilidade. 5.6. ANÁLISE DO SISTEMA Pelo entendimento da engenharia de software, considera-se o estudo inicial do problema discutido anteriormente no item 4.2, o que delimita os preceitos da investigação na busca de soluções. O sistema deve controlar as seguintes informações sobre um usuário: Nome Sobrenome CPF 106 Endereço Matricula na Instituição Telefone Residencial Telefone Celular Endereço Eletrônico (e-mail) Disciplinas que ministra Formação Acadêmica Minicurriculo O administrador deverá no momento do cadastro certificar-se que todas as informações foram fornecidas verificando a idoneidade dos usuários e associá-lo corretamente ao seu nível administrativo. Os níveis administrativos considerados além da administração são descritos pelos seus acessos hierárquicos: Reitoria 1. É permitido o envio de mensagens para todos os níveis inferiores: Pró-Reitoria, INCOA, Ciência da Computação e Professores 2. É permitido o recebimento de mensagens dos níveis PróReitoria e INCOA 3. As mensagens são enviadas/recebidas em caráter privado Pró-Reitoria 4. É permitido o envio de mensagens para todos os níveis inferiores: INCOA, Ciência da Computação e Professores 5. É permitido o recebimento de mensagens dos níveis Reitoria e INCOA 6. As mensagens são enviadas/recebidas em caráter privado INCOA 7. É permitido o envio de mensagens para todos os níveis: Reitoria, Pró-Reitoria, Ciência da Computação e Professores 8. É permitido o recebimento de mensagens de todos os níveis: Reitoria, Pró-Reitoria, Ciência da Computação e Professores 9. As mensagens são enviadas/recebidas em caráter privado Ciência da Computação 10. É permitido o envio de mensagens para os níveis: Pró-Reitoria, INCOA e Professores 107 11. É permitido o recebimento de mensagens de todos os níveis: Reitoria, Pró-Reitoria, Ciência da Computação e Professores 12. As mensagens são enviadas/recebidas em caráter privado Professores 13. É permitido o envio de mensagens para os níveis: INCOA, Ciência da Computação e Professores 14. É permitido o recebimento de mensagens de todos os níveis: Reitoria, Pró-Reitoria, INCOA, Ciência da Computação e Professores 15. As mensagens são enviadas/recebidas em caráter privado, quando o emissor/receptor são os níveis: Reitoria e Pró-Reitoria 16. As mensagens são enviadas/recebidas em caráter público quando o emissor/receptor são os níveis: INCOA, Ciência da Computação e Professores As mensagens armazenadas em banco de dados devem registrar a data e hora do envio, o emissor e o receptor(es). No campo de envio inerente ao nível administrativo, será possível selecionar os destinatários da mensagem e o tipo de mensagem (Pública ou Privada). As mensagens poderão ser classificadas em nível de prioridade (Baixa - Normal - Alta). A leitura das mensagens será feita somente na interface do sistema, ainda que, o e-mail dos destinatários da mensagem cadastrado no sistema receba a notificação da existência de uma nova mensagem. Ainda considerar-se que as ferramentas de valor e funcionalidades ao sistema, serão agregadas ao longo dos testes e necessidades de cada setor envolvido. Estas ferramentas podem ser classificadas: Calendário com agenda de tarefas e compromissos; Catálogo de endereços; Chat para reuniões e conferencias; Fórum para discussões de assuntos específicos; Área de upload e download de arquivos; Sistema de newsletter para comunicação interna utilizada para macro informativos; Sistema de enquetes e pesquisa; 108 5.7. DIAGRAMA DE FLUXO DE DADOS O DFD foi utilizada para descrever a transformação de entradas em saídas, compostos por processos, fluxos e depósitos de dados. Os processos representam as diversas funções que o sistema executa. Os fluxos são as informações que os processos exigem como entrada, ou as informações que geram como saída. Depósitos de dados são um conjunto de dados que o sistema deve armazenar no banco. As Figuras 15 e 16 mostram o Diagrama de Contexto, e os processos referentes ao sistema. FIGURA 15 – DFD: DIAGRAMA DE CONTEXTO 109 FIGURA 16 – DFD: PROCESSOS DO DIAGRAMA DO FLUXO DE DADOS 5.7.1. DICIONÁRIO DE DADOS DO DFD TABELA 4 – DICIONÁRIO DE DADOS DO DFD Nome: Mensagens Descrição: Grupo Origem + Grupo Destino + Permissão Mensagem Nome: Grupos 110 Descrição: Nome do Grupo Nome: Usuários Descrição: Login + Grupo do Usuário Nome: Cadastrar Descrição: Usuário + Nível de Acesso Nome: Enviar Descrição: Nome: Descrição: Remetente Mensagem + Destinatário Mensagem + Corpo da Mensagem + Permissões de Leitura Receber Destinatário Mensagem + Remetente Mensagem + Corpo da Mensagem + Permissões de Leitura Nome: Atender Descrição: Usuário Solicitante + Solicitação + Responder Nome: Ferramentas Descrição: Disponibilidade + Recursos 5.7.2. DESCRIÇÃO DOS PROCESSOS DO DFD TABELA 5 – DESCRIÇÃO DOS PROCESSOS DO DFD Processo [1] Manter Mensagens Neste processo o administrador tem a função de cadastrar as regras de mensagens, determinando o relacionamento entre os grupos e os usuários. Neste processo o administrador tem a função de cadastrar Processo [2] os grupos de usuários, pela observação e análise do Manter Grupos sistema real de maneira que os usuários sejam agrupados por correlação de tarefas. Processo [3] Manter Usuários Neste processo o administrador tem a função de cadastrar novos usuários no sistema, determinando o grupo correspondente ao mesmo. Ainda é de responsabilidade do 111 administrador informar o nome de usuário e senha de acesso. Processo realizado por administradores e usuários, onde é Processo [4] verificado as permissões de acesso, sendo criado uma Login sessão de navegação pelo sistema. Neste processo os usuários têm a obrigação de informar ao Processo [5] sistema seus dados pessoais para constituição da base de Inserir Dados dados cadastrais. Aqui todas as informações solicitadas serão obrigatórias. Neste processo os usuários estarão utilizando o sistema Processo [6] para Gerenciar a troca disponibilidade Mensagens de mensagens, das mesmas onde é o controle gerenciado de pelo administrador através do processo [1]. Neste processo o administrador tem a função de assessorar Processo [7] Gerenciar Suporte os usuários através da interface de suporte, o elo de comunicação entre os operadores e a equipe de suporte. Neste processo os usuários terão a disposição diversas Processo [8] ferramentas de colaboração, cooperação e coordenação. As Utilizar Ferramentas mesmas serão utilizadas, desde que disponibilizadas para a interface do usuário. 5.8. MODELO DE ENTIDADE-RELACIONAMENTO O modelo de Entidade Relacionamento é usado para projetar banco de dados relacionais removendo toda a redundância existente nos dados. O objeto básico do modelo ER é a entidade, isto é, um objeto do mundo real. Cada entidade possui diversos atributos e através destes podemos descrevê-los. As figuras 17 e 18 apresentam o modelo de entidade-relacionamento, da versão desenvolvida da aplicação TSDJ Groupware. Salientamos, mais uma vez que por se tratar de versão de protótipo, e ser projetada para desenvolvimento modular, o modelo reflete a aplicação em funcionamento, e na medida do desenvolvimento os mesmos serão complementados desenvolvimento final do código. após as respectivas análises para o 112 5.8.1. MODELO CONCEITUAL FIGURA 17 – ER: MODELO CONCEITUAL 5.8.2. MODELO LÓGICO FIGURA 18 – ER: MODELO LÓGICO 113 5.8.3. DICIONÁRIO DE DADOS TABELA 6 – DICIONARIO DADOS: TABELA SUPORTE Atributo IDSuporte Descrição Tipo Identificador do int(5) unsigned suporte Nome Nome do usuário varchar(50) Departamento Departamento do varchar(50) usuário Telefone Telefone de varchar(11) contato Email Email de contato varchar(30) SistemaOperacional Versão do sistema varchar(40) operacional selecionado SistemaOperacional_outro Versão do sistema varchar(50) operacional digitado em caso de opção não disponível Computador Marca do varchar(15) processador (CPU / Fabricante) Velocidade Velocidade de varchar(10) Processamento Memoria Quantidade memória de varchar(10) RAM disponível Problema Descrição do text problema EnderecoIP Endereço IP da varchar(15) máquina solicitante DataSuporte Data de envio da date Chave Chave Primária Secundária SIM 114 solicitação TABELA 7 – DICIONARIO DADOS: TABELA LOGIN Atributo Descrição Tipo IDGrupo Identificador do grupo int(6) unsigned IDUsuario Identificador do usuário int(6) unsigned IDPermissao Identificados Chave Chave Primária Secundária SIM de int(6) unsigned permissão Usuário Nome de login varchar(20) Senha Senha de acesso varchar(50) TABELA 8 – DICIONARIO DADOS: TABELA USUARIOS Atributo Descrição Tipo IDUsuario Identificador do usuário int(6) unsigned IDGrupo Identificador do grupo int(6) unsigned Nome Nome do usuário varchar(50) Sobrenome Sobrenome do usuário varchar(50) Cpf CPF do usuário varchar(14) Matricula Número de Matricula varchar(10) Currículo Referencia ao arquivo varchar(100) de minicurriculo Endereco Endereço do usuário text Telefone Telefone de contato text Email Email de Contato text Disciplina Disciplinas ministradas text Formacao Formação acadêmica e text profissional Chave Chave Primária Secundária SIM 115 TABELA 9 – DICIONARIO DADOS: TABELA GRUPOS_USUARIOS Atributo Descrição Tipo IDGrupo Identificador do grupo int(6) unsigned Descricao Descrição do grupo varchar(50) Chave Chave Primária Secundária SIM TABELA 10 – DICIONARIO DADOS: TABELA PERMISSOES Atributo IDPermissao Descrição Identificador Tipo da int(6) unsigned Chave Chave Primária Secundária SIM permissão IDGrupo_atribui Identificador do grupo int(6) unsigned SIM que atribui IDGrupo_atribuido Identificador do grupo int(6) unsigned que é atribuído Msg Tipo de permissão int(3) unsigned TABELA 11 – DICIONARIO DADOS: TABELA CONTATOS_AGENDA Atributo Descrição Tipo Chave Chave Primária Secundária IDGrupo_agenda Identificador do grupo int(6) unsigned SIM agenda IDContato Identificador do int(6) unsigned SIM contato IDUsuario Identificador do int(6) unsigned usuário Nome Nome do contato varchar(20) Sobrenome Sobrenome do contato varchar(50) Apelido Apelido do contato varchar(30) WEBsite Endereço na internet varchar(100) SIM 116 do contato Email Email do contato varchar(50) Email2 Email2 do contato varchar(50) Icq Mensageiro varchar(20) instantâneo Msn Mensageiro varchar(50) instantâneo Endereco Endereço do contato text Telefone Telefone do contato text Observacoes Outras observações e text comentários TABELA 12 – DICIONARIO DADOS: TABELA GRUPOS_AGENDA Atributo Descrição Tipo IDGrupo_agenda Identificador do grupo int(6) unsigned Chave Chave Primária Secundária SIM agenda IDUsuario Identificador do int(6) unsigned usuário Descricao Descrição do grupo na varchar(40) agenda 5.9. ESQUEMA DE NAVEGAÇÃO O esquema de navegação é a exemplificação clara dos processos tangíveis pelas informações que circulam no ativo da Ferramenta TSDJ Groupware. Conforme a figura 19, as interfaces primárias são apresentadas nas imagens retangulares, os processos estão descriminados nas imagens em forma de elipse e as modificações de dados e/ou interações diretas com a base de dados através das imagens retangulares com uma face aberta. O ciclo de processo é orientado pela seta que une as interfaces do sistema. 117 FIGURA 19 – ESQUEMA DE NAVEGAÇÃO FERRAMENTA 5.10. APRESENTAÇÃO Conhecido todo o processo de análise, planejamento e desenvolvimento da Ferramenta TSDJ Groupware, é chegada a hora dos resultados. Mais uma vez, fortalecemos que as descrições que efetuamos a partir deste ponto é o ponto de partida para a aceitação do projeto, que idealizado durante a graduação destes acadêmicos e elaborado na condição de protótipo para análise, concretiza nossas expectativas para no intuito de em proporções maiores ser desenvolvido e implantado em linha de produção, o que discutiremos na próxima seção deste trabalho. 118 A Ferramenta TSDJ Groupware desenvolvida em plataforma WEB necessita de um aplicativo tipo Browser para ser executada. Testes foram efetuados somente com o navegador Internet Explorer, sendo recomendado a resolução de tela de 1024x768 pixels para uma melhor resolução. O ambiente pode ser acessado através do endereço na Internet “pcc2005.ronielton.eti.br”. Inicialmente serão exibidas informações sobre este projeto, estando a ferramenta disponível somente para pessoas qualificadas por usuário e senha de acesso ao ambiente reservado. O ambiente reservado, ou seja, a tela inicial da aplicação está distribuída de maneira simples e objetiva, caracterizando uma interface amigável ao usuário. O importante no acesso inicial é vislumbrar o “alerta de segurança” emitido pelo ambiente Windows, veja figura 20. Trata-se da utilização do protocolo SSL que fornece uma navegação segura por toda a ferramenta, onde as informações trafegantes estarão automaticamente criptografadas, evitando desta maneira que snifers de rede instalados no perímetro da rede coorporativa possam captar qualquer informação sigilosa porventura fornecida pelos usuários do sistema. FIGURA 20 – INTERFACE: CERTIFICADO SSL 119 A constatação da segurança do ambiente é apresentada pelo Internet Explorer de duas maneiras, a saber: (i) a exibição do texto na barra de endereços, (ii) a exibição do cadeado de ambiente seguro na barra de status, conforme se verifica na figura 21. Para constarmos de maneira mais agressiva estas afirmações devemos para a primeira exibição atentar para o texto “https://” característico da utilização do protocolo TCP 443 que delimita a utilização da SSL, o segundo item, o cadeado, ao executarmos um clique duplo sobre o mesmo, será apresentada as telas mostradas na figura 20 que exibem as informações do órgão emissor do certificado se segurança. A figura 21 apresenta a tela inicial da Ferramenta TSDJ Groupware. Feitas as considerações iniciais de segurança do ambiente, estaremos apresentado algumas telas da ferramenta. Em caráter de amostra, devido a enorme quantidade de interfaces que englobam toda a aplicação, estarão nesta obra sendo comentadas as telas de maior importância do trabalho. FIGURA 21 – INTERFACE: AMBIENTE SEGURO A navegação pela interface inicial, se constitui da opção de login, um formulário de contato, um formulário de suporte e da política de privacidade. 120 A figura 22 ilustra a tela da Política de Privacidade, é extremamente importante que os usuários da ferramenta conheçam e saibam como são tratadas as informações por eles fornecidas ao sistema. Sua redação deve ser clara e concisa, e abordar os aspectos mais importantes sobre a legislação em vigor e acima de tudo estar em constante revisão. FIGURA 22 – INTERFACE: POLITICA DE PRIVACIDADE As outras opções de navegação são os formulários que permitem a interação do público externo com a equipe de desenvolvimento e a equipe de suporte. Salientamos que estas interfaces estão abertas a toda e qualquer pessoa que acesse o sistema por intermédio de um browser, sendo as mesmas o único referencial externo da aplicação. A figura 23 apresenta o formulário de Suporte OnLine, enquanto a figura 24 exibe o Formulário de Contato. 121 FIGURA 23 – INTERFACE: FORMULÁRIO DE SUPORTE Um esclarecimento neste momento, faz-se necessário devido ao destino das mensagens de ambos os formulário. Para o formulário de suporte, os dados informados serão gravados na base de dados da ferramenta e estarão disponíveis para o administrador em sua respectiva interface. Para o formulário de contato, a mensagem será enviada diretamente para o email da equipe de desenvolvimento, não sendo efetuado nenhum outro registro desta comunicação. 122 FIGURA 24 – INTERFACE: FORMULÁRIO DE CONTATO Como é observado durante todas as telas da Interface Externa, é possível efetuar o login no sistema partindo de qualquer ponto do ambiente, pela simples digitação do nome de usuário e senha. Agora será apresentado a Interface Administrativa. A figura 25 apresenta a tela inicial do ambiente. Clara e limpa, seu objetivo é facilitar a manutenção do sistema pela pessoa envolvida neste processo. Considerou-se que as tarefas de manutenção de usuários, grupos, níveis de acesso e outras que se fazem necessárias necessitam de atenção do administrador do sistema, e uma interface limpa é um diferencial no processo de gerenciamento, pois possibilitando o acesso as informações de maneira objetiva favorece o desenrolar do processo de administração do ambiente. 123 FIGURA 25 – INTERFACE: AMBIENTE ADMINISTRATIIVO Para se registrar um usuário no sistema, é necessário o conhecimento do sistema. Tal afirmação é baseada nas funções diárias exercidas pelo funcionário, onde o conhecimento dos processos por ele executado (usuário), deve também ser do conhecimento do administrador, que baseado nesta maturidade poderá precisar quais os níveis de acesso e quais informações que este usuário poderá acessar no ambiente da ferramenta. O primeiro passo para anotação de um novo usuário é a criação do grupo à que o mesmo irá pertencer. A figura 26, e a exibição da tela de cadastro de grupos: Inserir, Alterar e Excluir, são as opções que são apresentadas. Para o cadastro de grupos, sugere-se que os nomes de descrição dos mesmo sejam subjetivos a realidade, isto é, pela simples observação retornem ao expectador o seu significado. 124 FIGURA 26 – INTERFACE: CADASTRO DE GRUPOS Uma segunda tarefa na inclusão, é proceder as permissões de acesso entre os diversos grupos cadastrados no sistema, conforme observamos através da figura 27, isto é possível na ferramenta TSDJ Groupware, através de três cliques de mouse: (i) selecionar grupo1, (ii) selecionar grupo2 e (iii) selecionar tipo de mensagem. As mensagens foram discutidas na seção 4.6, porém voltamos a afirmar neste ponto que as restrições ao sistema adotam a sistemática que tudo que não é expressamente permitido deve ser considerado proibido, premissa esta que é seguida a risca quando da definição das regras de comunicação e acesso as informações. 125 FIGURA 27 – INTERFACE: CADASTRO REGRAS DE MENSAGEM Finalmente, conclui-se o cadastro de um novo usuário, através da interface de cadastro de usuário. Como mostrado na figura 28 é bastante simples, sendo somente necessário selecionar o grupo ao qual o usuário pertence e digitar seu nome de login. Neste instante, surge a pergunta, mas onde estão as informações de cadastro do meu usuário? Vou somente cadastrar um usuário e senha? Pode ser respondido sim para a segunda pergunta. O responsável pelo cadastro das informações dos usuários, na Ferramenta TSDJ Groupware, são os próprios usuários. No momento de seu primeiro acesso estas informações serão solicitadas e adicionadas ao sistema. Por ora esta informação basta. Necessitamos somente de saber que todo novo usuário cadastrado recebe a senha “12345”. Mas adiante voltaremos a tratar sobre este assunto. 126 FIGURA 28 – INTERFACE: CADASTRO USUÁRIOS Ainda pela Interface Administrativa, localiza-se o menu de suporte. É através dele que o administrador pode atender aos chamados realizados por intermédio da Interface Externa, na tela de Suporte On-line. Sua interface apresenta as solicitações classificadas por ordem decrescente de data, de maneira que sempre o registro mais recente será do usuário que por último efetuou a solicitação. Ainda é possível, encontrar pedidos através da utilização do campo busca, onde a informação fornecida é parte do nome do usuário, assim o sistema retornará todas as ocorrências para aquela pesquisa. A interface de pesquisa é mostrada na figura 29. 127 FIGURA 29 – INTERFACE: SOLICITAÇÃO DE SUPORTE Realizada a busca, as informações do pedido serão exibidas com o clique do mouse sobre o nome do solicitante, veja figura 30, uma nova tela será exibida, e nela estarão as informações necessárias a prestação do socorro. Nesta mesma tela, no topo superior esquerdo, está disponível a opção de responder. A mesma aponta para o formulário mostrado na figura 31. Sua utilização é a mesma de um formulário de correio eletrônico, bem como seus resultados, a mensagem será enviada diretamente para o email do solicitante. Ainda na interface de suporte, é disponibilizada a opção de exclusão das mensagens. Lembramos que a utilização deste recurso deve ser cautelosa e documentada, visto que mesmo um simples pedido de help desk pode conter informações que podem resguardar um administrador de sistemas. 128 FIGURA 30 – INTERFACE: INFORMAÇÕES DE SUPORTE FIGURA 31 – INTERFACE: RESPOSTA DE SUPORTE 129 Agora apresentará a Interface do Usuário. E a hora de discutir também sobre a inserção dos dados cadastrais dos usuários, conforme mencionado anteriormente, no momento do cadastro foi fornecido pelo administrador somente o login e a senha por padrão foi definida como “12345”. Fornecido estes dados ao usuário e realizado o login por intermédio da Interface Externa, na primeira utilização o usuário se defrontará com a mensagem mostrada na figura 32, que recomenda a troca da senha. FIGURA 32 – INTERFACE: PRIMEIRO ACESSO Neste momento será apresentada a tela mostrada na figura 33, onde finalmente as informações de cadastro relevantes ao sistema serão fornecidas pelo próprio usuário. Algumas considerações são importantes nesta parte do sistema. (i) é obrigatória a troca da senha, (ii) todas as informações são de preenchimento obrigatório, (iii) as instruções para envio do minicurriculo são exibidas na tela de cadastro, (iv) o CPF deve ser informado de maneira correta, por ser um identificador para o sistema. 130 Toda discrepância será alertada ao usuário que deverá corrigir para assim continuar e acessar a Interface Interna, conforme mostrado na figura 34, que apresenta um erro no envio do minicurriculo. FIGURA 33 – INTERFACE: VERIFICAÇÃO DE CADASTRO / CPF 131 FIGURA 34 – INTERFACE: VERIFICAÇÃO DE CADASTRO / MINICURRICULO Efetuado o cadastro de maneira satisfatória, será exibido para o usuário a Política de Privacidade, como já mencionamos é de extrema importância o conhecimento da mesma pelos operadores do sistema. Realizada a leitura, o usuário será direcionado para a tela de “verificação da sessão”, mostrada na figura 35, que monitora todo o sistema, verificando a consistência das informações de login, permitindo somente que usuários cadastrados no sistema com um nome de usuário e senha validos tenham acesso a Área Interna. 132 FIGURA 35 – INTERFACE: VERIFICAÇÃO DE LOGIN A segurança do sistema, não se prende somente aos itens discutidos anteriormente, como é exibido na figura 36, a preocupação com a criptografia da senha dos usuários foi tratada. Desta maneira, somente o próprio usuário tem acesso a codificação das suas informações, através de algoritmo de encriptação o conteúdo legível do código esta inacessível a qualquer acesso ao banco de dados. Sabe se que esta é apenas uma medida de segurança, muitas outras devem ser aplicadas na proteção das informações, principalmente nos níveis físicos e de rede, porém por não estarem no escopo desta seção, apenas alertamos para à sua necessidade, mas certos de já termos discutido sua importância no capitulo 3.4 e 3.6, apenas citamos novamente as premissas CONFIDENCIALIDADE, DISPONIBILIDADE e INTEGRIDADE. de proteção: 133 FIGURA 36 – INTERFACE: SENHA CRIPTOGRAFADA Agora que já foi apresentado o acesso ao sistema, finalmente a hora de apresentar a Interface do Usuário, a figura 37, apresenta a visão geral do sistema para o usuário. O sistema foi divido em partes operacionais, de maneira que o acesso seja simplificado. E importante, neste momento, dizer que muitas funções não foram agregadas até o presente à ferramenta, por se tratar de um projeto piloto, e seu desenvolvimento estar sendo feito gradualmente, o tempo hábil para execução da programação é curto, o que muitas vezes dificulta evolução do sistema. Entretanto a ser discutido a este respeito na próxima seção. A figura 38, exibe a interface de gerenciamento das informações dos dados cadastrais dos usuários, para que os mesmos possam sempre manter atualizados seus dados junto ao sistema. A figura 39, é a interface de manutenção do minicurriculo. 134 FIGURA 37 – INTERFACE: INTERFACE DO USUÁRIO FIGURA 38 – INTERFACE: MANUTENÇÃO DADOS CADASTRAIS 135 FIGURA 39 – INTERFACE: MANUTENÇÃO MINICURRICULO Segue-se o escopo do desenvolvimento, a figura 40 é a ilustração da ferramenta de valor agregada a Ferramenta TSDJ Groupware, a agenda de endereços. Aqui os usuários poderão centralizar as informações de seus contatos de maneira a ter acesso a estes dados em um único aplicativo, visto a facilidade de obtenção destas informações influenciar diretamente na sua produtividade. A agenda de endereços segue o conceito de grupos para facilitar a organização dos contatos que poderão ser inseridos a gosto do usuário, este poderá personalizar sua agenda da maneira mais rápida que julgar viável, quando na busca por suas informações. E não para por ai. A partir da ferramenta TSDJ Groupware é possível selecionar um contato e disparar uma mensagem de email direto para sua caixa posta12l. 12 A funcionalidade de envio de email está sujeita a configuração de um servidor de SMTP na máquina hospedeira da aplicação, bem como a ajustes no servidor da linguagem PHP. 136 FIGURA 40 – INTERFACE: AGENDA DE ENDEREÇOS 137 VI. RESULTADOS E DISCUSSÃO "A vida só pode ser compreendida olhando-se para trás; mas só pode ser vivida olhando-se para a frente." Soren Kierkegaard Muitos são os sistemas Groupwares existentes no mercado, grande parte destas ferramentas são de propriedade de grandes organizações; o que se propõe é uma solução customizavel através do uso de softwares livre. A redução de custos frente a licenças de aquisição e uso destes produtos pode ser descartada no momento da customização, por se tratar de software acadêmico e a proposição de sua customização ser feita mediante o uso da GPL mediante orientação propõe que a ferramenta seja customizada modularmente entre os acadêmicos do Curso de Ciência da Computação, exercendo assim, além das funcionalidades próprias da ferramenta uma ação educacional fortalecendo o vinculo do aprendizado acadêmico mediante a aplicação pratica de analise e desenvolvimento de software. Os custos do projeto podem ser relacionados em duas categorias, a saber: Material e Pessoal. Para a primeira, os investimentos necessários se fundamentarão na aquisição de computadores de médio porte para execução da aplicação e armazenamento da base de dados. Considera-se que computadores de pequeno porte serão utilizados no desenvolvimento, os mesmos serão equipados com as ferramentas de desenvolvimento necessários a programação dos módulos do software. O software a ser utilizado no servidor como sistema operacional é o FreeBSD, em síntese, FreeBSD é um sistema operacional UNIX-like para plataformas i386 e Alpha/AXP, baseado no “4.4BSD-Lite” da Universidade da Califórnia em Berkeley, com alguns aprimoramentos adotados do “4.4BSD-Lite2”. O FreeBSD também é baseado, indiretamente, na conversão de William Jolitz conhecida como “386BSD” para a plataforma i386 do “Net/2” da Universidade da Califórnia, em Berkeley; apesar de que pouquíssimo código originado do 386BSD ainda exista no FreeBSD, extremamente robusto para aplicações servidoras e totalmente customizavel as expectativas de segurança computacional necessárias 138 aos sistemas Mainframe. As demais ferramentas necessárias são totalmente compatíveis ao sistema operacional, Apache, MySQL, PHP, OpenSSL, Postfix, etc. Para os PC's de desenvolvimento, pode ser adotado qualquer ferramenta de desenvolvimento para a Internet, que assimile a codificação na linguagem PHP com Banco de Dados MySQL, sendo estas de livre escolha dos programadores. Para a segunda, os investimentos necessários se darão mediante a concessão de auxilio financeiro aos analistas, programadores, administradores e demais envolvidos no processo de customização da ferramenta, aqui cabe o adendo que o incentivo financeiro aos envolvidos é capaz de captar um melhor comprometimento dos mesmos para com o projeto, o que propiciará a estes apresentar resultados de maneira mais rápida e conseqüentemente uma satisfação mútua ocorrerá entre os parceiros, que consideremos neste instante patrocinadores e desenvolvedores. Os riscos, fator inerente a empreendimentos, não deve ser descartado em nenhum instante deve ser considerado quanto a não operacionalidade do sistema após sua confecção, entretanto a idealização modular, apresenta um protótipo a ser utilizado numa instância da organização, e através de testes constantes e permanentes apresentarem a continuidade do projeto, citamos neste instante Steve McConnell, em Code Complete: "Construir uma torre de um metro de altura requer uma mão firme, uma superfície plana e dez latinhas de cerveja não amassadas. Construir uma torre cem vezes mais alta não requer simplesmente cem vezes mais latinhas de cerveja. Requer um tipo de planejamento e de construção totalmente diferente”. Dai surge à premissa que o planejamento e o aperfeiçoamento da idéia mediante a avaliação seriada dos módulos do sistema será uma eterna constante na customização da ferramenta e tal processo será feito por toda equipe de desenvolvimento juntamente com os utilizadores da ferramenta. Os custos benefícios deste empreendimento foram explorados em gênero, número e grau no anteprojeto de descrição da ferramenta, e evitando a ambigüidade de informações documentais recomenda-se consulta ao documento anteriormente citado para constatação dos mesmos. Ainda sim, é fundamental o comentário, que o sistema Groupware não é apenas mais um estágio da tecnologia de computação. Seu objetivo é permitir a eficácia dos grupos existentes ao invés de impor práticas que causem mudanças radicais na forma de trabalho, aliado a 139 utilização de práticas econômicas viáveis a saúde das organizações, e incentivadores de desafios às equipes de TI. A organização do projeto segue a fundamentação da analise, desenvolvimento, instalação e treinamento. Conforme relatado, será desenvolvido um módulo experimental, que apresentará a ferramenta à comunidade acadêmica buscando o despertar para as necessidades de centralização de comunicação e eventual construção da história da organização através de mídias digitais. Neste módulo, apenas serão desenvolvidas a análise inerente ao escopo de desenvolvimento preliminar da ferramenta. A implementação em larga escala, é dependente de aprovação posterior e investimentos de capitais de fundos aos desenvolvedores, bem como o investimento em equipamentos necessários ao projeto e cessão de espaço físico para gerenciamento das atividades inerentes ao mesmo, as quais cita-se em primazia a pesquisa de campo frente às entidades internas a organização para o processo de customização determinado engenharia de software, que envolve o contato direto com a comunidade de usuários, seus gerentes e outras pessoas afetadas pelo sistema. Os stakeholders (participantes envolvidos), não farão parte desta fase, porém é fundamental à ciência, para que a coleta de informações seja realizada de maneira satisfatória no processo de análise dos requisitos e extremamente necessário que eles sejam entrevistados, estas conversas servirão para clarificar as ambigüidades e, no final, obter a aprovação deles, para assim fundamentar uma parte do sucesso do projeto. 140 VII. CONCLUSÃO “Existem pessoas em nossas vidas que nos deixam felizes pelo simples fato de terem cruzado o nosso caminho. Pessoas que nos ensinam a sorrir em horas difíceis, e choram de alegria com nossas vitórias conquistadas... São os nossos amigos... E na árvore da vida, amigos são como folhas... O tempo passa, o verão se vai, o outono se aproxima, e perdemos algumas folhas. Algumas nascem num outro verão e outras permanecem por muitas estações.” Paulo Coelho Através deste trabalho, observamos que a utilização dos fundamentos adquiridos ao longo da graduação através da diversidade de pesquisas realizadas no intuito da busca de informações sobre a estrutura proposta inicialmente, como forma de aprofundamento das linguagens de programação para WEB, utilização de banco de dados, questões relativas à segurança da informação e aprimoramento de suas características de maneira a ser utilizada para a construção do projeto de conclusão de curso, vieram a concretizar e definir o processo de aprendizado. Não deixando de lado a situação de universitários cientistas, a busca do conhecimento é constante, neste cenário a proposta inicial de desenvolver e projetar um software como implementação acadêmica seguimos o caminho da hierarquia da UNINCOR para orientarmos os trabalhos de projeto de conclusão de curso. A construção de uma ferramenta de Automação Groupware Multiusuário. É uma forma tecnológica para automatizar e centralizar vários usuários e seus grupos através de um meio de comunicação não seguro, a WEB, mas com a utilização dos fundamentos de segurança da informação e aplicação de regras de segurança, que se orientam desde a criptografia para a transmissão ao armazenamento dos dados, passando pelo uso de protocolos de conexão seguras – “HTTPS” – e a aplicação do recurso de sessão – “PHP" – para gerenciamento da conexão ao sistema, priorizamos a segurança da informação, uma tangente única vislumbrada por todas as organizações. Foram utilizadas ferramentas de construção de aplicativos dinâmicos para WEB, auxiliadas e monitoradas pela linguagem PHP, construído, monitorado e gerenciado um servidor de serviços HTTP centralizado, o utilizando o servidor 141 Apache, empregamos o MySQL como banco de dados, robusto pela sua grande capacidade de armazenamento e facilidade de gerenciamento e administração, sendo estes sem ônus de licenciamento, ou seja, de código aberto, com toda documentação disponível, que muitas vezes foi à referência de orientação. Também as ferramentas para construção de códigos estáticos HTML e interfaces dinâmicas com PHP através do auxilio da ferramenta Macromedia Dreamweaver MX 2004 Trial. Idealizamos uma hierárquica para a UNINCOR – I.E.: Reitoria, ProReitoria de Graduação, Institutos como o INCOA, Coordenação dos Cursos e Professores, sendo orientado pela visão externa ao processo, seguimos pelo caminho das regras de hierarquia administrativa, citando, um Professor não pode comunicar diretamente com o Reitor, mas deve comunicar ao Coordenador do Curso, que se não tiver uma solução, o Coordenador deverá solicitar ao Instituto pertencente uma solução para o problema ainda não resolvido, se o Instituto também não resolver, é comunicado então a Pró-Reitoria, que irá propor a solução e dar uma resposta para o problema, onde o Reitor só será comunicado pela PróReitoria se for de âmbito prejudicial à instituição. Finalmente podemos afirmar então o funcionamento correto do projeto, ainda que pela dificuldade, não se tornou totalmente viável em níveis de implementação, porém o mesmo foi idealizado me maneira sólida e concisa. E isto foi possível, com as ferramentas escolhidas para confecção e estudo aprofundado de cada uma e seus detalhes, apresentando ótimos resultados. A comunicação entre os usuários e seus grupos e sua segurança por um ambiente sem segurança, a WEB, se tornou segura, e foi utilizada em todas suas formas e detalhes a fim de garantir a troca de informações confiável, fortalecendo os conceitos da confiadencialidade, disponibilidade e integridade, sendo um dos problemas apresentados e resolvido. O Banco de Dados foi testado de forma a armazenar todo o tipo de comunicação existente, entre todos os usuários, resolvendo o problema de disperdício e acumulo de papeís que não acabavam, nem com a utilização das soluções apresentadas pela Teoria Administrativa, sendo possível poder utilizar as regras de envio de mensagens publica e privada, não tendo como um documento sigiloso. E por último o porquê da utilização de técnicas Groupware, pois como dito no popular ”tempo é dinheiro” o projeto piloto em cima destas técnicas e conceitos CSCW nos levou a concluir que a soma dos esforços antes desperdiçados com 142 reuniões agendadas que delimitam a perda de tempo e a perda de dinheiro, pois um usuário sozinho produz para instituição um resultado, e somando a agilidade de comunicação apresentada no projeto com os esforços de todos colaboradores do sistema, ou seja, os usuários serão de forma a garantir um resultado muitas vezes maior, dependendo da quantidade de pessoas envolvidas os resultados serão consideráveis e o tempo de resposta minimizado. Como este é um projeto piloto, já foi implementado e citado novas melhorias onde, ainda não foram concretizadas, ficando como dicas e orientações para continuação futura através da reorganização das idéias propostas. 143 VIII. REFERÊNCIA BIBLIOGRAFICA "A literatura é um assunto sério para um país; ela é, no fim de contas, o seu rosto." Louis Aragon AHTO, Jouni. Et al. Manual do PHP, Copyright © 1997 – 2004 PHP Documentation Group. Tradução do Original para o Português: 2004. Disponível em < http://www.php.net/docs.php >. APOSTILANDO.COM. O Portal do Conhecimento. Apostila de Apache. Disponível em < http://www.apostilando.com/download.php?cod=197&categoria=Linux >. Acesso em 19/02/05. AXMARK, David. Et al. MySQL Technical Reference for Version 5.0.0-alpha. Copyright © 1997-2003 MySQL AB. Tradução do Original para o Português por Daniel Coelho Teobaldo e Carlos Henrique Paulino: 2004. Disponível em < http://www.mysql.com/documentation/ >. BEHLENDORF, Brian. Et. al. Apache HTTP Server Version 2.0 - English Version. Copyright 1999-2004 The Apache Software Foundation. Disponível em < http://apache.usp.br/httpd/docs/ >. CHANDLER, David M. Como Montar o seu Site na World Wide WEB. Tradução do original: Running a Perfect WEB Site pela equipe PubliCare Consultoria e Serviços. Rio de Janeiro: Campus, 1996. CHIAVENATO, Idalberto. Teoria Geral da Administração. [Capítulo 10: Decorrências da abordagem clássica e neoclássica – tipos de organização]. São Paulo: McGrawHill do Brasil, 1979. CHOI, Wankyu. Et al. Beginning PHP4 – Programando, Tradução do Original: Beginning PHP4: Aldir José Coelho Correia da Silva e Flávia Cruz. São Paulo. Makron Books: 2001. DNS & Bind. Berkeley Internet Name Domain. © 2002 Bind.com. Disponível em < http://www.bind.com/bind.html >. 144 FLORES, Ricardo Resendes. Apostila de Sistemas Cooperativos. Três Corações, 2003. Disciplina de Sistemas Cooperativos do Curso de Bacharelado em Ciência da Computação – UNINCOR, 2003. FREEBSD HANDBOOK. Copyright © 1995-2004 por The FreeBSD Documentation Project. Tradução do Original para o Português: 2004. Disponível em < http://doc.fugspbr.org/handbook/index.html >. FREEBSD PROJECT. FreeBSD: The Power To Serve. © 1995-2004 The FreeBSD Project. Disponível em < http://www.freebsd.org/ >. HATCH, Brian. LEE, James. KURTZ, George. Hackers Expostos - Linux. Tradução do Original - Hacking Linux Exposede: Linux Security Secrets & Solutions para o Português por Aldir José Coelho Corrêa da Silva. São Paulo: Pearson Education do Brasil, 2002. JEPSON, Brian. PECKHAM, Joan. SADASIV, Ram. Programando Aplicativos de banco de Dados em Linux. Tradução do original: Database Application Programming with Linux. Jeremias R. D. P. Santos e Rogério Maximiliano dos Santos. São Paulo. Makron Books, 2002. LEHEY, Greg. Artigo: Explicando o FreeBSD. Disponível em: < http://doc.fugspbr.org/articles/explaining-bsd/ >. Acesso em 02/02/05. MICROSOFT TECHNET LEARN CENTER. Curso de Segurança. In: Implementando a segurança da rede e do perímetro. Disponível em: < http://www.mslatam.com/latam/technet/learning/Html-PR/home.asp >. Acesso em fevereiro/05. OPENSSH. This site Copyright © 1999-2004 OpenBSD. Disponível em < http://www.openssh.com/ >. OPENSSL. Welcome to the OpenSSL Project. Copyright © 1999-2002 The OpenSSL Project. Disponível em: < http://www.openssl.org/ >. PALMA, Luciano. PRATES, Rubens. Guia de Consulta Rápida TCP/IP. São Paulo. Ed Novatec: 2000. PETROVIC, Dušan. SQL Server 2000 – Guia Prático. Tradução do original: SQL Server™ 2000 – A Beginner‟s Guide para o português por César Camargos, Rogério Maximiliano, João Tortello. São Paulo: MAKRON Books Ltda., 2001. 145 POSTFIX HOME PAGE. Postfix project. In: Postfix Documentation. Disponível em < http://www.postfix.org/documentation.html >. PRATES, Rubens. Guia de Consulta Rápida MySQL. São Paulo. Ed Novatec: 2000 PRESSMAN, Roger S. Engenharia de Software. Tradução do original: Software Enginnering – A Practitionar‟s Approach, 3ª ed. Por José Carlos Barbosa dos Santos. São Paulo: Makron Books, 1995. PROFTPD. Copyright (C) 1999-2003, The ProFTPD Project. Disponível em: < http://www.proftpd.org/ >. SILVA, Luiz Eduardo da. Apostila de Sistemas Distribuídos. Três Corações, 2003. Disciplina de Sistemas Distribuídos do Curso de Bacharelado em Ciência da Computação – UNINCOR, 2003. SOARES, Luiz Fernando Gomes. Et al. Redes de Computadores: das LANs, MANs e WANs às Redes ATM. 2ª Edição. Rio de Janeiro: Campus, 1995. STOCO, Lúcio M.. Guia de Consulta Rápida Integrando PHP com MySQL. São Paulo. Ed Novatec: 2000. STREBE, Matthew. PERKINS, Charles. Firewalls. Uma Fonte Indispensável de recursos para os Administradores de Sistema. Tradução do Original - Firewalls 24 seven para o Português por Lavio Pareschi. São Paulo: MAKRON Books, 2002. SUEHRING, Steve. MySQL, a Bíblia, Tradução do Original: MySQL Bible: Edson Furmankiewicz. Rio de Janeiro. Campus: 2002. Página 1 de 2 CRONOGRAMA DO PROJETO DE CONCLUSÃO DE CURSO Bacharelado em Ciência da Computação 2001-2005 AÇÃO ATIVIDADE 1 Elaboração e Redação do Ante-Projeto Analise e Discussão do Projeto junto ao Professor Orientador 1 2 3 4 Determinar requisitos do software e quais ferramentas groupware serão integradas a versão BETA RELEASE Estabelecer a amplitude do módulo a ser desenvolvido visando o projeto físico Definir a interface a ser utilizada, estabelecendo os padrões de cores e layout Analise do Conhecimento de Causa e Requisitos Técnicos (linguagens e ferramentas) necessários para o desenvolvimento. Determinar o Sistema Operacional do ambiente de execução da aplicação e as aplicações necessárias Executar as tarefas de instalação e configuração do Servidor da Aplicação Escolha do Fluxo Organizacional e delimitação dos parâmetros centrais da aplicação Elaboração e Redação do Projeto Lógico através da determinação das ferramentas de engenharia de software a serem adotas Inicio dos procedimentos de documentação do software externa e interna Construção do protótipo do Banco de Dados, através de diagramação do modelo lógico e entidaderelacionamento Construção de Esboço da estrutura de pastas e nomenclatura dos arquivos atribuídos a potencialidade de acesso dos níveis de usuário Diagramação de interface gráfica amigável ao usuário da aplicação e administrador do sistema Programação do código fonte e documentação interna do programa Automação Empresarial Multiusuário Empregando Conceitos CSCW * por Sistema Groupware. AGOSTO 2 3 4 5 SEMANAS SETEMBRO OUTUBRO 6 7 8 9 10 11 12 13 14 NOVEMBRO 15 16 17 Página 2 de 2 CRONOGRAMA DO PROJETO DE CONCLUSÃO DE CURSO Bacharelado em Ciência da Computação 2001-2005 5 6 7 Inicio dos testes na versão BETA RELEASE CANDIDATE 0.1 com levantamento e debug dos erros encontrados Fase de apresentação de soluções e construção da versão BETA RELEASE CANDIDATE 0.2 e realização dos testes preliminares a versão Realização dos testes finais para o protótipo "TSDJ RC 1.0" com implementação de melhorias e correções de layout Preparação para a Banca Examinadora com confecção da apresentação e levantamento dos recursos necessários/agendamento prévio de local após definição de data Realização de apresentação preliminar para público préselecionado pela equipe e apresentação para a Banca Examinadora Organização, Redação e Normalização Cientifica do projeto desenvolvido através da confecção da Monografia de Conclusão de Curso. L E G E N D A Complexidade na Realização da Atividade BÁSICO INTERMEDIÁRIO AVANÇADO Automação Empresarial Multiusuário Empregando Conceitos CSCW * por Sistema Groupware.