Dicas para o desenvolvimento de um software – Parte 2

Dicas para o desenvolvimento de um software - Parte 2Em continuidade ao artigo anterior, esta segunda parte abrange mais algumas boas práticas para o desenvolvimento de um sistema com qualidade. Provavelmente a maioria dessas práticas já são adotadas pelos desenvolvedores, mas vale ressaltá-las aqui como conteúdo para base de conhecimento. Sintam-se à vontade para postar comentários ou críticas sobre o artigo!


Exportação de relatórios
Criar relatórios bem elaborados é fundamental, mas é importante que exista opções para exportá-lo em formatos tradicionais, caso o usuário queira salvá-lo no computador ou enviá-lo por e-mail. O formato PDF é um dos mais utilizados entre as opções de exportação, principalmente por ser um tipo de arquivo com tamanho pequeno e não permitir modificações após ser criado. A maioria dos componentes atuais para elaboração de relatórios já possuem métodos que permitem a exportação para os formatos mais comuns, mas caso esta opção não exista, basta utilizar o software CutePDF Writer, que adiciona uma impressora virtual no computador para criar arquivos PDF a partir da impressão de qualquer documento.

Exemplo de exportação de relatório
Exemplo de opções para exportação de relatórios

Exportar dados de uma tabela ou de uma grade de registros também pode ser de grande utilidade para o usuário, como uma tabela de preços em formato XLS (Microsoft Excel) ou a ficha completa de um cliente em formato DOC (Microsoft Word). Esse tipo de recurso garante versatilidade do sistema por meio da integração com aplicações externas também utilizadas pelo cliente.


Teclas de Atalho

Quando um menu é acessado com bastante frequência, pode ser interessante associar teclas de atalho para acessá-lo com mais agilidade. Quem utiliza o Microsoft Windows já deve conhecer algumas combinações de teclas disponíveis para abrir as janelas mais comuns do sistema, como o “Windows + E” para abrir o Windows Explorer e o “Windows + F” que abre a janela para pesquisa de arquivos. O mesmo pode ser adaptado a um sistema, por exemplo, para abrir a tela de cadastro de clientes e a tela de consulta de vendas. As teclas de atalho também podem ser atribuídas a determinados eventos do sistema, como recalcular a soma de valores ou preencher um campo automaticamente. Usuários mais experientes geralmente preferem utilizar teclas de atalho ao invés de acessar as funções do sistema utilizando o mouse, principalmente por agilizar as operações rotineiras.

Exemplo de teclas de atalho
Exemplo de teclas de atalho em um menu

Porém, atribuir teclas de atalho em todos os menus e sub-menus no sistema é desnecessário, além de confundir a memória do usuário. Procure atribuí-las somente nas principais funções do sistema e utilizar combinações de teclas simples para facilitar a memorização.


Utilitários

Quanto mais recursos úteis o sistema possuir, mais ele atenderá as necessidades eventuais do usuário. A ideia é incluir calendário, calculadora, campo de anotações e telas informativas dentro do sistema, para evitar que o usuário tenha que recorrer a outros aplicativos com essas funções. Uma boa prática é associar teclas de atalho globais à essas funcionalidades, como o F6 para Calculadora e F7 para Calendário, por exemplo.
Outra utilidade importante é permitir que o usuário configure o sistema conforme o seu perfil, ou seja, o sistema pode apresentar uma tela de configuração e armazenar as preferências do usuário em um arquivo do tipo “INI”. Todas as vezes que o sistema for inicializado, as preferências contidas neste arquivo são carregadas e aplicadas ao sistema. O arquivo de configuração pode conter o diretório do banco de dados, ordenação padrão dos registros de uma tabela, agendamento de backup e outras configurações internas do sistema.
Este arquivo se torna ainda mais útil quando existe mais de um usuário utilizando o sistema e cada um possui preferências diferentes. Assim, não é preciso criar uma versão exclusiva para cada usuário, basta apenas guardar as configurações em um arquivo INI.
Aqui no blog há um artigo sobre como trabalhar com arquivos INI pelo Delphi.

Exemplo de arquivo INI
Exemplo de configurações em um arquivo INI


Threads e telas de espera

Algumas operações do sistema podem demorar um certo tempo para serem processadas, principalmente instruções SQL complexas que envolvam cálculos ou consultas em tabelas com vários registros. Quando isso ocorre, normalmente o sistema “congela” ou pára de responder durante o processamento até que a operação seja finalizada. Porém, o usuário pode imaginar que a aplicação parou de funcionar e forçar o encerramento do processo, comprometendo a instrução em execução.
Para evitar este tipo de transtorno, é conveniente criar telas de espera para informar o usuário de que um processamento está em execução. Essa tela fica ainda mais intuitiva quando há alguma imagem animada (GIF) ou uma barra de progresso indicando o processamento. Entretanto, como a tela de espera e a instrução SQL compartilham o mesmo processo na memória, é provável que a aplicação fique travada da mesma forma, sem resposta. A solução é implementar unidades chamadas Threads, capazes de criar fluxos paralelos ao processo principal para executar uma operação em segundo plano. Basta então exibir uma tela de espera e transferir o processamento (como uma instrução SQL) dentro de uma Thread para que o sistema não se torne instável.
A verificação automática de ortografia no Microsoft Word é um exemplo de Thread. Repare que o programa não trava enquanto a verificação é realizada paraa cada palavra digitada. No Microsoft Outlook, observe também que é possível utilizar normalmente o software ao mesmo tempo que novos e-mails são baixados na caixa de entrada. Portanto, Threads não servem apenas para desenvolver telas de espera, mas sempre quando for necessário executar instruções em paralelo sem afetar o desempenho do sistema. A figura abaixo (em inglês) apresenta uma breve demonstração de como as Threads se comportam dentro de um processo:

Funcionamento de uma Thread
Ilustração do funcionamento de uma Thread

 

Bom, as próximas dicas ficam para outro artigo!
Muito obrigado pela leitura. Até a próxima!


Confira também as outras partes dessa série de artigos:

Dicas para o desenvolvimento de um software – Parte 1
Dicas para o desenvolvimento de um software – Parte 2
Dicas para o desenvolvimento de um software – Parte 3
Dicas para o desenvolvimento de um software – Parte 4
Dicas para o desenvolvimento de um software – Parte 5
Dicas para o desenvolvimento de um software – Parte 6
Dicas para o desenvolvimento de um software – Parte 7
Dicas para o desenvolvimento de um software – Parte 8
Dicas para o desenvolvimento de um software – Parte 9
Dicas para o desenvolvimento de um software – Parte 10
Dicas para o desenvolvimento de um software – Parte 11


 

Compartilhe!
Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Pin on PinterestEmail this to someone

2 comentários

  1. Boa noite, André.

    Realmente exportar os relatórios em vários formatos é muito bom e agrega valor ao software. Demorei para incorporar isso.
    Esse problema de operações demoradas que parecem travamentos, deu trabalho e ainda dá. Ainda não compreendo o uso das “Threads”, mas o uso de telas de espera, GIFs, barras de progresso e teclas de suspensão/encerramento foi um inicio. O melhoramento das consultas e o uso de ‘stored procedures’, reduziram o tempo de 3 dias de processamento para segundos. Um código mal formulado é fatal, como comentado em outro artigo.
    Vou continuando por aqui, depois vou pro Ágil.
    Participarei pra vc, os avanços.

    Obrigado pela atenção.

    1. Boa noite, Gerson!
      O conceito de Threads, a princípio, pode parecer um pouco confuso mesmo. Mas não é nada complexo. Considere uma Thread como um processamento paralelo, como se houvessem dois computadores executando a mesma rotina: um deles mostra uma mensagem de espera enquanto o outro executa o processamento.
      Vale ressaltar que Threads não devem ser a solução para todas as situações. Como você disse, o ideal é melhorar as consultas para evitar a lentidão na aplicação.

      Abraço!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Preencha o campo abaixo * Time limit is exhausted. Please reload CAPTCHA.