Dicas para o desenvolvimento de um software funcional – Parte IV

AGRADEÇA AO AUTOR COMPARTILHE!

O quarto artigo sobre dicas para desenvolver um software funcional abrange alguns conceitos ligeiramente mais avançados. Após as doze dicas abordadas nos três primeiros artigos, este último envolve aspectos relacionados ao aperfeiçoamento das funcionalidades de um sistema. Agradeço novamente a todos os leitores que acompanharam os artigos, e espero que de alguma forma essas dicas tenham agregado um pouco mais de conhecimento.

Normalização de dados

Na maioria dos cursos relacionados a desenvolvimento de sistemas, é comum encontrar uma disciplina que mencione a Normalização de Dados, fundamental para a formação de analistas e programadores. Este assunto sugere uma série de procedimentos aplicados ao levantamento de requisitos para garantir a boa modelagem de um banco de dados. Essa modelagem será responsável pela integridade, confiabilidade e desempenho das operações realizadas nas tabelas. Alguns dos pontos mais importantes abordados pela normalização de dados é a utilização imprescindível de chaves primárias, chaves estrangeiras, criação de tabelas para relacionamentos muitos-para-muitos (N:N) e criação de tabelas para campos multivalorados, como e-mails e telefones. Além de ser uma prática essencial para o projeto de um sistema, a Normalização de Dados também garante a organização dos relacionamentos entre as tabelas e facilita futuras manutenções na estrutura.

Os requisitos de um sistema devem passar basicamente por algumas formas normais da Normalização de Dados, que consistem em eliminar campos repetitivos entre tabelas, impedir valores redundantes e relacionar todas as tabelas por meio de chaves estrangeiras.

Consultas compostas

A maioria dos sistemas atuais possuem uma padronização de consultas de dados, normalmente pelos campos mais comuns da tabela. Por exemplo, em um cadastro de clientes, a consulta pode ser realizada somente por nome, cidade ou CPF. No entanto, há situações onde o usuário pode precisar consultar clientes por endereço, telefone, estado, profissão ou estado civil. Basta então adicionar estes campos às opções de consulta, correto? Bem, é uma alternativa, mas imagine que o usuário também possa querer pesquisar os clientes que moram no estado de São Paulo, são do sexo masculino e trabalhem como motorista. Neste caso, a solução é criar uma consulta composta, que consiste em uma busca por vários campos ao mesmo tempo. Uma ideia para suprir essa necessidade seria utilizar os mesmos campos de cadastro para consultar os dados. Dessa forma, o usuário pode preencher quaisquer campos por qual deseja consultar, e ao clicar no botão de pesquisa, o sistema verifica os campos preenchidos e concatena uma SQL internamente para enviar ao banco de dados. É uma funcionalidade bem interessante, mas caso for utilizá-la, atente-se às cláusulas “where” e “and“, e confira se a busca corresponde ao que foi digitado pelo usuário.

Integração com serviços web

Com o advento da internet e de recursos online, tornou-se comum a integração de sistemas desktop com serviços web para facilitar ou agilizar operações rotineiras. Um exemplo bem prático é a validação de arquivos de Nota Fiscal Eletrônica. Nos primórdios da sua utilização, os usuários geravam um arquivo XML pelo sistema, acessavam outro aplicativo para envio de arquivos, validavam o arquivo e em seguida imprimiam a DANFE. Todo este processo era considerado burocrático e criou uma resistência dos usuários. A integração dos sistemas desktop com os web services possibilitou que este procedimento fosse realizado diretamente pela aplicação, sem a intervenção do usuário para manipular os arquivos XML. Além deste exemplo, outros serviços web também podem ser agregados à aplicação, como consulta de endereços por CEP, mapas de localização (Google Maps), feed de notícias e outros tipos de informações online. Os desenvolvedores podem ainda disponibilizar um módulo do sistema na web interligado com o sistema desktop, permitindo, por exemplo, que um usuário tenha acesso às informações pela internet, sem necessariamente usar o sistema desktop.

Cuidado com o que o seu cliente pede

Há muito que ser abordado neste último item, por tratar-se de uma questão mais voltada para análise do que desenvolvimento. Normalmente, os usuários que operam o sistema no dia-a-dia sentem a falta de um determinado campo em uma tela, um botão para uma nova funcionalidade ou atalhos para agilizar as operações. É muito comum ouvirmos frases como:

“Há possibilidade de colocar um ‘botãozinho’ aqui?”
“Eu precisava de um campo aqui para digitar tal informação…”

É claro, bons analistas e desenvolvedores devem prestar o máximo de suporte, visando suprir qualquer necessidade do cliente. Mas há casos onde é preciso rejeitar a sugestão do cliente para garantir a integridade e simplicidade do software. Quando o cliente pede um novo campo na tela, deve-se fazer um estudo da real utilidade da inclusão deste campo, e se este também será útil para outros clientes que operam o sistema. Há situações onde o campo já existe, mas não é de conhecimento do cliente. Neste ponto vale ressaltar a importância da apresentação e de treinamentos do sistema, além da capacitação de equipe de suporte em identificar esse tipo de situação. Uma simples orientação sobre a tela pode evitar que a equipe de desenvolvimento adicione uma nova funcionalidade sem fundamento. Além disso, adicionar um novo campo, botão ou funcionalidade no sistema pode comprometer o visual, trazer inconsistências no cadastro ou causar redundância de informações. Analisar detalhadamente as sugestões de clientes sempre será uma prática essencial para o desenvolvimento de um sistema.

Obrigado novamente pela atenção, leitores!

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

AGRADEÇA AO AUTOR COMPARTILHE!

André Luis 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 Analista Implementador Delphi em Florianópolis.


6 Comentários

Paulo Porto
1

Olá André!

Interessante seu post sobre este assunto que é um tanto complexo e subjetivo. No entanto, não concordo com o fato do sistema ter que disponibilizar consultas compotas. Na minha opinião, essa questão deve ser contornada com relatórios. Se o cliente quer informações detalhadas, tem que ser por relatórios e não na camada de visão do sistema.

Digo isso pelo fato de levantar a bandeira da simplicidade. Portanto, disponibilizar consultas compostas em cadastros, compromete a simplicidade das funcionalidades do sistema.

Parabéns pela serie de posts. De fato, esse é um assunto em que podem surgir várias divergências, visto que cada um tem uma visão diferente sobre determinados assuntos.

Até mais!

André Luis Celestino
2

Olá Paulo Porto! Obrigado mais uma vez por ter reservado um tempinho pra ler este artigo!
Concordo plenamente com você sobre a questão das divergências. Realmente cada um possui uma visão diferenciada de como a qualidade de um software deve ser atendida.
Em relação às consultas compostas, decidi relevar este item pelo fato de que a maioria dos usuários que visitei aderiram à essa funcionalidade e ficaram bem satisfeitos. Segundo eles, este recurso oferece uma maior “liberdade” na recuperação de informações, que muitas vezes os auxiliam na obtenção de estatísticas baseadas em uma série de filtros compostos.

Agradeço novamente pela atenção e pelo feedback! Abraço!

Moisés Afonso
3

Olá André.
Ótimos posts, li todos, foram muito bem detalhados e bem explicados.
A forma como abordou os assuntos, foi simples e direto.
Parabéns.

Rodolpho
5

Parabéns pelos posts André, não sou muito de comentar o que leio navegando na internet, mas tenho que te dar os parabéns.
Vou levar essas dicas comigo sempre!

Deixe seu comentário

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

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">