94
UNIVERSIDADE SÃO FRANCISCO Engenharia de Computação DIEGO CONSTANTINI ESTUDO E PROTOTIPAÇÃO DE UM SISTEMA WEB VOLTADO PARA CRIAÇÃO DE ÁRVORES GENEALÓGICAS Itatiba – S.P. 2011

ESTUDO E PROTOTIPAÇÃO DE UM SISTEMA WEB VOLTADO …lyceumonline.usf.edu.br/salavirtual/documentos/2073.pdf · DIEGO CONSTANTINI - R.A. 002200800360 ESTUDO E PROTOTIPAÇÃO DE UM

  • Upload
    vobao

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

UNIVERSIDADE SÃO FRANCISCO

Engenharia de Computação

DIEGO CONSTANTINI

ESTUDO E PROTOTIPAÇÃO DE UM SISTEMA WEB

VOLTADO PARA CRIAÇÃO DE ÁRVORES GENEALÓGICAS

Itatiba – S.P.

2011

DIEGO CONSTANTINI - R.A. 002200800360

ESTUDO E PROTOTIPAÇÃO DE UM SISTEMA WEB

VOLTADO PARA CRIAÇÃO DE ÁRVORES GENEALÓGICAS

Monografia apresentada ao Curso de Engenharia de Computação da Universidade São Francisco como requisito parcial para obtenção do título de Bacharel em Engenharia de Computação. Orientador: Prof. Ms. Silvio Petroli Neto

Itatiba – S.P.

2011

AGRADECIMENTOS

Agradeço imensamente a todos da minha família que, presentes ou não, me apoiaram e

compartilharam todas as batalhas que enfrentei até aqui, com muito carinho, paciência, sorriso

e principalmente confiança.

Agradeço a todos os meus colegas de curso, pelo compartilhamento do conhecimento

e principalmente pela dedicação de todos durante esta etapa de nossas vidas.

Ao meu professor e orientador Prof. Ms. Silvio Petroli Neto que me auxiliou durante

toda a elaboração e conclusão deste trabalho.

Agradeço a todos que, de alguma forma direta ou indireta me ajudaram e incentivaram

para a realização deste projeto.

RESUMO

O presente trabalho de conclusão de curso tem como objetivo principal apresentar toda a documentação de requisitos, os casos de usos das funcionalidades e também o protótipo de um sistema web para criação de árvores genealógicas, implementado utilizando HTML, Javascript e PHP, com servidor Apache e banco de dados MySQL. A documentação de requisitos apresenta todas funcionalidades que devem estar disponíveis no sistema, com seus respectivos casos de usos, não entrando em detalhes como a arquitetura que deverá será utilizada na sua implementação. O protótipo desenvolvido tem como foco principal apresentar algumas funcionalidades que estarão disponíveis no projeto e também dar uma ilustração geral das demais funcionalidades que serão implementadas futuramente. Esse sistema tem como objetivo auxiliar as pessoas que realizam estudos sobre a genealogia de sua família, proporcionando ferramentas para auxiliar os usuários na busca e troca de informações sobre seus antepassados, facilitando assim a procura de certidões obrigatórias para obtenção de cidadania.

Palavras chave: genealogia, árvores genealógicas, documento de requisitos, obtenção de cidadania, protótipo em PHP.

ABSTRACT

The main objective of this work is to present all the documentation requirements, use cases and also features a prototype web-based system for creating family trees, implemented using HTML, Javascript and PHP with Apache and the MySQL database. The documentation requirements has all features that should be available in the system with their respective use cases, not going into details as the architecture that should be used in its implementation. The prototype is focused to present some features that are available in the project and also give a general illustration of the other features that will be implemented in the future. This system aims to help people who conduct research on the genealogy of his family, providing tools to help users search and exchange information about their ancestors, thus facilitating the search of certificates required to obtain citizenship.

Key words: genealogy, family trees, requirements document, obtaining citizenship, prototype in PHP.

LISTA DE ILUSTRAÇÕES

Figura 1 - Metodologia da Prototipação ................................................................................... 13

Figura 2 - Sistema desenvolvido diretamente em HTML ........................................................ 15

Figura 3 - Sistema desenvolvido em PHP ................................................................................ 16

Figura 4 - Sistema baseado em RIA ......................................................................................... 17

Figura 5 - Exemplo de Árvore Genealógica ............................................................................ 19

Figura 6 - Exemplo de Linha do Tempo .................................................................................. 20

Figura 7 - Esquemático da Interface do FindFamily ................................................................ 25

Figura 8 - Exemplo de interface do FindFamily ...................................................................... 26

Figura 9 - Estrutura básica de uma página web ........................................................................ 27

Figura 10 - Exemplo de menu superior .................................................................................... 28

Figura 11 - Menu superior com efeito de visualização ............................................................ 28

Figura 12 - Menu de navegação implementado ....................................................................... 28

Figura 13 - Código fonte do corpo inicial ................................................................................ 29

Figura 14 - Trecho de código CSS ........................................................................................... 29

Figura 15 - Trecho da área de rodapé ....................................................................................... 30

Figura 16 - Código fonte da Figura 18 ..................................................................................... 30

Figura 17 - Estrutura HTML da funcionalidade Linha do Tempo ........................................... 31

Figura 18 - Estrutura da Linha do Tempo ................................................................................ 32

Figura 19 - CSS responsável pelas imagens dos tipos de evento ............................................. 32

Figura 20 - Imagens de cada tipo de evento ............................................................................. 33

Figura 21 - Linha do Tempo implementada ............................................................................. 33

Figura 22 - Álbum de fotos implementado ............................................................................... 34

Figura 23 - Efeito JQuery LightBox ......................................................................................... 35

Figura 24 - Trecho da estrutura HTML da página Árvore Genealógica .................................. 36

Figura 25 - Adicionar elemento na árvore ................................................................................ 37

Figura 26 - Árvore genealógica implementada ........................................................................ 38

Figura 27 - Página de instalação do PHpBB ............................................................................ 39

Figura 28 - Fórum PhpBB customizado ................................................................................... 40

Figura 29 - Página de administração do phpMyAdmin ............................................................ 42

Figura 30 - Trecho de script SQL de geração das entidades do banco de dados...................... 43

Figura 31 - Diagrama de Banco de Dados ................................................................................ 44

LISTA DE ABREVIATURAS E SIGLAS

ASP - Active Server Pages

BSD - Berkeley Software Distribution

CRUD - Create, Read, Update e Delete

CSS - Cascade Style Sheet

GIF - Graphics Interchange Format

GPL - General Public License

HTML - Hypertext Markup Language

HTTP - Hypertext Transfer Protocol

IHC - Interação Humano-Computador

IP - Internet Protocol

JPEG - Joint Photografich Experts Group

MIDI - Musical Instrument Digital Interface

MP3 - MPEG-1/2 Audio Layer 3

MPEG - Moving Picture Experts Group

PHP - Hypertext Preprocessor

PNG - Portable Network Graphics

RIA - Rich Internet Application

SGBD - Sistema de Gerenciamento de Banco de Dados

SQL - Structured Query Language

TCP - Transmission Control Protocol

UC - User Case

XML - Extensible Markup Language

WAV - Waveform audio format

SUMÁRIO

1 INTRODUÇÃO ..................................................................................................................... 9

1.1 Objetivo .............................................................................................................................. 10

1.2 Organização do Trabalho.................................................................................................... 10

2 METODOLOGIA DA PROTOTIPAÇÃO ....................................................................... 12

3 TECNOLOGIAS ................................................................................................................. 14

3.1 Sistemas Web Baseados em HTML ................................................................................... 14

3.2 Sistemas Web Baseados em Frameworks RIA................................................................... 16

4 PROJETO ............................................................................................................................ 19

4.1 Genealogia .......................................................................................................................... 19

4.2 Escopo do Projeto ............................................................................................................... 21

4.3 Teoria dos Seis Graus de Sepação ...................................................................................... 22

5 PROTÓTIPO ....................................................................................................................... 24

5.1 Layout ................................................................................................................................. 24

5.2 Linha do Tempo ................................................................................................................. 30

5.3 Fotos ................................................................................................................................... 34

5.4 Árvore Genealógica ............................................................................................................ 35

5.5 Fórum ................................................................................................................................. 38

5.6 Banco de Dados .................................................................................................................. 40

5.7 Testes .................................................................................................................................. 45

6 CONCLUSÃO ...................................................................................................................... 46

6.1 Dificuldades Encontradas ................................................................................................... 46

6.2 Implementações Futuras ..................................................................................................... 47

REFERÊNCIAS ..................................................................................................................... 48

ANEXOS ................................................................................................................................. 50

Anexo A - Documento de Especificação de Requisitos ........................................................... 51

Anexo B - Documento de Projeto de Banco de Dados............................................................. 84

9

1 INTRODUÇÃO

A ciência e a religião possuem posições distintas sobre de onde viemos. De um lado, a

ciência defende a Teoria da Evolução, de Charles Darwin, do outro, a religião prega a criação

do homem por ser superior. Diferenças à parte, as duas levantam a mesma questão, quais são

os nossos antepassados?

Esta questão sempre esteve em discussão no decorrer da história e é nesse contexto

que surgiu a Genealogia, que é uma ciência que tem como objetivo auxiliar a história no

estudo da origem, da evolução e disseminação das famílias através de seus respectivos

sobrenomes, buscando através de documentos e/ou relatos os locais onde nasceram e viveram

os nossos antecedentes.

A disseminação das famílias é representada através de uma representação gráfica

chamada Árvore Genealógica, que nos mostra as conexões familiares entre os indivíduos,

podendo nos fornecer, além dos respectivos nomes, também datas e locais de nascimento, de

casamento e falecimento. A grande maioria das pessoas que buscam obter cidadania de

determinado país começam o levantamento da documentação necessária montando sua árvore

genealógica.

Atualmente, esse levantamento é pouco auxiliado pelas ferramentas disponíveis na

internet. Em muitos casos, esse processo ainda é feito através de cansativas buscas em

documentos antigos nos cartórios brasileiros, muitas vezes sem saber se é naquele local que

estão os documentos procurados.

Como milhões de pessoas utilizam um computador com acesso à internet, seria de

grande ajuda se existisse um sistema onde os interessados pudessem disponibilizar suas

árvores genealógicas com as informações importantes sobre locais de nascimento, casamento

e falecimento aos interessados.

Foi pensando nisto e tendo em vista que atualmente não existe um sistema totalmente

gratuito que combine a criação de árvores genealógicas e permita que essas árvores se

relacionem entre si foi idealizado a proposta deste trabalho, que englobará o estudo e o

desenvolvimento de um sistema web voltado para auxiliar estes levantamentos.

10

O sistema se baseará nos conceitos de redes sociais para permitir que um usuário

cadastrado crie sua árvore genealógica, com informações sobre local e data de nascimento,

casamento e falecimento de seus familiares. Permitirá também além da criação de álbum de

fotos, a utilização dessas fotos para a busca inteligente de possíveis parentes em outros álbuns

e árvores através de reconhecimento de padrões faciais. Essa busca de parentes também

poderá ser efetuada em outras árvores cadastradas, seja por sobrenome, local ou data de

nascimento, casamento ou falecimento.

Também será possível construir a linha do tempo da família, com todos os

acontecimentos importantes, em ordem cronológica de acontecimento, deixando registrado

para as futuras gerações da família a história de seus antecedentes.

Enfim, a idéia é criar um espaço familiar, onde seja possível convidar outros

familiares para participar e com isso aproximá-los, mesmo que virtualmente, em uma época

onde os as famílias estão sendo colocadas como segundo plano na vida das pessoas.

1.1 Objetivo

O objetivo principal do projeto é o estudo e prototipação de um sistema web que

atenda as necessidades de pessoas interessadas em realizar levantamentos sobre a genealogia

de sua família, otimizando os processos necessários acerca de criação de árvores genealógicas

e permitindo o relacionamento e troca de informações entre os usuários do sistema.

1.2 Organização do Trabalho

Esse trabalho de conclusão de curso está divido em 6 capítulos, da seguinte maneira:

O capítulo 1 aborda a introdução e a contextualização do objetivo do projeto.

No capítulo 2, está descrito a metodologia utilizada no desenvolvimento do projeto.

11

O capítulo 3 mostra as tecnologias que podem ser utilizadas no desenvolvimento de

um projeto web e cita os motivos que levaram a escolha de uma tecnologia específica para

esse trabalho.

O capítulo 4 descreve o projeto como um todo, descrevendo a motivação para sua

criação e o as funcionalidades nele contidas.

Os detalhes da implementação do protótipo do sistema são mostradas no capítulo 5.

Por fim, o capítulo 6 traz a conclusão do trabalho.

O trabalho ainda contém como anexos o documentos de especificação de requisitos,

que contém todos os casos de uso do sistema e também a documentação de banco de dados do

projeto.

12

2 METODOLOGIA DA PROTOTIPAÇÃO

Um protótipo é uma versão inicial de um sistema de software, que é utilizada para

mostrar conceitos, experimentar opções de projeto e, em geral, para conhecer mais sobre os

problemas e suas possíveis soluções. O desenvolvimento rápido de um protótipo é essencial

para que os custos sejam controlados e os usuários possam fazer experiências com o protótipo

no início do processo de software. (SOMMERVILLE, 2003).

A metodologia da prototipação possui várias ramificações, dentre as quais podemos

citar a metodologia da prototipação descartável e a metodologia evolucionária.

Na metodologia evolucionária, após a aprovação do sistema, o protótipo passa por

refinamentos até se tornar o sistema final que será entregue ao cliente, ao contrário da

metodologia descartável, onde o protótipo é descartado após sua aprovação e inicia-se uma

nova implementação para ser entregue ao cliente.

Segundo Sommerville (2003), um protótipo pode ser oferecido ao cliente em

diferentes formas para o cliente, como:

- Modelo executável em computador, mostrando a interface homem-máquina e assim

permitindo ao cliente compreender a forma de interação com o software.

- Protótipo de trabalho que implemente um subconjunto dos requisitos indicados.

- Programa existente que permita representar todas ou parte das funções desejadas para

o software que será construído.

Entre as vantagens da metodologia da prototipação, Sommerville (2003) destaca:

- Um modelo de desenvolvimento interessante para sistemas representem um certo

grau de complexidade para demonstrar rigorosamente os requisitos.

- Possibilidade de demonstrar que é possível realizar a implementação do sistema

através da construção de um protótipo.

- Possibilidade de obter uma versão simplificada do sistema, com um pequeno

investimento inicial.

- A experiência adquirida no desenvolvimento do protótipo será de enorme utilidade

nas próximas etapas do desenvolvimento do sistema final, possibilitando reduzir o

custo final do projeto.

13

Na metodologia da prototipação, assim como nas demais, existem diversos problemas,

dentre as quais merecem destaques:

- Após a informação ao cliente de que o produto precisa ser reconstruído, o mesmo

exige que alguns acertos sejam aplicados para tornar o protótipo um produto, onde

frequentemente a gerência de desenvolvimento acaba cedendo aos pedidos do cliente.

- Como o que está em desenvolvimento é um protótipo, muitas vezes o desenvolvedor

faz concessões de implementação para colocar o protótipo em funcionamento

rapidamente. Isto gerará problemas se estiver sendo seguida a metodologia de

prototipação evolucionária, pois será necessário corrigir estes problemas a fim de

evitar problemas maiores futuramente.

Para o desenvolvimento do protótipo proposto neste trabalho de conclusão de curso,

foi utilizada a metodologia da prototipação evolucionária, que é composta de oito fases,

conforme Figura 1, sendo que este trabalho contempla até a fase 4 do processo.

Ao final deste trabalho, podem ser consultados o Anexo A - Documento de

Especificação de Requisitos e o Anexo B - Documento de Projeto de Banco de Dados, que

foram utilizados para o desenvolvimento do protótipo

Fonte: Adaptado de MELENDEZ, 1996.

Figura 1 - Metodologia da Prototipação

14

3 TECNOLOGIAS

Uma aplicação web pode ser definida basicamente como um sistema projetado para

ser utilizado através da internet ou em redes privadas. Trata-se de um conjunto de programas

que é executado em um servidor.

No desenvolvimento de uma aplicação web é possível a utilização de várias

tecnologias, que estão cada vez mais dinâmicas e trabalham de forma semelhante. Para um

projeto nos mesmos moldes do proposto nesse trabalho de conclusão de curso, os sistemas

web podem ser classificados em sistemas baseados em HTML (Hypertext Markup Language)

ou sistemas baseados em frameworks RIA (Rich Internet Application), de acordo com as

tecnologias utilizadas no seu desenvolvimento.

3.1 Sistemas Web Baseados em HTML

Os sistemas web baseados em HTML são divididos em duas categorias: os sistemas

desenvolvidos diretamente em HTML e os que são desenvolvidos em linguagens que geram

HTML.

Os sistemas web desenvolvidos diretamente em HTML, como o próprio nome já diz,

são desenvolvidos com HTML, podendo ainda ser utilizado Javascript e também CSS

(Cascade Style Sheet). Esse tipo de desenvolvimento geralmente é utilizado para a criação de

sites básicos, com conteúdo estático ou com mudanças eventuais, como sites pessoais e sites

publicitários.

Os sistemas web desenvolvidos em linguagens que geram HTML são desenvolvidos

com tecnologias Java, Asp (Active Server Pages), Asp.Net, PHP (Hypertext Preprocessor),

Ruby on Rails, dentre outras. Essas linguagens são utilizadas para criar sistemas ou sites com

conteúdos dinâmicos, como portais de notícias, sites de e-commerce e sites de redes sociais.

Na utilização dessas linguagens, são necessárias outras tecnologias, como Javascript, estilos

CSS, imagens (JPEG (Joint Photographic Experts Group), PNG (Portable Network

15

Graphics), GIF (Graphics Interchange Format), etc.), sons (WAV (Waveform audio format),

MIDI (Musical Instrument Digital Interface), MP3 (MPEG-1/2 Audio Layer 3), etc.) e

plugins multimídias, como o Adobe Flash, Applets Java, Microsoft ActiveX, entre outros.

Os sistemas web tradicionais centralizam toda sua codificação em uma arquitetura de

cliente-servidor. Nessa arquitetura, existem três entidades distintas: o cliente, o servidor e a

rede. Basicamente, para acessar uma determinada página, o usuário utiliza um browser

(cliente) através de uma rede, onde o cliente envia uma requisição ao servidor, o servidor

recebe a mensagem, interpreta-a e devolve a resposta ao cliente. Todo o processamento é

realizado no servidor, e o cliente apenas utiliza uma interface estática, neste caso em HTML.

Servidor e cliente estão passíveis de se comunicar porque usam as mesmas regras ou

protocolos, definidos pelo modelo Cliente/Servidor (por ex. TCP (Transmission Control

Protocol)/IP (Internet Protocol), HTTP).

A Figura 2 mostra como é a arquitetura de um sistema web desenvolvido diretamente

em HTML e a Figura 3 traz um exemplo da arquitetura de um sistema web desenvolvido em

linguagens que geram HTML, no caso do exemplo, desenvolvido em PHP.

Figura 2 - Sistema desenvolvido diretamente em HTML

16

Figura 3 - Sistema desenvolvido em PHP

3.2 Sistemas Web Baseados em Frameworks RIA

Os sistemas web baseados em frameworks RIA, que podem ser traduzidas como

Aplicações de Internet Rica, tem características e funcionalidades de softwares tradicionais

do tipo desktop. São sistemas que transferem todo o processamento da interface para o cliente,

porém mantém a maior parte dos dados, como o estado do programa, no servidor de

aplicação.

Os sistemas RIAs normalmente rodam em um navegador ou rodam localmente em um

ambiente seguro chamado sandbox. RIA é uma tendência de desenvolvimento web que vem

crescendo no mundo inteiro e possui a proposta de criar aplicativos web que são "ricos" em

sua interface. Esses sistemas usam o mínimo de HTML, o suficiente somente para invocar os

17

plugins multimídia. Neles, os plugins tomam conta do conteúdo do sistema. As principais

linguagens para o desenvolvimento de aplicações RIAs são o Adobe Flex, Microsoft

Silverlight, Oracle Java Fx e OpenLazlo. Independente da linguagem que será utilizada, a

arquitetura básica das aplicações RIA serão sempre parecidas. A principal característica é que

na maioria dos casos tem-se uma aplicação cliente e uma camada separada de serviço no

backend.

Toda a interface do sistema é carregada no lado cliente, que fica responsável pela

execução dos eventos de mouse, teclado, animações e manipulação de dados da interface. O

servidor executa apenas a lógica de negócio e acesso a base de dados. A comunicação entre os

dois lados da aplicação geralmente é feita através do uso de um XML (Extensible Markup

Language) .

A Figura 4 mostra a arquitetura de um sistema baseado em framework RIA.

Figura 4 - Sistema baseado em RIA

Como o projeto FindFamily é um sistema web baseado em HTML, para seu

desenvolvimento foi adotada as linguagens HTML, PHP e Javascript, visto que o PHP é uma

linguagem de fácil aprendizagem, suporta um grande número de banco de dados, é seguro,

compacto, possui licença gratuita, possui uma vasta documentação e exemplos disponíveis na

internet e é ideal para implementação de pequenos e médios projetos.

18

Para o desenvolvimento do protótipo foi utilizado o XAMPP, que é um servidor

independente de plataforma e software livre. Consiste principalmente da base de dados

MySQL, o servidor web Apache e os interpretadores para linguagens de script PHP e Perl. O

nome provem da abreviação de X (para qualquer dos diferentes sistemas operacionais),

Apache, MySQL, PHP, Perl. O programa está liberado sob a licença GNU e atua como um

servidor web livre, fácil de usar e capaz de interpretar páginas dinâmicas. Sua instalação é

simples, somente sendo necessário baixar o executável no site oficial e seguir os passos da

instalação. Após a instalação, basta que o desenvolvedor inicialize os serviços Apache e

MySql para ter o servidor disponível para ser utilizado.

19

4 PROJETO

4.1 Genealogia

Segundo Cobra (2001), a Genealogia é uma ciência auxiliar da História, que estuda a

origem, evolução e disseminação das famílias e seus respectivos sobrenomes ou apelidos. É a

busca de informações e subsequente montagem da árvore genealógica de uma família, com

nomes, datas e lugares por onde andaram os mais remotos familiares, mantendo-os vivos na

memória de seus descendentes.

Um dos artefatos mais importantes gerados a partir de uma pesquisa genealógica é a

Árvore Genealógica da família. Uma Árvore Genealógica pode ser definida como uma

representação gráfica genealógica que mostra as conexões familiares entre os indivíduos,

trazendo informações como o nome, datas e lugares de nascimento, casamento e óbito. A

Figura 5 nos mostra um exemplo de uma árvore genealógica.

Fonte: http://pt-br.sims.wikia.com/wiki/

Figura 5 - Exemplo de Árvore Genealógica -

20

Outro artefato que pode ser construído é uma Linha do Tempo com os acontecimentos

importantes da família. A Linha do Tempo pode ser representada graficamente como uma

espécie de tabela que contém os fatos importantes da história da família, como nascimentos,

casamentos, falecimentos, festas familiares, enfim, todo os acontecimentos da história da

família. Um exemplo de uma Linha do Tempo pode ser observada na Figura 6.

Fonte: http://sliit.lk/blog/?p=59

Figura 6 - Exemplo de Linha do Tempo

A construção desses artefatos com precisão exige que o pesquisador possua a maior

quantidade possível de documentos oficiais. Esse processo de busca das informações se

consegue através de demoradas e cansativas pesquisas em cartórios e arquivos públicos. Os

mais fanáticos pesquisadores passam a vida toda montando sua genealogia, com todos os

níveis de parentes possíveis. Para que um pesquisador obtenha uma cópia do documento

desejado, é necessário que ele efetue o pedido no local onde se encontra o registro daquele

acontecimento. Porém, na maioria dos casos, o pesquisador não possui a data nem o local

exato de onde foi efetuado o registro, necessitando solicitar uma busca no local de registro.

21

Nesse caso, toda a pesquisa é muito prejudicada, pois além de não possuir os detalhes

do acontecimento, o pesquisador também não sabe onde solicitar a busca, pelo motivo de que

antigamente muitas cidades não possuíam um cartório local e esses acontecimentos eram

registrados em hospitais, cemitérios e igrejas, que eram os responsáveis da época por manter

essas informações.

Em muitos casos, conversando com as pessoas mais velhas da família o pesquisador

consegue a informação do local onde foi registrado o acontecimento desejado. Porém, chega

em certo momento da pesquisa que nenhum membro vivo da família possui as informações

desejadas, o que leva muitos a desistirem de continuar o levantamento de seus antepassados e

é exatamente esse problema que motivou a elaboração do projeto desse trabalho de conclusão

de curso, denominado como FindFamily.

4.2 Escopo do Projeto

O FindFamily é um sistema que permite ao usuário a geração dos artefatos que uma

pesquisa genealógica possibilita, como árvore genealógica, linha do tempo, álbum de fotos,

além de permitir a troca de informações entre os usuários e realizar buscas sobre possíveis

familiares que estejam cadastrado no sistema. Atualmente não existe um sistema que seja

totalmente gratuito e atenda as necessidades que serão descritas nesse escopo. As únicas

ferramentas disponíveis são totalmente ou parcialmente pagas, o que acaba afastando muitas

pessoas que desejam manter e compartilhar um registro de seu histórico familiar.

O sistema disponibilizará gratuitamente todas as funcionalidades descritas acima, de

forma que com o tempo seja formada uma grande base de informações sobre o histórico das

famílias, possibilitando que uma pessoa interessada em efetuar o levantamento de seus

antepassados consiga encontrar informações sobre seus parentes até então desconhecidas

pelos familiares mais próximos de seu dia-a-dia.

O sistema permitirá que um usuário cadastrado crie e gerencie uma árvore genealógica

com as informações sobre seus descendentes e ascendentes. O usuário terá a possibilidade de

22

inserir novos membros na árvore de acordo com os resultados de sua pesquisa. Também será

possível a manutenção de uma linha do tempo com os acontecimentos que o usuário julgar

importantes deixar registrado em seu perfil.

Outras funcionalidades como manutenção de álbum de fotos da família, busca de

familiares e registro da história da família também estarão disponíveis, além de um fórum

onde todos os usuários do sistema poderão trocar mensagens e compartilhar informações

sobre pesquisas que envolvem uma família em comum. Entre todas as funcionalidades,

podemos destacar a busca inteligente, que será efetuada de duas maneiras distintas, por

reconhecimento facial e pelas informações dos membros na árvore genealógica do usuário.

A busca inteligente por reconhecimento facial será executada automaticamente pelo

sistema toda vez que o usuário inserir uma nova foto em seus artefatos, seja na árvore

genealógica, na linha do tempo ou em seu álbum de fotos. No momento da inserção, o sistema

irá efetuar uma varredura nas fotos dos artefatos de todos os usuários do sistema, buscando

semelhanças faciais nas fotografias.

A busca inteligente pelas informações dos membros na árvore genealógica do usuário

também será executada automaticamente pelo sistema no momento da inserção de um novo

membro na árvore genealógica do usuário, porém só efetuará a busca em outras árvores

genealógicas, comparando as informações como nomes, datas e locais de nascimento com os

membros das árvores genealógicas dos outros usuários. Nas duas maneiras de busca, o

sistema irá exibir para o usuário o resultado e informando sobre possíveis familiares que

poderão ser encontrados. Todas as funcionalidades contidas FindFamily, com seus

respectivos casos de uso podem ser consultadas no Anexo A - Documento de Especificação

de Requisitos, no final desse trabalho de conclusão de curso.

4.3 Teoria dos Seis Graus de Separação

A Teoria dos Seis Graus de Separação foi originada a partir de um estudo científico

que criou a teoria de que, no mundo, para que duas pessoas quaisquer estejam ligadas, são

23

necessários apenas seis laços de amizade. Esse estudo sobre as conexões entre as pessoas foi

realizado em 1967 por Stanley Milgram, um pesquisador americano em comportamento

social, que veio comprovar um livro de contos escrito em 1929, pelo húngaro Frigyes

Karinthy, que trazia a teoria de que o mundo é uma pequena aldeia, onde todos se conhecem.

A experiência realizada por Milgram foi realizada com 160 pessoas que viviam em

Boston e Omaha, nos Estados Unidos. Ele enviou uma correspondência com uma pessoa alvo

para cada um dos participantes, onde o participante deveria enviar a carta para a pessoa alvo,

caso a conhecesse, ou para uma pessoa qualquer de suas relações que tivesse maior chance de

conhecer a pessoa. A pessoa alvo, ao receber a carta, deveria enviar a carta para os

responsáveis pelo estudo. Ao final do experimento, Milgram constatou que a correspondência

passou, em média, por seis pessoas até chegar ao seu destinatário final.

Estes estudos sobre grau de separação incluem-se entre os modernos estudos de

análise de redes sociais. Inúmeras pesquisas vem sendo realizadas, como por exemplo, na

identificação da estrutura das redes de colaboração de cientistas, redes de cooperação e de

transmissão de doenças, redes de páginas e sites na web.

Analisando esta teoria, podemos perceber como pode eficiente o sistema proposto no

auxílio aos usuários para encontrar parentes desconhecidos ou informações sobre algum

antepassado, pois em uma rede com vários usuários, a teoria nos mostra que no máximo seis

nós de amizade a partir de um laço de amizade do usuário, poderá ser encontrado alguém que

contenha as informações desejadas.

24

5 PROTÓTIPO

Na elaboração do protótipo do projeto, foi utilizado de alguns scripts opensource

disponíveis gratuitamente na Internet, onde foram feitas as modificações necessárias para

melhor adaptá-los às necessidades do protótipo. A reutilização de códigos e componentes é

algo cada vez mais praticada no mercado de desenvolvimento de software, principalmente em

projetos que utilizam metodologias ágeis. Este capítulo irá abordar todos os códigos de

terceiros que foram utilizados, a forma de como foram modificados para serem utilizados e

como eles interagem com os códigos PHP criados especificamente para o protótipo.

5.1 Layout

A interface com o usuário é considerada o elemento mais importante de um sistema.

Se a interface for mal projetada, a habilidade do usuário de extrair todo o poder

computacional de uma aplicação pode ficar severamente comprometida. De fato, uma

interface fraca pode provocar a falha de uma aplicação que por outro lado tenha sido bem

projetada e solidamente implementada. (PRESSMAN, 2001).

Essa porta de entrada do sistema é a parte fundamental para que um sistema web

obtenha sucesso entre seus usuários, pois é responsável diretamente em fazer com que eles

consigam realizar as tarefas de maneira rápida, fácil e de forma satisfatória. Na Web a

interface tem um papel ainda mais importante que no software tradicional, pois ela é a

primeira impressão do usuário em relação ao sistema oferecido. Uma interface mal desenhada

pode desapontar o usuário e ele pode procurar outro site. No desenvolvimento do projeto, é

interessante que todas as interfaces do sistema adotem o mesmo padrão gráfico e que sigam os

critérios de usabilidade. Usabilidade é o termo técnico usado para descrever a qualidade de

uso de uma interface. Esta qualidade está associada aos seguintes princípios de facilidade de

aprendizado, facilidade de lembrar como realizar uma tarefa após algum tempo, rapidez no

25

desenvolvimento de tarefas, baixa taxa de erros e satisfação subjetiva do usuário. (NIELSEN,

1993).

A usabilidade das interfaces do FindFamily se baseiam na estrutura hierárquica de

utilização das telas, e pelo design limpo das mesmas. Todas as interfaces foram desenvolvidas

seguindo o mesmo padrão gráfico definido no inicio do desenvolvimento. O esquemático das

interfaces é mostrado na Figura 7.

Figura 7 - Esquemático da Interface do FindFamily

A interface foi dividida em quatro áreas e tem objetivos distintos:

1 – Área onde o usuário ira selecionar qual ação deseja realizar.

2 – Área onde estão localizados os menus da aplicação.

3 – Área onde será realizada a edição, criação e visualização de novos objetos.

4 – Área de rodapé com mensagens e informações para contato.

A Figura 8 exemplifica uma interface implementada com a distribuição dos elementos

dentro das áreas discriminadas acima.

26

Figura 8 - Exemplo de interface do FindFamily

A definição e implementação do template utilizado no FindFamily foi auxiliada pela

ferramenta Joomla!. O Joomla! é um sistema de gerenciamento do conteúdo de sites que

permite a usuários sem conhecimento técnico gerenciarem seu conteúdo de maneira simples e

eficaz. É desenvolvido em código aberto (open source), o que possibilita que qualquer

programador possa fazer melhorias no seu código e disponibilizá-lo para comunidade. Ele

também é um software livre, ou seja, não necessita de licença e pode ser usado sem custos.

Para este projeto, foi optado pela estrutura do layout JomSocial, onde foram realizados as

modificações necessárias nos códigos CSS, HTML e Javascript para melhor adaptar-se no

contexto do sistema FindFamily.

A construção de uma página web segue basicamente uma estrutura de cabeça e corpo.

A Figura 9 mostra a estrutura básica da estrutura de uma página em HTML.

27

Figura 9 - Estrutura básica de uma página web

Na implementação do layout do FindFamily, foi utilizada a mesma estrutura porém

com maior complexidade que o exemplo mostrado. A estrutura do documento HTML foi

dividida em 4 áreas distintas:

- Área do logotipo de menu superior, referente a área 1 da Figura 8.

- Área do menu de navegação, referente a área 2 da Figura 8.

- Área do corpo principal da página, referente a área 3 da Figura 8.

- Área do rodapé, referente a área 4 da Figura 8.

Foi adotado esse padrão de divisão em praticamente todas as páginas do protótipo.

Dentro do conteúdo demarcado pelas tags <head></head> de cada página contém a

chamada para o documento CSS, que é utilizado para definir a apresentação de documentos

escritos em linguagens de marcação. Seu principal benefício é prover a separação entre o

formato e o conteúdo de um documento. No protótipo, quase todas as páginas contém seu

próprio CSS, salvo algumas exceções onde foi possível reaproveitar um documento já

existente.

A área do logotipo e menu superior contém a implementações que permitem aos

usuários selecionarem qual ação desejam realizar no sistema, resumidamente, é onde ficam as

operações de CRUD (Create, Read, Update e Delete) das páginas. A Figura 100 contém um

exemplo do menu superior da funcionalidade de Linha do Tempo, com as opções disponíveis

para o usuário. Todas essas implementações já vem disponíveis pelo JomSocial, sendo

necessário apenas edições dos arquivos HTML e em seu CSS conforme a necessidade do

projeto.

28

Figura 100 - Exemplo de menu superior

Dependendo da funcionalidade acessada, a operação do menu utiliza-se de funções

Javascript para exibição dos efeitos de visualização, como mostra a Figura 111 , da opção

Criar Álbum, disponível na funcionalidade Fotos.

Figura 111 - Menu superior com efeito de visualização

A área do menu de navegação contém o principal menu do sistema, que permite ao

usuário navegar entre as páginas do protótipo. Esse menu está presente em praticamente

todas as páginas do projeto. Na Figura 122 mostra o menu de navegação implementado.

Figura 122 - Menu de navegação implementado

29

Cada ação chamada pelo menu de navegação ou pelo menu superior reflete na área do

corpo principal da página, onde são exibidos o corpo específico para cada funcionalidade.

Esta é a área onde foram necessárias as maiores adaptações do layout JomSocial, tanto na

parte HTML como na parte CSS, pois cada página tem conteúdo específicos para a

funcionalidades, principalmente referente ao posicionamento dos elementos da página. Na

seção 3 da Figura 8, é mostrado o corpo da página inicial do sistema. Um parte do código

fonte dessa implementação pode ser observada na Figura 133, juntamente com a Figura 144,

que contém um trecho do código CSS responsável pela formatação desse conteúdo. Os dois

códigos também são fornecidos pelo JomSocial, sendo necessário também ajustes em sua

parte HTML e CSS conforme a necessidade do projeto.

Figura 133 - Código fonte do corpo inicial

Figura 144 - Trecho de código CSS

30

Por fim, o layout é finalizado pelo área de rodapé. O rodapé é padrão para todas as

páginas do protótipo. Ela é subdividida em três elementos, o Follow us, Contato e Sobre. A

área de rodapé é mostrada na seção 4, da Figura 8. Destacamos a implementação da área com

as informações de Contato, que pode ser melhor visualizada na Figura 155, juntamente com

sua implementação na Figura 166.

Figura 155 - Trecho da área de rodapé

Figura 166 - Código fonte da Figura 18

5.2 Linha do Tempo

Para a funcionalidade Linha do Tempo, o projeto tomou como base o script demo

Advanced Event Timeline, implementado em PHP, CSS e JQuery. O script também tem seu

31

código aberto e para a sua utilização no contexto deste projeto, foram necessárias algumas

customizações em suas implementações, principalmente na parte CSS. A estrutura básica de

seu código fonte está contida na Figura 171717. Este código fica localizado dentro da área do

corpo principal da página.

Figura 1717 - Estrutura HTML da funcionalidade Linh a do Tempo

Dentro dessa estrutura, destacamos duas divs - a timelineLimiter com a timelineScroll

posicionada dentro dela. A timelineLimiter limita o tamanho de visualização da Linha do

Tempo para a largura definida no CSS e a timelineScroll tem seu tamanho ampliado

conforme demanda, conforme novos eventos são incluídos ou excluídos da lina. Assim,

apenas uma parte maior da div interna é visível e o restante pode ser rolado para a esquerda

ou para a direita por um controle deslizante que é disponibilizado pelo Advanced Event

Timeline, sendo necessário apenas a importação do arquivo Javascript e a edição do CSS, se

necessário.

32

A timelineScroll contém o código PHP, onde é gerado a lista de eventos do usuário. O

código busca todos os eventos no banco de dados e os agrupa por ano em uma matrizes de

datas. Em seguida é realizado uma iteração nas matrizes, onde são gerados elementos HTML

<li></li> para a exibição na página. Para este código PHP, a única customização necessária

é relativa a tabela em qual os eventos estão inseridos no banco de dados.

O resultado gerado pelo código PHP obedece a estrutura contida na Figura 181818.

Figura 1818 - Estrutura da Linha do Tempo

Também foi necessário a edição do CSS, principalmente o trecho de código onde são

referenciadas as imagens que devem ser utilizadas como legenda para cada evento. O trecho

de código que faz essa formatação é mostrada da Figura 191919 e as legendas utilizadas para

cada tipo de evento da Linha do Tempo do protótipo podem ser visualizadas na Figura 2020.

Figura 1919 - CSS responsável pelas imagens dos tipos de evento

33

Figura 200 - Imagens de cada tipo de evento

Os scripts do CRUD da funcionalidade foram implementados utilizando código PHP,

e seus diagramas de casos de uso estão disponibilizados no Anexo A assim como as entidades

do banco de dados que esses scripts utilizam podem ser encontrados no Anexo B ao final

deste trabalho. Por fim, a Figura 211 contém o resultado final da implementação da

funcionalidade Linha do Tempo do projeto FindFamily.

Figura 211 - Linha do Tempo implementada

34

5.3 Fotos

O FindFamily disponibiliza a funcionalidade Fotos, mostrada na Figura 222, na qual

os usuários podem criar álbum de fotos e inserir fotos conforme suas necessidades.

A implementação dessa funcionalidade, contou com o auxílio do o plugin jQuery

lightBox, que é utilizado para exibir as fotos e navegar pelas fotos na mesma página de forma

não-obstrutiva.

Sua utilização é muito simples, sendo necessários seguir apenas 03 passos, que

envolvem a chamada dos arquivos de Javascript na página, a edição do CSS para formatar a

visualização e informar na <div> HTML qual tipo de visualização deseja utilizar. Essa

configuração pode ser consultada com mais detalhes acessando o link corresponde ao JQuery

LightBox disponível nas Referências deste trabalho de conclusão de curso. O resultado dessa

implementação pode ser observada na Figura 233.

Figura 222 - Álbum de fotos implementado

35

Figura 233 - Efeito JQuery LightBox

Todos os diagramas de casos de uso da funcionalidade estão disponibilizados no

Anexo A - Documento de Especificação de Requisitos assim como as entidades do banco de

dados utilizadas ser encontradas no Anexo B - Documento de Projeto de Banco de Dados.

5.4 Árvore Genealógica

Na implementação da funcionalidade Árvore Genealógica foi auxiliada com a

utilização do script KB Family Tree, também gratuito e com código aberto, desenvolvido em

PHP, HTML e CSS e que auxilia na criação e exibição da árvore genealógica.

Originalmente, o KB Family Tree disponibiliza em PHP todas as funções responsáveis

por manter e exibir um árvore genealógica, porém sem suporte para múltiplos usuários, ou

seja, as funções não fazem a distinção de elementos de usuários diferentes, já que eles são

inseridos na mesma entidade do banco de dados. Foi necessário modificar a estrutura da

entidade do banco que dados que armazena esses elementos e alguns trechos dos códigos para

possibilitar que o script consiga realizar essa separação e exibir a árvore genealógica somente

com os elementos do usuário que desejado.

36

A chamada para a função do KB Family Tree é realizada na área do corpo principal da

página, que por sua vez, através de funções PHP, exibe a árvore genealógica na página

juntamente com o menu que possibilita manipulá-la.

No código exibido na Figura 244, destacamos a linha 26, que realiza a chamada da

função userFamilyTree(), responsável por retornar a árvore genealógica do usuário e a linha

37, responsável por chamar a função PHP disponibilizada pelo KB Family Tree que exibe o

menu de manipulação da árvore. Neste código, somente foi necessário realizar a tradução para

a língua portuguesa das informações exibidas para o usuário.

Figura 244 - Trecho da estrutura HTML da página Árvore Genealógica

37

O CRUD para esta funcionalidade segue o mesmo padrão para todos os elementos da

árvore e também foram implementados em PHP. A maior parte da customização necessária

no script foram realizadas na parte da formatação visual, nos arquivos CSS, onde foram

alterados o posicionamento dos elementos, cores e imagens. A Figura 252525 mostra a página

onde é permitido adicionar um elemento do tipo irmão na árvore genealógica do usuário. O

Anexo A - Documento de Especificação de Requisitos e o Anexo B - Documento de Projeto

de Banco de Dados também contém, respectivamente, os diagramas de casos de uso e as

entidades do banco de dados utilizadas pela funcionalidade.

Figura 2525 - Adicionar elemento na árvore

O resultado final da implementação da funcionalidade de Árvore Genealógica é

mostrada na Figura 262626. As cores facilitam a identificação de um elemento. A cor azul

identifica um elemento do sexo masculino, a cor rosa identifica um elemento do sexo

feminino e a cor marrom identifica que o familiar já é falecido. O menu lateral permite a

escolha de qual tipo de elemento deseja-se adicionar na árvore genealógica e direcionado o

usuário para a página de inclusão. Este menu alterasse conforme o membro familiar

selecionado na árvore.

38

Figura 2626 - Árvore genealógica implementada

5.5 Fórum

O fórum disponibilizado no sistema aos usuários, permitindo que eles troquem

informações sobre os diversos assuntos relacionados à genealogia, como busca de certidões,

dicas para obtenção de cidadania entre outros foi implementado utilizando o sistema de fóruns

PhpBB, versão 3.0.9. O PhpBB é um sistema para gerenciamento de fóruns de discussão

construído através de scripts em PHP, um software livre, sob a licença GPL (General Public

License).

A instalação do sistema de fórum PhpBB em qualquer servidor é simples, bastando

apenas descompactar o pacote de instalação em uma pasta, acessar a página de instalação,

mostrada na Figura 272727, e seguir as instruções do passo a passo. Durante a instalação, são

criadas as estruturas das entidades do banco de dados no banco informado pelo usuário. Essas

entidades são criadas com um prefixo definido pelo usuário durante a instalação,

possibilitando assim que o administrador do banco de dados identifique facilmente quais são

as entidades que pertencem ao sistema de fórum.

39

Figura 2727 - Página de instalação do PHpBB

A grande vantagem em utilizá-lo é que, além de ser gratuito, o sistema tem vários

templates disponíveis para escolha, conta com uma comunidade gigantesca para suporte e

permite que qualquer desenvolvedor realize qualquer alteração nos códigos conforme lhe for

conveniente. Tem suporte a internacionalização com 44 traduções disponíveis, possibilita o

uso de um código de confirmação no registro e também monitora o número de tentativas de

login para reforçar a segurança.

Para o sistema de fórum instalado, foi optado pelo tema de template ProSilver, pois suas

cores seguem o mesmo padrão das outras funcionalidades do protótipo. A única customização

necessária foi a imagem principal que identifica o fórum, sendo trocada pelo logotipo do

projeto. Essa customização é feita ao final da instalação, acessando o Painel de Controle da

Administração. O resultado da instalação pode ser visto na Figura 282828.

40

Figura 2828 - Fórum PhpBB customizado

Esta é a única funcionalidade onde os diagramas de casos de uso não estão

disponibilizados no Anexo A - Documento de Especificação de Requisitos, assim como as

entidades do banco de dados utilizadas ser encontradas no Anexo B - Documento de Projeto

de Banco de Dados, pois como o PhpBB está em constante atualização, se esses documentos

referenciassem este módulo se tornariam desatualizado em pouco tempo. Essas informações

podem ser consultadas diretamente na página do PhpBB, disponível nas Referências

Bibliográficas ao final deste trabalho.

5.6 Banco de Dados

Um banco de dados pode ser definido como um conjunto de dados integrados que tem

por objetivo atender a uma comunidade de usuários. (HEUSER, 1998) .

Para manter esses dados compartilhados são utilizados SGBD (Sistema de

Gerenciamento de Banco de Dados). Um SGBD é um software que incorpora as funções de

definição, recuperação e alteração de dados em um banco de dados. (HEUSER, 1998) .

41

Partindo do princípio que um dos objetivos desse trabalho é a utilização de

tecnologias gratuitas, esse capítulo é focado nos dois principais banco de dados gratuitos

mais utilizados pela comunidade de desenvolvedores atualmente, o MySql e o PostgreSQL.

O MySQL é um dos sistemas de gerenciamento de banco de dados mais utilizado

atualmente e é muito utilizado atualmente por ser otimizado para aplicações web. É muito

comum encontrar serviços de hospedagem de sites que oferecem o MySQL e o suporte a

linguagem PHP, justamente porque ambos trabalham muito bem em conjunto. Sua maior

utilização é no desenvolvimento de aplicações onde a velocidade é importante. Entre as

vantagens que podemos destacar é que o MySQl é um banco de dados seguro, gratuito,

versátil e com código aberto, disponível sob uma licença BSD (Berkeley Software

Distribution).

O PostgreSQL é destacado por ser mais robusto que o MySQL e possuir mais

recursos. É um banco de dados otimizado para aplicações mais complexas, ou seja, que

necessitam de grandes volumes de dados ou que processam informações mais críticas. Para

um sistema de comércio eletrônico de porte médio ou alto o PostgreSQL é mais indicado, pois

é capaz de lidar de maneira satisfatória com o grande pacote de dados gerado pelas operações

de um sistema como esse.

O MySQL é mais ágil se quando comparado ao PostgreSQL. Assim, se a aplicação

não envolve operações complexas e necessita de retornos mais rápidos, o MySQL é a opção

mais indicada, pois é um banco de dados otimizado para oferecer um rápido processamento

das informações sem exigir muito do hardware. Assim, se a aplicação necessita de um banco

de dados para armazenar o conteúdo do um site, de um fórum ou necessita manter um

cadastro de usuários de um portal, o MySQL é mais adequado para esse contexto, pois tais

aplicações não necessitam dos recursos avançados que o PostgreSQL oferece. Ambos,

MySQL ou PostgreSQL, poderiam ser utilizados no desenvolvimento desse projeto, mas por

uma questão de familiaridade foi optado pelo MySQL.

O XAMMP disponibiliza para o desenvolvedor a ferramenta phpMyAdmin, mostrado

na Figura 292929, que permite criar de maneira fácil e rápida todas as entidades do banco de

dados do sistema.

42

Figura 2929 - Página de administração do phpMyAdmin

A ferramenta gera automaticamente os scripts de criação de toda a estrutura do banco

de dados na linguagem SQL (Structured Query Language), assim o desenvolvedor pode

armazená-lo em local seguro e, se necessário, recriar rapidamente o toda a estrutura do banco

de dados apenas executando o script. Um trecho do de script de criação das entidades do

protótipo do FindFamily pode ser observado na Figura 3030.

No final desse trabalho, pode ser consultado o Anexo B - Documento de Projeto de

Banco de Dados que contém todo o dicionário de dados do projeto, incluindo a descrição de

todos os atributos de todas entidades do banco de dados do projeto.

43

Figura 300 - Trecho de script SQL de geração das entidades do banco de dados

A Figura 311 mostra o Diagrama de Banco de Dados do sistema, com as tabelas

mínimas obrigatórias o protótipo funcionar corretamente. O diagrama não contempla as

44

tabelas utilizadas pela funcionalidade Fórum, pois a integração desta funcionalidade com

restante do sistema não foi contemplada na implementação do protótipo.

Figura 311 - Diagrama de Banco de Dados

45

5.7 Testes

No ciclo de desenvolvimento do software, os testes estão presentes com a finalidade

de encontrar erros o mais cedo possível e minimizar os custos de manutenção do software. As

metodologias, as técnicas, as atividades e os processos visão otimizar o processo de teste com

o objetivo de produzir o software de qualidade. De fato, os testes nos sistemas para a Web

são um desafio ainda maior, pois estes sistemas podem ser acessados utilizando diferentes

browsers, sistemas operacionais, plataformas de hardware, etc.

Neste projeto, foram realizados apenas os testes básicos, como testes de navegação,

com verificação de links e usabilidade e testes com as operações de CRUD das

funcionalidades, quando implementadas. Não foram realizados testes de portabilidade, então o

protótipo desenvolvido neste trabalho foi apenas testado no browser Firefox, versão 4.0, não

sendo garantido sua utilização em outros browser de maneira eficiente bem como testes de

desempenho para avaliar o comportamento do sistema com vários usuários acessando as

funcionalidades simultaneamente.

46

6 CONCLUSÃO

O desenvolvimento deste trabalho de conclusão de curso permitiu, acima de tudo,

agregar conhecimento sobre as tecnologias utilizadas no desenvolvimento de sistemas web,

principalmente a linguagem de programação PHP e também conhecimentos sobre HTML e

CSS, que eram praticamente nulos antes do início do trabalho. O uso das tecnologias

estudadas e aplicadas em conjunto com os conhecimentos adquiridos durante o curso de

Engenharia de Computação, como Banco de Dados, Engenharia de Software, Interface

Humano Computador, Estrutura de Dados e Algoritmos e Programação de Computadores

foram imprescindíveis para que fosse possível a conclusão deste trabalho. Portanto, desde a

fase de escrita do documento de requisitos até a implementação do protótipo, foi possível

articular diversos conceitos de diferentes áreas da engenharia.

O projeto FindFamily foi elaborado tendo em vista a falta de um sistema totalmente

gratuito que atenda os objetivos descritos no decorrer do trabalho. A idéia do projeto partiu

da dificuldade encontrada pelo próprio autor em efetuar o levantamento de sua árvore

genealógica para fins de localização da documentação necessária para obtenção de cidadania,

neste caso específico, a italiana. Portanto, é altamente viável o aperfeiçoamento do projeto

para que seja disponibilizado na rede para que a grande comunidade interessada nos assuntos

sobre Genealogia possam trocar informações que facilite estes levantamentos familiares.

6.1 Dificuldades Encontradas

Durante o desenvolvimento deste trabalho surgiram várias dificuldades,

principalmente nas tecnologias de desenvolvimento utilizadas para sistemas Web, mais

especificamente PHP e CSS que até então, eram praticamente desconhecidas pelo autor. Essas

dificuldades foram encaradas como uma oportunidade de aprendizado onde o conhecimento

adquirido poderá ser utilizado no crescimento de sua vida profissional.

47

6.2 Implementações Futuras

Analisando o protótipo implementado e o projeto apresentado como um todo, pode ser

constatado várias melhorias e funcionalidades que ainda podem ser implementadas

futuramente, das quais podem ser citadas:

- Busca inteligente por reconhecimento facial, que seria executada na inserção de uma

nova foto em algum artefato do sistema.

- Busca inteligente pelas informações dos membros na árvore genealógica do usuário.

- Integração entre as árvores genealógicas de usuários da mesma família.

- Floresta, com as árvores genealógicas de amigos.

- Integração do login de usuário com a funcionalidade de Fórum.

- Sistema de comentário em fotos e na árvore genealógica.

- Finalização da implementação de todos os casos de uso constantes no documento de

requisitos.

.

48

REFERÊNCIAS

ADVANCED EVENT TIMELINE WITH PHP-CSS-JQUERY. Tutorialzine. Disponível em:

<http://tutorialzine.com/2010/01/advanced-event-timeline-with-php-css-jquery>.

Acesso em: 02 de outubro de 2011.

BOOCH, Grady. UML: Guia do Usuário, 2ª ed. São Paulo, SP: Campus, 2005. 474 p.

DESIGN E USABILIDADE EM SISTEMAS WEB. Disponível em:

<http://www.dimap.ufrn.br/~jair/diuweb/index.html>. Acesso em: 18 de outubro de 2011.

FAMILY TREE. Free Php Scripts. Disponível em: <http://scripts.kunals.com/script/family-

tree>. Acesso em: 15 de outubro de 2011.

FREEMAN, Elisabeth. Use a Cabeça HTML com CSS e XHTML. 2ª ed. São Paulo, SP:

Alta Books, 2008. 616 p.

GENEALOGIA NET. Disponível em: <http://www.genealogia.net>. Acesso em: 08 de março

de 2011.

HEUSER, Carlos A. Projeto de Banco de Dados, 4ª ed. Porto Alegre, RS: Sagra Luzzato,

1998. 206 p.

JOOMSOCIAL. Disponível em: <http://www.jomsocial.com>. Acesso em: 23 de junho de

2011.

JOOMLA. A True Open Source Community. Disponível em: <http://www.joomla.org>.

Acesso em: 23 de junho de 2011.

49

JQUERY LIGHTBOX. Disponível em: <http://leandrovieira.com/archive/jquery-lightbox-

plugin>. Acesso em: 08 de setembro de 2011.

MELENDEZ, Rubem Filho. Prototipação de Sistemas de Informações : fundamentos,

técnicas e metodologias. São Paulo, SP: Livros técnicos e científicos. 1996.

PHPBB. Creating Communities. Disponível em: <http://www.phpbb.com>. Acesso em: 09 de

setembro de 2011.

PRESSMAN, Roger S. Engenharia de Software, 5ª ed. Rio de Janeiro, RJ: McGraw-Hill,

2002. 843 p.

SEIS GRAUS DE SEPARAÇÃO. Disponível em: <http://www.webcontexto.com.br/midias-

sociais/ainda-e-valida-a-teoria-dos-6-graus-de-separacao>. Acesso em: 02 de outubro de

2011.

SOMMERVILLE, Ian. Engenharia de Software, 6ª ed. Rio de Janeiro, RJ: Prentice-Hall,

2003. 606 p.

XAMPP. Disponível em <http://www.apachefriends.org/pt_br/xampp-windows.html>.

Acesso em: 04 de abril de 2011.

WATRALL, Ethan. Use a Cabeça! Web Design, 1ª ed. São Paulo, SP: Alta Books, 2009.

504 p.

50

ANEXOS

51

ANEXO A – Documento de Especificação de Requisitos

FINDFAMILY

Documento de

Especificação de Requisitos

52

1. INTRODUÇÃO

1.1 Objetivo do documento

O objetivo deste documento é especificar as funcionalidades que devem estar contidas

no sistema.

1.2 Escopo do documento

O escopo deste documento é apresentar as funcionalidades que devem estar

disponíveis no sistema. Neste documento não estão sendo tratados aspectos como prazos de

desenvolvimento e custos do projeto, bem como a arquitetura que deverá será utilizada.

1.3 Glossário

1.3.1 Abreviaturas UC – User Case (Caso de Uso).

1.4 Conceitos

Árvore Genealógica - é um histórico de uma parte dos ancestrais de uma pessoa ou

família. Mais especificamente, trata-se de uma representação gráfica genealógica para mostrar

as conexões familiares entre indivíduos, trazendo seus nomes e, algumas vezes, datas e

lugares de nascimento, casamento, fotos e falecimento.

Linha do Tempo - uma linha do tempo registra os fatos importantes dos

acontecimentos, no contexto deste projeto, registrará os acontecimentos como nascimentos,

casamentos, falecimentos, festas familiares, enfim, todo os acontecimentos da história da

família.

Floresta - Coleção com as árvores/perfis de amigos ou familiares do usuário.

1.5 Convenções do Documento

[UC-x] � símbolo [UC-] seguido da numeração x, onde:

53

• [UC-] é o símbolo que indica que o objeto descrito se trata de um caso de uso.

• [x] é a numeração entre ‘colchetes’ que representa o número do caso de uso no

documento em questão.

2. OBJETIVOS E ESCOPO DO PRODUTO

2.1 Objetivos do Sistema

O objetivo do sistema é atender as necessidades de pessoas interessadas em realizar

levantamentos sobre a genealogia de sua família, otimizando os processos necessários acerca

de criação de árvores genealógicas e permitindo o relacionamento e troca de informações

entre os usuários do sistema.

2.2 Escopo do Produto

O escopo do produto a ser desenvolvido é permitir a criação dos elementos

componentes de um registro familiar, como árvore genealógica, linha do tempo, álbum de

fotos, além de permitir a troca de informações entre os usuários e realizar buscas sobre

possíveis familiares que estejam cadastrado no sistema.

3. DESCRIÇÃO DO PROBLEMA

Atualmente, não existe na internet um sistema que seja totalmente gratuito e atenda as

necessidades descritas no escopo do produto. As únicas ferramentas disponíveis são

totalmente ou parcialmente pagas, o que acaba afastando muitas pessoas que desejam manter

e compartilhar um registro de seu histórico familiar.

A proposta apresentada visa disponibilizar gratuitamente todas as funcionalidades

descritas no escopo, de forma que com o tempo, se construa uma grande base de informações

sobre o histórico das famílias, possibilitando que se encontre parentes até então desconhecidos

em vários lugares ao redor do mundo.

54

4 CASOS DE USO.

4.1 [UC-01] - Efetuar Login no Sistema

4.1.1 Atores. Usuário.

4.1.2 Descrição. Funcionalidade que permite que o ator efetue o login no sistema.

4.1.3 Pré-Condição.

O ator deve estar cadastrado no sistema.

4.1.4 Conseqüências. O ator será logado no sistema.

4.1.5 Curso Normal.

Curso [1] Efetuar Login.

4.1.5.1 O ator solicita ao sistema que executa a funcionalidade que permite efetuar o login no sistema.

4.1.5.2 O sistema solicita o preenchimento do usuário e senha. 4.1.5.3 O ator informa o usuário e senha. 4.1.5.4 O ator clica no botão Login. 4.1.5.5 O sistema valida as informações e efetua o login. 4.1.5.6 O ator é direcionado para a página principal.

55

4.1.5.7 Caso de uso encerrado.

4.1.6 Curso Alternativo. Não possui.

4.1.7 Curso de Exceção.

Curso [2] Usuário ou senha inválidos.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.1.5.2.

Curso [3] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.1.5.2.

4.1.8 Freqüência de Uso. Alta.

4.2 [UC-02] - Realizar Cadastro

4.2.1 Atores. Usuário.

4.2.2 Descrição. Funcionalidade que permite ao ator realizar um cadastro de um novo usuário.

56

4.2.3 Pré-Condição. Não há.

4.2.4 Conseqüências. Um novo usuário será cadastrado no sistema.

4.2.5 Curso Normal.

Curso [4] Realizar Cadastro.

4.2.5.1 O ator solicita ao sistema que executa a funcionalidade que permite realizar um novo cadastro de usuário no sistema.

4.2.5.2 O sistema solicita o preenchimento dos dados necessários,. 4.2.5.3 O ator insere os dados solicitados. 4.2.5.4 O ator clica no botão Cadastrar. 4.2.5.5 O sistema verifica se os dados inseridos são válidos. 4.2.5.6 O sistema insere um novo usuário no banco de dados. 4.2.5.7 O sistema exibe a mensagem de sucesso. 4.2.5.8 A ator é direcionado para a página de login. 4.2.5.9 Caso de uso encerrado.

4.2.6 Curso Alternativo. Não possui.

4.2.7 Curso de Exceção.

Curso [5] Verificação dos atributos no passo 4.2.5.5.

O sistema apresenta uma mensagem explicando os erros; O sistema retorna para o passo 4.2.5.2.

Curso [6] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.2.5.2.

4.2.8 Freqüência de Uso. Alta.

57

4.3 [UC-03] - Recuperar Senha

4.3.1 Atores. Usuário.

4.3.2 Descrição. Funcionalidade que permite a recuperação da senha cadastrada do usuário.

4.3.3 Pré-Condição. O ator deve estar cadastrado no sistema.

4.3.4 Conseqüências. A senha será enviada para o email constante no cadastro do ator.

4.3.5 Curso Normal.

Curso [7] Recuperar Senha.

4.3.5.1 O ator solicita ao sistema que executa a funcionalidade que permite recuperar a senha do cadastro.

4.3.5.2 O sistema solicita que sejam informados os dados necessários para efetuar a recuperação.

4.3.5.3 O ator insere os dados solicitados. 4.3.5.4 O ator clica no botão Recuperar Senha. 4.3.5.5 O sistema verifica se os dados inseridos são válidos. 4.3.5.6 O sistema envia a senha recuperada do Banco de Dados para o email do

usuário. 4.3.5.7 Caso de uso encerrado.

58

4.3.6 Curso Alternativo. Não possui.

4.3.7 Curso de Exceção.

Curso [8] Verificação dos atributos no passo 4.3.5.5.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.3.5.2.

Curso [9] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.3.5.2.

4.3.8 Freqüência de Uso. Alta.

4.4 [UC-04] - Editar História da Família

4.4.1 Atores. Usuário.

4.4.2 Descrição. Funcionalidade que possibilita editar a história da família.

4.4.3 Pré-Condição. O ator deve estar logado no sistema.

59

4.4.4 Conseqüências. A história da família será editada.

4.4.5 Curso Normal.

Curso [10] Editar História.

4.4.5.1 O ator solicita ao sistema que executa a funcionalidade que permite editar a história da família.

4.4.5.2 O ator edita a história da família e clica no botão Salvar. 4.4.5.3 O sistema salva a história no banco de dados. 4.4.5.4 Caso de uso encerrado.

4.4.6 Curso Alternativo. Não possui.

4.4.7 Curso de Exceção.

Curso [11] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.4.5.2.

4.4.8 Freqüência de Uso. Média.

4.5 [UC-05] Inserir elemento na Árvore Genealógica

60

4.5.1 Atores. Usuário.

4.5.2 Descrição. Funcionalidade que permite inserir elementos na árvore genealógica do usuário.

4.5.3 Pré-Condição. O ator deve estar logado no sistema.

4.5.4 Conseqüências. Um novo elemento será inserido na árvore genealógica.

4.5.5 Curso Normal.

Curso [12] Inserir elemento.

4.5.5.1 O ator solicita ao sistema que executa a funcionalidade que permite inserir um elemento na árvore genealógica.

4.5.5.2 O ator seleciona qual será o elemento associado ao novo elemento. 4.5.5.3 O ator preenche os dados do novo elemento e clica no botão Adicionar. 4.5.5.4 O sistema valida se os dados inseridos são válidos. 4.5.5.5 O sistema salva as informações no banco de dados. 4.5.5.6 Caso de uso encerrado.

4.5.6 Curso Alternativo. Não possui.

4.5.7 Curso de Exceção.

Curso [13] Verificação dos atributos no passo 0.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.5.5.3.

Curso [14] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.5.5.2.

Curso [15] Cancelamento da operação por escolha do ator no passo 4.5.5.3.

O sistema retorna para o passo 4.5.5.2 sem salvar os dados preenchidos.

4.5.8 Freqüência de Uso. Alta.

61

4.6 [UC-06] Editar Elemento da Árvore Genealógica

4.6.1 Atores Usuário.

4.6.2 Descrição. Funcionalidade que possibilita editar os dados de elementos já inseridos na árvore

genealógica.

4.6.3 Pré-Condição. O ator deve estar logado no sistema. A árvore genealógica do ator deve possuir pelo menos um elemento.

4.6.4 Conseqüências. Os dados do elemento serão modificados.

4.6.5 Curso Normal.

Curso [16] Modificar elemento.

4.6.5.1 O ator solicita ao sistema que executa a funcionalidade que permite modificar os dados de um elemento da árvore genealógica.

4.6.5.2 O ator seleciona qual será o elemento a ser modificado. 4.6.5.3 O ator modifica os dados desejados do elemento e clica no botão Salvar. 4.6.5.4 O sistema valida se os dados modificados são válidos. 4.6.5.5 O sistema salva as informações no banco de dados. 4.6.5.6 Caso de uso encerrado.

4.6.6 Curso Alternativo. Não possui.

4.6.7 Curso de Exceção.

Curso [17] Verificação dos atributos no passo 0.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.6.5.3.

Curso [18] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.6.5.3.

Curso [19] Cancelamento da operação por escolha do ator no passo 4.6.5.3.

O sistema retorna para o passo 4.6.5.2 sem salvar os dados modificados.

62

4.6.8 Freqüência de Uso. Alta.

4.7 [UC-07] Excluir Elemento da Árvore Genealógica

4.7.1 Atores Usuário.

4.7.2 Descrição. Funcionalidade que permite efetuar a exclusão de elementos da árvore genealógica.

4.7.3 Pré-Condição. O ator deve estar logado no sistema. A árvore genealógica do ator deve possuir pelo menos um elemento.

4.7.4 Conseqüências. O elemento selecionado será excluído.

4.7.5 Curso Normal.

Curso [20] Excluir elemento.

4.7.5.1 O ator solicita ao sistema que executa a funcionalidade que permite a exclusão de elementos da árvore genealógica.

4.7.5.2 O ator seleciona qual será o elemento a ser excluído e clica no botão Excluir Elemento.

4.7.5.3 O sistema executa a verifica se o elemento não possui elementos filhos. 4.7.5.4 O sistema pede a confirmação da exclusão. 4.7.5.5 O ator confirma a exclusão. 4.7.5.6 O sistema executa a exclusão. 4.7.5.7 Caso de uso encerrado.

4.7.6 Curso Alternativo. Não possui.

4.7.7 Curso de Exceção.

Curso [21]Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.7.5.2.

63

Curso [22]Cancelamento da operação por escolha do ator no passo 4.7.5.4.

O sistema retorna para o passo 4.7.5.2 sem efetuar nenhuma exclusão.

Curso [23] O elemento não é validado pela verificação no passo 4.7.5.3.

O sistema apresenta uma mensagem explicando o motivo. O sistema retorna para o passo 4.7.5.2.

4.7.8 Freqüência de Uso. Alta.

4.8 [UC-08] - Inserir Evento na Linha do Tempo

4.8.1 Atores. Usuário.

4.8.2 Descrição. Funcionalidade que permite inserir eventos na linha do tempo.

4.8.3 Pré-Condição. O ator deve estar logado no sistema.

4.8.4 Conseqüências. Um novo evento será inserido na linha do tempo.

4.8.5 Curso Normal.

Curso [24] Inserir evento.

4.8.5.1 O ator solicita ao sistema que executa a funcionalidade que permite inserir um

64

evento na linha do tempo. 4.8.5.2 O sistema solicita os dados do novo evento. 4.8.5.3 O ator preenche os dados do novo evento e clica no botão Salvar. 4.8.5.4 O sistema valida se os dados inseridos são válidos. 4.8.5.5 O sistema salva as informações no banco de dados. 4.8.5.6 Caso de uso encerrado.

4.8.6 Curso Alternativo. Não possui.

4.8.7 Curso de Exceção.

Curso [25] Verificação dos atributos no passo 4.8.5.5.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.8.5.3.

Curso [26] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.8.5.2.

4.8.8 Freqüência de Uso. Alta.

4.9 [UC-09] - Modificar Evento da Linha do Tempo

4.9.1 Atores Usuário.

4.9.2 Descrição. Funcionalidade que possibilita modificar os dados de eventos da linha do tempo.

4.9.3 Pré-Condição. O ator deve estar logado no sistema. A linha do tempo do ator deve possuir pelo menos um evento inserido.

4.9.4 Conseqüências. Os dados do evento serão modificados.

4.9.5 Curso Normal.

Curso [27] Modificar evento.

4.9.5.1 O ator solicita ao sistema que executa a funcionalidade que permite modificar

65

os dados de um evento da linha do tempo. 4.9.5.2 O ator indica qual será o evento a ser modificado. 4.9.5.3 O ator modifica os dados desejados do evento e clica no botão Salvar. 4.9.5.4 O sistema valida se os dados modificados são válidos. 4.9.5.5 O sistema salva as informações no banco de dados. 4.9.5.6 Caso de uso encerrado.

4.9.6 Curso Alternativo. Não possui.

4.9.7Curso de Exceção.

Curso [28] Verificação dos atributos no passo 05.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.9.5.3.

Curso [29] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.9.5.2.

Curso [30] Cancelamento da operação por escolha do ator no passo 4.9.5.3.

O sistema retorna para o passo 4.9.5.2 sem salvar os dados modificados.

4.9.8 Freqüência de Uso. Alta.

4.10 [UC-10] - Excluir evento da Linha do Tempo

4.10.1 Atores Usuário.

4.10.2 Descrição. Funcionalidade que permite efetuar a exclusão de eventos da linha do tempo.

4.10.3 Pré-Condição. O ator deve estar logado no sistema. A linha do tempo do ator deve possuir pelo menos um evento inserido.

4.10.4 Conseqüências. O evento selecionado será excluído.

66

4.10.5 Curso Normal.

Curso [31] Excluir evento.

4.10.5.1 O ator solicita ao sistema que executa a funcionalidade que permite a exclusão de eventos da linha do tempo.

4.10.5.2 O ator informa qual será o evento a ser excluído e clica no botão Excluir . 4.10.5.3 O ator confirma a exclusão. 4.10.5.4 O sistema executa a exclusão. 4.10.5.5 Caso de uso encerrado.

4.10.6 Curso Alternativo. Não possui.

4.10.7 Curso de Exceção.

Curso [32] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.10.5.2.

Curso [33] Cancelamento da operação por escolha do ator no passo 4.10.5.4.

O sistema retorna para o passo 4.10.5.2 sem efetuar nenhuma exclusão.

4.10.8 Freqüência de Uso.

Alta.

4.11 [UC-11] - Inserir Brasão da Família

4.11.1Atores. Usuário.

67

4.11.2 Descrição. Inserir o brasão da família no perfil do autor.

4.11.3 Pré-Condição. O ator deve estar logado no sistema.

4.11.4 Conseqüências. O brasão da família será inserido no perfil do autor.

4.11.5 Curso Normal.

Curso [34] Inserir brasão.

4.11.5.1 O ator solicita ao sistema que executa a funcionalidade que permite inserir o brasão da família.

4.11.5.2 O sistema exibe a janela para seleção do arquivo de imagem. 4.11.5.3 O ator seleciona o arquivo de imagem desejado. 4.11.5.4 O sistema faz o upload do arquivo de imagem. 4.11.5.5 O sistema insere a imagem no perfil do autor. 4.11.5.6 Caso de uso encerrado.

4.11.6 Curso Alternativo. Não possui.

4.11.7 Curso de Exceção.

Curso [35] Arquivo inválido selecionado no passo 4.11.5.3.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.11.5.2.

Curso [36] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.11.5.2.

Curso [37] Cancelamento da operação por escolha do ator nos passos 4.11.5.3

O sistema retorna para o passo 4.12.5.2 sem inserir o arquivo.

4.11.8 Freqüência de Uso.

Alta.

4.12 [UC-12] - Remover Brasão da Família

4.12.1 Atores. Usuário.

68

4.12.2 Descrição. Remover o brasão da família no perfil do autor.

4.12.3 Pré-Condição. O ator deve estar logado no sistema.

4.12.4 Conseqüências. O brasão da família será removido no perfil do autor.

4.12.5 Curso Normal.

Curso [38] Remover brasão.

4.12.5.1 O ator solicita ao sistema que executa a funcionalidade que permite remover o brasão da família.

4.12.5.2 O ator clica no botão Remover Brasão. 4.12.5.3 O sistema pede a confirmação da exclusão. 4.12.5.4 O ator confirma a exclusão. 4.12.5.5 O sistema executa a exclusão. 4.12.5.6 Caso de uso encerrado.

4.12.6 Curso Alternativo. Não possui.

4.12.7 Curso de Exceção.

Curso [39] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.12.5.2.

Curso [40]Cancelamento da operação por escolha do ator nos passos 4.12.5.3.

O sistema retorna para o passo 4.12.5.2 sem remover o brasão.

4.12.8 Freqüência de Uso.

Alta.

4.13 [UC-13] - Editar Perfil do Autor

69

4.13.1 Atores Usuário.

4.13.2 Descrição. Edita o perfil do autor.

4.13.3 Pré-Condição. O ator deve estar logado no sistema.

4.13.4 Conseqüências. Os dados do Perfil serão modificados.

4.13.5 Curso Normal.

Curso [41]Editar perfil.

4.13.5.1 O ator solicita ao sistema que executa a funcionalidade que permite editar os dados do seu perfil.

4.13.5.2 O sistema exibe a página para edição. 4.13.5.3 O ator realiza as alterações desejadas e clica no botão Salvar. 4.13.5.4 O sistema realiza a validação das modificações. 4.13.5.5 O sistema salva as informações no banco de dados. 4.13.5.6 Caso de uso encerrado.

4.13.6 Curso Alternativo. Não possui.

70

4.13.7 Curso de Exceção.

Curso [42] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.13.5.2.

Curso [43] Cancelamento da operação por escolha do ator no passo 4.13.5.3.

O sistema retorna para o passo 4.13.5.2 sem salvar as modificações.

Curso [44] Verificação dos atributos no passo 4.13.5.4.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.13.5.2.

4.13.8 Freqüência de Uso.

Média.

4.14 [UC-14] - Inserir Foto

4.14.1 Atores. Usuário.

4.14.2 Descrição. Inserir a foto do autor no perfil.

4.14.3 Pré-Condição. O ator deve estar logado no sistema.

4.14.4 Conseqüências. A foto do autor será inserida no perfil.

4.14.5 Curso Normal.

Curso [45] Inserir foto.

4.14.5.1 O ator solicita ao sistema que executa a funcionalidade que permite inserir a foto do autor no perfil.

4.14.5.2 O sistema exibe a janela para seleção do arquivo de imagem. 4.14.5.3 O ator seleciona o arquivo de imagem desejado. 4.14.5.4 O sistema faz o upload do arquivo de imagem. 4.14.5.5 O sistema insere a imagem no perfil do autor. 4.14.5.6 Caso de uso encerrado.

4.14.6 Curso Alternativo. Não possui.

71

4.14.7 Curso de Exceção.

Curso [46] Arquivo inválido selecionado no passo 4.14.5.3.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.14.5.2.

Curso [47] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.14.5.2.

Curso [48] Cancelamento da operação por escolha do ator nos passos 4.14.5.2

O sistema sai da funcionalidade sem inserir a foto.

4.14.8 Freqüência de Uso.

Alta.

4.15 [UC-15] - Remover Foto

4.15.1 Atores. Usuário.

4.15.2 Descrição. Remover a foto do perfil do autor.

4.15.3 Pré-Condição. O ator deve estar logado no sistema.

4.15.4 Conseqüências. A foto do autor será removida do perfil.

4.15.5 Curso Normal.

Curso [49] Remover foto.

4.15.5.1 O ator solicita ao sistema que executa a funcionalidade que permite remover a foto do perfil do autor.

4.15.5.2 O ator clica no botão Remover Foto. 4.15.5.3 O sistema pede a confirmação da exclusão. 4.15.5.4 O ator confirma a exclusão. 4.15.5.5 O sistema executa a exclusão. 4.15.5.6 Caso de uso encerrado.

4.15.6 Curso Alternativo. Não possui.

72

4.15.7 Curso de Exceção.

Curso [50] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.15.5.2.

Curso [51] Cancelamento da operação por escolha do ator no passo 4.15.5.3.

O sistema retorna para o passo 4.15.5.2 sem remover a foto.

4.15.8 Freqüência de Uso.

Alta.

4.16 [UC-16] - Realizar Busca

4.16.1 Atores. Usuário.

4.16.2 Descrição. Realizar uma busca na base de dados sobre outras árvores ou perfis.

4.16.3 Pré-Condição. O ator deve estar logado no sistema.

4.16.4 Conseqüências. O resultado da busca será exibido para o ator.

4.16.5 Curso Normal.

Curso [52] Realizar Busca.

4.16.5.1 O ator solicita ao sistema que executa a funcionalidade que permite realizar

73

buscas na base de dados do sistema. 4.16.5.2 O ator insere os dados que deseja realizar a busca e clica no botão Realizar

Busca. 4.16.5.3 O sistema efetua a busca na base de dados. 4.16.5.4 O sistema exibe a busca para o ator. 4.16.5.5 Caso de uso encerrado.

4.16.6 Curso Alternativo. Não possui.

4.16.7 Curso de Exceção.

Curso [53] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.16.5.2.

4.16.8 Freqüência de Uso.

Alta.

4.17 [UC-17] - Adicionar Árvore na Floresta

4.17.1 Atores. Usuário.

4.17.2 Descrição. Adiciona uma árvore na floresta do usuário.

74

4.17.3 Pré-Condição. O ator deve estar logado no sistema.

4.17.4 Conseqüências. A árvore será adicionada na floresta.

4.17.5 Curso Normal.

Curso [54] Adicionar Árvore.

4.17.5.1 O ator solicita ao sistema que executa a funcionalidade que permite adicionar uma árvore na floresta do usuário.

4.17.5.2 O ator acessa o perfil do usuário que contém a árvore desejada. 4.17.5.3 O ator clica no botão Inserir na Minha Floresta. 4.17.5.4 O sistema pede a confirmação da operação. 4.17.5.5 O ator confirma a operação. 4.17.5.6 O sistema insere a árvore na floresta do ator. 4.17.5.7 Caso de uso encerrado.

4.17.6 Curso Alternativo. Não possui.

4.17.7 Curso de Exceção.

Curso [55] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.17.5.2.

Curso [56] Cancelamento da operação por escolha do ator no passo 4.17.5.5.

O sistema retorna para o passo 4.17.5.2 sem inserir a árvore na floresta.

4.17.8 Freqüência de Uso.

Alta.

4.18 [UC-18] - Excluir Árvore da Floresta

4.18.1 Atores. Usuário.

4.18.2 Descrição. Exclui uma árvore da floresta do usuário.

75

4.18.3 Pré-Condição. O ator deve estar logado no sistema.

4.18.4 Conseqüências. A árvore será excluída da floresta.

4.18.5 Curso Normal.

Curso [57] Excluir Árvore.

4.18.5.1 O ator solicita ao sistema que executa a funcionalidade que permite excluir uma árvore na floresta do usuário.

4.18.5.2 O ator acessa o perfil do usuário que contém a árvore desejada. 4.18.5.3 O ator clica no botão Excluir da Minha Floresta. 4.18.5.4 O sistema pede a confirmação da operação. 4.18.5.5 O ator confirma a operação. 4.18.5.6 O sistema exclui a árvore da floresta do ator. 4.18.5.7 Caso de uso encerrado.

4.18.6 Curso Alternativo. Não possui.

4.18.7 Curso de Exceção.

Curso [58] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.18.5.2.

Curso [59] Cancelamento da operação por escolha do ator no passo 4.18.5.5.

O sistema retorna para o passo 4.18.5.2 sem efetuar a exclusão.

4.18.8 Freqüência de Uso.

Alta.

76

4.19 [UC-19] - Criar Álbum de Fotos

4.19.1 Atores. Usuário.

4.19.2 Descrição. Criar um novo álbum de fotos.

4.19.3 Pré-Condição. O ator deve estar logado no sistema.

4.19.4 Conseqüências. Um novo álbum de fotos será criado.

4.19.5 Curso Normal.

Curso [60] Criar álbum.

4.19.5.1 O ator solicita ao sistema que executa a funcionalidade que permite criar um álbum de fotos.

4.19.5.2 O sistema solicita os dados do novo álbum. 4.19.5.3 O ator preenche os dados solicitados e clica no botão Criar. 4.19.5.4 O sistema valida se os dados inseridos são válidos. 4.19.5.5 O sistema salva as informações no banco de dados. 4.19.5.6 Caso de uso encerrado.

77

4.19.6 Curso Alternativo. Não possui.

4.19.7 Curso de Exceção.

Curso [61] Verificação dos atributos no passo 4.19.5.4.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.19.5.2.

Curso [62]Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.19.5.2.

4.19.8 Freqüência de Uso.

Alta.

4.20 [UC-20] - Excluir Álbum de Fotos

4.20.1 Atores. Usuário.

4.20.2 Descrição. Exclui um álbum de fotos do ator.

4.20.3 Pré-Condição. O ator deve estar logado no sistema.

4.20.4 Conseqüências. O álbum de fotos selecionado será excluído.

4.20.5 Curso Normal.

Curso [63] Excluir Álbum.

4.20.5.1 O ator solicita ao sistema que executa a funcionalidade que permite excluir um álbum de fotos.

4.20.5.2 O ator seleciona o álbum de fotos desejado. 4.20.5.3 O ator clica no botão Excluir Álbum. 4.20.5.4 O sistema pede a confirmação da exclusão. 4.20.5.5 O ator confirma a exclusão 4.20.5.6 O sistema exclui o álbum de fotos do ator. 4.20.5.7 Caso de uso encerrado.

4.20.6 Curso Alternativo.

78

Não possui.

4.20.7 Curso de Exceção.

Curso [64] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.20.5.2.

Curso [65] Cancelamento da operação por escolha do ator no passo 4.20.5.5.

O sistema retorna para o passo 4.20.5.2 sem efetuar a exclusão.

4.20.10 Freqüência de Uso.

Média.

4.21 [UC-21] - Inserir Foto no Álbum de Fotos

4.21.1 Atores. Usuário.

4.21.2 Descrição. Inserir foto no álbum de fotos.

4.21.3 Pré-Condição. O ator deve estar logado no sistema. Existência de pelo menos um álbum de fotos.

4.21.4 Conseqüências. A foto será inserida no álbum de fotos.

4.21.5 Curso Normal.

Curso [66] Inserir foto.

4.21.5.1 O ator solicita ao sistema que executa a funcionalidade que permite inserir uma foto no álbum de fotos desejado.

4.21.5.2 O sistema exibe a janela para seleção do arquivo de imagem. 4.21.5.3 O ator seleciona o arquivo de imagem desejado. 4.21.5.4 O sistema faz o upload do arquivo de imagem. 4.21.5.5 O sistema insere a imagem no álbum de fotos. 4.21.5.6 Caso de uso encerrado.

4.21.6 Curso Alternativo. Não possui.

79

4.21.7 Curso de Exceção.

Curso [67] Arquivo inválido selecionado no passo 4.21.5.3.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.21.5.2.

Curso [68] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.21.5.2.

Curso [69] Cancelamento da operação por escolha do ator nos passos 4.21.5.2

O sistema sai da funcionalidade sem efetuar nenhuma inclusão de foto.

4.21.8 Freqüência de Uso. Alta.

4.22 [UC-22] - Remover Foto do Álbum de Fotos

4.22.1 Atores. Usuário.

4.22.2 Descrição. Remover uma foto do álbum de fotos.

4.22.3 Pré-Condição. O ator deve estar logado no sistema. Existência de pelo menos uma foto inserida em um álbum de fotos.

4.22.4 Conseqüências. A foto será removida do álbum de fotos.

4.22.5 Curso Normal.

Curso [70] Remover foto.

4.22.5.1 O ator solicita ao sistema que executa a funcionalidade que permite remover a foto do álbum de fotos.

4.22.5.2 O ator seleciona a foto que será removida. 4.22.5.3 O ator clica no botão Remover Foto. 4.22.5.4 O sistema pede a confirmação da exclusão. 4.22.5.5 O ator confirma a exclusão. 4.22.5.6 O sistema executa a exclusão. 4.22.5.7 Caso de uso encerrado.

80

4.22.6 Curso Alternativo. Não possui.

4.22.7 Curso de Exceção.

Curso [71] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.22.5.2.

Curso [72] Cancelamento da operação por escolha do ator no passo 4.22.5.5.

O sistema sai da funcionalidade sem efetuar a exclusão da foto.

4.22.8 Freqüência de Uso.

Alta.

4.23 [UC-23] - Inserir Comentário em Foto do Álbum de Fotos

4.23.1 Atores. Usuário.

4.23.2 Descrição. Inserir um comentário em uma foto do álbum de fotos.

4.23.3 Pré-Condição. O ator deve estar logado no sistema. Existência de pelo menos uma foto em um álbum de fotos.

4.23.4 Conseqüências. O comentário será inserido na foto.

4.23.5 Curso Normal.

Curso [73] Inserir comentário.

4.23.5.1 O ator solicita ao sistema que executa a funcionalidade que permite inserir um comentário em uma foto do álbum de fotos.

4.23.5.2 O sistema solicita o texto do comentário. 4.23.5.3 O ator insere o texto do comentário e clica no botão Inserir Comentário. 4.23.5.4 O sistema insere o comentário na foto. 4.23.5.5 Caso de uso encerrado.

4.23.6 Curso Alternativo. Não possui.

81

4.23.7 Curso de Exceção.

Curso [74] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.23.5.2.

Curso [75] Cancelamento da operação por escolha do ator nos passos 4.23.5.3

O sistema sai da funcionalidade sem efetuar a inclusão do comentário.

4.23.8 Freqüência de Uso. Alta.

4.24 [UC-24] - Remover Comentário de Foto do Álbum de Fotos

4.24.1 Atores. Usuário.

4.24.2 Descrição. Remover um comentário de uma foto do álbum de fotos.

4.24.3 Pré-Condição. O ator deve estar logado no sistema. Existência de pelo menos um comentário inserido em uma foto de um álbum de fotos.

4.24.4 Conseqüências. O comentário será removido da foto.

4.24.5 Curso Normal.

Curso [76] Remover comentário.

4.24.5.1 O ator solicita ao sistema que executa a funcionalidade que permite remover um comentário de uma foto do álbum de fotos.

4.24.5.2 O ator seleciona o comentário que será removido. 4.24.5.3 O ator clica no botão Remover Comentário. 4.24.5.4 O sistema pede a confirmação da exclusão. 4.24.5.5 O ator confirma a exclusão. 4.24.5.6 O sistema executa a exclusão. 4.24.5.7 Caso de uso encerrado.

4.24.6 Curso Alternativo. Não possui.

82

4.24.7 Curso de Exceção.

Curso [77] Erro de processamento no servidor.

O sistema apresenta uma mensagem explicando os erros. O sistema retorna para o passo 4.24.5.2.

Curso [78] Cancelamento da operação por escolha do ator no passo 4.24.5.4.

O sistema sai da funcionalidade sem efetuar a remoção do comentário da foto.

4.24.8 Freqüência de Uso.

Média.

5 REQUISITOS DO PRODUTO

5.1 Álbum de Fotos

5.1.1Inclusão de Nova Foto - Efetuar Reconhecimento Facial

Para cada nova foto incluída no álbum de fotos de um usuário, o sistema deve efetuar

uma varredura no banco de dados das fotos existentes no sistema realizando um

reconhecimento facial das faces da nova foto com as fotos do banco de dados Se o sistema

encontrar alguma possível semelhança, deve exibir para o usuário a página onde se encontra o

possível parente.

5.2 Árvore Genealógica

5.2.1 Inclusão de Novo Elemento - Efetuar Busca do Novo Elemento

Para cada novo elemento incluído na árvore genealógica do usuário, o sistema deve

efetuar uma varredura nas outras árvores genealógicas verificando se o novo elemento se

encontra em alguma outra árvore de algum outro usuário. Se o sistema encontrar um mesmo

elemento com o mesmo nome em qualquer outra árvore, deve exibir a árvore genealógica

onde se encontra o elemento para o usuário verificar se é uma árvore de um possível parente

ou se é apenas um homônimo.

83

5.3 Fórum

O sistema deve disponibilizar um fórum de discussão para que os usuários cadastrados

possam criar tópicos de discussão e trocar informações sobre assuntos relacionados com

Genealogia.

6 HISTÓRICO DAS ALTERAÇÕES

Data Versão Alteração

16.04.2011 01.00 � Primeira Versão Completa.

84

Anexo B - Documento de Projeto de Banco de Dados

FINDFAMILY

Documento de

Projeto de Banco de Dados

85

1. Objetivo

O objetivo deste documento é definir um Modelo de Dados lógico para a

representação das informações armazenadas pelo projeto FindFamily. Esse documento

contém:

- A descrição das tabelas (Entidades) e seus campos (Atributos).

- As restrições de integridade do Banco de Dados do sistema com relação às quatro

operações possíveis: inclusão, exclusão, alteração e consulta.

2. Definições e Abreviaturas

Abreviatura Significado

ID Sufixo para indicar que o atributo é uma chave primária (normalmente um número

seqüencial gerado a partir de uma SEQUENCE).

3. Entidades do Modelo

3.1 Entidade USUARIOS

3.1.1 Descrição

Relação dos dados cadastrais do usuários do sistema. Utilizado pela funcionalidade de

Login e referenciada por diversas entidades.

3.1.2 Atributos

Nome do campo Descrição Tipo Tamanho Obrigatoriedade

ID Numero seqüencial único

que identifica um cadastro.

NUMBER 10 NOT NULL

86

FAMILIA Nome da família do usuário VARCHAR 50 NOT NULL

NOME Nome do usuário VARCHAR 30 NOT NULL

SOBRENOME Sobrenome do usuário VARCHAR 50 NOT NULL

EMAIL Email utilizado para efetuar

o login no sistema

VARCHAR 50 NOT NULL

SENHA Senha criptografada do

usuário.

VARCHAR 8 NOT NULL

3.1.3 Chaves e índices

Nome Tipo Atributo

PK_USUARIOS Chave Primária ID

UQ_USUARIOS_EMAIL Chave Única EMAIL

3.2 Entidade HISTORIA

3.2.1 Descrição

Relação das histórias das famílias dos usuários. Utilizada na funcionalidade História

da Família.

3.2.2 Atributos

Nome do campo Descrição Tipo Tamanho Obrigatoriedade

ID Numero seqüencial único que

identifica uma história.

NUMBER 10 NOT NULL

ID_USUARIO Identificador do usuário

vinculado à história.

NUMBER 10 NOT NULL

TEXT História da família TEXT NULL

IMG_BRASAO Nome do arquivo da imagem

do brasão da família.

VARCHAR 50 NULL

87

3.2.3 Chaves e índices

Nome Tipo Atributo

PK_HISTORIA Chave Primária ID

FK_HISTORIA_USUARIO Chave Estrangeira para o atributo ID da

tabela USUARIOS.

ID_USUARIO

3.3 Entidade PERFIL_AUTOR

3.3.1 Descrição

Relação dos dados referentes ao perfil do autor. Utilizada pela funcionalidade Perfil.

3.3.2 Atributos

Nome do campo Descrição Tipo Tamanho Obrigatoriedade

ID Numero seqüencial

único que identifica

um perfil.

NUMBER 10 NOT NULL

ID_USUARIO Identificador do

usuário vinculado ao

perfil.

NUMBER 10 NOT NULL

NOME Nome do autor. VARCHAR 50 NOT NULL

SOBRENOME Sobrenome do autor. VARCHAR 50 NULL

FOTO Nome do arquivo de

imagem da foto do

autor.

VARCHAR 50 NULL

DATA_NASCIMENTO Data de nascimento

do autor.

DATETIME NULL

INF_PESSOAIS Informações pessoais

do autor.

VARCHAR 255 NULL

INF_PROFISSIONAIS Informações VARCHAR 255 NULL

88

profissionais do

autor.

EMAIL Email para contato. VARCHAR 50 NULL

FONE_CEL Telefone para

contato.

VARCHAR 15 NULL

CIDADE Cidade. VARCHAR 50 NULL

UF Estado. VARCHAR 50 NULL

PAIS País. VARCHAR 50 NULL

3.3.3 Chaves e índices

Nome Tipo Atributo

PK_PERFIL_AUTOR Chave Primária ID

FK_PERFIL_USUARIO Chave Estrangeira para o atributo ID da tabela

USUARIOS.

ID_USUARIO

3.4 Entidade TIMELINE.

3.4.1 Descrição

Relaciona os eventos das linhas do tempo criadas no sistema. Utilizada na

funcionalidade Linha do Tempo.

3.4.2 Atributos

Nome do

campo

Descrição Tipo Tamanho Obrigatoriedade

ID Numero seqüencial único que

identifica uma linha do

tempo.

NUMBER 10 NOT NULL

ID_USUARIO Identificador do usuário

vinculado à linha do tempo

NUMBER 10 NOT NULL

89

TYPE Tipo do evento. ENUM NOT NULL

TITLE Título do evento. VARCHAR 255 NOT NULL

BODY Informações sobre o evento. TEXT NULL

DATE_EVENT Data do evento. DATETIME NOT NULL.

3.4.3 Chaves e índices

Nome Tipo Atributo

PK_LINHA_TEMPO Chave Primária ID

FK_LINHA_USUARIO Chave Estrangeira para o atributo

ID da tabela USUARIOS.

ID_USUARIOS

3.5 Entidade FLORESTA

3.5.1 Descrição

Uma floresta é o conjunto de todas as árvores com quem o usuário se relaciona.

Utilizada na funcionalidade Floresta.

3.5.2 Atributos

Nome do

campo

Descrição Tipo Tam Obrigatoriedade

ID Numero seqüencial único que

identifica um registro da entidade.

NUMBER 10 NOT NULL

ID_USUARIO Identificador do usuário vinculado à

floresta.

NUMBER 10 NOT NULL

ID_ARVORE Identificador da árvore vinculada à

floresta.

NUMBER 10 NOT NULL

3.5.3 Chaves e índices

Nome Tipo Atributo

PK_ID Chave Primária ID

90

FK_FLORESTA_USUARIO

Chave Estrangeira para o atributo ID da

tabela USUARIOS.

ID_USUARIO

FK_FLORESTA_ARVORE

Chave Estrangeira para o atributo ID da

funcionalidade Árvore Genealógica.

ID_ARVORE

3.6 Entidade ALBUM_FOTO

3.6.1 Descrição

Relaciona os álbuns de fotos dos usuários do sistema. Utilizada pela funcionalidade

Álbum de Fotos.

3.6.2 Atributos

Nome do campo Descrição Tipo Tamanho Obrigatoriedade

ID Numero seqüencial

único que identifica

um álbum de foto.

NUMBER 10 NOT NULL

ID_USUARIO Identificador do

usuário vinculado

ao álbum de fotos.

NUMBER 10 NOT NULL

TITULO Título do álbum de

fotos.

VARCHAR 50 NOT NULL

DESCRICAO Descrição sobre o

álbum de fotos.

VARCHAR 255 NULL

DATA_MODIFICACAO Data da última

modificação no

álbum de fotos.

DATETIME NOT NULL

FOTO_CAPA Nome do arquivo

da foto da capa do

álbum

VARCHAR 50 NOT NULL

ID_ALBUM Identifica o número NUMBER 10 NOT NULL

91

do álbum referente

aos usuários.

QTDADE_FOTOS Quantidade de fotos

que o álbum possui.

NUMBER 10 NOT NULL

3.6.3 Chaves e índices

Nome Tipo Atributo

PK_ALBUM_FOTOS Chave Primária ID

FK_ALBUM_FOTOS_USUARIO Chave Estrangeira para o

atributo ID da tabela

USUARIOS.

ID_USUARIO

3.7 Entidade FOTOS

3.7.1 Descrição

Relação das fotos de todos os álbuns de fotos do sistema. Utilizada pela

funcionalidade Álbum de fotos.

3.7.2 Atributos

Nome do campo Descrição Tipo Tamanho Obrigatoriedade

ID Numero seqüencial único

que identifica uma foto.

NUMBER 10 NOT NULL

ID_ALBUM_FOTO Identificador do álbum de

foto ao qual a foto

pertence.

NUMBER 10 NOT NULL

ID_USUARIO Identificador do usuário

vinculado à foto.

NUMBER 10 NOT NULL

TITULO Título da foto.

VARCHAR 50 NULL

92

ARQUIVO Nome do arquivo da foto. VARCHAR 50 NOT NULL

3.7.3 Chaves e índices

Nome Tipo Atributo

PK_FOTOS Chave Primária ID

FK_FOTO_ALBUM Chave Estrangeira para o atributo ID da

tabela ALBUM_FOTOS.

ID_ALBUM_FOTO

FK_FOTO_USUARIO Chave Estrangeira para o atributo ID da

tabela USUARIOS.

ID_USUARIO

3.8 Entidade COMENTARIO_FOTO

3.8.1 Descrição

Relaciona todos os comentários postados pelos usuários nas fotos dos álbuns de fotos.

Utilizada pela funcionalidade Álbum de Fotos.

3.8.2 Atributos

Nome do campo Descrição Tipo Tamanho Obrigatoriedade

ID Numero seqüencial único que

identifica um comentário.

NUMBER 10 NOT NULL

ID_FOTO Identificador da foto. NUMBER 10 NOT NULL

ID_USUARIO Identificador do usuário que

postou o comentário.

NUMBER 10 NOT NULL

COMENTARIO Comentário sobre a foto. VARCHAR 100 NOT NULL

3.8.3 Chaves e índices

Nome Tipo Atributo

PK_COMENTARIO Chave Primária ID

FK_COMENTARIO_AUTOR Chave Estrangeira para o atributo ID da ID_AUTOR

93

tabela USUARIO.

FK_COMENTARIO_FOTO Chave Estrangeira para o atributo ID da

tabela FOTOS.

ID_FOTO

4. Entidades das funcionalidades utilizadas pelos scripts Open Source

Não estão relacionadas neste documento as entidades utilizadas pelo script PhpBB,

versão 3.0.8, utilizado na implementação da funcionalidade Fórum e as entidades utilizadas

pelo script KB Family Tree, utilizado na implementação da funcionalidade Árvore

Genealógica. Estas entidades podem ser consultadas diretamente na página do desenvolvedor

do script, especificadas nas Referências do trabalho de conclusão de curso.

5. Descrição de integridade das entidades

Como regra geral, as restrições de Integridade Referencial para todo o Modelo são do tipo

RESTRICT (só poderá ser deletado um registro de uma tabela se o mesmo não for “pai” em

nenhuma outra).

6. Sequences

Os IDs das tabelas são preenchidos a partir de Sequences próprias, com valor inicial 1 e

incremento 1. Cada tabela tem a sua Sequence, a saber:

Tabela Sequence

USUARIOS SEQ_ USUARIOS

HISTORIA SEQ_ HISTORIA

PERFIL_AUTOR SEQ_ PERFIL_AUTOR

TIMELINE SEQ_ TIMELINE

FLORESTA SEQ_ FLORESTA

ALBUM_FOTOS SEQ_ ALBUM_FOTOS

FOTOS SEQ_ FOTOS

COMENTARIO_FOTO SEQ_ COMENTARIO_FOTO