UNIVERSIDADE FEDERAL DO RIO DE JANEIRO
ESCOLA DE ENGENHARIA
DEPARTAMENTO DE ENGENHARIA ELETRÔNICA E
DE COMPUTAÇÃO
Projeto Final
Sistema para Administração de Corretoras de Seguros
Desenvolvido com Componentes Multi-Plataforma
Autor:
________________________________________________________
Marcelo Seabra Pinto
Orientador:
________________________________________________________
Antônio Cláudio Gómez de Sousa
Examinador 1: ________________________________________________________
Sérgio Barbosa Villas-Boas
Examinador 2: ________________________________________________________
Sérgio Palma da Justa Medeiro
Rio de Janeiro
2004
DEDICATÓRIA:
Dedico este trabalho ao meu pai, que através do seu exemplo de vida me deu
tanta disposição e vontade de trabalhar, à minha mãe, por toda ajuda prestada durante
meu curso de Engenharia e a meu mestre Antônio Cláudio pela valiosa orientação e total
apoio neste trabalho.
I
AGRADECIMENTOS:
Gostaria de agradecer este trabalho primeiramente a Deus, por nunca ter me
deixado esmorecer diante das dificuldades encontradas durante todo o curso e também
neste projeto.
Agradeço aos meus pais, Elcio Pinto e Edilce Seabra Pinto, que sempre me
apoiaram em todos os momentos do meu curso. Agradeço em particular à minha mãe
pela valiosa ajuda nas questões referentes ao negócio em foco deste trabalho, seguros.
Agradeço também a minha irmã, Daniele Seabra Pinto, que não só me deu forças
para superar as dificuldades da faculdade, como também muito contribuiu nos momentos
de dúvida e decisão em minha vida profissional.
Agradeço a todos os meus amigos de turma que, de uma maneira ou de outra, me
ajudaram a realizar os trabalhos da faculdade e a passar nas provas. Agradeço em
especial a meu amigo Guilherme Oliveira Pinto, por ter me passado importantes
conhecimentos técnicos que muito me ajudaram no desenvolvimento deste projeto e sem
os quais, possivelmente, não o concluiria no prazo estipulado ou não o faria com a
mesma qualidade.
Não poderia deixar de agradecer ao povo brasileiro, que através do pagamento
de seus impostos, financiaram o meu curso superior.
Agradeço ao meu mestre Sérgio Barbosa Villas-Boas, não só pelas tantas dicas e
ajuda com relação a parte técnica deste trabalho, como também pelas valiosas
conversas, que me ajudaram a ampliar minha visão de futuro, emprego e negócios.
Por fim, agradeço ao meu mestre e orientador, Antônio Cláudio, por ter
trabalhado comigo ao longo deste projeto de modo tão produtivo e compreensível.
II
RESUMO
A realização de seguros é um assunto cada vez mais popular no Brasil e no
mundo. A evolução de diferentes modadlidades de seguros têm ocorrido com grande
rapidez e as companhias de seguros vêm ampliando seus lucros de modo espetacular.
Neste ramo extremamente dinâmico e de grande concorrência, o pequeno e médio
corretor de seguros muitas vezes carece de um sistema que aumente a eficiência de seu
trabalho e aumente sua competitividade no mercado. Não há muitos softwares no
mercado que vão de encontro às necessidades das corretoras e ainda sejam de fácil
utilização. Ainda, dentre os existentes, todos funcionam apenas no sistema operacional
Windows.
O projeto foi todo desenvolvido utilizando a liguagem C++. Nos dias de hoje,
onde a competição por empregos é cada vez mais acirrada, devemos cultivar uma
estratégia de desenvolvimento pessoal que nos proporcione um conhecimento útil e
duradouro. Este foi o motivo principal da escolha da linguagem utilizada neste projeto.
Além disso, não podemos nos limitar a produzir tecnologia com soluções proprietárias e
limitadas, daí, a escolha pela biblioteca multiplataforma wxWidgets para o
desenvolvimento da interface gráfica e da biblioteca SQLAPI++, para interfaceamento
com o Banco de Dados.
Assim, este trabalho procura ao mesmo tempo, ser uma referência para aqueles
que desejam aprender mais sobre programação multi-plataforma, sobretudo com a
bibliotecas wxWidget, e uma alternativa para as corretoras de seguros, que poderão
contar com mais esta opção para seu sistema de administração.
PALAVRAS-CHAVE
Banco
de
Dados,
Programação
Multiplataforma,
Manutebilidade,
GUI,
wxWidgets, SQLAPI++, C++.
III
ÍNDICE
DEDICATÓRIA: .......................................................................................................... I
AGRADECIMENTOS:................................................................................................ II
RESUMO.................................................................................................................... III
PALAVRAS-CHAVE ................................................................................................ III
ÍNDICE.......................................................................................................................... 1
1. INTRODUÇÃO ......................................................................................................... 5
1.1. O MERCADO DE SEGUROS ...................................................................................... 5
1.2. UMA OPÇÃO INOVADORA AO MERCADO .................................................... 7
1.3. ESCOPO DO SISTEMA....................................................................................... 8
2. REGRAS DE NEGÓCIO.......................................................................................... 9
3. FUNDAMENTAÇÃO TEÓRICA .......................................................................... 16
3.1. ANÁLISE DO SISTEMA ................................................................................... 16
3.2. ARQUITETURA EM CAMADAS ..................................................................... 16
4. ANÁLISE ESTRUTURADA .................................................................................. 18
4.1. MODELO CONCEITUAL ......................................................................................... 18
4.1.1. Dicionário de dados das entidades do modelo conceitual............................. 19
4.2. DIAGRAMAS DE FLUXO DE DADOS ....................................................................... 27
4.2.1. DFD de contexto ou de nível 0..................................................................... 28
4.2.2. DFD de nível 1 ............................................................................................ 29
4.2.3. DFDs nível 2................................................................................................ 30
4.2.3.1. Gerenciar_Cliente_Corretor .................................................................. 30
4.2.3.2. Gerenciar_Producao.............................................................................. 31
4.2.3.3. Gerenciar_Sinistro ................................................................................ 32
4.2.3.4. Gerenciar_Seguradora........................................................................... 33
1
4.2.3.5. Gerenciar_Usuario ................................................................................ 34
4.2.4. DFDs nível 3................................................................................................ 35
4.2.4.1. Gerenciar_Proposta............................................................................... 35
4.2.4.2. Gerenciar_Comissao ............................................................................. 36
4.2.4.3. Gerenciar_Automovel ........................................................................... 37
4.2.5. Descrição dos fluxos de dados: .................................................................... 38
4.2.6. Descrição dos depósitos: ............................................................................. 40
4.2.7. Descrição dos terminadores: ....................................................................... 40
5. O PROJETO............................................................................................................ 41
5.1. CARACTERÍSTICAS-CHAVE................................................................................... 41
5.1.1. A interface gráfica ....................................................................................... 41
5.1.2. Banco de Dados genérico ............................................................................ 42
5.1.3. Código-fonte comentado e em inglês............................................................ 43
5.2. ARQUITETURA DO SISTEMA ........................................................................ 43
5.3 MODELOS LÓGICO DOS DADOS.................................................................... 44
5.3.1. Descrição das entidades e seus atributos: .................................................... 44
5.3.1.1. Entidade corretor................................................................................... 44
5.3.1.2. Entidade cliente..................................................................................... 45
5.3.1.3. Entidade pes_fisica ............................................................................... 48
5.3.1.4. Entidade pes_jurídica ............................................................................ 50
5.3.1.5. Entidade endereco ................................................................................. 51
5.3.1.6. Entidade seguradora .............................................................................. 54
5.3.1.7. Entidade proposta.................................................................................. 56
5.3.1.8. Entidade apolice.................................................................................... 61
5.3.1.9. Entidade renovacao ............................................................................... 63
5.3.1.10. Entidade endosso................................................................................. 64
5.3.1.11. Entidade custo_fixo............................................................................. 66
5.3.1.12. Entidade cobertura .............................................................................. 67
5.3.1.13. Entidade marca.................................................................................... 69
5.3.1.14. Entidade modelo ................................................................................. 69
5.3.1.15. Entidade cobertura_automovel ............................................................ 71
2
5.3.1.16. Entidade acessorio............................................................................... 75
5.3.1.17. Entidade cobertura_outro .................................................................... 77
5.3.1.18. Entidade parcela_comissao.................................................................. 78
5.3.1.19. Entidade parcela_recebida ................................................................... 79
5.3.1.20. Entidade tipo_sinistro.......................................................................... 81
5.3.1.21. Entidade sinistro.................................................................................. 81
5.3.1.22. Entidade aceitacao............................................................................... 85
5.3.1.23. Entidade recusa ................................................................................... 86
5.4. PANORAMA GERAL DO SISTEMA .......................................................................... 87
5.5. DIAGRAMA MODULAR.................................................................................. 89
5.5.1. Propostas..................................................................................................... 90
5.5.2. Corretores ................................................................................................... 92
5.5.3. Clientes: ...................................................................................................... 93
5.5.4. Seguradoras: ............................................................................................... 94
5.5.5. Automóveis: ................................................................................................. 95
5.5.6. Sinistros....................................................................................................... 96
5.5.7. Comissões.................................................................................................... 97
5.5.8. Relatórios .................................................................................................... 98
5.5.9. Usuários .................................................................................................... 100
5.6. INFORMAÇÕES ADICIONAIS ................................................................................ 101
5.6.1. Demais arquivos envolvidos....................................................................... 101
6. FERRAMENTAS UTILIZADAS NO DESENVOLVIMENTO ......................... 103
6.1. FERRAMENTAS DE HARDWARE E SOFTWARE ...................................................... 103
6.1.1. Ferramentas de Software ........................................................................... 103
6.1.2 Ferramentas de Hardware .......................................................................... 104
6.2. BIBLIOTECAS UTILIZADAS ................................................................................. 105
6.2.1. A wxWidgets .............................................................................................. 105
6.2.2. A SQLAPI++............................................................................................. 108
7. CONCLUSÕES ..................................................................................................... 111
A WXWIDGETS .................................................................................................... 112
3
METODOLOGIA ................................................................................................... 112
APRENDIZADO .................................................................................................... 112
FUTURAMENTE ................................................................................................... 113
8. BIBLIOGRAFIA:.................................................................................................. 115
REFERÊNCIAS ADICIONAIS........................................................................................ 116
APÊDICE: ................................................................................................................. 117
4
1. INTRODUÇÃO
1.1. O MERCADO DE SEGUROS
Seguro é uma atividade que vem crescendo assustadoramente nos últimos anos.
Nos Estados Unidos as pessoas e empresas vêm procurando fazer seguros não só de seus
pertences mais valiosos, como também de fatores críticos para seus negócios. Por
exemplo: um médico cirurgião já pode fazer seguro de suas mãos, meio absolutamente
indispensável para a prática de sua profissão. Outro exemplo seria o seguro para
executivos, que algumas empresas já fornecem como benefício aos seus funcionários
mais bem posicionados, com alto poder de decisão.
No Brasil, o ramo de seguros vem crescendo acentuadamente na última década.
Para se ter uma idéia do tamanho deste mercado, observe o texto divulgado pela
Seguradora J. Malucelli, em sua home-page:
“O mercado de seguros no Brasil é ainda bastante promissor, com tendência a
crescimento nos próximos anos. Atualmente o setor responde por cerca de 3% do PIB
brasileiro, o dobro do registrado no início da década de 90. No mercado da América
Latina, o Brasil é líder em prêmios gerados com mais de 40%, quase quatro vezes mais
que o segundo colocado no ranking, o México.
As principais carteiras comercializadas são Automóveis, Vida e Saúde, sendo que cerca
de 30% do mercado brasileiro de seguros é controlado por empresas estrangeiras.”
Um outro dado interessante é a evolução do número de corretores de seguros
ativos por ano, publicado pela Fundação Nacional dos Corretores de Seguros Privados, de
Capitalização, de Previdência Privada e das Empresas Corretoras de Seguros,
FENACOR. Observe no gráfico abaixo:
5
!!
647
6 7
4
6 7
4
6 7
4
6 7
4
6 7
4
6 7
4
6 7
4
6 7
4
798
798
798
798
798
798
798
798
798
7;::<
7;::=
7;::F
7;::A
7;:::
89@@@
89@@C7
89@@)8
89@@6
/'0 02
, 0
7=>?<@'=
7H:C>?@IA'D
85@>E:<'F
88>G8A'A
856>?F<5:
8DC>EA6'6
85=>?<<'@
85=>E:D'A
88>G8:)6
"$#%'&()
34& A!>B6'@C7
7<>E:'F@
8!7I>EA'@=
85F>EA'F8
647I>?6AC8
7HAC>EA5DD
85<>J757<
85<>J757F
7HAC>E:'@6
'/ 0-/1
8DC>EA@'F
6<>?@<5D
DC8>?F='6
<@>J7H='@
<<>J7LDM7
D6>?=F'F
<47I>?=='<
<8>?@='<
D7I>J7L:)=
/0 02
, 0
7@>[email protected]
77I>?<<5A
7I8>EAD)<
76>E:<'6
7<>J77F
7=>[email protected]
7F>?=I:M7
7F>EAAM7
7HDC>EAF.7
*+-,.# &(
3.& 856A
7I>?6:A
6>G85FF
DC>?=DF
<>ED<)8
<>J7I8<
F>?F@<
AC>J7@C7
F>EA=ID
/0/1
/'0-/5-1
7@>G89=:
7I8>E:'<=
7=>J788
7HAC>?=5@@
85@>?<5=:
8!7I>?685=
85<>?6:=
85<>E:5AC8
88>?F56<
6<>B@5F=
DA!>B@!7@
<A!>KA5A<
=A!>BF5=@
F<>BF!7@
=<>B@5@6
FF>B@5=47
FA!>B@DF
=6>K:'647
Tabela 1: número de corretores de seguros ativos por ano no Brasil – Fonte: FENACOR
Por esta tabela, percebemos como este mercado vem crescendo constantemente
por quase uma década no Brasil.
Outro dado interessante de ser analisado é a participação dos diferentes ramos de
seguros dentro deste mercado. Dados de um estudo da Susep, Superintendência de
Seguros Privados, órgão do Ministério da Fazenda, revelaram que, durante o ano de
2003, o ramo de seguros com maior participação no mercado foi o de pessoas, que
respondeu por 42,95% do total. O ramo de automóvel aparece em segundo lugar em
participação, com 33,90% do mercado no ano. Observa-se que o seguro de automóveis é
um dos mais procurados pela maioria das pessoas, tendo-se em vista que o seguro de vida
e/ou de saúde, é fornecido por muitas empresas a seus funcionários, seja como um
benefício, seja por obrigação. Este ramo, movimentou quase 10,5 bilhões de reais no ano
de 2003.
Como podemos perceber, este mercado está em amplo crescimento no Brasil,
com o surgimento constante de novos tipos de seguros, novas seguradoras, algumas delas
gigantes multinacionais, e novos corretores de seguros. A participação de grandes bancos
neste mercado, alguns com suas próprias companhias de seguros, outros atuando como
corretoras, também vem fomentando bastante o setor.
6
Neste cenário de extrema competitividade, com a presença de gigantes no setor,
como bancos-corretoras, o pequeno e médio corretor de seguros precisa estruturar o seu
negócio muito bem, de modo a permanecer ativo no mercado. Para isso, um sistema que
centralize toda a sua produção é fundamental para sua organização, agilidade no acesso
às informações e extração de relatórios eficientes e úteis, que permitam uma grande
economia de tempo e dinheiro. Além disso, por se tratar de um ramo bastante específico,
com muitas características próprias e extremamente dinâmicas, uma vez que as
seguradoras constantemente modificam algumas de suas regras, fica difícil adotar uma
solução genérica de sistemas de gestão. Isto faz com que seja extremamente aconselhável
aos corretores de seguros que adquiram softwares específicos para corretoras de seguros,
fornecidos atualmente por algumas poucas empresas.
1.2. UMA OPÇÃO INOVADORA AO MERCADO
O mercado de sistemas para corretoras de seguros ainda é pequeno e não há uma
solução que possa ser utilizada em Linux. Uma das idéias deste projeto é implementar um
sistema que possa ser utilizado também no Linux, o que pode trazer uma economia de
licença de software para a corretora.
O sistema, cujo nome neste momento é Seguro Fácil, pretende reunir as principais
necessidades de uma corretora de seguros. Para levantar estas necessidades, foram feitas
entrevistas com dois corretores de seguros, atuantes neste mercado há mais de 15 anos.
Com isto, o sistema representa um modelo bastante fiel à realidade das corretoras de
seguros.
Entretanto, neste ambiente extremamente dinâmico, o sistema pode tornar-se
obsoleto com o tempo. Para sua viabilização comercial, seria interessante um
compromisso de manutenção periódica, fora os casos de bugs. Analisando este fato como
um fator positivo para um software que gere receita com upgrades e tendo em vista suas
características positivas, o produto passa a ser interessante de ser comercializado também
para empresas de software, que simpatizem com a filosofia deste trabalho e acreditem em
potenciais ganhos com o sistema.
7
1.3. ESCOPO DO SISTEMA
O sistema Seguro Fácil visa implementar as seguintes funcionalidades úteis a uma
corretora de seguros:
•
Cadastro de clientes;
•
Cadastro de corretores;
•
Cadastro de seguradoras;
•
Cadastro de propostas;
•
Controle das comissões;
•
Cadastro de sinistros.
Baseado nestes cadastros compomos um banco de dados ricos em informações e
relacionamentos. A partir dele, poderosos relatórios podem ser gerados a fim de trazer
grandes benefícios às corretoras de seguros.
O sistema possui uma interface simples e amigável, uma de suas principais
vantagens para o usuário. Os cadastros foram implementados utilizando o mesmo
princípio. Para cada um deles, implementamos as seguintes funções: incluir, localizar,
editar e excluir, de modo padrão e bastante intuitivo para que o tempo de familiarização
com os sistema seja o menor possível.
8
2. REGRAS DE NEGÓCIO
Abaixo, descrevemos as principais regras de negócio e que foram implementadas
no nosso sistema. O objetivo desta descrição aqui é fazer uma breve explicação das
pricipais características do mercado segurador presentes no Seguro Fácil, a fim de que
seja mais fácil o entendimento dos itens implementados no sistema.
Cliente:
•
O cliente possui um nome completo;
•
Ele pode ser uma pessoa física ou pessoa jurídica;
•
Em caso de pessoa física, o cliente:
o Pode ser do sexo masculino ou feminino;
o Possui um estado civil;
o Possui uma data de nascimento;
o Possui um CPF;
•
Em caso de pessoa jurídica, o cliente:
o Possui um CNPJ;
o Possui o nome da pessoa que está lidando com a corretora;
•
A cada cliente é atribuído um corretor, pessoa da corretora com o qual fechou o
seguro;
•
O cliente possui uma atividade;
9
•
Cada endereço é composto dos campos: nome da rua, número, complemento,
bairro, cidade, estado, CEP;
•
As seguintes informações de contato podem ser preenchidas: e-mail, telefone, fax,
celular;
•
Informações adicionais podem ser informadas em um campo livre para
observações sobre o cliente;
Seguradoras:
•
Dados básicos de uma Seguradora: nome, telefone, fax e nome da pessoa de
contato com a corretora.
•
A seguradora permite que o segurado divida o pagamento do seu seguro em um
certo número de parcelas até o qual ela ainda paga a comissão à corretora em uma
única parcela (pagamento integral).
•
A seguradora possui um número máximo de dias para pagar a comissão à
corretora, após receber o pagamento da parcela do seguro.
•
Este número máximo de dias pode diferir entre os pagamentos de comissão
integrais ou parcelados.
•
O corretor poderá adicionar informações extras sobre a corretora. Um campo livre
de observações é destinado a esse fim.
Proposta:
•
Proposta é um pedido de realização de um seguro que a Corretora faz à
Seguradora;
10
•
A proposta pode ser de 3 tipos: seguro novo, renovação de uma apólice ou
endosso de apólice;
o Apólice:
N
Quando a proposta é aprovada pela seguradora, é emitida uma
apólice para o seguro. O segurado recebe sua apólice diretamente
em casa, pelo correio, e a corretora recebe uma cópia,
normalmente em formato eletrônico pela Internet;
N
A apólice possui uma data de emissão;
o Renovação:
N
Assemelha-se a um seguro novo.
N
Possui um número da apólice a ser renovada e a seguradora
referente à esta apólice;
o Endosso:
N
O endosso é um documento que altera uma proposta de seguro em
N
vigência;
O endosso possui um número, informado pela Seguradora após sua
aprovação. A apólice endossada continua sendo identificada pelo
N
seu número, porém sabe-se que houve alterações por um endosso.
Por estar alterando uma apólice em vigência, a vigência do
endosso vai da data em que a proposta de endosso é aprovada até a
N
data do final da apólice endossada.
Um endosso pode ser dos tipos:
11
•
Sem movimento: caso não haja mudança no valor do
prêmio líquido do seguro em vigência;
•
Cobrança: caso haja um aumento no valor do prêmio
líquido;
•
Restituição: caso haja uma diminuição no valor do prêmio
líquido;
•
A proposta é referente a apenas uma Seguradora;
•
A proposta é relativa a apenas um cliente;
•
Um cliente pode ter várias propostas;
•
A proposta possui um ramo;
•
Ramos são os diversos tipos de seguros: automóvel, residencial, etc. Nesta versão
do sistema, implementamos as coberturas detalhadas apenas para o ramo de
automóveis;
•
A proposta possui uma data de entrada, que é a data em que a proposta foi
entregue à seguradora;
•
A proposta possui uma vigência, que é constituída das datas inicial e final da
validade da apólice do cliente;
•
A proposta possui o número de parcelas que os seguro será pago;
•
Para cada proposta é definido o percentual de comissão que a corretora irá receber
pelo seguro;
•
A proposta possuiu os seguintes valores:
12
o Prêmio líquido: é o valor total do seguro;
o Adicional: custo adicional que se queira acrescentar;
o Custo da apólice: é um custo fixo que a corretora define com um gasto
médio para a realização do seguro;
o IOF: Imposto sobre Operações Financeiras. Percentual cobrado em cima
do prêmio líquido, atualmente em torno de 7,42 %;
o Prêmio Total: é a soma de todos os valores anteriores. É o valor que o
cliente pagará à corretora.
•
A proposta possui uma lista de coberturas associadas a ela, que é diferente para
cada ramo de seguro;
o Seguro de Automóveis: especifica para as coberturas:
N
Itens do automóvel como modelo, placa, chassi, ano de fabricação,
ano do modelo e combustível;
N
Bônus: valor de desconto que o segurado possui em seu seguro;
N
Franquia: valor que o segurado terá que pagar caso utilize o seguro
para perdas parciais no veículo. Pode ser de 3 tipos: normal,
N
reduzida ou majorada;
Importância segurada para responsabilidade civil de danos
materiais de terceiros (IS RCF/DM): é o máximo valor que a
seguradora pagará para os danos materiais de terceiros em caso de
N
sinistro que os envolva;
Importância segurada para responsabilidade civil de danos
corporais de terceiros (IS RCF/DC): é o máximo valor que a
13
seguradora pagará para os danos corporais de terceiros em caso de
sinistro que os envolva.
N
Acessórios: são os vários acessórios do automóvel que podem ser
cobertos opcionalmente. São descritos por um nome e possuem um
valor associado.
o Outros ramos de seguros: não serão implementados detalhadamente nesta
versão, mas poderão ser incluídos por meio de texto livre.
Comissões:
•
As comissões são inerentes a uma dada proposta;
•
As comissões são separadas em parcelas. O número de parcelas de comissão
depende do número de vezes que o cliente quis dividir o pagamento do seguro e
do número máximo de parcelas em que o seguro é dividido para que a seguradora
pague a comissão de uma única vez.
•
Cada parcela possui os seguintes campos:
o Número da parcela: é o índice da parcela na quantidade total de parcelas
existentes para uma proposta;
o Data de vencimento: baseada na data de vencimento da parcela do seguro
do cliente;
o Parcela Líquida: valor da parcela para a Seguradora que o segurado vai
pagar. Não inclui os custos adicionais que o segurado vai pagar, como IOF
e custo da apólice. A comissão da corretora é calculada em cima desta
parcela;
o Comissão Devida: é o valor da comissão previsto para a corretora receber
pela parcela que o cliente irá pagar. É calculada aplicando-se o percentual
14
de comissão especificado na proposta em cima da parcela líquida que o
cliente pagará;
o Data Comissão: data em que a Seguradora pagou a comissão para a
corretora;
o Valor da comissão recebida: É o valor da comissão que a corretora
realmente recebeu, que pode diferir ligeiramente da comissão prevista,
dependendo de fatores diversos.
Sinistros:
•
Uma proposta pode ter zero, um ou mais sinistros;
•
Um sinistro possui um tipo (colisão, roubo, danos elétricos, incêndio, etc);
•
O sinistro possui um número de sinistro, que é fornecido pela seguradora após o
aviso do sinistro;
•
O sinistro possui uma data de ocorrência e uma data de aviso à seguradora;
•
O sinistro possui um valor, que é o valor do orçamento para o reparo do dano
causado pelo sinistro;
•
O sinistro pode estar em 3 situações diferentes: aceito, recusado ou pendente;
o Aceito: a seguradora indenizará o segurado pelo seu sinistro. Neste caso
deve-se informar a data da liquidação e o valor da liquidação;
o Recusado: a seguradora não pagará o sinistro do segurado. Neste caso
deve-se informar o motivo da recusa;
o Pendente: a seguradora ainda não definiu como proceder diante do
sinistro.
15
3. FUNDAMENTAÇÃO TEÓRICA
3.1. ANÁLISE DO SISTEMA
A análise de sistemas tem por objetivo estabelecer os objetivos do projeto, de
forma que usuários e programadores entendam de modo único as características que o
sistema terá. Uma vez feita e entendida a análise, a programação do sistema tende a
atender perfeitamente os requisitos estabelecidos, de modo a se evitar um posterior retrabalho devido a divergências entre o que foi implementado e o que se esperava do
sistema.
Este projeto foi elaborado utilizando-se a análise estruturada de sistemas. Esta
escolha foi feita pela simplicidade que esta técnica oferece para a especificação dos
processos. Através de diagramas, modela-se de maneira fácil de se entender o que o
sistema irá realizar e como os dados serão transformados.
3.2. ARQUITETURA EM CAMADAS
A divisão de um projeto em camadas é uma técnica que traz diversas vantagens
para a construção do sistema. Com ela, isolamos a programação e os problemas de
diferentes partes do sistema. Podemos utilizar produtos de terceiros, como um banco de
dados comercial, de modo a não nos preocuparmos em como lidaremos com os dados,
além de aumentar a qualidade do produto em desenvolvimento. Ainda, a arquitetura em
camadas permite uma melhor divisão do trabalho, conseguindo-se se reunir as diferentes
partes do trabalho de modo fácil.
Neste projeto, foi utilizada a arquitetura em 2 camadas: banco de dados e
aplicação. Entretanto, como veremos no projeto, a camada de aplicação possui algumas
facilidades que permite uma certa divisão do trabalho entre as regras de negócios e a
interface gráfica.
Nesta arquitetura em duas camadas, pode-se hospedar o banco de dados em uma
máquina diferente daquela que roda a aplicação. Isto introduz duas grandes vantagens:
16
•
Divisão do processamento entre dois computadores: pode aumentar o
desempenho do sistema, caso o computador que irá rodar o sistema tenha recursos
limitados. Além disso, a empresa que utilizará o sistema pode já possuir um
computador hospedanado um SGBD1, de modo que apenas será necessário criar
mais uma instância para o novo sistema.
•
Facilidades para rodar o sistema em rede: instalando-se o sistema nos
computadores onde se deseja executá-lo e criando-se um mapeamento de rede
para o computador que hospeda o banco de dados, podemos ter vários programas
rodando simultaneamente, compartilhando a mesma base de dados. Para isto,
entretanto, é aconselhável que o sistema possua algumas proteções para evitar
problemas, como acesso simultâneo aos mesmos registros.
1
Sistema Gerenciador de Banco de Dados
17
4. ANÁLISE ESTRUTURADA
A análise estruturada de sistemas consiste de um conjunto de técnicas e
ferramentas que auxiliam o desenvolvimento de um projeto, capazes de levar usuários,
analistas e projetistas a formarem um quadro claro e geral do sistema e de como suas
partes se encaixam para atender às necessidades daqueles que dele precisam. A
construção de um modelo lógico do sistema, onde seus fundamentos sejam perfeitamente
descritos, é fundamental para o sucesso do projeto. É importante notar que o êxito neste
tipo de atividade não depende apenas da qualidade da implementação envolvida, mas
também do perfeito atendimento às solicitações do cliente.
A análise estruturada utiliza gráficos para a representação das funções (DFDs2),
das informações (DER3) e das dependências de estados (DTE4).
4.1. Modelo conceitual
O modelo conceitual representa as entidades e os relacionamentos do sistema de
forma a se entender melhor as especificações que o sistema pretende atender. Ele
descreve através de blocos que representam as entidades que compõe o sistema e de
como eles se relacionam. O modelo conceitual descrito desta forma é também conhecido
como DER.
2
Diagrama de Fluxo de Dados
Diagrama de Entidades e Relacionamentos
4
Diagrama de Transição de Estados
3
18
Figura 1: DER do Sistema
4.1.1. Dicionário de dados das entidades do modelo conceitual
A seguir descreveremos os atributos que compõe as entidades do modelo
conceitual do sistema.
•
Entidade Corretor:
o Código do corretor
o Nome do corretor
19
•
Entidade Cliente
o Código do cliente
o Nome do cliente
o Corretor que atende ao cliente
o Principal atividade profissional do cliente
o Telefone
o Fax
o Celular
o E-mail
o Observaões
•
Entidade pes_fisica
o Código da pessoa física
o Data de nascimento
o CPF
o Código do estado civil
o Código do sexo
•
Entidade estado_civil
o Código do Estado Civil
o Nome do Estado Civil
•
Entidade sexo
o Código do sexo
o Nome do sexo
•
Entidade pes_jurídica
o Código da pessoa jurídica
o CNPJ
o Nome da pessoa na empresa cliente que lida com com a corretora
20
•
Entidade endereco
o Código do endereço
o Código do cliente referente ao endereço
o Código do CEP
o Número da residência do cliente
o Complemento do endereço
•
Entidade estado
o Código do estado
o Nome do estado
•
Entidade cidade
o Código da cidade
o Código do estado ao qual pertence a ciadade
o Nome da cidade
•
Entidade bairro
o Código do bairro
o Código da cidade ao qual pertence o bairro
o Nome do bairro
•
Entidade rua
o Código da rua
o Código do bairro ao qual pertence a rua
o Nome da rua
•
Entidade cep
o Código do CEP
o Código da rua do CEP
o Código do bairro do CEP
o Código da cidade do CEP
21
o Valor do CEP
•
Entidade seguradora
o Código da seguradora
o Nome da seguradora
o Telefone da seguradora
o Fax da seguradora
o Nome do principal contato na seguradora
o Número máximo de dias que a seguradora leva para emitir a apólice após
a data de entrada da proposta
o Número máximo de parcelas que o cliente pode dividir o pagamento do
seu seguro para que a corretora possa receber a sua comissão de uma única
vez.
o Número máximo de dias que a seguradora demora para pagar a comissão à
corretora após receber o pagamento do cliente.
o Número máximo de dias que a seguradora demora para pagar a parcela de
comissão à corretora após receber o pagamento da parcela cliente.
o Observações
•
Entidade ramo
o Código do ramo de seguro
o Nome do ramo
•
Entidade proposta
o Código da proposta
o Código da seguradora referente à proposta
o Código do cliente referente à proposta
o Código do ramo do seguro
o Número da proposta
o Data de entrada da proposta na seguradora
o Data de início da vigência do seguro
o Data de fim da vigência do seguro
22
o Número de parcelas que o cliente dividirá o pagamento do seguro
o Valor do prêmio líquido, ou seja, o preço que a seguradora cobrará pelo
seguro
o Valor adicional que a corretora queira acrescentar ao seguro
o Valor do custo da apólice
o Valor acrescido pelo IOF, Imposto sobre Operações Financeiras,
obrigatório nese ramo de atividade
o Valor do prêmio total, a soma de todos os valores cobrados ao cliente
o Valor da primeira parcela
o Valor das demais parcelas
o Percentual da comissão da corretora para o seguro
o Observações
•
Entidade apolice
o Código da apólice
o Código da proposta referente à apólice
o Número da apólice
o Data de emissão da apólice
•
Entidade renovacao
o Código da renovação
o Código da proposta referente à renovação
o Código da apólice renovada
•
Entidade tipo_endosso
o Código do tipo de endosso
o Nome do tipo de endosso
•
Entidade endosso
o Código do endosso
o Código da proposta referente ao endosso
o Código da apólice endossada
23
o Código do tipo de endosso
o Número do endosso
•
Entidade custo_fixo
o Código do custo_fixo
o Percentual default definido para o IOF
o Valor default definido para o custo da apólice
•
Entidade cobertura
o Código da cobertura
o Código da proposta referente à cobertura
•
Entidade marca
o Código da marca de automóvel
o Nome da marca de automóvel
•
Entidade modelo
o Código do modelo do automóvel
o Código da marca referente ao modelo
o Nome do modelo
o Capacidade
•
Entidade combustível
o Código do combustível
o Nome do combustível
•
Entidade tipo_franquia
o Código do tipo da franquia
o Nome do tipo da franquia
•
Entidade cobertura_automovel
o Código da cobertura de automóvel
o Código do modelo
24
o Nome do proprietário, que pode não ser o cliente do seguro, em alguns
casos
o Placa
o Chassi
o Código do combustível
o Código do tipo da franquia da cobertura
o Valor da franquia
o Ano de fabricação
o Ano do modelo
o Valor do bônus
o Importância segurada para a carroceria
o Importância segurada para responsabilidade civil de danos materiais de
terceiros
o Importância segurada para responsabilidade civil de danos corporais de
terceiros
•
Entidade acessorio
o Código do acessório segurado à parte
o Código da cobertura do automóvel referente ao acessório segurado
o Nome do acessório
o Valor do acessório
•
Entidade cobertura_outro
o Código da cobertura para outros ramos de seguro
o Descrição das coberturas
•
Entidade parcela_comissao
o Código da parcela
o Código da proposta referente à parcela de comissão
o Número da parcela
o Data de vencimento da parcela, ou seja, a data normal que a seguradora
deve pagar a parcela à corretora
25
o Valor da comissão devida à corretora
•
Entidade parcela_recebida
o Código da parcela recebida
o Código da parcela devida
o Valor da comissão recebida pela corretora
o Data de recebimento da comissão
•
Entidade tipo_sinistro
o Código do tipo do sinistro
o Nome do tipo do sinistro
•
Entidade sinistro
o Código do sinistro
o Código da proposta referente ao sinistro
o Código do tipo do sinistro
o Código da seguradora
o Descrição do evento
o Número do sinistro
o Data da ocorrência
o Data do aviso
o Valor do sinistro
o Observações
•
Entidade aceitacao
o Código da aceitação
o Data da aceitação
o Valor da liquidação
•
Entidade recusa
o Código da recusa
o Descrição do motivo da recusa do pagamento do sinistro
26
•
Entidade tipo_usuario
o Código do tipo de usuário
o Nome do tipo de usuário
•
Entidade usuario
o Código do usuario
o Código do tipo de usuário
o Nome do usuário
o Login
o Senha
4.2. DIAGRAMAS DE FLUXO DE DADOS
Na análise estruturada, o primeiro DFD desenvolvido é o de contexto, que
descreve o sistema como um todo, sem se preocupar com detalhes. A seguir, este é
explodido por várias vezes, até que se chegue aos processos primitivos, que demonstram
uma grande riqueza de detalhes. Ou seja, a análise estruturada possui uma arquitetura
conhecida como top-down, onde partimos dos requisitos básicos para chegar aos detalhes
do sistema. Após este processo, todas as funções do sistema devem estar completamente
entendidas por todas as partes nele envolvidas.
Nos items a seguir apresentamos os DFDs na ordem como foi explicado acima.
Os processos primitivos são representados por círculos não-preendhidos, enquanto os
demais, por círculos preenchidos.
27
4.2.1. DFD de contexto ou de nível 0
Figura 2: DFD de contexto
Os fluxos de dados acima aparecerão novamente em DFDs seguintes e serão
explicados posteriormente, com a descrição dos dados que os compõe.
28
4.2.2. DFD de nível 1
Figura 3: DFD de nível 1
O Processo 6, Configurar_BD, representa um processo primitivo, ou seja, já se
encontra em seu grau máximo de detalhe, não havendo a necessidade de ser explodido
em outros DFDs.
29
4.2.3. DFDs nível 2
Os DFDs a seguir são a primeira explosão dos processos apresentados no DFD de
nível 1.
4.2.3.1. Gerenciar_Cliente_Corretor
Figura 4: DFD de nível 2 explosão do processo Gerenciar_Proposta
30
4.2.3.2. Gerenciar_Producao
Figura 5: DFD de nível 2 explosão do processo Gerenciar_Producao
31
4.2.3.3. Gerenciar_Sinistro
Figura 6: DFD de nível 2 explosão do processo Gerenciar_Sinistro
32
4.2.3.4. Gerenciar_Seguradora
Figura 7: DFD de nível 2 explosão do processo Gerenciar_Seguradora
33
4.2.3.5. Gerenciar_Usuario
Figura 8: DFD de nível 2 explosão do processo Gerenciar_Usuario
34
4.2.4. DFDs nível 3
4.2.4.1. Gerenciar_Proposta
Figura 8: DFD de nível 3 explosão do processo Gerenciar_Proposta
35
4.2.4.2. Gerenciar_Comissao
Figura 9: DFD de nível 3 explosão do processo Gerenciar_Comissao
36
4.2.4.3. Gerenciar_Automovel
Figura 9: DFD de nível 3 explosão do processo Gerenciar_Automovel
37
4.2.5. Descrição dos fluxos de dados:
A seguir descreveremos os fluxos de dados não explicitados nos DFD’s acima:
•
d_cliente: composto de todos os dados relacionados ao cliente, conforme descrito
no modelo conceitual.
•
d_corretor: composto do nome do corretor, único atributo da entidade corretor
nesta versão do Seguro Fácil. Futuramente, podem ser adicionadas outras
informações sobre os corretores.
•
d_proposta: composto de todos os dados relacionados à proposta, conforme
descrito no modelo conceitual.
•
d_comissao: composto das informações das parcelas de comissao devidas e das
parcelas de comissão já recebidas pela corretor, conforme descrito no modelo
conceitual.
•
d_automovel: composto dos dados de marcas e modelos de automóveis descritos
no modelo conceitual.
•
d_modelo: composto dos dados de modelos apenas, conforme descrito no modelo
conceitual.
•
d_sinistro: composto de todos os dados relacionados a sinistros, conforme
descrito no modelo conceitual.
•
d_seguradora: composto de todos os dados relacionados à seguradora, conforme
descrito no modelo conceitual.
•
d_usurario: composto do nome do usuário, seu login e sua senha inicial.
•
d_autenticação: composto do login e a senha do usuário.
38
•
d_nova_senha: composto da nova senha desejada pelo usuário, digitada duas
vezes, para a verificação pelo sistema.
•
lista_cliente: composto de uma lista com o nome de todos os cliente.
•
lista_corretor: composto de uma lista com o nome de todos os corretores
cadastrados.
•
lista_proposta: composto de uma lista de todas as propostas, contendo as
seguintes informações:
o código da proposta
o cliente referente à proposta
o número da proposta
o número da apólice, caso haja
o seguradora referente à proposta
o data de entrada da proposta
•
lista_marcas: composto de uma lista com o nome de todas as marcas cadastradas.
•
lista_modelo: composto de uma lista de todos os modelos, contendo o nome do
modelo e a marca a que pertence
•
lista_sinistro: composto de uma lista de todos os sinistros, contendo as seguintes
informações:
o código do sinistro
o código da proposta referente ao sinistro
o cliente referente ao sinistro
o modelo do carro, se for seguro de automóveis
•
lista_seguradora: composto de uma lista com o nome de todas as seguradoras
cadastradas.
39
4.2.6. Descrição dos depósitos:
Os depósitos de dados dos DFDs correspondem exatamente às entidades
apresentadas no modelo conceitual.
4.2.7. Descrição dos terminadores:
Os terminadores dos DFDs correspondem aos tipos de usuários que o sistema
poderá ter. A descrição dos tipos de usuários e suas potencialidades é a seguinte:
•
Administrador: primeiro usuário a ser criado no sistema, no momento em que ele
é executado pela primeira vez. Possui permissão para criar ou editar outros
usuários, bem como alterar configurações relativas a banco de dados. Também
tem acesso, como leitura, aos registros do sistema.
•
Operador: usuário que tem acesso a modificar os registros do sistema, com
excessão das funções atribuídas ao administrador mencionadas anteriormente.
•
Leitor: usuário que possui apenas o direito de leitura dos dados.
Estas categorias de usuário fazem com que o sistema possua um bom grau de
segurança dos dados, uma vez que só terão acesso a modificar os registros pessoas de
confiança do Administrador. Além disso, para evitar problemas de descuido do usuário
Administrador, ele não possui direito de escrita, o que o obriga a criar uma conta de
operador para si e a trabalhar com ela, caso queira modificar os registros.
Assim, para que o sistema possa ser utilizado plenamente é necessário que se crie,
pelo menos, duas contas de usuários, uma de administrador e outra de operador.
40
5. O PROJETO
5.1. CARACTERÍSTICAS-CHAVE
Apresentamos aqui algumas características de implementação consideradas no
projeto que tornam o sistema interessante do ponto de vista do desenvolvedor. Elas foram
escolhidas levando-se em conta, principalmente a facilidade de manutenção e a
portabilidade do software. Estas características acrescentam ao sistema uma grande
vantagem competitiva, em caso de sua comercialização para uma empresa da área de
software.
5.1.1. A interface gráfica
Para a confecção da interface gráfica, foi utilizado o utilitário wxGlade. Este
utilitário é gratuito e serve para o design das telas gráfica de sistemas desenvolvidos com
a wxWidgets. Com ele, podemos utilizar blocos gráficos para compor nossas interfaces
gráficas em um ambiente bastante amigável. De fato, o desenvolvimento das interfaces
gráficas programando-se diretamente com a wxWidgets é um trabalho difícil e árduo.
Além disso, é muito mais fácil obter um resultado elegante utilizando o ambiente gráfico
da wxGlade do que programando diretamente.
A wxGlade pode gerar o código em 4 formatos (linguagens) distintos: pynton,
perl, C++ ou XRC. Neste projeto, onde optou-se pela utilização da linguagem C++, as
duas últimas opções poderiam ter sido utilizada. Considerando-se as facilidades para
desenvolvimento e manutebilidade do sistema, a opção do XRC, sigla para XML-based
Resource System, foi considerada a mais interessante. Utilizando o XRC, a nossa
interface gráfica é descrita em arquivos-texto em um formato XML que a wxWidgets
saiba como utilizar. A interface gráfica pode estar todo descrita em um único arquivo
XRC ou em vários. Construindo-se diversos arquivos XRC, o design das interfaces se
torna mais fácil, além de introduzir diversas vantagens para a programação. Estes
arquivos são carregados pelo programa em tempo de execução, o que fornece ao sistema
a facilidade de ser aperfeiçoada a interface gráfica após o programa já ter sido compilado.
41
5.1.2. Banco de Dados genérico
A bilbioteca SQLAPI permite a utilização de qualquer banco de dados baseado na
linguagem SQL5 com a mesma facilidade de programação. Assim, a opção por esta
biblioteca garante ao sistema uma maior adaptabilidade a diferentes corretoras, que
podem ter preferência por diferentes bancos de dados.
No entanto, a SQLAPI não traduz a sintaxe SQL de comandos que possam diferir
em suas sintaxes entre os diferentes tipos de Banco de Dados. Por exemplo: a sintaxe
para se criar um atributo que se auto-incremente quando for inserido um novo item no
registro, funcionalidade muito utilizada na implementação dos atributos de identificador
único, difere do MySQL para o MS SQL Server. Neste exemplo:
•
Sintaxe do MySQL: nome_atributo INT AUTO_INCREMENT
•
Sintaxe do SQL Server: nome_atributo INT IDENTITY
Para que o sistema fosse capaz de lidar realmente com qualquer Banco de Dados
baseado em SQL, utilizamos o conceito de late bind, onde são definidos métodos virtuais
genéricos, enquanto os métodos para bancos de dados específicos são implementados
separadamente. A ligação com o método apropriado a ser executado é realizado de
acordo com o banco de dados escolhido para o sistema, no momento da execução do
programa.
Neste projeto, foram desenvolvidos os métodos para o MySQL e o SQL Server.
Porém, com a arquitetura projetada, pode-se implementar os métodos para a utilização de
outros bancos de dados no futuro, como o Oracle. Todos os métodos das classes de banco
de dados foram implementados em um arquivo separado para cada tipo de banco, o que
facilita o trabalho de se acrescentar um novo tipo de banco de dados. Entretanto a
recompilação do projeto será necessária neste caso.
5
Struct Query Language
42
5.1.3. Código-fonte comentado e em inglês
Com o atual mercado globalizado, é interessante notar que não é conveniente a
programação em um idioma de uso restrito a poucos países, como é o caso do português.
Apesar das regras na área de seguros variarem consideravelmente de país para país, não
se pode desprezar a possibilidade de pessoas ou grupos do exterior se interessarem pelo
nosso sistema. Asim, foi utilizado a programação em inglês, com comentários por todo o
código, pensando-se que não apenas o sistema pronto para ser executado é um produto,
mas também o seu código fonte pode ser.
A excessão ficou por conta do modelo do banco de dados, que foi desenvolvido
em português, visando a facilitar a compreensão deste projeto tanto por professores nele
envolvidos quanto por possíveis clientes.
5.2. ARQUITETURA DO SISTEMA
A arquitetura escolhida para o nosso sistema foi de duas camadas (two-tier):
banco de dados e aplicação. Porém, com a utilização da ferramenta XRC para descrição
da interface gráfica, em vez de desenvolver a interface em código C++ a ser compilado,
consideramos que a camada de aplicação está isolada logicamente da apresentação. A
figura abaixo descreve a arquitetura utilizada:
Banco de dados
Camada 1
SQLAPI++
Regras de negócio
XML-based resource system
Camada 2
Interface gráfica descrita
em arquivos XML
Figura 10: camadas envolvidas no projeto
43
Esta divisão lógica se dá porque com o XRC, podemos refazer a interface gráfica,
e gerar um arquivo no formato apropriado. Assim, basta substituir o arquivo .xrc antigo
pelo novo, que o sistema possuirá uma nova aparência. Entretanto, é necessário que a
nova interface possua os campos definidos do mesmo modo que a anterior, pois eles são
utilizados na camada de aplicação. O Anexo B contém a descrição das interfaces, que
deve ser utilizada para a confecção das interfaces.
5.3 MODELOS LÓGICO DOS DADOS
O modelo lógico dos dados foi desenvolvido utilizando-se o software ErWin, da
Computer Associates e encontra-se no Apêndice A, ao final do documento.
5.3.1. Descrição das entidades e seus atributos:
5.3.1.1. Entidade corretor
Finalidade: Consiste nos corretores da corretora ou funcionários quaisquer que também
possam vender seguros na corretora. Eles serão listados ao incluir um cliente para que
seja escolhido um corretor ao qual o cliente está mais ligado, com o qual normalmente
fecha o seguro, o que é uma prática comum neste mercado.
Atributo identificador único:
Código do corretor
•
Definição: código do corretor, identificando-o unicamente. Usado apenas para uso
interno do sistema.
•
Domínio: numérico
•
Abreviatura padrão: id_funcionario
•
Regras de validação: Não há, pois é atribuído automaticamente pelo sistema.
44
Atributos:
Nome do corretor
•
Definição: contém o nome do corretor.
•
Domínio: texto
•
Abreviatura padrão: no_corretor
•
Regras de validação: Qualquer seqüência de caracteres alfabéticos. Verifica-se a
duplicidade ou seja, se já foi cadastrado um corretor com o mesmo nome.
5.3.1.2. Entidade cliente
Finalidade: Consiste nos clientes que a corretora possui ou pode vir a ter no futuro.
Atributo identificador único:
Código do cliente
•
Definição: código do cliente, identificando-o unicamente.
•
Domínio: numérico
•
Abreviatura padrão: id_cliente
•
Regras de validação: Não há, pois é atribuído automaticamente.
Atributos:
Nome do cliente
•
Definição: contém o nome do cliente.
•
Domínio: texto
45
•
Abreviatura padrão: no_cliente
•
Regras de validação: Qualquer seqüência de caracteres alfabéticos. Não pode ser
nulo. Verifica-se a duplicidade.
Corretor
•
Definição: contém o corretor que costuma atender o cliente.
•
Domínio: numérico
•
Abreviatura padrão: id_corretor
•
Regras de validação: Somente um valor válido contido na tabela corretor no
campo id_corretor.
Atividade
•
Definição: contém a atividade profissional do cliente.
•
Domínio: texto
•
Abreviatura padrão: de_atividade
•
Regras de validação: Qualquer seqüência de caracteres.
Telefone
•
Definição: contém o telefone do cliente.
•
Domínio: texto
•
Abreviatura padrão: nu_telefone
•
Regras de validação: Qualquer seqüência de caracteres.
46
Fax
•
Definição: contém o número do fax do cliente
•
Domínio: texto
•
Abreviatura padrão: nu_fax
•
Regras de validação: Qualquer seqüência de caracteres.
Celular
•
Definição: contém o número do celular do cliente
•
Domínio: texto
•
Abreviatura padrão: nu_celular
•
Regras de validação: Qualquer seqüência de caracteres.
E-mail
•
Definição: contém o e-mail do cliente.
•
Domínio: texto
•
Abreviatura padrão: de_email
•
Regras de validação: O e-mail deve estar no formato dentro do padrão utilizado
na Internet.
Observacao
•
Definição: contém observações extras quaisquer sobre o cliente.
47
•
Domínio: texto
•
Abreviatura padrão: de_observação
•
Regras de validação: Qualquer seqüência de caracteres.
5.3.1.3. Entidade pes_fisica
Finalidade: consiste nos clientes que são pessoa física
Atributo identificador único:
Código da pessoa física
•
Definição: código da pessoa física, identificando-a unicamente. É um alias para o
código do cliente, presente na entidade cliente.
•
Domínio: numérico
•
Abreviatura padrão: id_pes_fisica
•
Regras de validação: não há, pois trata-se da replicação do código do cliente para
esta entidade.
Atributos:
Data de nascimento
•
Definição: contém a data de nascimento do cliente
•
Domínio: data
•
Abreviatura padrão: dt_nascimento
48
•
Regras de validação: A data deve estar no formato dd/mm/aaaa. Foi criada uma
função para realizar esta verificação.
CPF
•
Definição: contém o CPF do cliente
•
Domínio: texto
•
Abreviatura padrão: nu_cpf
•
Regras de validação: O CPF deve estar dentro do formato exigido pela legislação
brasileira.
Sexo
•
Definição: contém o sexo do cliente
•
Domínio: numérico
•
Abreviatura padrão: co_sexo
•
Regras de validação: não pode ser nulo em casos de cliente pessoa física.
Estado Civil
•
Definição: contém o estado civil do cliente
•
Domínio: numérico
•
Abreviatura padrão: co_estado_civil
•
Regras de validação: não pode ser nulo em cliente pessoa física.
49
5.3.1.4. Entidade pes_jurídica
Finalidade: consiste nos clientes que são pessoa jurídica
Atributo identificador único:
Código da pessoa jurídica
•
Definição: contém o código da pessoa jurídica. É um alias para o código do
cliente, presente na entidade cliente.
•
Domínio: numérico
•
Abreviatura padrão: id_pes_juridica
•
Regras de validação: não há, pois trata-se da replicação do código do cliente para
esta entidade.
Atributos:
CNPJ
•
Definição: contém o CNPJ da empresa cliente.
•
Domínio: texto
•
Abreviatura padrão: nu_cnpj
•
Regras de validação: qualquer seqüência de caracteres alfa-numéricos
Nome do principal contato
•
Definição: contém o nome da pessoa da empresa cliente que faz contato com a
corretora.
50
•
Domínio: texto
•
Abreviatura padrão: no_principal_contato
•
Regras de validação: qualquer seqüência de caracteres
5.3.1.5. Entidade endereco
Finalidade: consiste no endereço do cliente
Atributo identificador único:
Código do endereço
•
Definição: código do endereço, identificando-o unicamente.
•
Domínio: numérico
•
Abreviatura padrão: id_endereco
•
Regras de validação: Não há, pois é atribuído automaticamente.
Atributos:
Código do cliente
•
Definição: contém o código do cliente que possui o endereço.
•
Domínio: numérico
•
Abreviatura padrão: id_cliente
•
Regras de validação: Somente um valor válido contido na tabela cliente no campo
id_cliente.
51
Nome da rua
•
Definição: contém o nome da rua do endereço do cliente.
•
Domínio: texto
•
Abreviatura padrão: no_rua
•
Regras de validação: Qualquer seqüência de caracteres
Número
•
Definição: contém o número da rua do anunciante
•
Domínio: numérico
•
Abreviatura padrão: nu_numero
•
Regras de validação: somente caracteres numéricos.
Complemento
•
Definição: contém o complemento do endereço do cliente
•
Domínio: texto
•
Abreviatura padrão: de_complemento
•
Regras de validação: Qualquer seqüência de caracteres
Bairro
•
Definição: contém o bairro do endereço do cliente.
•
Domínio: texto
52
•
Abreviatura padrão: no_bairro
•
Regras de validação: Qualquer seqüência de caracteres.
Cidade
•
Definição: contém a cidade do endereço anunciante.
•
Domínio: texto
•
Abreviatura padrão: no_cidade
•
Regras de validação: Qualquer seqüência de caracteres.
Estado
•
Definição: contém o estado do endereço do cliente
•
Domínio: texto
•
Abreviatura padrão: co_estado
•
Regras de validação: Qualquer valor escolhido da lista contendo os estados da
federação.
CEP
•
Definição: contem o cep do endereço do anunciante
•
Domínio: texto
•
Abreviatura padrão: de_cep
•
Regras de validação: Verifica-se se o formato do CEP está dentro do formato
exigido pelos correios.
53
5.3.1.6. Entidade seguradora
Finalidade: consiste nas companhias seguradoras com as quais a corretora trabalha.
Atributo identificador único:
Código da seguradora
•
Definição: código da seguradora, identificando-a unicamente
•
Domínio: numérico
•
Abreviatura padrão: id_seguradora
•
Regras de validação: Não há, pois é atribuído automaticamente pelo sistema.
Atributos:
Nome da seguradora
•
Definição: contém o nome da seguradora.
•
Domínio: texto
•
Abreviatura padrão: no_seguradora
•
Regras de validação: Qualquer seqüência de caracteres.
Número máximo de parcelas para o pagamento integral
•
Definição: contém o número máximo de parcelas que o cliente pode dividir o
pagamento do seu seguro para que a corretora possa receber a sua comissão de
uma única vez. Caso o número de parcelas do seguro seja maior do que este, a
corretora receberá suas comissões com o mesmo número de parcelas que o cliente
dividiu seu pagamento.
54
•
Domínio: numérico
•
Abreviatura padrão: nu_parcelas_para_pgto_integral
•
Regras de validação: Somente caracteres numéricos.
Número de dias para atraso da comisão integral
•
Definição: contém o número máximo de dias que a seguradora pode levar para
liberar a comissão à corretora, a partir da data de vencimento, em caso de
comissão em uma única parcela.
•
Domínio: numérico
•
Abreviatura padrão: nu_dias_atraso_comissao_integral
•
Regras de validação: Somente caracteres numéricos.
Número de dias para atraso da comisão parcelada
•
Definição: contém o número máximo de dias que a seguradora pode levar para
liberar a comissão à corretora, a partir da data de vencimento, em caso de
comissão parcelada
•
Domínio: numérico
•
Abreviatura padrão: nu_dias_atraso_comissao_integral
•
Regras de validação: Somente caracteres numéricos
Observação
•
Definição: contém observações quaisquer sobre a seguradora.
•
Domínio: texto
55
•
Abreviatura padrão: de_observacao
•
Regras de validação: Qualquer seqüência de caracteres.
5.3.1.7. Entidade proposta
Finalidade: consiste nas propostas feitas pela corretora.
Atributo identificador único:
Código da proposta
•
Definição: código da proposta, identificando-a unicamente.
•
Domínio: numérico
•
Abreviatura padrão: id_proposta
•
Regras de validação: Não há, pois é atribuído automaticamente pelo sistema.
Atributos:
Código da seguradora
•
Definição: contém o código da seguradora a que a proposta se refere.
•
Domínio: numérico
•
Abreviatura padrão: id_seguradora
•
Regras de validação: Somente um valor válido contido na tabela seguradora no
campo id_seguradora
Código do cliente
•
Definição: contém o código do cliente da proposta.
56
•
Domínio: numérico
•
Abreviatura padrão: id_cliente
•
Regras de validação: Somente um valor válido contido na tabela cliente no campo
id_cliente
Número da proposta
•
Definição: contém o número da proposta
•
Domínio: numérico
•
Abreviatura padrão: nu_proposta
•
Regras de validação: Somente caracteres numéricos.
Ramo
•
Definição: contém o nome do ramo de seguros da proposta
•
Domínio: texto
•
Abreviatura padrão: no_ramo
•
Regras de validação: Qualquer seqüência de caracteres.
Data de entrada
•
Definição: contém a data que a proposta é cadastrada no sistema.
•
Domínio: data
•
Abreviatura padrão: dt_entrada
57
•
Regras de validação: Função que verifica se a data está no formato dd/mm/aaaa.
Data de início da vigência
•
Definição: contém a data do início da vigência do seguro ao qual a proposta se
refere.
•
Domínio: data
•
Abreviatura padrão: dt_ini_vigencia
•
Regras de validação: Função que verifica se a data está no formato dd/mm/aaaa.
Data de fim da vigência
•
Definição: contém a data do final da vigência do seguro ao qual a proposta se
refere.
•
Domínio: data
•
Abreviatura padrão: dt_fim_vigencia
•
Regras de validação: Função que verifica se a data está no formato dd/mm/aaaa.
Número de parcelas do o pagamento do seguro
•
Definição: contém o número de parcelas que o cliente irá dividir o pagamento do
seu seguro
•
Domínio: numérico
•
Abreviatura padrão: nu_parcelas_pgto_seguro
•
Regras de validação: somente caracteres numéricos
58
Valor do Prêmio Líquido
•
Definição: contém o valor que a seguradora irá cobrar pelo seguro
•
Domínio: numérico
•
Abreviatura padrão: vr_premio_liquido
•
Regras de validação: Função que verifica se o valor está no formato monetário.
Valor adicional
•
Definição: contém um valor adicional que pode ser acrescido pela corretora.
•
Domínio: numérico
•
Abreviatura padrão: vr_adicional
•
Regras de validação: Função que verifica se o valor está no formato monetário.
Valor do custo da apólice
•
Definição: contém um valor que a corretora considera para o custo da apólice.
•
Domínio: numérico
•
Abreviatura padrão: vr_custo_apolice
•
Regras de validação: Função que verifica se o valor está no formato monetário.
Valor do IOF
•
Definição: contém o valor do IOF para aquele seguro.
•
Domínio: numérico
59
•
Abreviatura padrão: vr_iof
•
Regras de validação: Função que verifica se o valor está no formato monetário.
Valor do prêmio total
•
Definição: contém o valor total a ser pago pelo cliente.
•
Domínio: numérico
•
Abreviatura padrão: vr_premio_total
•
Regras de validação: Função que verifica se o valor está no formato monetário.
Valor da primeira parcela
•
Definição: contém o valor da primeira parcela a ser paga pelo cliente.
•
Domínio: numérico
•
Abreviatura padrão: vr_primeira_parcela
•
Regras de validação: Função que verifica se o valor está no formato monetário.
Valor das demais parcelas
•
Definição: contém o valor das demais parcelas a serem pagas pelo cliente.
•
Domínio: numérico
•
Abreviatura padrão: vr_demais_parcelas
•
Regras de validação: Função que verifica se o valor está no formato monetário.
Percentual da comissão
60
•
Definição: contém o percentual que a corretora ganhará pelo seguro.
•
Domínio: numérico
•
Abreviatura padrão: pc_comissao
•
Regras de validação: somente números inteiros ou em ponto flutuante.
Observação
•
Definição: contém observações quaisquer da corretora para a proposta
•
Domínio: texto
•
Abreviatura padrão: id_observação
•
Regras de validação: Qualquer seqüência de caracteres.
5.3.1.8. Entidade apolice
Finalidade: consiste na apolice que é emitida pela seguradora caso ela aprove a proposta
Atributo identificador único:
Código da apólice
•
Definição: código da apólice, identificando-a unicamente.
•
Domínio: numérico
•
Abreviatura padrão: id_apolice
•
Regras de validação: não há, pois é atribuído automaticamente pelo sistema.
61
Atributos:
Código da proposta
•
Definição: contém o código da proposta que deu origem à apólice.
•
Domínio: numérico
•
Abreviatura padrão: id_proposta
•
Regras de validação: Somente um valor válido contido na tabela proposta no
campo id_proposta.
Código da seguradora
•
Definição: contém o código da seguradora que está realizando o seguro.
•
Domínio: numérico
•
Abreviatura padrão: id_seguradora
•
Regras de validação: Somente um valor válido contido na tabela cliente no campo
id_cliente.
Número da apólice
•
Definição: contém o número da apólice, que é fornecido pela seguradora.
•
Domínio: numérico
•
Abreviatura padrão: nu_apolice
•
Regras de validação: somente caracteres numéricos.
62
Data de emissão
•
Definição: contém a data em que a apólice foi emitida.
•
Domínio: data
•
Abreviatura padrão: dt_emissao
•
Regras de validação: Função que verifica se a data está no formato dd/mm/aaaa.
5.3.1.9. Entidade renovacao
Finalidade: consiste em um depósito que permita um controle das apólices renovadas.
Atributo identificador único:
Código da renovação
•
Definição: código da renovação, identificando-a unicamente.
•
Domínio: numérico
•
Abreviatura padrão: id_renovacao
•
Regras de validação: Não há, pois é atribuído automaticamente pelo sistema.
Atributos:
Código da nova proposta
•
Definição: contém o código da proposta que propciará a renovação de uma
apólice.
•
Domínio: numérico
•
Abreviatura padrão: id_nova_proposta
63
•
Regras de validação: Somente um valor válido contido na tabela proposta no
seguradora id_proposta.
Código da seguradora
•
Definição: contém o código da seguradora da proposta em questão.
•
Domínio: numérico
•
Abreviatura padrão: id_seguradora
•
Regras de validação: Somente um valor válido contido na tabela seguradora no
seguradora id_seguradora.
Código da apólice renovada
•
Definição: contém o código da apólice que está sendo renovada.
•
Domínio: numérico
•
Abreviatura padrão: id_apolice_renovada
•
Regras de validação: Somente um valor válido contido na tabela apolice no
campo id_apolice.
5.3.1.10. Entidade endosso
Finalidade: consiste nos endossos de apólice, que são feitos também através de uma
proposta à seguradora.
Atributo identificador único:
Código do endosso
•
Definição: código do endosso, identificando-o unicamente.
64
•
Domínio: numérico
•
Abreviatura padrão: id_endosso
•
Regras de validação: Não há, pois é atribuído automaticamente pelo sistema.
Atributos:
Código da nova proposta
•
Definição: contém o código da proposta que irá endossar uma apólice.
•
Domínio: numérico
•
Abreviatura padrão: id_nova_proposta
•
Regras de validação: Somente um valor válido contido na tabela proposta no
campo id_proposta.
Código da seguradora
•
Definição: contém o código da seguradora da proposta em questão.
•
Domínio: numérico
•
Abreviatura padrão: id_seguradora
•
Regras de validação: Somente um valor válido contido na tabela seguradora no
campo id_seguradora.
Código da apólice endossada
•
Definição: contém o código da apólice que está sendo renovada.
•
Domínio: numérico
65
•
Abreviatura padrão: id_apolice_endossada
•
Regras de validação: Somente um valor válido contido na tabela apolice no
campo id_apolice.
Código do tipo de endosso
•
Definição: contém o código do tipo de endosso, utilizado internamente pelo
sistema.
•
Domínio: numérico
•
Abreviatura padrão: co_tipo_endosso
•
Regras de validação: Não há, pois o valor será escolhido em uma lista prédeterminada pelo sistema.
Número do endosso
•
Definição: contém o número do endosso, fornecido pela seguradora.
•
Domínio: numérico
•
Abreviatura padrão: nu_endosso
•
Regras de validação: Somente valores numéricos.
5.3.1.11. Entidade custo_fixo
Finalidade:
Atributo identificador único:
Código do custo_fixo
66
•
Definição: código dos custos fixos
•
Domínio: numérico
•
Abreviatura padrão: id_custo_fixo
•
Regras de validação: Não há, pois é atribuído automaticamente pelo sistema.
Atributos:
Percentual do IOF
•
Definição: contém o percentual do IOF que a corretora utiliza como padrão para
os seus seguros.
•
Domínio: texto
•
Abreviatura padrão: pc_iof
•
Regras de validação: somente números inteiros ou de ponto flutuante.
Valor do custo da apólice
•
Definição: contém o custo da apólice que a corretora utiliza como padrão para os
seus seguros.
•
Domínio: numérico
•
Abreviatura padrão: vr_apolice
•
Regras de validação: Função que verifica se o valor está no formato monetário.
5.3.1.12. Entidade cobertura
Finalidade: consiste nas coberturas do seguro para uma determinada proposta.
67
Atributo identificador único:
Código da cobertura
•
Definição: código da cobertura, identificando-a unicamente.
•
Domínio: numérico
•
Abreviatura padrão: id_cobertura
•
Regras de validação: Não há, pois é atribuído automaticamente pelo sistema.
Atributos:
Código da proposta
•
Definição: contém o código da proposta a qual a cobertura se refere.
•
Domínio: numérico
•
Abreviatura padrão: id_proposta
•
Regras de validação: Somente um valor válido contido na tabela proposta no
campo id_proposta.
Código da seguradora
•
Definição: contém o código da seguradora à qual a proposta se refere.
•
Domínio: numérico
•
Abreviatura padrão: id_seguradora
•
Regras de validação: Somente um valor válido contido na tabela seguradora no
campo id_seguradora.
68
5.3.1.13. Entidade marca
Finalidade: consiste nas marcas de automóveis com as quais a corretora trabalha.
Atributo identificador único:
Código da marca
•
Definição: código da marca, identificando-a unicamente.
•
Domínio: numérico
•
Abreviatura padrão: id_marca
•
Regras de validação: Não há, pois é atribuído automaticamente pelo sistema.
Atributos:
Nome da marca
•
Definição: contém o nome da marca.
•
Domínio: texto
•
Abreviatura padrão: no_marca
•
Regras de validação: Qualquer seqüência de caracteres
5.3.1.14. Entidade modelo
Finalidade: consiste nos modelos de automóveis com os quais a corretora trabalha.
Atributo identificador único:
Código do modelo
69
•
Definição: código do modelo, identificando-o unicamente.
•
Domínio: numérico
•
Abreviatura padrão: id_modelo
•
Regras de validação: Não há, pois é atribuído automaticamente pelo sistema.
Atributos:
Código da marca
•
Definição: contém o código da marca do modelo.
•
Domínio: numérico
•
Abreviatura padrão: id_marca
•
Regras de validação: Somente um valor válido contido na tabela marca no campo
id_marca.
Nome do modelo
•
Definição: contém o nome do modelo do veículo.
•
Domínio: numérico
•
Abreviatura padrão: no_modelo
•
Regras de validação: Qualquer seqúência de caracteres.
Capacidade
•
Definição: contém o número máximo de passageiros que o veículo comporta.
70
•
Domínio: numérico
•
Abreviatura padrão: qt_capacidade
•
Regras de validação: somente caracteres numéricos.
5.3.1.15. Entidade cobertura_automovel
Finalidade: consiste nas coberturas para seguros do ramo de automóveis.
Atributo identificador único:
Código da cobertura de automóvel
•
Definição: código do automóvel, identificando-o unicamente. É um alias para o
código da cobertura, presente na entidade cobertura.
•
Domínio: numérico
•
Abreviatura padrão: id_cobertura_automovel
•
Regras de validação: não há, pois trata-se da replicação do código da cobertura
para esta entidade.
Atributos:
Código do modelo
•
Definição: contém o código do modelo do automóvel
•
Domínio: numérico
•
Abreviatura padrão: id_mocelo
71
•
Regras de validação: Somente um valor válido contido na tabela modelo no
campo id_modelo.
Nome do proprietário
•
Definição: contém o nome do proprietário do veículo. Em alguns casos, pode não
corresponder ao proponente.
•
Domínio: texto
•
Abreviatura padrão: no_proprietário
•
Regras de validação: Qualquer seqüência de caracteres.
Placa
•
Definição: contém a placa do veículo.
•
Domínio: texto
•
Abreviatura padrão: co_placa
•
Regras de validação: Qualquer seqüência de caracteres.
Chassi
•
Definição: contém o número do chassi do veículo
•
Domínio: numérico
•
Abreviatura padrão: nu_chassi
•
Regras de validação: Somente caracteres numéricos
Combustível
72
•
Definição: contém o código do combustível, que é definido internamente no
sistema.
•
Domínio: numérico
•
Abreviatura padrão: co_combustível
•
Regras de validação: Seleciona-se um valor de uma lista pré-determinada pelo
sistema.
Tipo da franquia
•
Definição: contém o código da franquia, que é definido internamente no sistema.
•
Domínio: numérico
•
Abreviatura padrão: co_tipo_franquia
•
Regras de validação: Seleciona-se um valor de uma lista pré-determinada pelo
sistema.
Valor da franquia
•
Definição: é o valor da franquia do seguro proposto.
•
Domínio: numérico
•
Abreviatura padrão: vr_franquia
•
Regras de validação: Função que verifica se o valor está no formato monetário.
Ano de fabricação
•
Definição: é o ano em que o automóvel foi fabricado
73
•
Domínio: numérico
•
Abreviatura padrão: aa_fabricação
•
Regras de validação: Somente caracteres numéricos
Ano do modelo
•
Definição: é o ano do modelo que o modelo do automóvel foi lançado.
•
Domínio: numérico
•
Abreviatura padrão: aa_modelo
•
Regras de validação: Somente caracteres numéricos.
Bônus
•
Definição: contém o valor do bônus do seguro
•
Domínio: numérico
•
Abreviatura padrão: vr_classe_bonus
•
Regras de validação: seleciona-se um valor de uma lista pré-determinada pelo
sistema.
Importância segurada para a carroceria
•
Definição: contém o valor para a cobertura da carroceria do veículo.
•
Domínio: numérico
•
Abreviatura padrão: vr_is_carroceria
74
•
Regras de validação: Função que verifica se o valor está no formato monetário.
Importância segurada para responsabilidade civil de danos materiais de terceiros
•
Definição: contém o valor para a cobertura de danos materiais causados a
terceiros.
•
Domínio: numérico
•
Abreviatura padrão: vr_is_rcf_dm
•
Regras de validação: Função que verifica se o valor está no formato monetário.
Importância segurada para responsabilidade civil de danos corporais de terceiros
•
Definição: contém o valor para a cobertura de danos corporais causados a
terceiros.
•
Domínio: numérico
•
Abreviatura padrão: vr_is_rcf_dc
•
Regras de validação: Função que verifica se o valor está no formato monetário.
5.3.1.16. Entidade acessorio
Finalidade: consiste nos acessórios a serem incluídas, opcionalmente, no seguro.
Atributo identificador único:
Código do acessório
•
Definição: código do acessório, identificando-o unicamente.
•
Domínio: numérico
75
•
Abreviatura padrão: id_acessório
•
Regras de validação: não há, pois é atribuído automaticamente pelo sistema.
Atributos:
Código da cobertura do automóvel
•
Definição: contém o código da cobertura do automóvel ao qual o acessório
pertence.
•
Domínio: numérico
•
Abreviatura padrão: id_acessorio
•
Regras
de
validação:
Somente
um
valor
válido
contido
na
tabela
cobertura_automóvel no campo id_cobertura_automovel.
Nome do acessório
•
Definição: contém o nome do acessório a ser segurado.
•
Domínio: texto
•
Abreviatura padrão: no_acessorio
•
Regras de validação: Qualquer seqüência de caracteres.
Valor do acessório
•
Definição: contém o valor do acessório a ser segurado.
•
Domínio: numérico
•
Abreviatura padrão: vr_acessorio
76
•
Regras de validação: Função que verifica se o valor está no formato monetário.
5.3.1.17. Entidade cobertura_outro
Finalidade: consiste em uma entidade onde possam ser definidas as coberturas de
seguros de ramos diferentes de automóvel. É um alias para o código da cobertura,
presente na entidade cobertura.
Atributo identificador único:
Código da cobertura para outros ramos
•
Definição: código da cobertura do seguro de ramo diferente de automóvel,
identificando-o unicamente.
•
Domínio: numérico
•
Abreviatura padrão: id_cobertura_outro
•
Regras de validação: não há, pois trata-se da replicação do código da cobertura
para esta entidade.
Atributos:
Descrição da cobertura
•
Definição: contém a descrição das coberturas do seguro.
•
Domínio: texto
•
Abreviatura padrão: de_coberturas
•
Regras de validação: Qualquer seqüência de caracteres.
77
5.3.1.18. Entidade parcela_comissao
Finalidade: consiste nas parcelas de comissão que a corretora irá receber por
determinado seguro.
Atributo identificador único:
Código da parcela
•
Definição: código da parcela de comissão, identificando-a unicamente.
•
Domínio: numérico
•
Abreviatura padrão: id_parcela
•
Regras de validação: não há, pois é atribuído automaticamente pelo sistema.
Atributos:
Código da seguradora
•
Definição: contém o código da seguradora que fez o seguro.
•
Domínio: numérico
•
Abreviatura padrão: id_seguradora
•
Regras de validação: Somente um valor válido contido na tabela seguradora no
campo id_seguradora.
Número da parcela
•
Definição: contém o índice da parcela de comissão, ou seja, um identificador da
parcela dentre as parcelas totais a serem recebidas por determinado seguro.
78
•
Domínio: numérico
•
Abreviatura padrão: nu_parcela
•
Regras de validação: somente caracteres numéricos.
Data de vencimento
•
Definição: contém a data em que a parcela de comissão deverá vencer.
•
Domínio: data
•
Abreviatura padrão: dt_vencimento
•
Regras de validação: Função que verifica se a data está no formato dd/mm/aaaa.
Valor da comissão devida
•
Definição: contém o valor da comissão que deverá ser paga à corretora para a
parcela.
•
Domínio: numérico
•
Abreviatura padrão: vr_comissao_devida
•
Regras de validação: Função que verifica se o valor está no formato monetário.
5.3.1.19. Entidade parcela_recebida
Finalidade: consiste nas parcelas de comissão que foram pagas à corretora.
Atributo identificador único:
Código da parcela recebida
•
Definição: código da parcela recebida, identificando-a unicamente.
79
•
Domínio: numérico
•
Abreviatura padrão: id_parcela_recebida
•
Regras de validação: Não há, pois é atribuído automaticamente pelo sistema.
Atributos:
Código da parcela devida
•
Definição: contém o código da parcela devida.
•
Domínio: numérico
•
Abreviatura padrão: id_parcela_devida
•
Regras
de
validação:
Somente
um
valor
válido
contido
na
tabela
parcelas_comissao no campo id_parcela.
Valor da comissão recebida
•
Definição: contém o valor real recebido pela corretora para determianda parcela.
•
Domínio: numérico
•
Abreviatura padrão: vr_comissao_recebida
•
Regras de validação: Função que verifica se o valor está no formato monetário.
Data de recebimento da comissão
•
Definição: contém a data em que a comissão foi recebida pela corretora.
•
Domínio: data
80
•
Abreviatura padrão: dt_comissao_recebida
•
Regras de validação: Função que verifica se a data está no formato dd/mm/aaaa.
5.3.1.20. Entidade tipo_sinistro
Finalidade: consiste nos tipos de sinistros que podem ocorrer com os seguros que a
corretora trabalha.
Atributo identificador único:
Código do tipo do sinistro
•
Definição: código do tipo do sinistro, identificando-o unicamente.
•
Domínio: numérico
•
Abreviatura padrão: id_tipo_sinistro
•
Regras de validação: Não há, pois é atribuído automaticamente pelo sistema.
Atributos:
Nome do tipo do sinistro
•
Definição: contém o nome do tipo do sinistro.
•
Domínio: texto
•
Abreviatura padrão: no_tipo_sinistro
•
Regras de validação: Qualquer seqüência de caracteres.
5.3.1.21. Entidade sinistro
Finalidade: consiste nos sinistros ocorridos com os segurados da corretora.
81
Atributo identificador único:
Código do sinistro
•
Definição: código do sinistro, identificando-o unicamente.
•
Domínio: numérico
•
Abreviatura padrão: id_sinistro
•
Regras de validação: não há, pois é atribuído automaticamente.
Atributos:
Código da proposta
•
Definição: contém o código da proposta do seguro que sofreu o sinistro.
•
Domínio: numérico
•
Abreviatura padrão: id_proposta
•
Regras de validação: Somente um valor válido contido na tabela proposta no
campo id_proposta.
Código do tipo do sinistro
•
Definição: contém o código do tipo do sinistro.
•
Domínio: numérico
•
Abreviatura padrão: id_tipo_sinistro
•
Regras de validação: Somente um valor válido contido na tabela tipo_sinistro no
campo id_tipo_sinistro.
82
Código da seguradora
•
Definição: contém o código da seguradora que fez o seguro.
•
Domínio: numérico
•
Abreviatura padrão: id_seguradora
•
Regras de validação: Somente um valor válido contido na tabela seguradora no
campo id_seguradora.
Descrição do evento
•
Definição: contém a descrição do evento que levou ao sinistro.
•
Domínio: texto
•
Abreviatura padrão: de_evento
•
Regras de validação: Qualquer seqüência de caracteres.
Número do sinistro
•
Definição: contém o número do sinistro, que é fornecido pela seguradora após
receber o aviso do sinistro.
•
Domínio: numérico
•
Abreviatura padrão: nu_sinistro
•
Regras de validação: Somente caracteres numéricos
Data da ocorrência
•
Definição: contém a data de ocorrência do sinistro
83
•
Domínio: data
•
Abreviatura padrão: dt_ocorrencia
•
Regras de validação: Função que verifica se a data está no formato dd/mm/aaaa.
Data do aviso
•
Definição: contém a data em que o segurado fez o aviso do sinistro para a
seguradora.
•
Domínio: data
•
Abreviatura padrão: dt_aviso
•
Regras de validação: Função que verifica se a data está no formato dd/mm/aaaa.
Valor do sinistro
•
Definição: contém o valor do orçamento para cobrir aquele sinistro.
•
Domínio: numérico
•
Abreviatura padrão: vr_sinistro
•
Regras de validação: Função que verifica se o valor está no formato monetário.
Observação
•
Definição: contém observações quaisquer sobre o sinistro.
•
Domínio: texto
•
Abreviatura padrão: de_observacao
84
•
Regras de validação: Qualquer seqüência de caracteres.
5.3.1.22. Entidade aceitacao
Finalidade: consiste em uma tabela onde são armazenados dados de sinistros que a
seguradora concordou em cobrir. É um alias para o código do sinistro, presente na
entidade sinistro.
Atributo identificador único:
Código da aceitação
•
Definição: código da aceitação do sinistro, identificando-o unicamente.
•
Domínio: numérico
•
Abreviatura padrão: id_aceitacao
•
Regras de validação: não há, pois trata-se da replicação do código do sinistro para
esta entidade.
Atributos:
Data da aceitação
•
Definição: contém a data em que a seguradora aceitou cobrir o sinistro.
•
Domínio: data
•
Abreviatura padrão: dt_aceitacao
•
Regras de validação: Função que verifica se a data está no formato dd/mm/aaaa.
85
Valor da liquidação
•
Definição: contém o valor que a seguradora indenizou o segurado pelo seu
sinistro.
•
Domínio: numérico
•
Abreviatura padrão: vr_liquidacao
•
Regras de validação: Função que verifica se o valor está no formato monetário.
5.3.1.23. Entidade recusa
Finalidade: consiste nos sinistros que foram recusados pela seguradora.
Atributo identificador único:
Código da recusa
•
Definição: código da recusa, identificando-o unicamente. É um alias para o
código do sinistro, presente na entidade sinistro.
•
Domínio: numérico
•
Abreviatura padrão: id_recusa
•
Regras de validação: não há, pois trata-se da replicação do código do sinistro para
esta entidade.
Atributos:
Descrição do motivo
•
Definição: contém a descrição do motivo pelo qual a seguradora se recusou a
indenizar o segurado pelo seu sinistro.
86
•
Domínio: texto
•
Abreviatura padrão: de_motivo
•
Regras de validação: Qualquer seqüência de caracteres.
5.4. PANORAMA GERAL DO SISTEMA
O sistema inicia-se com uma tela para login. Caso o login seja efetuado
corretamente, o usuário tem acesso ao frame do sistema e a realizar operações
compatíveis com a sua categoris.
Figura 11: tela de login do sistema
O frame do sistema possui um título, uma barra de menus e uma barra de status,
onde são exibidas mensagens de ajuda conforme a posição do mouse sobre um item de
menu.
Na barra de menus, encontramos um item para cada um de nossos depósitos de
dados. Para cada um deles, há uma janela, também conhecida como caixa de diálogo, que
87
é exibida ao ser selecionado seu item no menu. A fim de que possamos modificar nossos
depósitos de dados, estas janelas possuem botões com as seguintes funções:
•
Incluir: Habilitado quando a janela é aberta. Ao se acionado, os campos da janela
que podem ou devem ser preenchidos pelo usuário são habilitados. Habilita ainda
os botões Gravar e Desfazer.
•
Localizar: Habilitado quando a janela é aberta. Após a escolha de um item, a
janela é carregada com todas as informações referentes ao item escolhido e os
botões Editar e Excluir são habilitados.
•
Editar: Ao se acionado, os campos da janela que podem ou devem ser preenchidos
pelo usuário são habilitados. Habilita ainda os botões Gravar e Desfazer.
•
Excluir: permite que um registro seja excluído. Em alguns casos, a exclusão pode
não ser permitida ou pode gerar exclusões em outras tabelas, conforme a
implementação de possíveis chaves estrangeiras envolvidas.
•
Gravar: captura os dados da interface gráfica e chama funções que acessam o
banco de dados para que realizem uma inclusão ou edição de dados.
•
Desfazer: retorna a janela para seu estado inicial, ou seja, campos desabilitados e
em branco e apenas os botões Incluir e Localizar acessíveis.
Há algumas poucas janelas que possuem o aspecto diferente deste apresentado,
por serem mais simples ou possuírem características diferentes. Entretanto a
interoperabilidade destas janelas entre o usuário e o sistema sempre segue a seguinte
cadeia: o usuário solicita algo ao sistema, que faz uma operação no banco de dados e
retorna uma resposta ao usuário. A figura seguinte ilustra melhor este ciclo:
88
O usuário faz uma
solicitação ao sistema,
através da janela de diálogo
O sistema captura a solicitação do
usuário, e prepara uma operação
no Banco de Dados
A SQLAPI++ se encarrega de
acessar o banco de dados
O sistema recebe a resposta da
SQLAPI e prepara uma resposta
para o usuário
O banco de dados retorna o
resultado da operação para a
SQLAPI++
O usuário visualiza o resultado
de sua operação pela
Interface gráfica
Figura 12: seqüência de processos internos do sistema
O sistema pode ser dividido em módulos, cada um com a sua janela de diálogo
que é carregada ao ser escolhido o item de menu correspondente. Estes itens são descritos
a seguir.
5.5. DIAGRAMA MODULAR
Frame do Sistema
Propostas
Funcionários
Clientes
Seguradoras
Automóveis
Sinistros
Comissões
Relatórios
Usuários
Figura 13: diagrama modular do projeto
O diagrama da Figura 13 representa a página inicial do sistema e os módulos que
podemos acessar através dela.
Arquivos envolvidos:
•
sigicsFrame.cpp: Analisa se o Seguro Fácil está sendo executado pela primeira
vez. Carrega o frame do sistema, a barra de menu, a barra de status e a caixa de
diálogo para login ou a caixa de diálogo para configuração das informações do
89
banco de dados e criação da conta do administrador, conforme a situação. Possui
também os eventos executados para cada item da barra de menu, que chama o
módulo a ele associado.
•
sigicsFrame.h: contém os includes necessários para o sigicsFrame.cpp e a
descrição da classe de Frame, com seus atributos e métodos.
5.5.1. Propostas
Frame do Sistema
Propostas
Incluir
Funcionários
Localizar
Clientes
Editar
Seguradoras
Excluir
Automóveis
Sinistros
Comissões
Relatórios
Usuários
Definir custos
fixos
Figura 14: Descrição do módulo Propostas
Esta é a parte do sistema que permite a manipulação das propostas de seguro. Este
módulo também faz todo o controle das apólices, renovações e endossos. Quando é
incluída uma nova proposta, o sistema calcula ainda as comissões que a corretora deve
receber (valor e data de vencimento).
Arquivos envolvidos:
•
dlg_proposal.cpp: Carrega a caixa de diálogo para propostas. Possui também sua
tabela de eventos e as funções associadas a cada um deles.
•
dlg_proposal.h: contém os includes necessários para o dlg_proposal.h e a
descrição da classe de proposta, com seus atributos e métodos.
90
•
dlg_cover_automobil.cpp: Carrega a caixa de diálogo para definição da cobertura
de automóveis. Possui também sua tabela de eventos e as funções associadas a
cada um deles.
•
dlg_cover_automobil.h:
contém
os
includes
necessários
para
o
dlg_cover_automobil.h e a descrição da classe de cobertura de automóveis , com
seus atributos e métodos.
•
dlg_cover_others.cpp: Carrega a caixa de diálogo para definição da cobertura de
outros tipos de seguros que não automóveis. Possui também sua tabela de eventos
e as funções associadas a cada um deles.
•
dlg_cover_others.h: contém os includes necessários para o dlg_cover_others.h e a
descrição da classe de cobertura de outros , com seus atributos e métodos.
•
dlg_search_proposal.cpp: Carrega a caixa de diálogo para localização de
propostas. Possui também sua tabela de eventos e as funções associadas a cada
um deles.
•
dlg_search_proposal.h:
contém
os
includes
necessários
para
o
dlg_search_proposal.cpp e a descrição da classe de cobertura de outros , com seus
atributos e métodos.
•
dlg_fixed_costs.cpp: Carrega a caixa de diálogo para definição dos custos fixos.
Possui também sua tabela de eventos e as funções associadas a cada um deles.
•
dlg_fixed_costs.h: contém os includes necessários para o dlg_fixed_costs.h e a
descrição da classe de cobertura de outros , com seus atributos e métodos.
91
5.5.2. Corretores
Frame do Sistema
Propostas
Corretores
Incluir
Clientes
Localizar
Editar
Seguradoras
Automóveis
Sinistros
Comissões
Relatórios
Usuários
Excluir
Figura 15: Descrição do módulo Corretores
Este módulo faz o controle dos funcionários da corretora. Conforme falado
anteriormente, os clientes possuirão um contato principal na corretora, que será um destes
funcionários.
Arquivos envolvidos:
•
dlg_broker.cpp: Carrega a caixa de diálogo para corretores. Possui também sua
tabela de eventos e as funções associadas a cada um deles.
•
dlg_broker.h: contém os includes necessários para o dlg_broker.cpp e a descrição
da classe de Corretores, com seus atributos e métodos.
•
dlg_search_broker.cpp: Carrega a caixa de diálogo para localização de corretores.
Possui também sua tabela de eventos e as funções associadas a cada um deles.
•
dlg_search_broker.h:
contém
os
includes
necessários
para
o
arquivo
dlg_search_broker.cpp e a descrição da classe de cobertura de outros , com seus
atributos e métodos.
92
5.5.3. Clientes:
Frame do Sistema
Propostas
Funcionários
Incluir
Clientes
Seguradoras
Localizar
Editar
Automóveis
Sinistros
Comissões
Relatórios
Usuários
Excluir
Figura 16: Descrição do módulo Clientes
Neste módulo o usuário poderá manter o seu cadastro de clientes. As operações
básicas de cadastro estão disponíveis.
Arquivos envolvidos:
•
dlg_client.cpp: Carrega a caixa de diálogo para clientes. Possui também sua tabela
de eventos e as funções associadas a cada um deles.
•
dlg_client.h: contém os includes necessários para o dlg_client.h e a descrição da
classe de cobertura de outros, com seus atributos e métodos.
•
dlg_search_client.cpp: Carrega a caixa de diálogo para localização de clientes.
Possui também sua tabela de eventos e as funções associadas a cada um deles.
•
dlg_search_client.h: contém os includes necessários para o dlg_search_client.cpp
e a descrição da classe de cobertura de outros , com seus atributos e métodos.
93
5.5.4. Seguradoras:
Frame do Sistema
Propostas
Funcionários
Incluir
Clientes
Seguradoras
Localizar
Editar
Automóveis
Sinistros
Comissões
Relatórios
Usuários
Excluir
Figura 17: Descrição do módulo Seguradoras
Nesta seção são cadastradas as seguradoras.
Arquivos envolvidos:
•
dlg_insuranceCo.cpp: Carrega a caixa de diálogo para seguradoras. Possui
também sua tabela de eventos e as funções associadas a cada um deles.
•
dlg_insuranceCo.h: contém os includes necessários para o dlg_insuranceCo.cpp e
a descrição da classe de Seguradoras, com seus atributos e métodos.
•
dlg_search_insuranceCo.cpp: Carrega a caixa de diálogo para localização de
seguradoras. Possui também sua tabela de eventos e as funções associadas a cada
um deles.
•
dlg_search_insuranceCo.h: contém os includes necessários para o arquivo
dlg_search_insuranceCo.cpp e a descrição da classe de cobertura de outros , com
seus atributos e métodos.
94
5.5.5. Automóveis:
Frame do Sistema
Propostas
Funcionários
Clientes
Seguradoras
Automóveis
Sinistros
Marcas
Incluir
Localizar
Comissões
Relatórios
Usuários
Modelos
Editar
Excluir
Incluir
Localizar
Editar
Excluir
Figura 18: Descrição do módulo Automóveis
Nesta seção o usuário poderá manter atualizado o seu cadastro dos automóveis
com os quais trabalha ou pode vir a trabalhar. O módulo é dividido em duas partes:
marcas e modelos. Conforme visto anteriormente, ao definir uma cobertura de automóvel,
deverá ser escolhido um modelo contido neste cadastro.
Arquivos envolvidos:
•
dlg_brand.cpp: Carrega a caixa de diálogo para marcas de automóveis. Possui
também sua tabela de eventos e as funções associadas a cada um deles.
•
dlg_brand.h: contém os includes necessários para o dlg_brand.cpp e a descrição
da classe de marcas, com seus atributos e métodos.
•
dlg_search_brand.cpp: Carrega a caixa de diálogo para localização de marcas.
Possui também sua tabela de eventos e as funções associadas a cada um deles.
•
dlg_search_brand.h: contém os includes necessários para o dlg_search_brand.cpp
e a descrição da classe de marca, com seus atributos e métodos.
95
•
dlg_model.cpp: Carrega a caixa de diálogo para modelos de automóveis. Possui
também sua tabela de eventos e as funções associadas a cada um deles.
•
dlg_model.h: contém os includes necessários para o dlg_model.cpp e a descrição
da classe de modelos, com seus atributos e métodos.
5.5.6. Sinistros
Frame do Sistema
Propostas
Funcionários
Clientes
Incluir
Seguradoras
Localizar
Automóveis
Editar
Sinistros
Excluir
Comissões
Relatórios
Usuários
Tipos de seguros
Incluir
Excluir
Figura 19: Descrição do módulo Sinistros
Este módulo permite as 4 operações básicas de banco de dados para os sinistros,
além de manter uma tabela de tipos de sinistros que podem ocorrer.
Arquivos envolvidos:
•
dlg_loss.cpp: Carrega a caixa de diálogo para sinistros. Possui também sua tabela
de eventos e as funções associadas a cada um deles.
•
dlg_loss.cpp.h: contém os includes necessários para o dlg_loss.cpp e a descrição
da classe de sinistros, com seus atributos e métodos.
•
dlg_search_loss.cpp: Carrega a caixa de diálogo para localização de sinistros.
Possui também sua tabela de eventos e as funções associadas a cada um deles.
96
•
dlg_search_loss.h: contém os includes necessários para o dlg_search_loss.cpp e a
descrição da classe de sinistros, com seus atributos e métodos.
5.5.7. Comissões
Frame do Sistema
Propostas
Funcionários
Clientes
Seguradoras
Automóveis
Sinistros
Comissões
Relatórios
Usuários
Localizar comissões de
uma proposta
Editar parcelas
de comissão
Totalizar
comissões
Figura 20: Descrição do módulo Comissões
Neste módulo o usuário realiza uma busca pelas parcelas de comissão de uma
determinada proposta de seguro. As parcelas de comissão para um seguro são previstas a
partir dos seguintes dados informados na proposta: prêmio líquido, quantidade de
parcelas que o segurado irá dividir seu pagamento e a seguradora que fará o seguro
(baseado na quantidade máxima de parcelas que a seguradora realiza o pagamento da
comissão em uma única parcela).
Arquivos envolvidos:
•
dlg_comission.cpp: Carrega a caixa de diálogo para comissoes. Possui também
sua tabela de eventos e as funções associadas a cada um deles.
•
dlg_comission.h: contém os includes necessários para o dlg_comission.cpp e a
descrição da classe de Proposta, com seus atributos e métodos.
97
•
dlg_edit_comission.cpp: Carrega a caixa de diálogo para localização de
comissoes. Possui também sua tabela de eventos e as funções associadas a cada
um deles.
•
dlg_edit_comission.h:
contém
os
includes
necessários
para
o
dlg_edit_comission.cpp e a descrição da classe de sinistros, com seus atributos e
métodos.
5.5.8. Relatórios
Este é um dos módulos mais interessantes do Seguro Fácil e que pode realmente
trazer diversas facilidades para o corretor de seguros. Com a base de dados rica em
informações úteis, pode-se criar relatórios de modo a se obter facilmente informações
úteis, cruzar alguns dados, realizar estatísticas, etc. Nesta primeira versão do Seguro Fácil
foram desenvolvidos dois relatórios: seguros a renovar e apólices em atraso.
Frame do Sistema
Propostas
Funcionários
Clientes
Seguradoras
Automóveis
Sinistros
Comissões
Relatórios
Usuários
Define filtro relatório
Visualiza resultado
Figura 21: Descrição do módulo Relatórios
Arquivos envolvidos:
•
dlg_specify_report_renewal.cpp: Carrega a caixa de diálogo com os filtros para o
relatório de renovações. Possui também sua tabela de eventos e as funções
associadas a cada um deles.
98
•
dlg_report_renewal.cpp: Prepara o relatório de renovações de acordo com as
informações recebidas do banco de dados e o exibe em uma nova janela. Possui
também sua tabela de eventos e as funções associadas a cada um deles.
•
dlg_specify_report_late_policy.cpp: Carrega a caixa de diálogo com os filtros
para o relatório de apólices em atraso. Possui também sua tabela de eventos e as
funções associadas a cada um deles.
•
dlg_report_late_policy.cpp: Prepara o relatório de apólices em atraso de acordo
com as informações recebidas do banco de dados e o exibe em uma nova janela.
Possui também sua tabela de eventos e as funções associadas a cada um deles.
•
dlg_specify_report_renewal.h:
contém
os
includes
necessários
para
o
dlg_specify_report_renewal.cpp e a descrição da classe de especificação do
relatório de renovações, com seus atributos e métodos.
•
dlg_report_renewal.h:
contém
os
includes
necessários
para
o
dlg_report_renewal.cpp e a descrição da classe que exibe o relatório de
renovações, com seus atributos e métodos.
•
dlg_specify_report_late_policy.h: contém os includes necessários para o
dlg_specify_report_late_policy.cpp e a descrição da classe de especificação do
relatório de apólices em atraso, com seus atributos e métodos.
•
dlg_report_late_policy.h:
contém
os
includes
necessários
para
o
dlg_report_late_policy.cpp e a descrição da classe que exibe o relatório de
apólices em atraso, com seus atributos e métodos.
99
5.5.9. Usuários
Este é módulo contempla as operações que envolvem os usuários do sistema.
Frame do Sistema
Propostas
Funcionários
Clientes
Seguradoras
Automóveis
Login
Sinistros
Incluir
Comissões
Editar
Relatórios
Excluir
Usuários
Alterar
senha
Figura 22: Descrição do módulo Usuários
Arquivos envolvidos:
•
dlg_login.cpp: Carrega a caixa de diálogo de login. Possui também sua tabela de
eventos e as funções.
•
dlg_add_user.cpp: Carrega a caixa de diálogo para se adicionar um novo usuário,
o que só pode ser feito pelo Administrador. Possui também sua tabela de eventos
e as funções.
•
dlg_edit_user.cpp: Carrega a caixa de diálogo de para se editar e excluir um
usuário, o que também só pode ser feito pelo Administrador. Possui ainda sua
tabela de eventos e as funções.
•
dlg_change_password.cpp: Carrega a caixa de diálogo de para se trocar a senha.
Um usuário somente pode trocar a sua própria senha. Possui também sua tabela de
eventos e as funções.
100
•
dlg_login.h: contém os includes necessários para o dlg_login.cpp e a descrição da
classe de login, com seus atributos e métodos.
•
dlg_add_user.h: contém os includes necessários para o dlg_add_user.cpp e a
descrição da classe de inclusão de usuários, com seus atributos e métodos.
•
dlg_edit_user.h: contém os includes necessários para o dlg_edit_user.cpp e a
descrição da classe de alteração e exclusão de usuários, com seus atributos e
métodos.
•
dlg_change_password.h:
contém
os
includes
necessários
para
o
dlg_change_password.cpp e a descrição da classe de troca de senha, com seus
atributos e métodos.
5.6. INFORMAÇÕES ADICIONAIS
5.6.1. Demais arquivos envolvidos
Além dos arquivos associados a módulos específicos, o projeto possui outros
arquivos, que são utilizados por todos os módulos. Eles possuem funcionalidades
variadas como, por exemplo, funções para acesso ao Banco de Dados, funções globais,
enumeradores, entre outras. Estes arquivos são explicados em detalhe abaixo:
•
main.cpp: implementa a classe MyApp, que é a mãe de todas as outras classes da
wxWidgets no projeto. Possui também algumas funções globais utilizadas no
sistema, como as funções para ordenar por ordem alfabética um vetor or um array
por uma coluna a ser informada.
•
mysql_methods.cpp: contém a implementação de todos os métodos para o banco
de dados MySQL.
•
sqlserver.cpp: contém a implementação de todos os métodos para o banco de
dados SQL Server.
101
•
vblib.cpp: biblioteca criada por Sérgio Barbosa Villas-Boas. Utilização de sua
classe de string, VBString.
•
Seguro_facil.h: contém includes, enumeradores, além das definições das classes
de banco de dados (uso de métodos virtuais).
•
vblib.h: includes e definições utilizadas para a biblioteca vblib.
102
6. FERRAMENTAS UTILIZADAS NO DESENVOLVIMENTO
6.1. FERRAMENTAS DE HARDWARE E SOFTWARE
6.1.1. Ferramentas de Software
Durante o projeto deste sistema de administração para corretoras de seguros as
seguintes ferramentas de softwares foram utilizadas:
•
Microsoft Visual C++ 6.0:
Ambiente de programação em C++, com interface GUI, para o Sistema
Operacional Windows, que traz diversas facilidades para o programador. Compila
e faz link com bibliotecas externas com grande facilidade e gera o código
executável, que pode ser testado a partir dele próprio. Também possui um bom
sistema de debug, que agiliza a detecção dos pontos de problema e sua correção.
Poderia ter sido escolhido qualquer outra ferramenta de programação em C/C++
para Windows.
•
WxGlade 0.3.2:
Trata-se de um utilitário para a construção de telas para o wxWidgets, de interface
GUI. Agiliza em muito o trabalho de construção das interfaces, uma vez que é
todo baseado em blocos gráficos dos objetos da wxWidgets, que devem somente
ser arrastados para a área de construção e customizados, conforme necessidades e
desejos específicos.
É capaz de gerar o código que constituirá as interfaces gráficas em pynton, XRC,
C++ ou perl. Como já foi comentado durante este trabalho, escolhemos o XRC
por trazer grandes facilidades para o projeto.
103
•
ErWin 4.0:
Software utilizado para modelar o Banco de Dados. Possui uma série de
vantagens para o desenvolvimento do DER e dos modelos lógico e físico. É capaz
de gerar o código de criação do Banco de Dados de acordo com parâmetros
escolhidos para tal. Sua utilização, no entanto, limitou-se ao desenvolvimento do
modelo lógico.
•
MySQL 4.0.21:
Sistema Gerenciador de Banco de Dados que roda em diversos sistemas
operacionais, como o Windows e o Linux, principal motivo pelo qual optamos por
sua utilização. É gratuito, disponível para download na Internet, em sua página:
www.mysql.org . Também possui uma boa documentação e grupos de discussão
sobre ele.
Devido às características do sistema, quaisquer outros bancos de dados baseados
em SQL poderiam ter sido utilizados.
•
Microsoft Word:
Software usado para criar a documentação do projeto.
Foi escolhido por ser um editor padrão, com recursos avançados e de fácil
utilização, de modo a se desenvolver esta documentação dentro das normas
exigidas pelo Departamento de Eltrônica e Computação da UFRJ para o Projeto
Final.
6.1.2 Ferramentas de Hardware
O desenvolvimento do Sistema foi feito em mais de um computador, todos sem
nenhuma configuração acima do normal para usuários caseiros. O sistema é simples de
modo a não requerer grandes recursos computacionais. A maior parte do projeto, no
104
entanto, foi desenvolvida em um laptop DELL Latitude D800, cuja configuração
detalhada é mostrada abaixo:
•
Processador Intel Pentium M 1.50 GHz;
•
1.0 GB de memória RAM;
•
55,8 GB de disco rígido.
6.2. BIBLIOTECAS UTILIZADAS
O desenvolvimento do Sistema foi baseado, principalmente na biblioteca
wxWidgets. Uma outra biblioteca que também foi muito importante do projeto foi a
SQLAPI++.
6.2.1. A wxWidgets
A wxWidgets é uma biblioteca gratuita, cujo objetivo é permitir o
desenvolvimento de poderosas interfaces gráficas em C++, que sejam totalmente multiplataforma, ou seja, funcionem em diversas plataformas de hardware e software. Entre os
ambientes que a wxWidgets funciona, conforme sua documentação, encontram-se:
•
Windows
•
Linux
•
Macintosh MAC OS
•
Sun Solaris
A grande portabilidade desta biblioteca foi a principal característica pela sua
escolha neste projeto. Como já foi exposto anteriormente, não existe um software como
este voltado para o mercado de seguros que rode em Linux, o que pode ser utilizado
como grande ponto de vantagem para sua exploração comercial. Além disso, é
105
interessante desenvolver habilidades de programação que não sejam voltados somente
para alguns nichos específicos, como o Microsoft Windows. A arte de programação
genericamente é uma habilidade que garamte ao programador grande versatilidade e
condições de se diferenciar da maioria.
A seguir, descrevemos as principais classes utilizadas no projeto e algumas de
suas características mais interessantes:
•
wxFrame:
Esta classe cria um frame, que é uma janela que pode ser modificada em tamanho
e posição pelo usuário. Normalmente possui uma barra de título e, opcionalmente,
barra de menus, barra de ferramentas e barra de status. Todas estas características,
exceto a barra de ferramentas foram utilizadas em nosso sistema.
•
wxDialog:
Esta classe cria uma caixa de diálogo, que é uma janela com menos
funcionalidades que o frame. Possui uma barra de título e pode ser movida pelo
usuário pela área de trabalho. Pode conter controles e originar outras janelas, o
que foi utilizado em todo o projeto.
•
wxMenuBar:
Classe que cria uma barra de menus no frame do sistema. O frame pode conter
uma barra de menus intrínseca a ele ou separada. Neste projeto, devido às
facilidades do XRC, implementamos a barra de menus separadamente do frame.
•
wxTextCtrl:
Classe que cria uma lacuna na interface gráfica. Possui uma vasta gama de
métodos, que facilitam bastante o trabalho do programador. Para capturar o seu
conteúdo, utiliza-se o método GetStringValue().
106
•
wxRadioBox:
Classe que cria um radio box, ou seja, uma caixa com diversas opções para que
apenas uma seja selecionada. Pode variar de formato (opções na vertica ou na
horizontal) e possuir ou não um título aparente. Para capturar o seu conteúdo,
utiliza-se o método GetStringSelection() ou GetSelection().
•
wxComboBox:
Classe que cria um combo box, ou seja uma lacuna que possui uma seta em seu
lado direito que expande uma lista para que uma linha seja selecionada. Possui a
opção de permitir ou não a edição de sua lacuna pelo usuário. Para capturar o seu
conteúdo, utiliza-se o método GetStringSelection() ou GetSelection().
•
wxButton:
Classe que cria um botão que após ser clicado volta para seu estado inicial. A
wxWidgets possui um outro tipo de botão que armazena o estado, ou seja, quando
clicado, fica na forma “achatada” e somente após ser clicado novamente volta ao
seu estado normal.
•
wxListCtrl:
Classe que cria uma lista, divida em linhas e colunas. Além disso, possui no topo
das colunas um título que pode funcionar como um botão. Pode-se associar um
evento ao clique em cima do título da coluna, e ainda há meios de se descobrir
qual a posição da coluna do título clicado.
Além dos recursos voltados para a interface gráfica, a wxWidgets também possui
diversas classes de uso geral, que foram muito úteis neste projeto. Entre elas, destacamse:
107
•
wxString:
Poderosa classe de string que possui diversos métodos extremamente úteis, que
muito facilitam a programação. Com suas muitas funcionalidades, economizou-se
muito esforço de programação.
•
wxDateTime:
Poderosa classe de data e hora, foi muito importante neste projeto. Possui
métodos diversos para manipulação de data e hora, como comparações e algumas
operações aritméticas.
•
wxStringTokenizer:
Classe que permite capturar substrings de uma string baseado em um token
definido, ou seja, um caracter especial que separe as substrings.
•
wxEvtHandler:
Permite manipular funções associadas a eventos dinamicamente, o que fornece
grande flexibilidade para alguns desenvolvimentos específicos. Um exemplo de
sua utilidade, utilizado neste projeto, é a capacidade de conectar ou desconectar
eventos, pois nem sempre um evento é desejável no programa.
6.2.2. A SQLAPI++
O objetivo desta biblioteca é permitir que o programa em C++ possa acessar
bancos de dados de maneira fácil e transparente. Ela permitiu o isolamento da camada de
regras de negócio da camada de banco de dados.
A SQLAPI++ possui uma versão para Windows e outra para Linux, ambas
utilizadas neste projeto. A versão utilizada neste projeto foi a 3.7.8.
108
Com a SQLAPI++, o banco de dados é acessado através de métodos de fácil
manipulação. Ela conecta em diversos bancos de dados com a mesma facilidade, o que é
uma de suas grandes vantagens: ser independente do banco de dados utilizados.
Entretanto, para realizar consultas ou alterações em tabelas do banco, são utilizados
métodos que executam comandos SQL, que têm que ser descritos explicitamente. Por
este motivo, as peculiaridades diferentes entre os diversos bancos de dados têm que ser
tratadas pelo programador, uma vez que a SQLAPI não traduz sintaxes SQL. Para tornar
o sistema realmente independente do banco de dados, utilizamos o conceito C++ de late
bind e implementamos todas os métodos de acesso ao banco em arquivos especpificos.
Com este esquema, caso se deseje utilizar um novo banco de dados, tudo que é necessário
é escrever os métodos para o novo banco em um arquivo separado, que siga as
especificações para tal, e incluí-lo no projeto.
As principais funções da SQLAPI++ utlizadas no projeto são:
•
void Connect( const SAString &sDBString , const SAString &sUserID , const
SAString &sPassword , SAClient_t eSAClient = SA_Client_NotSpecified );
throw (SAException);
Este método da classe SAConnection estabelece uma conexão com o banco de dados
especificado em sDBString, to tipo eSAClient, utilizando o usuário sUserID e a senha
sPassword.
Ex: m_connection->Connect(“Sigics”, “Administrador”, “ufrj”, SA_Oracle_Client);
•
SACommand ( SAConnection *pConnection , const SAString &sCmd =
SAString(), SACommandType_t eCmdType = SA_CmdUnknown );
O constructor da classe SACommand pode já criar seu objeto, para a conexão
pConnection, associado a um comando definido em sCmd.
Ex: SACommand cmd (m_connection, “SELECT * from CLIENTE”);
109
•
virtual void Execute(); throw (SAException);
Este método da classe SACommand executa o commando corrente associado ao
objeto da classe.
110
7. CONCLUSÕES
Este trabalho descreve com detalhes o Sistema de Administração para Corretoras
de Seguros. As finalidades deste projeto foram, basicamente o desenvolvimento de um
software de interface gráfica que fosse realemente de encontro às necessidades de uma
corretora de seguros e o aperfeiçoamento de técnicas de programação com C++, com
ênfase em utilização de componentes multi-plataformas.
O projeto deste sistema buscou, em todo momento, facilidades para sua futura
manutenção, portabilidade e extensão. Estas necessidades podem surgir, principalmente
devido a:
•
O ramo de seguros ser extremamente dinâmico e podem have mudanças nas
necessidades das corretoras;
•
Características adicionais podem querer ser acrescidas ao modelo de dados como,
por exemplo, descrições detalhadas de seguros de outros ramos, a exemplo do que
foi desenvolvido para automóveis;
•
Implementação do sistema com um novo banco de dados, como, por exemplo, o
Oracle.
A escolha da linguagem C++ proporciona diversas destas facilidades. Outros
fatores que permitem estas características do sistema foi a escolha pela biblioteca
wxWidgets e SQLAPI++.
Pode-se ter uma idéia da complexidade do projeto através dos seguintes números:
•
Tempo de implementação: 6 meses efetivos
•
Aproximadamente 20 mil linhas de código fonte C++.
•
33 arquivos .cpp
•
37 arquivos .h
•
29 arquivos XRC
111
•
Executável com 1,56 MB. Devem ser utilizadas ainda algumas bibliotecas
dinâmicas (dll’s da SQLAPI e da wxWidgets).
A WXWIDGETS
Durante todo este projeto a biblioteca wxWidgets mostrou-se extremamente
confiável, não tendo sido constatado nenhum bug, o que contribuiu para que o projeto
fluísse tranqüilamente. Além disso, ela é extremamente rica, não só em classes
relacionadas a interfaces gráficas, como também em classes de usp genérico, que
facilitam o trabalho do programador que pode reutilizar bastante estes códigos.
Cabe ainda o elogio à forma como a wxWidgets foi concebida, gratuita, com o
código fonte aberto, diversos exemplos excelentes e uma documentação com muita
qualidade também. Tudo isto junto não só acelera o tempo de aprendizado daqueles que
querem começar a trabalhar com ela, mas também contribui para um aperfeiçoamento da
capacidade de programação de seu usuário.
METODOLOGIA
A metodologia utilizada trouxe algumas vantagens para o desenvolvimento deste
projeto. Em primeiro lugar, a análise estruturada descreve com detalhes e de modo
simples todas as funcionalidades do sistema. Com ela, através dos DFDs, torna-se fácil e
definição dos requisitos do software, que foi feita junto a corretores de seguros. Após a
identificação das necessidades das corretoras e da análise feita e conferida, o projeto
caminhou de modo fácil, cumprindo as especificações descritas na análise.
A arquitetura em camadas também foi uma boa escolha, uma vez que facilitou o
desenvolvimento, além de ter trazido grande flexibilidade para a extensão do sistema.
APRENDIZADO
O aprendizado foi, sem dúvida alguma, um dos maiores sucessos até o momento
deste projeto. Este aprendizado se deu em diversos aspectos.
112
Em primeiro lugar, este trabalho proporcionou um grande conhecimento de
negócios. Saber identificar as necessidades de um determinado mercado ou atividade é
um conhecimento valioso, que pode ser aplicado a outros ramos além de seguros. Além
disso, a modelagem de um problema real em um projeto de software é uma característica
importante de um engenheiro que atue ou venha a atuar no desenvolvimento de sistemas.
Isto o diferencia de outros programadores que não tenham esta visão e habilidade.
Com relação ao aprendizado técnico, o projeto trouxe ao autor um grande
aumento da capacidade de programar em C++, tendo feito uso de várias características
poderosas da liguagem. Muitos conhecimentos de bancos de dados, sobretudo do MySQL
e SQL Server também foram adquiridos e podem ser de grande utilidade no futuro.
FUTURAMENTE
Este projeto, apesar de descrever a maioria das necessidades das corretoras de
seguros, poderia conter mais funcionalidades. Entre as principais melhorias sugeridas
para o futuro, encontram-se:
•
Compilação e execução do sistema no ambiente operacional Linux. Apesar de o
sistema ter sido todo desenvolvido com tecnologias multi-plataformas, ele não
chegou a ser testado no Linux. Isto poderá ser feito futuramente sem maiores
problemas.
•
Instalação do sistema com banco de dados embutido (embedded).
•
Criação de rotinas para backup e restauração do sistema. Isto é muito importante
em sistemas vitais como este, onde a perda parcial ou total dos dados acarreta
grandes problemas ou sérios prejuízos para o empresário.
•
Criação de novos relatórios, de modo a trazer ainda mais facilidades para as
corretoras de seguros. A base de dados é rica em informações e, a partir dela,
podem ser extraídos diversos relatórios que podem trazer mais benefícios às
corretoras de seguros. Como exemplos de relatórios extras sugeridos, pode-se
113
citar os relatórios de clientes que não possuem apólices associadas a ele,
totalização das comissões recebidas em um determinado período de tempo, como,
por exemplo, 1 ano. Além disso, pode-se criar relatórios estatísticos como
participação em percentual de cada seguradora nas propostas da corretora.
•
Ampliação da base de dados para descrever detalhadamente as coberturas de
outros ramos de seguro que não de automóveis, além de possíveis correções
encontradas no futuro.
É interessante notar, ainda, as diversas modalidades com que o software pode ser
explorado comercialmente. Uma hipótese é sua venda para uma empresa de software que
se interesse pelo escopo e/ou a filosofia do projeto. Outra hipótese seria comercializá-lo
diretamente com as corretoras de seguros. Esta última possui a desvantagem para o autor
de se comprometer com a manutenção ou correção de possíveis bugs no sistema, o que
pode ser inviável dependendo da dimensão do trabalho e da disponibilidade de tempo do
autor. Uma outra possível negociação seria dar ou vender a preço bastante acessível o
sistema para corretoras de seguros, com a isenção de responsabilidade de sua
manutenção. Neste caso, poderia ser feito um acordo de possíveis melhorias mediante
pagamento de taxas a serem acordadas com a corretora cliente.
114
8. BIBLIOGRAFIA:
As referências bibliográficas utilizadas neste trabalho foram, em sua maior parte,
as documentações das ferramentas de desenvolvimento utlizadas. Referências adicionais
relacionadas a projetos de engenharia de software também foram utilizadas. A lista
completa da bibliografia deste trabalho encontra-se abaixo:
[1] WXWIDGETS 2.4.2 MANUAL. Disponível em <www.wxwidgets.com>.
[2]
WXGLADE
TUTORIAL.
Disponível
em
<http://wxglade.sourceforge.net/tutorial.php>.
[3]
WXGLADE
USER
MANUAL.
Disponível
em
<http://wxglade.sourceforge.net/manual/index.html>.
[4] PRESSMAN, ROGER - Software Engineering: A Practitioner's Approach, 5a Ed.
McGraw Hill, 2001
[5] GANE, CHRIS e SARSON, TRISH, - Análise Estruturada de Sistemas, Livros
Técnicos e Científicos Editora, 1983.
[6] MYSQL REFERENCE MANUAL. Disponível em <www.mysql.com/documentation/>.
Acesso em 15 de agosto de 2004.
[7] VILLAS-BOAS, SERGIO – C/C++ e Orientação a Objetos em Ambientes
Multiplataforma v 5.1. Disponível em <http://lpi.lps.ufrj.br/~villas/pdf/c++v5b.pdf>
[8] ROCHA, RODRIGO P. – ImovNet - Um Sistema de Compra e Venda de Imóveis via
WEB – Projeto Final defendido no Departamento de Eletrônica, Escola de Engenharia,
Universidade Federal do Rio de Janeiro, 2002.
115
REFERÊNCIAS ADICIONAIS
[1] Home-page da seguradora J. Malucelli - http://www.jmalucelliseguradora.com.br/.
[2] Home-page da Federação Nacional de Seguros Privados, de Capitalização, de
Previdência Privada e das Empresas Corretoras de Seguros - http://www.fenacor.com.br/.
[3]
Home-page
da
Superintendência
de
Seguros
Privados,
Susep
-
http://www.susep.gov.br –
116
APÊDICE:
Modelo Lógico dos dados do Sistema Seguro Fácil
117
Download

UNIVERSIDADE FEDERAL DO RIO DE