Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIP EAD Projeto Integrado Multidisciplinar IV CST em Análise e Desenvolvimento de Sistemas PROJETO: SISTEMA EM C PARA CADASTRAR PACIENTES DIAGNOSTICADOS COM COVID-19 Brasil 2021 Nome: ALINE SANTOS VIEIRA E SILVA RA: 0510315 Nome: DENIS ALVES DA SILVA JUNIOR RA: 2114141 Nome: DOUGLAS FERNANDO FRANCO E SILVA RA: 0510140 Nome: FLAVIO TAZASI FUKUDA RA: 2122707 Nome: RODRIGO CÂNDIDO DE AGUIAR SILVA RA: 2120109 Curso: ANÁLISE EM DESENVOLVIMENTO DE SISTEMAS Semestre: 4º BIMESTRE UNIP EAD Projeto Integrado Multidisciplinar IV CST em Análise e Desenvolvimento de Sistemas PROJETO: SISTEMA EM C PARA CADASTRAR PACIENTES DIAGNOSTICADOS COM COVID-19 Projeto Integrado Multidisciplinar para a obtenção do título de graduação em Análise e Desenvolvimento de Sistemas, apresentado à Universidade Paulista - UNIP EaD. Brasil 2021 Nome: ALINE SANTOS VIEIRA E SILVA RA: 0510315 Nome: DENIS ALVES DA SILVA JUNIOR RA: 2114141 Nome: DOUGLAS FERNANDO FRANCO E SILVA RA: 0510140 Nome: FLAVIO TAZASI FUKUDA RA: 2122707 Nome: RODRIGO CÂNDIDO DE AGUIAR SILVA RA: 2120109 RESUMO O objetivo desse projeto é desenvolver um sistema em Linguagem C, a fim de que ele seja utilizado pelos hospitais, a fim de cadastrar os pacientes que forem diagnosticados com covid-19. A Covid-19 é uma infecção respiratória aguda causada pelo coronavírus SARS-CoV-2, potencialmente grave, de elevada transmissibilidade e de distribuição global. Devido a essa pandemia generalizada causada pela Covid- 19, houve uma demanda muito grande por inovação tecnológica voltada para a área médica e várias empresas começaram a investir no desenvolvimento de softwares de saúde. A idéia principal é que ao se cadastrar e rastrear as pessoas contaminadas com Covid-19, as autoridades da área pública da Saúde sejam capazes de identificar tais indivíduos e, posteriormente, alertar a todos que podem estar próximos de alguém com covid-19, com o intuito de se evitar que a pandemia cresça. Os profissionais da saúde irão realizar o cadastro dos pacientes que receberem o diagnóstico positivo da doença, incluindo alguma comorbidade, como diabetes, obesidade, hipertensão, tuberculose, entre outros. Após a realização do cadastro, o sistema verificará a idade do paciente, se o mesmo possui alguma comorbidade e se pertence ao grupo de risco (maiores de 65 anos). Em caso afirmativo, esse sistema salvará essa informação para que possa ser enviada para a central da Secretaria da Saúde da cidade. Palavras-Chave: Linguagem C; covid-19; saúde; paciente. ABSTRACT The objective of this project is to develop a system in Language C, so that it can be used by hospitals, in order to register patients who are diagnosed with covid-19. Covid-19 is a potentially serious acute respiratory infection caused by the SARS-CoV- 2 coronavirus, with high transmissibility and global distribution. Due to this widespread pandemic caused by Covid-19, there was a very high demand for technological innovation aimed at the medical field and several companies began to invest in the development of healthcare software. The main idea is that by registering and tracking people infected with Covid-19, public health authorities are able to identify such individuals and, subsequently, alert everyone that they may be close to someone with Covid-19, with the aim of preventing the pandemic from growing. Health professionals will carry out the registration of patients who receive a positive diagnosis of the disease, including some comorbidity, such as diabetes, obesity, hypertension, tuberculosis, among others. After completing the registration, the system will check the patient's age, if he/she has any comorbidity and if he/she belongs to the risk group (over 65 years of age). If so, this system will save this information so that it can be sent to the central office of the city's Health Department. Key-words: C language; Covid-19; health; patient. SUMÁRIO 1. INTRODUÇÃO ........................................................................................................ 7 2. O QUE É UM SOFTWARE ..................................................................................... 8 3. ENGENHARIA DE SOFTWARE – CONCEITO E DEFINIÇÃO .............................. 8 4. PRINCIPAIS TIPOS DE SISTEMAS DE INFORMAÇÃO ....................................... 9 4.1. Os 6 tipos de sistemas de informação................................................................ 10 5. PROCESSO DE SOFTWARE ............................................................................... 10 5.1. O modelo de processo de software .................................................................... 11 5.1.1. Modelo em Cascata......................................................................................... 11 5.1.2. Prototipagem ................................................................................................... 12 5.1.3. Desenvolvimento Incremental ......................................................................... 12 6. MODELO ÁGIL ..................................................................................................... 13 6.1. Métodos de teste ágeis ...................................................................................... 15 6.1.1. Método SCRUM .............................................................................................. 15 6.2. Quando usar o modelo Agile? ............................................................................ 16 6.3. Vantagem (Prós) do Método Agile ..................................................................... 16 6.4. Desvantagens (Contras) do modelo Agile .......................................................... 16 7. IMPORTÂNCIA DA COMUNICAÇÃO PARA A ENGENHARIA DE SOFTWARE17 7.1. Principais motivos pelos quais a comunicação eficaz é importante ................... 17 7.2. Dicas importantes para se tornar um melhor comunicador em engenharia de software ..................................................................................................................... 18 7.3. O que é Walkthrough e quais seus objetivos ..................................................... 18 7.4. O que é Joint Application Development/Design (JAD) ....................................... 18 7.4.1. Quando usar o JAD ......................................................................................... 18 8. GERENCIAMENTO DO ESCOPO DO PROJETO ............................................... 19 8.1. Work Breakdown Structure (WBS) ..................................................................... 19 8.2. Cronograma ....................................................................................................... 21 9. LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO .............................................. 22 9.1. Algoritmo ............................................................................................................ 22 9.2. Fluxograma ........................................................................................................ 22 9.3. Tipos de linguagem de programação ................................................................. 23 9.4. A Linguagem C ................................................................................................... 24 10. O PROJETO – CADASTRO DE PACIENTES COM COVID-19 ......................... 25 10.1. Code :: Blocks .................................................................................................. 26 10.2. Coleta de Dados ............................................................................................... 27 10.3. Cadastro de pacientes......................................................................................27 10.4. Arquivo de gravação......................................................................................... 28 11. MANUAL DO USUÁRIO ..................................................................................... 29 11.1. Acessar o aplicativo ......................................................................................... 29 11.2. Fazer Login ...................................................................................................... 29 11.3. Cadastrar Paciente ........................................................................................... 29 11.4. Gerar Arquivo ................................................................................................... 30 CONCLUSÃO ........................................................................................................... 31 REFERÊNCIAS ......................................................................................................... 32 1. INTRODUÇÃO Em função da necessidade cada vez maior do desenvolvimento de softwares que permitam a área da Saúde combater principalmente o vírus SARS-CoV-2 causador da doença Covid-19, foi criado esse projeto com o intuito de se fazer a gestão de pacientes que apresentem um diagnóstico positivo da doença. Esse projeto teve por finalidade desenvolver um sistema com base na Linguagem C, utilizando-se o ambiente Codeblocks, a fim de ser empregado pelos hospitais para cadastrar os pacientes diagnosticados com o vírus SARS-CoV-2 que, porventura, necessitem de um acompanhamento e monitoramento específico. Através desse sistema, os profissionais da saúde inicialmente realizarão o acesso ao sistema através de login/senha e, depois informar os dados pessoais do paciente, como nome, CPF, telefone, endereço (rua, número, bairro, cidade, estado e CEP), data de nascimento, e-mail, data do diagnóstico e informar se o paciente ainda possui alguma comorbidade (diabetes, obesidade, hipertensão, tuberculose, outros). Tais dados são armazenados em um Arquivo, onde podem ser consultados a qualquer momento. Feito o cadastro, o sistema verifica se o paciente possui alguma comorbidade citada anteriormente e se pertence ao grupo de risco (maiores de 65 anos). Nesse caso, o sistema armazena as informações em um arquivo de texto, com o CEP e a idade do paciente e envia para a central da Secretaria da Saúde da cidade. 8 2. O QUE É UM SOFTWARE Software é um conjunto de instruções, dados ou programas usados para operar computadores e executar tarefas específicas. Trata-se de um termo genérico usado para se referir a aplicativos, scripts e programas executados em um determinado dispositivo. Ele pode ser considerado a parte variável de um computador, enquanto o hardware é a parte invariável. Existem duas categorias principais de software: software de aplicativo e software de sistema. Um aplicativo é um tipo de software que atende a uma necessidade específica ou executa tarefas. Já o software do sistema é algo projetado para executar o hardware de um computador e que fornece uma plataforma para a execução de aplicativos. Alguns outros tipos de software incluem: software de programação, o qual fornece as ferramentas de programação de que os desenvolvedores de software precisam; middleware, que é o que fica entre o software do sistema e os aplicativos e por fim, o software de driver, o qual opera dispositivos e periféricos de computador. 3. ENGENHARIA DE SOFTWARE – CONCEITO E DEFINIÇÃO Como visto anteriormente o que é um Software, pode-se dizer que a engenharia de software é composta por duas partes: software e engenharia. A engenharia consiste no desenvolvimento de produtos usando as melhores práticas, princípios e métodos. Sendo assim, a engenharia de software é, portanto, um estudo da engenharia para projeto, desenvolvimento e manutenção de software utilizando-se das melhores práticas e metodologias existentes no mercado. Ela foi criada com o intuito de resolver problemas de projetos de software de baixa qualidade. Esses problemas aparecem quando um software geralmente excede seus prazos, orçamentos e apresentam níveis reduzidos de qualidade. Ela garante que o aplicativo seja elaborado de forma consistente, utilizando-se as técnicas corretas, dentro do prazo estipulado, do orçamento previsto e conforme os requisitos especificados quando da sua criação. Com uma grande taxa de crescimento da mudança nos requisitos operacionais e no ambiente no qual o aplicativo deveria estar funcionando, a engenharia de software também surgiu para atender a todas essas demandas. 9 A engenharia de software se inicia quando existe uma demanda por um determinado resultado para uma empresa, a partir de uma aplicação. De algum lugar da equipe de TI, há uma solicitação feita ao desenvolvedor para se criar algum tipo de software. Essa equipe de desenvolvimento de software divide o projeto em requisitos e etapas. No entanto, como os desenvolvedores sabem exatamente o que colocar em seu software? Após realizarem entrevistas, coletarem informações relevantes, examinarem o portfólio de aplicativos existentes e também conversarem com líderes de TI, eles dividem o software em necessidades específicas. Em seguida, é elaborado um roteiro de como construir tal software. Esta é uma das etapas mais importantes do processo, pois grande parte do trabalho é concluído durante este estágio - o que também pode-se dizer que muitos problemas normalmente ocorrem nessa fase. O início do processo é quando os desenvolvedores começam a escrever código para o software. Em muitos casos, essa é a parte mais longa do processo, pois o código precisa ser congruente com os sistemas atuais e a linguagem utilizada por eles. O código então, deve ser testado à medida que é escrito e também depois de ser concluído. Com ferramentas de engenharia de software, pode-se testar e monitorar continuamente o software em todas as partes do ciclo de vida dele. 4. PRINCIPAIS TIPOS DE SISTEMAS DE INFORMAÇÃO Em uma organização típica, pode-se dividir em: nível operacional, intermediário e superior. Os requisitos de informação em cada nível são diferentes. Sendo assim, há vários sistemas de informação que dão suporte a cada nível de uma organização. É essencial compreender os vários níveis de uma organização, a fim de que haja um entendimento das informações exigidas pelos usuários que operam em seus respectivos níveis. São esses os níveis de uma organização típica: • Gerenciamento operacional - Trabalha com dados estruturados e usado por funcionários para agilizar as operações diárias. Inclui sistema de processamento de transações, sistema de automação de escritório e sistema de gestão de conhecimento. 10 • Gerenciamento tático – Utilizado por gerentes de unidades de negócios. Trabalha com dados semiestruturados e inclui sistemas de informações de gerenciamento. • Gestão estratégica – Lida com dados não estruturados e inclui o sistema de suporte à decisão e o sistema de suporte executivo. É utilizada por executivos da organização. 4.1. Os 6 tipos de sistemas de informação Grande parte das organizações utiliza seis sistemas diferentes de tecnologia da informação, cada qual com uma funcionalidade que auxilia a gestão de uma unidade de negócios ou uma determinada área dentro da empresa. As empresas geralmente empregam seis sistemas com o intuito de garantir que todos os aspectos dos dados da empresa sejam gerenciados de maneira adequada e, dessa maneira utilizados para auxiliar a tomada de decisões e a solução de problemas. Seguem os seis tipos de sistemas de informação existentes: • Transaction Processing Systems (TPS) • Office Automation Systems • Knowledge Management Systems • Management Information Systems • Decision Support Systems • Executive Support System 5. PROCESSO DE SOFTWAREProcesso de software ou metodologia de software é um conjunto de atividades relacionadas que leva à produção do software. Tais atividades podem envolver o desenvolvimento do software desde o início ou a modificação de um sistema existente. Qualquer processo de software deve incluir as seguintes atividades: • Especificação de software ou engenharia de requisitos: É quem define as principais funcionalidades do software e as restrições em torno delas. • Projeto e implementação de software: Ele deve ser projetado e programado. 11 • Verificação e validação de software: Ele deve estar em conformidade com suas especificações e atender às necessidades do cliente. • Evolução do software (manutenção do software): Modificação para atender às mudanças nos requisitos do cliente e do mercado. 5.1. O modelo de processo de software O modelo de processo de software é uma definição de um processo de software, o qual é apresentado a partir de uma perspectiva particular. Modelos são uma simplificação, ou seja, um modelo de processo de software é uma abstração do processo real. Tais modelos pode conter atividades que fazem parte do processo de software, do produto de software e das funções das pessoas envolvidas na engenharia de software. Seguem alguns exemplos dos tipos de modelos de processo de software que podem ser produzidos: • Modelo de fluxo de trabalho: Mostra uma série de atividades no processo junto com suas entradas, saídas e dependências. • Fluxo de dados ou modelo de atividade: Conjunto de atividades que realiza algumas transformações de dados. Ele mostra como a entrada do processo, tais como uma especificação é convertida em uma saída, como um design. As atividades aqui podem estar em um nível inferior do que as atividades em um modelo de fluxo de trabalho. • Modelo de perfil / ação: significa os perfis das pessoas envolvidas no processo de software e as atividades pelas quais elas são responsáveis. Tais modelos genéricos são abstrações do processo que podem ser usados para explicar diferentes abordagens para o desenvolvimento de software. Eles podem ser adaptados e estendidos para criar processos mais específicos, tais como: 5.1.1. Modelo em Cascata Tal modelo é uma abordagem sequencial, onde cada atividade fundamental de um processo é representada como uma fase separada, organizada em ordem linear. No modelo em cascata, deve-se planejar e programar todas as atividades antes de começar a trabalhar nelas. 12 As fases do modelo em cascata são: Requisitos, Projeto, Implementação, Teste e Manutenção, como mostra a figura 1 abaixo: Figura 1 – Modelo em Cascata Fonte – Autoria própria 5.1.2. Prototipagem Um protótipo é uma versão de um sistema ou parte do sistema que é desenvolvido para verificar os requisitos do cliente ou a viabilidade de algumas decisões de design. As fases de um protótipo são: • Estabelecimento dos objetivos • Definição da sua funcionalidade • Desenvolvimento • Avaliação 5.1.3. Desenvolvimento Incremental Consiste na ideia de se desenvolver uma implementação inicial, apresentado ao usuário para respectivo feedback e, assim, evoluindo até que o sistema se torne aceitável. As atividades do processo não são separadas, mas intercaladas com o feedback envolvido nessas atividades, como mostra a figura 2 abaixo: 13 Figura 2 – Modelo Incremental Fonte - Autoria própria 6. MODELO ÁGIL O Modelo Ágil origina-se do termo inglês Agile Model e significa "Modelo de processo ágil". Ele refere-se a uma abordagem de desenvolvimento de software baseada no desenvolvimento iterativo. Os Métodos Ágeis, assim também chamados, dividem as tarefas em iterações menores que não envolvem diretamente o planejamento de longo prazo. O escopo e os requisitos do projeto são definidos no início do processo de desenvolvimento. Os planos relativos ao número de iterações, a duração e o escopo de cada iteração são claramente definidos com antecedência. Cada iteração é considerada como um curto "quadro" de tempo, que normalmente dura de uma a quatro semanas. A divisão de todo o projeto em partes menores ajuda a minimizar o risco do projeto e a reduzir os requisitos gerais de tempo de entrega do projeto. E cada iteração envolve um time trabalhando num ciclo completo de desenvolvimento de software, incluindo planejamento, análise de requisitos, design, codificação e testes antes que o produto funcional seja demonstrado ao cliente. A figura 3 abaixo mostra as fases de um modelo Agil. 14 Figura 3 – Fases de um Modelo Ágil Fonte: <https://www.wearemarketing.com/blog/what-is-the-agile-methodology-and-what-benefits- does-it-have-for-your-company.html> Acesso: Out/2021. A tabela 1 abaixo mostra quais são os requisitos funcionais para esse projeto. Tabela 1 – Requisitos Funcionais do projeto Requisitos Funcionais Descrição RF1 Criar um cadastro para pacientes que forem diagnosticados com covid-19 e carecem de um acompanhamento e monitoramento. Utilizar para esse sistema a linguagem C através do Codeblocks RF2 O usuário só poderá acessar esse sistema através de login e senha RF3 O sistema deve permitir inserir os seguintes dados pessoais do paciente: nome, CPF, telefone, endereço (rua, número, bairro, cidade, estado e CEP), data de nascimento, e-mail e data do diagnóstico RF4 O sistema também deverá possibilitar informar se o paciente tem alguma comorbidade, tais como: diabetes, obesidade, hipertensão, tuberculose, outros RF5 Todas as informações referentes ao RF3 e RF4 acima, deverão ser salvos em um arquivo 15 RF6 O sistema deverá calcular a idade e verificar se o paciente possui alguma comorbidade e se pertence ao grupo de risco (maiores de 65 anos) RF7 Caso o paciente pertença ao grupo de risco, o sistema deverá salvar em um arquivo de texto o CEP e a idade do paciente para que essa informação possa ser enviada para a central da Secretaria da Saúde da cidade 6.1. Métodos de teste ágeis Seguem alguns modelos de testes: • Scrum • Cristal • Método de Desenvolvimento de Software Dinâmico (DSDM) • Desenvolvimento Orientado a Recursos (FDD) • Desenvolvimento Lean de Software • Programação eXtreme (XP) No caso desse projeto específico, optou-se por utilizar o método Scrum. Sendo assim, iremos abordar nesse trabalho, somente esse método. 6.1.1. Método SCRUM SCRUM é uma estrutura onde as pessoas podem resolver problemas ao mesmo tempo que entregam produtos de mais alto valor possível, através de forma produtiva e criativa. É um processo de desenvolvimento ágil focado principalmente em modos para gerenciamento de tarefas em condições de desenvolvimento. O SCRUM consiste nas responsabilidades, eventos, artefatos e as regras que os unem. A figura 4 ilustra o ciclo de um SCRUM. Há três funções no SCRUM e suas responsabilidades são: Scrum Master: O scrum estabalece a equipe, organiza a reunião e também remove obstáculos para o processo. Product owner: Faz o backlog do produto, prioriza o atraso e é responsável pela distribuição da funcionalidade a cada repetição. 16 Equipe Scrum: A equipe gerencia seu trabalho e organiza o trabalho para completar o sprint. Figura 4 – Ciclo do SCRUM Fonte: <https://www.slideshare.net/ConcreteS/o-scrum-master-e-o-mundo-gil-carlos-almeida-e-ingrid- andrade> Acesso: Out/2021. 6.2. Quando usar o modelo Agile? • Quando mudanças frequentes no projeto são necessárias. • Quando há uma equipe altamente qualificada e experiente disponível para a realização do projeto • Quando o cliente está disponível a qualquer momento para se reunir com o time • Quando o projeto em questão é pequeno. 6.3. Vantagem (Prós) do Método Agile • Entrega frequente • Comunicação “face to face” com clientes • Design eficiente e que atende aos requisitos do negócio• Mudanças são aceitáveis a qualquer momento • Reduz o tempo total de desenvolvimento. 6.4. Desvantagens (Contras) do modelo Agile • Em função da falta de documentos formais, cria-se confusão e decisões cruciais tomadas em várias fases que podem ser mal interpretadas a qualquer momento por diferentes membros da equipe. 17 • Devido à falta de documentação adequada, uma vez que o projeto é concluído e os desenvolvedores são alocados para outro projeto, a manutenção pode se tornar uma dificuldade. 7. IMPORTÂNCIA DA COMUNICAÇÃO PARA A ENGENHARIA DE SOFTWARE A comunicação clara e concisa é de fundamental importância para o sucesso das equipes de engenharia de software. Muito embora sua relevância possa não ser às vezes reconhecida como uma prioridade dentro da disciplina amplamente baseada em uma ciência da computação, ela é essencial para que as equipes se colaborem efetivamente e mutuamente ao se empenharem para alcançar resultados superiores. Uma comunicação eficaz colabora em muito para o sucesso de uma equipe de engenharia de software, um projeto ou uma operação de negócios inteira. A comunicação deficiente (ou falha de comunicação) geralmente cria gastos desnecessários. Quando as soluções e ideias são claramente comunicadas em todo o time, o projeto de um modo geral certamente se beneficiará do ponto de vista da redução de custos a e aumento da qualidade do trabalho. 7.1. Principais motivos pelos quais a comunicação eficaz é importante Cada requisito de software não é algo isolado. Recursos individuais funcionam em harmonia com muitos outros componentes, sendo desenvolvidos por vários membros da equipe. Comunicar-se uns com os outros garante que cada recurso separado funcione como parte do todo. Os recursos pertencem aos usuários finais do projeto. Isso significa que seu código será utilizado principalmente para se resolver um problema para outra pessoa. O principal objetivo é fornecer uma solução que agregue valor e facilidade ao usuário final, comunicando-se também de forma clara e eficaz com o cliente. Os recursos desenvolvidos se tornam um catalisador que coloca outros membros da equipe para trabalhar (engenheiros de controle de qualidade, equipe de infraestrutura, gerentes de contas, etc.). É muito importante que eles entendam o que é feito, como deve funcionar, como deve ser implantado, que problema resolve e que valor agrega. Sendo assim, a comunicação com cada um desses grupos ao longo do ciclo de desenvolvimento é fundamental importância para o sucesso do projeto. 18 7.2. Dicas importantes para se tornar um melhor comunicador em engenharia de software 1. Compartilhe informações e melhore a comunicação 2. Ouça atentamente e cuidadosamente 3. Faça perguntas 4. Procure entender as necessidades de seu cliente 5. Procure atacar os problemas e não a pessoas 7.3. O que é Walkthrough e quais seus objetivos O processo de Walkthrough é usado para revisar documentos com colegas, gerentes e membros da equipe que são guiados pelo autor do documento para coletar feedback e chegar a um consenso. Ele pode ser pré-planejado ou organizado com base nas necessidades. Normalmente, pessoas que trabalham no mesmo projeto estão envolvidas no processo de Walkthrough. Os objetivos específicos de um processo de Walkthrough são: • Reunir informações sobre o tópico no documento envolvendo as partes interessadas, tanto dentro quanto fora da disciplina de software • Descrever e justificar o conteúdo do documento • Chegar a um consenso comum sobre o documento • Verificar e discutir as diferentes soluções para um problema e diferentes alternativas propostas 7.4. O que é Joint Application Development/Design (JAD) O Joint Applicaton Development (JAD) é um processo que acelera o design de soluções de tecnologia da informação. A JAD usa o envolvimento do cliente e a dinâmica de grupo através de uma série de workshops colaborativos chamados sessões JAD, com o intuito de descrever com precisão a visão do usuário sobre a necessidade do negócio e para desenvolver uma solução em conjunto. 7.4.1. Quando usar o JAD Pode ser aplicado a uma ampla gama de projetos, incluindo os seguintes: • Novos sistemas 19 • Melhorias nos sistemas existentes • Conversões de sistema • Compra de um sistema No entanto, nem todos os projetos são candidatos ao JAD. Um projeto apropriado exibe pelo menos algumas das seguintes características: • Envolve muitos grupos de usuários cujas responsabilidades ultrapassam os limites tradicionais de departamentos ou divisões • É considerado crítico para o sucesso futuro da organização • Envolve usuários dispostos • É um projeto novo e inédito para a empresa • Tem um histórico de projeto conturbado ou relacionamento entre os sistemas e organizações de usuários Um ponto muito importante a ser observado é que, embora as características acima descrevam um bom projeto candidato ao JAD, todas as características não devem estar presentes em seus primeiros projetos JAD. À medida que a equipe de desenvolvimento e o cliente se sintam mais confortáveis com essa abordagem JAD, projetos mais complexos podem ser realizados. 8. GERENCIAMENTO DO ESCOPO DO PROJETO Na elaboração desse trabalho, foi utilizado diversas práticas no gerenciamento de projetos, que estão contidos no Guia PMBOK (Sexta Edição) de 2017. 8.1. Work Breakdown Structure (WBS) A Estrutura Analítica de Projetos (EAP) ou, do Inglês, Work breakdown structure (WBS) é um processo de subdivisão das entregas referente ao projeto em componentes menores, a fim de torna-los mais facilmente gerenciáveis. Cada entrega é atribuída a uma tarefa ou série de tarefas que podem ser divididas em subtarefas para atender às necessidades do projeto. O objetivo principal da EAP é também planejar o cronograma do projeto.Dessa forma a EAP fornece um plano geral para que o gerente de projeto possa ver como o projeto deve progredir e gerenciar o fluxo de trabalho de forma adequada. 20 A EAP pode ser elaborada conforme o propósito e tipo de projeto. As formas mais comuns de EAP são: por fases, por entregas e por equipes. A figura 5 a seguir mostra a EAP por fases do nosso projeto. 21 Figura 5 – EAP ou WBS por fases Fonte - Autoria própria 8.2. Cronograma O cronograma é a lista de atividades, entregas e marcos dentro de um projeto. Ele também geralmente inclui uma data planejada de início e término, duração e recursos atribuídos a cada atividade. Um planejamento eficaz do projeto é um componente crítico do gerenciamento de tempo bem-sucedido. Esse projeto foi realizado de acordo com o cronograma mostrado na figura 6 a seguir. Figura 6 – Cronograma do projeto Fonte - Autoria própria 22 9. LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO A linguagem de programação é uma linguagem de computador que os programadores usam para desenvolver programas de software, scripts ou outros conjuntos de instruções para os computadores executarem. Apesar de muitas linguagens possuírem certas semelhanças, cada uma tem sua própria sintaxe. O programador então escreve o código-fonte em um editor de texto ou IDE (Integrated Development Enviroment) ou em português – ambiente de desenvolvimento integrado. O IDE é um software que contém ferramentas comuns de desenvolvimento em uma única interface gráfica do usuário (GUI – Graphical User Interface), facilitando o desenvolvimento de aplicações. Dessa forma então, o programador frequentemente compila o código em linguagem de máquina que pode ser entendida pelo computador. Já as linguagens de script que não requerem um compilador, usam um interpretador para executar o script. 9.1. Algoritmo De uma forma bem simples e direta, algoritmo é basicamente uma lista de instruções e regras que um computador precisa fazer para concluir uma tarefa. Na computação,os algoritmos fornecem aos computadores um guia sucessivo para a conclusão de ações. Esses guias são compostos por uma lista precisa de instruções que descrevem exatamente como completar uma tarefa. Os algoritmos precisam ter suas etapas na ordem certa, pois a ordem das instruções é muito importante. 9.2. Fluxograma Fluxograma é uma representação gráfica de um algoritmo. Os programadores usam-no como uma ferramenta de planejamento de programa para resolver um problema. Para isso, são usados símbolos que estão conectados entre si para indicar o fluxo de informação e processamento. A figura 7 a seguir ilustra o fluxograma de um projeto. 23 Figura 7 – Fluxograma do projeto Fonte - Autoria própria 9.3. Tipos de linguagem de programação Há vários tipos de linguagem de programação no mercado. Entre elas pode-se citar algumas. 9.3.1. Linguagem de programação procedimental Essa linguagem é usada para executar uma sequência de instruções que levam a um resultado. Normalmente, esse tipo de linguagem de programação usa várias variáveis, loops e outros elementos, que os separa das linguagens de programação funcionais. Suas funções podem controlar variáveis, além dos retornos de valor da função, como por exemplo, imprimir informações. 9.3.2. Linguagem de programação funcional Essa linguagem normalmente usa dados armazenados, evitando frequentemente loops em favor de funções recursivas. Seu foco principal está nos valores de retorno das funções, e os efeitos colaterais e diferentes sugerem que o estado de armazenamento é fortemente desencorajado. 9.3.3. Linguagem de programação orientada a objetos 24 O objetivo desta linguagem é pensar sobre a falha, separando-a em uma coleção de objetos que oferecem serviços que podem ser usados para resolver um problema específico. 9.3.4. Linguagem de programação de script Essas linguagens são frequentemente procedurais e podem incluir elementos de linguagem orientada a objetos. Normalmente não são linguagens de programação completas com suporte para o desenvolvimento de grandes sistemas. 9.3.5. Linguagem de programação lógica São linguagens que permitem que os programadores façam declarações declarativas e, em seguida, permitem que a máquina raciocine sobre as consequências dessas declarações Na realidade, chamar tais grupos de “tipos de linguagem” é tanto quanto confuso. É fácil programar em um estilo orientado a objetos em linguagem C. A maioria das linguagens inclui ideias e recursos de vários domínios, porém, a maioria das linguagens de programação não funciona melhor em todos os estilos de programação. 9.4. A Linguagem C A linguagem C é uma linguagem de programação de propósito geral muito popular, simples e flexível de usar. É uma linguagem usada para escrever vários aplicativos, sistemas operacionais como Windows e muitos outros programas complexos como banco de dados Oracle, Git, interpretador Python e muito mais. Conforme solicitado nesse projeto, a linguagem utilizada para se desenvolver o sistema em questão, foi a linguagem C. A figura 8 mostra as 11 linguagens de programação mais requisitadas em 2021. 25 Figura 8 - Linguagens de programação mais requisitadas em 2021 Fonte: <https://bootcamp.berkeley.edu/blog/most-in-demand-programming-languages/> Acesso: Out/2021. 10. O PROJETO – CADASTRO DE PACIENTES COM COVID-19 Esse projeto tem por finalidade desenvolver um sistema em Linguagem C utilizando o Code::Blocks, o qual será utilizado pelos hospitais da região para cadastrar os pacientes que forem diagnosticados com covid-19. Com base nas informações da tabela abaixo, os profissionais de saúde realizarão o cadastro de cada paciente, informando seus dados pessoais e também alguma comorbidade que o mesmo possa apresentar. Tabela 2 – Dados pessoais dos pacientes Fonte - Autoria própria As informações acima serão armazenadas em um arquivo para futuras consultas, caso seja necessário. Rua Numero Bairro Cidade Estado CEP José Antonio dos Santos 023.658.964-87 (11) 98558-7458 Travessa Tres Pingos Dagua 448 jardim da conquista São Paulo SP 83453-200 02/07/1948 jose_santos@gmail.com 01/10/2021 Obesidade mórbida Fernando Vieira 025.365.874-52 (11) 98421-6526 Rua Itacaranha 1254 Jardim N. Sra. Aparecida São Paulo SP 12480-700 16/05/1949 fernando_124@gmail.com 04/10/2021 Doença cerebrovascular Cristiano Rodrigues 027.254.457-14 (11) 99854-6631 Travessa 26 de Outubro 587 Jardim Nazareth São Paulo SP 08150-640 08/07/1952 cristianorod@hotmail.com 06/10/2021 Diabetes mellitus Vera Soares 035.447.112-52 (11) 98874-4851 Rua Abacate Natal 998 Vila Natal São Paulo SP 04863-210 06/08/1964 vera3455@hotmail.com 07/10/2021 Doença renal crônica Rosa do Amaral 047.451.874-41 (11) 98873-2201 Rua Abatia 1425 Jardim Camargo Novo São Paulo SP 08141-540 07/06/1970 rosaamaral@gmail.com 13/10/2021 Cardiopatia hipertensiva Vitor de Almeida Junior 098.365.448-98 (11) 99744-4524 Rua 23 de Novembro 887 Vila Progresso São Paulo SP 08240-001 03/04/1974 vitor_j43@gmail.com 15/09/2021 - Alexandre Flores 110.652.478-85 (11) 99887-4412 Rua Eduardo de Souza Aranha 2354 Itaim São Paulo SP 04543-120 24/08/1978 alexandre_fl@hotmail.com 17/09/2021 - Fabio da Costa 112.365.685-95 (11) 98452-3255 Praça Monteiro Lobato 2399 Jardim Campo Limpo São Paulo SP 57851-900 15/11/1981 fabio_564@hotmail.com 27/10/2021 - Lucia de Castro 121.154.745.25 (11) 99336-5324 Rua Abadiânia 886 Vila Guilhermina São Paulo SP 03541-000 05/02/1985 lucia_castro@gmail.com 25/10/2021 Hipertensão arterial João da Silva 132.658.478-12 (11) 98421-6524 Rua Cravo do Campo 155 Sitio da Barra São Paulo SP 83723-020 08/06/1988 joao_silva948@gmail.com 22/10/2021 - Data diagnóstico Comorbidade Endereço Nome CPF Telefone Data Nascimento E-mail 26 Feito isso, o sistema irá calcular a idade dos pacientes e verificar se eles possuem alguma comorbidade e se pertencem ao grupo de risco (maiores de 65 anos). Em caso afirmativo, o sistema deverá salvar em um arquivo de texto o CEP e a idade do paciente para que essa informação possa ser enviada para a central da Secretaria da Saúde. 10.1. Code::Blocks Trata-se de um C / C ++ e Fortran IDE construído para atender às necessidades mais exigentes de seus usuários. O Code::Blocks é um ambiente de desenvolvimento integrado de código aberto e multiplataforma. Projetado para ser extensível e totalmente configurável, conforme as necessidades do usuário. Ele é construído em torno de uma estrutura de plug-in. Qualquer tipo de funcionalidade pode ser adicionado instalando / codificando um plugin. Para esse projeto, foi utilizado o Code::Blocks. A figura 9 mostra o ambiente do Code::Blocks onde o projeto foi desenvolvido. Figura 9 – Ambiente do Code::Blocks do projeto 27 10.2. Coleta de Dados O sistema em questão solicita o login no sistema, como usuário e a senha e então, o profissional da saúde irá incluir os dados de cada paciente descritos na tabela 2. A figura 10 a seguir mostra a tela do sistema com o login do profissional. Figura 10 – Tela de login 10.3. Cadastro de pacientes Logo após o login, é realizado então, o cadastro dos pacientes. O sistema salva em um arquivo de texto (.txt) para que essa informação possa ser consultada por qualquer outro profissional da área futuramente. A figura 11 a seguir mostra a tela do sistema para cadastro dos pacientes pelo profissional. 28 Figura 11 – Tela de cadastro dos pacientes 10.4. Arquivo de gravação Após o cadastro do paciente, o sistema calcula a idade e verifica se o paciente possui alguma comorbidade e se pertence ao grupo de risco (maiores de 65 anos). Caso o paciente pertença ao grupo de risco, o próprio sistema salva em um arquivo de texto, o CEP e a idade do paciente para que essa informação possa ser enviada para a central daSecretaria da Saúde. As figuras 12, 13 e 14 mostram os arquivos de texto com o cadastro dos pacientes e o arquivo a ser enviado. Figura 12 – Arquivo de texto com o cadastro dos pacientes 29 Figura 13 – Arquivo de texto a ser enviado para a Secretaria da Saúde Figura 14 – Geração de arquivo de texto a ser enviado para a Secretaria da Saúde 11. MANUAL DO USUÁRIO 11.1. Acessar o aplicativo Para acessar o aplicativo de cadastro de pacientes com Covid-19, o usuário deve abrir o Code::Blocks e em seguida deve clicar em “open an existing project”, abrir o arquivo em “main” que está em formato C salvo na máquina. O arquivo será aberto com a linguagem de programação do sistema que foi criado e, em seguida, deve-se clicar no botão para compilar e executar (“build and run”). 11.2. Fazer Login Será aberto uma janela onde aparecerá uma solicitação para colocar o ID de usuário e senha. Estando as informações corretas, o sistema vai habilitar o cadastro do paciente e, caso estiver errado, o sistema mostrará a mensagem de usuário incorreto e o número de tentativas para acessar o sistema está limitado a 5. Após isso, o sistema será fechado. 11.3. Cadastrar Paciente Para cadastrar o paciente, deve-se selecionar a alternativa 1- cadastro do paciente, digitando-se o número 1 e “enter”. O sistema vai solicitar os dados do 30 paciente: CPF, nome, data de nascimento, telefone, e-mail, data do diagnóstico do paciente, comorbidade (se houver, caso não escrever saudável), CEP, rua, número, bairro, cidade e estado. Todos os dados serão gravados automaticamente. 11.4. Gerar Arquivo O usuário deve digitar a opção 2 e “enter”. O arquivo para a secretaria da saúde será gerado automaticamente. Para sair do sistema e só digitar a opção 3. 31 CONCLUSÃO Com as informações contidas na disciplina LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO, foi desenvolvido um algoritmo através da linguagem C para ser utilizado pelos hospitais, a fim de se cadastrar os pacientes que forem diagnosticados com covid-19. Este projeto também contou com o auxílio da disciplina de ENGENHARIA DE SOFTWARE I para se desenvolver o software em questão e para identificar, descrever e comparar os modelos de processo, que foram utilizados no desenvolvimento do projeto. Outro ponto importante a se considerar nesse projeto, foi a utilização da ferramenta Code::Blocks, a qual foi primordial para poder desenvolver todo o corpo do algoritimo. No entanto, pode-se notar que o Code::Blocks possui alguns benefícios, tais como o ambiente IDE de código aberto, solução IDE gratuita e totalmente configurável e extensível com ferramentas funcionais para desenvolvedores. Por outro lado, a principal desvantagem dos códigos de bloqueio é que não podemos extrair as informações até que todo o código seja recebido. Além disso, todo o bloco deve ser retransmitido em caso de erro. Dessa forma, criou-se o algoritmo que foi utilizado e testado com sucesso através do cadastro de uma lista de pacientes, onde alguns deles possuiam certas comorbidades. Todos os pacientes que possuíam alguma comorbidade e que pertenciam ao grupo de risco (maiores de 65 anos), tinham seu nome gravado num arquivo de texto contendo o CEP e suas respectivas idades para posterior envio para a Central da Secretaria da Saúde. 32 REFERÊNCIAS Barbara Thompson. O que é a linguagem de programação C? Noções básicas, introdução, história <https://www.guru99.com/c-programming-language.html> acessada em 30.Out.2021 Bennett, Coleman & Co. Ltd. Definição de 'Walkthrough' <https://economictimes.indiatimes.com/definition/walkthrough> acessado em 19.Out.2021 Bietz. O que é um algoritmo <https://www.bbc.co.uk/bitesize/topics/z3tbwmn/articles/z3whpv4> Acessado em 01.Nov.2021 Computer Hope. Linguagem de programação <https://www.computerhope.com/jargon/p/programming-language.htm> acessado em 17.Out.2021 Contribuidor da TechTarget. JAD (Desenvolvimento Conjunto de Aplicativos) <https://searchsoftwarequality.techtarget.com/definition/JAD acessado em 15.Out.2021 Copyright - CAST. O que é engenharia de software <https://www.castsoftware.com/glossary/what-is-software-engineering-definition- types-of-basics-introduction > acessado em 20.Out.2021 Copyright © 2021 Bennett, Coleman & Co. Ltd. Definição de 'Engenharia de Software' <https://economictimes.indiatimes.com/definition/software-engineering> acessado em 20.Out.2021 Dave Rottmann. Desenvolvimento de aplicativos conjuntos (JAD). <https://www.umsl.edu/~sauterv/analysis/488_f01_papers/rottman.htm> acessado em 18.Out.2021 JavaTpoint. Linguagem de programação <https://www.javatpoint.com/programming-language> acessado em 28.Out.2021 JavaTpoint. Modelo ágil <https://www.javatpoint.com/software-engineering-agile- model> acessado em 28.Out.2021 JavaTpoint. Software Processes <https://www.javatpoint.com/software-processes> acessado em 28.Out.2021 Lauren Christiansen. Os 6 principais tipos de sistemas de informação, artigo de 06/01/2021 <https://altametrics.com/information-systems/information-system- types.html> acessado em 01.Nov.2021 33 Linda Rosencrace. Definição de software, artigo publicado em março de 2021 < https://searchapparchitecture.techtarget.com/definition/software > acessado em 15.Out.2021 Matt Mong. O que é uma estrutura analítica do projeto? <https://www.adeaca.com/blog/faq-items/what-is-a-work-breakdown-structure/> acessado em 22.Out.2021 Matthew martin. Tipos de sistema de informação: TPS, DSS e diagrama de pirâmide, artigo publicado em 10/11/21. <https://www.guru99.com/mis-types- information-system.html> acessado em 15.Out.2021 Nicolas Rosello. Habilidades de comunicação eficazes em engenharia de software. <https://santexgroup.com/blog/communication-skills-software- engineering/> acessado em 25.Out.2021 Omar Elgabry. Engenharia de Software - Processo de Software e Modelos de Processo de Software, artigo publicado em 12/03/2017 <https://medium.com/omarelgabrys-blog/software-engineering-software-process-and- software-process-models-part-2-4a9d06213fdc> acessado em 15.Out.2021 Scrum.org. O QUE É SCRUM? <https://www.scrum.org/resources/what-is-scrum> acessado em 18.Out.2021 Techopedia. Linguagem de programação C. artigo publicado em 21/05/2021 <https://www.techopedia.com/definition/24068/c-programming-language-c> Acessado em 03.Nov.2021 Think Automstion. O que é um algoritmo? Uma explicação resumida <https://www.thinkautomation.com/eli5/what-is-an-algorithm-an-in-a-nutshell- explanation/ > Acessado em 03.Nov.2021 WatElectronics.com. O que é uma linguagem de programação e diferentes tipos <https://www.watelectronics.com/types-of-programming-languages-with-differences/> Acessado em 04.Nov.2021 Wrike, Inc. O que é programação em gerenciamento de projetos? <https://www.wrike.com/project-management-guide/faq/what-is-scheduling-in-project- management/> Acessado em 10.Out.2021
Compartilhar