Prévia do material em texto
UNIP INTERATIVA Projeto Integrado Multidisciplinar Cursos Superiores de Tecnologia PIM IV – SOFTWARE PARA GERENCIMANETO DE NOTAS EM C São Paulo 2016 UNIP INTERATIVA Projeto Integrado Multidisciplinar Cursos Superiores de Tecnologia PIM IV – SOFTWARE PARA GERENCIMANETO DE NOTAS EM C Curso: Tecnologia em Análise e Desenvolvimento de Sistemas Semestre: 2º/2016 São Paulo 2016 RESUMO O presente Projeto Integrado Multidisciplinar, proposto pela universidade UNIP Interativa, visa aplicar o conhecimento adquirido no semestre pelas aulas de Engenharia de Software I e Linguagem e Técnicas de Programação. Este projeto propõe o desenvolvimento de um sistema em linguagem C para cadastro e gerenciamento de notas de um professor do ensino fundamental. Estaremos apresentando de forma objetiva todos os requisitos necessários para o desenvolvimento do sistema, iniciando com um breve estudo teórico sobre engenharia de software e a linguagem de programação utilizada no sistema. Neste projeto também será apresentado uma análise de requisitos para o sistema, apontando os funcionais e não-funcionais da aplicação, e suas diferenças. Além das apresentações dos fluxogramas de dados e as atividades desenvolvidas para a elaboração da aplicação, explicando suas funções e código fonte do sistema. Palavras-chave: Tecnologia, Sistemas, Linguagem C, Programação ABSTRACT This Multidisciplinary Integrated Project, proposed by the UNIP Interativa University, aims to apply the acquired knowledge through classes of Software Engineering I and Language and Programming Techniques. This project proposes the deveolpment of a system in C language, for registering and managing the grades of a primary school teacher. We'll be presenting in a objective way all the necessary requirements for the development of the system, starting with a brief theoretical study on software engenerring and the programming languague used in the system. In this project will also be presented the requirements analysis forthe system, pointing out the functional and non-functional of the application, and their differences. In addition to the presentations of the flowcharts and the activides develeoped for the elaboration of the system, explaning it's functions and the source coude of the system. Key-words: Technology, Systems, C language, Programming SUMÁRIO INTRODUÇÃO Este projeto tem como objetivo o desenvolvimento de um sistema para auxiliar os professores na elaboração de relatórios de notas de suas classes, de forma rápida e com uma interface de fácil entendimento, eliminando a necessidade de cálculos matemáticos e preenchimentos de papeis, reduzindo o tempo gasto na atividade e minimizando a probabilidade de erros. Para o desenvolvimento do sistema utilizaremos a linguagem C e a ferramenta de desenvolvimento DEV C++. Neste relatório apresentaremos todas as funções e módulos disponíveis no sistema, com o objetivo de proporcionar uma visão abrangente dos recursos disponíveis na aplicação e facilitar o entendimento aos interessados. Também iremos apresentar o modelo adotado de ciclo de vida para o desenvolvimento do sistema, apresentando a justificativa para tal escolha, o cronograma de atividades adotado para a elaboração e o fluxograma do sistema. Por fim ainda apresentaremos a estrutura lógica do código com a explicação de cada função do sistema. NECESSIDADES DO CLIENTE O cliente, um professor do Ensino Fundamental, necessita de um sistema para cadastro e gerenciamento de notas dos alunos de suas classes. O sistema deve ser capaz de registrar os alunos, contendo o nome e o número de sua matricula, cadastrar as notas de quatro provas e uma prova substitutiva, onde cada prova tem um peso especifico, e ao final calcular a média do aluno e verificar se o aluno foi aprovado ou reprovado, também é de necessidade do cliente que o sistema possa imprimir em tela o relatório completo da classe, com o nome de todos os alunos e suas notas e média, além da média geral da classe. REFERENCIAL TEÓRICO Linguagem de programação C Criada em 1972, por Dennis Ritchie, C é uma das linguagens de programação mais populares e tem influenciado muitas outras linguagens de programação, no final da década de 70, a linguagem C começou a substituir a linguagem BASIC como a linguagem de programação mais utilizada. C é uma linguagem imperativa e procedural com pontos primários em fornecer um desenvolvimento com acesso de baixo nível à memória e baixos requerimentos de hardware, desenvolvido também para ser utilizado como linguagem de alto nível com maior reaproveitando de código. É uma linguagem extremamente simples, com diversos recursos que dão maior flexibilidade a programação, como a utilização de ponteiros e estrutura de variáveis (structs), que permitem que dados relacionados sejam combinados e manipulados como um todo, por ser reconhecida como linguagem estruturada permite muitas possibilidades de programação, suportando construções de diversos loops (laços), e a criação de funções, que são blocos de construção onde pode possuir diversos parâmetros e atividades que serão executadas no programa. Engenharia de software A Engenharia de Software se concentra nos aspectos práticos da produção de um sistema de software. Os fundamentos científicos para a engenharia de software envolvem o uso de modelos abstratos e precisos que permitem ao engenheiro especificar, projetar, implementar e manter sistemas de software, avaliando e garantindo suas qualidades. Além disso, a engenharia de software deve oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento de um sistema computacional. O termo engenharia de software começou a ser utilizado oficialmente em 1968 na NATO Science Committee. Modelos de processos de Software A engenharia de software tem produzido inúmeros modelos de ciclo de vida, incluindo os modelos de cascata, espiral e desenvolvimento rápido de aplicações. Antes do modelo de cascata ser proposto em 1970, não havia concordância em termos dos métodos a levar a cabo no desenvolvimento de software. Desde então ao longo dos anos muitos modelos têm sido propostos refletindo assim a grande variedade de interpretações e caminhos que podem ser tomados no desenvolvimento de software. Modelos de processos de software: Desenvolvimento iterativo e incremental - desenvolvimento é iniciado com um subconjunto simples de Requisitos de Software e iterativamente alcança evoluções subsequentes das versões até o sistema todo estar implementado Evolucional ou Prototipação - especificação, projeto e desenvolvimento de protótipos. V-Model - Parecido com o modelo cascata, mas com uma organização melhor, que permite que se compare com outros modelos mais modernos. Principal ponto é que para cada etapa de um lado tem uma verificação do outro, criando um gráfico no formato da letra V com 2 cascatas. Espiral - O modelo espiral incorpora-os de uma forma iterativa permitindo que as ideias e o progresso sejam verificados e avaliados constantemente. Cada iteração à volta da espiral pode ser baseada num modelo diferente e pode ter diferentes atividades. No modelo espiral para engenharia de requisitos mostra-se que as diferentes atividades são repetidas até uma decisão ser tomada e o documento de especificação de requisitos ser aceito. Sequencial ou Cascata - com fases distintas de especificação, projeto e desenvolvimento. Este modelo foi o primeiro modelo a ser conhecido em engenharia de software e está na base de muitos ciclos de vida utilizados nos dias de hoje. Este consiste basicamente num modelo linear em que cada passo deve ser completado antes que o próximo passo possa ser iniciado. Figura 1 – Modelo Cascata Fonte: Adaptado de SOMMERLLIVE I, 2007. O Nosso projeto é baseado neste modelo, que é um modelo bem definido, no qualos processos são executados de forma sequencial. Os principais estágios do modelo cascata retratam as atividades de desenvolvimento fundamentais, conforme é esquematizado na figura a cima. ANALISE DO SISTEMA Definição de Requisitos A definição de requisitos de software envolve as atividades de determinar qual o objetivo do software e suas restrições. O objetivo da definição dos requisitos é especificar o que o sistema deverá fazer e determinar os critérios de validação que serão utilizados para que se possa avaliar se o sistema cumpre o que foi definido. Tradicionalmente, os requisitos de um software são separados em requisitos funcionais e não-funcionais, na Engenharia de Software é propagada a definição de que os requisitos funcionais definem o que o sistema fará e os requisitos não-funcionais definem como o sistema fará. Requisitos não-funcionais Os requisitos prioritários, não-funcionais, considerados para o projeto de desenvolvimento do sistema foram, a usabilidade, disponibilidade, organização e legibilidade. RNF01 – Usabilidade: Para garantir a usabilidade a interface do sistema possui telas de fácil entendimento e aprendizagem, maximizando a produtividade e minimizando a taxa de erros. RNF02 – Disponibilidade: Para garantir a disponibilidade o sistema possui todo seu modulo baseado em aplicações off-line, podendo ser utilizado onde e quando for necessário. RNF03 – Organização e Legibilidade: Para garantir a organização e legibilidade do sistema, o código é organizado e comentado de forma a qualquer desenvolvedor com conhecimento da linguagem de programação possa entender o código-fonte. Requisitos funcionais Os requisitos funcionais para o desenvolvimento do sistema são: cadastro de alunos, cadastro de notas, cálculo de média, e impressão em tela de relatórios. RF01 – Cadastro de Alunos: O sistema devera possuir um módulo para cadastro dos alunos, contendo o nome do aluno e seu número de matricula. RF02 – Cadastro de Notas: Armazenar a nota de quatro provas (P1, P2, P3 e P4) e a nota de uma prova substitutiva (PS) que deve substituir o valor menor entre as quatro primeiras notas. RF03 – Calculo de média: O sistema devera calcular a média de cada aluno e exibir a informação se o aluno foi aprovado. Cada prova possui um peso especifico (P1 peso 1, P2 peso 2, P3 peso 3 e P4 peso 4), e a nota da PS deve substituir a menor nota e utilizar seu peso especifico. RF04 – Impressão em tela de relatórios: Exibir em tela um relatório com a nota de todos os alunos e suas médias e a média geral da classe. Lista de Eventos A lista de eventos é a especificação das atividades (processos) essenciais que o sistema executado. Essas atividades são iniciadas por estímulos, executando um processamento e gerando uma resposta. Esses estímulos podem ser de fluxo de dados (f.d), que é aquele em que o estimulo é enviado por uma entidade externa, fluxo de controle (f.c.), que o estimulo é enviado por um “gatilho de controle” ou fluxo temporal (f.t.), onde o estimulo é enviado após haver passado um determinado intervalo de tempo ou ser atingida determinada hora. Abaixo temos uma tabela com a lista de eventos do sistema. NR EVENTO TIPO ESTIMULO RESP. EXTERNA 1 Cadastrar aluno (f.d.) inserir(); Novo cadastro ou Voltar 2 Calcular a média do aluno (f.c.) calcula_media(); Aluno Aprovado ou Aluno Reprovado 3 Exibir o relatório da classe (f.d) mostrar(); Relatório da classe Diagrama de contexto O diagrama de contexto representa o sistema por um único processo e suas interligações com as entidades externas, mostrando apenas as interfaces do sistema com o ambiente em que ele está inserido. Para isso devemos identificar as entidades externas e o fluxo de dados entre essas fontes e o sistema, para nossa aplicação temos: Sistema: Software de Gerenciamento de Notas Entidade externa: Professor. Fluxo de dados: Professor –> Sistema - Cadastra Aluno Sistema –> Professor - Calcula a média do Aluno Sistema –> Professor - Exibe relatório da Classe. Figura 2 – Diagrama de contexto Fonte: O autor, 2016. CRONOGRAMA ATIVIDADE OBJETIVO TEMPO Introdução ao PIM Entender o projeto e elaborar o referencial teórico. 2 Dias Briefing com Cliente Conhecer as necessidades do cliente 1 Dia Definição do Modelo de Ciclo de Vida Escolher um modelo de ciclo de vida 1 Dias Análise do Sistema Levantar os requisitos do sistema 5 Dias Desenvolvimento do Software Elaborar o código da aplicação 10 Dias Testes e Validação Validar o código e testar a aplicação. 2 Dias Revisão e Entrega Revisar e entregar a documentação final. 1 Dia FLUXOGRAMAS DE DADOS Figura 3 – Fluxograma da main() Fonte: O autor, 2016. Figura 4 – Fluxograma para mostrar relatório. Fonte: O autor, 2016. Figura 5 – Fluxograma de cálculo de média Fonte: O autor, 2016. Figura 6 – Fluxograma de cadastro Fonte: O autor, 2016. RELATORIO DO PROGRAMA Neste item do trabalho iremos abordar todas as etapas do programa desenvolvido de acordo com o solicitado assim como o código fonte do programa. Todo o código do programa foi comentado para melhor entendimento de qualquer desenvolvedor que queira visualizar o passo a passo das linhas de comando do software. Strings do programa Como mostrado acima às strings principais utilizadas são: void inserir(); que é a string utilizada para inserir as informações como Nome do aluno, Matricula e notas e gravá-las no sistema. void mostrar(); responsável por mostrar em tela as informações gravadas no sistema. void calcula_media(); String que faz o calculo da média do aluno e também a média total da sala. Também inserimos uma função chamada setlocale (LC_ALL, “Portuguese”); criada para uso da acentuação da língua portuguesa. Acima mostramos os código e funções utilizadas para criação da tela inicial do software, bem como as “case” referente a cada uma das opções em tela e também o inicio da função de cálculo da média do aluno void calcula_media(void). Nesta imagem podemos verificar os códigos que formam a tela que será exibida caso o aluno não atinja o mínimo da media, que neste caso é 5. O aluno atingindo média 5 ou mais mostrará “ALUNO APROVADO!”, demonstrada pela “if(vetor[cadastro]. Media >=5)”; e menos que 5 “ALUNO REPROVADO”. Os códigos acima mostram a função de inserir cadastro, que é a inserção do cadastro do aluno no sistema, isso sendo o número de matricula do aluno e o seu nome. Acima temos os códigos do programa referente ao cadastro das notas para o aluno, foi utilizado a função while para verificar se a nota cadastrada está entre 0 e 10. Se caso seja informada uma nota diferente, por exemplo 11, uma mensagem será exibida em tela informando o usuário para que informe apenas valores entre 0 e 10. As duas imagens acima mostram o final do programa, exibindo os códigos utilizados para mostrar em tela o menu de opções “1 – NOVO CADASTRO e “2 – VOLTAR AO MENU”. Testes do Programa Figura 7 – Tela Inicial do Programa Fonte: O autor, 2016. Nesta tela temos: Nome do Programa (SISTEMA DE GERENCIAMENTO DE NOTAS) As Opções: 1 – Cadastro de Alunos: onde o professor irá seleciona-lo digitando o numero “1”; 2 – Imprimir Relatório: onde o professor seleciona, caso queira ver em tela o relatório dos dados gravados para isso, deve digitar o numero “2”. 0 – Sair: sai do programa digitando o numero “0”. Cadastrando um aluno Após selecionar a função cadastro de alunos o programa exibira a seguinte tela: Figura 8 – Cadastro de alunos - Matricula Fonte: O autor, 2016. Podemos perceber que o mesmo solicita primeiro a matricula do aluno, este numero será atrelado à próxima informação solicitada. Figura 9 – Cadastro de alunos - Nome Fonte: O autor, 2016. Entre com o nome do aluno,este campo solicita ao usuário o nome para vincular a matricula. Após a informação ser digitada passa-se para próxima etapa pressionando a tecla enter. Figura 10 – Cadastro de alunos - Notas Fonte: O autor, 2016. Onde começará a solicitar as notas do aluno em cada prova, p1, p2, p3, p4 e prova substitutiva se caso o aluno realizou tal prova. Como mostra abaixo: Figura 11 – Cadastro de alunos – Cálculo de média e resultado de aprovação. Fonte: O autor, 2016. Após a inserção dos dados da prova, o software faz o cálculo da média e imprime em tela se o aluno foi aprovado ou reprovado. Depois de já inseridas as informações de matricula, nome e notas da prova, pressionando qualquer tecla para avançar para próxima tela: Figura 12 – Cadastro de alunos - Notas Fonte: O autor, 2016 Seleciona um 1-NOVO CADASTRO, onde o usuário pode continuar a gravar novos cadastros ou voltar ao menu principal onde o usuário poderá selecionar a opção 2- imprimir relatório que são as informações já gravadas no sistema além da média do aluno e também a média da sala bem como o número de alunos aprovados ou reprovados, como mostra na tela abaixo. Figura 13 – Cadastro de alunos – Notas Fonte: O autor, 2016 CONCLUSÃO Durante o desenvolvimento do projeto, adquirimos inúmeros conhecimentos sobre engenharia de software e linguagem de programação, explorando diversos modelos de processos de software e seus requisitos, além dos conhecimentos de transição teórico-prática, com a criação do software desenvolvido, que satisfaz as necessidades do cliente para que ele utilize o sistema de forma fácil e pratica evitando assim preenchimentos de papeis, reduzindo o tempo de mão de obra e minimizando a probabilidade de erros no exercício de suas atividades. REFERÊNCIAS ALVES, William Pereira. C++ Builder 6: desenvolva aplicações para Windows. 2. ed. São Paulo: Érica, 2007 MIZRAHI, Viviane Victorine. Treinamento em Linguagem C++. 2. ed. São Paulo: Pearson Education, 2005. MANZANO, José Augusto N. G.. Programação de Computadores com C++: guia rápido de orientação e desenvolvimento. São Paulo: Érica, 2010 PRESSMAN, Roger S.. Engenharia de Software: uma abordagem profissional. 7 ed. AMGH, 2011.