SlideShare a Scribd company logo
1 of 32
Download to read offline
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
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
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
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.
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
á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.
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;
•   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;
•   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
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);
•     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.
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
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.
•     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
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.
•      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
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.
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.
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.
•   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.
•      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"
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
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).
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
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.
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
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.
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.
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.
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
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.
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/

More Related Content

Similar to Sistema de integração de informações médicas

TCC - APLICAÇÕES PARA DISPOSITIVOS MÓVEIS: Um Protótipo de um Aplicativo de A...
TCC - APLICAÇÕES PARA DISPOSITIVOS MÓVEIS: Um Protótipo de um Aplicativo de A...TCC - APLICAÇÕES PARA DISPOSITIVOS MÓVEIS: Um Protótipo de um Aplicativo de A...
TCC - APLICAÇÕES PARA DISPOSITIVOS MÓVEIS: Um Protótipo de um Aplicativo de A...Vinicius Dantas Dos Santos
 
BUSINESS INTELLIGENCE APLICADO AO PRONTUÁRIO ELETRÔNICO DE PACIENTES (PEP).
BUSINESS INTELLIGENCE APLICADO AO PRONTUÁRIO ELETRÔNICO DE PACIENTES (PEP).BUSINESS INTELLIGENCE APLICADO AO PRONTUÁRIO ELETRÔNICO DE PACIENTES (PEP).
BUSINESS INTELLIGENCE APLICADO AO PRONTUÁRIO ELETRÔNICO DE PACIENTES (PEP).Fulvio Amato
 
Audit 01-apostila-auditoria-em-si
Audit 01-apostila-auditoria-em-siAudit 01-apostila-auditoria-em-si
Audit 01-apostila-auditoria-em-siAlves Albert
 
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...Igor Costa
 
Data mining: Auxiliando as empresas na tomada de decisão
Data mining: Auxiliando as empresas na tomada de decisãoData mining: Auxiliando as empresas na tomada de decisão
Data mining: Auxiliando as empresas na tomada de decisãoAntonioEE256
 
AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...
AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...
AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...Felipe Pontes
 
Cartão SUS - Manual Cadweb SUS
Cartão SUS - Manual Cadweb SUSCartão SUS - Manual Cadweb SUS
Cartão SUS - Manual Cadweb SUSNeto Oliveira
 
Trabalho de diplomação I
Trabalho de diplomação ITrabalho de diplomação I
Trabalho de diplomação IEdmilson Hora
 
Plano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebPlano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebJorge Roberto
 
Plano de projeto de software para o sistema MEA - monitoraemto de eventos ad...
Plano de projeto de software para o sistema  MEA - monitoraemto de eventos ad...Plano de projeto de software para o sistema  MEA - monitoraemto de eventos ad...
Plano de projeto de software para o sistema MEA - monitoraemto de eventos ad...Lucas Aquino
 
Repositório do Parque Tecnológico da PMSP
Repositório do Parque Tecnológico da PMSPRepositório do Parque Tecnológico da PMSP
Repositório do Parque Tecnológico da PMSPMário Januário Filho
 
Manutenção preventiva
Manutenção preventivaManutenção preventiva
Manutenção preventivaMarcelo santos
 
Projeto de pesquisa - Automação Residencial
Projeto de pesquisa - Automação ResidencialProjeto de pesquisa - Automação Residencial
Projeto de pesquisa - Automação ResidencialMatheus Alves
 
Pim iii unip interativa
Pim iii unip interativa Pim iii unip interativa
Pim iii unip interativa thiroman
 

Similar to Sistema de integração de informações médicas (20)

TCC - APLICAÇÕES PARA DISPOSITIVOS MÓVEIS: Um Protótipo de um Aplicativo de A...
TCC - APLICAÇÕES PARA DISPOSITIVOS MÓVEIS: Um Protótipo de um Aplicativo de A...TCC - APLICAÇÕES PARA DISPOSITIVOS MÓVEIS: Um Protótipo de um Aplicativo de A...
TCC - APLICAÇÕES PARA DISPOSITIVOS MÓVEIS: Um Protótipo de um Aplicativo de A...
 
BUSINESS INTELLIGENCE APLICADO AO PRONTUÁRIO ELETRÔNICO DE PACIENTES (PEP).
BUSINESS INTELLIGENCE APLICADO AO PRONTUÁRIO ELETRÔNICO DE PACIENTES (PEP).BUSINESS INTELLIGENCE APLICADO AO PRONTUÁRIO ELETRÔNICO DE PACIENTES (PEP).
BUSINESS INTELLIGENCE APLICADO AO PRONTUÁRIO ELETRÔNICO DE PACIENTES (PEP).
 
Pim viii soluções_por_software
Pim viii soluções_por_softwarePim viii soluções_por_software
Pim viii soluções_por_software
 
Audit 01-apostila-auditoria-em-si
Audit 01-apostila-auditoria-em-siAudit 01-apostila-auditoria-em-si
Audit 01-apostila-auditoria-em-si
 
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...
Plano de Projeto de Software para o desenvolvimento do SIGE (Sistema de Geren...
 
Data mining: Auxiliando as empresas na tomada de decisão
Data mining: Auxiliando as empresas na tomada de decisãoData mining: Auxiliando as empresas na tomada de decisão
Data mining: Auxiliando as empresas na tomada de decisão
 
AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...
AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...
AMAO - DESENVOLVIMENTO DE UM AMBIENTE ONLINE DE AUXÍLIO À CORREÇÃO E RESOLUÇÃ...
 
Cartão SUS - Manual Cadweb SUS
Cartão SUS - Manual Cadweb SUSCartão SUS - Manual Cadweb SUS
Cartão SUS - Manual Cadweb SUS
 
Trabalho de diplomação I
Trabalho de diplomação ITrabalho de diplomação I
Trabalho de diplomação I
 
Plano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebPlano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na Web
 
Plano de projeto de software para o sistema MEA - monitoraemto de eventos ad...
Plano de projeto de software para o sistema  MEA - monitoraemto de eventos ad...Plano de projeto de software para o sistema  MEA - monitoraemto de eventos ad...
Plano de projeto de software para o sistema MEA - monitoraemto de eventos ad...
 
Sistemas para saúde 04
Sistemas para saúde 04Sistemas para saúde 04
Sistemas para saúde 04
 
Repositório do Parque Tecnológico da PMSP
Repositório do Parque Tecnológico da PMSPRepositório do Parque Tecnológico da PMSP
Repositório do Parque Tecnológico da PMSP
 
Manutenção preventiva
Manutenção preventivaManutenção preventiva
Manutenção preventiva
 
Projeto de pesquisa - Automação Residencial
Projeto de pesquisa - Automação ResidencialProjeto de pesquisa - Automação Residencial
Projeto de pesquisa - Automação Residencial
 
Sistemas integrados
Sistemas integradosSistemas integrados
Sistemas integrados
 
466 1478-1-pb
466 1478-1-pb466 1478-1-pb
466 1478-1-pb
 
466 1478-1-pb
466 1478-1-pb466 1478-1-pb
466 1478-1-pb
 
Mrtg
MrtgMrtg
Mrtg
 
Pim iii unip interativa
Pim iii unip interativa Pim iii unip interativa
Pim iii unip interativa
 

More from Jerônimo Medina Madruga

PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019
PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019
PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019Jerônimo Medina Madruga
 
Rock & Code - Como criar música programando - Tchelinux pelotas 2019
Rock & Code - Como criar música programando - Tchelinux pelotas 2019Rock & Code - Como criar música programando - Tchelinux pelotas 2019
Rock & Code - Como criar música programando - Tchelinux pelotas 2019Jerônimo Medina Madruga
 
Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019
Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019
Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019Jerônimo Medina Madruga
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Jerônimo Medina Madruga
 
Dê a cara a tapa como se destacar no mercado de trabalho - Tchelinux Sant'An...
Dê a cara a tapa  como se destacar no mercado de trabalho - Tchelinux Sant'An...Dê a cara a tapa  como se destacar no mercado de trabalho - Tchelinux Sant'An...
Dê a cara a tapa como se destacar no mercado de trabalho - Tchelinux Sant'An...Jerônimo Medina Madruga
 
Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...
Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...
Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...Jerônimo Medina Madruga
 
Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...
Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...
Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...Jerônimo Medina Madruga
 
Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...
Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...
Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...Jerônimo Medina Madruga
 
Rock And Code: Como criar música programando
Rock And Code: Como criar música programandoRock And Code: Como criar música programando
Rock And Code: Como criar música programandoJerônimo Medina Madruga
 
Remember the name: Como se tornar um rockstar no mercado de trabalho
Remember the name: Como se tornar um rockstar no mercado de trabalhoRemember the name: Como se tornar um rockstar no mercado de trabalho
Remember the name: Como se tornar um rockstar no mercado de trabalhoJerônimo Medina Madruga
 
Como se tornar um programador melhor - Saci 2017 IFSul Bagé
Como se tornar um programador melhor - Saci 2017 IFSul BagéComo se tornar um programador melhor - Saci 2017 IFSul Bagé
Como se tornar um programador melhor - Saci 2017 IFSul BagéJerônimo Medina Madruga
 
Dê a cara a tapa 5 estratégias para se sobressair no mercado e ser um profis...
Dê a cara a tapa  5 estratégias para se sobressair no mercado e ser um profis...Dê a cara a tapa  5 estratégias para se sobressair no mercado e ser um profis...
Dê a cara a tapa 5 estratégias para se sobressair no mercado e ser um profis...Jerônimo Medina Madruga
 
Aprendendo a aprender software livre - Tchelinux Bagé 2017
Aprendendo a aprender software livre - Tchelinux Bagé 2017Aprendendo a aprender software livre - Tchelinux Bagé 2017
Aprendendo a aprender software livre - Tchelinux Bagé 2017Jerônimo Medina Madruga
 
Moodle direto das trincheiras - Tchelinux UCPel 2017
Moodle direto das trincheiras - Tchelinux UCPel 2017Moodle direto das trincheiras - Tchelinux UCPel 2017
Moodle direto das trincheiras - Tchelinux UCPel 2017Jerônimo Medina Madruga
 
Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017
Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017
Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017Jerônimo Medina Madruga
 
Tudo que você queria saber sobre software livre mas não tinha coragem de perg...
Tudo que você queria saber sobre software livre mas não tinha coragem de perg...Tudo que você queria saber sobre software livre mas não tinha coragem de perg...
Tudo que você queria saber sobre software livre mas não tinha coragem de perg...Jerônimo Medina Madruga
 
Aprendendo a aprender software livre - Tchelinux Bagé 2016
Aprendendo a aprender software livre - Tchelinux Bagé 2016Aprendendo a aprender software livre - Tchelinux Bagé 2016
Aprendendo a aprender software livre - Tchelinux Bagé 2016Jerônimo Medina Madruga
 
Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...
Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...
Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...Jerônimo Medina Madruga
 
Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...
Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...
Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...Jerônimo Medina Madruga
 

More from Jerônimo Medina Madruga (20)

PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019
PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019
PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019
 
Rock & Code - Como criar música programando - Tchelinux pelotas 2019
Rock & Code - Como criar música programando - Tchelinux pelotas 2019Rock & Code - Como criar música programando - Tchelinux pelotas 2019
Rock & Code - Como criar música programando - Tchelinux pelotas 2019
 
Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019
Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019
Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
 
Dê a cara a tapa como se destacar no mercado de trabalho - Tchelinux Sant'An...
Dê a cara a tapa  como se destacar no mercado de trabalho - Tchelinux Sant'An...Dê a cara a tapa  como se destacar no mercado de trabalho - Tchelinux Sant'An...
Dê a cara a tapa como se destacar no mercado de trabalho - Tchelinux Sant'An...
 
Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...
Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...
Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...
 
Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...
Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...
Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...
 
Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...
Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...
Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...
 
Rock And Code: Como criar música programando
Rock And Code: Como criar música programandoRock And Code: Como criar música programando
Rock And Code: Como criar música programando
 
Do zero ao python em 40 minutos!
Do zero ao python em 40 minutos!Do zero ao python em 40 minutos!
Do zero ao python em 40 minutos!
 
Remember the name: Como se tornar um rockstar no mercado de trabalho
Remember the name: Como se tornar um rockstar no mercado de trabalhoRemember the name: Como se tornar um rockstar no mercado de trabalho
Remember the name: Como se tornar um rockstar no mercado de trabalho
 
Como se tornar um programador melhor - Saci 2017 IFSul Bagé
Como se tornar um programador melhor - Saci 2017 IFSul BagéComo se tornar um programador melhor - Saci 2017 IFSul Bagé
Como se tornar um programador melhor - Saci 2017 IFSul Bagé
 
Dê a cara a tapa 5 estratégias para se sobressair no mercado e ser um profis...
Dê a cara a tapa  5 estratégias para se sobressair no mercado e ser um profis...Dê a cara a tapa  5 estratégias para se sobressair no mercado e ser um profis...
Dê a cara a tapa 5 estratégias para se sobressair no mercado e ser um profis...
 
Aprendendo a aprender software livre - Tchelinux Bagé 2017
Aprendendo a aprender software livre - Tchelinux Bagé 2017Aprendendo a aprender software livre - Tchelinux Bagé 2017
Aprendendo a aprender software livre - Tchelinux Bagé 2017
 
Moodle direto das trincheiras - Tchelinux UCPel 2017
Moodle direto das trincheiras - Tchelinux UCPel 2017Moodle direto das trincheiras - Tchelinux UCPel 2017
Moodle direto das trincheiras - Tchelinux UCPel 2017
 
Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017
Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017
Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017
 
Tudo que você queria saber sobre software livre mas não tinha coragem de perg...
Tudo que você queria saber sobre software livre mas não tinha coragem de perg...Tudo que você queria saber sobre software livre mas não tinha coragem de perg...
Tudo que você queria saber sobre software livre mas não tinha coragem de perg...
 
Aprendendo a aprender software livre - Tchelinux Bagé 2016
Aprendendo a aprender software livre - Tchelinux Bagé 2016Aprendendo a aprender software livre - Tchelinux Bagé 2016
Aprendendo a aprender software livre - Tchelinux Bagé 2016
 
Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...
Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...
Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...
 
Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...
Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...
Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...
 

Sistema de integração de informações médicas

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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.
  • 5. 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
  • 6. á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.
  • 7. 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;
  • 8. 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;
  • 9. 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
  • 10. 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);
  • 11. 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.
  • 12. 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
  • 13. 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.
  • 14. 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
  • 15. 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.
  • 16. 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
  • 17. 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.
  • 18. 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.
  • 19. 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.
  • 20. 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.
  • 21. 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"
  • 22. 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
  • 23. 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).
  • 24. 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
  • 25. 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.
  • 26. 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
  • 27. 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.
  • 28. 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.
  • 29. 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.
  • 30. 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
  • 31. 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.