32
UNIVERSIDADE FEDERAL DE PELOTAS INSTITUTO DE FÍSICA E MATEMÁTICA DEPARTAMENTO DE INFORMÁTICA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO SIIM: SISTEMA DE INTEGRAÇÃO DE INFORMAÇÕES MÉDICAS Dário Knuppe Jerônimo Medina Madruga Rodrigo Trindade Prestes Trabalho de pesquisa apresentado na disciplina de Engenharia de Software 2 do Curso de Bacharelado em Ciência da Computação, Instituto de Física e Matemática, Universidade Federal de Pelotas. Professor: Profa. Msc. Eliane da Silva Alcoforado Diniz 2009

Sistema de integração de Informações Médicas (SIIM) - Versão artigo

Embed Size (px)

Citation preview

Page 1: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

UNIVERSIDADE FEDERAL DE PELOTAS INSTITUTO DE FÍSICA E MATEMÁTICA DEPARTAMENTO DE INFORMÁTICA

BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

SIIM: SISTEMA DE INTEGRAÇÃO DE INFORMAÇÕES MÉDICAS

Dário Knuppe Jerônimo Medina Madruga Rodrigo Trindade Prestes

Trabalho de pesquisa apresentado na disciplina de Engenharia de Software 2 do Curso de Bacharelado em Ciência da Computação, Instituto de Física e Matemática, Universidade Federal de Pelotas. Professor: Profa. Msc. Eliane da Silva Alcoforado Diniz

2009

Page 2: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

Lista de Figuras

Figura 1: Interface do ADM Médico......................................................................................7 Figura 2: Tela de cadastro de clientes do Medicsystem .........................................................9 Figura 3: Estrutura de um repositório SVN..........................................................................22 Figura 4: Gráfico de Gantt do ClockingIT ...........................................................................24 Figura 5: Lista de chamados do Web Chamado..................................................................25 Figura 6: Gráfico de Gantt do OpenProj ..............................................................................26 Figura 7: Tela de abertura do SIIM ......................................................................................30

Page 3: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

Sumário

Apresentação ..........................................................................................................................4 1. Projeto.................................................................................................................................5

1.1 Conceito........................................................................................................................5 1.2 Funcionalidades............................................................................................................6

1.2.1 Adm Médico 3.15:.................................................................................................6 1.2.2 Clinicas Integradas 1.1: .........................................................................................7 1.2.3 Medicsystem 2.01:.................................................................................................8

2. Metodologias Empregadas ...............................................................................................10 2.1. Método ágil................................................................................................................10

2.1.1. XP .......................................................................................................................12 2.1.1. SCRUM ..............................................................................................................15

2.2. Metodologias agéis em um ambiente disperso..........................................................17 3. Softwares Auxiliares ........................................................................................................18

3.1 Controle de versão......................................................................................................18 3.1.1. CVS ....................................................................................................................18 3.1.2. GIT .....................................................................................................................20 3.1.3. Subversion ..........................................................................................................20

3.2 Gerência de projeto.....................................................................................................22 3.2.1.ClockingIT...........................................................................................................23 3.2.2. Web Chamado ....................................................................................................24 3.2.3. OpenProj.............................................................................................................25

3.3. Documentação ...........................................................................................................26 3.3.1. Doxygen .............................................................................................................27 3.3.2. Phpdocumentator ................................................................................................27

4. Sistema de Integração de Informações Médicas...............................................................29 4.1 Cronograma de desenvolvimento ...............................................................................29

5. Conclusão .........................................................................................................................31 Referências Bibliográficas....................................................................................................32

Page 4: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

Apresentação

Este trabalho tem como objetivo o desenvolvimento de uma aplicação do

tipo EMR (Emergency Medical Record), que são aplicações dedicas a

armazenamento de informações da área da saúde.

Para o desenvolvimento da mesma, foi feito um estudo sobre o a aplicação

de metodologias de desenvolvimento ágil sobre um ambiente distribuído, ou seja,

onde os desenvolvedores estão dispersos geograficamente; e também sobre

ferramentas para auxiliar a aplicação dessas metodologias e a evolução do projeto

em si.

Começaremos demonstrando a viabilidade de nosso idéia inicial, mostrando

também algumas idéias sobre os softwares existentes nesse área atualmente.

Após, será abordado como adaptamos as metodologias de desenvolvimento de

acordo com nosso ambiente, e algumas ferramentas que podem auxiliar na

gerência de um projeto. No final, mostramos a característica do produto

desenvolvido, e alguns comentários sobre o mesmo.

Page 5: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

1. Projeto

1.1 Conceito

Ao começar a pesquisa para verificar qual seria o foco do projeto a ser

desenvolvido, tivemos enfoque em idéias sobre áreas de software em expansão. A

idéia mais promissora encontrada segundo nossas pesquisas foi a área de

tecnologia da informação da saúde, com enfoque em sistemas de

armazenamentos de dados médicos e clínicos, conhecidos também como EMR.

Softwares do tipo EMR podem ser implementados nos mais diversos tipos

de estabelecimentos, de clinicas médicas, ortodônticas, cirúrgicas, a grandes

hospitais e empresas do ramo de saúde. Sua variedade e diversidade de formas

de implementação são tão vastas que alguns paises adotaram padrões de

interoperabilidade, para garantir a coexistência de diversos sistema

intercomunicáveis, facilitando assim a troca de informações entre diferente

estabelecimentos. Alguns países também estão em processo de adoção de

sistemas únicos para os órgãos públicos de saúde, visando diminuir os custos da

saúde pública. A demanda por este tipo de software ocorre devido a agilidade que

ele adiciona ao funcionamento de uma clinica, resultando segundo vários estudos

até mesmo em ganho financeiro perante sua adoção, pois possibilita o

atendimento de mais pacientes e a diminui a tarefa de busca de informações

prévias.

Já no Brasil, softwares EMR não tem uma classificação especifica, são

chamados de softwares médicos, ou softwares de clinicas, e não existe nenhuma

tentativa de padronização para os mesmos, o que ocasiona em formatos de

software proprietários, sem regulamentação, sem possibilidade de comunicação

entre eles e cada um com um tipo de funcionalidade determinada pelos seus

desenvolvedores.

Tendo isto em mente, resolvemos pela criação do SIIM (sistema de

integração de informações médicas) para verificarmos como as metodologias

Page 6: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

ágeis poderiam contribuir no desenvolvimento deste projeto e também explorar

uma área que é relativamente intocada pelos programadores brasileiros.

1.2 Funcionalidades

Para verificar o que deveria ser implementado no software em termos de

funcionalidades, Em um projeto normal seria necessário analisar os requisitos

definido por um cliente, mas visto que este software foi feito para fim de estudos,

verificamos as funcionalidades a serem desenvolvidas de acordo com a analise

dos produtos que o mercado oferece, conforme descrito a seguir.

1.2.1 Adm Médico 3.15:

Software para gestão de consultórios médicos que necessitem de um

sistema rápido, objetivo e com informações essenciais. Suporta base de dados

grande, e é totalmente ajustável à necessidades específicas.

Em sua versão Free:

• Cadastro de pacientes;

• Backup de dados;

• Agenda de consultas;

• Interação com softwares aplicativos;

• Integração de dados;

• Calendário.

Em sua versão completa:

• Cadastro de anamnese;

• Contas a pagar;

• Contas a receber;

• Textos modelos (receita, cobrança, retorno...);

• Avisos (alarmes e retornos de consultas);

• Ficha clínica.

Page 7: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

Figura 1: Interface do ADM Médico

1.2.2 Clinicas Integradas 1.1:

Este software faz o gerenciamento de consultórios médicos, odontológicos

e fisioterápicos.

Controles:

• Pacientes ativos e inativos;

• Agenda de atendimento;

• Fluxo de caixa diário simples;

• Emissão de receitas e atestados;

• Controle e impressão de contratos;

• Controle e impressão de orçamentos;

• Mala direta;

Page 8: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

• Cartões de páscoa, aniversário e natal;

• Agenda de contatos.

1.2.3 Medicsystem 2.01:

O Medicsystem é um sistema para gerenciar clínicas ou consultórios

médicos. É uma programa multi-usuário, ou seja, permitindo que diversos usuários

utilizem o sistema simultaneamente. Todas as telas são integradas, após

cadastrar um paciente já é possível agendar uma consulta automaticamente, um

atendimento, gera um contas a receber para o médico que prestou o atendimento.

Principais recursos:

• Agenda da secretária;

• Cadastro de clientes e fornecedores;

• Atendimento ao cliente;

• Emissão de receitas;

• Acompanhamento de dados do atendimento (pressão, temperatura,

peso);

• Relação de clientes por categoria;

• No momento do atendimento, o médico poderá visualizar os

atendimentos anteriores e assim saber o que já foi escrito ao cliente.

Medicsystem Master (versão completa):

• AMB e CID;

• Acesso ao sistema por usuário e senha

• Emissão de atestado;

• 5 opções para emissão de etiquetas para clientes;

• Texto padrão (permite o uso de texto previamente cadastrados em

receitas e atestados);

• Controle bancário;

• Centro de custo;

• Levantamento de receitas/despesas;

Page 9: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

• Contas a receber por médico e convênio;

• Aniversariantes do mês;

• E mais: suporte gratuito via fone, e-mail ou on-line, sem taxas de

manutenção mensal.

Figura 2: Tela de cadastro de clientes do Medicsystem

Page 10: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

2. Metodologias Empregadas

2.1. Método ágil

Desenvolvimento ágil de software é um conjunto de metodologias de

desenvolvimento de software. O desenvolvimento ágil, tal como qualquer

metodologia de software, providencia uma estrutura conceitual para reger projetos

de engenharia de software.

Existem inúmeros métodos de desenvolvimento de software rápido, sendo

que a maioria dos métodos ágeis tenta minimizar o risco pelo desenvolvimento do

software em curtos períodos, chamados de iteração, os quais gastam tipicamente

menos de uma semana a até quatro. Cada iteração é como um projeto de

software em miniatura de seu próprio, e inclui todas as tarefas necessárias para

implantar o mini-incremento da nova funcionalidade: planejamento, Análise de

Requisitos, projeto, codificação, teste e documentação. Enquanto em um processo

convencional, cada iteração não está necessariamente focada em adicionar um

novo conjunto significativo de funcionalidades, um projeto de software ágil busca a

capacidade de implantar uma nova versão do software ao fim de cada iteração,

etapa a qual a equipe responsável reavalia as prioridades do projeto.

Métodos ágeis enfatizam comunicações em tempo real, preferencialmente

face a face, a documentos escritos. A maioria dos componentes de um grupo ágil

devem estar agrupados em uma sala. Isto inclui todas as pessoas necessárias

para terminar o software. No mínimo, isto inclui os programadores e seus clientes .

Nesta sala devem também se encontrar os testadores, projetistas de iteração,

redatores técnicos e gerentes.

Princípios:

• Garantir a satisfação do consumidor entregando rapidamente e

continuamente softwares funcionais;

• Softwares funcionais são entregues frequentemente (semanas, ao

invés de meses);

Page 11: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

• Softwares funcionais são a principal medida de progresso do projeto;

• Até mesmo mudanças tardias de escopo no projeto são bem-vindas.

• Cooperação constante entre pessoas que entendem do 'negócio' e

desenvolvedores;

• Projetos surgem através de indivíduos motivados, e que deve existir

uma relação de confiança.

• Design do software deve prezar pela excelência técnica;

• Simplicidade;

• Rápida adaptação às mudanças;

• Indivíduos e interações mais do que processos e ferramentas;

• Software funcional mais do que documentação extensa;

• Colaboração com clientes mais do que negociação de contratos;

• Responder a mudanças mais do que seguir um plano.

Como em todas as metodologias, o conhecimento e a experiência dos

usuários definem o grau de sucesso e/ou fracasso de cada atividade. Os controles

mais rígidos e sistematizados aplicados em um processo implicam em altos níveis

de responsabilidade para os usuários. A degradação de procedimentos bem-

intencionados pode levar as atividades a serem caracterizadas como codificação

cowboy.

Embora os métodos ágeis apresentem diferenças entre suas práticas, eles

compartilham inúmeras características em comum, incluindo o desenvolvimento

iterativo, e um foco na comunicação interativa e na redução do esforço empregado

em artefatos intermediários. A aplicabilidade dos métodos ágeis em geral pode ser

examinada de múltiplas perspectivas. Da perspectiva do produto, métodos ágeis

são mais adequados quando os requisitos estão emergindo e mudando

rapidamente. De uma perspectiva organizacional, a aplicabilidade pode ser

expressa examinando três dimensões chaves da organização: cultura, pessoal e

comunicação.

Page 12: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

No nosso caso, devido a ser um grupo pequeno de desenvolvedores,

resolvemos adotar uma combinação da metodologia XP e Scrum, adaptada as

nossas necessidades, como será descrito posteriormente.

2.1.1. XP

Programação extrema, também conhecida como XP, é uma metodologia

ágil para equipes pequenas e médias e que irão desenvolver software com

requisitos vagos e em constante mudança. Para isso, adota a estratégia de

constante acompanhamento e realização de vários pequenos ajustes durante o

desenvolvimento de software.

Os quatro valores fundamentais da metodologia XP são: comunicação,

simplicidade, feedback e coragem. A partir desses valores, possui como princípios

básicos: feedback rápido, presumir simplicidade, mudanças incrementais, abraçar

mudanças e trabalho de qualidade.

Dentre as variáveis de controle em projetos (custo, tempo, qualidade e

escopo), há um foco explícito em escopo. Para isso, recomenda-se a priorização

de funcionalidades que representem maior valor possível para o negócio. Desta

forma, caso seja necessário a diminuição de escopo, as funcionalidades menos

valiosas serão adiadas ou canceladas.

A XP incentiva o controle da qualidade como variável do projeto, pois o

pequeno ganho de curto prazo na produtividade, ao diminuir qualidade, não é

compensado por perdas (ou até impedimentos) a médio e longo prazo.

Para aplicar os valores e princípios durante o desenvolvimento de software,

XP propõe uma série de práticas. Há uma confiança muito grande na sinergia

entre elas, os pontos fracos de cada uma são superados pelos pontos fortes de

outras.

• Jogo de Planejamento : O desenvolvimento é feito em iterações

semanais. No início da semana, desenvolvedores e cliente reúnem-se para

priorizar as funcionalidades. Essa reunião recebe o nome de Jogo do

Planejamento. Nela, o cliente identifica prioridades e os desenvolvedores as

Page 13: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

estimam. O cliente é essencial neste processo e assim ele fica sabendo o

que está acontecendo e o que vai acontecer no projeto. Como o escopo é

reavaliado semanalmente, o projeto é regido por um contrato de escopo

negociável, que difere significativamente das formas tradicionais de

contratação de projetos de software. Ao final de cada semana, o cliente

recebe novas funcionalidades, completamente testadas e prontas para

serem postas em produção.

• Pequenas Versões: A liberação de pequenas versões funcionais do

projeto auxilia muito no processo de aceitação por parte do cliente, que já

pode testar uma parte do sistema que está comprando. As versões chegam

a ser ainda menores que as produzidas por outras metodologias

incrementais, como o RUP.

• Metáfora: Procura facilitar a comunicação com o cliente, entendendo

a realidade dele. O conceito de rápido para um cliente de um sistema

jurídico é diferente para um programador experiente em controlar

comunicação em sistemas em tempo real, como controle de tráfego aéreo.

É preciso traduzir as palavras do cliente para o significado que ele espera

dentro do projeto.

• Projeto Simples : Simplicidade é um princípio da XP. Projeto simples

significa dizer que caso o cliente tenha pedido que na primeira versão

apenas o usuário "teste" possa entrar no sistema com a senha "123" e

assim ter acesso a todo o sistema, você vai fazer o código exato para que

esta funcionalidade seja implementada, sem se preocupar com sistemas de

autenticação e restrições de acesso. Um erro comum ao adotar essa

prática é a confusão por parte dos programadores de código simples e

código fácil. Nem sempre o código mais fácil de ser desenvolvido levará a

solução mais simples por parte de projeto. Esse entendimento é

fundamental para o bom andamento do XP. Código fácil deve ser

identificado e substituído por código simples.

• Time Coeso: A equipe de desenvolvimento é formada pelo cliente e

pela equipe de desenvolvimento.

Page 14: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

• Testes de Aceitação: São testes construídos pelo cliente e conjunto

de analistas e testadores, para aceitar um determinado requisito do

sistema.

• Ritmo Sustentável: Trabalhar com qualidade, buscando ter ritmo de

trabalho saudável, sem horas extras. Horas extras são permitidas quando

trouxerem produtividade para a execução do projeto. Outra prática que se

verifica neste processo é a prática de trabalho energizado, onde se busca

trabalho motivado sempre. Para isto o ambiente de trabalho e a motivação

da equipe devem estar sempre em harmonia.

• Reuniões em pé: Reuniões em pé para não se perder o foco nos

assuntos, produzindo reuniões rápidas, apenas abordando tarefas

realizadas e tarefas a realizar pela equipe.

• Posse Coletiva: O código fonte não tem dono e ninguém precisa

solicitar permissão para poder modificar o mesmo. O objetivo com isto é

fazer a equipe conhecer todas as partes do sistema.

• Programação em Pares: é a programação em par/dupla num único

computador. Geralmente a dupla é formada por um iniciante na linguagem

e outra pessoa funcionando como um instrutor. Como é apenas um

computador, o novato é que fica à frente fazendo a codificação, e o instrutor

acompanha ajudando a desenvolver suas habilidades. Desta forma o

programa sempre é revisto por duas pessoas, evitando e diminuindo assim

a possibilidade de erros. Com isto busca-se sempre a evolução da equipe,

melhorando a qualidade do código fonte gerado.

• Padrões de Codificação: A equipe de desenvolvimento precisa

estabelecer regras para programar e todos devem seguir estas regras.

Desta forma parecerá que todo o código fonte foi editado pela mesma

pessoa, mesmo quando a equipe possui 10 ou 100 membros.

• Desenvolvimento Orientado a Testes: Primeiro crie os testes

unitários e depois crie o código para que os testes funcionem. Esta

abordagem é complexa no início, pois vai contra o processo de

Page 15: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

desenvolvimento de muitos anos. Só que os testes unitários são essenciais

para que a qualidade do projeto seja mantida.

• Refatoração: É um processo que permite a melhoria continua da

programação, com o mínimo de introdução de erros e mantendo a

compatibilidade com o código já existente. Refabricar melhora a clareza

(leitura) do código, divide-o em módulos mais coesos e de maior

reaproveitamento, evitando a duplicação de código-fonte;

• Integração Contínua: Sempre que produzir uma nova funcionalidade,

nunca esperar uma semana para integrar à versão atual do sistema. Isto só

aumenta a possibilidade de conflitos e a possibilidade de erros no código

fonte. Integrar de forma contínua permite saber o status real da

programação.

2.1.1. SCRUM

Inicialmente, o Scrum foi concebido como um estilo de gerenciamento de

projetos em empresas de fabricação de automóveis e produtos de consumo, onde

foi notado que projetos usando equipes pequenas e multidisciplinares produziam

os melhores resultados.

A função primária do Scrum é ser utilizado para o gerenciamento de

projetos de desenvolvimento de software. Porém, teoricamente pode ser aplicado

em qualquer contexto no qual um grupo de pessoas necessitem trabalhar juntas

para atingir um objetivo comum, como iniciar uma escola pequena, projetos de

pesquisa científica, ou até mesmo o planejamento de um casamento.

Mesmo que o Scrum tenha sido idealizado para ser usado em gestão de

projetos de desenvolvimento de software, ele também pode ser usado para

gerenciar equipes de manutenção, ou como uma abordagem para gestão de

programas: Scrum de Scrums.

Características de Scrum:

• Cada sprint é uma iteração que segue o ciclo PDCA e entrega

incremento de software pronto.

Page 16: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

• Um backlog é conjunto de requisitos, priorizado pelo cliente;

• Há entrega de conjunto fixo de itens do backlog em série de

iterações curtas ou sprints;

• Breve reunião diária, ou scrum, em que cada participante fala sobre o

progresso conseguido, o trabalho a ser realizado e/ou o que o impede de

seguir avançando (também chamado de Standup Meeting, já que os

membros do time geralmente ficam em pé).

• Breve sessão de planejamento, na qual os itens do backlog para uma

sprint (iteração) são definidos;

• Retrospectiva, na qual todos os membros da equipe refletem sobre a

sprint passada.

O Scrum é facilitado por um Scrum Master, que tem como função primária

remover qualquer impedimento à habilidade de uma equipe de entregar o objetivo

do sprint. O Scrum Master não é o líder da equipe (já que as equipes são auto-

organizadas) mas atua como uma barreira entre a equipe e qualquer influência

desestabilizadora. Outra função extremamente importante de um Scrum Master é

o de assegurar que a equipe esteja utilizando corretamente as práticas de Scrum,

motivando-os e mantendo o foco na meta da Sprint.

Scrum permite a criação de equipes auto-organizadas, encorajando a

comunicação verbal entre todos os membros da equipe e entre todas as

disciplinas que estão envolvidas no projeto.

Um princípio chave do Scrum é o reconhecimento de que desafios

fundamentalmente empíricos não podem ser resolvidos com sucesso utilizando

uma abordagem tradicional de "controle". Assim, o Scrum adota uma abordagem

empírica, aceitando que o problema não pode ser totalmente entendido ou

definido, focando na maximização da habilidade da equipe de responder de forma

ágil aos desafios emergentes.

Um backlog é uma lista de itens priorizados a serem desenvolvidos para um

software. O backlog de produto é mantido pelo Proprietário do Produto e é uma

lista de requisitos que tipicamente vêm do cliente. O backlog de sprint é uma

interpretação do backlog do produto e contém tarefas concretas que serão

Page 17: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

realizadas durante o próximo sprint para implementar alguns dos itens principais

no backlog do produto. O backlog de produto e de sprint são, então, duas coisas

totalmente diferentes, o primeiro contendo requisitos de alto-nível e o segundo

contendo informações sobre como a equipe irá implementar os requisitos.

Antes de todo sprint, o Proprietário do Produto, o Scrum Master e a Equipe

decidem no que a equipe irá trabalhar durante o próximo sprint. O Proprietário do

Produto mantém uma lista priorizada de itens de backlog, o backlog do produto, o

que pode ser repriorizado durante o planejamento do sprint. A Equipe seleciona

itens do topo do backlog do produto. Eles selecionam somente o quanto de

trabalho eles podem executar para terminar. A Equipe então planeja a arquitetura

e o design de como o backlog do produto pode ser implementado. Os itens do

backlog do produto são então destrinchados em tarefas que se tornam o backlog

do sprint.

2.2. Metodologias ágeis em um ambiente disperso

Tendo em vista as características citadas do Scrum e do XP, elas sofrem

algumas adaptações levando em conta equipes que trabalham remotamente:

• Reuniões presenciais foram substituídas pela troca de mensagens

instantâneas em momentos programados, estabelecendo tempo de inicio e

de termino, para evitar reuniões longas.

• Conversas habituais e questionamentos eventuais tomam a forma de

e-mails, mas sempre destinados a todos do grupo, evocando uma conversa

multilateral e garantindo que todos os membros estejam a par da evolução

do projeto.

• A programação em pares não é possível, mas cada mudança é feita

por um membro é revisada por no mínimo mais um membro, tentado assim

simular o mesmo efeito desta prática.

Devido a falta de cliente neste projeto, toda referencia que requisitaria um

cliente, como a verificação dos requisitos, é feita por um integrante da equipe, que

tem um papel fixo para o controle de qualidade.

Page 18: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

3. Softwares Auxiliares

3.1 Controle de versão Utilizando uma metodologia ágil, temos inúmeras versões do software que é

construído de forma crescente, o que resulta em diversas versões do mesmo

código. Em projetos com grande números de versões esse fato se torna uma

complicação a mais a ser gerenciada, logo, procuramos por ferramentas que

automatizem esta tarefa, permitindo o armazenamento e a recuperação de código

antigo com um alto grau de precisão e facilidade. As ferramentas que Verificamos

foram o CVS, GIT e SVN, sendo que acabamos por usar o SVN, pelo uso fácil e

por ser multiplataforma.

3.1.1. CVS

O CVS, (Sistema de Versões Concorrentes) é um sistema de controle de

versão que permite que se trabalhe com diversas versões de arquivos

organizados em um diretório e localizados local ou remotamente, mantendo-se

suas versões antigas e os logs de quem e quando manipulou os arquivos.

É especialmente útil para se controlar versões de um software durante seu

desenvolvimento, ou para composição colaborativa de um documento.

CVS utiliza uma arquitetura cliente-servidor: um servidor armazena as

versões atuais do projeto e seu histórico, e os clientes se conectam a esse

servidor para obter uma cópia completa do projeto, trabalhar nessa cópia e então

devolver suas modificações. Tipicamente, cliente e servidor devem estar

conectados por uma rede local de computadores, ou pela Internet, mas o cliente e

o servidor podem estar na mesma máquina se a configuração do CVS for feita de

maneira a dar acesso a versões e histórico do projeto apenas a usuários locais. O

servidor geralmente roda sistema ao estilo Unix, enquanto o cliente CVS pode

rodar qualquer sistema operacional.

Page 19: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

Vários clientes podem editar cópias do mesmo projeto de maneira

concorrente. Quando eles confirmam suas alterações, o servidor tenta fazer uma

fusão delas. Se isso não for possível, por exemplo porque mais de um cliente

tentou executar alterações na mesma linha do documento, o servidor apenas

executa a primeira alteração e informa ao responsável pela segunda alteração que

houve conflito, e que é necessário uma intervenção humana. Se a validação da

alteração for bem sucedida, o número de versão de cada cliente arquivo envolvido

é incrementado, e o servidor CVS escreve uma linha de observação (fornecida

pelo usuário), a data e o autor das alterações em seus arquivos de log.

Clientes podem comparar diferentes versões de um arquivo, pedir um

histórico completo das alterações, ou baixar uma determinada versão do projeto,

ou de uma data específica, não necessariamente a versão mais atual. Muitos

projetos de código aberto permitem acesso para leitura anônimo, o que significa

que qualquer pessoa pode baixar ou comparar versões sem necessidade de

autenticação; somente para salvar mudanças é necessário informar a senha

nesses casos.

Clientes também podem usar o comando "update" para manter suas cópias

locais atualizadas com a última versão do servidor. Isso elimina a necessidade de

se fazer diversos downloads de todo o projeto.

O CVS também pode manter diferentes "estados" do projeto. Por exemplo,

uma versão do software pode ser um desses estados, usado para correção de

bugs, enquanto outra versão, que está realmente sob desenvolvimento, sofrendo

alterações e tendo novas funcionalidades implementadas, forma o outro estado.

O CVS usa compressão delta para armazenar de maneira eficiente

diferentes versões de um mesmo arquivo.

Limitações:

• Os arquivos em um repositório CVS não podem ser renomeados, eles

devem ser explicitamente removidos e readicionados.

• O protocolo do CVS não permite que os diretórios sejam movidos ou

renomeados. Cada arquivo do subdiretório em questão deve ser

individualmente removido e readicionado.

Page 20: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

• Não permite "checkout" reservados (permite que dois usuários alterem o

mesmo arquivo ao mesmo tempo) e em alguns casos pode ser mais

custoso resolver o conflito do que evitar que ele ocorra.

3.1.2. GIT

Git é um software gratuito para controle de versão distribuido, ou seja um

software para gerencimento de código fonte com enfase em ser rápido.

Cada diretório de trabalho Git é um repositório com todos os históricos e

habilidade total de controle das revisões, não depedente de acesso a uma rede ou

a um servidor central.

O design do Git foi inspirado por dois outros sistemas de versionamento:

BitKeeper e Monotone. O Git foi criado originalmente apenas como um mecanismo

de baixo nível, que outros poderiam usar para escrever front ends como o Cogito

ou o StGIT.

Entretanto, o projeto principal do Git acabou virando um sistema de controle

de versão completo, que pode ser usado diretamente. Hoje em dia, vários projetos

de alto nível já usam o Git para controle de versões, destacando-se entre eles o

kernel Linux.

3.1.3. Subversion

Subversion (também conhecido por SVN) é um sistema de controle de

versão desenhado especificamente para ser um substituto moderno do CVS, que

se considera ter algumas limitações.

Características:

• Rastreamento de mesclagens.

• Suporte ao BDB 4.4

• O acesso ao repostório mudou um pouco. Quer dizer que seu

repositório vai ser gradativamente sendo atualizado. Então versões

anteriores não poderão acessar novos repositórios.

Page 21: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

• Binds para python e ruby

• Mais de 30 bugs corrigidos

• trancamento de ficheiros para ficheiros infundiveis ("reserved

checkouts")

• autoversionamento WebDAV integral

• mensagens internacionalizadas do programa

• versionamento de atalhos simbólicos

• um novo formato de repositório, FSFS, que não usa um "back-end"

de base de dados, guardando as revisões em ficheiros no sistema de

ficheiros.

• as características mais correntes do CVS

• Diretórios, mudanças de nome e meta-data de ficheiros são

versionadas

• as operações de "commit" são verdadeiramente atômicas

• servidor HTTP Apache como servidor de rede, WebDAV/DeltaV

como protocolo (também existe um processo independente de servidor que

usa um protocolo personalizado sobre TCP/IP)

• a ramificação e a etiquetagem são operações "baratas" (em tempo

constante)

• desenho nativo de arquitectura cliente-servidor e de "biblioteca em

camadas"

• o protocolo cliente-servidor envia diffs em ambas as direcções

• os custos são proporcionais ao tamanho das mudanças e não ao

tamanho dos dados

• tratamento eficiente de ficheiros binários.

• saida de informação passivel de ser analisada gramaticalmente

(incluindo a saida de registos em formato XML)

• licença de software livre - "licença CollabNet/Tigris.org do género

Apache-style"

Page 22: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

Figura 3: Estrutura de um repositório SVN

3.2 Gerência de projeto Quando se esta trabalha com o desenvolvimento de software, temos

diversas tarefas que devem ser realizadas, e quando se trabalha em grupo, tem

de se existir um controle sobre quem está responsável por quais tarefas, além do

andamento das mesmas e possíveis novas tarefas que possam existir. Como seria

necessário um canal de comunicação constante para a realização desta tarefa, e

como isso não é possível em grupo de desenvolvimento distribuído

Page 23: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

geograficamente, a solução é a utilização de um software que possa armazenar as

informações sobre as tarefas e também a capacidade de delegar as mesmas. Nós

verificamos 3 softwares desta categoria, ClockingIT, Web Chamado e OpenProj.

Acabamos escolhendo o ClockingIT, pois ele funciona no formato webserver,

possibilitando a consulta remota desde que o servidor se encontre disponível..

3.2.1.ClockingIT

ClockingIT é uma ferramenta para controle de projetos, bugs e releases. O

ClockingIT segue a mesma receita de muitos projetos de alta qualidade e valor

agregado disponíveis atualmente: nasceu de uma necessidade do próprio

desenvolvedor.

O sistema permite o cadastro de diversos projetos e colaboradores. Em

cada projeto, é possível criar milestones e tarefas (com diversos graus de

prioridade, nível de dificuldade, tempo estimado de execução e data de entrega) e

designar um colaborador para sua execução. Além disso, o sistema permite a

criação de subtarefas e permite registrar o tempo levado para executar cada

tarefa, gerando um log de trabalho.

O grande diferencial do clockingIT é a qualidade da interface. O design

gráfico é simples, limpo e extremamente intuitivo, fazendo um uso intensivo e

inteligente de scripts e recursos assíncronos. A interação como o site é

extremamente ágil e leve, exatamente como em software desktop. Qualquer ação

efetuada por algum usuário é imediatamente refletida na tela de outros usuários

conectados no mesmo projeto. É possível saber em tempo real quem está

conectado no sistema, o que está fazendo, a quanto tempo está fazendo. E graças

ao chat embutido, é possível até conversar com outros colaboradores.

O sistema oferece integração com iCal (pode ser integrado com Google

Calendar ou com o calendário da Apple por exemplo), sistema de RSS, um wiki,

fórum , e uma speedbar (uma janelinha pequena) que permite que o usuário

marque o início e fim de uma tarefa (com botões de start, stop e pause e um

cronômetro rodando em tempo real).

Page 24: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

Figura 4: Gráfico de Gantt do ClockingIT

3.2.2. Web Chamado

WebChamado é um software focado no auxilio da evolução de outros

projetos por meio de abertura e acompanhamento de chamados. Totalmente Web,

possibilita o acompanhamento de chamados na internet ou intranet, podendo

assim a abertura e acompanhamento de chamados em qualquer lugar,

dependendo somente de uma conexão com a internet.

Todas as iterações com o projeto é notificada por e-mail, seja ela por meio

de quem abriu o chamado ou pelo responsável envolvido no processo, assim que

o chamado sofrer uma iteração automaticamente todas as pessoas envolvidas

serão notificadas.

Permite um acompanhamento por meio de gráficos estatísticos que

auxiliam na tomada de decisão referente a um determinado projeto, como por

exemplo em qual período do mês um determinado projeto recebe uma maior

quantidade de chamados, desta forma pode-se ampliar a equipe responsável pelo

Page 25: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

projeto a fim de diminuir o tempo de resposta dos chamados abertos neste

período de maior ocorrência de chamados, seja proveniente de correção de

problemas ou solicitação de evolução.

Figura 5: Lista de chamados do Web Chamado

3.2.3. OpenProj

OpenProj é um gerenciador de projetos desenvolvido como alternativa ao

Microsoft Project. Com código aberto, o programa oferece várias opções para a

inclusão e administração de todas as atividades co-relacionadas ao

desenvolvimento das atividades, apresentando os resultados, em especial, sob o

formato de Gráficos de Gantt.

Este tipo de gráfico ilustra, na forma de barras, o cronograma de um

projeto, com as datas de início, fim e todas as tarefas atribuídas devidamente

registradas, sendo, por este motivo, muito utilizado para representar o status atual

da programação de um projeto.

Page 26: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

OpenProj é uma das melhores iniciativas em se tratando de programas com

código aberto para a gerencia de projetos, apresentando todas as opções

necessárias para o usuário armazenar suas informações e obter sucesso em seus

negócios. OpenProj é um programa realmente versátil. Com uma interface simples

de usar, o gerenciador de projetos apresenta todas as opções importantes para se

realizar uma administração de informações e tarefas a serem cumpridas. A

metodologia aplicada é a de diagramas de Gantt, muito usada na atualidade,

podendo ser adaptado para metodologias PMBOK, um conjunto de práticas em

gerência de projetos de muita qualidade.

Figura 6: Gráfico de Gantt do OpenProj

3.3. Documentação Para a criação da documentação, resolvemos no primeiro momento adotar

algum software que realizasse essa tarefa de forma automatizada, agilizando

Page 27: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

assim um processo que costumar ser ardiloso de ser implementado. Mas devido a

falta de tempo deixado para esta tarefa, a documentação ficou restrita somente

aos comentários situados no código, mas mostraremos as características dos

programas que exploramos para futura referência.

3.3.1. Doxygen

Doxygen é um programa que gera a documentação de um programa a

partir da analise dos fontes de um programa escrito diversas linguagens. Nesta

análise são reconhecidas declarações de estruturas de dados e funções e

comentários feitos com uma sintaxe especial.

Muitas vezes é necessário ter uma documentação externa ao fonte. Se esta

documentação não for gerada de forma automática, é necessário manter

sincronizadas três coisas: o código, os comentários e a documentação. Com o

Doxygen basta manter sincronizados os dois primeiros, a documentação será

gerada diretamente a partir deles.

A saída nativa do Doxygen é HTML, mas ele suporta diversos tipos de

saída, como DOC, PDF e CHM.

3.3.2. Phpdocumentator

O phpDocumentator é uma ferramenta para auto-documentação utilizado

com a linguagem php. Similar ao Javadoc, e escrito em php. O phpDocumentator

pode ser ainda usado na linha de comando ou através de uma interface web para

criar documentação profissional do código php da aplicação.

O phpDocumentator tem suporte para a linkagem entre documentos,

incluindo a criação de documentos a níveis de usuários como tutoriais e

criação de código destacado com referência para documentação geral de

php.

As tags para a criação da documentação são inseridas através dentro de

comentários.

Page 28: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

O phpDocumentator usa um sistema de templates extensíveis para mudar

os comentários do código fonte em um formato útil para que possamos ler. Esse

sistema permite a fácil criação para ler o documento em 15 diferentes HTML

designers, formato PDF, CHM e em DocBook XML.

Page 29: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

4. Sistema de Integração de Informações Médicas

4.1 Cronograma de desenvolvimento

Na primeira semana de realização do projeto, começamos a pesquisar qual

seria o assunto a ser abordado (metodologias a serem aplicadas) e qual seria o

tipo de aplicação a ser desenvolvida. Ao final da segunda semana chegamos a

conclusão através da analise de diversos projetos que a mistura entre XP e Scrum

seria a mais indicada para nosso caso (equipe pequena, projeto de pequeno porte,

prazo médio de 6 meses, possibilidade de comunicação constante); e também que

o software a ser desenvolvido seria do tipo EMR.

Da terceira a nona semana, nos dedicamos a pesquisa de softwares que

auxiliassem a concepção do projeto, e verificando quais as características que

cada software continha, e qual deles se adaptariam de melhor forma a nossas

necessidades. Nesse meio tempo também definimos as bases do projeto, como a

utilização de php e mysql para criação do mesmo, e quais seriam as

funcionalidades a serem implementadas, com base nas funcionalidades dos

programas pesquisados.

A partir da décima semana, começamos com a codificação do projeto em si,

dedicando as duas primeiras semanas para a formulação do banco de dados que

armazenaria as informações, visando que após a formulação do banco de dados,

as tarefas poderiam ocorrer de forma simultânea pois não haveria nenhuma

dependência de informações sobre elas, pois já estaria definido o formato das

informações a ser manipulado.

Na décima segunda semana até décima oitava semana, trabalhamos na

implementação das funcionalidades desejadas através de scripts de php, além da

modelagem da interface, que envolveu a aplicação de CSS para criação de um

estilo padrão para o programa. Neste ponto tivemos a ajuda do aluno Moisés

Dorneles, que foi responsável pela edição das imagens utilizadas.

Page 30: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

Os primeiros scripts de php realizados eram referentes estrutura da

interface, pois tentamos estruturar o programa de forma a em qualquer uma das

opções abordadas, se mantivessem diversos elementos em comum. Após,

começou o trabalho a como seria feito a entrada no sistema, que ficou sendo

através de um username e password, sendo que cada username teria atribuído

um nível, que seria relativo a suas permissões quanto a alteração e visualização

de dados. Também foi sendo desenvolvido as duas principais entidades a serem

manipuladas, médicos e pacientes, além da implementação de um calendário para

agendamento de consultas. As últimas alterações a serem feitas foram a interface

de administração e de funcionários administrativos, que devido ao tempo não

foram completamente implementados.

As duas últimas semanas saímos fora metodologia habitual devido a ser o

período de provas da faculdade, e resolvemos parar com os ciclos de

desenvolvimento e nos concentrar apenas nos testes da interface e verificação da

comunicação entre os módulos, dando forma ao produto final.

Figura 7: Tela de abertura do SIIM

Page 31: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

5. Conclusão Com o desenvolvimento desse trabalho, podemos como as metodologias

ágeis pode ser adaptadas para diferente ambientes, com regras flexíveis e grande

efetivas, se forem exercidas corretamente. A quantidade de ferramentas relativas

ao processo de desenvolvimento também tem um grande impacto, ajudando a

revisão de erros, distribuição de tarefas e a automatização de tarefas relativas ao

desenvolvimento.

Também observamos a tendência da migração da plataforma das

aplicações para web, devido a infinidade de sistemas e ferramentas suportado por

este tipo de ambiente, possibilitando uma alta disponibilidade sem uma

dependência de acesso físico ao ambiente a ser implementado.

Notamos que apesar de utilizar modularidade durante a codificação do

programa, houve um certo alto nível de dependência entre os módulos, de forma a

obrigar quem estava a alterar um módulo de conhecer a estrutura básica dos

outros módulos conectados ao mesmo. Isso é um efeito totalmente indesejável em

um projeto de grande porte, e deve ser evitado ao máximo possível.

Pela falta de enfoque na documentação, este foi o último item a ser

desenvolvido, e ficou restrito a pequenos comentários ao longo do código, o que

talvez não ajude a entender toda a extensão do programa, demonstrando a

necessidade de uma documentação adequada para um melhoramento continuo

do código com agilidade.

Por último, vimos que as das tarefas mais árduas seguindo metodologias

ágeis são a estipulação de tempo para implementação de cada funcionalidade

(pois um calculo errado de tempo e poderia afetar todo o calendário de

desenvolvimento, fazendo com que o atraso se propagasse pro outras tarefas); e

também uma particularidade de trabalhar em um ambiente distribuído, que era

garantir comunicação direta entre os membros, o que pode ser feito através de

softwares específicos e planejamento de longo prazo.

Page 32: Sistema de integração de Informações Médicas (SIIM) - Versão artigo

Referências Bibliográficas

http://www.extremeprogramming.org/

http://www.ime.usp.br/~xp

http://www.softwarereality.com/ExtremeProgrammingRefactored.jsp

http://www.agilemanifesto.org/

http://www.improveit.com.br/xp/dissertacaoXP.pdf

http://www.mountaingoatsoftware.com/scrum/

http://www.crisp.se/henrik.kniberg/ScrumAndXpFromTheTrenches.pdf

www.clockingit.com/

http://superdownloads.uol.com.br/windows/empresas/clinicas-farmacias-

consultorios.html

http://savannah.nongnu.org/projects/cvs/

http://subversion.tigris.org/

http://git-scm.com/

http://webchamado.sourceforge.net/

http://sourceforge.net/projects/openproj/

http://www.stack.nl/~dimitri/doxygen/manual.html

http://www.phpdoc.org/