FACULDADE DE BALSAS CURSO DE SISTEMAS DE INFORMAÇÃO SISJOL - SISTEMA DE CONTROLE ACADÊMICO PARA ESCOLA JOVEM ON LINE. José Euclides da Silva Lopes



Documentos relacionados
Manual SAGe Versão 1.2 (a partir da versão )

DESENVOLVIMENTO DE INTERFACE WEB MULTIUSUÁRIO PARA SISTEMA DE GERAÇÃO AUTOMÁTICA DE QUADROS DE HORÁRIOS ESCOLARES. Trabalho de Graduação

Conceitos de Banco de Dados

Aplicação Prática de Lua para Web

Desenvolvendo Websites com PHP

ISO/IEC 12207: Gerência de Configuração

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013

Versão Liberada. Gerpos Sistemas Ltda. Av. Jones dos Santos Neves, nº 160/174

MANUAL DO GERENCIADOR ESCOLAR WEB

Software automatizado para controle de consultas da clínica de fisioterapia

Introdução à Computação

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc.

Engenharia de Requisitos Estudo de Caso

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

Processos de Desenvolvimento de Software

Governança de TI. ITIL v.2&3. parte 1

Manual do Visualizador NF e KEY BEST

Figura 1 - Arquitetura multi-camadas do SIE

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Prof. Marcelo Machado Cunha

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Cadastramento de Computadores. Manual do Usuário

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

1. Sistema de cadastramento para empresas NÃO cadastradas (cadastro inicial) 1.1. Links de acesso direto na área de cadastro

BH PARK Software de Estacionamento

Projeto SIGA-EPT. Manual do usuário Módulo Requisição de Almoxarifado SISTEMA INTEGRADO DE GESTÃO ACADÊMICA

Persistência e Banco de Dados em Jogos Digitais

ROTEIRO PARA TREINAMENTO DO SAGRES DIÁRIO Guia do Docente

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

Orientação a Objetos

Introdução a Computação

Histórico da Revisão. Data Versão Descrição Autor

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

PORTAL DE COMPRAS SÃO JOSÉ DO RIO PRETO

Engenharia de Software III

Módulo 4: Gerenciamento de Dados

ATIVIDADES PRÁTICAS SUPERVISIONADAS

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Projeto Disciplinar de Infra-Estrutura de Software SISPA FACULDADE SENAC

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA

Projeto de Sistemas I

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

O programa Mysql acompanha o pacote de instalação padrão e será instalado juntamente com a execução do instalador.

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

APOO Análise e Projeto Orientado a Objetos. Requisitos

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA

SISGAP - Sistema Gerenciador de Avaliações Psicopedagógicas

Plano de Gerenciamento do Projeto

Sistemas Distribuídos

agility made possible

Manual de Atualização Versão

Feature-Driven Development

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Central Cliente Questor (CCQ) UTILIZANDO A CCQ - CENTRAL CLIENTE QUESTOR

LINGUAGEM DE BANCO DE DADOS

SQL APOSTILA INTRODUÇÃO A LINGUAGEM SQL

IMPLANTAÇÃO DE UM SISTEMA DE AVALIAÇÃO DE DESEMPENHO NA UFG

Notas de Aula 05: Aplicação de um caso de uso

Microsoft Access XP Módulo Um

2 Diagrama de Caso de Uso

Gerenciamento de software como ativo de automação industrial

APLICATIVO WEB PARA O SETOR DE EXTENSÃO IFC VIDEIRA

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

MAGREGISTER 1.0: GERADOR DE INTERFACES DE COLETAS DE DADOS PARA PDA S. Acadêmico: Gilson Chequeto Orientador: Adilson Vahldick

CENTRAL DE SERVIÇOS APOIADA EM SOFTWARE LIVRE

Sistema Gerenciador de Conteúdo OpenCms: um caso de sucesso no CEFET-MG

O modelo unificado de processo. O Rational Unified Process, RUP.

4 O Workflow e a Máquina de Regras

QUALIDATA Soluções em Informática. Módulo CIEE com convênio empresas

Tutorial Sistema de Eventos de Certificação e Capacitação

Registro e Acompanhamento de Chamados

Noções de. Microsoft SQL Server. Microsoft SQL Server

Manual Q-Acadêmico 2.0 Módulo Web - Aluno

Módulo 1 Configuração de Cursos. Robson Santos da Silva Ms.

2. INSTALAÇÃO E CONFIGURAÇÃO

Manual Operacional SIGA

DESENVOLVIMENTO DE UM APLICATIVO DO TIPO SECRETÁRIO VIRTUAL PARA A PLATAFORMA ANDROID

Rock In Rio - Lisboa

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Roteiro 2 Conceitos Gerais

Sistema de Controle de Solicitação de Desenvolvimento

Treinamento GVcollege Módulo Acadêmico - Pedagógico

2013 GVDASA Sistemas Cheques 1

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA º PERÍODO - 7º MÓDULO AVALIAÇÃO A4 DATA 22/10/2009 ENGENHARIA DE USABILIDADE

Planejando o aplicativo

Disciplina de Banco de Dados Introdução

Transcrição:

1 FACULDADE DE BALSAS CURSO DE SISTEMAS DE INFORMAÇÃO SISJOL - SISTEMA DE CONTROLE ACADÊMICO PARA ESCOLA JOVEM ON LINE José Euclides da Silva Lopes Balsas (MA) 2013

2 FACULDADE DE BALSAS CURSO DE SISTEMAS DE INFORMAÇÃO SISJOL - SISTEMA DE CONTROLE ACADÊMICO PARA ESCOLA JOVEM ON LINE por José Euclides da Silva Lopes Trabalho de Conclusão de Curso apresentado como exigência parcial para obtenção do título de Bacharel em Sistemas de Informação à Faculdade de Balsas, sob a orientação do Professor Jefferson Fontinelle da Silva. Balsas (MA) 2013

3 DEDICATÓRIA A Deus por ter me dado a oportunidade de viver. A todos os meus familiares pelo incentivo e carinho constante. Em especial a minha mãe, pois sem ela nada seria possível, a minha amada esposa e meu querido filho que tanto me apoiaram nessa etapa da minha vida.

4 AGRADECIMENTOS Agradeço a todos que direta ou indiretamente, contribuíram para a elaboração deste trabalho. Em especial ao professor Jefferson Fontinele da Silva, pelo apoio e paciência. A meus companheiros de curso por ter me ajudado no decorrer desta etapa.

5 RESUMO O desenvolvimento de sistemas computacionais pra desktop são o foco deste projeto. Para tanto serão estudadas técnicas de análise e modelagem de sistemas, softwares para gerenciamento de informação, softwares para geração de relatórios e softwares para controle de versão. A proposta é desenvolver um sistema para cadastro de alunos e controle de frequências, bem como cadastro de usuários de uma instituição de ensino de informática denominada Jovem On Line. O sistema será implementado no ambiente de programação NetBeans. Estre as várias linguagens de programação que ele disponibiliza optou-se por JAVA devido às vantagens que a mesma disponibiliza tais como: utiliza o paradigma de programação orientado a objetos permitindo assim que o desenvolvedor crie um programa a partir de pequenas partes e possibilita a criação de programas com recursos gráficos semelhantes aos utilizados em interface Windows. Esperasse que com o uso do SISJOL haja uma redução de custos. Palavras-chave: Desktop. JAVA. Orientação a Objetos.

6 LISTA DE FIGURAS Figura 2.2.1 - Prototipação evolucionária... 18 Figura 2.2.2 - Prototipação descartável... 19 Figura 2.10.1: Tabela de departamentos... 29 Figura 2.10.2: Tabela de funcionários... 29 Figura 4.1.1: Arquitetura do SISJOL... 34 Figura 4.1.2: Estrutura de pastas... 35 Figura 4.2.1: Diagrama de caso de uso do cadastro de aluno.... 37 Figrua 4.2.2: Diagrama de atividades de cadastro do aluno.... 37 Figura 4.3.1: Diagrama ER do banco... 39 Figura 4.4.1: Tela principal do SISJOL.... 41 Figura 4.5.1: Tela para matricula de alunos.... 42 Figura 4.6.1: Tela de cadastro de aluno.... 43 Figura 4.8.1: Uso da ferramenta Git.... 46

7 LISTA DE SIGLAS API - application programming interfaces... 21 Birt - Business Intelligence and Reporting Tools... 25 CPF Cadastro de Pessoa Física... 43 DBMS - database management system... 27 IDE - Interface Development Environment... 21 JUDE - Java and UML Developer Environment... 31 SGBD s - Sistemas de Gerenciamento de Banco de Dados... 30 SQL - Structured Query Language... 30 TI Tecnologia da Informação... 12 UML - Unified Modeling Language... 31 XML - extensible Markup Language... 26

8 LISTA DE APÊNDICES APENDICE A Especificação de Caso de Uso/ Requisitos... 51 ADENDICE B Telas do SISJOL... 63 APENDICE C Relatório de Cadastro de Alunos... 68 APENDICE D Relatório de alunos aptos a receber certificado... 79

9 SUMÁRIO 1. INTRODUÇÃO... 11 1.1. Delimitação do tema... 13 1.2. Problemática... 13 1.3. Problemas Específicos... 13 1.4. Objetivos... 13 1.4.1. Objetivo Geral... 13 1.4.2. Objetivos Específicos... 13 1.5. Justificativa... 14 1.6. Metodologia... 15 2. REFERENCIAL TEÓRICO... 16 2.1. Análise de Software... 16 2.2. Prototipação... 17 2.3. Desenvolvimento de Software Java para Desktop... 20 2.4. Ferramentas de Desenvolvimento... 21 2.5. Ferramentas de Controle de Versão... 22 2.6. Teste de Software... 23 2.7. Ferramentas para Geração de Relatórios... 25 2.8. Levantamento de Requisitos... 26 2.9. Banco de Dados... 27 2.10. SGBD MySQL... 30 2.11. MySQL WorkBench... 31 2.12. Jude Community... 31 3. ESTUDO DE CASO... 32 3.1. Requisitos mínimos que o sistema deve atender... 33

10 4. IMPLEMENTAÇÃO DO SISJOL... 34 4.1. Sistema Proposto... 34 4.2. Levantamento de Requisitos... 36 4.3. Modelo do Banco de Dados... 38 4.4. Projeto de Telas... 40 4.5. Padronização do Layout... 41 4.6. Implementação Lógica de Negócios... 42 4.7. Relatórios... 44 4.8. Controle de Versão... 45 4.9. Teste... 46 4.10. Implantação... 47 4.11. Redução de custos... 47 5. CONCLUSÃO... 48 5.1. Trabalhos Futuros... 48 6. REFERÊNCIAS BIBLIOGRÁFICAS... 49 APÊNDICE... 51

11 1. INTRODUÇÃO Segundo Moran (2003) a cada dia que passa as escolas estão incluindo novas tecnologias em seu ambiente e utilizando-as nas atividades pedagógicas e administrativas, visando garantir o acesso imediato à informação. Ainda em conformidade com o autor acima citado é comum o uso de sistemas informatizados capazes de integrar todas as informações da escola em bancos de dados, tornado possível não só registrar como também atualizar instantaneamente toda a documentação referente aos processos escolares e a vida acadêmica do aluno. Para Santos (2002) a instituições escolares estão sofrendo mudanças a cada dia para melhor formar cidadãos oferecendo a possibilidade de aprender competências e habilidades necessárias que facilitam a inserção social. Com isso, a cada vez mais é exigido das instituições de ensino uma gestão escolar eficiente, a qual pode ser facilitada pela utilização de recursos inteligentes oferecidos pela tecnologia de informação e sistemas de informação. (STAIR, 2002). A tecnologia da informação tem facilitado à tomada de decisões nas instituições de ensino. Pois para que haja um bom planejamento das atividades escolares e a instituição consiga desempenhar bem seu papel é indispensável no cenário atual o uso da tecnologia da informação. A TI é utilizada para que os processos escolares sejam dotados de confiabilidade, eficiência e eficácia, melhorando assim o desempenho das atividades em uma instituição de ensino e por consequência apoia os processos educacionais e a gestão escolar. (FRANCO et al., 2009). A gestão escolar tem a ver com todas as atividades organizacionais e documentais necessárias para garantir que todos os cursos oferecidos cumpram com seus requisitos, com o mínimo de erro o máximo de eficiência e participação dos alunos e professores. Com a quantidade enorme de informação surgem problemas para os gestores escolares na maioria das vezes relacionados com a vida acadêmica do aluno. Por isso os gestores estão cada vez mais recorrendo a sistemas informatizados que auxiliam de maneira rápida e eficiente a inserção e localização de dados escolares da vida acadêmica do aluno. (STAR, 2002).

12 A tecnologia veio para mecanizar os processos e a informação tem o propósito básico de habilitar a instituição escolar a alcançar seus objetivos pelo uso eficiente dos recursos disponíveis através da tecnologia, portanto, tecnologia e informação trabalhando juntas podem dar condições favoráveis ao crescimento e auxiliar no futuro de instituições escolares. Segundo Josuttis (2008) a tecnologia de informação aliada a uma melhor prática em desenvolvimento de software possibilita a construção e aplicações em prazos bastante curtos, capazes de atender desde pequenos a grandes volumes de utilização com precisão e eficiência. Para que um software seja criado bem estruturado e possua boa qualidade é necessário que o processo de desenvolvimento seja feito de tal forma que possibilite uma boa manutenção e um bom reaproveitamento do mesmo. (SOMMERVILLE, 2003). Existem dois aspectos entre muitos que se deve dar uma atenção especial ao se desenvolver um software para uma empresa ou instituição são eles: heterogeneidade e mudança. A heterogeneidade lida com o fato das intuições possuírem vários sistemas e quase sempre esses sistemas são dotados de arquiteturas diferentes. O mundo por sua vez esta em constante mudança, obrigando a TI a se modificar para dar suporte a essas mudanças. (HURWITZ et al., 2009). Com o intuito de enfrentar desafios tais como, heterogeneidade e mudança, optou-se por Java como linguagem para desenvolvimento tendo em vista que segundo Deitel (2005) essa linguagem lida muito bem com esses dois aspectos. Dois outros fatores tiveram peso crucial na escolha da linguagem, são eles: facilidade de desenvolvimento e habilidade previa do desenvolvedor com a linguagem. Baseado nisso a proposta deste trabalho é desenvolver um software utilizando a linguagem de programação acima citada para um ambiente de gestão acadêmica de uma instituição de ensino de informática que faça o controle de todos os dados da vida acadêmica do aluno.

13 1.1. Delimitação do tema Este trabalho tem como objetivo apresentar o desenvolvimento de um sistema em Java SE, o sistema em questão será proposto para uma instituição de ensino de informática e fará entre outros o controle de frequências dos alunos. A instituição escolhida foi à escola de informática Jovem On Line. 1.2. Problemática Todo o processo escolar é realizado de forma manual o que gera uma baixa produtividade e falta de informações quantitativas confiáveis. 1.3. Problemas Específicos Há uma grande dificuldade em controlar os processos escolares tais como, lançamento de notas, de frequências entre outros, o que acaba gerando desorganização, devido os seus processos escolares serem realizado exclusivamente de forma manual. 1.4. Objetivos 1.4.1. Objetivo Geral Este trabalho tem como objetivo o desenvolvimento do sistema de controle acadêmico para a escola de informática Jovem On Line localizada à Rua José Leão s\n centro. 1.4.2. Objetivos Específicos Fazer o levantamento de requisitos do sistema; Desenvolver o projeto do sistema; Realizar a prototipação; Desenvolver o banco de dados;

14 Realizar a implementação; Implantação do sistema; Realizar testes. 1.5. Justificativa A informação é um fator crucial na gestão acadêmica por ser um recurso decisivo e indispensável tanto no contexto interno como no relacionamento com o exterior, pois atua como método facilitador na busca e no registro das informações dos processos de tomada de decisão no ambiente acadêmico. (MORAN, 2003). Quanto mais confiável, segura e oportuna for essa informação, maior será a agilidade nos processos do ambiente escolar e melhor será a resposta diante da concorrência. Para alcançar o objetivo proposto depende, em sua maioria, reconhecer a importância da informação e do aproveitamento das oportunidades oferecidas pela TI para orientarem os gestores diante dos problemas de eficiência e eficácia dentro da gestão escolar. O desenvolvimento deste sistema fará com que os processos tornem-se mais rápidos e práticos de ser realizados tendo em vista que atualmente a escola Jovem On Line não possui um sistema de informação gerencial que facilite a administração escolar no que diz respeito à execução, acompanhamento e controle de suas atividades, já que todos os seus processos acadêmicos de um modo geral são realizados de forma manual que acaba gerando desorganização, excesso de papel, e extravio de documentos, o que acarreta em uma baixa produtividade e falta de informações. O uso da linguagem de programação Java para o desenvolvimento do sistema de controle acadêmico (SISJOL) se dá principalmente pelas vantagens que esta linguagem oferece, de acordo com (DEITEL, 2005) aqui estão algumas delas: Linguagem multiplataforma: Uma das grandes vantagens da utilização de Java é dá-se pelo fato de que a mesma é uma linguagem facilmente adaptável para uma infinidade de sistemas em qualquer plataforma, além de

15 ser uma linguagem é também uma plataforma de desenvolvimento, por esta razão é possível desenvolver aplicações para desktop, web, celular, cartão; Orientada a Objetos: A linguagem Java segue o paradigma de programação Orientado a Objetos, o que a torna linguagem extremamente poderosa. 1.6. Metodologia Através do levantamento de informações nos arquivos da escola de informática Jovem On Line pôde-se dar inicio a metodologia que seria usada para desenvolvimento deste trabalho. A metodologia é composta pelas seguintes etapas: Primeira: foi feita uma análise para saber quem seriam os possíveis usuários do sistema e os mesmos foram também identificados; Segunda: foram colhidos dados em geral para a elaboração do documento de requisitos do sistema; Terceira: revisão bibliográfica sobre a linguagem de programação Java; Quarta: definição e desenvolvimento do banco de dados; Quinta: implementação do sistema; O restante deste trabalho esta organizado em 4 capítulos: Capítulo 2 Referencial Teórico: apresenta os principais conceitos e tecnologias utilizadas para o desenvolvimento deste trabalho. Capítulo 3 Estudo de Caso: define o estudo de caso e mostra a proposta de solução. Capítulo 4 Implementação do SISJOL: mostra os detalhes da implementação do SISJOL. Capítulo 5 Conclusão: apresenta as considerações finais.

16 2. REFERENCIAL TEÓRICO Neste capítulo será abordada toda a pesquisa bibliográfica utilizada no trabalho. Os temas que são apresentados nesse capítulo englobam os assuntos relacionados ao desenvolvimento de um software utilizando Java. Também são apresentadas as ferramentas e tecnologias utilizadas durante o desenvolvimento. 2.1. Análise de Software Atualmente existem diversos tipos de softwares cada um com suas propriedades e particularidades, dentre eles estão os que são destinados à educação e ao controle escolar. Porém o desenvolvimento de um sistema mesmo de pequeno porte requer um alto nível de complexidade, pois muitas são as etapas que precisam ser seguidas, tais como: especificação, desenvolvimento, gerenciamento e evolução. (SOMMERVILLE, 2003). O termo software abrange muito mais do que um simples programa de computador, dependendo do porte e da finalidade, um software pode ser até uma série de programas separados, tendo em vista um software não é apenas um programa más também toda a documentação associada que explica como utilizar o sistema e os dados de configuração necessários para fazer com que esses programas operem corretamente. (PRESSMAN, 2006). Por esta razão ao se desenvolver um sistema de computador deve-se antes de tudo pensar nas especificações, pois possuem a finalidade de descrever as funcionalidades e restrições do software, no desenvolvimento, já que o software deve ser produzido de modo que atenda as suas especificações, na validação, pois o software tem de ser validado para garantir que ele faça o que o cliente deseja, e na possível evolução do mesmo já que ele deve evoluir para atender às necessidades de mudança do cliente. (SOMMERVILLE, 2003). As atividades descritas acima para desenvolvimento de um sistema podem ser realizadas utilizando diferentes processos de software (descritos mais detalhadamente na seção 2.7) e de diversas maneiras distintas, para que o mesmo atenda as necessidades do cliente.

17 Um sistema de computador é dito bem sucedido quando ele atende às necessidades tanto do cliente quanto das pessoas que o usam, quando apresentem um bom desempenho sem falhas por um longo período, quando é fácil de modificar e mais fácil ainda de usar. Porém para que se consiga um bom resultado ao se desenvolver um software é necessário que haja disciplina tanto no projeto quanto na construção do protótipo e do sistema final. (PRESSMAN, 2006). 2.2. Prototipação Para se desenvolver um software deve-se sempre ouvir os clientes e usuários finais, pois são eles que expressão boa parte dos requisitos que o mesmo irá conter. Porém na maioria das vezes esses usuários sentem muitas dificuldades em expressar seus reais requisitos (ver seção 2.9), tornando assim quase impossível prever como o sistema afetará as práticas de trabalho, como interagirá com outros sistemas e que operações dos usuários devem ser automatizadas. Para reduzir as incertezas sobre o que o sistema irá fazer é necessário que se faça uma análise cuidadosa do mesmo bem como previsões sistemáticas de requisitos e isso só será possível se um protótipo do sistema estiver disponível. (SOMMERVILLE, 2003). A versão inicial de um sistema de software recebe o nome de protótipo, ela é utilizada para mostrar conceitos, experimentar opções de projeto e, em geral, para conhecer mais sobre os problemas e suas possíveis soluções. Para que os usuários possam fazer experiências há à necessidade do desenvolvimento rápido de um protótipo, isso ajuda também a controlar os custos de desenvolvimento além de apoiar atividades importantíssimas para o desenvolvimento tais como, levantamento e validação de requisitos. (DENNIS & WIXOM, 2005). No que se refere ao levantamento de requisitos o protótipo é de fundamental importância, pois permite que os usuários do sistema realizem experiências para ver como o sistema apoia seu trabalho, isso faz com que esses usuários tenham novas ideias para os requisitos já existentes, podendo até identificar pontos positivos e negativos em relação ao software e criar novos requisitos. Outra função importante do protótipo é que ele pode revelar erros nos requisitos.

18 Como foi dito anteriormente é difícil para o usuário final prever como vai utilizar o sistema para dar apoio ao seu trabalho diário. A situação piora ainda mais se o sistema for de grande porte, pois o nível de complexidade é muito maior, e provavelmente será impossível fazer essa avaliação antes de o sistema ser construído e colocado em operação. Para lidar com essa dificuldade no desenvolvimento de um protótipo pode-se utilizar duas abordagens de implementação, são elas: prototipação evolucionária e descartável. (PRESSMAN, 2006). A prototipação evolucionária fornece ao usuário um sistema incompleto e relativamente simples, que implementa os requisitos mais importantes do usuário ao longo de muitos estágios. À medida que novos requisitos estão sendo descobertos e implementados o sistema é ampliado, até chegar o ponto que se deseja (Figura 2.2.1). Na prototipação evolucionária não existe nenhuma especificação detalhada de sistema e, em alguns casos, pode nem haver um documento formal de requisitos. Atualmente a prototipação evolucionária é a técnica mais utilizada para o desenvolvimento de sites e aplicações de correio eletrônico. (DENNIS & WIXOM, 2005). Desenvolver especificação abstrata Construir sistema protótipo Utilizar sistema protótipo Entregar sistema Sim Sistema adequado? Não Figura 2.2.1 - Prototipação evolucionária Fonte: (SOMMERVILLE, 2003). De acordo com SOMMERVILLE, 2003, o uso da prototipação evolucionária para o desenvolvimento de software oferece duas principais vantagens: 1. Rápido fornecimento do sistema: Como discutido anteriormente é essencial que o software seja disponibilizado rapidamente, já que em alguns casos o fornecimento rápido e a facilidade de uso são mais

19 importantes do que detalhes de funcionalidade ou facilidade de manutenção do software a longo prazo. 2. Compromisso do usuário com o sistema: O fato dos usuários do sistema estarem envolvidos com o processo de desenvolvimento não quer dizer apenas que o sistema tenha uma maior possibilidade de atender seus requisitos, mas significa dizer também que os usuários vão querer contribuir para que ele funcione já que assumiram um compromisso. Por outro lado a prototipação descartável esta mais voltada em ajudar no aprimoramento e na classificação da especificação do sistema. Essa abordagem é utilizada quando se quer a redução de custos totais no ciclo de vida do protótipo e para isso ela amplia o processo de análise de requisitos, o protótipo é escrito, avaliado e modificado (Figura 2.2.2). A função principal nesse tipo de abordagem é esclarecer os requisitos e fornecer informações adicionais para que os gerentes avaliem os riscos de processo. O protótipo é dito descartável por que após a avaliação ele é descartado não sendo, portanto utilizado como base para o desenvolvimento do posterior do sistema. (DENNIS & WIXOM, 2005). Esboçar requisitos Desenvolver protótipo Avaliar protótipo Especificar sistema Componentes reutilizáveis Desenvolver software Validar sistema Sistema de software entregue Figura 2.2.2 - Prototipação descartável Fonte: (SOMMERVILLE, 2003). Porém, o protótipo descartável de software é mais utilizado para ajudar a desenvolver os requisitos que o sistema irá conter e não para a validação de projeto, por isso quase sempre o protótipo é bem diferente o sistema final. Mas de acordo com Sommerville (2003), essa abordagem possui vários problemas tais como:

20 1. Para que se obtenha uma implementação rápida simplifica-se demais e características importantes como às funções de segurança acabam sendo excluídas do protótipo. 2. Esse tipo de implementação não possui apoio legal como um contrato entre o cliente e o fornecedor. 3. Em uma implementação de protótipo requisitos não funcionais, como capacidade de segurança e confiabilidade não podem ser testados adequadamente. Por essas razões é que frequentemente desenvolvedores optam por utilizar uma abordagem de prototipação evolucionária tanto para softwares para desktop quanto para Web. Optou-se por abordar esse tópico já que atualmente há um protótipo do mesmo em funcionamento que foi desenvolvido para que os usuários pudessem experimentar para ver como o sistema pode apoiar o seu trabalho de maneira rápida bem como servir de base para validação dos requisitos do sistema final. 2.3. Desenvolvimento de Software Java Para Desktop Em maio de 1995 foi anunciada pela empresa Sun Microsystems a linguagem de programação que faria uma das grandes revoluções no mundo do software. Tal linguagem de programação foi desenvolvida por uma equipe de programadores chefiada por James Gosling e recebeu o nome de Java, que atualmente pertence a Oracle. O fato de a linguagem ser portável para outros sistemas operacionais é o que chamava mais atenção. Embora a linguagem seja constantemente utilizada para o desenvolvimento de aplicações Web ou para dispositivos móveis, ela também é muito usada para aplicações Desktop. (GONÇALVES, 2006). O uso de Java em aplicações para Desktop esta se tornando cada vez mais comum, embora essa área tenha sido dominada por linguagens nativas como, C; C++, entre outras. Java é uma linguagem de programação que usa como paradigma a orientação a objeto. As linguagens convencionais são compiladas para código nativo, porém a linguagem Java é exatamente o contrário ela é compilada para um bytecode que é executado por uma máquina virtual. Dessa forma um

21 programa Java pode rodar em muitos sistemas operacionais sem a necessidade de alterá-los para a plataforma do sistema, bastando apenas que uma maquina virtual compatível esteja instalada. (DEITEL, 2005). Um programa Java é formado por várias partes chamadas de classes. Essas por sua vez também são formadas por várias partes chamadas de métodos. Os métodos realizam tarefas e retornam informações ao conclui-las. Dessa forma desenvolvedores podem criar cada parte que precisam para formar um programa Java. Mas na prática, o que geralmente se vê graças à reutilização de classes é o uso das ricas coleções de classes existentes nas bibliotecas de classe Java, também conhecidas como APIs do Java (application programming interfaces). Em Java, existem duas bibliotecas de componentes gráficos que disputam a preferência dos desenvolvedores de sistemas desktop: Swing e SWT (Standard Widget Toolkit). Por essas vantagens é que Java é uma da linguagens de programação que mais cresceu nos últimos anos. (DEITEL, 2005). 2.4. Ferramentas de Desenvolvimento Na construção de um software é comum o uso de ferramentas que possibilitam tornar o desenvolvimento mais rápido e fácil, tais ferramentas são conhecidas como ambiente integrado para desenvolvimento de software ou IDE (Interface Development Environment). Trata-se de um framework, que pode ser definido como sendo uma estrutura de suporte, que permite que outro projeto de software possa ser organizado e desenvolvido. Um framework geralmente inclui outros programas que servem de apoio para a construção e podem ajudar no desenvolvimento do software. (GONÇALVES, 2006). Entre as IDE s mais conhecidas, citam-se duas das mais utilizadas: o Eclipse e o NetBeans. O Eclipse é um ambiente de desenvolvimento integrado para criação de softwares em Java, porém com o uso de plug-ins acoplados, a IDE pode suportar várias outras linguagens de programação aumentando assim seu poder. O Eclipse foi desenvolvido em Java (ver seção 2.3) e tem seu código fonte aberto. (GONÇALVES, 2006).

22 O NetBeans é um ambiente integrado para desenvolvimento de software, desenvolvido pela Sun Microsystems, ele é gratuito e de código aberto, e possibilita o desenvolvimento de sistemas nas linguagens de programação C, C++, Java entre outras. Ele também é uma ferramenta de desenvolvimento multiplataforma, além de ser totalmente escrito em Java. Abaixo estão algumas das funcionalidades que este IDE disponibiliza: (GONÇALVES, 2006). Um editor amigável de telas; Integração com banco de dados; Plug-ins de diversos tipos que possibilitam um aumento na capacidade do programa; Além dessas funcionalidades, o IDE ainda permite que o próprio desenvolvedor crie seus próprios plug-ins, aumentando ainda mais sua capacidade. Por essas e outras vantagens é que o NetBeans vem atraindo cada vez mais desenvolvedores de todo o mundo. Por esta razão é que o NetBeans foi escolhido como IDE para desenvolvimento deste trabalho, citou-se também o Eclipse pois o mesmo poderia ter sido a ferramenta de escolha do desenvolvedor já que ambas possuem características semelhantes. 2.5. Ferramentas de Controle de Versão O controle de versão é um dos fatores de extrema importância no desenvolvimento de um software, pois geralmente são feitas várias alterações para que se alcance o resultado esperado e consequentemente a satisfação do cliente e dos usuários do mesmo. Por esta razão é comum o uso de sistemas desenvolvidos com o proposito de registrar as várias versões que um sistema pode ter, versões estas que vão deste o inicio de sua construção até a entrega final do software. (PRESMAN, 2006). Um sistema de controle de versão 1 trata-se de um gerenciador de repositórios. É constantemente utilizado como um repositório de arquivos para o código-fonte de um programa em desenvolvimento. Sistemas desta natureza possuem controle de acesso, permitindo assim fiscalizar toda mudança feita no 1 Controle de versão. Disponível em: <http: www.softwarepublico.gov.br/5cqualibr/xowiki/controleversão/>. Acesso em 15 de setembro de 2013.

23 código-fonte, além de registrar informações diversas como: quem fez a alteração, por que foi feita e ainda identificar problemas corrigidos ou melhorias nas mudanças realizadas. A falta de controle de versão ocasiona muitas vezes diversos problemas no desenvolvimento de sistemas, tais como: perder alterações; sobrescrever um código; falta de controle de alterações (quem fez a alteração, por que foi feita); contradições e falhas versões. Com o uso de programas de controle versão problemas como estes acima citados podem ser evitados. Citam-se aqui dois dos softwares com esta finalidade e de código-fonte abertos são eles: o Git e o Mercurial. O Git 2 é uma ferramenta para o controle de versão de software, foi inicialmente projetado e desenvolvido por Linus Torvalds para o desenvolvimento do Kernel Linux. O Git é um software livre distribuído sobre os termos da licença GNU (General Public License version 2). O Mercurial 3 trata-se de uma ferramenta de controle de versão multiplataforma. Foi inicialmente escrito para rodar sobre um sistema operacional Linux, mas logo foi adaptado para Windows, Mac OS X, além da maioria dos sistemas UNIX. Funciona principalmente através de linhas de comando inseridas pelo usuário. Neste projeto opta-se pelo Git como ferramenta de controle de versão devido ao fato do desenvolvedor já conhecer e utilizar o mesmo. 2.6. Teste de Software Ao se desenvolver um sistema uma fase muito importante a ser levada em consideração é a fase de testes, pois é nela que serão descobertos os possíveis erros, inconsistências e falhas no software. Um erro frequente ao se desenvolver um 2 Git for Windows. Disponível em: <http://code.google.com/p/msysgit/>. Acesso em 01 de Outubro de 2011. 3 Mercurial. Disponível em: <https://netbeans.org/kb/docs/ide/mercurial_pt_br.html>. Acesso em: 15 de setembro de 2013.

24 sistema é querer testá-lo assim que os primeiros módulos são concluídos. (DENNIS & WIXOM, 2005). Para que testes importantes não sejam esquecidos ou desconsiderados não se devem testar eventos diferentes impulsivamente, porque os testes importantes podem ser negligenciados e, na ocorrência de um erro poderá ser difícil reproduzir a sequencia de eventos que ocasionou o erro. Testes devem ser feitos seguindo um critério sistemático, os resultados precisam ser documentados para que seja possível saber o que foi testado. Muitas são as maneiras e técnicas de se testar um software, não importando o paradigma utilizado para o desenvolvimento do mesmo. Abaixo estão descritas algumas das técnicas mais conhecidas e utilizadas segundo DENNIS & WIXOM, 2005. Dos testes descritos abaixo foi realizado apenas o teste de aceitação por ser o único que se encaixa com as especificações do sistema proposto devido a seu nível de complexidade, tendo em vista que os outros testes segundo Sommerville (2003) são realizados geralmente em sistemas e grande porte. Testes de Unidade: Os testes classificados como testes de unidade focam uma unidade, um programa ou um módulo do programa que executa uma função especifica que pode ser testada. A finalidade desse teste é assegurar que o modulo ou programa execute corretamente sua função conforme definido na especificação do programa. Em se tratando de testes de unidade há duas categorias que devem ser levadas em consideração: teste de caixa preta e teste de caixa branca. O teste de caixa preta trata é voltado para as especificações do programa, é muito utilizado para testar uma unidade que possui um grau normal de complexidade. O teste de caixa branca é utilizado somente quando a complexidade for alta, este testa examina o código fonte do programa para testar seus elementos principais. Testes de Integração: Testes de integração testam um conjunto de programas ou módulos que precisam trocar dados entre si, para verificar se podem trabalhar juntos sem erros.

25 Eles são realizados com o propósito de assegurar que as interfaces ou vínculos existentes entre partes diferentes do sistema ou módulos funcionem corretamente. Testes de Sistema: Os testes e sistema são parecidos com os testes de integração, também avaliam se os dados podem ser trocados entre sistemas ou módulos sem erros. Porém a principal diferença ente os dois é que os testes de sistema avaliam em que grau de satisfação os requisitos operacionais, a usabilidade, a segurança e o desempenho do sistema esta diante de uma carga intensa no sistema. Testes de Aceitação: São testes realizados principalmente pelos usuários. Possuem o objetivo como o próprio nome sugere de confirmar a aceitação do usuário perante o sistema. Testes de aceitação possuem basicamente dois estágios são eles: teste alfa e teste beta. No teste alfa são usados dados simulados para testar o sistema. No teste beta são usados dados reais. Diante disso, observa-se que testes são de fundamental importância no desenvolvimento de um software, pois como dito anteriormente ajudam a localizar erros e possíveis inconsistências. Outro fator de extrema importância na fase de desenvolvimento de um sistema computacional é o uso de uma ferramenta de geração de relatórios oriundos do banco de dados. Ferramenta esta que será descrita mais adiante. 2.7. Ferramentas para Geração de Relatórios No desenvolvimento de um sistema há sempre a necessidade de coleta de dados e posterior salvamento em um banco de dados (ver seção 2.9), para que possam ser acessados a qualquer momento. Tais dados costumam ser visualizados através de relatórios que facilitam o entendimento. Uma rotina comum para os desenvolvedores é a criação de aplicações com o uso de relatórios. Neste sentido existem muitas ferramentas para criação de relatórios no mercado atualmente,

26 porém serão abordadas adiante duas das mais utilizadas para aplicações desktop, são elas: Birt e o ireport. O Birt 4 (Business Intelligence and Reporting Tools) é um projeto da fundação Eclipse, e trata-se de uma ferramenta de geração de relatórios, por ser uma ferramenta open source é muito utilizada pelos desenvolvedores. Com o Birt é possível desenvolver relatórios para desktop de maneira simples, já que permite a criação destes sem as complexidades adicionais do ambiente de desenvolvimento integrado Eclipse. O ireport é uma ferramenta para geração de relatórios visuais, que possui como característica o desenvolvimento no formato de XML (extensible Markup Language) do padrão JasperReports. O JasperReports é uma biblioteca escrita em Java, de código fonte aberta, que foi projetada por Teodor Danciu em 2001, com o proposito de ajudar os desenvolvedores a criar relatórios para aplicações Desktop e Web. Mesmo sendo uma biblioteca simples, ainda exige que o desenvolvedor conheça seu formato XML, pois o mesmo é utilizado para criar os relatórios, o que torna essa tarefa muito demorada. Por esta razão em outubro de 2002 foi lançada por Giulio Toffoli, a ferramenta descrita acima que recebeu o nome de ireport. (GONÇAVES, 2008). A ferramenta escolhida neste trabalho para geração de relatórios foi o ireport devido ao fato do desenvolvedor já possuí habilidades previas com a mesma. 2.8. Levantamento de Requisitos Um requisito é uma declaração do que o sistema deve ser ou quais características ele precisa possuir. No levantamento de requisitos cliente e desenvolvedor trabalham juntos para descobrir as informações ou serviços que o sistema deve fornecer, bem como o desempenho exigido do mesmo e as restrições de hardware para que o sistema funcione corretamente conforme previsto. (DENNIS & WIXOM, 2005). 4 Artigo Java Magazine 38 - Relatórios e Gráficos com Eclipse. Disponível em: < http://www.devmedia.com.br/artigo-java-magazine-38-relatorios-e-graficos-com-eclipse/8924#ixzz2hnak 8Yof >. Acesso em 10 de outubro de 2013.

27 A finalidade da etapa de levantamento de requisitos é fazer uma conversão da explicação de alto nível dos requisitos expostos pelo cliente em uma lista mais precisa que possa ser usada como informação para o restante da fase de análise criando assim os casos de uso que mais tarde se expandem com base nos requisitos. (SOMMERVILLE, 2003). Os requisitos por natureza dividem-se em funcionais e não funcionais. Um requisito funcional é aquele que se relaciona diretamente a um processo que o sistema tem de executar ou as informações que ele precisa conter. Os requisitos não funcionais têm a ver com as propriedades comportamentais que o sistema deve possuir, como desempenho e usabilidade. A fase de levantamento de requisitos é de fundamental importância, pois também auxilia na criação do banco de dados que o sistema irá conter. A fase de levantamento de requisitos teve um papel fundamental no sistema proposto, pois permitiu que se pudesse ter uma noção do tamanho do mesmo, e como consequência facilitou o levantamento das tabelas que o banco de dados iria conter. 2.9. Banco de Dados Ao se desenvolver um software deve-se pensar na função de armazenagem de dados, pois é ela quem gerencia como eles serão persistidos e como serão tratados pelos programas que estão sendo executados no sistema. A essa função dá-se o nome banco de dados, que basicamente é um arquivo ou conjunto de arquivos que guardam algum tipo de informação e que estão relacionadas entre si de alguma maneira, como por exemplo, por meio de campos comuns para que a mesma possa ser acessada ou alterada. (DENNIS & WIXOM, 2005). Um banco de dados conta com um software que o cria e o manipula, este software é conhecido como sistema de gerenciamento de banco de dados (DBMS, database management system). Há diversos tipos de DBMS, como exemplo cita-se, o Oracle, o MySQL, o MySQL Server, o DB2, o PostgreSQL entre outros, que podem gerenciar os dados e trocar informações com diversos aplicativos.

28 Para guardar a informação um banco de dados usa formatos diferentes de armazenagem de dados. Um exemplo disso são os bancos de dados multidimensionais e banco de dados relacionais. O conceito de banco de dados multidimensional é relativamente novo, e tem sido conduzido em grande parte pelo crescimento de data warehousing, já o banco de dados relacional é o tipo mais popular de banco de dados em uso para o desenvolvimento de sistemas. (DENNIS & WIXOM, 2005). Um banco de dados multidimensional ao armazenar seus dados primeiro faz um cálculo dos dados em múltiplas dimensões e armazena as respostas usando matrizes, o que deixa o carregamento inicial relativamente lento, mas por outro lado o acesso a esses dados é extremamente rápido devido às respostas que já existem nas matrizes. (DENNIS & WIXOM, 2005). Para DEITEL (2005) um banco de dados relacional é uma representação lógica de dados que permite acesso aos dados sem considerar sua estrutura física. Um banco de dados relacional armazena seus dados em tabelas. As tabelas são compostas de linhas, e as linhas são compostas de colunas nas quais os valores são armazenados. Sob uma perspectiva de desenvolvimento o banco de dados relacional é muito mais fácil de trabalhar já que esta baseado em coleções de tabelas, e cada tabela possui um campo ou campos que representam a chave primária, cujo valor é diferente para cada linha da tabela. Desta forma as tabelas são relacionas entre si, colocando a chave primária de uma como uma chave estrangeira na tabela relacionada. Grande parte dos sistemas de gerenciamento de bancos de dados relacionais utilizam uma técnica conhecida como integridade referencial, pois esta assegura que os valores que unem as tabelas por meio de chaves primarias e estrangeiras são válidos e estão sincronizados. (DATE, 2000). A figura 2.10.1 ilustra uma tabela de exemplo que pode ser utilizada em um sistema computacional, e o principal objetivo dessa tabela é armazenar os atributos de departamentos de uma determinada empresa. A figura 2.10.2 objetiva mostrar o relacionamento entre chave primaria e estrangeira, tendo em vista que possui uma chave estrangeira que referencia a chave primaria da tabela 2.10.1.

29 CodDepartamento descdepartamento...... 321 Departamento Pessoal...... Figura 2.10.1: Tabela de departamentos Fonte: (DATE, 2000). codempregado Nome coddepartamento Salário Localização.............................. 004 Guilherme 321 1.000,00 Balsas.............................. Figura 2.10.2: Tabela de funcionários Fonte: (DATE, 2000). Tendo em vista que as linhas são únicas dentro de uma tabela os valores das colunas particulares podem ser duplicados entre as linhas. No exemplo acima citado podem existir diversos funcionários que fazem parte do mesmo departamento. Porém devido à integridade referencial existente entre as tabelas se houver a tentativa de inserção de um funcionário na tabela 2.10.2 e o código do departamento digitado não constar na tabela 2.10.1, o sistema de gerenciamento de banco de dados indicará que houve um erro, não permitindo assim a inserção, pois o DBMS antes de inserir verificaria os números do código do departamento na tabela 2.10.1 e descobriria que o numero é invalido. Em um banco de dados às tabelas possuem um numero de colunas fixo, porém o numero de linhas é variável linhas estas que guardam as ocorrências dos dados na tabela. A linguagem padrão para acessar os dados nas tabelas de um banco é a linguagem conhecida como Structured Query Language (SQL). Essa linguagem opera nas tabelas como um todo em vez de operar nos registros individuais das tabelas, assim sendo uma consulta escrita em SQL é aplicada simultaneamente a todos os registros de uma tabela. Por esta razão quando as consultas precisam incluir informações de mais de uma tabela, as tabelas são reunidas primeiro através de seus relacionamentos de chaves primárias e

30 estrangeiras, e são tratadas como se fossem uma grande tabela. (DENNIS & WIXOM, 2005). Tendo em vista que os dados são um fator de fundamental importância e sem eles não haveria a necessidade da existência de um sistema computacional, abordou-se esse tópico a fim de mostrar a importância que um banco de dados possui dentro de um software. Dentre os SGBD s (Sistemas de Gerenciamento de Banco de Dados) citados nesse tópico o escolhido para desenvolvimento deste trabalho foi o MySQL. 2.10. SGBD MySQL Desenvolvido na Suécia o MySQL 5 é um servidor de banco de dados SQL (Structured Query Language Linguagem Estruturada para Pesquisas) gratuito e de código fonte aberto que tem como características principais: rapidez, confiança, estabilidade, multitarefa e multiusuário, ele é muito utilizado por alguns órgãos públicos no Brasil e no mundo, tais como: Banco Bradesco, NASA, Nokia, Google, entre outros. O servidor MySQL pode ser usado em sistemas de produção com alta carga e missão crítica. Por possuir licença dupla os usuários podem escolher entre usar o programa como um produto gratuito ou podem comprar uma licença comercial padrão. Desde seu inicio o MySQL expandiu-se bastante partindo de uma pequena equipe de três pessoas até seu quadro atual que possui aproximadamente 400 profissionais no mundo inteiro nas áreas de desenvolvimento e manutenção, e ainda conta com mais de mil contribuintes testando-o, integrando-o a outros produtos e escrevendo a respeito dele. A fácil integração com o PHP tem garantido o sucesso ao MySQL permitindo assim que o mesmo cresça ainda mais. Outro fator importante na escolha do MySQL é que ele disponibiliza ferramentas de gerenciamento tais como o MySQL Workbench descrito no próximo tópico. 5 MySQL. Disponível em: http://www.oracle.com/br/products/mysql/index.html?sssourcesiteid =ocomen. Acesso em: 01 de Outubro de 2013.

31 2.11. MySQL WorkBench O MySQL WorkBench 6 é uma ferramenta para modelagem de dados, que integra o desenvolvimento, administração, design de banco de dados, criação e manutenção em um único ambiente de desenvolvimento integrado para o sistema de banco de dados MySQL. Outro recurso que a ferramenta possibilita é a realização de engenharia reversa de esquemas de banco de dados, bem como gerar todos os scripts em SQL. Para facilitar o entendimento a respeito das ações a serem realizadas e classes a serem implementadas é comum o uso de ferramentas para modelagem de dados, na seção seguinte será descrita a ferramenta de modelagem usada neste trabalho. 2.12. Jude Community O JUDE 7 (Java and UML Developer Environment) é uma das ferramentas de modelagem UML mais poderosas que existe na categoria free, ele é rico em funcionalidades, e oferece características como edição e impressão de diagramas UML (Unified Modeling Language Linguagem de Modelagem Unificada), importa/exporta código fonte Java, saída de gráficos e disposição automática. Ele também é extremamente fácil e leve de usar. A linguagem UML auxilia o desenvolvedor a visualizar o desenho do sistema bem como a comunicação entre os objetos do mesmo de forma padronizada. Por esta razão abordou-se este tópico e optou-se pelo uso de tal ferramenta. 6 MySQL WorkBench. Disponível em: <http://www.mysql.com/products/workbench/>. Acesso em: 01 de Outubro de 2013. 7 Jude Community. Disponível em: <http://jude.change-vision.com/judeweb/product/jude_pl.html>. Acesso em: 01 de Outubro de 2013.

32 3. ESTUDO DE CASO A escola Jovem On Line é uma instituição de ensino voltada para jovens de baixa renda, fica localizada em Balsas à Rua José Leão, s/n Centro. Atualmente a instituição possui noventa e oito alunos. O principal objetivo da escola de informática Jovem On Line é introduzir a informática através de aulas de computação a fim de aumentar as chances no mercado de trabalho para milhares de jovens, no entanto a instituição escolar tem enfrentado barreiras desde o inicio por não contar com um sistema para automatizar os processos escolares. Atualmente, todo o processo é realizado de forma manual o que gera uma baixa produtividade e falta de informações confiáveis para as tomadas de decisões. Este trabalho tem como foco realizar uma pesquisa sobre a linguagem de programação Java SE, bem como as ferramentas utilizadas para o desenvolvimento de uma solução que tem como objetivo promover o aumento da eficiência nos processos escolares da instituição acima citada. O SYSJOL (Sistema Joven On Line) facilitará a manutenção dos processos escolares. O sistema em questão será desenvolvido de forma que facilite a manutenção do mesmo para que assim possa ter flexibilidade às mudanças organizacionais que constantemente são exigidas. O sistema proposto deverá funcionar como um gerenciador de processos, sendo que os papéis deverão ser substituídos por formulários eletrônicos o que resultará na diminuição do tempo de resposta, armazenamento dos dados, redução de custo e por consequência aumento da eficiência e eficácia dos gestores educacionais, visando garantir a melhoria dos resultados financeiros. O desperdício de tempo e as falhas na confirmação ou alteração de dados, processos estes que atualmente são realizados de forma manual não mais existiram, pois ambos serão automatizados visando facilitar tanto o processo de matrícula como de renovação. Antes de efetivar a matrícula será realizada uma pesquisa no sistema para verificar a disponibilidade de vagas em uma determinada turma, evitando assim o preenchimento desnecessário no formulário de matricula.

33 O uso da ferramenta em questão também facilitará o processo de entrega de certificados, pois gerará automaticamente uma lista informando quais os alunos que estão aptos á receberem o certificado de conclusão de curso. A ferramenta também automatizará os seguintes processos: controle de frequências, emissão de diário de classe e registro de conteúdo programático. Todos com os respectivos controles de segurança de acesso por nível de usuário. 3.1. Requisitos mínimos que o sistema deve atender Cadastrar Usuário: O sistema deverá permitir ao funcionário realizar o cadastro de um novo usuário. Ao efetuar o logon no sistema, que será concedido utilizando uma senha individual, o sistema apresentará um Menu de opções, entre elas cadastrar usuário, ao preencher os dados solicitados, o novo usuário estará apto a usar o sistema de acordo com o nível de acesso para ele liberado. Matricular Aluno: O sistema deverá permitir ao funcionário realizar a matrícula de um novo aluno. Ao efetuar o logon no sistema, que será concedido utilizando uma senha individual, o sistema apresentará um Menu de opções, entre elas efetuar Matrícula. Cadastrar Conteúdo: O atendente de acordo com o nível de acesso poderá cadastrar o conteúdo de cada turma ou solicitar conteúdo já cadastrado para uma determinada turma. Ao efetuar o logon no sistema, que será concedido utilizando uma senha individual, o sistema apresentará um Menu de opções, entre elas cadastrar conteúdo programático. Registrar Frequência: O professor poderá efetuar a frequência do aluno. Ao efetuar o logon no sistema, que será concedido utilizando uma senha individual, o sistema apresentará um Menu de opções, entre elas inserir frequência, o professor registrará a frequência do aluno automaticamente no sistema com o mesmo em sala de aula.

34 4. IMPLEMENTAÇÃO DO SISJOL Jovem On Line). Neste tópico será apresentado à implementação do SISJOL (Sistema 4.1. Sistema Proposto Com o objetivo de automatizar os processos de cadastro de aluno, controle de frequência e entrega de certificados da escola de informática Joven On Line, foi proposto o desenvolvimento de um sistema de gestão escolar denominado SISJOL. O sistema em questão é um sistema para desktop e foi desenvolvido utilizando a linguagem de programação Java. A forma como a arquitetura do SISJOL esta organizada pode ser vista na figura 4.1.1. Apresentação Controle de Acesso Persistência Banco de Dados Figura 4.1.1: Arquitetura do SISJOL Fonte: (Date, 2000) Conforme visto na figura acima o SISJOL é composto por 4 camadas, são elas: Apresentação: é responsável pela entrada e saída do sistema (visualização). Controle de acesso: esta camada é responsável por permitir ou não acesso ao sistema. Persistência: responsável por persistir os dados no banco de dados. Banco de Dados: responsável por armazenar os dados. A figura 4.1.2 demonstra a estrutura de pastas que compõem o sistema proposto.

35 Figura 4.1.2: Estrutura de pastas A estrutura da figura acima citada é composta pelos seguintes pacotes: Apresentação: neste pacote estão presentes as doze telas (parte visual do software) que compõem o sistema. Controle de acesso: neste pacote consta a classe responsável pelo controle de acesso ao sistema. Ícones: composto pelos ícones que formão o sistema. Persistência: este pacote é formado pela classe responsável por persistir e recuperar os dados do sistema no banco de dados.

36 Relatórios: responsável por armazenar os relatórios gerados pelo software. Utilitários: armazena a classe responsável que fornece a data e hora que são utilizadas no sistema. 4.2. Levantamento de Requisitos O levantamento dos requisitos de um determinado software é a primeira tarefa a ser realizada na sua criação. A análise de requisitos geralmente é um processo longo e árduo a ser implementado pelo desenvolvedor, mas possui um papel fundamental, pois é através dela que outras etapas que compõem o software surgirão. Com base nas necessidades descritas pelos usuários foram detectados os requisitos que o sistema iria conter, os mesmos podem ser vistos na seção (Apêndice A), diante disso identificou-se que sistema conteria as seguintes funções principais: cadastro de alunos; certificados; cursos; frequências; grade curricular; matricula; responsável; semestre; turma; usuários; login e tela principal. Para facilitar o entendimento foi feita a especificação do sistema baseado nos requisitos levantados, para isso utilizou-se a Linguagem de Modelagem Unificada (UML) a fim de apresentar o diagrama de caso de uso e o diagrama de atividades para a tarefa de cadastro de aluno. Na figura 4.2.1 pode-se observar o diagrama de caso de uso de cadastro de aluno.

37 Figuraa 4.2.1: Diagrama de caso de uso do cadastro de aluno. A figura acima demostra as etapas que ocorrem para que seja efetuado o cadastro de um aluno no sistema, são elas: após estar conectado o usuário solicita a tela de cadastro de aluno, o sistema informa que é necessário que seja feito o cadastro do responsável pelo aluno, apos efetuar o cadastro do mesmo o sistema permite que se faça o cadastro do aluno. A figura 4.2.2 ilustra o diagrama de atividades de cadastro de aluno. Figrua 4.2.2: Diagrama de atividades de cadastro do aluno. No diagrama acima as etapas ocorrem de seguinte forma: Inicio: é o principio da atividade de cadastro de aluno.

38 Consultar aluno: antes de o cadastro ser efetuado o sistema informará ao usuário que terá que ser feita uma pesquisa para verificar se o mesmo já não esta cadastrado, caso já esteja o fluxo seguirá pela esquerda sendo possível efetuar a alteração dos dados aluno, o sistema permitira que os dados sejam gravados na etapa seguinte e finalizará o processo de cadastro de aluno. Se o aluno ainda não estiver cadastrado o sistema permitira que seja feito o cadastro o do aluno após verificar se o responsável já esta cadastrado e então permitirá o usuário gravar os dados e finalizará o processo. 4.3. Modelo do Banco de Dados Para armazenar as informações necessárias ao funcionamento do SISJOL optou-se pelo uso de um banco de dados relacional. Conforme mencionado anteriormente na seção 2.9, um banco de dados ou modelagem relacional serve para facilitar os acessos aos dados e isso possibilita que usuários possam utilizar uma grande variedade de abordagens no que se refere ao tratamento das informações, segundo DEITEL (2005). Ainda em conformidade com o autor em um banco de dados relacional um dos principais conceitos é a Entidade Relacionamento (ER), pois é ela quem faz a descrição de todo o sistema, assim como o relacionamento entre os dados e um modelo gráfico. A maior parte das modelagens de dados utiliza como forma estruturada de relacionar os dados o modelo Entidade Relacionamento. Com o levantamento dos requisitos (Ver Apêndice A) expostos na seção 4.2 pode-se traçar o modelo ER do banco. A figura 4.3.1 mostra o modelo de ER do SISJOL. O banco é composto por 12 tabelas relacionadas entre se a fim de obter as informações necessárias quando solicitadas. Todas as tabelas possuem um ou mais campos de identificação únicos, algumas possuem chaves estrangeiras (ver seção 2.9) que fazem o relacionamento entre as tabelas. As tabelas são descritas como segue: login, responsável, aluno, endereço, telefone, certificado, matricula, frequência, turma, grade curricular, curso e semestre. A tabela de login serve para o cadastro de pessoas autorizadas a usarem o sistema; a tabela responsável visa cadastrar o responsável pelo aluno; a tabela aluno, endereço e telefone servem para cadastrar as informações do aluno, a tabela certificado conterá os alunos que

39 receberam certificado; a tabela matricula tem como objetivo guardar a informações de matricula do aluno; a tabela de frequência armazenará as frequências do aluno; na tabela turma ficarão armazenadas as turmas disponíveis; na tabela grade curricular conterão os conteúdos e aulas registradas; a tabela curso indica os cursos disponíveis e na tabela semestre ficarão persistidos os semestres. Figura 4.3.1: Diagrama ER do banco