projeto de graduação
TRANSCRIPT
UNIVERSIDADE FEDERAL DE MATO GROSSO DO SULCENTRO UNIVERSITÁRIO DE DOURADOSDEPARTAMENTO DE CIÊNCIAS EXATAS
BACHARELADO EM ANÁLISE DE SISTEMAS
Desenvolvimento de uma Ferramenta de Colaboração On-line para otimizar a comunicação com fornecedores e reduzir custos nos processos de
obtenção de materiais diretos e indiretos.
por
Marcos Bispo de Oliveira
Orientador:
Prof. Fábio Montanha Ramos
Banca Examinadora:
Prof. André Luis GonsalesProf. Edmir Ribeiro TerraProf. Fábio Montanha Ramos
Dissertação apresentada à Universidade Federal do Mato Grosso do Sul – UFMS, Centro Universitário de Dourados, como parte dos requisitos para obtenção do grau de Bacharel em Análise de Sistemas.
Dourados/MS., Dezembro de 2003
Agradecimentos
Agradeço a minha mulher Rosangela, pela dedicação e compreensão, ao professor Fábio
Montanha, por sua contribuição como orientador do trabalho, e a todos que, direta ou
indiretamente, contribuíram com idéias ou sugestões.
II
Resumo
O objetivo deste trabalho é propor o desenvolvimento de uma ferramenta para otimizar a
comunicação com fornecedores e reduzir custos nos processos de compra de bens ou serviços,
utilizando conceitos de marketing reverso e e-procurement.
No capítulo 1 tratamos dos objetivos gerais e específicos deste trabalho, da metodologia e da
justificativa. A seguir, no capítulo 2, é dada uma breve introdução aos conceitos de marketing
reverso e e-procurement. No capítulo 3, propõe-se a solução, tratando de aspectos de
tecnologia (linguagem de programação e banco de dados) e da análise de dados e funções do
sistema. A partir do capítulo 4, é feita a modelagem do sistema, bem como o estabelecimento
de um cronograma para o desenvolvimento e teste da ferramenta.
III
Abstract
The objective of this work is to consider the development of a tool to optimize the
communication with suppliers and to reduce costs in the processes of purchase of goods or
services, using reverse marketing concepts and e-procurement. In chapter 1 we deal with the
general and specific objectives of this work, the methodology and the justification. After, in
chapter 2, is given one brief introduction to the reverse marketing concepts and e-
procurement. In chapter 3, we present the solution, treating technology aspects (programming
language and data base) and the analysis of the system, like data and functions. From chapter
4, the modeling of the system is made, as well as the establishment of a cronogram for the
development and test of the tool.
IV
Índice de texto
Lista de figuras e tabelas.........................................................................................................VI
Figuras.................................................................................................................................VI
Tabelas.................................................................................................................................VI
Lista de abreviações...............................................................................................................VII
1. Introdução.............................................................................................................................8
1.1. Objetivos........................................................................................................................81.1.1. Geral.........................................................................................................................81.1.2. Específico.................................................................................................................9
1.2. Metodologia.................................................................................................................10
1.3. Justificativa..................................................................................................................10
2. Marketing Reverso..............................................................................................................11
2.1. E-procurement............................................................................................................12
3. Solução Proposta.................................................................................................................16
3.1. Objetivos da Solução Proposta..................................................................................17
3.2. Análise dos Dados e Funções......................................................................................18
3.3. Aspectos de Tecnologia...............................................................................................193.3.1. O PHP....................................................................................................................193.3.2. O PostgreSQL........................................................................................................21
4. Modelagem da Solução Proposta.......................................................................................23
4.1. Especificação de Casos de Uso...................................................................................24
4.2. Diagrama de Classes...................................................................................................27
4.3. Diagramas de Seqüência.............................................................................................29
4.4. Diagrama de Componentes........................................................................................33
4.5. Modelagem dos Dados................................................................................................344.5.1. Lógica....................................................................................................................344.5.2. Física......................................................................................................................34
5. Interface da solução proposta.............................................................................................36
6. Cronograma de trabalho......................................................................................................43
Considerações finais................................................................................................................44
Referências Bibliográficas......................................................................................................45
V
Lista de figuras e tabelas
Figuras
Figura 1: Modelo de aplicação------------------------------------------------------------------------16Figura 2: Notação de diagrama de entidade-relacionamento------------------------------------24Figura 3: Primeiro caso de uso------------------------------------------------------------------------25Figura 4: Segundo caso de uso------------------------------------------------------------------------25Figura 5: Terceiro caso de uso------------------------------------------------------------------------26Figura 6: Quarto caso de uso--------------------------------------------------------------------------27Figura 7: Diagrama de Classes------------------------------------------------------------------------28Figura 8: Diagrama de Seqüência 1------------------------------------------------------------------29Figura 9: Diagrama de Seqüência 2------------------------------------------------------------------30Figura 10: Diagrama de Seqüência 3-----------------------------------------------------------------31Figura 11: Diagrama de Seqüência 4-----------------------------------------------------------------32Figura 12: Diagrama de Componentes---------------------------------------------------------------33Figura 13: DER (Diagrama de entidade-relacionamento)-----------------------------------------34Figura 14: MER (Modelo de entidade-relacionamento)-------------------------------------------35Figura 15: Tela de entrada do sistema---------------------------------------------------------------36Figura 16: Tela exibida após a entrada do usuário administrador-------------------------------37Figura 17: Tela exibida após a entrada do usuário fornecedor-----------------------------------38Figura 18: Tela de visualização da lista de processos de compra ativos------------------------39Figura 19: Tela de visualização de detalhes do processo de compra----------------------------40Figura 20: Tela de envio de lances de fornecimento------------------------------------------------41Figura 21: Tela de visualização de lances de fornecimento----------------------------------------42
Tabelas
Tabela 1: Estratégias de adoção das tecnologias de E-Procurement----------------------------14Tabela 2: Eficiências geradas com a adoção de tecnologias de E-procurement---------------15Tabela 3: Cronograma de trabalho---------------------------------------------------------------------43
VI
Lista de abreviações
ASP = Active server pages (Páginas ativas de servidor)
CGI = Common gateway interface (Interface comum de portadora)
DER = Diagrama de entidade-relacionamento
HTML = Hypertext markup language (Linguagem de marcação de hiper-texto)
HTTP = Hypertext transfer protocol (Protocolo de transferência de hiper-texto)
MER = Modelo de entidade-relacionamento
PHP = Hipertext pre-processor (pré-processador de hiper-texto)
SQL = Structured query language (Linguagem estruturada de consulta)
UML = Unified Modeling Language (Linguagem de modelagem unificada)
VII
1. Introdução
Atualmente, tanto em organizações privadas quanto em organizações públicas (ou mistas), a
necessidade de economia é um fator importantíssimo e está diretamente relacionado com a
racionalização da produção, o melhor aproveitamento de recursos humanos e o melhor
gerenciamento das compras.
Portanto, comprar bem faz parte de um conjunto de ações que fará com que a organização se
torne mais competitiva e rentável, ou mais eficiente (no caso de organizações públicas).
Para comprar bem, é necessário que a organização adote, entre outras, estratégias de
marketing reverso [LEENDERS & BLENKHORN, 1991], como é o caso do e-procurement1
[DAVILA et al., 2002], que leva o marketing reverso, do qual falaremos no capítulo 2, para a
internet.
O objetivo deste trabalho é mostrar ao leitor a viabilidade do desenvolvimento de uma
ferramenta de e-procurement para otimizar a comunicação com fornecedores e reduzir custos
nos processos de obtenção de materiais diretos e indiretos, ou seja, uma ferramenta de e-
procurement, além do projeto da ferramenta em si.
1.1. Objetivos
1.1.1. Geral
Propor um sistema de colaboração on-line via internet para ser usado por empresas ou
instituições públicas, cuja finalidade é o aumento de suas bases de fornecedores e a
otimização da comunicação entre estes fornecedores e os departamentos de compras, com o
objetivo de reduzir os custos operacionais e administrativos dos processos de licitação e/ou
compra de materiais diretos e indiretos (materiais de consumo ou matéria prima), aumentar a
eficiência destes processos e ainda promover a competição entre os fornecedores destes
materiais, reduzindo os custos de obtenção, utilizando os conceitos de marketing reverso e e-
procurement.
1.1.2. Específico
Dar o conceito de marketing reverso e e-procurement, coletar dados sobre a adoção de
sistemas de e-procurement, tanto no Brasil quanto no mundo, descrever o funcionamento da 1 Obtenção de bens/serviços através do meio eletrônico.
8
solução proposta, elaborar o projeto do “Sistema de Colaboração On-line”, na forma de um
web-site2 que será utilizado através da intranet e cujos objetivos são:
Promover a comunicação entre o departamento de compras e os fornecedores, onde estes
fornecedores poderão efetuar um cadastro e, mediante aprovação da comissão de compras,
passar a fazer parte da base de fornecedores e participar dos processos de compra (pregão
eletrônico);
Possibilitar ao departamento de compras criar listas de compra de materiais, constando a
data de início e a data de finalização do processo de coleta de preços e fazer com que os
fornecedores recebam eletronicamente os avisos e as listas através de mensagens que
poderão ser enviadas via e-mail3 ou consultadas no sistema;
Possibilitar aos fornecedores a participação nos processos de compra, através da utilização
do sistema para o envio de lances ou preços de seus produtos compatíveis com os
constantes das listas de materiais criadas pelos membros das comissões de compra,
criando assim uma espécie de leilão reverso, onde o objetivo é a obtenção do menor preço
(e não do maior) ou das melhores condições;
Possibilitar ao departamento de compras o acompanhamento dos lances dos fornecedores,
a inclusão e o gerenciamento das listas de materiais, a seleção dos melhores lances e o
envio do pedido ao fornecedor selecionado;
Fornecer uma interface de administração simples e poderosa para a equipe de
administração do sistema e para as comissões de compra e fornecer uma interface de
acesso para os fornecedores;
Prover um meio de classificar os bons e os maus fornecedores através de um sistema de
pontuação, onde o fornecedor que entregar os produtos no prazo e com qualidade receberá
pontos positivos e o fornecedor que não entregar os produtos no prazo e com má
qualidade receberá pontos negativos. O objetivo é fazer com que a competição entre os
fornecedores aconteça de forma sadia e responsável;
Prover segurança de dados através da implementação de nomes de usuários e senhas,
níveis de acesso e criptografia da transferência de dados entre o web-server4 que
hospedará o sistema e o browser5 cliente;
Fornecer dados estatísticos, relatórios e gráficos sobre o histórico de aquisição de
materiais em determinado período;
2 Página ou documento disponibilizado na internet.3 Mensagem eletrônica.4 Servidor de páginas ou documentos para a internet.5 Aplicativo para visualização de páginas ou documentos da internet.
9
1.2. Metodologia
Para a elaboração deste trabalho, planeja-se seguir o seguinte roteiro:
Realizar pesquisas sobre marketing reverso, e-procurement, e assuntos ligados à
otimização e a redução de custos de compras e também sobre as ferramentas e linguagens
que deverão ser utilizadas para a implementação do protótipo do sistema;
Organizar estes dados para serem usados no projeto de graduação;
Elaborar o projeto do sistema proposto;
Organizar todo o material coletado, resultante de pesquisas bibliográficas, dados
estatísticos e a documentação do sistema e montar relatório final;
1.3. Justificativa
Justifica-se este trabalho ao percebermos que a utilização de sistemas de e-procurement, tanto
no Brasil quanto no mundo, ainda é pequena, e que, diante da necessidade crescente de
otimização dos processos de compra e redução de custos operacionais, a popularização e a
livre distribuição deste tipo de solução só traria benefícios para as partes interessadas
(organizações públicas ou privadas).
10
2. Marketing Reverso
Marketing reverso. 1. Busca por parte de uma empresa de fornecedores. No modelo tradicional era o
fornecedor quem buscava o cliente. Há muitas razões para um comprador aplicar o marketing reverso,
entre elas destacam as seguintes: altos retornos, deficiências de mercado, considerações futuras,
procurações políticas, geográficas e ambientais, tecnologia, reconhecimento e valorização e tendências
atuais. 2. Maneira agressiva e imaginativa de alcançar os objetivos de suprimentos em que o
comprador toma a iniciativa de fazer as propostas, sejam para fornecedores, sejam para usuários
dentro da organização. 6
Tradicionalmente, o conceito de marketing está relacionado à venda de produtos ou serviços,
onde o fornecedor parte em busca de compradores através de campanhas publicitárias
[KOTLER, 2000], [LAMBIN, 2000]. Podemos citar vários exemplos de campanhas de
marketing que procuram persuadir os potenciais compradores: as campanhas da Coca-Cola,
da Nike e da Nestlé. Todas essas campanhas têm um único objetivo: a venda de produtos.
No marketing reverso os papéis se invertem, ou seja, é o comprador quem sai a procura de
fornecedores e boas oportunidades de compra [LEENDERS & BLENKHORN, 1991].
Antes de falarmos sobre o conceito de marketing reverso, é importante ressaltar a importância
da estratégia de suprimentos em uma organização. Toda organização, seja pública ou privada,
depende de fornecedores para suprir suas inúmeras necessidades de materiais, mercadorias ou
serviços.
Se considerarmos uma organização como um sistema de transformação insumo-produto,
veremos que o controle da aquisição de insumos é de alta importância para o bom
funcionamento do sistema como um todo [LEENDERS & BLENKHORN, 1991].
A função de suprimentos em uma organização contribui substancialmente para os objetivos e
estratégias organizacionais, quando é bem organizada e gerenciada [LEENDERS & BLENKHORN,
1991].
O bom gerenciamento deste sistema dependerá do bom gerenciamento do sistema de
suprimentos [LEENDERS & BLENKHORN, 1991].
Surge daí a importância de uma estratégia de marketing voltada às compras, onde o principal
objetivo é a detecção de boas oportunidades de aquisição de insumos bem como a firmação de
boas parcerias com fornecedores internos ou externos.
6 Definição de marketing reverso, disponível em http://www.ric.com.br/dicionario_r.asp, acessado em 15/10/2003
11
O marketing reverso é um método agressivo e criativo que faz parte da estratégia de
suprimentos de uma organização, onde o comprador toma a iniciativa, em vez do vendedor.
Este método inclui pesquisas de preços com fornecedores variados visando as melhores
condições para a aquisição imediata de suprimentos, a firmação de parcerias de fornecimento
com fornecedores estratégicos ou ainda a criação de subdivisões dentro da organização
responsáveis pela produção e fornecimento de produtos [LEENDERS & BLENKHORN,
1991].
2.1. E-procurement
O termo e-procurement surgiu após a explosão da internet e está diretamente relacionado ao
marketing reverso. O e-procurement consiste em utilizar a rede mundial para fazer marketing
reverso.
Conceito que transfere para a Web o processo e gerenciamento de compras de suprimentos, aliviando a
carga de trabalho e os custos dessa área nas corporações. O e-procurement traz a eliminação do
papel, uma cotação de preços mais abrangente e a possibilidade de acompanhar melhor a performance
dos fornecedores. Num outro estágio, amplia a integração da cadeia de relacionamento. Desenvolvidos
em linguagem Web, os sistemas podem elaborar cadastros eletrônicos, onde é possível analisar
produtos e preços, indicando as melhores opções de compra de acordo com parâmetros pré-
estabelecidos. 7
Um serviço de e-procurement procura integrar de forma eficiente os departamentos de
compras das empresas com seus fornecedores. Por meio do e-procurement o processo de
seleção e aprovação das compras das empresas é automatizado na internet. Com isso o custo
de cotação e compra de um produto fica muito mais barato. O trabalho de cotar com duas
empresas, por exemplo é o mesmo do que se comunicar com 100 empresas. Isso resulta em
uma maior possibilidade de encontrar melhores preços e prazos na obtenção de diversos
produtos além de obter uma redução nos custos do processo.
Podemos citar alguns grandes utilizadores de serviços de e-procurement no Brasil:
A prefeitura de Curitiba, no estado do Paraná, utiliza um sistema de e-procurement para
realizar processos de compras cujo valor não ultrapasse o limite de R$8.000,00;
7 Definição de e-procurement, disponível em http://www.me.com.br/Faq.asp#20, acessado 31/10/2003
12
A AGCO, líder mundial em fabricação e distribuição de equipamentos agrícolas e peças
de reposição, utiliza em suas subsidiárias brasileiras sistemas de e-procurement para
agilizar os processos de compras, reduzir custos de aquisição e reduzir o nível de estoque;
O Grupo Electrolux, líder mundial na produção e comercialização de eletrodomésticos
para uso em ambientes internos e externos, utiliza sistemas de e-procurement para redução
de custos operacionais e agilização dos processos de compras;
Dentre as vantagens do e-procurement, podemos citar:
Redução de custos dos processos de compra (papel, deslocamento, telefone, etc);
Maior controle sobre os processos de compra, com a mensuração de dados (comparações
de preços de produtos e prazos de atendimento, desempenho de fornecedores, histórico de
compras, etc);
Redução de nível de estoques;
Agilização dos processos de cotação de preços, aprovação de requisições de compra e
fechamento de pedidos;
Maior competição entre fornecedores, possibilitando maior redução do preço final de
produtos;
Uma pesquisa realizada por Antonio Davila, Mahendra Gupta e Richard J. Palmer [DAVILA
et al., 2002], utilizando respostas de 168 organizações da América do Norte (Estados Unidos e
Canadá), traça o estado atual da adoção e utilização das tecnologias de e-procurement na
América do Norte.
Os resultados da pesquisa indicam que as tecnologias de e-procurement estão ainda em seus
estágios adiantados de desenvolvimento - um estágio em que existem diferentes soluções
tecnológicas disponíveis no mercado, e estas competem entre si para resolver as diferentes
necessidades existentes nas organizações, antes que um padrão dominante de tecnologia seja
adotado. A maioria dos entrevistados que usam tecnologias de e-procurement são usuários
relativamente novos, somente 34% dos entrevistados estão envolvidos com iniciativas
tecnológicas relacionadas ao e-procurement há um ano ou mais. Das organizações que
compram software de e-procurement, 61% são corporações; destas, 71% são do tamanho da
Fortune 5008.
A tabela 1, segundo a pesquisa [DAVILA et al., 2002], descreve as várias estratégias que as
companhias estão adotando para tecnologias de e-procurement. A maioria (70%) está
adotando uma estratégia do tipo "esperar para ver". Estas companhias estão cientes do estágio
atual de desenvolvimento do e-procurement, mas não estão destinando os recursos (37%),
8 Organização com faturamento anual acima de 10 bilhões de dólares.
13
nem investindo seletivamente, ou seja, esperando até que o melhor modelo de e-procurement
possa ser identificado (33%). Não obstante, estão seguindo de perto os desenvolvimentos
destas tecnologias, estão reconhecendo a relevância destas tecnologias para seu futuro e
investindo bastante para compreendê-las e amadurece-las.
Tabela 1: Estratégias de adoção das tecnologias de E-Procurement
Obs.: A tabela reflete a estratégia das organizações, como segue:
1 = Observam o e-procurement, sem experimentações. 2 = Estão cientes do estágio atual do e-procurement, mas não destinam maiores recursos.3 = Investem seletivamente até que o melhor modelo de e-procurement possa ser identificado e adotado.4 = Movem-se rapidamente para o e-procurement.5 = Investem pesadamente para ganhar liderança competitiva no setor.
Uma pequena parte das organizações (4%) está adotando uma estratégia mais passiva da
observação sem experimentação, um número moderado das organizações (27%) está adotando
uma estratégia agressiva para a adoção da tecnologia de e-procurement - declarando que estão
investindo significativamente em e-procurement para ganhar a liderança perante seus
concorrentes [DAVILA et al., 2002].
Outro aspecto importante da pesquisa relata os benefícios que estas organizações observam
com a adoção de soluções de e-procurement. Espera-se que estes benefícios acelerem a taxa
de adoção destas tecnologias, uma vez que as incertezas que remanescem são reduzidas aos
níveis que incentivam alocação significativa de recursos. As companhias que usam
14
tecnologias de e-procurement relatam economias de 42% custos da transação de compra. Esta
redução de custos é associada com a menor utilização de papel, que traduz em poucos erros e
em um processo mais eficiente de compra. A simplificação do processo de compra com a
utilização do e-procurement também favorece a redução do ciclo de compra. Quando não
diretamente quantificável em dólares, um tempo de ciclo mais rápido fornece mais
flexibilidade e uma informação mais atualizada no momento de abrir uma ordem de compra.
Os usuários das tecnologias de e-procurement relatam também uma redução no número de
fornecedores – aliado aos benefícios associados do custo de uma complexidade gerencial mais
baixa, de preços mais baixos, e de redução na quantidade de pessoas envolvidas no processo
de compra [DAVILA et al., 2002]. A tabela 2, segundo a pesquisa [DAVILA et al., 2002],
relata os resultados da pesquisa.
Tabela 2: Eficiências geradas com a adoção de tecnologias de E-procurement
15
3. Solução Proposta
Baseando-se nos conceitos de marketing reverso e e-procurement citados no capítulo anterior,
propõe-se com este trabalho a especificação de um sistema de e-procurement do tipo leilão
reverso, onde fornecedores cadastrados têm acesso a listas de compra criadas pelos
compradores, podendo assim enviar suas propostas de fornecimento (lances de fornecimento)
e ainda transportadores cadastrados, da mesma forma, têm acesso às listas de compra,
podendo então enviar suas propostas de transporte (lances de transporte) dos produtos.
A solução proposta é baseada no conceito de web-application9, conforme mostra a figura 1,
ou seja, aplicação desenvolvida para a internet, onde a aplicação servidora fica armazenada
em um servidor de internet e é acessada através de um software cliente, o navegador de
internet, através do protocolo HTTP (Hypertext transfer protocol).
Figura 1: Modelo de aplicação
A aplicação deverá ser composta dos seguintes módulos:
Módulo de Gerenciamento geral;
Módulo de Gerenciamento de Processos de Compras;
Módulo de Gerenciamento de Lances de Fornecimento;
Módulo de Gerenciamento de Lances de Transporte;9 Aplicação desenvolvida para a internet.
16
O módulo de Gerenciamento Geral será utilizado pelo usuário administrador do Sistema de
Compras, e este fornecerá acesso a todos os cadastros do sistema, e também o controle de
usuários e de permissões de acesso.
O Módulo de Gerenciamento de Processos de Compra será utilizado pelo usuário comprador,
permitindo a abertura e encerramento de processos de compra, aprovação de lances de compra
e de lances de transporte, envio de pedidos de compra e de transporte.
O Módulo de Gerenciamento de Lances de Fornecimento será utilizado pelo usuário
fornecedor, e permitirá ao fornecedor visualizar processos de compras, enviar ou cancelar
lances de fornecimento, visualizar o ranking de lances e estabelecer comunicação com outros
usuários do sistema.
O Módulo de Gerenciamento de Lances de Transporte será utilizado pelo usuário
transportador e permitirá a este visualizar processos de compras, gerenciar seus lances de
transporte, visualizar o ranking de lances de transporte e estabelecer comunicação com outros
usuários do sistema.
3.1. Objetivos da Solução Proposta
A aplicação proposta tem como objetivo atender aos seguintes requisitos:
Permitir ao administrador do sistema gerenciar todos os dados de compradores,
fornecedores, transportadores, processos de compra, lances de transporte e de
fornecimento, incluindo dados auxiliares, dados de usuários e controle de acesso;
Permitir ao comprador criar listas de compras, constando os itens de produtos e suas
respectivas categorias;
Permitir ao comprador especificar uma programação de entrega, contando local e data,
para cada item de um processo de compra;
Permitir ao comprador, ao criar listas de compras, especificar quais fornecedores ou quais
categorias de fornecedores deverão ser avisados sobre a abertura de novo processo de
compra;
Permitir ao fornecedor visualizar listas de compras e itens de listas de compras;
Permitir ao fornecedor enviar lances contendo preço do produto e condições de
pagamento e entrega para itens de listas de compras;
17
Permitir ao transportador visualizar listas de compras e itens de listas de compras,
incluindo a programação de entrega do produto;
Permitir ao transportador enviar lances contendo preço do frete e condições de pagamento
para itens de listas de compras;
Permitir ao comprador visualizar os lances enviados por fornecedores e transportadores;
Permitir ao comprador selecionar os melhores lances de fornecimento e transporte;
Permitir ao comprador, após eleger os melhores lances de fornecimento e transporte,
enviar o pedido de compra ao fornecedor e o pedido de transporte ao transportador;
3.2. Análise dos Dados e Funções
Analisando o escopo da aplicação, identificamos as seguintes entidades10 principais:
Pessoa jurídica;
Comprador;
Fornecedor;
Transportador;
Processo de compra;
Item de processo de compra;
Lance de fornecedor;
Lance de transportador;
Endereço;
Local de entrega;
Programação de entrega;
Usuário;
Módulo de sistema;
Categoria de produto;
Sub-categoria de produto;
Para todas as entidades envolvidas com o sistema, deverá haver funções de inclusão,
alteração, exclusão, emissão de relatórios, consultas e geração de gráficos estatísticos.
Deverão ser implementadas funções de envio de avisos de abertura e encerramento de
processos de compras e de avisos de lances vencedores por e-mail para os usuários
10 Qualquer coisa do mundo real, que possa ser quantificada e/ou catalogada.
18
transportadores ou fornecedores, através da integração do sistema com servidores de e-mail.
Além das funções citadas, devem ser implementadas funções para envio de lances de
transporte e lances de fornecimento, abertura e encerramento de processos de compra, eleição
de lances, além de funções para obtenção de fornecedores compatíveis com as categorias de
produtos constantes do processo de compra.
3.3. Aspectos de Tecnologia
Propõe-se a utilização da linguagem de scripts PHP (Hipertext pre-processor) para o
desenvolvimento do código das classes e também da interface da aplicação, juntamente com
HTML (Hypertext markup language), e a utilização do sistema de gerenciamento de banco de
dados PostgreSQL para a implementação da base de dados.
As tecnologias citadas foram escolhidas por se tratarem de tecnologias abertas, ou seja, são
ferramentas disponíveis gratuitamente e com o código-fonte incluso, o que garante o baixo
custo na implantação, no que diz respeito à aquisição de licenças de software. A seguir,
damos uma breve descrição do PHP e do PostgreSQL.
3.3.1. O PHP
O objetivo deste trabalho não é estudar ou especificar a linguagem PHP, porém deve-se
destacar alguns dos seus recursos, uma vez que ela é um dos componentes de tecnologia
empregados na especificação do código das classes.
PHP significa: Hypertext Preprocessor (pré-processador de hipertexto) e é uma linguagem de
criação de scripts que executam no servidor e são embutidos em HTML [CONVERSE &
PARK, 2001]. Converse cita o PHP como sendo o ASP11 (Active server pages) de código-
fonte aberto:
PHP é uma linguagem de criação de scripts embutida em HTML no servidor. Os produtos patenteados
nesse nicho de mercado são as Active Server Pages da Microsoft, o ColdFusion da Allaire e as Java
Server Pages da Sun. PHP é às vezes chamado de “o ASP de código-fonte aberto” porque sua
funcionalidade é tão semelhante ao produto/conceito, ou o que quer que seja, da Microsoft
[CONVERSE & PARK, 2001].
11 Active Server Pages, linguagem para criação de páginas dinâmicas para a internet, criada pela Microsoft.
19
Podemos pensar no PHP como uma coleção de supertags de HTML que permitem adicionar
funções do servidor às páginas da internet. Por exemplo, você pode utilizar PHP (Hipertext
pre-processor) para montar instantaneamente uma complexa página da internet ou
desencadear um programa que automaticamente execute o débito no cartão de crédito quando
um cliente realizar uma compra [CONVERSE & PARK, 2001].
Falando estritamente, o PHP tem pouca relação com layout, eventos ou qualquer coisa
relacionada à aparência de uma página Web. De fato, a maior parte do que o PHP realiza é
invisível para o usuário final. Alguém visualizando uma página de PHP não será capaz de
dizer que não foi escrita em HTML, porque o resultado final do PHP é HTML (Hypertext
markup language) [CONVERSE & PARK, 2001].
O PHP é um módulo oficial do servidor de internet Apache, o líder do mercado de servidores
de internet de código-fonte aberto utilizados na rede mundial. Isso significa que o mecanismo
de script do PHP pode ser construído no próprio servidor, tornando a manipulação de dados
mais rápida. Assim como o servidor Apache, o PHP é compatível com várias plataformas, o
que significa que ele executa em seu formato original em várias versões do UNIX e do
Windows. Todos os projetos sob a égide da Apache Software Foundation – incluindo o PHP –
são software de código-fonte aberto [CONVERSE & PARK, 2001].
As várias versões do PHP foram aclamadas e premiadas nos últimos anos. O PHP versão 3 foi
o finalista em 1999 no LinuxWorld Editor´s Choice Awards (na categoria de
biblioteca/ferramentas de programação) e ganhou o segundo lugar, perdendo só para o
ColdFusion, em 1998 no Cnet Builder.com Product Awards, ao passo que a combinação
PHP3/MySQL ganhou prêmio de banco de dados do ano no Web98. Nada mau para um
software sem relações públicas, sem publicidade e sem uma significativa exposição na mídia
[CONVERSE & PARK, 2001].
O PHP é muito parecido com a linguagem C, porém com algumas facilidades, por exemplo:
Não é necessário declarar uma variável para usa-la, basta atribuir um valor à variável que
o PHP irá cria-la automaticamente;
O conteúdo de variáveis pode ser incluído automaticamente em atribuições, sem a
necessidade de operadores de concatenação;
Conversão automática de tipos, ou seja, o PHP converte automaticamente o conteúdo de
variáveis de acordo com o contexto;
O código do PHP é embutido no código das páginas HTML, e a página HTML é pré-
processada pelo interpretador do PHP antes de ser enviada para o navegador pelo servidor
20
web. Para que o interpretador do PHP possa diferenciar o código PHP do código HTML são
utilizados tag de escape do tipo “<?” e “?>”. Exemplo:
<html><head><title>PHP</title></head><body>
<? // Saímos do modo HTML e passamos para o modo PHP Echo(‘<p>Seu navegador: ‘.$HTTP_USER_AGENT.’</p>’);?>
</body></html>
Basicamente, qualquer coisa que pode ser feita por algum programa CGI (Common gateway
interface) pode ser feita também com PHP (Hipertext pre-processor), como coletar dados de
um formulário ou gerar páginas dinamicamente.
PHP também tem como uma das características mais importantes o suporte a um grande
número de bancos de dados, como dBase, Interbase, mSQL, mySQL, Oracle, Sybase,
PostgreSQL e vários outros. Construir uma página baseada em um banco de dados torna-se
uma tarefa extremamente simples com PHP.
O PHP é distribuído livremente em pacotes que incluem binários e código-fonte, e é mantido
por uma comunidade de programadores ao redor do mundo que contribuem utilizando e
efetuando melhorias no software.
3.3.2. O PostgreSQL
O PostgreSQL é um sistema de gerenciamento de banco de dados objeto-relacional
(ORDBMS) baseado no POSTGRES, versão 4.21, desenvolvido nos Estados Unidos, na
universidade da Califórnia no departamento de Ciências da Computação de Berkeley. O
projeto POSTGRES, conduzido pelo professor Michael Stonebraker, foi patrocinado pelo
DARPA (Defense Advanced Research Projects Agency), pelo Army Research Office (ARO),
pelo National Science Foundation (NSF), e pela ESL, Inc. PostgreSQL é uma versão de
código-fonte aberto descendente do código original de Berkeley. Ele fornece suporte ao
padrão SQL (Structured query language) 92 e 99 e outras características modernas. Os
sistemas tradicionais de gerenciamento de banco de dados relacional (RDBMS) suportam um
modelo de dados que consiste em uma coleção de relações nomeadas, contendo atributos de
um tipo de dado específico. Em sistemas comerciais atuais, os tipos possíveis incluem
21
números de ponto flutuante, inteiros, cadeias de caracteres, números decimais e datas.
Reconhece-se geralmente que este modelo é inadequado para as aplicações de processamento
de dados futuras. O PostgreSQL oferece poder adicional incorporando os seguintes conceitos
adicionais de tal maneira que os usuários podem facilmente estender o sistema:
Herança;
Tipos de dados;
Constraints;
Triggers;
Regras;
Integridade transacional;
Estas características fizeram com que o PostgreSQL se posicionasse na categoria de bases de
dados objeto-relacional [THE POSTGRESQL GLOBAL DEVELOPMENT GROUP, 2001].
Além dessas características, o PostgreSQL tem suporte nativo na linguagem PHP (Hipertext
pre-processor).
22
4. Modelagem da Solução Proposta
A modelagem da solução foi feita com base na notação UML (Unified Modeling Language)
[FURLAN, 1998]. Esta notação está se tornando a linguagem padrão para a modelagem de
sistemas de software baseados no paradigma de orientação a objetos (OOP – Object Oriented
Programming). A UML foi portanto eleita para a modelagem do sistema pois é desejado que a
implementação esteja de acordo com o paradigma OOP.
A UML é uma linguagem gráfica para visualização, especificação, construção e
documentação de sistemas complexos de software. Essa linguagem proporciona uma forma
padrão para a preparação de planos para a arquitetura de projetos de sistemas, incluindo
aspectos conceituais, tais como processos de negócios e funções do sistema, além de itens
concretos, como as classes escritas em uma determinada linguagem de programação, e
esquemas de bancos de dados e componentes de software reutilizáveis [FURLAN, 1998].
A modelagem do sistema será apresentada basicamente através de 4 dos diagramas
disponíveis na UML:
O diagrama de casos de uso, que descreve a funcionalidade do sistema percebida por
atores externos. Um ator interage com o sistema podendo ser um usuário, dispositivo ou
outro sistema.
O diagrama de classes, que denota a estrutura estática do sistema onde cada classe
representa coisas ou entidades que serão manipulados pelo sistema, mostrando também o
relacionamento existente entre elas;
O diagrama de seqüência vai abranger as operações do sistema, permitindo uma idéia
mais objetiva do funcionamento do mesmo, explicitando as relações entre as classes.
O diagrama de componentes fornecerá uma visão geral dos módulos do sistema;
Na modelagem da solução também foram utilizados alguns conceitos da análise estruturada
moderna de Yourdon [YOURDON, 1990] para a representação dos modelos de dados, e as
ferramentas de diagramação que utilizaremos são o diagrama de entidade-relacionamento e o
modelo de entidade-relacionamento.
Utilizaremos o diagrama de entidade-relacionamento para detalhar a estrutura e a organização
dos dados que o sistema irá tratar. O diagrama de entidade-relacionamento utiliza a seguinte
notação, de acordo com a figura 2:
23
Figura 2: Notação de diagrama de entidade-relacionamento
Onde:
Entidade (qualquer coisa do mundo real que possa ser quantificada ou catalogada) é
representada por um retângulo;
Relacionamento entre entidades é representado por uma linha e;
A cardinalidade dos relacionamentos é representada por marcações “pés-de-galinha” nas
extremidades da linha que representa o relacionamento;
Usaremos também o Modelo de Entidade-Relacionamento (MER), onde temos a
representação das entidades e a descrição de nome e tipo dos campos que as compõem e ainda
temos o nome lógico dos relacionamentos entre as entidades, representando assim a estrutura
física dos dados.
Todos os diagramas foram desenhados utilizando uma versão de demonstração da ferramenta
de modelagem PowerDesigner™, versão 9.5.2, desenvolvida pela Sybase, Inc.
Nas próximas seções serão apresentados os diagramas e respectivas descrições.
4.1. Especificação de Casos de Uso
Na especificação de casos de uso apresentamos uma visão geral do sistema e das entidades
externas (atores) que estarão interagindo com o sistema.
Na figura 3, mostramos a interação que deverá ocorrer no momento em que o administrador
do sistema define permissões de acesso para o usuário (comprador, transportador ou
fornecedor) e gerencia todos os cadastros do sistema. O ato de gerenciar os cadastros está
relacionado ao fato de que todos as entidades do sistema precisam ser cadastradas, alteradas
ou excluídas, função que deverá ser empenhada principalmente pelo administrador.
24
Figura 3: Primeiro caso de uso
A seguir, conforme mostra a figura 4, representamos a interação que deverá ocorrer quando o
usuário comprador, transportador ou fornecedor, neste caso representado pelo ator “Pessoa
jurídica”, obtêm informações complementares, como informações bancárias e contatos.
Figura 4: Segundo caso de uso
25
O próximo caso de uso, representado pela figura 5, mostra todas as interações que deverão
ocorrer entre o sistema e o usuário comprador, como por exemplo, o ato de eleger um lance de
fornecimento para um item de produto constante de um processo de compra.
Figura 5: Terceiro caso de uso
E por fim, conforme mostramos na figura 6, apresentamos as interações entre o usuário
fornecedor ou transportador e o sistema.
26
Figura 6: Quarto caso de uso
4.2. Diagrama de Classes
No diagrama de classes, conforme representado pela figura 7, definimos as entidades
envolvidas com o sistema de acordo com o paradigma da orientação a objeto, onde se
representa a classe com seus atributos e operações.
O modelo de classes é obtido a partir da análise das especificações de requisitos do sistema e
da análise dos casos de uso. Entende-se por atributo uma característica de uma entidade do
mundo real, tomemos como exemplo o nome da pessoa, e por operação, a capacidade que esta
entidade, representada por uma classe, tem de manipular dados.
27
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
0..*
0..*
1..1
0..*
1..1
0..*
1..1
0..*
1..1
1..1
0..*
1..1 0..*
0..*
0..*
1..1
0..*
1..1
0..*
0..1
0..*
1..10..*
1..1
0..*
Categoria_produto++
categoria_produtonome
: long: String
+++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Obter_subcategorias ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: array: void: void: void: void: void: boolean: boolean
Sub_categoria_produto++
sub_categoria_produtonome
: long: String
+++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Obter_fornecedores ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: array: void: void: void: void: void: boolean: boolean
Processo_compra++++++
processo_comprastatusiniciofimtipoobs
: long: short: Date: Date: String: String
+++++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Abrir ()Encerrar ()Obter_itens ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: boolean: boolean: array: void: void: void: void: void: boolean: boolean
Lance_fornecedor++++++
lance_fornecedordata_horavalorvencedorstatuscondicoes
: long: Date: double: boolean: boolean: String
+++++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Eleger ()Deseleger ()Cancelar ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: boolean: boolean: boolean: void: void: void: void: void: boolean: boolean
Modulo++
modulonome
: long: String
++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: void: void: void: void: void: boolean: boolean
Usuario++++++
usuarionomeloginsenhanivelativo
: long: String: String: String: short: boolean
+++++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Obter_permissoes ()Dar_permissao ()Remover_permissao ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: array: boolean: boolean: void: void: void: void: void: boolean: boolean
Item_processo_compra++++++
item_processo_compradescricao_produtoquantidadeunidadevalor_unitarioobs
: long: String: double: String: double: String
+++++++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Obter_lances_transporte ()Obter_lances_fornecimento ()Dar_lance_transporte ()Dar_lance_fornecimento ()Obter_programacao_entrega ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: array: array: boolean: boolean: array: void: void: void: void: void: boolean: boolean
Programacao_entrega++++
programacao_entregaquantidadedata_entregaforma
: long: double: Date: short
+++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Obter_endereco_entrega ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: array: void: void: void: void: void: boolean: boolean
Lance_transportador+++++
lance_transportadordata_horavalorvencedorstatus
: long: Date: double: boolean: boolean
+++++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Eleger ()Deseleger ()Cancelar ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: boolean: boolean: boolean: void: void: void: void: void: boolean: boolean
Direito_acesso++++++
direito_acessoacessarincluiralterarapagartudo
: long: boolean: boolean: boolean: boolean: boolean
++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: void: void: void: void: void: boolean: boolean
Pessoa_juridica+++++++
pessoa_juridicarazao_socialnome_fantasiasitecnpjinsc_estadualfax
: long: String: String: String: String: String: String
++++++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Obter_contatos ()Obter_inf_bancaria ()Obter_usuarios ()Obter_enderecos ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: array: array: array: array: void: void: void: void: void: boolean: boolean
Cidade+++
cidadenomecep
: long: String: String
+++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Obter_bairros ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: array: void: void: void: void: void: boolean: boolean
Estado+++
estadonomesigla
: long: String: String
+++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Obter_cidades ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: array: void: void: void: void: void: boolean: boolean
Bairro++
bairronome
: long: String
++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: void: void: void: void: void: boolean: boolean
Logradouro+++
logradourotiponome
: long: String: String
++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: void: void: void: void: void: boolean: boolean
Endereco++++
endereconumerocomplementocx_postal
: long: long: String: String
++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: void: void: void: void: void: boolean: boolean
Contato+++++
contatonometelefonecelularemail
: long: String: String: String: String
++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: void: void: void: void: void: boolean: boolean
Inf_bancaria+++++
inf_bancarianum_banconome_bancoagencianome_titular
: long: String: String: String: String
++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: void: void: void: void: void: boolean: boolean
Fornecedor++
fornecedorpontos_fornecimento
: long: int
+++++++++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Obter_subcategorias ()Pontuar ()Obter_pontuacao ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: array: boolean: int: boolean: boolean
Comprador+ comprador : long+++++++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Obter_processos ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: array: boolean: boolean
Transportador++
transportadorpontos_transporte
: long: int
++++++++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Pontuar ()Obter_pontuacao ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: boolean: array: boolean: boolean
Fornecedor_sub_categoria_produto+ capac_fornecimento : long++++-----++
Inserir ()Atualizar ()Excluir ()Obter_do_bd ()Adicionar_erro ()Limpar_erro ()Remover_excesso ()Adicionar_escape ()Remover_escape ()Esta_valido ()Esta_vazio ()
: boolean: boolean: boolean: boolean: void: void: void: void: void: boolean: boolean
Figura 7: Diagrama de Classes
28
4.3. Diagramas de Seqüência
Para cada caso de uso, conforme mostrado na seção 2.4, foi elaborado um diagrama de
seqüência, que mostra as operações correspondentes às classes, sendo iniciadas pelos atores,
mostrando também os parâmetros que deverão ser recebidos por cada operação e os valores
de retorno. Para as operações que retornam um valor booleano (verdadeiro ou falso), o valor
de retorno é mostrado como “TRUE ou FALSE” e para as operações que retornam dados ou
blocos de dados, o valor de retorno é mostrado como sendo o nome de uma entidade (vetor ou
variável).
A figura 8 mostra o diagrama de seqüência relacionado ao primeiro caso de uso, onde
mostramos a interação que deverá ocorrer no momento em que o administrador do sistema
define permissões de acesso para o usuário (comprador, transportador ou fornecedor) e
gerencia todos os cadastros do sistema.
Figura 8: Diagrama de Seqüência 1
A figura 9 apresenta o diagrama de seqüência relacionado ao segundo caso de uso, onde
representamos a interação que deverá ocorrer quando o usuário comprador, transportador ou
fornecedor, neste caso representado pelo ator “Pessoa jurídica”, obtêm informações
complementares, como informações bancárias e contatos.
29
Figura 9: Diagrama de Seqüência 2
A figura 10 mostra o diagrama de seqüência relacionado ao terceiro caso de uso, onde
mostramos todas as interações que deverão ocorrer entre o sistema e o usuário comprador,
como por exemplo, o ato de eleger um lance de fornecimento para um item de produto
constante de um processo de compra.
30
Figura 10: Diagrama de Seqüência 3
31
A figura 11 apresenta o diagrama de seqüência relacionado ao quarto caso de uso, onde mostramos as relações que devem ocorrer entre o usuário
fornecedor ou transportador e o sistema.
Figura 11: Diagrama de Seqüência 4
32
4.4. Diagrama de Componentes
O diagrama de componentes, conforme mostrado na figura 12, nos dá uma visão de como o
sistema deverá estar organizado. Cada componente representa uma divisão do sistema, onde
podemos ver que a interface do usuário, contida no componente “Front-end” necessita dos
componentes “Gerenciamento”, “Processos de compra”, “Lances de transporte” e “Lances de
fornecimento”, e estes por sua vez necessitam do componente “Classes” que utiliza o
componente “Utilitários” para fazer acesso a banco de dados, validações e leitura de
configurações. Pode-se observar o nome do script ou dos scripts em PHP (Hipertext pre-
processor) que está contido no módulo.
Figura 12: Diagrama de Componentes
33
4.5. Modelagem dos Dados
4.5.1. Lógica
No DER (Diagrama de entidade-relacionamento), representado pela figura 13, apresentamos a
estrutura lógica de armazenamento dos dados que o sistema deverá tratar. Nota-se que no
DER mostramos apenas a estrutura de entidades (que futuramente se tornarão tabelas de
banco de dados) e os seus relacionamentos, e não nos preocupamos em mostrar os atributos
ou campos de cada entidade.
Figura 13: DER (Diagrama de entidade-relacionamento)
4.5.2. Física
No MER (Modelo de entidade-relacionamento), enfatizamos a estrutura física das entidades e
seus inter-relacionamentos, mostrando para cada entidade, todos os seus campos e tipos de
dados e para cada relacionamento, o nome físico do mesmo, e ainda todas as chaves primárias
e estrangeiras de cada entidade, conforme apresentado na figura 14.
A estrutura física dos dados foi formatada e especificada para ser compatível com o
gerenciador de banco de dados PostgreSQL.
34
FK_FORNECED_SUBCATPRO_SUB_CATE
FK_FORNECED_FORNECEDO_FORNECED
FK_PROGRAMA_ITEM_LOCA_ITEM_PRO
FK_PROGRAMA_ENDERECO__ENDERECO
FK_SUB_CATE_CATEGORIA_CATEGORI
FK_ITEM_PRO_SUBCAT_IT_SUB_CATE
FK_LANCE_FO_ITEM_LANC_ITEM_PRO
FK_LANCE_TR_ITEM_LANC_ITEM_PRO
FK_LANCE_FO_FORNECEDO_FORNECED
FK_LANCE_TR_TRANSPORT_TRANSPOR
FK_ITEM_PRO_PROCESSO__PROCESSO
FK_PROCESSO_COMPRADOR_COMPRADO
FK_ENDERECO_BAIRRO_EN_BAIRRO
FK_ENDERECO_CIDADE_EN_CIDADE
FK_ENDERECO_ESTADO_EN_ESTADO
FK_ENDERECO_LOGRADOUR_LOGRADOU
FK_CIDADE_ESTADO_CI_ESTADO
FK_BAIRRO_CIDADE_BA_CIDADE
FK_PESSOA_J_PESSOA_JU_PESSOA_JFK_PESSOA_J_PESSOA_JU_ENDERECO
FK_DIREITO__MODULO_DA_MODULO
FK_DIREITO__USUARIO_D_USUARIO
FK_USUARIO_PESSOAJ_U_PESSOA_J
FK_INF_BANC_PESSOAJ_I_PESSOA_J
FK_CONTATO_PESSOAJ_C_PESSOA_J
FK_FORNECED_I_PESSOA__PESSOA_J
FK_TRANSPOR_I_PESSOA__PESSOA_J
FK_COMPRADO_I_PESSOA__PESSOA_J
Categoria_produtocategoria_produtonome
INT4VARCHAR(100)
<pk>
Sub_categoria_produtosub_categoria_produtocategoria_produtonome
INT4INT4VARCHAR(100)
<pk><fk>
Processo_compraprocesso_comprapessoa_juridicacompradorstatusiniciofimtipoobs
INT4INT4INT4INT2DATEDATEVARCHAR(10)CHAR
<pk><fk><fk>
Lance_fornecedorlance_fornecedoritem_processo_comprapessoa_juridicafornecedordata_horavalorvencedorstatuscondicoes
INT4INT4INT4INT4DATENUMERIC(18,2)INT2INT2VARCHAR(200)
<pk><fk2><fk1><fk1>
Modulomodulonome
INT4VARCHAR(100)
<pk>
Usuariousuariopessoa_juridicanomeloginsenhanivelativo
INT4INT4VARCHAR(100)VARCHAR(50)VARCHAR(50)INT2INT2
<pk><fk>
Item_processo_compraitem_processo_comprasub_categoria_produtoprocesso_compradescricao_produtoquantidadeunidadevalor_unitarioobs
INT4INT4INT4VARCHAR(200)NUMERIC(18,2)CHAR(10)NUMERIC(18,2)CHAR
<pk><fk2><fk1>
Programacao_entregaprogramacao_entregaitem_processo_compraenderecoquantidadedata_entregaforma
INT4INT4INT4NUMERIC(18,2)DATEINT2
<pk><fk2><fk1>
Lance_transportadorlance_transportadoritem_processo_comprapessoa_juridicatransportadordata_horavalorvencedorstatus
INT4INT4INT4INT4DATENUMERIC(18,2)INT2INT2
<pk><fk2><fk1><fk1>
Direito_acessodireito_acessousuariomoduloacessarincluiralterarapagartudo
INT4INT4INT4INT2INT2INT2INT2INT2
<pk><fk1><fk2>
Pessoa_juridicapessoa_juridicarazao_socialnome_fantasiasitecnpjinsc_estadualfax
INT4VARCHAR(100)VARCHAR(100)VARCHAR(200)VARCHAR(50)VARCHAR(50)VARCHAR(50)
<pk>
Cidadecidadeestadonomecep
INT4INT4VARCHAR(100)CHAR(8)
<pk><fk>
Estadoestadonomesigla
INT4VARCHAR(100)CHAR(2)
<pk>
Bairrobairrocidadenome
INT4INT4VARCHAR(100)
<pk><fk>
Logradourologradourotiponome
INT4VARCHAR(10)VARCHAR(100)
<pk>
Enderecoenderecologradourobairroestadocidadenumerocomplementocx_postal
INT4INT4INT4INT4INT4INT4VARCHAR(50)VARCHAR(20)
<pk><fk1><fk4><fk2><fk3>
Contatocontatopessoa_juridicanometelefonecelularemail
INT4INT4VARCHAR(100)VARCHAR(50)VARCHAR(50)VARCHAR(100)
<pk><fk>
Inf_bancariainf_bancariapessoa_juridicanum_banconome_bancoagencianome_titular
INT4INT4VARCHAR(10)VARCHAR(100)VARCHAR(50)VARCHAR(100)
<pk><fk>
Fornecedorpessoa_juridicafornecedorpontos_fornecimento
INT4INT4INT4
<pk,fk><pk>
Compradorpessoa_juridicacomprador
INT4INT4
<pk,fk><pk>
Transportadorpessoa_juridicatransportadorpontos_transporte
INT4INT4INT4
<pk,fk><pk>
Fornecedor_sub_categoria_produtosub_categoria_produtopessoa_juridicafornecedorcapac_fornecimento
INT4INT4INT4INT4
<pk,fk2><pk,fk1><pk,fk1>
Pessoa_juridica_enderecopessoa_juridica_enderecoenderecopessoa_juridica
INT4INT4INT4
<pk><fk1><fk2>
Figura 14: MER (Modelo de entidade-relacionamento)
35
5. Interface da solução proposta
Neste capítulo, serão mostrados os desenhos de algumas das principais telas de interface com
o usuário. As telas foram elaboradas usando ferramentas de edição de HTML (Hypertext
markup language). Todas as telas foram capturadas a partir do navegador de internet.
A figura 15 mostra a tela de entrada do sistema, ou seja, a primeira tela que deverá ser
visualizada. Esta interface apresenta um formulário para que o usuário possa inserir seu nome
e senha entrar no sistema. Também apresenta o menu “Cadastre-se” com opções que
possibilitam o usuário não cadastrado fazer seu cadastro como comprador, fornecedor ou
transportador.
Figura 15: Tela de entrada do sistema
36
A próxima tela, conforme mostra a figura 16, deverá ser apresentada após o usuário
administrador do sistema ter efetuado login. Esta tela apresenta o menu “Gerenciamento”,
com as entradas para gerenciamento de compradores, transportadores, fornecedores,
permissões de acesso, processos de compra e dados auxiliares. Apresenta ainda o menu
“Opções”, com entradas para a exibição de estatísticas de utilização do sistema e mensagens.
Figura 16: Tela exibida após a entrada do usuário administrador
37
A seguir, conforme mostra a figura 17, é apresentada a tela que será exibida para o usuário
fornecedor, logo após a sua entrada. Esta tela contém o menu “Menu Principal”, contendo
entradas para listagem de processos de compra abertos e encerrados, e lances de
fornecimento. No menu “Opções”, são exibidas entradas para estatísticas e mensagens.
Figura 17: Tela exibida após a entrada do usuário fornecedor
38
Abaixo, conforme mostra a figura 18, é exibida a lista de processos de compra ativos, para o
usuário fornecedor. Neste momento ele poderá selecionar um processo de compra para
visualizar mais detalhes, como a lista de itens de produto.
Figura 18: Tela de visualização da lista de processos de compra ativos
39
Na figura 19, conforme é mostrado abaixo, o fornecedor tem acesso à lista de produtos
constantes no processo de compra. Para cada item da lista, existe a opção “Dar lance”, que
possibilitará ao fornecedor enviar lances de fornecimento.
Figura 19: Tela de visualização de detalhes do processo de compra
40
Abaixo, conforme mostra a figura 20, é apresentada a tela de envio de lances de fornecimento
onde o fornecedor poderá enviar sua proposta contendo o valor unitário para o produto e as
condições de entrega/pagamento.
Figura 20: Tela de envio de lances de fornecimento
41
A seguir, a figura 21 mostra a tela de visualização dos lances de fornecimento, onde o usuário
comprador poderá selecionar (eleger) o melhor lance para o item de produto. A lista apresenta
o nome do fornecedor que enviou lance, o valor e as condições, e o botão “Selecionar”.
Figura 21: Tela de visualização de lances de fornecimento
42
6. Cronograma de trabalho
Para que o protótipo do sistema esteja disponível e possa ser colocado “em produção”, é
necessário desenvolver, além das classes, a interface do usuário e os módulos de
gerenciamento, utilizando as tecnologias citadas na seção 3.3.1, e ainda realizar todos os
testes de implementação. Diante disso, foi estabelecido um cronograma de trabalho para a
implementação do projeto como um todo, conforme mostra a tabela 3.
Tabela 3: Cronograma de trabalho
Etapas
Semanas1 2 3 4 5 6 7 8 9 10 11 12
1234
Etapas do cronograma:
1) Desenvolvimento do código das classes;2) Desenvolvimento da interface do usuário;3) Desenvolvimento dos módulos de gerenciamento e módulos utilitários;4) Testes de implementação e correção de erros;
43
Considerações finais
Procurou-se, com este trabalho, propor o desenvolvimento de uma ferramenta de e-
procurement, do tipo leilão-reverso, através da análise e a modelagem do sistema. Espera-se
que o trabalho tenha contribuído para popularização deste tipo de ferramenta, uma vez que a
popularização e o aumento da utilização das tecnologias de e-procurement no Brasil, tanto em
organizações privadas, quanto públicas, pode trazer benefícios significativos.
Finalmente, deve-se ressaltar que, apesar de todos os benefícios que a adoção de sistemas de
e-procurement pode trazer, uma solução de e-procurement não é a solução para todos os
problemas de uma organização. Uma solução de e-procurement é uma ferramenta que vai
ajudar na otimização do processo de cotação e compra, porém, este processo deve fazer parte
de uma política de compras organizada e devidamente implementada. Se a organização for
um caos organizacional, com certeza a adoção de um sistema de e-procurement não será a
solução para todos os problemas, e ainda poderá ajudar a piorar a situação.
44
Referências Bibliográficas
[CONVERSE & PARK, 2001] Converse, Tim & Park, Joyce. PHP 4: A bíblia. Tradução de Edson Furmankiewicz, Joana Figueiredo – Rio de Janeiro: Campus, 2001.
[DAVILA et al., 2002] Davila, Antonio; Gupta, Mahendra; Palmer, Richard J.. Moving Procurement Systems to the Internet: The Adoption and Use of E-Procurement Technology Models. Research paper no. 1742. Graduate School of Business. Stanford University, June 2002.
[FURLAN, 1998] Furlan, José Davi. Modelagem de Objetos através da UML – the Unified Modeling Language. São Paulo: Makron Books, 1998.
[KOTLER, 2000] Kotler, Philip. Administração de Marketing. 10ª ed., São Paulo: Prentice-Hall, 2000.
[LAMBIN, 2000] Lambin, Jean-Jaques. Marketing Estratégico. 4ª ed., São Paulo: McGraw-Hill, 2000.
[LEENDERS & BLENKHORN, 1991] Leenders, Michiel R. & Blenkhorn, David L.. Marketing Reverso: Um novo conceito no relacionamento comprador-vendedor. Tradução de Bárbara Theoto Lambert; revisão técnica Dílson Gabriel dos Santos – São Paulo: Makron, McGraw-Hill, 1991.
[THE POSTGRESQL GLOBAL DEVELOPMENT GROUP, 2001] The PostgreSQL Global Development Group. PostgreSQL 7.2 Administrator’s Guide. University of California, 2001.
[YOURDON, 1990] Yourdon, Edward. Análise estruturada moderna. tradução de Dalton Conde de Alencar – Rio de Janeiro: Campus, 1990.
45