UNIVERSIDADE FEDERAL DE SANTA CATARINA CENTRO TECNOLÓGICO - CTC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA - INE SISTEMA DE ACOMPANHAMENTO DE PROGRAMAS ASSISTENCIAIS – INFORMATIZAÇÃO DE PREFEITURAS BRUNO MUNHOZ MÜLLER MONOGRAFIA DE CONCLUSÃO DO CURSO DE SISTEMAS DE INFORMAÇÃO Orientador: Prof. José Eduardo De Lucca Florianópolis , 22 de novembro de 2007. SISTEMA DE ACOMPANHAMENTO DE PROGRAMAS ASSISTENCIAIS INFORMATIZAÇÃO DE PREFEITURAS Trabalho de conclusão de curso apresentado como parte das atividades para obtenção do título de Bacharel, do curso de Sistemas de Informação da Universidade Federal de Santa Catarina. Profª orientador: José Eduardo De Lucca Florianópolis, 2007 RESUMO Este trabalho faz parte de um grande projeto de incentivo ao uso de software livre nas prefeituras brasileiras chamado Via Digital. A maioria das prefeituras brasileiras, principalmente as de pequeno porte, estão estagnadas no ponto de vista de investimentos em informatização na área de programas sociais. Muitas não possuem recursos financeiros, humanos e tecnológicos para a reversão do quadro, afetando diretamente na qualidade e quantidade dos serviços prestados à população. A proposta concreta deste trabalho de conclusão de curso é validar e implementar um módulo de software de acompanhamento de programas assistenciais. Uma empresa contratada pelo Via Digital fez o levantamento de requisitos do software, cabendo a este projeto realizar uma validação dos requisitos, tecnologias, funcionalidades e implementação do sistema. Palavras-chave: sistemas assistênciais, prefeituras, Via Digital, Java, governo eletrônico, software livre. ABSTRACT Versão em língua estrangeira do resumo. Obrigatório, pela ABNT.. LISTA DE ILUSTRAÇÕES LISTA DE TABELAS LISTA DE ABREVIATURAS E SIGLAS SUMÁRIO 1 Introdução ............................................................................................................ 9 1.1 Justificativa ................................................................................................................. 10 1.2 Objetivos ..................................................................................................................... 10 1.2.1 Objetivos Gerais ......................................................................................................................... 10 1.2.2 Objetivos Específicos ................................................................................................................. 11 2 Referencial Teórico ............................................................................................ 12 2.1 Software Livre ............................................................................................................. 12 2.2 Via Digital .................................................................................................................... 13 3 Tecnologias ........................................................................................................ 14 3.1 Java ............................................................................................................................ 14 3.2 PostgreSQL ................................................................................................................ 14 3.3 Frameworks ................................................................................................................ 15 3.3.1 Hibernate .................................................................................................................................... 15 3.3.2 Struts .......................................................................................................................................... 16 3.3.3 Spring ......................................................................................................................................... 16 4 Sistema ............................................................................................................... 17 4.1 Abrangência e sistemas relacionados ......................................................................... 17 4.2 Casos de Uso do Sistema........................................................................................... 20 4.2.1 Cadastro Básico ......................................................................................................................... 20 4.2.2 Cadastros Gerais (Administrador) ............................................................................................. 21 4.2.3 Funcionalidades do Sistema ...................................................................................................... 21 Considerações finais .............................................................................................. 22 Anexos ..................................................................................................................... 24 1 INTRODUÇÃO Sabe-se que novas tecnologias surgem a todo momento e entende-se que seu uso pode resultar em benefícios incontáveis não só para os que usam dela diretamente como também para toda a sociedade. Nesse sentido, o Estado e as prefeituras também podem utilizar das tecnologias de informação de comunicação para melhorar o nível de prestação de serviços aos cidadões, dar mais qualidade de vida à sociedade e otimizar o gasto público, centrodo-o nas principais necessidades. Quando um indivíduo, uma organização, ou mesmo o governo deseja usar um software ou um programa qualquer, precisa pagar por ele. Todavia, mesmo pagando não detém sua propriedade, mas apenas o direito de uso, com valor legal especificamente para uma determinada máquina ou conjunto de máquinas. Isto significa que se o órgão comprador possuir 100 computadores, serão necessárias 100 licenças, uma para cada máquina. Isto tem elevado muito o custo com o pagamento das licenças, transferindo para poucos desenvolvedores os direitos ao conhecimento. Uma possível solução para esta problemática é a adoção dos Softwares Livres, que possibilitam a redução dos custos com licenças devido ao seu caráter não-proprietário quando comparado aos softwares comerciais comumente encontrados nas diversas instâncias governamentais, incluindo os computadores dos milhões de alunos das escolas públicas. Como a base de recursos disponíveis para o cumprimento das obrigações administrativas e para investimentos é sempre menor do que aquilo que se deseja, e como há uma contínua pressão social e política por recursos, é de se supor que aqueles com custos evitáveis serão enfrentados pelos governantes e administradores. Assim, se existe a possibilidade de se utilizarem softwares que no seu custo total serão mais baratos, certamente eles terão a preferência sobre os mais caros. 1.1 Justificativa A necessidade de fomento e incentivo à atuação de empresas e profissionais no setor de prefeituras é patente. Apesar de o cidadão ter na prefeitura o primeiro ponto de contato com o poder público, o serviço que ele obtém está aquém do que lhe é devido na grande maioria dos municípios. Há muito poucas ofertas de software adequadamente preparados para prefeituras neste momento e os setores carentes são diversos (assistência social, saúde, educação, transporte, lazer, saneamento básico, urbanismo). As universidades podem fazer parte de uma ação de apoio à formação de uma biblioteca de software e componentes livres de aplicação em prefeituras, pois já há movimentações no sentido de buscar o uso de software livre em muitas prefeituras. A validação e implementação de um módulo de software que supra as necessidades do setor de acompanhamento de programas assistenciais faz parte de uma grande iniciativa que busca uma melhoria na qualidade dos serviços prestados pelas prefeituras, trazendo benefícios para toda a população. Existe uma demanda de software para esse setor, mas não há disponível no mercado soluções eficazes nas questões de usabilidade, confiabilidade, portabilidade, manutenibilidade e principalmente custo. 1.2 Objetivos 1.2.1 Objetivos Gerais Este trabalho pretende auxiliar o projeto Via Digital, possibilitando a inclusão digital de prefeituras que pretendem informatizar o acompanhamento de programas assistências, elevando a qualidade do atendimento prestado aos cidadãos. Por meio da geração de relatórios, os responsáveis poderão assistir aos programas assistenciais, e tirar informações que os auxiliarão em decisões. Bem como o acompanhamento dos serviços prestados pelo órgão, ajudando como ferramenta de produtividade. 1.2.2 Objetivos Específicos Por se tratar de um trabalho de conclusão de curso realizado em uma universidade federal pública e gratuita, o projeto tem caráter de responsabilidade social e serve como forma de retribuir para a sociedade o que foi aprendido na universidade. O projeto serve também como forma de ampliação do conhecimento do proponente, possibilitando o desenvolvimento de futuras aplicações no âmbito profissional e acadêmico. Faz parte também do objetivo disponibilizar a solução de modo que seja integrável a outros sistemas também em desenvolvimento pelo projeto Via Digital. 2 2.1 REFERENCIAL TEÓRICO Software Livre O termo Software Livre se refere à liberdade do usuário executar, copiar, distribuir, modificar e aperfeiçoar o software. De acordo com a Free Software Foundation – FSF (apud SILVEIRA, 2004, p. 13) o termo se refere a quatro tipos de liberdade para os usuários de software: ● A liberdade de executar o programa para qualquer propósito. ● A liberdade de estudar como o programa funciona e adaptá-lo para as suas necessidades. ● A liberdade de redistribuir cópias de modo que posso ajudar ao seu próximo. ● A liberdade de aperfeiçoar o programa e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se benefici. Quando um programa utiliza Software Livre seus usuários têm todas as liberdades acima citadas. O usuário é livre, portanto, para usar, modificar, distribuir e aperfeiçoar o programa. É essencial que se dê acesso ao código fonte do programa, escrito em linguagem de alto nível, para que se faça valer esta liberdade. Os softwares proprietários têm estes acessos bloqueados, ou são permitidos apenas os códigos binários, ilegível para os programadores (TAURION, 2004). É importante observar que no caso da liberdade de redistribuir o programa o usuário que o modificou pode cobrar pela distribuição, o que ele nao pode é impedir o acesso do novo usuário ao código fonte ou formas binárias do programa nem cobrar licenças ou taxas pelo uso, especialmente se está licensiado pelo GPL. A liberdade inclui o fato ainda de que qualquer pessoa física ou jurídica pode utilizar o software em qualquer tipo de sistema operacional, para executar qualquer trabalho ou atividade sem que sejá necessário comunicar o desenvolvedor original ou outra entidade especial (FSF, apud SILVEIRA, 2004). 2.2 Via Digital O projeto Via Digital tem como proposta a criação de um repositório de componentes de software livre para informatização de pequenas prefeituras brasileiras. Para a elaboração do projeto foram consideradas as ameaças e oportunidades, fraquezas e pontos fortes. A possibilidade de informatizar alguns municípios brasileiros tem um impacto social e econômico grande para o país. Com a informatização, mas não só, espera-se contribuir para uma melhoria da eficácia dos serviços públicos internos e externos à prefeitura, assim como da transparência fiscal e utilização mais racional de recursos escassos disponíveis. O núcleo central do projeto é a criação de um serviço auto-sustentável que integre uma biblioteca de componentes e de software livres voltados à gestão municipal e que sirva de elo entre prefeituras, desenvolvedores, empresas, instituições de apoio e universidades, organizados em torno de modelos de negócio e interação baseados em software livre. Esta biblioteca é ponto de referência para abastecer empresas com software livre pré-formatado para necessidades comuns de prefeituras e componentes genéricos para montagem de sistemas mais específicos, de acordo com características próprias dos municípios. O serviço também foca na busca e difusão de informações sobre a dinâmica do software livre, tanto para funcionários de prefeituras quanto para desenvolvedores, integradores e fornecedores de soluções/serviços para o poder público., informações sobre licenciamento, direitos autorais, modelos de negócio, modelos e ferramentas de desenvolvimento de software e gestão de projetos, qualidade de software, capacitação etc. O modelo completo criado é potencialmente reutilizável, no todo ou em partes, em outros domínios de aplicação. Nele se prevê a organização dos atores em duas comunidades (com áreas de intersecção): a comunidade de desenvolvimento e a comunidade de negócios. 3 TECNOLOGIAS Este capítulo irá apresentar as tecnologias que serão utilizadas no trabalho. 3.1 Java O modelo computacional para o desenvolvimento do Sistema foi construído a partir de paradigma da orientação a objeto. A metodologia de orientação a objetos define uma notação e um processo para a construção de sistemas computacionais complexos. Realça a importância de extrair explicitamente uma hierarquia de classes e objetos do sistema que está sendo modelado, bem como a necessidade de visualizar, previamente, decisões que permitam a incorporação de todos os atributos de um sistema complexo bem estabelecido (COURTOIS in LAPOLLI, 1994). Java possui as características necessárias para implementação de um sistema completo orientado a objetos. Diferentemente das linguagens convencionais que são compiladas para código nativo, a linguagem Java é compilada para um código intermediário – chamado de bytecode – que é executado por uma máquina virtual, a Java Virtual Machine (JVM). Esta facilidade do código ser interpretado em tempo de execução faz com que a linguagem seja independente de plataforma. 3.2 PostgreSQL O SGBD escolhido para implementaçao do sistema é o PostgreSQL. Ele se destaca por ser um um banco de dados com recursos avançados que normalmente só são encontrados em softwares pagos. Alguns recursos disponíveis são integridade referencial, triggers, views, controle de concorrência, procedures e a possibilidade de realizar consultas complexas. 3.3 Frameworks 3.3.1 Hibernate Hibernate é uma ferramenta open source e pertence à JBoss Inc. Por se tratar de um código aberto e de download gratuito, soluções podem ser criadas e ajustadas ou adicionadas ao Hibernate, tornando esse framework robusto. O Hibernate permite trabalhar com persistência sobre banco de dados, sem a necessidade de ter instruções SQL (Structured Query Language) no meio do código Java, visto que a maioria dos desenvolvedores de sistemas opta por utilizar bancos de dados relacionais. Os registros do banco de dados devem ser transformados em objetos e as informações contidas nos objetos devem ser persistidas em forma de linhas e colunas. Chamamos isso de “Mapeamento Objeto- Relacional”. Hibernate fica posicionado como uma camada entre o aplicativo e o banco de dados, tratando de carregar e salvar os objetos. A camada de Persistência é de suma importância, pois ela é responsável por encapsular toda a lógica necessária para que um objeto ou uma coleção de objetos sejam salvos ou recuperados de um meio de armazenamento. A utilização da camada de Persistência faz com que o banco de dados seja mais confiável, pois isola as operações que têm acesso direto ao banco de dados. A principal proposta do Hibernate é prover aos desenvolvedores uma maneira de realizar o mapeamento de forma transparente, isto é, através da criação de classes, como se não houvesse persistência relacional. O Hibernate não provê apenas o simples mapeamento de uma classe para uma tabela, oferece inúmeras vantagens para o desenvolvimento de aplicações, poupando grande parte do tempo de programação de mapeamento Objeto/Relacional, sendo compatível com os principais bancos de dados do mercado. 3.3.2 Struts O Struts Framework é um projeto open source mantido pela Apache Software Foundation,que foi desenvolvido com o objetivo de fornecer um framework para facilitar o desenvolvimento de aplicações para a Web. Struts é uma implementação do design pattern MVC (Model-View-Controller) para aplicações Java com a Internet. O objetivo do pattern MVC é separar de maneira clara a camada de apresentação (View) da camada de negócio (Model). Esse framework foi construído em Java e consiste numa camada de controle flexível baseada nas tecnologias Java Servlets, Java Beans, Resource Bundles e XML. O Struts possui um conjunto de regras definidas para delimitar as camadas de interface, lógica de negócios e persistência, com o objetivo de integrá-las e permitir o desacoplamento entre a interface do usuário, lógica de negócios e camada de Persistência, deixando que o desenvolvedor tenha o controle do fluxo da lógica, ou seja, possua gerenciamento sobre problema. 3.3.3 Blabla Spring 4 SISTEMA O sistema aqui proposto busca prover uma solução de acompanhamento de programas assistenciais oferecidos pelas Assistências Sociais das Prefeituras. Por meio da geração de relatórios, os responsáveis podem assistir aos programas assistenciais, e tirar informações que os auxiliarão em decisões. Bem como o acompanhamento dos serviços prestados pelo órgão, ajudando como ferramenta de produtividade desta municipalidade. 4.1 Abrangência e sistemas relacionados O sistema contém todos os Cidadãos que participam de programas assistenciais, os que já participaram, e os que estão esperando para serem atendidos. Assim é possível ter dados estatísticos tanto do Cidadão quanto da produtividade desta e de outras municipalidades. Os cidadãos são cadastrados no sistema e fazem parte de um Núcleo Familiar, quando eles estiverem participando de algum Programa Assistencial. Cada Núcleo Familiar tem um responsável, o qual responde pelo Núcleo. Os cidadãos podem ser transferidos entre Núcleos Familiares, entretanto só poderá pertencer a um Núcleo concomitantemente. Os programas assistenciais podem ser de dois tipos: Econômicos e Financeiros. O Núcleo Familiar pode ser associado a Programas Assistenciais, sendo que poderá estar vinculado a mais de um Programa Assistencial ao mesmo tempo. Além do controle de cidadãos o sistema permite o controle dos Programas Assistenciais e dos Profissionais responsáveis pelo atendimento e acompanhamento. Com as informações podem ser avaliados os gastos com cada programa assim como o número de beneficiários, entre outras informações. O Sistema deve gerar vários relatórios, entre eles: Relatórios Básicos • Relatório/Listagem dos Usuários do Sistema; • Relatório/Listagem dos Perfis ; • Relatório/Listagem dos Núcleos Familiares; • Relatório/Listagem de Cidadãos; • Relatório/Listagem de Profissionais Sociais; • Relatório/Listagem de Bairros; • Relatório/Listagem de Eventos; • Relatório/Listagem de Programas Assistenciais; Eventos • Relatório/Listagem de Registro de Eventos X Núcleo Familiar (Separados por Eventos); • Relatório/Listagem de Registro de Eventos X Cidadão (Separados por Eventos); Relatórios de Benefícios • Relatório/Listagem de Programas Assistenciais de um Cidadão; • Relatório/Listagem de Programas Assistenciais de um Núcleo Familiar; • Relatório/Listagem de Programas Assistenciais de um Bairro; Beneficiários (Cidadão, Núcleo Familiar e Bairro) - Programas Assistenciais • Relatório/Listagem de Cidadãos Beneficiários de um Programa Assistencial (Para Programas Ativos); • Relatório/Listagem de Cidadãos Beneficiários Diretos de um Programa Assistencial (Para Programas Ativos); • Relatório/Listagem de Cidadãos Beneficiários Indiretos de um Programa Assistencial (Para Programas Ativos); • Relatório/Listagem de Núcleos Familiares de um Programa Assistencial (Para Programas Ativos); • Relatório/Listagem de Bairros de um Programa Assistencial (Para Programas Ativos); Benefícios dados pelos Programas Assistenciais: Programas Assistenciais, Bairro, Núcleo Familiar e Cidadão • Relatório/Listagem de Gastos dos Programas Assistenciais Financeiros X Período; • Relatório/Listagem de Benefícios dos Programas Assistenciais Econômicos X Período; • Relatório/Listagem de Gastos dos Programas Assistenciais Financeiros X Bairro X Núcleo Familiar X Período; • Relatório/Listagem de Benefícios Programas Assistenciais Econômicos X Bairro X Núcleo Familiar X Período; • Relatório/Listagem de Gastos dos Programas Assistenciais Financeiros X Núcleo Familiar X Período; • Relatório/Listagem de Benefícios dos Programas Assistenciais Econômicos X Núcleo Familiar X Período; • Relatório/Listagem de Gastos dos Programas Assistenciais Financeiros X Cidadão X Período; • Relatório/Listagem de Benefícios dos Programas Assistenciais Econômicos X Cidadão X Período. 4.2 Casos de Uso do Sistema 4.2.1 Cadastro Básico A figura abaixo demonstra os usuários do sistema e as interações que cada vai poder fazer no sistema de cadastro. Figura 1 – Diagrama de caso de uso – Cadastros Básicos 4.2.2 Cadastros Gerais (Administrador) Figura 2 – Diagrama de caso de uso – Cadastros Gerais 4.2.3 Funcionalidades do Sistema A figura abaixo demonstra a parte do sistema em que haverá as maiores interações por parte dos usuários, fugindo do escopo de cadastro. Figura 4 – Diagrama de caso de uso – Funcionalidades Gerais CONSIDERAÇÕES FINAIS Chamar esta parte de Conclusão ou Conclusões seria conclusivo demais . É mais aconselhável chamar de Considerações Finais. REFERÊNCIAS BIBLIOGRÁFICAS BECKER, Fernando, FARINA, Sérgio, SCHEID, Urbano. Apresentação de trabalhos escolares. Orientação para datilografia e digitação. Porto Alegre: Multilivro, 2000. ROCHA, José Antonio Meira da. Modelo de Trabalho de Conclusão de Curso (TCC). Modelo de documento digital do programa OpenOffice 2.0 disponível em <http://www.meiradarocha.jor.br/uploads/1021/196/modelo_de_projeto_de_TCC-2006-0612a.sxw>. Acesso em: 12 jun. 2006. ANEXOS