Prévia do material em texto
UNIVERSIDADE PAULISTA – UNIP EaD Projeto Integrado Multidisciplinar Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas VANESSA MAZZUCHIN DE SOUZA – 2002851 SISTEMA EM C PARA CADASTRAR PACIENTES DIAGNOSTICADOS COM COVID-19 SÃO PAULO 2020 VANESSA MAZZUCHIN DE SOUZA – 2002851 SISTEMA EM C PARA CADASTRAR PACIENTES DIAGNOSTICADOS COM COVID-19 Projeto Integrado Multidisciplinar Projeto Integrado Multidisciplinar para obtenção do título de tecnólogo em Análise e desenvolvimento de sistemas, apresentado à Universidade Paulista – Unip EaD. Orientador(a): Marcelo Henrique dos Santos. SÃO PAULO 2020 RESUMO No momento delicado que vivenciamos em decorrência da pandemia da Covid-19 ferramentas de tecnologia na área da saúde são, mais do que nunca, de extrema importância. Em apoio no combate ao corona vírus, o sistema de cadastro a pacientes contaminados desenvolvido em C++ tem como objetivo auxiliar a população a saber quais cidades e regiões tem maior índice de pessoas contaminadas pelo vírus. Além disso, articularemos qual o melhor método ágil para o desenvolvimento do sistema e o passo a passo que constituirá para desenvolvimento do sistema. Falaremos de cada integrante do Time e sua respectiva importância dentro do projeto. E por fim, explicaremos como sistema irá funcionar. Palavras-chave: Tecnologia. Linguagem C++. Desenvolvimento de sistemas. Engenharia de Software. ABSTRACT In the delicate moment we are experiencing as a result of the Covid-19 pandemic, technology tools in the health field are, more than ever, of extreme importance. In support of combating the corona virus, the system for registering infected patients developed in C ++ aims to help the population to know which cities and regions have the highest number of people infected by the virus. In addition, we will articulate what is the best agile method for the development of the system and the step by step that it will constitute for the development of the system. We will talk about each member of the Team and their respective importance within the project. Finally, we will explain how the system will work. Keywords: Technology. C ++ language. Systems development. Software engineering. SUMÁRIO INTRODUÇÃO ............................................................................................................ 5 1 LINGUAGEM C++ .................................................................................................... 6 2 MODELO INCREMENTAL ....................................................................................... 7 2.1 Vantagens do modelo incremental .................................................................... 7 3 SCRUM .................................................................................................................. 10 4 DIAGRAMA DE CASO DE USO ............................................................................ 15 4.1 Sistema ........................................................................................................... 15 4.2 Instalação e Execução .................................................................................... 15 CONCLUSÃO ............................................................................................................ 22 REFERÊNCIAS ......................................................................................................... 23 5 INTRODUÇÃO Este trabalho tem como objetivo o desenvolvimento de um sistema utilizando linguagem de programação em C ++ que será utilizado por hospitais para cadastrar pacientes que foram diagnosticados com a Covid-19, facilitando o acompanhamento e monitoramento dos pacientes que fazem parte do grupo de risco ou que tenham alguma comorbidade. Após definição do ciclo de vida de desenvolvimento do software, contendo processos, atividades e tarefas a serem desenvolvidas desde a definição de seus requisitos até seu término. O sistema irá fornecer ferramentas para a realização de cadastro dos pacientes, ao realizar login no sistema informando o usuário e sua senha e informando dados pessoais do paciente, como Cpf, nome, telefone, endereço, data de nascimento, e-mail, e data do diagnostico com resultado positivo. Essas informações serão salvas em arquivos podendo ser consultadas a qualquer momento. Após o cadastro do paciente, o sistema irá calcular a idade do mesmo e ver se se tem alguma comorbidade ou se faz parte do grupo de risco. Os dados serão enviados para a cental da Secretaria da Saúde para que tenham informações da quantidade de casos e indivíduos contaminados por cidades e região e assim, alertar aqueles que possam estar próximos de pessoas contamidadas. Tendo em vista a importância de avaliar a qualidade do software, todas as funções e etapas desenvolvidas serão testadas, com o objetivo de descobrir falhas no sistema, reportar erros e verificar se os mesmos foram corrigidos, garantindo uma qualidade maior na entrega do produto. 6 1 LINGUAGEM C++ A linguagem C++ foi desenvolvida por Bjarne Stroustrup na década de 80 com o objetivo de expandir os recursos da linguagem C. Para desenvolver a linguagem foram acrescentados elementos de outras linguagens. A linguagem C++ é uma linguagem de médio nível, multiplataforma e multi-paradigma, isto é, combina características de linguagem de alto e baixo nível. A linguagem de alto nível se aproxima mais com a linguagem humana e a linguagem de baixo nível está mais próxima da linguagem de máquina. São algumas características do C++: Possibilidade em programação de alto e baixo nível; É padronizado pela ISO; Compatilidade com a linguagem C; Possui paradigmas de programação funcional, genérica, orientada a objetos e imperativa; Pode ser utilizada sem a necessidade de um ambiente de desenvolvimento sofisticado; São algumas IDE´s para desenvolver em C++: Code::Blocks; CodeLite; C++ Builder; Dev C++; Eclipse; GNAT Programming Studio; Netbeans; Qt Creator; https://www.portalgsti.com.br/normas-iso/ https://fit.faccat.br/~guto/artigos/Artigo_Paradigmas_de_Programacao.pdf http://www.codeblocks.org/ http://codelite.org/ http://www.embarcadero.com/products/cbuilder/starter http://www.bloodshed.net/devcpp.html https://eclipse.org/downloads/ http://libre.adacore.com/tools/gps/ https://netbeans.org/features/cpp/index.html http://www.qt.io/ 7 2 MODELO INCREMENTAL Um processo de software se da pela estruturação de um conjunto de atividades que resultam em um produto software. As atividades necessárias são: especificação, projeto, implementação, validação, manutenção e evolução. Tendo esse processo bem definido, temos maior garantia de estabilidade, controle e organização durante e após o processo de desenvolvimento de software. Utilizaremos o modelo Incremental para desenvolvimento do nosso sistema. Este modelo trabalha através de incrementos, ou seja, pequenos pedaços de software entregues de cada vez. Conforme são feitas essa entregas, são feitas melhorias e sucessivos refinamentos, melhorando o software a cada iteração. O primeiro incremento é chamado de núcleo do produto e contém a implementação dos requisitos básicos feito pelo cliente para que o sistema possa funcionar como esperado. A cada versão criada são feitas melhorias no sistema ate que fique completo e adequado para então ser lançada a versão final do sistema. No modelo incremental as atividades de especificação, projeto, implementação e validação são intercaladas acontecendo em cada nova versão,com rápido feedback entre as atividades. Sendo assim, os clientes estabelecem quais são as prioridades do sistema a serem desenvolvidas por primeiro. Após estabelecidas, são criados os incrementos de entrega, onde cada estágio fornece um conjunto de funcionalidades do sistema. 2.1 Vantagens do modelo incremental Tem boa comunicação e participação entre desenvolvedores e usuários; Envolvimento entre usuário e cliente, tendo qualquer divergência serão rapidamente resolvidas, apresentação de resultados rápidos; O modelo incremental inclui o uso do software pelo usuário para que as mudanças sejam feitas de acordo com o mesmo; Melhor gerenciamento de riscos, porque você pode confirmar o resultado com o cliente depois de cada versão do sistema e sempre verificar se estão fazendo o que está de acordo com o plano ou não, e corrigi-los na próxima versão do software; 8 Esse modelo não afeta o lado financeiro, porque ele prove o "core" do software que o cliente precisa, o que vai ajudar o cliente a manter o negócio da mesma forma, sem alterações no lado financeiro; Feedback ao final de cada iteração permite que ações rápidas sejam tomadas em caso de mudanças no sistema; Alterações nos requisitos podem ser rapidamente incorporadas no processo de desenvolvimento, versões são geradas após cada interação; Flexibilidade e facilidade para gerenciar processos mais administráveis e fazer um software melhor com uma melhor estrutura, os testes são simples; Imagem 1 – Modelo Incremental Fonte – Internet 9 Imagem 2 – Desenvolvimento Incremental Fonte – internet Cria-se várias versões intermediarias sempre especificando, desenvolvendo e validando até que se tenha uma versão qualificada para a versão final do sistema. Temos a descrição inicial do nosso esboço, com base no esboço vamos especificar, desenvolver e válidar até que se tenha uma versão inicial, após teremos vários e vários feedbacks criando versões intermediarias, sempre com incrementos sobre essa versão inicial, ate que se tenha uma versão final. No desenvolvimento incremental conversamos com o cliente, analisamos a ideia dele, criamos um esboço inicial de sistema, cria-se o primeiro protótipo e com esse protótipo em mãos é apresentado ao cliente. Assim o cliente irá analisar e dar vários feedbacks se é oque ele quer ou se será necessário fazer mudanças e assim ir corrigindo e implementando o sistema ate que se tenha a versão final de acordo com o que o cliente deseja fazendo as correções necessárias. Quando o software é desenvolvido de forma incremental se torna mais barato e mais fácil de fazer mudanças durante o seu desenvolvimento justamente porque vamos fazendo os incrementos pouco a pouco. Cada incremento ou versão do sistema vai incorporar alguma funcionalidade necessária para o cliente. Os incrementos iniciais incluem funcionalidades mais importantes e urgentes. Com isso o cliente sempre pode avaliar o nosso sistema em um estágio relativamente inicial de desenvolvimento para ver se oferece todos os requisitos os quais ele solicitou. 10 3 SCRUM O product Owner é o ponto central com poderes de liderança sobre o produto, ele é o responsável por decidir quais recursos e funcionalidades serão construídos e em qual ordem que eles devem ser feitos, é responsabilidade dele manter e comunicar a todos aos outros participantes uma visão clara do que a equipe Scrum está tentando alcançar no projeto, é ele quem prioriza os itens do Product Backlog. O Scrum Master é o responsável por ajudar todos os envolvidos a entender e abraçar os valores, princípios e práticas do Scrum, tendo que conhecer muito bem o Scrum, executando a liderança do processo e ajudando a equipe desenvolver sua própria abordagem do Scrum. O Scrum Master também tem o papel de facilitador. Por fim o Dev Team, o Dev Team são as pessoas que de fato vão construir o projeto, no Scrum quem decide como fazer as coisas é o time, a ideia principal é que a equipe se auto organize para determinar a melhor maneira de realizar o trabalho para atingir a meta estabelecida pelo Product Owner. Imagem 3 – Práticas Scrum Fonte – internet A dinâmica do Scrum deve começar com a visão do produto, o Product Owner é responsável por prover essa visão que pode ser um business case ou um blueprint de projeto ou qualquer outro tipo de macroplanejamento, o importante é que descreva 11 oque ele quer e onde quer chegar. Em seguida deve-se desmembrar toda essa visão das funcionalidades que são necessárias. Essa lista de funcionalidades é chamada de Product Backlog. O Scrum Mater auxilia o Product Owner nessa tarefa, essas funcionalidades são ordenas por prioridade, sendo oque agrega mais valor ao negócio. É importante ter uma lista de requisitos priorizada. A retrospectiva tem como objetivo verificar necessidades de adaptação no processo, assim veremos oque foi feito de positivo e negativo, oque devemos melhorar e oque devemos parar de fazer. Imagem 4 – Product Backlog Fonte – Internet O projeto é planejado em Sprints, que são períodos de tempo onde alguns itens selecionados do Product Backlog serão construídos e entregues. Para planejar os Sprints, devemos obedecer os eventos de duração fixa também chamados de time- boxed, o ideal é que todos os eventos tenham uma duração fixa e que tenham a mesma duração, entre duas e quatro semanas. 12 Antes de cada Sprint começar é feita uma reunião de planejamento dos Sprints onde é criado o Backlog da Sprint, com base na capacidade e velocidade da equipe Scrum é definido quantas funcionalidades podem ser completamente construídas no tempo do Sprint. Primeiro o Backlog priorizado é selecionado as funcionalidades que serão feitas durante o Sprint, após o término do Sprint é esperado que um incremento do sistema seja entregue funcionando. Seguindo a ordem de importância definida pelo Product Owner, conforme os incrementos de produtos vão sendo entregues o Product Owner pode verificar necessidades de mudanças, essas mudanças devem ser inseridas no Backlog com sua devida prioridade. Esse processo então, será repetido até que todo Backlog seja construído e o produto final esteja pronto contemplando todas as mudanças solicitadas. Imagem 5 – Planejamento em Sprints Fonte – Internet Todos os dias é feita uma reunião de 15 minutos conhecida como o Dayli Scrum onde se fala sobre o que os membros do time fizeram ontem que ajudou o time a atingir a meta do Sprint, fala-se do que será feito hoje para ajudar o time a atingir a meta do Sprint, se existe algum impedimento que não permita o time atingir a meta do Sprint, e assim todos conseguem visualizar como está progredindo o trabalho do Sprint. 13 Imagem 6 – Processo Scrum Fonte – Internet Vamos utilizar o Kanban Board para promover a gestão a vista e a transparência do projeto. A ideia é que se possa visualizar o fluxo de trabalho que está sendo feito. Esse quadro pode ser feito usando softwares próprios ou até mesmo colando post it na parede ou em uma lousa representando cada uma das funcionalidades do Backlog. Imagem 7 – Kanban Board Fonte – internet 14 No final do Sprint existe duas atividades adicionais que são fundamentais, uma delas é chamada de Sprint Review com objetivo de validar e adaptar o produto que está sendo construído, verificando se oque está sendo feito está de acordo com o esperado, é a apresentação do que foi feito no Sprint podendo surgir mudanças e assim é feito a atualização do Product Backlog. 15 4 DIAGRAMA DE CASO DE USO O diagrama de caso de uso a seguir ilustra os requisitos funcionais do sistema. O Software Astah foi utilizado para elaboração deste diagrama, com o objetivo de realizar o levantamento dos requisitosdo projeto. Imagem 8 – Diagrama de caso de uso Fonte - O Autor 4.1 Sistema Nesta etapa, será descrito o manual de instalação e execução do sistema, o passo a passo de como utilizar as funcionalidades do sistema, assim como a funcionalidade de Build & Run, utilizada pelo CodeBlocks. 4.2 Instalação e Execução Para instalar e executar o projeto, deve-se extrair o arquivo Sistema.rar, para que o diretório Sistema seja criado. 16 Imagem 9 – Extração de arquivo Zip Fonte - O Autor Feito isso, será possível visualizar dois arquivos main (C Source file) e main.exe (Aplicativo). Para executar o sistema, basta clicar duas vezes sobre o main.exe, mas caso seja necessário abrir o sistema em uma IDE de desenvolvimento, será necessário utilizar, por exemplo, CodeBlocks, e logo em seguida abrir o arquivo main (C Source File). Imagem 10 – Arquivos do Sistema Fonte - O Autor A imagem a seguir ilustra a tela inicial do sistema ao executar o arquivo main.exe. As opções iniciais são: 1 – Login profissional de Saude. 0 – Sair. O Projeto suporta Login de vários usuários, porém, para demostrar a funcionalidade de Login e acesso as funcionalidades, um usuário padrão foi criado no arquivo usuarios.txt. 17 Imagem 11 – Tela inicial do Sistema Fonte - O Autor Para ter acesso as funcionalidades do sistema, o usuário deve realizar a autenticação. Sendo assim, deve-se informar a opção 1 e pressionar Enter. Imagem 12 – Login do usuário padrão Fonte - O Autor Para efetuar login, deve-se utilizar o usuário padrão do sistema (Username: vanessa, Password: 123). Após efetuar login com sucesso, deve-se pressionar Enter. Imagem 13 – Login Efetuado com sucesso Fonte - O Autor 18 Uma vez que o login foi efetuado com sucesso, o menu a seguir será exibido. Imagem 14 – Menu Área do Profissional Fonte - O Autor Digite 1 para cadastrar novo paciente. Imagem 15 – Cadastro de novo Paciente Fonte - O Autor 19 Ao voltar para o menu principal, digite 2 para listar todos os pacientes. Imagem 16 – Listagem de Pacientes Fonte - O Autor Cadastro de novo paciente do grupo de risco Imagem 17 – Cadastro de Paciente Grupo de Risco Fonte - O Autor Ao retornar ao menu principal, digite opção 3 para listar CEP e idade de pacientes do grupo de risco. 20 Imagem 18 – Listagem de Dados de Pacientes do Grupo de Risco Fonte - O Autor Ao retornar ao menu principal, Digite 0 e pressione Enter para sair da área do profissional de saúde. Imagem 19 – Menu Principal Fonte - O Autor Para finalizar o sistema, Digite 0 e pressione Enter. Imagem 20 – Menu Principal Fonte - O Autor 21 Para executar por meio do CodeBlocks, deve se clicar em Build & Run, e feito isso, caso não ocorra nenhuma mudança de código, pode-se executar o programa apenas clicando em Run. Imagem 21 – Build & Run CodeBlocks Fonte - O Autor 22 CONCLUSÃO O uso da tecnologia para o acompanhamento da propagação da Covid-19 se torna de extrema importância para garantir que instituições de saúde saibam quais as melhores estratégias serão definidas para atuar de forma adequada diante da pandemia do Covid-19. Após levantar todas as necessidades apresentadas do projeto, foram identificadas e avaliadas as alternativas que melhor atendem aos requisitos solicitados. Foi utilizado modelo de desenvolvimento incremental junto com a metodologia Scrum por se encaixar nas características deste projeto. O sistema de cadastro de pacientes contaminados e que fazem parte do grupo de risco foi construído por partes e estas partes testadas. Após os testes de funcionalidades, foram feitos os incrementos e este ciclo foi se repetindo ate a obtenção do produto final. Conclui-se que, a tecnologia tem sido fundamental no cotidiano de todo mundo, há alguns anos. Mas nessa situação em especial, a tecnologia se mostra ainda mais essencial, representando papel fundamental nesse momento de superação. 23 REFERÊNCIAS ARTIA. Ciclo de vida de um projeto. Disponível em: <https://artia.com/blog/ciclo-de- vida-de-um-projeto/> Acesso em: 13 Out. 2020. BECODE: Linguagens de Alto Nível vs. Baixo Nível. Disponível em: <https://becode.com.br/linguagens-alto-nivel-x-baixo-nivel/> Acesso em: 12 Out. 2020. CRONAP. Desenvolvimento iterativo e incremental o que é e como funciona. Disponível em: <https://blog.cronapp.io/desenvolvimento-iterativo-e-incremental/> Acesso em: 11 Out. 2020> Acesso em: 12 Out. 2020. INFOESCOLA. C++. Disponível em: <https://www.infoescola.com/informatica/cpp/ > Acesso em: 13 Out. 2020. MACORATTI. O ciclo de vida do desenvolvimento de Software. Disponível em: <http://www.macoratti.net/17/09/net_slcd1.htm> Acesso em: 10 Out. 2020. MEDIUM. O Modelo Incremental. Disponível em: <https://medium.com/contexto- delimitado/o-modelo-incremental-b41fc06cac04> Acesso em: 10 Out. 2020. PORTALGSTI. O que é C++. Disponível em: <https://www.portalgsti.com.br/cplusplus/sobre/> Acesso em: 11 Out. 2020. PASTOREESOUZA. Scrum: A metodologia ágil explicada em forma definitiva. Disponível em: <https://pastoreesouza.com.br/index.php/scrum-a-metodologia-agil- explicada-de-forma-definitiva>. Acesos em: 11 Out. 2020. TREASY. Tudo sobre Metodologia Scrum: o que é e como essa ferramenta pode te ajudar a poupar tempo e gerir melhor seus projetos. Disponível em: <https://www.treasy.com.br/blog/scrum/> Acesso em: 12 Out. 2020. https://artia.com/blog/ciclo-de-vida-de-um-projeto/ https://artia.com/blog/ciclo-de-vida-de-um-projeto/ https://becode.com.br/linguagens-alto-nivel-x-baixo-nivel/ https://blog.cronapp.io/desenvolvimento-iterativo-e-incremental/ https://www.infoescola.com/informatica/cpp/ http://www.macoratti.net/17/09/net_slcd1.htm https://medium.com/contexto-delimitado/o-modelo-incremental-b41fc06cac04 https://medium.com/contexto-delimitado/o-modelo-incremental-b41fc06cac04 https://pastoreesouza.com.br/index.php/scrum-a-metodologia-agil-explicada-de-forma-definitiva https://pastoreesouza.com.br/index.php/scrum-a-metodologia-agil-explicada-de-forma-definitiva https://www.treasy.com.br/blog/scrum/