Dicas para o desenvolvimento de um software funcional – Parte II

Leia também: Parte 1Parte 3Parte 4Parte 5Parte 6Parte 7Parte 8Parte 9Parte 10Parte 11

Em continuidade ao artigo anterior, esta segunda parte abrange mais algumas boas práticas para o desenvolvimento de um sistema. Espero que tais práticas sejam úteis e ofereçam mais algum conhecimento aos leitores. 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 outros formatos, 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.

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 (Excel) ou a ficha completa de um cliente em formato DOC (Microsoft Word). Esse tipo de prática garante uma maior versatilidade do sistema por meio da integração com aplicações externas comumente utilizadas pelo usuário.

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 um valor 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. 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 instalar ou recorrer a outros aplicativos com essas utilidades. 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. O sistema pode possuir 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.

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 pensar 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 é utilizar 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 a execução da 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 a 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.

Em breve segue o terceiro artigo sobre este tema. Muito obrigado pela leitura. Até a próxima!

Leia também: Parte 1Parte 3Parte 4Parte 5Parte 6Parte 7Parte 8Parte 9Parte 10Parte 11

André Celestino

Mais artigos deste autor »

Desenvolvedor de software há 7 anos e autor do blog AndreCelestino.com. Graduado em Sistemas de Informação e pós-graduado em Engenharia e Arquitetura de Software com ênfase em Desenvolvimento Ágil. Atualmente trabalha como Engenheiro de Software.


Deixe seu comentário

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