Checklist Programação

De UniWiki
Revisão de 10h08min de 17 de agosto de 2012 por RafaelPires (Discussão | contribs) (Dependências)
Ir para: navegação, pesquisa


Checklist de Programação

Para manter um código padronizado e conciso,
a Uniware preparou as tabelas a seguir, que
auxiliam a garantir uma escrita comum entre
os colaboradores e as medidas preventivas
antes de inserir alterações no software.
esse documento é uma cópia de:

D:\CVS\documentos\Check-list programação.xls

Padrões

Nomeclatura de tabelas Segue o prefixo {:alnum:}{:alnum:}*_ (2 caracterres e 1 underline)

afim de identificar qual projeto a tabela pertence. Exemplos:

LB_ Tabelas do Unilab
SA_ Tabelas do SAC
FN_ Tabelas do Financeiro do Unilab
HP_ Tabelas importadas do Hermes Pardini
AL_ Tabelas importadas do Álvaro
CR_ Tabelas importadas do Criesp
SF_ Tabelas importadas do Sérgio Franco
LOG_ Tabelas de logs de alterações em outras Tabelas
U2U_ Interface Unilab
Nomeclatura de views Utiliza o prefixo {:alnum:}{:alnum:}*V . Exemplos:
Nome Aplicação Principal Tabela da view
LBVPEDI Unilab LB_PEDI
LBVEXAM Unilab LB_EXAM
Nomeclatura de campos Como prefixo, é adicionado uma caracter para definir seu tipo.
C Caracter
N Numérico
D Data e hora
E Enumerado

IMPORTANTE: Não criar campos do tipo booleano, pois
esse tipo possui imcompatibilidade entre SGDB's.
Utilizar um Enumerado de S/N quando for necessário.

Tipos de campo Alguns tipos de campos adotam um padrão em qualquer parte do sistema, são eles:
Monetário DECIMAL(12,2);
Data, hora DATETIME;
Booleano ENUM('S','N');
Tamanho máximo de uma tela MDI 1020x680
Nova Aplicação Certificar-se de que:
  1. Todos os programadores possuem as ferramentas e compiladores necessários para dar manutenção.
  2. Criar uma pasta no subversion para a aplicação e a cada etapa efetivamente concluída, postar os fontes com uma descrição de acordo.
  3. Atualizar o artigo Aplicativos Uniware
  • Quando a aplicação possuir uma versão de release, criar uma pasta no servidor com acesso para o suporte e disponibilizar os binários nela.
  • Atualizar o artigo Aplicativos Uniware
Código fonte Em Delphi, segue os seguintes padrões abaixo:
Tipo Padrão Exemplo
Constantes Caixa alta, espaçamento com "_" VALOR_PAGAMENTO_MINIMO
Variáveis, functions, procedures e nomes de classe Capitalizado UmNomeBemGrandeColocarAPrimeiraLetraDeCadaPalavraEmMaiusculo
Variáveis de Classe Iniciar com "F" FCodiLab
Variáveis do DB utilizar o mesmo nome do DB TUnilabNumeroAmostra.CCODIPOST
Variáveis de function/procedure Iniciar com "v" minúsculo vVersao
Variáveis globais Iniciar com "Global" GlobalPostoColeta
Parâmetros (function/procedure) Iniciar com "a" minúsculo aCodiExpr
function/procedure aninhados Iniciar com "_" _PedidoAlterado
Classes (Tipos) Iniciar com "T" TUnilabNumeroAmostra
Units Iniciar com "U" UUnilabNumeroAmostra
Forms Iniciar com "F" FExamesCad

Dependências

Permitiu ao posto de coleta alterar campo da expr. Na transmissão da expr do posto para a central tem que colocar um tratamento específico senão a informação não será transmitida.
Novo campo na LBVPEDI Criar o campo também na LBVPEDI_NAO_COLETADOS
Criação de nova tabela Verificar possíveis alterações em:
  • ufExcluaDados
  • ufExcluaDadosFinanceiro
  • ufPreparaMov
  • ufManutencao.RecalculaUlibseq
  • ufManutencao.PreparaBaseCopiada
  • uTransmissao
  • ufPostCad (CTRANSTRAN)
  • uTraduzirExcecao
  • Dicionário de dados
Criação de chave Estrangeira Afim de evitar erros nos bancos MySQL hospedados em Linux, deve-se criar separadamente a tabela, a chave e a chave estrangeira. Exemplo:
CREATE TABLE LB_TESTE...
ALTER TABLE LB_TESTE
   ADD KEY FK_TESTE_CODI (CCODITESTE)
ALTER TABLE LB_TESTE
   ADD CONSTRAINT FK_TESTE_CODI FOREIGN KEY (CCODITESTE)
REFERENCES LB_OUTRO (CCODIOUTRO) 

Caso a chave estrangeira for relacionada com a tabela de exames, verificar TFExamRename.Processar.

Criar Campo na LB_EXAM Ao adicionar um novo campo na tabela:
  • Na tabela ULIBMETA criar um registro com o nome e definição do campo. (TFExamRelHistAlter depende desta tabela pra funcionar)
  • Verificar se para amostra adicional é necessário copiar o valor do campo do pai para os filhos: CADAntesCommit e CCODIPAIEXAMValidar
  • Ao Criar novos campos na LB_EXAM deve verificar as rotinas UFExamExporta e UFExamImporta para ver se o campo criado pode influenciar na rotina.
  • Verificar as rotinas de gravação do log de alteração do cadastro de exames (UFExamRelHistAlter) E seu respectivo relatório E se alteração implica na alteração da vigência do exame.
  • verificar a necessidade de incluir o novo campo no relatório do manual de exames (UFExamRelListaPApoiado).
Criar campo no configurador na CFEX Incluir carga do conteúdo do campo nos relatórios de lista de exames - UFResuRelLista, UFResuRelListaPaci

Para qualquer novo campo do configurador, incluir UCfgTab.TTabTipo. E tratar erro na carga do conteúdo das variáveis.

Alterar/Criar relatório de fatura Refletir alterações na exportação da fatura p/ excel
Criar nova Unit Verificar se precisa incluir também nos projetos: Unilabw, Unilab_BETA, Unilaudos e unilabSRV

Remover do delphi o autocreate que ele gera automaticamente para o form

Incluir Campo no TISS
  1. Incluir em todas as versões;
  2. Na impressão parcial/full;
  3. no configurador da guia full
Gravar datahora da coleta Rotinas que gravam coleta:
  • PediCad;
  • UfColeta;
  • UFDesfazColeta;
  • UFRecoleta;
  • UUnilabExpr;
  • PediImp (imprime mapa de não coletado ele põe a data de coleta auto);
  • TercLabCad (qdo inclui no lote um não coletado coleta auto);
Gravar datahora da triagem Rotinas que gravam triagem:
  • UFPedicad
  • UAuxGlobal
  • UFColeta
  • UFTriagem
  • UFRecoleta
  • UnilabExpr
  • UFTercLabCad
Incluída tabela na transmissão Constante: Versao_do_sistema_de_querypack - Incrementar quando tiver alteração nas funções queryPack e QueryUnPack

Constante: Versao_do_sistema_de_transmissao – Incrementar quando incluir/excluir uma tabela ou informação a ser transmitida

Versão do executável: em Project > Options > Version Info: Incrementar em qualquer nova versão

Versão do Unilab: A versão do Unilab (componente Sys da UFMain) não é considerada pelo programa de transmissão. Mas a versão do Unilab que está no banco é enviada junto no pacote e verificada nas pontas para ver se bate; Mas não precisa recompilar o servidor de transmissão só porque mudou a versão do Unilab.

Update na expr Sempre que fizer um update na expr incrementar a ulibrela
Novo Interfaceamento com Apoio/Equipamento
  • Recalcula Numero de amostra ufManutencao
  • cadastrar na tabela de recursos (UnilabWeb uw_recursos IDs 100 a 199).
  • Na Unit UControleUniware.pas, deve ser adicionada na procedure PublicarInformaoes a linha correspondente ao novo laboratório (procurar por #TAG_LABO).
  • Se a interface requer autorização implementar a geração da chave no ADM; na função Function InterfaceAutorizada() da Unit UFAutorizaInterface;
Campo chave tipo varchar Sempre ativar a propriedade UsaTrim do TUEdit Quando puder informar o valor do campo na mão
Alertas Sempre que fizer alguma modificação nos alertas dos exames:
  • Eles podem ser informados no cadastro de exame e cadastro de tabela de preços (UFExamValo e UFTabeCad).
  • Eles são exibidos no cadastro de pedidos e no orçamento.
Novo campo etiqueta
  • Inclusão de campos no configurador de etiquetas:
  • UFModEtiqCad (tela do novo configurador) - CarregaCampos: alterar constantes para listar campos disponiveis
  • UEtiqPrint - EtiquetasLoad: Carrega os valores do banco ao imprimir a etiqueta
  • UAuxModEtiq - TranslateNomeCampo & TranslateExemplo - descrição do campo no configurador e exemplo no visual da etiqueta
Atualização com interação do usuário

Quando for executar uma rotina na UFAtualiza que precisa de alguma informação de usuário, chamar o procedimento na função TFAtualiza.Atualiza: assim a pergunta cai só no final da atualização. Assim agente pode 'deixar rodando' a atualização

Executar o UNILAB CONSULTA

Project -> Options -> directories/Conditionals -> Conditionals: incluir: xxxxxxxx " ;Ver_Print_Only "

Alterações na Estrutura do Banco de dados Atualizar o dicionário de dados: D:\CVS\light\documentacao\Dicionário de Dados Unilab (v.2.0.2).mwb
Revisão Final 1 - Hints e Warnings Conferir os Hints e warnings gerados pelo Delphi e eliminá-los corrigindo os possíveis erros que eles podem estar indicando.
Revisão Final 2 - Dependências olhar no diff cada função que foi alterada, e conferir no Pascal Browser se a mexida gera efeito colateral nas dependências.
Revisão Final 3 - Teste de breakpoint Olhar no diff e colocar um breakpoint em cada bloco alterado e rodar o programa debugando e conferindo o resultado da execução, se o programa fez o que era esperado.

Cada breakpoint que ele passar e fizer o que é esperado, tirar o breakpoint até que todos os breakpoints sejam removidos.

O objetivo é testar todas as possibilidades englobadas pela alteração. Caso a implementação seja grande demais tornando esta etapa do checklist muito demorada, vamos conversar com o Cláudio e decidir se queremos dedicar tanto tempo conferindo aquela alteração.