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.
Download

Computer-Supported Cooperative Work