VITOR FAIÇAL CAMPANA - Sérgio...
Transcript of VITOR FAIÇAL CAMPANA - Sérgio...
UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO TECNOLÓGICO
CURSO DE GRADUAÇÃO EM ENGENHARIA DE COMPUTAÇÃO
VITOR FAIÇAL CAMPANA
Sistema web de sugestão e seleção de temas de trabalhos acadêmicos
VITÓRIA 2006
VITOR FAIÇAL CAMPANA
Sistema web de sugestão e seleção de temas de trabalhos acadêmicos
VITÓRIA 2006
Trabalho de conclusão de curso apresentado como
exigência parcial para obtenção do título de Engenheiro
de Computação à Universidade Federal do Espírito
Santo sob orientação do Prof. Dr. Orivaldo de Lira
VVIITTOORR FFAAIIÇÇAALL CCAAMMPPAANNAA
Sistema web de sugestão e seleção de temas de trabalhos acadêmicos
COMISSÃO EXAMINADORA
________________________________________________
Prof. D. Sc. Orivaldo de Lira Tavares UFES - Universidade Federal do Espírito Santo Orientador
________________________________________________
Prof. MSc. Sergio Teixeira Faculdade Salesiana de Vitória
________________________________________________
Bac. Ciência da Computação. Marcello Novaes Amorim UFES - Universidade Federal do Espírito Santo
Vitória - ES, 28 de dezembro de 2006.
RESUMO
Esse trabalho apresenta uma proposta de sistema web que permite a
definição, escolha, distribuição e aprovação de temas para o desenvolvimento de
trabalhos e projetos acadêmicos. Com o sistema proposto, professores da
universidade poderão cadastrar temas relacionados à sua área de atuação e o
próprio sistema irá selecionar os alunos interessados nos respectivos temas. Além
disso, empresas cadastradas no sistema poderão sugerir novas propostas de temas.
2
LISTA DE FIGURAS
Figura 2.1: Representação da arquitetura cliente/servidor........................................10 Figura 2.2: Uma arquitetura de hardware cliente-servidor duas camadas. ...............10 Figura 2.3: Uma arquitetura de hardware cliente-servidor três camadas ..................11 Figura 2.4: Uma arquitetura de hardware cliente-servidor n camadas ......................11 Figura 2.5: Camadas de Software.............................................................................12 Figura 2.6: Tipos mais comuns de Servlet Containers ..............................................20 Figura 2.7: Representação de um mapeamento O/R e um banco OO......................22 Figura 2.8: Benchmarks do db4o e algumas soluções de mapeamento O/R............23 Figura 2.9: Página do Departamento de Engenharia de Sistemas e Computação da
UERJ..................................................................................................................25 Figura 2.10: Página do Projeto Poli-Cidadã da Escola Politécnica da USP ..............26 Figura 2.11: Projeto Poli-Cidadã - Cadastro de Temas (Dados do Organismo)........27 Figura 2.12: Projeto Poli-Cidadã - Cadastro de Temas (Descrição do Tema) ..........28 Figura 3.1: Diagrama de Casos de Uso para Professor, Aluno e Organização. .......31 Figura 4.1: Diagrama de Classes ..............................................................................40 Figura 4.2: Diagrama de seqüência - Caso de uso “Cadastrar-se”. ..........................45 Figura 4.3: Diagrama de seqüência - Caso de uso “Autenticar-se”...........................46 Figura 4.4: Diagrama de seqüência - Caso de uso “Cadastrar Tema”. .....................46 Figura 4.5: Diagrama de seqüência – Casos de uso “Consultar Temas”, “Fazer
Pergunta”, “Verificar Resultado” e “Aceitar Tema” para o ator “Aluno”..............47 Figura 4.6: Diagrama de seqüência – Casos de uso “Consultar Temas”, “Responder
Pergunta” e “Verificar Resultado” para o ator “Professor” ..................................48 Figura 4.7: Diagrama de seqüência – Caso de uso “Consultar Proposta” e “Aceitar
Proposta”............................................................................................................49 Figura 4.8: Diagrama de seqüência – Caso de uso “Cadastrar Proposta” ................49 Figura 4.9: Diagrama de seqüência – Casos de uso “Verificar a situação das
propostas” e “Fazer Pergunta” para o ator “Organização” .................................50 Figura 5.1: Modelo Conceitual do Sistema................................................................52 Figura 5.2: AlunoDAO ...............................................................................................53 Figura 5.3: ProfessorDAO .........................................................................................54 Figura 5.4: OrganizacaoDAO ....................................................................................55 Figura 5.5: TemaDAO ...............................................................................................56
3
Figura 5.6: PropostaDAO ..........................................................................................57 Figura 5.7: DesenvolvedorDAO.................................................................................58 Figura 5.8: PerguntaDAO..........................................................................................59 Figura 5.9: Modelo de navegação – Cenário Cadastro do caso de uso Cadastrar-se
...........................................................................................................................60 Figura 5.10: Modelo de navegação - Caso de uso Autenticar-se..............................61 Figura 5.11: Modelo de navegação - Caso de uso Cadastrar Proposta....................62 Figura 5.12: Modelo de navegação - Cenário Cadastro do caso de uso Cadastrar
Tema..................................................................................................................62 Figura 5.13: Modelo de navegação - Caso de uso Consultar Propostas/Verificar
Situação das Propostas .....................................................................................63 Figura 5.14: Modelo de navegação - Caso de uso Consultar Temas........................63 Figura 5.15: Modelo de navegação - Caso de uso Fazer Pergunta ..........................64 Figura 5.16: Modelo de navegação - Caso de uso Aceitar Tema..............................64 Figura 6.1: Tela inicial do sistema .............................................................................66 Figura 6.2: Tela de autenticação do sistema.............................................................66 Figura 6.3: Tela de cadastro de aluno.......................................................................67 Figura 6.4: Tela de cadastro de professor.................................................................67 Figura 6.5: Tela de cadastro de organização ............................................................68 Figura 6.6: Tela de navegação do aluno ...................................................................69 Figura 6.7: Tela de resultado da busca por temas ....................................................69 Figura 6.8: Tela de exibição de um Tema .................................................................70 Figura 6.9: Tela de verificação de resultado de um tema com seleção em andamento
...........................................................................................................................71 Figura 6.10: Tela de verificação de resultado de um tema com seleção finalizada...72 Figura 6.11: Tela de navegação do professor ...........................................................73 Figura 6.12: Tela de consulta de propostas ..............................................................73 Figura 6.13: Tela de exibição de proposta ................................................................74 Figura 6.14: Tela de cadastro de tema......................................................................75 Figura 6.15: Tela de tema .........................................................................................76 Figura 6.16: Tela de navegação da organização ......................................................77 Figura 6.17: Tela de cadastro de proposta para temas.............................................78 Figura 6.18: Tela de exibição de proposta quando originou algum tema ..................79
4
SUMÁRIO
CAPÍTULO 1 - INTRODUÇÃO ...............................................................6
1.1. OBJETIVOS.........................................................................................................6 1.2. JUSTIFICATIVAS ..................................................................................................6 1.3. METODOLOGIA ...................................................................................................7 1.4. ESTRUTURA DO TRABALHO ..................................................................................8
CAPÍTULO 2 - TECNOLOGIAS E TRABALHOS CORRELATOS..........9
2.1. TECNOLOGIAS E MÉTODOS..................................................................................9 2.1.1. Arquitetura cliente-servidor ......................................................................9 2.1.2. Orientação a Objetos .............................................................................13 2.1.3. UML (Unified Modeling Language) ........................................................14 2.1.4. Servlets e JSP .......................................................................................16 2.1.5. NetBeans IDE ........................................................................................21 2.1.6. JavaScript ..............................................................................................21 2.1.7. Db4o – Banco de Dados Orientado a Objetos.......................................21 2.1.8. Sistema WEB Gerenciador de Perfis (SWGP).......................................24
2.2. SISTEMAS CORRELATOS ...................................................................................24
CAPÍTULO 3 - ESPECIFICAÇÃO DE REQUISITOS ...........................29
3.1. DESCRIÇÃO DO MINI-MUNDO.............................................................................29 3.2. CASOS DE USO ................................................................................................30
3.2.1. Caso de Uso Cadastrar-se ....................................................................31 3.2.2. Caso de Uso Autenticar-se ....................................................................33 3.2.3. Caso de Uso Cadastrar Tema ...............................................................33 3.2.4. Caso de Uso Consultar Temas..............................................................34 3.2.5. Caso de Uso Fazer Pergunta ................................................................35 3.2.6. Caso de Uso Responder Pergunta ........................................................36 3.2.7. Aceitar tema...........................................................................................36 3.2.8. Caso de Uso Verificar Resultado...........................................................37 3.2.9. Caso de Uso Cadastrar Proposta ..........................................................37 3.2.10. Caso de Uso Verificar Situação das Propostas .....................................38 3.2.11. Caso de Uso Consultar Propostas.........................................................38 3.2.12. Caso de uso Aceitar Proposta ...............................................................39
CAPÍTULO 4 - ANÁLISE ......................................................................40
4.1. DIAGRAMA DE CLASSES ....................................................................................40 4.2. DICIONÁRIO DE DADOS ......................................................................................41 4.3. DIAGRAMAS DE SEQUÊNCIA ...............................................................................45
CAPÍTULO 5 - PROJETO.....................................................................51
5.1. MODELO CONCEITUAL.......................................................................................51 5.2. MODELO DE PERSISTÊNCIA ...............................................................................52 5.3. MODELOS DE NAVEGAÇÃO ................................................................................59
CAPÍTULO 6 - IMPLEMENTAÇÃO E TELAS DO SISTEMA ...............65
5
6.1. IMPLEMENTAÇÃO ..............................................................................................65 6.2. TELAS DO SISTEMA...........................................................................................65
CAPÍTULO 7 - CONSIDERAÇÕES FINAIS .........................................81
7.1. AVALIAÇÃO DO SISTEMA....................................................................................81 7.2. TRABALHOS FUTUROS.......................................................................................82 7.3. APRENDIZADO ADQUIRIDO .................................................................................82
REFERÊNCIAS BIBLIOGRÁFICAS .......................................................83
6
CAPÍTULO 1 - INTRODUÇÃO
Vivenciando o dia a dia da universidade observamos certa falta de
comunicação entre professores e alunos no que diz respeito à informação sobre
trabalhos que estão sendo desenvolvidos ou que se desejam desenvolver, e muitas
vezes trabalhos em áreas que alguns alunos apresentam até certo domínio e por
essa falta de interação entre professor e aluno, acabam esquecidos fazendo com
que uma boa oportunidade do aluno desenvolver suas habilidades dentro da
universidade seja perdida.
Foi nesse contexto que surgiu a motivação para esse projeto, uma Aplicação
Web onde professores têm a possibilidade de propor temas para projetos que
gostariam de orientar e os alunos poderem aceitar desenvolver esses projetos,
desde que sejam selecionados pelo sistema de acordo com os perfis definidos por
proponente e aluno. O sistema permite ainda que representantes de empresas ou
organizações cadastrem propostas de temas que serão avaliadas por professores.
1.1. Objetivos
Facilitar e agilizar o contato entre professores orientadores e alunos que
tenham interesse em desenvolver algum projeto acadêmico, além de ser uma
oportunidade para aproximar a Universidade e as empresas interessadas em
colaborar no desenvolvimento científico, a partir do cadastro de propostas para
temas.
Objetivo específico
Desenvolver um sistema Web para permitir a publicação de idéias para
projetos e a seleção de interessados em desenvolvê-los.
1.2. Justificativas
É uma forma de centralizar a oferta de temas para projetos acadêmicos,
tornando-as acessíveis a um número muito maior de alunos, fazendo com que os
7
alunos que já se interessem por alguma área específica tenham facilidade em
encontrar temas para desenvolver e que outros adquiram interesse.
A possibilidade de empresas ou indústrias cadastrarem propostas beneficiará
essas organizações e a comunidade acadêmica. As empresas por terem a
oportunidade de enviar temas a serem pesquisados para melhoria dos seus
processos e os alunos por terem a oportunidade de pesquisar temas atuais e de
relevância.
1.3. Metodologia
Foi feito o levantamento de trabalhos correlatos e das tecnologias apropriadas
para o desenvolvimento.
As fases de especificação de requisitos e análise foram desenvolvidas
conforme (Falbo, 2002) e a fase de projeto, conforme (Falbo, 2003; Falbo, 2006).
Com o auxilio do próprio professor orientador desse projeto, Orivaldo de Lira
Tavares, por já possuir muita experiência no meio acadêmico e já ter sido
coordenador do curso de Engenharia de Computação e ter trabalhado até na Pró-
Reitoria de Graduação da universidade por alguns anos, foi possível realizar um
levantamento de vários aspectos e necessidades encontrados no dia a dia dos
professores e alunos, permitindo assim especificarmos os requisitos e atacarmos
esses problemas encontrados.
A respeito das tecnologias utilizadas, podemos dizer que na camada de
apresentação foi utilizado JSP1 e as entidades são classes Java. Na camada de
persistência, foi utilizado o banco de dados orientado a objeto db4o.
A seguinte metodologia foi utilizada no desenvolvimento desse trabalho:
• Identificação dos contornos do problema e dos objetivos do sistema;
1 JavaServer Pages (JSP) é uma tecnologia utilizada no desenvolvimento de aplicações para Web,
similar à tecnologia Active Server Pages (ASP) da Microsoft. Por ser baseada na linguagem de programação Java ela tem a vantagem da portabilidade de plataforma, que permite a sua execução em outros sistemas operacionais, além daqueles criados pela Microsoft. Esta tecnologia permite ao desenvolvedor de páginas para Internet produzir aplicações que, acessam o banco de dados, manipulam arquivos no formato texto, captam de informações a partir de formulários e captam informações sobre o visitante e sobre o servidor (WIKIPEDIA, 2006).
8
• Análise e assimilação de bibliografia sobre padrões de projeto para web e
tecnologia JSP;
• Implementação e execução de testes no sistema.
1.4. Estrutura do trabalho
Este trabalho é organizado em 7 capítulos, estruturados da seguinte forma.
O presente capítulo apresenta uma introdução sobre o projeto desenvolvido,
descrevendo contexto, motivação, objetivo, bem como a metodologia utilizada no
mesmo.
O Capítulo 2 – Tecnologias e Trabalhos Correlatos - mostra conceitos e a
descrição de tecnologias utilizadas no desenvolvimento do projeto, além disso, são
apresentados sistemas semelhantes ao proposto por esse trabalho.
O Capítulo 3 – Especificação de Requisitos - traz a especificação de
requisitos do sistema desenvolvida utilizando a técnica de modelagem de casos de
uso.
O Capítulo 4 – Análise – apresenta o modelo de análise produzido neste
trabalho. Desenvolvido focando na estrutura de informação, no comportamento do
sistema.
O Capítulo 5 – Projeto – incorpora a tecnologia a todos os requisitos
essenciais do usuário, projetando o que foi realizado na implementação.
O Capítulo 6 – Implementação e Telas do Sistema – apresenta aspectos
gerais da implementação. Também mostra as principais telas da aplicação.
O Capítulo 7 – Considerações finais – são apresentadas as conclusões sobre
o presente trabalho, as dificuldades enfrentadas e as perspectivas sobre possíveis
trabalhos futuros.
E finalmente Referências Bibliográficas – são explicitadas todas as fontes de
conhecimento utilizadas para o desenvolvimento do projeto.
9
CAPÍTULO 2 - TECNOLOGIAS E TRABALHOS CORRELATOS
Esse capítulo apresenta as tecnologias utilizadas na implementação, bem
como os conceitos utilizados no decorrer das fases de desenvolvimento do sistema.
Além disso, são apresentados sistemas semelhantes ao trabalho proposto, servindo
de apoio à especificação dos requisitos do sistema.
2.1. Tecnologias e Métodos
Essa seção apresenta as principais tecnologias e métodos utilizados para o
desenvolvimento do projeto.
2.1.1. Arquitetura cliente-servidor
Segundo (Renaud, 1994) “cliente/servidor é um conceito lógico, mais
precisamente um paradigma, ou modelo para interação entre processos de software
em execução concorrente”. Isso significa dizer que a metodologia cliente/servidor foi
criada com o objetivo de possibilitar que vários tipos de aplicações, executadas em
máquinas distintas, se comuniquem entre si, sem que a execução de um processo
interfira no do outro.
Diante disso, a arquitetura cliente/servidor estabeleceu um novo paradigma
de processamento de dados, diversificando a interoperabilidade entre o processo de
software e o servidor. Além disso, a arquitetura proposta busca oferecer recursos
que coordenem estes processos, de tal forma que a perda de sincronização não
resulte em alterações ou perda de informações para o sistema.
Seu funcionamento se baseia no seguinte esquema: o usuário do sistema,
através do processo de software cliente, envia o pedido de requisição ao processo
de software servidor, que por sua vez devolve ao cliente os resultados solicitados.
Todos os processos de software rodam sobre o controle do Sistema Operacional
que coordena todos os recursos do sistema computacional utilizado (Figura 2.1).
10
Figura 2.1: Representação da arquitetura cliente/servidor. (Silva, 2001)
Camadas de Hardware Cliente-Servidor
O uso mais comum para arquiteturas cliente-servidor é explorar o poder dos
computadores para gerenciar interfaces gráficas com o usuário, mantendo a
integridade dos dados do negócio em uma máquina hospedeira central. Em sua
forma mais simples, a arquitetura cliente-servidor envolve múltiplos clientes fazendo
requisições para um único servidor, como mostra a figura 2.2. Este modelo mostra
uma arquitetura de hardware em duas camadas (two-tier).
Figura 2.2: Uma arquitetura de hardware cliente-servidor duas camadas.
A figura 2.3 mostra uma arquitetura cliente-servidor em três camadas, na qual
máquinas-cliente estão conectadas via uma rede local a um servidor local de
aplicação que, por sua vez, se comunica com um servidor de dados central.
11
Figura 2.3: Uma arquitetura de hardware cliente-servidor três camadas.
Em uma arquitetura de três camadas, a noção de cliente e servidor começa a
se tornar mais complexa. Um computador que hospeda uma aplicação de interface
certamente é um cliente e a máquina hospedeira da base de dados é certamente um
servidor. Mas o servidor local de aplicação é algumas vezes um cliente e outras um
servidor, dependendo da direção de comunicação. Esta arquitetura pode ser
estendida para n camadas (n-tier), como mostra a figura 2.4. Nestes casos, a
distinção entre cliente estrito e servidor estrito não existe mais, tornando o termo um
padrão conceitual.
Figura 2.4: Uma arquitetura de hardware cliente-servidor n camadas.
12
Camadas de Software Cliente-Servidor
Para discutir o desenvolvimento de software em uma arquitetura multicamada
de hardware, é necessário primeiro dividir a aplicação de software em camadas. Os
componentes de uma aplicação de negócio podem ser agrupados em pelo menos
três categorias principais, como mostra a figura 2.5:
• Camada de Apresentação: é a camada mais externa do sistema de software.
Sua função é capturar estímulos de eventos externos e realizar alguma edição dos
dados de entrada. É encarregada também de apresentar respostas aos eventos
para o mundo exterior. Geralmente, é localizada em uma máquina cliente, tal como
um PC, entretanto, esta não é uma regra rigorosa;
• Camada de Lógica do Negócio: contém o código que executa e impõe a política
do negócio. Regras, regulamentos e cálculos são encontrados nesta camada. É a
camada mais móvel, podendo ser localizada em clientes remotos, no servidor central
ou em qualquer outro local intermediário;
• Camada de Gerência de Dados: provê acesso a dados corporativos. Gerencia
requisições concorrentes de acesso às bases de dados, assim como a sincronização
de elementos de dados distribuídos. Muito desta camada estará no mesmo local
físico que os dados.
Figura 2.5: Camadas de Software. (Falbo, 2003)
13
2.1.2. Orientação a Objetos
(Rumbaugh, 1994) define orientação a objetos como: "uma nova maneira de
pensar os problemas utilizando modelos organizados a partir de conceitos do mundo
real. O componente fundamental é o objeto que combina estrutura e comportamento
em uma única entidade". Dizer que um software é orientado a objetos significa que
ele é organizado como uma coleção de objetos separados, que incorporam tanto a
estrutura como o comportamento dos dados. A Orientação a Objetos (OO) trouxe
vários novos conceitos ao desenvolvimento de software, como: Abstração,
Encapsulamento, Objeto, Classe, Atributo, Operação, Método, Mensagem, Evento,
Interface, Generalização, Herança e Polimorfismo.
Por que utilizar orientação a objetos?
Quando bem empregada, a Orientação a Objetos traz diversas vantagens:
reutilização, confiabilidade, modelo de sistema mais realístico, facilidade de
interoperabilidade e de manutenção, aumento da qualidade, maior produtividade e
unificação do paradigma da análise a implementação. (Martin, 1992; Jacobson,
1996; Fuzion, 1999).
Muitos foram os métodos desenvolvidos para a aplicação da orientação a
objetos no processo de análise e projeto. Metodologias como a Object-oriented
design (OOD) (Booch, 1994), Object Modeling Techinique (OMT) (Rumbaugh et
al,1994), Object-Oriented Software Engineering (OOSE) (Jacobson, 1992),
Shlaer/Mellor (Shlaer & Mellor, 1988), Coad/Yourdon (Coad & Yourdon, 1990),
Martin/Odell (Martin & Odell,1992), Wirfs-Brock (Wirfs-Brock, 1990) e Embley/Kurtz
(Embley & Woodfield, 1988) são alguns exemplos. Com o decorrer do tempo, as
metodologias de Booch, a de Rambaugh e a Jacobson evoluíram, seus autores se
uniram e lançaram uma linguagem de notação unificada, chamada Unified Modeling
Language (UML) (discutida em detalhes no próximo tópico) e também lançaram uma
metodologia orientada a objetos chamada Rational Unified Process (RUP) que
abrange todo o processo de desenvolvimento de um sistema.
A Orientação a Objetos é um paradigma que pode ser aplicado ao longo de
todo o processo de construção do software. Dessa forma, tem-se as metodologias
acima descritas, que atuam no processo de análise e projeto e, no ciclo de
14
implementação, existem as tecnologias de back-end (banco de dados) e as de front-
end (linguagens e ferramentas de programação) (Furlan, 1998). Os Bancos de
Dados têm evoluído no sentido de suportar a tecnologia OO. Inicialmente foram
lançados bancos objeto-relacional que suportam apenas alguns dos conceitos OO,
mantendo a estrutura do modelo relacional. Em seguida, surgiram os bancos de
dados realmente OO, tais como o Jasmine da CA Computer Inc, que suportam,
efetivamente, os conceitos OO. Entretanto, devido a questões como a falta de
habilidade em OO pelas empresas, dentre outras, esses bancos de dados tiveram
pouca penetração no mercado [Belloquim]. Com isso, continuou o domínio no
mercado dos bancos de dados relacionais e objeto-relacionais, forçando de certa
forma os desenvolvedores a "quebrar" o paradigma da OO no momento de
implementar o banco de dados, tendo-se que utilizar técnicas de mapeamento
objeto-relacional para acomodar os dois modelos no sistema. As primeiras
linguagens de programação orientadas a objetos apareceram em meados de 1966,
como o Simula e, em 1972, o Smalltalk. Linguagens com maior penetração no
mercado, tais com Pascal e C, evoluíram e criaram versões OO, como o C++, por
exemplo. Outras linguagens, já criadas dentro do conceito da OO, como o Java, por
exemplo, possibilitaram uma maior difusão do uso dessa tecnologia pelo mercado.
Viu-se também o rápido crescimento de ambientes de desenvolvimento integrados,
que permitem a construção visual dos sistemas de forma rápida (RAD - Rapid
Application Development) e com uso de componentes previamente montados. São
exemplos dessas linguagens/ferramentas o Visual Basic e o Delphi.
2.1.3. UML (Unified Modeling Language)
No tópico anterior, foi descrita a criação de várias metodologias Orientadas a
Objeto (OO). Entretanto, era necessário um caminho comum. Então, James
Rumbaugh e Grady Booch combinaram suas metodologias: OMT e Booch,
respectivamente, através da Rational Corporation, nos Estados Unidos, e criaram
um método comum: o Unified Method (UM), lançado em 1995. Em seguida, deu-se a
adesão de Ivar Jacobson, outro grande metodologista, contribuindo com as idéias de
sua metodologia OOSE. Esses três personagens lançaram, então, a Unified
Modeling Language (UML) versão 0.9 em 1996. A UML versão 1.1 foi submetida ao
15
Object Management Group (OMG) e aprovada como padrão mundial de linguagem
de notação de projetos OO.
O objetivo da UML é prover uma linguagem padrão que permita modelar um
sistema, bem como fazer com que o mercado mundial de orientação a objetos utilize
uma linguagem única de modelagem, que permita a troca de modelos de forma
natural entre os construtores de softwares (Fuzion, 1999). Com a UML é possível
(Mattiazzi, 1998): descrever eficazmente requisitos de software, caracterizar a
arquitetura (lógica e física) de um sistema, focalizar na arquitetura em vez da
implementação e direcionar programadores, aumentando a produtividade e
diminuindo os riscos.
Segundo (Furlan, 1998), "a UML é uma linguagem de modelagem, não uma
metodologia". Assim, na construção de um software, a UML deve ser usada em
conjunto com uma metodologia de Engenharia de Software Orientada a Objetos, tais
como a metodologia Vincit e a RUP (Rational Unified Process). Não se recomenda a
utilização do paradigma clássico (waterfall) visto que a UML adapta-se melhor com
paradigmas incrementais e similares. Por outro lado, a UML não se restringe a
diagramas, ela apresenta uma série de conceitos e recursos que facilitam a
identificação de objetos e classes, associando-os aos requisitos do sistema, bem
como oferece formas de planejar e gerenciar projetos baseados nesses requisitos
(Mattiazzi, 1998).
A UML apresenta os seguintes diagramas que, em conjunto, modelam todo o
sistema (Furlan, 1998; Fuzion, 1999; Mattiazzi, 1998):
• Diagrama de Classe: utilizado para representar as diversas classes de objetos
do sistema, seus atributos e operações, bem como a associação entre cada uma
delas (herança, generalização, composição, agregação, etc.);
• Diagrama de Caso de Uso: usado para demonstrar o relacionamento entre
atores e casos de uso;
• Diagramas de Seqüência: tipo de diagrama de interação que apresenta a
interação de seqüência de tempo dos objetos que participam na interação;
• Diagrama de Colaboração: tipo de diagrama de interação que mostra uma
interação dinâmica de um caso de uso e seus objetos relacionados;
16
• Diagrama de Estado: utilizado para demonstrar as seqüências de estados que
um objeto assume em sua vida, em função do seu uso no sistema;
• Diagrama de Atividade: tipo de diagrama de estado no qual a maioria dos
estados são ações. Descreve o fluxo interno de uma operação;
• Diagrama de Componente: usado para representar os diversos componentes
dos sistemas e suas dependências;
• Diagrama de Implantação: utilizado para demonstrar elementos de configuração
de processamento run-time.
O uso de um tipo ou outro de diagrama depende, muitas vezes, do grau de
detalhamento necessário para o desenvolvimento do sistema. Os diagramas de
classe, de casos de uso e de seqüência são os mais utilizados.
2.1.4. Servlets e JSP
Para alcançar o objetivo desse trabalho foi preciso explorar os recursos da
linguagem JAVA quando utilizada para o desenvolvimento de aplicações Web
interativas. Diversas tecnologias possibilitam esse aproveitamento da linguagem
JAVA.
Seja para construir um simples site com conteúdo dinâmico ou para construir
um complexo sistema de Business-To-Business, é necessária a utilização de
ferramentas que possibilitem consultas a bancos de dados, integração com sistemas
corporativos, entre outras inúmeras funcionalidades.
Dentre as diversas tecnologias disponíveis atualmente para o
desenvolvimento dessa classe de aplicações, destaca-se a de Servlets e a de
páginas JSP (Java Server Pages). A utilização de Servlets e de páginas JSP oferece
diversas vantagens em relação ao uso de outras tecnologias (como PHP2, ASP3 e
CGI4). As principais vantagens são herdadas da própria linguagem Java:
2 PHP: Hypertext Preprocessor é uma linguagem de programação de computadores interpretada, livre
e muito utilizada para gerar conteúdo dinâmico na Web. Apesar de ser uma linguagem de fácil aprendizado e de uso para pequenos scripts dinâmicos simples, o PHP é uma linguagem poderosa orientada a objetos (WIKIPEDIA, 2006).
3 Active Server Pages (ASP) é uma estrutura de programação em Script que se utiliza de VBScript, JScript, PerlScript ou Python processadas pelo lado servidor para geração de conteúdo dinâmico naWeb. Ele roda nativamente em servidores Windows, através do serviço chamado de IIS, Internet
17
• Portabilidade: a aplicação desenvolvida pode ser implantada em diversas
plataformas, como por exemplo, Windows, Unix e Macintosh, sem que seja
necessário modificar ou mesmo reconstruir a aplicação;
• Facilidade de programação: a programação é orientada a objetos, simplificando
o desenvolvimento de sistemas que possuem muitas entidades e funcionalidades.
Além disso, a linguagem oferece algumas facilidades, como por exemplo, o
gerenciamento automático de memória (estruturas alocadas são automaticamente
liberadas, sem que o desenvolvedor precise se preocupar em gerenciar esse
processo);
• Flexibilidade: o Java já se encontra bastante difundido, contando com uma
enorme comunidade de desenvolvedores, ampla documentação e diversas
bibliotecas e códigos prontos, dos quais o desenvolvedor pode usufruir;
Além dessas vantagens, a arquitetura de Servlets e páginas JSP possibilitam
alguns benefícios adicionais (Temple, 2004):
• Escalabilidade: Permite a distribuição da carga de processamento entre
aplicações de servidores distintos. Conforme a necessidade, os servidores podem
ser adicionados ou removidos dinamicamente;
• Eficiência: os Servlets carregados por um servidor persistem em sua memória
até que ele seja finalizado. Assim, ao contrário de outras tecnologias, não são
iniciados novos processos para atender cada requisição recebida; por outro lado,
uma mesma estrutura alocada em memória pode ser utilizada no atendimento das
diversas requisições que chegam a esse mesmo Servlet;
• Recompilação automática: páginas JSP modificadas podem ser
automaticamente recompiladas, de maneira que passem a incorporar imediatamente
Information Service, o servidor web da Microsoft, ou do PWS (Personal Web Server) em ambientes com Windows 98. Além disso ele pode rodar em outras plataformas, como Linux no servidor Apache quando usando um Módulo de um programa como o Tomcal. O script é interpretado no lado do servidor e o que é enviado ao lado do usuário, como o navegador, é apenas a saída. que normalmente é uma linguagem de marcação como HTML, XHTML ou XML (WIKIPEDIA, 2006).
4 Common Gateway Interface (CGI) consiste numa importante tecnologia que permite gerar páginas dinâmicas, permitindo a um navegador passar parâmetros para um programa alojado num servidor web. Assim, designam-se por script CGI os pequenos programas que interpretam esses parâmetros e geram a página depois de os processar (WIKIPEDIA, 2006).
18
as alterações sem que seja necessário interromper o funcionamento da aplicação
como um todo;
Muito bem, nesse ponto é importante que se saiba então o que vem a ser
realmente um servlet e uma página JSP. Em seguida temos as respostas para essas
perguntas.
O que são Servlets?
Servlets são classes Java, desenvolvidas de acordo com uma estrutura bem
definida, e que, quando instaladas junto a um Servidor que implemente um Servlet
Container (um servidor que permita a execução de Servlets, muitas vezes chamado
de Servidor de Aplicações Java), podem tratar requisições recebidas de clientes.
Ao receber uma requisição, um Servlet pode capturar parâmetros desta
requisição, efetuar qualquer processamento inerente a uma classe Java, e devolver
uma página HTML, por exemplo.
Exemplo de Servlet import java.io.*;
import javax.servlet.http.*;
/ / Servlet simples que retorna página HTML com o endereço IP
/ / do cliente que está fazendo o acesso
public class RemoteIPServlet extends HttpServlet {
public void doGet( HttpServletRequest p_request,
HttpServletResponse p_response)
throws IOException {
PrintWriter l_pw = p_response.getWriter ();
l_pw.println(“<HTML><BODY>”);
l_pw.println(“O seu endereço IP é \”” +
p_reques t.getRemoteAddr () + “\””);
l_pw.println(“</BODY>< /HTML>”);
l_pw.flush ();
}
}
19
O que são páginas JSP?
As páginas JSP, ou Java Server Pages, foram criadas para contornar
algumas das limitações no desenvolvimento com Servlets: se em um Servlet a
formatação da página HTML resultante do processamento de uma requisição se
mistura com a lógica da aplicação em si, dificultando a alteração dessa formatação,
em uma página JSP essa formatação se encontra separada da programação,
podendo ser modificada sem afetar o restante da aplicação.
Assim, um JSP consiste de uma página HTML com alguns elementos
especiais, que conferem o caráter dinâmico da página. Esses elementos podem
tanto realizar um processamento por si, como podem recuperar o resultado do
processamento realizado em um Servlet, por exemplo, e apresentar esse conteúdo
dinâmico junto à página JSP.
Existe também um recurso adicional bastante interessante na utilização de
páginas JSP: a recompilação automática, que permite que alterações feitas no
código da página sejam automaticamente visíveis em sua apresentação. Assim, não
é necessário interromper o funcionamento da aplicação para incorporar uma
modificação de layout, por exemplo.
Exemplo de página JSP
<!—Página JSP Simples que imprime endereço IP da máquina que
está fazendo o acesso a esta página —>
<HTML>
<BODY>
O seu endereço IP é “<%= request.getRemoteAddr () %>”
</BODY>
</HTML>
Podemos também falar nesse momento sobre o componente responsável
pelo controle das servlets (o Servlet Container) e do servidor de aplicações Java
para web (o Tomcat).
20
Servlet Container
O container é o componente responsável pelo controle das servlets: ele a
instancia e utiliza à medida que se faz necessário. Os três tipos mais comuns de
instalação de Servlet Container e Webservers são mostrados na figura 2.6.
Figura 2.6: Tipos mais comuns de Servlet Containers. [Temple]
No primeiro, todas as requisições vão direto para o webserver, que também é
o container. No tipo dois, o webserver usa o container como um plugin e envia as
requisições pertinentes ao mesmo, enquanto, no tipo três, as requisições são feitas
diretamente ao webserver ou ao container.
Tomcat
O Tomcat é um servidor de aplicações Java para web. É software livre e de
código aberto surgido dentro do conceituado projeto Apache Jakarta e oficialmente
endossado pela Sun como a Implementação de Referência para as tecnologias Java
Servlet e Java Server Pages (JSP). Atualmente, o Tomcat tem seu próprio projeto
dentro da Apache Software Foundation. O Tomcat é robusto e eficiente o suficiente
para ser utilizado mesmo em um ambiente de produção[Wikipedia].
Tecnicamente, o Tomcat é um Container Web, parte da plataforma
corporativa Java Enterprise Edition (J2EE ou Java EE) que abrange as tecnologias
Servlet e JSP, incluindo tecnologias de apoio relacionadas como Realms e
segurança, JNDI Resources e JDBC DataSources. O Tomcat tem a capacidade de
atuar também como servidor Web/HTTP, ou pode funcionar integrado a um servidor
web dedicado como o Apache httpd ou o Microsoft IIS.
21
2.1.5. NetBeans IDE
A NetBeans IDE5 é um ambiente de desenvolvimento - uma ferramenta para
programadores, que permite a você escrever, compilar, debugar e instalar
programas. A IDE é completamente escrita em Java, mas pode suportar qualquer
linguagem de programação. Existe também um grande número de módulos para
estender a IDE NetBeans. A NetBeans IDE é um produto livre, sem restrições de
como ele pode ser usado. Além disso, a NetBeans IDE é um software livre.
2.1.6. JavaScript
JavaScript é uma poderosa linguagem de criação de scripts baseada em
objetos; os programas em JavaScript podem ser incorporados diretamente nas
páginas Web que usam HTML. Quando combinado com o modelo de objeto de
documento definido por um navegador Web, JavaScript permite criar conteúdo em
Dynamic HTML (chamada DHTML que é um tipo de HTML dinâmico) e aplicativos
interativos do lado cliente da Web. A sintaxe de JavaScript baseia-se naquela de
linguagens de programação muito utilizadas, como C, C++ e Java, o que a torna
familiar e fácil para programadores experientes. Além disso, o JavaScript é uma
linguagem de criação de scripts interpretada, fornecendo um ambiente flexível de
programação, de fácil aprendizado para novos programadores.
2.1.7. Db4o – Banco de Dados Orientado a Objetos
Atualmente é comum a procura por ferramentas que facilitem a integração
entre o mundo orientado a objetos (a linguagem e o framework) e o mundo relacional
(o banco de dados), pois a grade maioria de desenvolvedores e o próprio mercado já
estão habituados ao mundo relacional e para a resolução de alguns problemas a
solução orientada a objetos se mostra mais simples e eficaz. Ferramentas de
mapeamento de objeto relacional são equivalentes a “tradutores” entre duas línguas
totalmente diferentes. 5 IDE do inglês Integrated Development Environment ou Ambiente de Desenvolvimento Integrado é um programa de computador que reúne características e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo. Geralmente as IDEs unem a técnica de RAD(Rapid Application Development), que consiste em permitir que os desenvolvedores obtenham um aproveitamento maior, desenvolvendo código com maior rapidez.
22
Em todas as traduções você acaba perdendo as sutilezas de uma língua ou
tendo que usar muito mais palavras para expressar um conceito que é relativamente
simples na língua de origem. No mapeamento objeto-relacional não é diferente, você
acaba perdendo uma série de recursos da programação orientada a objetos, ou
tendo que escrever muito mais código para simular no banco de dados algo simples
na linguagem (como por exemplo, uma propriedade do tipo array ou o
gerenciamento de uma herança).
Quando falamos então em um banco de dados orientado a objetos,
esperamos que esse banco permita que você simplesmente pegue seu objeto do
jeito que ele está e jogue-o no banco de dados (podendo ser chamado de banco de
objetos) sem se preocupar com camadas e mais camadas de código para "traduzir"
um objeto em “query”.
Já existem várias tentativas de se fazer isso, incluindo algumas muito
avançadas, no entanto, a falta de confiabilidade nos equipamentos e sistema
operacional, aliadas a certa dose de preconceito, faz com que essa solução ainda
seja vista como "algo para o futuro".
Figura 2.7: Representação de um mapeamento O/R e um banco OO.
Um banco realmente orientado a objetos deve permitir que você faça suas
consultas de forma orientada a objetos, como se estivesse pesquisando em uma
“Lista” ou qualquer outro container de objetos. É aqui que se encaixa o db4o.
O db4objects:
O db4objects(db4o) surgiu há alguns anos, inicialmente apenas para Java.
Com a grande semelhança de código entre o .Net e o Java, foi um pulo para que
fosse criada uma versão .Net. Hoje, as versões .Net e Java caminham lado a lado,
tendo ambas os mesmos recursos.
23
Não é preciso instalar nem configurar um servidor de banco de dados, para
aplicação cliente/servidor, o próprio db4o provê recursos para que isso seja feito,
mas sempre de uma forma simples, sem a necessidade de ser um usuário
experiente em configuração de banco de dados.
Quando se fala em db4o, algumas perguntas são inevitáveis:
a) O desempenho é bom?
Sim. Alguns testes mostram inclusive que o db4o é muito mais rápido que soluções que envolvam o uso de Hibernate por exemplo. Veja benchmarks:
Figura 2.8: Benchmarks do db4o e algumas soluções de mapeamento O/R.[Db4o]
b) O custo é elevado?
Não. A licença do db4o é open-source dual, ou seja, se você está
desenvolvendo para uso próprio, dentro de sua empresa, por exemplo, criando seu
website ou desenvolvendo um programa General Public License (GPL), ou seja,
desenvolvendo software livre, ele é gratuito. Mas mesmo que precise distribuir sua
aplicação, o custo da licença runtime é muito baixo U$9,00 por unidade
(Db4oObjects, 2006).
24
2.1.8. Sistema WEB Gerenciador de Perfis (SWGP)
Sistema web criado por (Thiago, 2006) como projeto de graduação. Esse
sistema gerencia e auxilia o desenvolvimento de novos sistemas computacionais
que tenham a necessidade de utilizar métodos RI (Recuperação de Informação).
O SWGP disponibiliza além da interface web de gerência, um banco de dados
comum para o armazenamento de todas as necessidades inerentes aos sistemas
computacionais em desenvolvimento. Todos os objetos com perfis armazenados
nesse banco, criando um tipo de “banco de perfis compartilhado”, podendo ser
utilizado por todas as novas aplicações.
2.2. Sistemas Correlatos
Essa seção apresenta alguns sistemas similares ao proposto. Esses sistemas
estão funcionando em algumas instituições de ensino. Por exemplo, o Departamento
de Engenharia de Sistemas e Computação da UERJ e o Projeto Poli-Cidadã da
Escola Politécnica da USP (ubirajara.lac.usp.br/policidada) utilizam sistemas
equivalentes ao proposto nesse trabalho.
2.2.1. Página do Departamento de Engenharia de Sistemas e Computação da UERJ (www.desc.eng.uerj.br):
Nesse sistema há uma seção, mostrada na figura 2.9, que apresenta uma
lista de professores, e para cada um destes professores, uma relação de temas para
Projeto de Graduação que eles estariam interessados em orientar. Qualquer pessoa
tem acesso a esta lista, e o aluno que se interessar por algum tema deve entrar em
contato com o professor informando o interesse. O sistema não realiza a seleção
dos alunos.
25
Figura 2.9: Página do Departamento de Engenharia de Sistemas e Computação da UERJ
2.2.2. Projeto Poli-Cidadã:
Esse projeto tem como objetivo estabelecer mecanismos para incentivar a
realização de Trabalhos de conclusão de curso (TCC) que atendam necessidades
identificadas junto a organismos representativos da sociedade. Portanto, o objetivo é
propor aos alunos de graduação e professores orientadores alternativas de temas
obtidos a partir de manifestação de órgãos representativos da sociedade, e que
sejam compatíveis com o escopo de um Trabalho de Formatura.
A figura 2.10 mostra a página inicial do sistema. Visitantes podem obter
informações sobre o Projeto Poli-Cidadã e cadastrar temas. Alunos e professores
têm acesso à lista de temas cadastrados e à lista de projetos já concluídos.
26
Figura 2.10: Página do Projeto Poli-Cidadã da Escola Politécnica da USP
O cadastro de temas é feito como demonstrado nas figuras 2.11 e 2.12.
Inicialmente o visitante cadastra informações relacionadas ao Organismo a que
pertence. Em seguida, apresenta uma descrição completa do tema proposto.
Finalmente, A Comissão Gestora do Poli-Cidadã decidirá se o projeto deve ou não
ser desenvolvido pelos alunos.
27
Figura 2.11: Projeto Poli-Cidadã - Cadastro de Temas (Dados do Organismo)
28
Figura 2.12: Projeto Poli-Cidadã - Cadastro de Temas (Descrição do Tema)
29
CAPÍTULO 3 - ESPECIFICAÇÃO DE REQUISITOS
A Especificação de Requisitos foi desenvolvida usando a técnica de
modelagem de casos de uso. Portanto, apresenta os diagramas de casos de uso
gerados, bem como as descrições dos atores e dos casos de usos identificados
nesses diagramas.
3.1. Descrição do Mini-Mundo
O Sistema virtual para a publicação e seleção de temas proposto visa facilitar
e agilizar o contato entre professores orientadores e alunos. Dessa forma, os
professores poderão propor temas de projetos para que os alunos interessados
possam escolher o tema de interesse. Adicionalmente, empresas cadastradas no
sistema poderão propor temas do seu interesse. Os temas serão direcionados
automaticamente para os professores com perfil adequado ao assunto. Em seguida,
o tema será desenvolvido de acordo com o interesse dos envolvidos. Além disso, o
sistema busca aproximar as empresas do ambiente acadêmico. Dessa forma, os
alunos terão a oportunidade de desenvolver trabalhos voltados para a realidade e
exigências do mercado de trabalho.
O Sistema terá três atores: Professor, Aluno e Organização, cada um terá
acesso a funcionalidades diferentes do sistema.
Após se cadastrar, o professor deverá efetuar login no sistema e então estará
apto a cadastrar temas, indicando entre outras coisas, sua descrição, data limite de
confirmação por parte dos alunos selecionados e o número de desenvolvedores.
Após o cadastro e login do aluno é possível realizar uma busca entre os
temas que atendem ao seu perfil por Título, por Situação (seleção em andamento ou
encerrada) ou por Professor responsável.
Se o aluno tiver alguma dúvida ou sugestão, relacionada ao tema poderá
entrar na área de exibição do tema e fazer uma pergunta, que poderá ser
respondida, posteriormente, pelo professor que cadastrou o tema ou qualquer outro
que esteja capacitado para isso. Ao encontrar um tema de seu interesse o aluno
poderá confirmar o seu interesse em desenvolvê-lo.
30
Empresa de fora do ambiente acadêmico, chamada aqui de Organização
também opôs devidamente cadastrada no sistema poderá indicar suas, que depois
de avaliadas por algum professor com formação relacionada ao assunto poderão ser
transformadas em novos temas para desenvolvimento.
Com relação aos temas cadastrados, aluno, professor e até mesmo
organização em caso de temas criados a partir de uma de suas proposta terão
acesso à lista de alunos habilitados a desenvolver o tema e nessa lista os alunos
serão classificados de acordo com a adequação de seu perfil ao perfil do tema, ou
seja, os alunos que mais possuírem as características desejadas para o
desenvolvimento do tema terão maior prioridade.
3.2. Casos de Uso
Os casos de uso descrevem o sistema a partir de uma visão externa, ou seja,
compreensível tanto por desenvolvedores, analistas, projetistas e testadores quanto
pelos usuários do sistema. Como o próprio nome diz, caso de uso é uma forma de
utilização do sistema. Os usuários interagem com o sistema através dos seus casos
de uso.
Normalmente sistemas computacionais não trabalhão isoladamente. Nesses
casos se espera que o mesmo interaja ou com um usuário ou com outro sistema,
que são considerados atores. Em suma, um caso de uso é uma interação típica
entre um ator e o sistema. Os casos de uso além de servirem para o
desenvolvimento do sistema também são úteis para a realização dos testes.
Um diagrama de caso de uso especifica as funcionalidades que um sistema
pode oferecer aos seus usuários, segundo cada perspectiva individual. Um diagrama
de caso de uso é composto por um ator e seus casos de uso. A associação entre um
ator e o caso de uso corresponde à interação ou troca de mensagens entre eles.
A figura 3.1 apresenta o diagrama de casos de uso do sistema, as subseções
seguintes apresentam uma descrição detalhada de cada um deles.
31
Figura 3.1: Diagrama de Casos de Uso para Professor, Aluno e Organização.
3.2.1. Caso de Uso Cadastrar-se
Este caso de uso é responsável pelo cadastro de professores, alunos e
organizações (Empresas ou Instituições), bem como consulta e alteração dos dados.
Curso Normal:
Cadastro:
• Professor: O usuário informa seus dados incluindo: nome, e-mail, senha para
autenticação no sistema, departamento, telefone, sexo, data de nascimento e um
breve resumo de sua Formação e Área de Interesse (esse texto é utilizado pelo
sistema para extração do perfil do professor). O sistema verifica se não existe
nenhum professor já cadastrado com esse nome e login. Caso os dados sejam
válidos o novo usuário é registrado.
• Aluno: O usuário informa seus dados incluindo: matrícula, nome, e-mail, senha
para autenticação no sistema, curso, telefone sexo, data de nascimento e um breve
resumo de suas Experiências e Conhecimentos (esse texto é utilizado pelo sistema
para extração do perfil do aluno). O sistema verifica se já não há nenhum aluno
cadastrado com a mesma matrícula, nome e e-mail. Caso os dados sejam válidos o
novo usuário é registrado.
32
• Organização: O usuário informa seus dados incluindo: nome, documento, tipo
(publica/privada), nome da pessoa de contato ou responsável, endereço, bairro,
cidade, UF, CEP, telefone para contato, e-mail, URL, senha para autenticação no
sistema e uma breve descrição sobre a entidade. O sistema verifica se já não há
nenhuma empresa cadastrada com o mesmo documento, e-mail ou URL. Caso os
dados sejam válidos o novo usuário é registrado.
Excluir Cadastro:
Após autenticar-se no sistema o usuário pode excluir seu cadastro. O sistema
verifica se o usuário não possui nenhum vinculo com algum tema ou proposta e o
exclui.
Alterar Dados:
Após autenticar-se no sistema o usuário pode alterar seu cadastro, inserindo
novos dados. Os novos dados são validados e a alteração registrada.
Consultar Dados:
Após autenticar-se no sistema o usuário pode consultar seus dados inseridos
no cadastro.
Cursos Alternativos:
Cadastro:
Se o usuário digitar dados inválidos uma mensagem de erro é exibida,
solicitando correção da informação inválida.
Excluir Cadastro:
Se o usuário possui vinculo com temas ou propostas de temas cadastradas
uma mensagem de erro é exibida, indicando a necessidade de excluir suas
propostas e tentar novamente.
Alterar Dados:
Se o usuário digitar dados inválidos uma mensagem de erro é exibida,
solicitando correção da informação inválida.
33
3.2.2. Caso de Uso Autenticar-se
Caso de uso responsável por autenticar o usuário no sistema. Aluno,
Professor ou Organização deverá executar a ação para ter acesso às outras
funções.
Curso Normal:
O usuário deseja acessar o sistema, informa seu login e senha e seleciona a
opção acessar o sistema.
O sistema verifica se o login informado está cadastrado no sistema e se a
senha está correta. O sistema verifica o tipo de usuário e as funcionalidades do
sistema que ele terá acesso.
Cursos Alternativos:
Se o usuário informar login ou senha inválidos uma mensagem de erro é
exibida, solicitando correção da informação inválida.
3.2.3. Caso de Uso Cadastrar Tema
Este caso de uso é responsável pelo cadastro de temas, bem como consulta
ou alteração de dados relativos ao tema e exclusão do tema.
Curso Normal:
Cadastro:
Após autenticar-se no sistema, o professor poderá cadastrar um tema. Ele
informará o título do tema e sua descrição, área de conhecimento, o número de
candidatos que serão selecionados e a data de finalização para confirmação dos
alunos selecionados. Os dados são validados e o novo tema inserido na base de
dados. Imediatamente após o cadastramento do tema o sistema já permite verificar
os alunos selecionados para desenvolver o projeto do tema, a partir do casamento
dos perfis dos alunos e do tema.
34
Alterar Dados:
Após autenticar-se o professor poderá escolher entre os temas que cadastrou
aquele que deseja alterar. Os novos dados devem ser inseridos, eles serão
validados e a alteração será registrada.
É importante dizer que a ordem de seleção dos candidatos ao tema é
calculada dinamicamente, de modo que alunos que antes se encontravam
classificados para o tema, após a alteração podem tornar-se inadequados por não
satisfazerem o novo perfil.
Excluir Cadastro:
Após autenticar-se o professor poderá excluir algum tema que cadastrou. Se
a data de finalização do processo de seleção já expirou, os alunos que tiverem sido
selecionados a desenvolver um projeto desse tema deverão ser contatados.
Consultar Dados:
Após autenticar-se o professor poderá escolher entre os temas que cadastrou
aquele que deseja consultar, será informado ainda do número de candidatos ao
tema. Se a data de confirmação dos alunos já expirou, a lista dos alunos
selecionados também será exibida.
Cursos Alternativos:
Cadastro:
No caso de dados inválidos: uma mensagem de erro deverá ser exibida,
solicitando correção da informação inválida.
Alterar Dados:
No caso de dados inválidos: uma mensagem de erro deverá ser exibida,
solicitando correção da informação inválida.
3.2.4. Caso de Uso Consultar Temas
Este caso de uso é responsável pela consulta a temas oferecida aos alunos e
professores.
35
Curso Normal:
• Aluno: O aluno durante a consulta, que já é realizada automaticamente aos
temas que possuem o seu perfil, poderá filtrar o resultado da seleção por Título,
Situação e Professor e digitará o termo a ser pesquisado. A partir da lista de temas
exibida, o aluno poderá então escolher aquele que deseja visualizar detalhes.
• Professor: O professor poderá filtrar a consulta por Título, Situação, Área, se é
para exibir apenas os seus temas, e digitará o termo a ser pesquisado. A partir da
lista de temas exibida, o professor poderá então escolher aquele que deseja
visualizar detalhes.
• Organização: A partir da Verificação da Situação das Propostas a Organização
poderá visualizar os dados dos temas criados, que estarão acompanhando os dados
da própria proposta em forma de uma lista. Para visualizar detalhes de um tema o
usuário poderá escolher aquele que desejar.
Cursos Alternativos:
Não há.
3.2.5. Caso de Uso Fazer Pergunta
• Aluno: Se o aluno tiver alguma dúvida ou sugestão relacionada ao tema poderá
entrar na área de exibição do tema e fazer uma pergunta ao professor que cadastrou
o tema.
• Organização: Se o organismo tiver alguma dúvida ou sugestão relacionada ao
tema gerado por uma de suas propostas poderá entrar na área de exibição do tema
e fazer uma pergunta ao professor que cadastrou o tema.
• Professor: Se o professor também estiver interessado em fazer alguma
pergunta relacionada ao projeto essa funcionalidade estará disponível, dessa forma
possibilitando criar uma espécie de lista de discussão.
Curso Normal:
Na tela de exibição do tema, o usuário digitará sua pergunta ou sugestão e
confirmará sua inclusão.
36
Cursos Alternativos:
Caso o número de caracteres da pergunta exceda o máximo permitido, uma
mensagem de erro deve ser exibida, solicitando a correção da informação.
3.2.6. Caso de Uso Responder Pergunta
Ao entrar na área de exibição de um tema, se o usuário (Professor, Aluno ou
Organização) verificar que há perguntas que ele sabe responder, poderá selecionar
responder tal pergunta e digitar a resposta.
Curso Normal:
O usuário digitará a resposta e confirmará sua inclusão.
Cursos Alternativos:
Caso o número de caracteres da resposta exceda o máximo permitido, uma
mensagem de erro deve ser exibida, solicitando a correção da informação.
3.2.7. Aceitar tema
Este caso de uso é responsável pela aceitação ou não do aluno desenvolver
o tema no período até a data limite para confirmação.
Curso Normal:
Aceitação:
Depois de processada a classificação dos candidatos ao tema, pelo critério de
semelhança entre perfil do aluno e do tema, o aluno pode escolher aceitar ou não
desenvolver o tema.
Rejeição:
O aluno poderá desistir de desenvolver um tema e rejeitar a oportunidade.
Cursos Alternativos:
Não há.
37
3.2.8. Caso de Uso Verificar Resultado
Este caso de uso é responsável pela exibição do resultado da seleção dos
alunos para um determinado tema.
Curso Normal:
• Aluno: Ao consultar temas o aluno deverá ser informado, dos temas em
que ele se enquadrou ao perfil e desses quais já excederam a data de
confirmação. O aluno deverá escolher o tema que deseja verificar o resultado.
Será exibida a lista em ordem de classificação com o nome dos alunos
selecionados para desenvolver o tema e a opção de aceitar ou não mesmo
não estando na lista como classificado, mas sim como suplente.
• Professor: Após autenticar-se no sistema, o professor deverá ser
informado, dos temas que ele cadastrou, quais já excederam a data de
confirmação dos alunos. O professor deverá, então, escolher entre esses
temas, aquele que deseja verificar o resultado. Será exibida uma lista com
matrícula, nome e situação. Caso o professor queira ter mais detalhes sobre
um determinado aluno, bastará selecionar esse aluno e todos os dados serão
exibidos.
• Organização: Ao verificar o andamento de suas propostas, a organização
poderá querer visualizar dados de temas criados a partir da mesma e ao
visualizar os dados do tema querer ainda verificar a lista de alunos que
desenvolverá tal tema. Assim uma lista de alunos será exibida e esta lista
será somente para leitura, não sendo permitido visualizar mais detalhes sobre
os alunos.
Cursos Alternativos:
Não há.
3.2.9. Caso de Uso Cadastrar Proposta
Este caso de uso é responsável pelo cadastro de Propostas, que poderão,
posteriormente, criar novos temas.
38
Curso Normal:
A Organização informa os dados da proposta incluindo: Título, Área de
conhecimento, Descrição, e Recursos Disponibilizados para o Desenvolvimento da
solução além de uma Observação se for necessário.
Cursos Alternativos:
No caso de dados inválidos, ou que excedam o máximo de caracteres
permitido uma mensagem de erro é exibida, solicitando correção.
3.2.10. Caso de Uso Verificar Situação das Propostas
Este caso de uso é responsável pelo acompanhamento da Situação das
Propostas feitas por uma Organização.
Curso Normal:
A organização consulta as propostas feitas por ela, tendo como resultado a
situação em que elas se encontram, que pode ser de Aceita, em Avaliação ou
Rejeitada com as devidas justificativas do professor que a avaliou. Em caso de
aceitação, é possível visualizar o tema gerado para cadastramento de perguntas e
sugestões.
Cursos Alternativos:
Não há.
3.2.11. Caso de Uso Consultar Propostas
Este caso de uso é responsável pela consulta a propostas incluídas por
Organizações.
Curso Normal:
O professor terá a opção de exibir a lista de propostas inseridas, ele poderá
escolher a proposta que deseja visualizar tendo acesso aos dados da organização e
da proposta, podendo avaliar e torná-la tema se for o caso.
Cursos Alternativos:
Não há.
39
3.2.12. Caso de uso Aceitar Proposta
Depois do professor consulta as propostas, ele pode concluir que a proposta
é interessante a ponto de se tornar um tema para projeto e então cadastrar a partir
da proposta um tema.
Curso Normal:
Depois do professor consulta a proposta, ele pode concluir que a proposta é
interessante a ponto de se tornar um tema para projeto, e então cadastrar a partir da
proposta um tema através da opção aceitar proposta que abrirá o cadastro de tema
com alguns dados previamente preenchidos.
Cursos Alternativos:
Não há.
40
CAPÍTULO 4 - ANÁLISE
A análise foi desenvolvida em duas etapas principais, a primeira focando na
estrutura de informação do sistema, a segunda em seu comportamento. Nas seções
4.1 e 4.2, são apresentados os produtos da primeira etapa, diagrama de classe e um
dicionário de dados. Na seção 4.3, é apresentado o produto da segunda etapa:
diagramas de seqüências.
4.1. Diagrama de Classes
Através da especificação dos casos de usos foi possível identificar as
seguintes classes: Professor, Aluno, Organização, Tema, Desenvolvedor, Pergunta
e Proposta. Segue na figura 4.1 o Diagrama de Classes para o sistema, mostrando o
relacionamento entre as classes e seus atributos.
Figura 4.1: Diagrama de Classes
41
4.2. Dicionário de dados
Nesta seção é apresentada uma listagem contendo um detalhamento de
todos os elementos de dados envolvidos no sistema. Nela são mostradas as classes
identificadas na fase de análise, bem como os atributos de cada uma das classes,
juntamente com suas descrições.
Professor: Representa os professores cadastrados no sistema.
• id_professor: número de identificação do professor;
• nome: nome do professor;
• email: e-mail do professor. O e-mail será utilizado para efetuar o login no
sistema;
• senha: senha para acesso ao sistema;
• departamento: departamento ao qual o professor pertence;
• telefone: telefone para contato (opcional);
• sexo: sexo do professor;
• dt_nascimento: data de nascimento do professor;
• .formacaoAreaInterece: Um texto contento a formação do professor(títulos de
mestrado, doutorado...) e suas áreas de interesse e desenvolvimento de trabalhos.
Esse texto é utilizado pelo sistema para extrair o perfil do professor.
Aluno: Representa os alunos cadastrados no sistema.
• matricula: número de matrícula do aluno na universidade;
• nome: nome do aluno;
• email: e-mail do aluno. O e-mail será utilizado para efetuar o login no sistema;
• senha: senha para acesso ao sistema;
• curso: curso a que o aluno pertence;
• telefone: telefone para contato (opcional);
42
• sexo: sexo do aluno;
• dt_nascimento: data de nascimento do aluno;
• experienciaConhecimentos: Texto contendo uma breve descrição de atividades
já realizadas pelo aluno(estágio, iniciação cientifica...), áreas de interesse e
conhecimentos sobre ferramentas, tecnologias ou assuntos. Esse texto é utilizado
pelo sistema para extrair o perfil do aluno.
Organização: Representa as organizações (empresas ou instituições) cadastradas
no sistema.
• Id_organizacao: número de identificação da organização;
• nome: nome da organização;
• documento: número do documento da organização. No caso de Empresa CNPJ,
Pessoa Física CPF;
• tipo: tipo de organização (Governo, Fundação, ONG, Associação, Empresa
Privada, Empresa Pública, Pessoa Física e Outros);
• contato: nome da pessoa de contato;
• email: e-mail para contato. O e-mail será utilizado para efetuar o login no
sistema;
• senha: senha para acesso ao sistema.
• endereço: endereço da organização, logradouro e número;
• complemento: complemento do endereço da organização;
• bairro: bairro da organização;
• cidade: cidade da organização;
• uf: estado/unidade federativa da organização;
• cep: CEP da organização;
• telefone: telefone para contato;
• url: Endereço eletrônico da organização;
43
• descrição: Uma breve descrição da empresa, organização ou instituição, falando
sobre sua área de atuação e atividades.
Tema: Representa os temas que os professores podem cadastrar no sistema.
• id_tema: número de identificação do tema;
• id_professor: número de identificação do professor que cadastrou o tema;
• id_proposta: número de identificação da proposta que originou o tema;
• titulo: título do tema;
• area: área de conhecimento relacionada ao tema;
• descricao: descrição do tema. Esse texto é utilização pelo sistema para extrair o
perfil do tema;
• ndesenvolvedores: número previsto de vagas para desenvolvedores;
• dtFimConfirmacaoAluno: data limite para o aluno classificado aceitar participar
do desenvolvimento do projeto relacionado ao tema;
Desenvolvedores: Representa os alunos que já foram selecionados pelo sistema
para desenvolver o tema e já confirmaram a participação no desenvolvimento do
projeto.
• id_aluno: matrícula do aluno desenvolvedor;
• id_tema: número de identificação do tema em que o aluno se tornou
desenvolvedor;
• situação: situação do aluno em relação ao desenvolvimento do tema, diz se ele
está confirmado, pendente ou cancelado;
• suplente: indica se o aluno foi classificado fora da quantidade de vagas
previstas para desenvolvedores e se encontra na condição de suplência. Esse
campo não indica a ordem de classificação isso é calculado dinamicamente pela
adequação ao perfil do tema.
44
Pergunta: Representa as informações correspondentes as perguntas relacionadas
aos temas.
• id_pergunta: número de identificação da pergunta;
• id_tema: número de identificação do tema ao qual essa pergunta está
relacionada;
• id_aluno_pergunta: número de identificação do aluno que registrou a pergunta
(se foi um aluno);
• id_organizacao_pergunta: número de identificação da organizacao que registrou
a pergunta (se foi uma organizacao);
• id_professor_pergunta: número de identificação do professor que registrou a
pergunta (se foi um professor);
• id_aluno_resposta: número de identificação do aluno que registrou a resposta
(se foi um aluno);
• id_organizacao_resposta: número de identificação da organizacao que registrou
a resposta (se foi uma organizacao);
• id_professor_resposta: número de identificação do professor que registrou a
resposta (se foi um professor);
• pergunta: texto da pergunta;
• dt_pergunta: data em que a pergunta foi registrada;
• resposta: resposta à pergunta(opcional);
• dt_resposta: data em que a resposta foi registrada.
Proposta: Representa as propostas cadastradas pelos Visitantes.
• id_proposta: número de identificação da proposta;
• id_organizacao: número de identificação da organizacao que registrou a
proposta;
• titulo: título da proposta;
45
• area: área de conhecimento relacionada à proposta;
• descricao: descrição da proposta. Esse texto é utilizado para extrair o perfil da
proposta;
• recursos: recursos disponibilizados pela organização para desenvolvimento da
proposta (opcional);
• situação: informa a situação da proposta, diz se ela já foi avaliada por algum
professor e se foi aceita/rejeitada, se está em avaliação ou se ainda não foi avaliada;
• observação: Um texto contendo alguma observação sobre a proposta se for o
caso. Esse campo pode ser preenchido tanto pela própria organização ao cadastra a
proposta tanto pelo professor ao necessitar explicar algo sobre sua avaliação da
proposta.
4.3. Diagramas de Sequência
Nesta seção serão apresentados os diagramas de seqüência para os casos
de uso “Cadastrar-se”, “Autenticar-se”, “Cadastrar Tema”, “Consultar Temas”, “Fazer
Pergunta”, “Responder Pergunta”, “Verificar Resultado”, “Aceitar Tema”, “Aceitar
Proposta” e “Verificar situação das propostas” apresentando informações
relacionadas aos cenários mais importantes:
• A figura 4.2 mostra o diagrama de seqüência para o caso de uso
“Cadastrar-se”;
Figura 4.2: Diagrama de seqüência - Caso de uso “Cadastrar-se”.
46
• A figura 4.3 apresenta o diagrama de seqüência para o caso de uso
“Autenticar-se”;
Figura 4.3: Diagrama de seqüência - Caso de uso “Autenticar-se”.
• A figura 4.4 representa o diagrama de seqüência para o caso de uso
“Cadastrar Tema”;
Figura 4.4: Diagrama de seqüência - Caso de uso “Cadastrar Tema”.
47
• A figura 4.5 apresenta o diagrama de seqüência para os casos de uso
“Consultar Temas”, “Fazer Pergunta”, “Verificar resultado” e “Aceitar Tema” para
o ator “Aluno”.
Figura 4.5: Diagrama de seqüência – Casos de uso “Consultar Temas”, “Fazer Pergunta”, “Verificar Resultado” e “Aceitar Tema” para o ator “Aluno”.
48
• A figura 4.6 apresenta o diagrama de seqüência para os casos de uso
“Consultar Tema”, “Responder Pergunta” e “Verificar resultado” para o ator
“Professor”.
Figura 4.6: Diagrama de seqüência – Casos de uso “Consultar Temas”, “Responder Pergunta” e “Verificar Resultado” para o ator “Professor”
• A figura 4.7 apresenta o diagrama de seqüência para os casos de uso
“Consultar Proposta” e “Aceitar Proposta”.
49
Figura 4.7: Diagrama de seqüência – Caso de uso “Consultar Proposta” e “Aceitar Proposta”
• A figura 4.8 apresenta o diagrama de seqüência para o caso de uso
“Cadastrar Proposta”.
Figura 4.8: Diagrama de seqüência – Caso de uso “Cadastrar Proposta”
50
• A figura 4.9 apresenta o diagrama de seqüência para os casos de uso “Verificar situação das propostas” e “Fazer Pergunta” para o ator “Organização”.
Figura 4.9: Diagrama de seqüência – Casos de uso “Verificar a situação das propostas” e “Fazer Pergunta” para o ator “Organização”
51
CAPÍTULO 5 - PROJETO
Por se tratar de um sistema do Web, a linguagem de programação deve
permitir a construção de sistemas que operem em ambientes multiplataforma. Por
isso, a aplicação será desenvolvida utilizando a linguagem orientada a objetos Java
e o sistema cliente será acessado por meio dos principais navegadores Web.
Além disso, o sistema permitirá a utilização de dispositivos portáteis, tais
como PDA, Notebook e celulares, pois esses dispositivos já possuem mecanismos
de acesso a páginas Web.
Para a persistência das informações foi utilizado um banco de dados
orientado a objetos. Existem algumas opções de banco de dados orientados a
objetos. A escolha do banco de dados deve levar em consideração o custo, os
benefícios e a facilidade de integração com a linguagem de desenvolvimento
escolhida. Dentre os bancos de dados Open Source existentes no mercado, o Db4o
apresenta a melhor relação custo benefício para a utilização no sistema proposto.
Com relação à arquitetura do sistema que foi implementada, podemos dizer
de forma bem simples, que se trata de um servidor principal, rodando um serviço de
acesso Web (específico da linguagem escolhida) e um banco de dados, o qual pode
funcionar em um servidor à parte para aumentar a segurança dos dados.
5.1. Modelo Conceitual
O modelo conceitual, conhecido como diagrama de classes da UML,
representa os objetos de domínio do problema. Ele é apresentado na figura 5.1 e
difere-se do diagrama de classes da seção 4.1, pois apresenta os tipos de dados
dos atributos, considerando a plataforma de implementação.
52
Figura 5.1: Modelo Conceitual do Sistema
5.2. Modelo de Persistência
Para a persistência optou-se por usar o padrão DAO (Data Access Object),
que é utilizado para encapsular a lógica de acesso a dados. Assim, se for necessário
alteração de banco de dados, não é necessário alterar todo sistema, mas somente
os DAOs. O padrão DAO fornece uma interface flexível entre a lógica de negócio e
as fontes de dados reais. Com esta solução, implementa-se um objeto que é
unicamente responsável por receber informação de um armazenamento persistente,
onde quer que ele esteja. Isto abstrai a visão do dado usada por uma aplicação do
layout da tabela ou arquivo em disco.
Portanto para que seja realizada a persistência dos dados cada uma das
classes já apresentadas possuirá uma classe sombra, a classe sombra encapsula as
operações do mecanismo de persistência e é responsável pela leitura e gravação de
dados dos objetos pertencentes à classe correspondente com a qual se relacionará.
A seguir são identificadas cada uma dessas classes sombra e suas operações:
53
• AlunoDAO : Classe sombra relacionada à classe Aluno, demonstrada na figura
5.2:
Figura 5.2: AlunoDAO
- inserirAluno: insere um novo aluno na Base de dados. O retorno é um
número que pode indicar matrícula repetida, login repetido, ocorrência de erro
ou sucesso;
- atualizarAluno: atualiza os dados de um aluno. O retorno é o mesmo da
inserção;
- excluirAluno: exclui um aluno. O retorno é um número que pode indicar
dependências, a ocorrência de erro ou sucesso;
- recuperarAlunoPorId: dado uma ID, recupera o aluno que possui essa ID;
- verificarLogin: Dado um login e uma senha, verifica se existe um aluno
cadastrado com esses dados. Em caso afirmativo retorna sua ID, em caso
contrário um número negativo;
- recuperarAlunosPorPerfil: Dado um perfil, recupera da Base de dados uma
lista de alunos acompanhados de um número que representa seu grau de
aproximação com esse perfil e ordenados por esse número do maior para o
menor.
54
• ProfessorDAO: Classe sombra relacionada à classe Professor, demonstrada na
figura 5.3:
Figura 5.3: ProfessorDAO
- inserirProfessor: insere um professor na Base de dados. O retorno é um
número que pode indicar login repetido, ocorrência de erro ou sucesso;
- atualizarProfessor: atualiza os dados de um professor. O retorno é o mesmo
da inserção;
- excluirProfessor: exclui um professor. O retorno é um número que pode
indicar dependências, a ocorrência de erro ou sucesso;
- recuperarProfessorPorId: dado uma ID, recupera o professor que possui
essa ID;
- verificarLogin: Dado um login e uma senha, verifica se existe um professor
cadastrado com esses dados. Em caso afirmativo retorna sua ID, em caso
contrário um número negativo;
- recuperarProfessoresPorPerfil: Dado um perfil, recupera da Base de dados
uma lista de professores acompanhados de um número que representa seu
grau de aproximação com esse perfil.
55
• OrganizacaoDAO: Classe sombra relacionada à classe Organizacao,
demonstrada na figura 5.4:
Figura 5.4: OrganizacaoDAO
- inserirOrganizacao: insere uma organização na Base de dados. O retorno é
um número que pode indicar documento repetido, login repetido, ocorrência
de erro ou sucesso;
- atualizarOrganizacao: atualiza os dados de uma organização. O retorno é o
mesmo da inserção;
- excluirOrganizacao: exclui uma organização. O retorno é um número que
podem indicar dependências, a ocorrência de erro ou sucesso;
- recuperarOrganizacaoPorId: dado uma ID, recupera a organização que
possui essa ID;
- verificarLogin: Dado um login e uma senha, verifica se existe uma
organização cadastrada com esses dados. Em caso afirmativo retorna sua ID,
em caso contrário um número negativo.
56
• TemaDAO: Classe sombra relacionada à classe Tema, demonstrada na figura
5.5:
Figura 5.5: TemaDAO
- inserirTema: insere um novo tema na Base de dados. O retorno é um
número que pode indicar título repetido, ocorrência de erro ou sucesso;
- atualizarTema: atualiza os dados de um tema. O retorno é o mesmo da
inserção;
- excluirTema: exclui um tema. O retorno é um número que pode indicar
dependências, a ocorrência de erro ou sucesso;
- recuperarTemaPorId: dado uma ID, recupera o tema que possui essa ID;
- recuperarTemasPorPerfil: dado um perfil, recupera da Base de dados uma
lista de temas acompanhados de um número que representa seu grau de
aproximação com esse perfil;
- consultarTemasPorTitulo: além de recuperar por um perfil, dado um termo,
filtra a lista para se ter apenas temas em que o título possui esse termo;
- consultarTemasPorArea: além de recuperar por um perfil, dado um termo,
filtra a lista para se ter apenas temas em que a área possui esse termo;
- consultarTemasPorProfessor: além de recuperar por um perfil, dado um
termo, recupera a lista para se ter apenas temas em que o nome do Professor
que o cadastrou possui esse termo;
57
- consultarTemasPorSituacao: além de recuperar por um perfil, dado um
termo, recupera a lista para se ter apenas temas em que a seleção ainda está
em fase de andamento ou em que a seleção já foi finalizada, de acordo com a
data limite para confirmação de alunos.
• PropostaDAO: Classe sombra relacionada à classe Proposta, demonstrada na
figura 5.6;
Figura 5.6: PropostaDAO
- inserirProposta: insere uma nova proposta na Base de dados. O retorno é
um número que pode indicar título repetido, ocorrência de erro ou sucesso;
- atualizarProposta: atualiza os dados de uma proposta. O retorno é o mesmo
da inserção;
- excluirProposta: exclui uma proposta. O retorno é um número que pode
indicar dependências, a ocorrência de erro ou sucesso;
- recuperarPropostaPorId: dado uma ID, recupera a proposta que possui essa
ID;
- recuperarPropostasPorPerfil: dado um perfil, recupera da Base de dados
uma lista de propostas acompanhadas de um número que representa seu
grau de aproximação com esse perfil;
- recuperarPropostasPorOrg: dado a ID de uma organização, retorna uma
lista em que todas as propostas possuem essa ID como a ID da organização
que a registrou.
58
• DesenvolvedorDAO: Classe sombra relacionada à classe Desenvolvedor,
demonstrada na figura 5.7;
Figura 5.7: DesenvolvedorDAO
- inserirDesenvolvedor: insere um novo desenvolvedor a um tema na Base de
dados;
- atualizarDesenvolvedor: atualiza os dados de um desenvolvedor;
- excluirDesenvolvedor: exclui um desenvolvedor.
- recuperarDesenvolvedoresPorTema: dado a ID de um tema, recupera os
dados dos aluno desenvolvedores desse tema. Tanto na condição de
suplente como na condição de classificado.
- verificarSituacaoAluno: dado a ID de um aluno e de um tema, recupera a
situação desse aluno em relação a esse tema.
59
• PerguntaDAO: Classe sombra relacionada à classe Pergunta, demonstrada na
figura 5.8.
Figura 5.8: PerguntaDAO
- inserirPegunta: insere uma nova pergunta relacionada a um tema. O retorno
é um número que pode indicar pergunta repetida, a ocorrência de um erro ou
sucesso.
-atualizarPegunta: atualiza os dados de uma pergunta (Incluir resposta, por
exemplo).
-excluirPegunta: exclui uma pergunta.
-recuperarPeguntasPorTema: dado a ID de um tema, recupera a lista de
perguntas relacionadas a este tema.
5.3. Modelos de Navegação
Essa seção apresenta os modelos de navegação relacionados aos casos de
uso “Cadastrar-se”, “Autenticar-se”, “Cadastrar Tema”, “Cadastrar Proposta”,
“Consultar Temas”, “Candidatar-se a um tema” e “Fazer Pergunta”, apresentando
informações relacionadas aos cenários mais relevantes destes casos de uso:
60
• A figura 5.9 apresenta o modelo de navegação relacionado ao cenário
“Cadastro” do caso de uso “Cadastrar-se”:
Figura 5.9: Modelo de navegação – Cenário Cadastro do caso de uso Cadastrar-se
61
• A figura 5.10 apresenta o modelo de navegação relacionado ao caso de uso
“Autenticar-se”:
Figura 5.10: Modelo de navegação - Caso de uso Autenticar-se
62
• A figura 5.11 apresenta o modelo de navegação relacionado ao caso de uso
“Cadastrar Proposta”:
Figura 5.11: Modelo de navegação - Caso de uso Cadastrar Proposta
• A figura 5.12 apresenta o modelo de navegação relacionado ao cenário
“Cadastro” do caso de uso “Cadastrar Tema”:
Figura 5.12: Modelo de navegação - Cenário Cadastro do caso de uso Cadastrar Tema
63
• A figura 5.13 apresenta o modelo de navegação relacionado ao caso de uso
“Consultar Propostas/Verificar Situação das Propostas”:
Figura 5.13: Modelo de navegação - Caso de uso Consultar Propostas/Verificar Situação das
Propostas
• A figura 5.14 apresenta o modelo de navegação relacionado ao caso de uso
“Consultar Temas”:
Figura 5.14: Modelo de navegação - Caso de uso Consultar Temas
64
• A figura 5.15 mostra o modelo de navegação relacionado ao caso de uso
“Fazer Pergunta”:
Figura 5.15: Modelo de navegação - Caso de uso Fazer Pergunta
• A figura 5.16 mostra o modelo de navegação relacionado ao caso de uso
“Aceitar Tema”:
Figura 5.16: Modelo de navegação - Caso de uso Aceitar Tema
65
CAPÍTULO 6 - IMPLEMENTAÇÃO E TELAS DO SISTEMA
Esse capítulo apresenta a descrição do sistema desenvolvido. Além disso, é
apresentada uma visão geral das funcionalidades e telas do sistema.
6.1. Implementação
Devido a facilidade e disponibilidade encontrada para se desenvolver
aplicações orientadas a objetos utilizando Java tanto em livros, como revistas e
principalmente na internet, para a implementação das classes Java utilizamos o Java
j2sdk1.5.0_06 e como ambiente de desenvolvimento o NetBeans 5.0 que já vêm em
seu pacote de distribuição o servidor Web Tomcat da Apache. Mesmo que existam
outros ambientes para desenvolvimento de aplicações Web utilizando Java, esse foi
escolhido por apresentar um bom suporte para seus usuários e estar sendo usado
por um grade número de desenvolvedores o que possibilita o surgimento de várias
listas de discussão o que facilita e agiliza encontrar soluções para problemas
encontrados durante o implementação.
Na camada de apresentação foram utilizadas páginas JSP, além de
JavaScript para validação de formulários. O banco de dados utilizado foi o Db4o.
Para funcionalidades que demandam a recuperação por perfil, que é uma
busca por todas as entidades que satisfazem um determinado perfil, foram utilizados
métodos fornecidos pelo “SWGP”. Essa ferramenta possibilita a criação de um
banco de dados Db4o e disponibiliza uma série de funções e bibliotecas que nos
permite manipular os dados no banco e criar classes herdadas de classes básicas
chamadas de “ColaboradorExt” (para objetos que necessitem ter perfil), e ClasseExt
(para objetos que não necessitem ter perfil).
Portanto, a interação entre o Java e o banco de dados Db4o foi feita através
da biblioteca de funções para acesso que já vem disponível no próprio pacote de
instalação do db4o e através dos métodos fornecidos pelo SWGP.
6.2. Telas do Sistema
A figura 6.1 mostra a tela inicial do sistema, que dá a opção de Aluno,
Professor ou Organização acessarem suas respectivas áreas.
66
Figura 6.1: Tela inicial do sistema
A figura 6.2 mostra a tela de Autenticação do sistema. Após escolherem sua
área de acesso, Aluno, Professor ou Organização deverão Autenticar-se no sistema
para terem acesso às demais funcionalidades. Caso já tenham se cadastrado,
deverão informar seu login e senha e clicar em “entrar”, caso contrário, deverão
escolher no menu a opção “Cadastro”, o que os levará para a tela de cadastro,
representada pelas figuras 6.3, 6.4 e 6.5.
Figura 6.2: Tela de autenticação do sistema
67
Figura 6.3: Tela de cadastro de aluno
Figura 6.4: Tela de cadastro de professor
68
Figura 6.5: Tela de cadastro de organização
Para realizar o cadastro será necessário preencher os campos obrigatórios do
formulário e clicar em “Salvar”. Se todos os dados passarem pelo teste de validação,
será exibida uma mensagem confirmando o cadastro.
Após a autenticação no sistema, o aluno terá acesso à tela mostrada na figura
6.6. Nessa tela, o aluno poderá alterar os dados de seu cadastro, por meio da opção
Alterar Cadastro, localizada na parte esquerda da tela. Poderá também, realizar uma
consulta por temas que o sistema reconhecerá como adequados ao perfil do aluno.
Na parte central da tela o aluno será informado, de notícias que podem ser
novidades ou informações úteis que o ajudará a tirar maior proveito do sistema.
69
Figura 6.6: Tela de navegação do aluno
A figura 6.7 exemplifica uma consulta a temas cadastrados no sistema feita
por um aluno que possui um perfil de desenvolvedor na área de Banco de Dados. O
aluno poderá escolher, dentre os temas listados, aquele que deseja exibir.
Figura 6.7: Tela de resultado da busca por temas
70
A figura 6.8 mostra a tela de exibição de um tema.
Figura 6.8: Tela de exibição de um Tema
71
Nessa tela o aluno poderá fazer perguntas relacionadas ao tema, responder
até se for o caso e principalmente verificar o resultado da seleção automática (que o
sistema realizou através do casamento de perfis) para saber como ficou sua
classificação.
A tela de verificação de resultado quando acessada pelo aluno está na figura
6.9.
Figura 6.9: Tela de verificação de resultado de um tema com seleção em andamento
A figura 6.9 apresenta a tela de confirmação de interesse do aluno no
desenvolvimento do projeto. É importante também lembrar que essa classificação de
alunos por perfil é realizada dinamicamente, então um aluno que esta na faixa de
classificação em um determinado momento (acima da 3ª posição no exemplo da
figura 6.9) não é garantido que estará até a data limite para confirmação, em que é
realmente finalizado o processo e o sistema então fixa o resultado passando a exibir
essa mesma tela como na figura 6.10. Da mesma forma, alunos que se encontram
fora da faixa de classificação podem ainda melhorar sua posição e ser. Isso
depende de fatores com alteração no perfil do tema, alteração no perfil do aluno ou
até mesmo inserção de novos alunos no sistema.
72
Figura 6.10: Tela de verificação de resultado de um tema com seleção finalizada
A tela de exibição dos dados do tema é aparentemente a mesma que é
utilizada por alunos, professores e organizações, entretanto, as funcionalidades são
diferentes de acordo com o perfil do usuário. Por exemplo, o professor responsável
pelo tema pode alterar os dados de cadastro do tema, ou até mesmo excluir quando
se tratar de um tema recém cadastrado que não possua nenhuma pergunta
cadastrada ou desenvolvedores vinculados.
A tela de navegação do professor é mostrada na figura 6.11. Nela o professor
terá acesso através de opções do menu localizado a esquerda às telas de alterar
dados de seu cadastro, tela para consultar propostas, tela para cadastrar temas, e
ainda exibir a lista de temas cadastrados.
Na parte central da tela o professor será informado, de notícias que podem
ser novidades ou informações úteis que o ajudará a tirar maior proveito do sistema.
73
Figura 6.11: Tela de navegação do professor
A figura 6.12 exemplifica uma consulta a propostas cadastradas no sistema
feita por um professor que possui um perfil de desenvolvedor na área de Redes de
Computadores.
Figura 6.12: Tela de consulta de propostas
74
O professor poderá escolher, dentre as propostas listadas, aquela que deseja
exibir.
Figura 6.13: Tela de exibição de proposta
Na figura 6.13, mostramos a tela de exibição de uma proposta. Nesse caso o
professor selecionou a proposta de título “Protocolo de comunicação para rede sem
fio” da figura 6.12.
75
A partir dessa tela o professor poderá editar apenas o campo observação da
proposta e alterar sua situação para “Aceita”, “Rejeitada” ou “Em avaliação”. No caso
da situação estar como “Aceita”, o botão “Criar tema” fica habilitado permitindo que o
professor crie um tema a partir da proposta. A figura 6.14 mostra a tela de cadastro
de tema quando chamada por esse botão.
Observe que a proposta selecionada ainda não deu origem a nenhum tema
cadastrado no sistema, pois na parte inferior da tela (figura 6.13) a lista de temas
criados a partir da proposta está “vazia”.
Figura 6.14: Tela de cadastro de tema
Na figura 6.14 é possível verificar que a tela de cadastro de temas aparece
com alguns dados pré-preenchidos de acordo com os dados da proposta geradora.
Esses dados são apenas sugestões, porém é permitido que o professor altere-os
como desejar.
76
Continuando a navegação do professor, temos ainda a opção de consultar
temas cadastrados no sistema. Essa funcionalidade permite que o professor
consulte os temas já cadastrados e selecione de uma lista aquele que deseja
visualizar com mais detalhes. Essa tela é bem semelhante à da figura 6.7, e ao
selecionar um tema a tela de exibição do tema é a mesma da figura 6.8, porém
permitindo o professor, em caso de ser o responsável pelo tema, alterar os dados do
tema.
A partir da tela de exibição dos dados do tema o professor também poderá
verificar o resultado da seleção para o tema selecionado. Essa tela de resultado é
bem semelhante à da figura 6.9 quando a seleção ainda não foi finalizada e é
mostrada na figura 6.15.
Figura 6.15: Tela de resultado vista por um professor
Nesse caso foi verificado o resultado de um tema que possui no seu cadastro
o valor do campo “número de desenvolvedores” igual a 2 (dois) e os alunos que
estão em vermelho estão na condição de suplentes na seleção pois estão fora do
número de vagas disponível para o tema em questão. Estar como suplente quer
dizer que no caso de não confirmação dos alunos classificados no momento da
finalização do processo, que se dará na data cadastrada como data limite para
77
confirmação dos alunos, o sistema preencherá as vagas não confirmadas com os
alunos que estiverem confirmados considerando essa ordem de classificação.
Para o caso da verificação de resultado de um tema que a seleção já foi
finalizada, temos a mesma tela da figura 6.10.
Passando agora para a utilização do sistema do ponto de vista de uma
organização, podemos mostrar inicialmente sua tela de navegação. Nessa tela é
possível que a organização altere seus dados de cadastro, cadastre propostas para
temas de projetos e consulte suas propostas cadastradas para verificar seus
andamentos ou resultados gerados por elas no que diz respeito à geração de novos
temas de projetos dentro da universidade.
Assim como nas outras telas de navegação, em sua parte central temos
notícias com novidades e informações úteis para os usuários do sistema. Veja a
figura 6.16.
Figura 6.16: Tela de navegação da organização
78
Na figura 6.17 temos a tela de cadastro de propostas. Assim como para os
outros cadastros, os dados passam por uma validação antes de serem efetivamente
inseridos e na ocorrência de invalidação de algum dado uma mensagem de erro é
exibida informando o problema.
Figura 6.17: Tela de cadastro de proposta para temas
Uma observação com relação a essa tela de cadastro é que o campo situação
não pode ser alterado pela organização e sim por professores no momento de
avaliação da proposta. Esse campo tem a função então, de possibilitar o
acompanhamento das propostas pelas organizações ficando aqui somente para
leitura.
Logo após o cadastramento de uma proposta, essa estará disponível para
todos os professores que possuírem um perfil que se encaixe a área e assunto que
a proposta está relacionada. Essa extração de perfil da proposta é realizada pelo
próprio sistema baseando-se nos texto contido no campo descrição, assim como já
foi mencionado na seção 4.2.
79
Seguindo a navegação da organização, quando a opção de consultar
propostas cadastradas é selecionada, uma lista é exibida mostrando todas as
propostas cadastradas pela organização no sistema de forma agrupada por situação
em que se encontram. Essa tela é a mesma da mostrada na figura 6.12, mudado
apenas o conteúdo mostrado.
Supondo que o usuário tenha selecionado uma proposta que está com a
situação igual a “Aceita” e que essa proposta tenha dado origem a algum tema para
ser desenvolvido dentro da universidade, uma tela com os dados da proposta seria
exibida assim como mostrado na figura 6.18.
Figura 6.18: Tela de exibição de proposta quando originou algum tema
Pela figura 6.18 é possível notar que na parte inferior da tela tem-se uma lista
de temas cadastrados a partir da proposta e a organização pode acessar os dados
desses temas apenas selecionando o aquele que desejar visualizar.
80
A tela resultante dessa seleção é a mesma tela de exibição de um tema
mostrada na figura 6.8 e a partir daí a organização consegue ter acesso aos dados
detalhados do tema criado e cadastrar perguntas sobre o tema, participando assim
do processo de discussão do projeto e proporcionando dessa forma uma maior
aproximação entre a organização e os envolvidos no projeto.
È importante dizer aqui, que a tela de verificação de resultado na seleção do
tema quando acessado pela organização é aparentemente igual a quando acessada
por um professor, porém os dados dos alunos não estarão habilitados para
visualização, permitindo apenas a visualização dos nomes dos alunos.
81
CAPÍTULO 7 - CONSIDERAÇÕES FINAIS
Esse capítulo apresenta as considerações finais e apresentada uma breve
análise do sistema desenvolvido. Além disso, é proposta a inclusão de novas
funcionalidades que podem ser desenvolvidas em trabalhos futuros.
7.1. Avaliação do Sistema
O objetivo inicial da aplicação era o de facilitar e agilizar o contato entre
professores orientadores e alunos com interesse em desenvolver algum projeto no
âmbito acadêmico, além de ser uma oportunidade para aproximar a Universidade da
Sociedade, mais precisamente das empresas ao seu redor a partir de manifestações
de idéias, interesses e necessidades. Apesar do sistema construído ainda não ter
sido testado em um ambiente de uso real, ele contempla funcionalidades suficientes
para que possamos considerar que o objetivo do trabalho foi alcançado tendo em
vista que o resultado final foi um sistema que contém telas bem simples, diretas e
objetivas.
Durante o processo de desenvolvimento, foram encontradas dificuldades
relativas à Análise, Projeto e ao desenvolvimento de Aplicações Web, o que exigiu
uma busca por referências, para que as dúvidas fossem sanadas. Um ponto
relevante também, é a interface gráfica, que exigiu mais essa superação que foi de
realizar um trabalho de Web Design, mas que também podemos dizer que
obtivemos um bom resultado, pois devido à disposição dos elementos nas telas e
cores, construímos um ambiente bem agradável além de torná-lo bem informativo
quando possível para minimizar o surgimento de dúvidas em sua utilização como foi
o caso de exibir descrições dos campos em todas as telas de cadastro.
Por fim, foi desenvolvido um sistema web que permite a publicação de idéias
para projetos e a seleção de alunos para desenvolvê-los, que é feita de forma
automática. Através das publicações de propostas realizadas por empresas, que
também deverão estar cadastradas no sistema, professores e alunos poderão estar
ainda desenvolvendo trabalhos atuais e de relevância até mesmo para o mercado.
82
7.2. Trabalhos Futuros
Futuramente, além de uma remodelagem gráfica das telas, pretende-se
acrescentar novas funcionalidades ao sistema, como, por exemplo: permitir que as
organizações possam consultar propostas cadastradas de outras permitindo assim
um melhor enriquecimento de informações. Outra funcionalidade que poderia ser
criada seria o cadastro de propostas para temas por meio dos alunos, tornando
assim possível aproveitar melhor também as idéias e criatividades dos próprios
alunos da universidade. Além disso, poderia ser adicionado um banco com as
monografias geradas a partir de temas propostos no sistema.
Finalmente, o sistema poderia ainda ser integrado a um sistema maior como,
por exemplo, o “Portal do Aluno” (Ambiente de auto-atendimento para alunos da
UFES), para facilitar sua difusão na comunidade acadêmica.
7.3. Aprendizado adquirido
O desenvolvimento do sistema permitiu a utilização e aprimoramento de
conhecimentos adquiridos na vida acadêmica, principalmente no que diz respeito ao
desenvolvimento de sistemas orientado a objetos utilizando a UML. As dificuldades
encontradas contribuíram muito para adoção de uma forma de desenvolvimento
mais apropriada.
Foram adquiridos conhecimentos relacionados a tecnologias e métodos para
desenvolvimento de Aplicações Web, que vêm sendo utilizadas em larga escala nos
sistemas mais recentes do mercado, sobre as quais não houve aprofundamento
durante a graduação. Outra experiência que foi adquirida durante todo o
desenvolvimento desse trabalho é o que diz respeito ao gerenciamento de projetos,
que podemos dar como um exemplo, na fase de especificação de requisitos, que é o
caso de saber filtrar e aproveitar uma grande quantidade de informações, tornando-
as úteis e valiosas permitindo que se alcance um resultado bem próximo ao
esperado, por todas as partes envolvidas no projeto.
83
REFERÊNCIAS BIBLIOGRÁFICAS
Belloquim, A. OODBMS: Quando Estaremos Prontos Para Usá-los? Developer’s
Magazine, Rio de Janeiro, jul. 2000.
Cássio R. Eskelsen, db4o - Banco de Dados Orientado a Objetos. Linha de Código. Disponível em: <http://www.linhadecodigo.com.br/artigos.asp? id_ac=875&pag=1>.
Acesso em outubro de 2006
Db4oObjects. Native Java & .NET Object DataBase.
Disponível em: <http://www.db4o.com> Acesso em outubro de 2006
Falbo, R. A. Análise de Sistemas. Disponível em:
<http://www.inf.ufes.br/~falbo/download/aulas/analise/2002-2/Apostila.zip>.
Acesso em setembro de 2006
Falbo, R.A. Projeto de Sistemas. Disponível em:
<http://www.inf.ufes.br/~falbo/download/aulas/projeto/2003-1/Apostila.zip>.
Acesso em setembro de 2006
Falbo, R.A., Souza, V. Diretrizes para Trabalho Prático – Engenharia Web. Disponível em:
<http://www.inf.ufes.br/~falbo/download/aulas/tengsoft/2006-1/DiretrizesTP.pdf>.
Acesso em setembro de 2006
Furlan, J.D. Modelagem de objetos através da UML. São Paulo: Makron Books,
1998.
Bem-Vindo ao NetBeans e ao site www.netbeans.org, casa da IDE Java Livre.
NetBeans. Disponível em <http://www.netbeans.org/index_pt.html>
Acesso em 09 de dezembro de 2006
Fuzion. Introdução a Orientação a Objetos. Rio de Janeiro, 1999. E-book.
Jacobson, I., Christerson, M., Jonsson, P. et al. Object-Oriented Software Engineering: A Use Case Driven Approach. Addison-Wesley, 1996.
84
Martin, J., Odell, J.J. Object-Oriented Analysis and Design. Prentice-Hall Inc.,
1992.
Mattiazzi, L.D. Orientação a Objetos e a UML: Finalmente um Rumo a Seguir. Developer’s Magazine, Rio de Janeiro, jul. 1998.
PRESSMAN, Roger. Engenharia de Software. São Paulo:MAKRON Books, 1995.
RENAUD, Paul E. Introdução aos Sistemas Cliente/Servidor: Guia Prático para Profissionais de Sistemas. Rio de Janeiro: Infobook, 1994.
RUMBAUGH, J, Blaha, M, Premerlani et al. Modelagem e projetos baseados em objetos. Rio de Janeiro: Editora Campus, 1994.
SILVA, E.K.O. Um Estudo sobre Sistemas de Banco de Dados Cliente/Servidor. João Pessoa – PB, 2001.
TEMPLE, A., Mello, R. M., Calegari, T., Schiezaro., M. Programação Web com Jsp, Servlets e J2EE. São Paulo, 2004. E-book.
Thiago Guedes Paysan, Projeto de Graduação, Sistema Web Gerenciador de Perfis, UFES, DEZEMBRO 2006.
Wikipédia, a enciclopédia livre. Apache Tomcat. Disponível em: <http://pt.wikipedia.org/wiki/Apache_Tomcat>. Acesso em setembro
de 2006