Tuesday, July 3, 2012

Dicas para o desenvolvimento de um software funcional – Parte IV

O quarto e último 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!

Desenvolvedor de sistemas há 6 anos em linguagens Delphi, C# e PHP. Bacharel em Sistemas de Informação, colunista sobre tecnologia e entusiasta em Desenvolvimento Ágil. Atualmente trabalha com processamento de dados e desenvolvimento de sistemas voltados para gestão administrativa.

Veja perfil e 8 post(s)

0 comments:

Post a Comment