UNIVERSIDADE FEDERAL DE SANTA CATARINA Sistema Gerenciador Para Atribuição De Professores Às Disciplinas Jorge Berti Orientador: Vitório Bruno Mazzola Florianópolis, 09 de Julho de 2010. 2010/1 UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA CURSO DE CIÊNCIAS DA COMPUTAÇÃO Sistema gerenciador para atribuição de professores às disciplinas Jorge Berti Trabalho de conclusão de curso apresentado como parte dos requisitos para obtenção do grau de Bacharel em Ciências da Computação . Florianópolis, 2010 ERRATA Folha Linha Onde se lê Leia-se 2010/1 Jorge Berti Sistema gerenciador para atribuição de professores às disciplinas Trabalho de conclusão de curso apresentado como parte dos requisitos para obtenção do grau de Bacharel em Ciências da Computação. Orientador(a): Vitório Bruno Mazzola Banca examinadora .................................. .................................. Dedico este trabalho à toda minha família, minha namorada Julie e especialmente ao meu falecido pai, que infelizmente não teve a oportunidade de ver seu filho formado como Bacharel em Ciências da Computação. AGRADECIMENTOS Agradeço primeiramente à instituição que me acolheu, ao meu orientador Vitório Bruno Mazzola, que aceitou ser meu orientador, ajudando a definir o tema e ajudando no desenvolvimento do trabalho em si e igualmente aos demais membros da banca. EPÍGRAFE “O sucesso é construído de 99 por cento de fracasso.” Soichiro Honda RESUMO ABSTRACT SUMÁRIO Introdução ................................................................................................................ 11 1 Planejamento do projeto...................................................................................... 12 2 O Padrão MVC ...................................................................................................... 21 2.1 História do padrão MVC ................................................................................................. 21 2.2 O que é o padrão MVC .................................................................................................................... 21 2.3 Motivação para o uso do padrão MVC ............................................................................................. 22 3 Ambiente de desenvolvimento C# ...................................................................... 23 3.1 Sobre o C#..................................................................................................................... 23 3.2 Porque usar o C# ........................................................................................................... 24 4 Banco de dados Postgre SQL ............................................................................. 25 4.1 Sobre o PostgreSQL ...................................................................................................... 25 4.1.1 Histórico ...................................................................................................................... 25 4.1.2 Características ............................................................................................................ 25 4.1.3 Custos para desenvolvê-lo .......................................................................................... 26 4.2 Porque usar o Postgre SQL ........................................................................................... 26 5 Sistema gerenciador de professores ................................................................. 27 5.1 O problema .................................................................................................................... 27 5.2 Motivação ...................................................................................................................... 27 5.3 Pré requisitos ................................................................................................................ 27 5.4 Modelagem .................................................................................................................... 27 Considerações finais .................................................................................................. Anexo 1 – Cópias de algum documento.................................................................... Anexo 2 – Cópias de outro documento ..................................................................... INTRODUÇÃO Hoje, a coordenação de curso de Ciências da Computação faz a inscrição dos professores com as disciplinas ministradas de forma não automatizada e sem uma política de tentar alternar quais professores, dentro dos seus domínios de disciplinas afins , lecionarão uma disciplina em um determinado semestre. Esse cenário causa certa estagnação, a partir do momento em que há pouca alternância em relação à qual professor leciona uma disciplina. Com a criação desse sistema, professores que possuem interesse em lecionar uma disciplina terão a oportunidade de fazê-lo, através de um método sistemático, imparcial e livre de qualquer tendencionismo. Este trabalho consiste na documentação e implementação de um sistema para gerenciar quais professores lecionarão quais disciplinas em um determinado semestre, baseado em algumas políticas pré definidas que serão apresentadas no decorrer do trabalho. Além do escopo principal, serão apresentadas features, tais como envio , via email para cada professor, com sua(s) disciplina(s) que lhe foram atribuídas, uma interface web para “candidatura” de um professor para ministrar uma disciplina de sua área de atuação. Para o desenvolvimento do sistema usaremos a linguagem C#, através da IDE Visual Studio, fornecido graças a uma parceria entre a UFSC e a Microsoft, o banco de dados será o Postgre, por ser um banco robusto, gratuito e de nosso domínio de conhecimento e a técnica de implementação será orientada a objetos, usando como padrão de projeto o MVC(Model View Controller). 11 1 PLANEJAMENTO DO PROJETO No semestre 2010.1, cursamos a disciplina “Planejamento e Gestão de Projetos”. Nessa disciplina, aprendemos como devemos elaborar um plano de projetos . Um plano de projetos é uma estrutura de informações dividas seções, em que cada uma dessas seções são definidas características do projeto, como por exemplo, o escopo e os pré-requisitos do projeto. Termo de Abertura de Projeto Titulo do Projeto Sistema de gerenciamento de professores e disciplinas Aluno(s) Jorge Berti Data 06/05/2010 Justificativa Tomamos a iniciativa de desenvolver esse sistema porque, hoje em dia, na UFSC o gerenciamento das disciplinas e os professores que as ministram é feita de maneira manual. Existe também o problema na estagnação de quem ministra as disciplinas, ou seja, não há uma renovação, sistematizada, de diferentes professores ministrarem uma mesma disciplina a cada semestre. Descrição Desenvolver um sistema que faça o gerenciamento das disciplinas, na UFSC, bem como os professores que a ministram. Objetivo(s) Desenvolver um sistema que faça o gerenciamento das disciplinas, na UFSC, bem como os professores que a ministram. Desenvolver também sua documentação para apresentação em TCC. Será satisfatório, para o sucesso do projeto, entregar um documento de TCC completo que seja aprovado pela banca, bem como também o sistema cumprir com os requisitos acordados. 12 Premissas Será necessário o acesso a dados dos professores, como sua identificação, disciplinas de sua área Restrições O trabalho deverá ser apresentado até a metade do semestre em que estivermos matriculados na disciplina de Projetos 2. Estimativa do custo total (R$) Estimando o tempo gasto em que o desenvolvedor vai gastar para desenvolver o projeto e que esse tempo poderia ser usado para trabalhar em outro lugar podemos estimar um custo , de mão de obra, no valor de cerca de R$ 8000,00. Estimativa da duração total Duração de 18 meses (3 semestres) com 3 marcos bem definidos: 1- Apresentação da proposta ao final primeiro semestre. 2- Apresentação de um esboço documentação do TCC, ao final segundo semestre. 3- Apresentação do documento final TCC, bem como o sistema em si, final do terceiro semestre. Partes interessadas e responsabilidades Orientador Vitório Bruno Mazzola Gerente de projeto Jorge Berti Interessado Manuel Lino do da do do ao Assinaturas de aprovação Referências 2. Escopo 2.1 Declaração do escopo 13 O projeto a ser desenvolvido é o TCC que aborda o desenvolvimento de um sistema que gerencia as disciplinas de um curso de graduação ou pós-graduação. Os critérios de aceitação são o de ter a documentação do TCC aprovada pela banca, bem como sua defesa, o sistema em questão deverá ter a capacidade de cadastrar e gerenciar disciplinas e seus professores. O projeto é dividido em três marcos para entregas: Ao final do primeiro semestre, deverá ser entregue a declaração do tema do TCC. 2- Ao término do segundo semestre, deverá ser entregue um esboço da documentação final do TCC, bem como também um esboço dos códigos do sistema. Em meados do meio do terceiro semestre deverá ser entregue o documento final do TCC, deverá ser feita a defesa do projeto e entrega do sistema funcionando, cumprido com os requisitos definidos. As restrições são que os 2 primeiros semestre possuem um tempo limite de 6 meses e o terceiro semestre um tempo limite de 3 meses. O TCC somente será concluído se a banca o aprovar. 2.2 EAP 1. Introdução do projeto 1.1 Definir tema. 1.2 Definir orientador. 1.3 Elaborar declaração do projeto. 2. Projeto 1 - Documentação 2.1 Elaborar esboço do trabalho final. 2.2 Reuniões com o orientador do TCC. 3. Projeto 1 - Desenvolvimento 3.1 Iniciar o desenvolvimento do sistema em questão. 3.2 Avaliar critérios de aceitação junto ao orientador de TCC. 4. Projeto 2 - Documentação 4.1 Finalizar o trabalho final e adequar mudanças propostas pelo orientador de TCC. 4.2 Elaborar a apresentação para a banca avaliadora. 4.3 Apresentar o trabalho concluído a banca avaliadora. 5. Projeto 2 - Desenvolvimento 14 5.1 Finalizar o desenvolvimento do sistema. 5.1 Verificar a aceitação do mesmo. 2.3 Dicionário do EAP Componente de EAP Descrição Definir tema. Definir um tema para o TCC. Definir orientador. Definir um orientador segundo a área do TCC escolhida. Elaborar declaração de projeto. Elaborar o plano de execução do TCC. Elaborar esboço do trabalho final. Iniciar o desenvolvimento do TCC, entregando um esboço inicial do mesmo. Reuniões com o orientador do TCC. Reunir-se periodicamente com o orientador para resolução de duvidas e verificação de sugestões. Iniciar o desenvolvimento do sistema. Iniciar o desenvolvimento do sistema e seus testes segundo critérios definidos junto ao orientador. Avaliar critérios de aceitação junto ao orientador Efetuar avaliações periódicas junto ao orientador do TCC. Finalizar o trabalho final. Concluir o desenvolvimento do TCC, adequando as normas da UFSC. Elaborar a apresentação para a banca avaliadora. Elaborar a apresentação para a banca avaliadora, slides e texto a ser falado. Apresentar o trabalho para a banca avaliadora. Apresentação do TCC para a banca. Finalizar sistema. Finalizar o sistema, com todos os requisitos acordados previamente o desenvolvimento do 15 funcionando. Verificar a aceitação do sistema. Testar o sistema. 2.4 Pacotes de trabalho. Introdução ao projeto ID: 1 Descrição do pacote de trabalho: Definição do tema, orientador e plano de execução do TCC, além de registrar no sistema de projetos da UFSC. Critério de aceitação: Tudo estar registrado no sistema de controle de TCCs da UFSC conforme suas normas. Entregáveis: Nenhum. Premissas: Nenhum Restrições: Nenhum Projeto 1 – Documentação ID: 2 Descrição do pacote de trabalho: Elaboração de um esboço inicial do TCC final a ser entregue. Critério de aceitação: O trabalho deve ser aceito pelo orientador do TCC. Entregáveis: Esboço do TCC. Premissas: 16 Restrições: O prazo deve ser cumprido bem como as normas de desenvolvimento da universidade. Projeto 1 – Desenvolvimento ID: 3 Descrição do pacote de trabalho: Desenvolvimento de uma versão inicial do sistema em questão. Critério de aceitação: Deve ser aceito pelo orientador do TCC. Entregáveis: Sistema parcialmente desenvolvido. Premissas Restrições: O prazo deve ser cumprido bem como as normas de desenvolvimento da universidade. Projeto 2 – Documentação ID: 4 Descrição do pacote de trabalho: Complementação do esboço inicial com o restante do trabalho, além das sugestões propostas pelo orientador. Critério de aceitação: Deve ser aprovado pela banca avaliadora. Entregáveis: Trabalho final de conclusão de curso. Premissas: Restrições: Deve ser cumprido o prazo de apresentação e entrega, bem como as normas de desenvolvimento da universidade. Projeto 2 – Desenvolvimento ID: 5 Descrição do pacote de trabalho: Desenvolvimento da versão final do sistema. Critério de aceitação: Deve ser aprovado pela banca avaliadora. Entregáveis: Sistema totalmente desenvolvido com todas as funcionalidades 17 definidas. Premissas: Restrições: Deve ser cumprido o prazo de apresentação e entrega, bem como as normas de desenvolvimento da universidade. 3. Tempo 3.1 Definição e Seqüenciamento das Atividades ID Atividade Atividade(s) precedente(s) 1.1 Definição do tema Nenhuma 1.2 Definição do orientador 1.1 1.3 Elaborar projeto. do 1.2 2.1 Elaborar esboço do trabalho final. 1.3 2.2 Reuniões de planejamento com orientador. 2.1 3.1 Iniciar desenvolvimento do sistema. 2.2 3.2 Definir critérios de avaliação junto ao orientador. 3.1 4.1 Finalizar o trabalho final. 3.2 4.2 Elaborar a apresentação para a banca avaliadora. 4.1 4.3 Apresentar o trabalho a banca avaliadora. 4.2 5.1 Finalizar o desenvolvimento do sistema. 4.3 5.2 Verificar 5.1 declaração a aceitação do 18 sistema. 3.2 Estimativa de Tamanho dos Pacotes de Trabalho da EAP ID Pacote de trabalho Tamanho estimado/Unidade 1 Introdução do projeto 4 meses 2 Projeto 1. Documentação 3 meses 3 Projeto 1. Desenvolvimento 3 meses 4 Projeto 2. Documentação 3 meses 5 Projeto 2. Desenvolvimento 3 meses 3.3 Estimativa de Duração de Atividades ID Atividade Duração estimada/Unidade 1.1 Definição do tema 1 mês 1.2 Definição do orientador 1 mês 1.3 Elaborar declaração do projeto. 2 meses 2.1 Elaborar esboço do trabalho final. 1.5 meses 2.2 Reuniões de orientador. 3.1 Iniciar desenvolvimento do sistema. 1.5 meses 3.2 Definir critérios de avaliação junto ao orientador. 1.5 meses 4.1 Finalizar o trabalho final. 1.5 meses 4.2 Elaborar a apresentação para a banca avaliadora. 1.5 meses planejamento com 1.5 meses 19 4.3 Apresentar avaliadora. o trabalho a banca 1 dia 5.1 Finalizar o desenvolvimento do sistema. 1.5 meses 5.2 Verificar a aceitação do sistema. 1.5 meses 4. Custos 4.1 Estimativa de Custo Item Quantidade Valor unitário Valor total Mão de obra 18 R$1000,00 R$18000,00 18 R$100,00 R$1800,00 Custo gerais manutenção de 4.2 Baseline de custo Introdução ao projeto – R$ 4400,00 Projeto 1 – Documentação – R$ 3300,00 Projeto 1 – Desenvolvimento - R$ 3300,00 Projeto 2 – Documentação - R$ 3300,00 Projeto 2 – Desenvolvimento - R$ 3300,00 5. Qualidade 20 Normas, Políticas, Diretrizes: Normas ABNT para documentação do projeto e trabalho de conclusão de curso. Normas da UFSC para desenvolvimento, apresentação e aprovação do TCC. Abordagem de garantia de qualidade: Introdução do projeto – será avaliado pelo coordenador de projetos da UFSC ao final do semestre referido. Projeto 1 – Documentação e Desenvolvimento – será avaliado periodicamente pelo orientador do TCC com uma avaliação final do esboço do projeto. Projeto 2 – Documentação e Desenvolvimento – será avaliado periodicamente pelo orientador do TCC e será feita uma avaliação final por uma banca avaliadora a ser definida. Abordagem de controle de qualidade: Reuniões com o orientador de projeto, testes e validação de software. 6. Riscos Risco Probabili dade Impacto Prioridade Estratégia de resposta Ações de prevenção Problemas de saúde com desenvolvedo r Problemas de saúde com orientador 10% Projeto para total nenhuma Visitas regulares ao médico 20% Não serão feitas avaliaçõ es média Buscar outro orientador Plano de contingênci a 21 2 O PADRÃO MVC 2.1 HISTÓRIA DO PADRÃO MVC O MVC foi descrito originalmente em 1979 por Trygve Reenskaug, que então trabalhava no Smalltalk na Xerox PARC. A implementação original é descrita em detalhes no artigo "Applications Programming in Smalltalk-80: How to use Model– View–Controller". 2.2 O QUE É O PADRÃO MVC É um padrão de projeto que divide um projeto em 3 camadas (3-tier), chamadas : Modelo, Visão e Controle. 2.2.1 Modelo É a camada que define o modelo de dados usado pelo sistema, bem como as regras do negócio. Responsável pelo controle de acesso e tratamento dos dados vindos do banco. As requisições de ações vinda da camada de controle, por exemplo, passam pela cama de modelo, que realiza as operações junto à um banco de dados, por exemplo. 2.2.1 Visão Essa camada é responsável por “renderizar” a camada de modelo, para criar um meio de iteração com usuário. Conhecida com interface, ela é que recebe os estímulos externos, como um clique com o mouse em um botão, e traduz essa ação como uma mensagem para a camada de controle. 2.2.1 Controle A camada de controle realiza as operações lógicas do programa, como se nessa camada estivessem todas as engrenagens que fazem a “máquina” funcionar. Essa camada recebe os estímulos da cama de visão, realizando operações lógicas ou matemáticas, podendo retornar ao usuário uma resposta. Pode também interagir com a camada de modelo, podendo, por exemplo,consultar algum dado em banco para assim realizar alguma operação. 22 Diagrama conceitual do padrão MVC 2.2 MOTIVAÇÃO PARA USAR O PADRÃO MVC Nossa motivação para utilizar o padrão MVC é que com o aumento da complexidade das aplicações desenvolvidas, torna-se relevante a separação entre os dados e a apresentação das aplicações. Desta forma, alterações feitas no layout não afetam a manipulação de dados, e estes poderão ser reorganizados sem alterar o layout. 23 3 Ambiente de desenvolvimento C# 3.1 O que é o C# 3.1.1 História Segundo o site Wikipedia, durante o desenvolvimento da plataforma .NET, as bibliotecas foram escritas originalmente numa linguagem chamada Simple Managed C (SMC), que tinha um compilador próprio. Mas, em Janeiro de 1999, uma equipe de desenvolvimento foi formada por Anders Hejlsberg, que fora escolhido pela Microsoft para desenvolver a linguagem. Dá-se inicio à criação da linguagem chamada Cool. Um pouco mais tarde, em 2000, o projeto .NET era apresentado ao público na Professional Developers Conference (PDC), e a linguagem Cool fora renomeada e apresentada como C#. A criação da linguagem, embora tenha sido feita por vários programadores, é atribuída principalmente a Anders, hoje um Distinguished Engineer na Microsoft. Ele fora o arquiteto de alguns compiladores da Borland, e entre suas criações mais conhecidas estão o Turbo Pascal e o Delphi. 3.1.2 Características C# é uma linguagem de programação orientada a objectos criada pela Microsoft, faz parte da sua plataforma .NET. A empresa baseou C# nas linguagens C++ e Java, e ela é considerada a linguagem símbolo do .NET, por ter sido criada praticamente do zero para funcionar na nova plataforma, sem preocupações de compatibilidade com código existente. O compilador C# foi o primeiro a ser desenvolvido, e a maior parte das classes da plataforma foram desenvolvidas nesta linguagem. O C# é constituído por diversificadas características. Por exemplo, a linguagem suporta ponteiros através da palavra reservada unsafe (código não-seguro), que é obrigatório. Seu uso não é aconselhável, e blocos de códigos que o usam geralmente requisitam permissões mais altas de segurança para poderem ser executados. As operações aritméticas são verificadas contra transbordamento de dados. C# também suporta as operações aritméticas básicas como adição, subtracção, multiplicação e divisão. Esses símbolos são chamados operadores, e "operam" os valores das variáveis. Um coletor de lixo também é suportado, um processo usado para a manutenção de memória. Com este recurso, é possível recuperar a zona de memória que um programa já não utiliza. Quando isto não ocorre pode acontecer a chamada perda de memória, um erro comum que pode levar ao término não desejado do programa em execução por esgotamento da memória livre. Em C# não existe herança múltipla, ou seja, cada classe só pode herdar apenas uma outra classe e não mais do que uma, no entanto é possível simular herança múltipla utilizando interfaces. Assim, através da herança reduzimos código através da sua reutilização.. Os destrutores são funções que se encarregam de realizar as tarefas que são necessárias executar quando um objecto deixa de existir. Quando este já não está a ser utilizado por nenhuma variável, deixa de ter sentido que esteja armazenado na memória, portanto, o objecto deve ser destruído para liberar espaço. Para isto é chamada a função destrutor. Os destrutores não podem ser definidos em estruturas, são apenas usados em classes, e uma classe pode apenas ter um destrutor, eles não podem ser herdados ou 24 sobrecarregados, nem podem ser chamados pois são invocados automaticamente. Também não pode ser modificado nem de algum modo ter parâmetros. O C# suporta sobrecarga de métodos e de operadores, mas não suporta argumentos padrão. As únicas conversões implícitas por padrão são conversões seguras tais como, a ampliação de inteiros e conversões de um tipo derivado para um tipo base. Não existem conversões implícitas entre inteiros e variáveis booleanas, enumerações e ponteiros nulos. Qualquer conversão implícita definida pelo utilizador deve ser explicita, apesar do C# ser baseado em variáveis estáticas é possível converter os tipos de dados de uma variável, desde que essa conversão seja possível, pode ser convertido qualquer tipo primitivo para string, mas nem sempre é possível o contrário. Uma string que representa um número pode ser convertida para um tipo numérico, um número pode sempre ser convertido para um número com mais bits, exemplo, um tipo byte (8 bits) pode ser convertido para um do tipo int (32 bits). O contrário nem sempre é possível, de um tipo com mais bits para representá-lo para um com menos bits. Desde que o valor não exceda o limite do tipo menor, a conversão ocorrerá sem problemas, senão a execução lança uma exceção. Nas conversões que sempre poderão acontecer, o mesmo é feito automaticamente, sem precisar "forçar" nenhuma dessas conversões. A forma mais simples de efectuar a conversão é usando a classe Convert, que implementa vários métodos que permite a conversão de qualquer tipo para outro. Todas as conversões de tipo são validadas em função do tipo real da variável em tempo de execução, sem excepções. Existem diversos mecanismos para criação de novos tipos de dados a partir de tipos já existentes. Um desses mecanismos permite a criação de vectores. Os vectores são todos derivados de uma mesma classe do ambiente .NET, o que significa compartilhar várias operações, métodos e atributos. Os objectos e vectores são necessariamente alocados dinamicamente na memória heap (área de memória reservada) com o uso do operador new. 25 4 BANCO DE DADOS POSTGRE SQL 4.1 Sobre o POSTGRESQL Hoje, o PostgreSQL é um dos SGBDs (Sistema Gerenciador de Bancos de Dados) de código aberto mais avançados, contando com recursos como: Consultas complexas chaves estrangeiras Integridade transacional Controle de concorrência multi-versão Suporte ao modelo híbrido objeto-relacional Gatilhos Visões Linguagem Procedural em várias linguagens (PL/pgSQL, PL/Python, PL/Java, PL/Perl) para Procedimentos armazenagem Indexação por texto Estrutura para guardar dados Georeferenciados PostGIS 4.1.1 HISTÓRICO O PostgreSQL é um dos resultados de uma ampla evolução que se iniciou com o projeto Ingres, desenvolvido na Universidade de Berkeley, Califórnia. O líder do projeto, Michael Stonebraker, um dos pioneiros dos bancos de dados relacionais, deixou a universidade em 1982 para comercializar o Ingres, porém retornou a ela logo em seguida. Após seu retorno a Berkeley, em 1985, Stonebraker começou um projeto pósIngres com o objetivo de resolver problemas com o modelo de banco de dados relacional. O principal problema era a incapacidade do modelo relacional compreender “tipos” (atualmente, chamados de objetos), ou seja, combinações de dados simples que formam uma única unidade. O projeto resultante, chamado Postgres, era orientado a introduzir a menor quantidade possível de funcionalidades para completar o suporte a tipos. Estas funcionalidades incluíam a habilidade de definir tipos, mas também a habilidade de descrever relações - as quais até este momento eram amplamente utilizadas, mas completamente mantidas pelo usuário. No Postgres, o banco de dados "compreendia" as relações e podia obter informações de tabelas relacionadas utilizando regras. Iniciando em 1986, a equipe divulgou uma série de documentos descrevendo a base do sistema e em 1988 o projeto possuía um protótipo funcional. A versão 1 foi liberada para um grupo pequeno de usuários em junho de 1989, seguida pela versão 2 com um sistema de regras reescrito em junho de 1990. Para a versão 3, liberada em 1991, o sistema de regras foi reescrito novamente, mas também foram adicionados suporte para múltiplos gerenciadores de armazenamento e um melhorado motor de consultas. Já em 1993, Postgres havia crescido imensamente em popularidade e possuía uma grande demanda por suporte e por novas funcionalidades. Após a liberação da versão 4, a qual era uma simples versão de limpeza, o projeto foi oficialmente abandonado pela Universidade de Berkeley. 26 Entretanto, devido ao fato do seu código fonte estar sob uma licença BSD, o seu desenvolvimento foi continuado. Em 1994, dois estudantes de Berkeley, Andrew Yu e Jolly Chen, adicionaram um interpretador SQL para substituir a linguagem QUEL (desenvolvida para o Ingres) e o projeto foi renomeado para Postgres95. Com a divulgação de seu código pela Internet, Postgres95 iniciou uma nova vida como software open source. Em agosto de 1996, Marc Fournier, Bruce Momjian e Vadim B. Mikheev lançaram a primeira versão externa da Universidade de Berkeley e deram início à tarefa de estabilizar o código herdado. Também em 1996, o projeto foi renomeado para PostgreSQL a fim de refletir a nova linguagem de consulta ao banco de dados: SQL. A primeira versão de PostgreSQL, a 6.0, foi liberada em janeiro de 1997. Desde então, um grupo de desenvolvedores e de voluntários de todo o mundo, coordenados pela Internet, têm mantido o software e desenvolvido novas funcionalidades. As principais características acrescentadas nas versões 6.x são o en:MVCC (Multiversion Concurrency Control – Controle de Concorrência Multiversões), melhorias no SQL e novos tipos de dados nativos (novos tipos de datas e hora e tipos geométricos). Em maio de 2000 foi liberada a versão 7.0. As versões 7.x trouxeram as seguintes novas funcionalidades: Write-Ahead Log (WAL), esquemas SQL, outer joins, suporte a IPv6, indexação por texto, suporte melhorado a SSL e informações estatísticas do banco de dados. A versão 8.0 foi lançada em janeiro de 2005 e entre outras novidades, foi a primeira a ter suporte nativo para Microsoft Windows (tradicionalmente, o PostgreSQL só rodava de forma nativa em sistemas Unix e, em sistemas Windows - através da biblioteca Cygwin). Dentre as muitas novidades da versão 8.x, pode-se destacar o suporte a tablespaces, savepoints, point-in-time recovery, roles e Two-Phase Commit (2PC). Em julho de 2009 foi lançada a versão mais recente: 8.4. 4.1.2 CUSTOS PARA DESENVOLVÊ-LO A versão 8.3.0 do PostgreSQL apresenta mais de 570 mil linhas de código, o que segundo o modelo COCOMO exigiria um esforço estimado de pouco mais de 157 pessoas-ano para o seu desenvolvimento. Estima-se que o tempo necessário para uma empresa desenvolver um software deste porte é de 3 anos e meio (aproximadamente 43 meses), o que corresponderia a cerca de 43 programadores trabalhando em paralelo. Considerando que o salário médio de um programador nos EUA é de cerca de US$ 56.286,00 por ano, e multiplicando por 2,4 para considerar custos adicionais além do salário dos programadores, o custo estimado para o desenvolvimento de um software do porte do PostgreSQL 8.3.0 é de US$ 21.220.945,00. 4.2 PORQUE USAR O POSTGRE SQL O PostgreSQL foi adotado por nós por ser um banco de dados muito poderoso e robusto, não devendo em nada aos outros bancos de dados consagrados, como o Oracle, por exemplo. Assim como as distribuições Linux, ele possui forte participação da comunidade em seu desenvolvimento e manutenção. Outro fator importante é o de que estamos um tanto habituados a trabalhar com esse tipo de banco, reduzindo assim com qualquer perda de tempo em alguma curva de aprendizado caso adoestássemos outro tipo de banco. 27 Além do que foi citado, não podemos deixar de citar que o PostgreSQL é um banco de dados gratuito, de código aberto, diminuindo então os gastos com essa áera do nosso problema durante o desenvolvimento desse projeto. 5 SISTEMA GERENCIADOR DE PROFESSORES 5.1 O PROBLEMA A Coordenação dos cursos de Ciências da Computação e Sistemas de Informação não possuir um sistema computacional para poder gerenciar a atribuição de professores que ministrarão as disciplinas. A falta desse sistema pode causar uma maior lentidão do processo, bem como uma maior dificuldade em evitar conflitos de horários , por exemplo: verificar um conflito de horário entre duas ou mais disciplinas que um professor for ministrar. Um outro problema que propõe-se a tentar resolver é a de um professor ficar muito tempo ministrando uma determinada disciplina, não dando chance à outros professores, da mesma área de atuação, de ministrar tal disciplina. Com esse gerenciados, esse problema será resolvido de forma democrática e imparcial, através de políticas bem definidas 5.2 MOTIVAÇÃO A principal motivação que nos leva ao desenvolvimento deste trabalho é que ele envolve muitos conceitos aprendidos ao longo do curso e que estes pertencem às nossas áreas de interesse, como por exemplo: planejamento de projeto, análise de projeto, levantamento de requisitos, modelagem do programa e da base de dados, e por fim, o desenvolvimento em si. Outro importante motivo é o de poder aproveitar a oportunidade de pode dar um retorno à nossa instituição, que teve o empenho em poder ajudar em nossa formação acadêmica. Sendo assim, nossa forma de agradecer esse empenho é o de desenvolver esse sistema com o intuito de poder facilitar o trabalho da coordenação de nosso curso e ,quem sabe, o trabalho da coordenação de outros cursos dentro da UFSC 5.3 PRÉ REQUISITOS O sistema deverá ser capaz de adicionar, remover, exibir e editar dados dos professores agregados ao curso. O grupo de disciplinas afins (GPDA) de um professor também deverá ser de possível edição. O sistema deverá ser capaz de adicionar, remover, exibir e editar dados das disicplinas agregados ao curso. O sistema deverá ser capaz de atribuir os professores às disciplinas que são de seu domínio de disciplinas afins. Deverá resolver problemas de consistência, em que um professor não poderá ministrar uma disciplina fora de sua área de atuação, nem ministrar disciplinas em mesmo horário. 28 Deverá gerar relatórios das disciplinas atribuídas aos professores, sendo possível também gerar relatórios individuais para cada professor, ao selecionar um professor. 5.4 MODELAGEM 5.4.1 DA MODELAGEM DA BASE DE DADOS A principio as entidades de nossa base serão simples. Serão unidades: Professores, comporto por um ID, nome, identificação interna e uma id, que será uma chave estrangeira para uma tabela que representa uma relação do tipo muitos para muitos com a tabela de disciplinas. Disciplinas, composta por um id, nome, id para a área da disciplina(hardware, POO, matemática discreta...etc), horário da disciplina Tabela realacional entre professores e disciplinas, com id própria, idprofessor, iddisciplina Tabela áreas, que podem ser, por exemplo, hardware, programação e matemática discreta, com id e o nome da área Diagrama ER da base de dados 29