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