New Post

Rss

Showing posts with label Desenvolvimento. Show all posts
Showing posts with label Desenvolvimento. Show all posts
Tuesday, July 3, 2012
no image

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)

Thursday, June 7, 2012
no image

Dicas para o desenvolvimento de um software funcional – Parte III

Este é o terceiro artigo sobre algumas dicas para o desenvolvimento de um bom software. Aproveito a oportunidade para agradecer a todos que leram, comentaram e compartilharam o primeiro e o segundo artigo sobre este assunto. Espero que as dicas neste artigo tragam um pouco mais de conhecimento aos leitores, e mais uma vez, quero que sintam-se à vontade para expressar qualquer opinião sobre este texto.

Padronização de código

Este item é bastante importante quando o projeto é desenvolvido por mais de uma pessoa, ou melhor, uma equipe de desenvolvimento. Definir uma padronização do código auxilia na legibilidade e no entendimento do que está sendo executado na aplicação. Identar o código nos blocos de condição “if-else” e nos laços de repetição são uma das práticas que ajudam os desenvolvedores a identificar facilmente a execução de um método. Identação significa “estruturar” as linhas do código em tabulações de acordo com o nível de execução.

Quando há uma grande quantidade de aninhamento de blocos no código-fonte, a identação se torna ainda mais importante para associar o início e o fim de cada bloco aninhado. Algumas ferramentas de desenvolvimento, como o NetBeans e o Visual Studio, possuem o recurso de destacar o aninhamento quando o cursor do mouse é posicionado na chave que abre ou fecha o bloco. Desenvolvedores em Delphi também podem adquirir essa funcionalidade com o addon gratuito cnWizards.

As variáveis, classes, métodos e funções também devem possuir nomes sugestivos de acordo com o seu objetivo. Portanto, uma variável com o nome “SomaTotalPedidos” é bem mais fácil de ser identificada do que uma variável chamada “vSTotPed”. Mesmo que o nome seja ligeiramente maior, o código fica mais legível quando se trabalha com esse tipo de nomenclatura.

Tratamento de exceções

Por mais que o desenvolvedor faça testes na aplicação antes de publicá-la, é natural que alguns erros ainda possam ocorrer inesperadamente para o usuário. Estes erros são decorrentes de problemas de semântica, gravação de dados inconsistentes, falhas de acesso à memória ou até mesmo eventos inesperados do sistema operacional. No ambiente de programação, os erros são conhecidos tecnicamente como “exceções”. Uma boa prática de programação exige que exista um tratamento de exceções em todos os pontos mais sensíveis do código. Inserções e atualizações no banco de dados são exemplos de operações que possivelmente podem retornar algum erro para o usuário.

A recomendação é envolver este código em um bloco de tratamento de exceção e executar uma função de rollback (desfazer as alterações no banco de dados) caso algum erro seja encontrado. Ao utilizar tratamento de exceções, também é possível criar mensagens mais transparentes para reportar a exceção ao usuário. Dessa forma, faz mais sentido exibir a mensagem “Ocorreu um erro. Tente novamente.” ao invés de “An error occurred. Access violation at address 004068EC“. Estes tipos de mensagens em inglês técnico geralmente são desconhecidas para o usuário e não trazem nenhum tipo de informação para auxiliá-lo.

Atualização do sistema

A cada atualização do sistema, normalmente é necessário substituir o executável no computador do cliente, rodar scripts SQL e alterar alguns parâmetros de configuração. Sendo assim, é preciso ir até o cliente e fazer todo o processo manualmente no computador local. Para evitar a viagem, uma alternativa é realizar a atualização remotamente através de softwares como o TeamViewer, LogMeIn ou VNC. O problema surge quando há dezenas ou até centenas de computadores para serem atualizados. Se a atualização for feita em um computador por vez, pode demorar dias para terminar a atualização em todos as máquinas.

Portanto, ao invés de realizar a atualização manualmente, crie um módulo exclusivo para automatizar este processo. A atualização automática está presente na maioria dos softwares atuais, como navegadores e antivírus. O objetivo é permitir que o próprio sistema verifique novas versões, baixe o arquivo de atualização e realize todo o processo automaticamente, sem a intervenção do usuário. Este tipo de módulo não é simples de ser desenvolvido, mas é plenamente funcional e permite atualizar vários computador simultaneamente.

Programação Orientada a Objetos

No mundo da programação, a maioria dos métodos e componentes são modelados em classes para facilitar a reutilização de código e a manipulação de objetos. Trabalhar com classes e objetos pode ser relativamente complexo, mas sem dúvida garante um maior controle de tudo o que acontece dentro da aplicação. Através da Programação Orientada a Objetos (POO), é possível reaproveitar várias linhas de código por meio de técnicas como herança e polimorfismo. Além disso, definir a visibilidade dos atributos de uma classe e criar métodos para manipulação de valores permitem que a estrutura interna da aplicação não seja exposta a nível de usuário.

Utilizar POO no desenvolvimento de um sistema também facilita a produção de regras de negócio, abstração de dados e a integração com padrões de projeto.

Durante a fase de projeto, a Programação Orientada a Objetos é amplamente praticada por projetistas e analistas de sistemas através da linguagem UML para modelagem de dados. O Diagrama de Classes, por exemplo, fornece uma grande quantidade de informações detalhadas para simplificar a modelagem das classes do projeto e das tabelas do banco de dados. Em conclusão, a utilização da POO na modelagem evita que o sistema sofra constantes alterações e adaptações durante o andamento do projeto, reduzindo o tempo de desenvolvimento e minimizando os erros de implementação.

Muito obrigado mais uma vez pela leitura. Um abraço a todos!

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 7 post(s)

Thursday, May 24, 2012
no image

Dicas para o desenvolvimento de um software funcional – Parte II

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!

Publicado originalmente em O Núcleo

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 6 post(s)

Monday, May 21, 2012
no image

Dicas para o desenvolvimento de um software funcional – Parte I

Embora a internet esteja repleta de tutoriais e dicas sobre desenvolvimento, sempre surge a dúvida de como um sistema deve ser devidamente desenvolvido dentro de padrões. Na verdade, não há uma regra geral ou um processo único para o desenvolvimento de um sistema, mas existem boas práticas que, quando adotadas, podem trazer grandes vantagens em um projeto, tanto para o cliente quanto para o próprio desenvolvedor. Em muitas empresas de software, tais práticas são consideradas como uma metodologia de desenvolvimento, principalmente por facilitar a manutenção e atualização do software, além de garantir uma personalidade única para o sistema. Este é o primeiro de três artigos sobre este assunto, onde o objetivo é transmitir um base sólida sobre alguns pontos importantes para o desenvolvimento de um sistema, envolvendo a implementação do código e o visual da aplicação.

Facilidade de uso

Colocar vários botões e informações em excesso em uma janela pode comprometer a usabilidade da aplicação. Simplicidade e objetividade devem estar casados com a funcionalidade do sistema para proporcionar um maior “conforto” ao usuário. Procure simplificar o visual das janelas, adicionando somente os componentes necessários que o usuário irá utilizar. Estruture a janela de forma que os campos fiquem em uma sequência objetiva, agrupados por assunto ou categoria. Em um cadastro de clientes, por exemplo, divida os campos por seções, como dados pessoais, dados profissionais, contato e informações adicionais. Assim a localização de informações fica bem mais fácil e evita que o usuário fique confuso em meio a tantos componentes. Procure também organizar a ordem de tabulação dos campos, para que a digitação de dados se torne mais rápida através do TAB ou ENTER para avançar o cursor entre os campos.

A questão do visual das janelas deve ser discutida em fase de planejamento do projeto durante a análise e levantamento de requisitos. Para garantir que o visual fique conforme a expectativa do usuário, os projetistas utilizam uma técnica conhecida como Prototipação, que consiste em uma prévia da tela desenhada em um documento. Este desenho é apresentado ao cliente para avaliação, e após a aprovação ela finalmente passa a ser desenvolvida.

Splash Screen

Durante o desenvolvimento de um software, é natural que haja a necessidade de executar uma série de instruções e validações durante a inicialização do sistema, como verificar o caminho do banco de dados, criar backups, carregar módulos e abrir tabelas. Essas instruções podem atrasar a inicialização e a exibição do sistema para o usuário. Consequentemente, o usuário pode pensar que o sistema não foi aberto e tentar abri-lo novamente, criando duas instâncias iguais do sistema na memória. Para evitar este problema, desenvolvedores criam telas de inicialização, também conhecidas como Splash Screen. Essa tela geralmente contém o nome do software e uma barra de progresso indicando o andamento da inicialização enquanto todas as instruções necessárias são executadas em segundo plano.

Backup

Sem dúvidas, este item é indispensável! Manter cópias do banco de dados garante uma maior confiabilidade no sistema quando for necessário recuperar informações. Porém, de nada adianta criar backups no próprio computador do cliente já que existe a possibilidade do disco rígido local ser danificado. Neste caso, o banco de dados e todos os seus backups serão perdidos, a menos que exista uma cópia em outro computador. Portanto, procure disponibilizar no sistema a opção para criar backups em locais remotos, como discos externos ou em outro computador na rede local. Outra opção bastante segura é salvar o backup em um diretório virtual na internet, popularmente conhecido como “nuvem”. Mesmo que aconteça uma falha geral na rede e nos dispositivos móveis do cliente, o backup estará armazenado na internet e poderá ser recuperado através de um simples download.

Embora este recurso esteja disponível, é provável que o usuário esqueça de salvar backups do banco de dados periodicamente. A solução é criar caixas de diálogo para avisá-lo do backup ou realizar a cópia silenciosamente, sem a intervenção do usuário. Um bom exemplo disso é configurar o sistema para salvar o backup em um diretório FTP todas as vezes que o sistema for finalizado ao final do dia.

Visual da aplicação

Este item não é obrigatório, mas com certeza é um diferencial importante em uma aplicação. Um visual agradável, com letras nítidas e cores leves traz uma maior comodidade para o usuário. A aplicação fica ainda mais rica quando dispõe a opção de personalização do visual, como aplicação de cores e temas. Atualmente é comum encontrar componentes na web com a finalidade de aperfeiçoar o visual de uma aplicação. Por exemplo, a interface Ribbon, presente nas versões 2007 e 2010 do pacote Microsoft Office, é uma das opções para modernizar a tela principal do sistema. O Ribbon pode ser utilizado no Visual Studio com o componente Elegant UI ou no Delphi com o pacote TMS Component Pack.

Procure também utilizar imagens bem definidas em menus e botões, de preferência no formato PNG. Na internet há dezenas de sites com pacotes de ícones e imagens para serem utilizadas em aplicações desktop e páginas web, como o IconArchive. Utilize imagens sugestivas de acordo com a função e procure padronizá-las nas telas em comum. Por exemplo, utilize a mesma imagem para os botões de relatórios e a mesma imagem distinta para os botões de Salvar, Alterar e Excluir. Essa prática permite que o usuário “associe” a imagem à funcionalidade do botão, minimizando a complexidade do sistema.

Em breve postarei o segundo artigo sobre este tema! Um abraço!

Publicado originalmente em O Núcleo

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 5 post(s)

Tuesday, March 20, 2012
no image

Desenvolvimento: Firebug + JSON

Como saber se os valores que a aplicação/página está enviando para o controler ou recebendo estão corretos?

firebugEssa semana fiquei quase um dia inteiro tentando corrigir um bug numa página e estava certa de que o problema estava no código da página, e não na lógica de negócio que havia implementado. Depois de um certo tempo, tive a idéia de verificar se os valores que a página estava recebendo eram os valores corretos (isso deveria ter sido a primeira coisa que deveria ter feito). Enfim, após verificar, vi que os valores estavam errados e finalmente pude corrigir o código.

A mágica que usei pra isso? Não, não foi debugando o código. É uma ferramenta mil e uma utilizades que todo desenvolvedor deveria ter instalado no Firefox: o famoso e tão querido Firebug!

Além das funcionalidades de inspecionar HTML, CSS, etc, também possui a funcionalidade do console, que mostra erros de javascript e ainda todo o conteúdo que é enviado e recebido por uma requisição.

Como ultimamente tenho trabalhado bastante com JSON, utilizo mais a ferramenta para verificar o JSON retornado e para debugar código javascript. A partir da versão 1.4 do Firebug, adicionaram uma nova aba ao console, que dá pra visualizar o objeto JSON como se fosse um objeto, mostrando sua estrutura, e assim ficou muito mais simples.

O exemplo que vou utilizar neste post, é o projeto ‘Como construir um grid dinâmico utilizando Ext JS‘.

O primeiro passo, é ativar a opção console para a página do projeto:

firebug_json_02

Após a ativação, vamos dar um refresh na pagina. Observe que já aparecem duas ações executadas pela página.

firebug_json_01

Vamos dar uma olhada na primeira ação GET, que foi a chamada do método getColumnsJson.

A resposta do método está em formato JSON, que são as colunas retornadas pelo método:

firebug_json_03

Com a nova aba, veja como fica muito mais amigável verificar a estrutura do objeto em formato JSON:

firebug_json_04

Como pode-se notar, a raiz do objeto (rows), possui três objetos do tipo ColumnModel:

firebug_json_05

Viu como é muito mais simples e muito mais amigável? Essa aba para visualizar os objetos JSON vai nos poupar um bom tempo! rs

Vamos dar uma olhada agora na chamada do método getStoreFieldJson. Pode-se verificar os parâmetros enviados no request: meta e start:

firebug_json_07

A resposta: objeto metadata em formato JSON (um pouco ‘complicado’ analisar o retorno desse jeito):

firebug_json_06

E o objeto JSON estruturado (muito melhor do que a imagem anterior):

firebug_json_08

Viu como é simples? Na página de plugins para o Firefox, ainda existem outros plugins que são ‘complementos’ para a barra do Firebug.

Não deixe de explorar as outras opções do Firebug, como já foi dito, é uma ferramenta vital para quem desenvolve para a web.

Até a próxima!

Fonte: Blog da Loiane

Bacharel em Ciência da Computação, atua como IT Specialist num projeto internacional na IBM – Hortolândia-SP - voltado para a plataforma Java Web. Atua como embaixadora técnica e de relacionamento do IBM Academic Initiative no Espírito Santo. Coordenadora do ESJUG (Grupo de Usuários Java do Espírito Santo) e fundadora e coordenadora do CampinasJUG (Grupo de Usuários Java de Campinas-SP e Região). Possui 4 anos de experiência na palataforma Java e experiência 2 anos como Teacher Assistant. Atuou por 2 anos como Delegada Estudantil da SBC (Sociedade Brasileira de Computação) na FAESA. Escreve sobre java e desenvolvimento no blog http://loiane.com e no blog em inglês http://loianegroner.com

Veja perfil e 23 post(s)

Friday, March 16, 2012
no image

Desenvolvimento: introdução a XML

Saber XML é muito importante para quem trabalha com desenvolvimento.

Se você trabalha com algum framework, provavelmente já teve que fazer a configuração do framework em um arquivo XML.

Pensando nisso, escrevi uma série de tutoriais que podem lhe ajudar a entender mais sobre esse mundo do XML e não cometer mais erros!

Segue série de artigos:

Marcadores: ,

Bacharel em Ciência da Computação, atua como IT Specialist num projeto internacional na IBM – Hortolândia-SP - voltado para a plataforma Java Web. Atua como embaixadora técnica e de relacionamento do IBM Academic Initiative no Espírito Santo. Coordenadora do ESJUG (Grupo de Usuários Java do Espírito Santo) e fundadora e coordenadora do CampinasJUG (Grupo de Usuários Java de Campinas-SP e Região). Possui 4 anos de experiência na palataforma Java e experiência 2 anos como Teacher Assistant. Atuou por 2 anos como Delegada Estudantil da SBC (Sociedade Brasileira de Computação) na FAESA. Escreve sobre java e desenvolvimento no blog http://loiane.com e no blog em inglês http://loianegroner.com

Veja perfil e 23 post(s)

Wednesday, November 30, 2011
no image

Desenvolvimento de Software: Custo da Qualidade

Segundo a American Society for Quality a qualidade é o “grau até o qual um conjunto de características inerentes satisfaz as necessidades”. No contexto de qualidade temos duas visões:

Visão do Produtor: a qualidade do produto está totalmente relacionada com os requisitos estabelecidos.Visão do Cliente: a qualidade está relacionada a “adequação ao uso” ou as necessidades do usuário.

Os times destinados a trabalhar neste meio devem encurtar o gap existente nestas duas visões. Para tal objetivo trabalha-se na Garantia da Qualidade e o Controle da Qualidade.

A Garantia da Qualidade são todas as atividades com o intuito de prover uma confiança adequada para os produtos e serviços de acordo com os requisitos especificados. O time da Garantia da Qualidade deve definir políticas e seguir modelos para desenvolver de forma contínua melhorias no processo de desenvolvimento. Metodologias de desenvolvimento, estimativa do processo, processos de manutenção, processos de definição de requisitos, processos de teste, padrões de desenvolvimento, treinamentos, documentação são exemplos de ações que um time de garantia pode realizar. Lembre-se que a qualidade do produto está relacionada a qualidade do processo.

Todo o trabalho e/ou ações que são produzidos na Garantia da Qualidade devem ser controlados. Com este objetivo definimos atividades para o processo de Controle da Qualidade. O foco do Controle da Qualidade é identificar defeitos nos produtos ou artefatos produzidos. Teste de software é uma atividade do Controle da Qualidade. A atividade de teste pode ser incluída em todas as fases do desenvolvimento de software, através de inspeções, revisões e execução de casos de teste.

Todas estas atividades têm um custo associado, sendo que, para que possamos calcular o custo da qualidade devemos considerar três elementos: o custo da falha, o custo da prevenção e o custo da avaliação, sendo cada um deles apresentados abaixo:

Custo da falha: custos associados com produtos defeituosos entregues ao cliente. Podemos associar a este custo os reparos, a utilização da equipe de help desk, bem como, os danos causados por um defeito.Custos da prevenção: são todos os custos associados com atividades que objetivam evitar defeitos. Podemos citar treinamentos, definição de métodos e procedimentos e aquisição de ferramentas. Observe que praticamente todas as atividades do time de Garantia da Qualidade estão associadas a este custo.Custo da avaliação: por fim, são todos os custos associados com a detecção de defeitos. Neste elemento podemos citar as atividades de teste de software, tempo gasto na automação de scripts de teste, revisões e inspeções.

Obviamente que o custo irá variar de uma organização para outra considerando a atividade que cada uma delas está disposta a fazer. A equipe de Garantia da Qualidade deve ser a responsável por identificar os custos destes três elementos, bem como, prover ações para minimizar o custo da falha.

Normalmente as organizações focam no custo de avaliação, porém, se o investimento for maior na prevenção ao longo do tempo o custo da falha e da avaliação tende a diminuir.

André Tocchetto. Meste em Computação Aplicada, CSTE e ITIL v2 Foundation. Atualmente atua como Coodenador da TI, Professor e Coodenador de Curso Tecnólogo em Análise e Desenvolvimento de Sistemas. Twitter: @tocchetto

Veja perfil e 1 post(s)

Tuesday, November 1, 2011
no image

Oi oferece incentivo de até R$ 200 mil para desenvolvimento de aplicativos móveis

A Oi abriu inscrições para o programa de financiamento de projetos de aplicativos para dispositivos móveis no Brasil.

A intenção do programa é criar facilidades para turistas brasileiros e estrangeiros com foco nos grandes eventos que acontecerão por aqui em 2014 (Copa do Mundo) e 2016 (Olimpíadas).

Os projetos participantes do processo seletivo deverão abordar temas como diversão, hospitalidade, turismo, mobilidade urbana e segurança. Os incentivos para o desenvolvimento são de até R$ 200.000,00 (duzentos mil reais).

Os projetos inscritos serão avaliados por uma comissão formada por executivos da empresa e profissionais da área convidados para o processo seletivo. Serão avaliadas a originalidade, grau de inovação, viabilidade técnica e de negócios.

Os projetos selecionados terão apoio da Oi com acesso às plataformas da empresa para testes e supervisão de especialistas da empresa. Após finalizados, os aplicativos serão disponibilizados em celulares e smartphones comercializados pela Oi.

As inscrições podem ser feitas em http://www.oi.com.br/inovacao

Com informações de PC World

Marcelo Alves, graduado em Desenho Industrial com habilitação em Programação Visual pela Universidade do Estado de Minas Gerais. Atua como Webdesigner e Diretor de Criação desenvolvendo projetos de comunicação para web.

Veja perfil e 257 post(s)

Friday, August 12, 2011
no image

Os principais mitos do desenvolvimento de Software

Os mitos de software são “falsas verdades” que existem no mundo da indústria de software. Tanto jovens engenheiros quanto pessoas mais experientes tendem a acreditar neles, distorcendo a verdadeira face do processo de engenharia. Os mais comuns são:

Desenvolvimento não é uma receita de bolo! Os clientes são diferentes, os projetos são diferentes, os programadores são diferentes, as prioridades dependem do projeto. Basicamente, TUDO é diferente. Não pense que um site de ecommerce que você desenvolveu para a empresa X valerá para a empresa Y, e vice-versa. O planejamento é fundamental e só então você poderá levantar os requisitos necessários e trabalhar em cima de um novo projeto.

Por mais que exista o conceito de “Fábrica de Software” não podemos pensar no processo de desenvolvimento como uma linha de produção. Ao se inserir um programador em um projeto, ele levará algum tempo para se familiarizar com o código e com o que está sendo feito, para então, começar de fato a produzir. Outro grande pecado que muitos gestores comentem é tratar o programador como “pedreiro”, como um “peão”. Se o o desenvolvedor não entende nada do processo da empresa para o qual está desenvolvendo, tenha certeza que não poderá contribuir da melhor maneira possível. Mais um vez, quero frisar: Desenvolvimento não é linha de produção. Alocar programadores para resolver um problema de cronograma poderá surgir efeito contrário, causando mais problemas!

Quando um projeto é muito trabalhoso, requer know-how maior do que a sua equipe possui ou o cronograma está apertado, muitos optam pela terceirização achando que esta é uma garantia de tranquilidade e nenhum trabalho. Contudo, tome cuidado: Se a empresa X contratou você, você é o responsável pelo trabalho que está entregando. Ou seja, qualquer problema será um problema seu também! A maioria das empresas terceiriza o serviço, mas ao comprar o código, fica responsável por suas manutenções. Aí fica a pergunta: A terceirização fez o serviço direito? Comentou o código? Documentou o que foi feito? Sua equipe tem pessoal para trabalhar nesse código? Pense bem antes de terceirizar algo que não poderá trabalhar bem no futuro. É melhor recusar um projeto do que faze-lo mal feito.

Se você é desenvolvedor já deve ter se deparado com um usuário que só queria um ajustizinho no sistema: “só adicione um botão que faça isso e busque aquilo e faça isso ficar cor de rosa e brilhar girando”. Sim, essas coisas acontecem! Ao se pensar em um software deve-se mapear o máximo possível de suas funcionalidades a serem desempenhadas. É claro que em um primeiro momento é difícil pensar em tudo, alguma coisa ou outra vai entrar como correção. Mas pensar em algo básico demais e querer enfeita-lo demais depois, envolve mais tempo e o pior: retrabalho! Desenvolvedores geralmente não gostam de destruir algo para faze-lo de outra forma, pois o cliente mudou de ideia. Aliás, ninguém gosta. Como eu disse, existem exceções, mas se você não entende de desenvolvimento e só gerencia o processo, não pense que os seus “detalhes” são realmente detalhes quando viram linhas de código!

Mais uma vez, se você não é desenvolver e não entende do processo, não julgue uma atualização como simples. Somente um programador poderá avaliar o quão simples uma alteração é – e muitas vezes, ela só vai realmente ter a ideia depois que estiver trabalhando com o código. Mesmo que você tenha uma boa equipe, modificações devem ser analisadas, discutidas com relação a sua viabilidade e testadas. Lembre-se sempre: alocar um programador requer algum tempo para que esse se familiarize com o que vem sendo feito. As coisas não são tão simples.

Esses dois tópicos são assutadoramente passados adiante e você já deve ter ouvido isso de alguém. Se um programa roda isso não garante que o seu trabalho está feito. Todo o processo de desenvolvimento deve buscar a qualidade e apenas funcionar não lhe garante isso – ou seja, o processo da avaliação de qualidade não se limita a essa etapa. O seu código é bem comentado? Está bem feito? Otimizado? A tecnologia utilizada é adequada? Os banco de dados estão otimizados? Sua relações foram criadas corretamente? A infraestrutura do cliente suporta o que está sendo desenvolvido? Se o seu sistema foi feito para suportar vários acessos, ele realmente suporta isso? Um programa é mais do que o executável. Você vende todo o processo.

Em alguns casos, o produto “palpável” que o cliente recebe é somente o executável. Em outros, trabalha-se com o código fonte e com a documentação. Contudo, independente do caso, lembre que, como foi dito no item anterior: Um programa é mais do que o executável. Você vende todo o processo de desenvolvimento. Por isso, deve-se pensar e faze-lo com perfeição.

Planejamento é fundamental! Muitas pessoas aindam confundem planejamento com “papelada” e estas estão terrivelmente enganadas! Mesmo trabalhando-se em um time Agile, planejar é fundamental! A documentação do projeto será trabalhada na melhor metodologia adotada mas um plano do que será feito deverá ser estudado antes de “colocar a mão na massa”. Somente com o estudo dos processos e necessidades do cliente você conseguirá criar um software que trabalhe com excelência!

Originalmente postado em Eu Faço Programas

Thursday, August 4, 2011
no image

Concurso Companhia de Desenvolvimento de Caxias do Sul (RS) abre 186 vagas


A Companhia de Desenvolvimento de Caxias do Sul (RS) abriu concurso para 186 vagas e formação de cadastro de reserva em cargos de todos os níveis de escolaridade. Os salários vão de R$ 732,34 a R$ 3.200,00.
Os cargos são de advogado, almoxarife, assistente administrativo, assistente de cargos e salários, assistente social, auxiliar geral, borracheiro, capinador, chapeador, coletor, contador, encanador, marteleteiro, mecânico de caminhões, mecânico de máquinas pesadas, médico do trabalho, motorista, operador de estação de tratamento de efluentes, operador de máquinas, pedreiro, servente para construção civil, técnico em contabilidade, técnico em enfermagem do trabalho, técnico em segurança do trabalho, telefonista, topógrafo e varredor.
As inscrições serão realizadas pelo site www.pontuaconcursos.com.br  até 14 de agosto e, opcionalmente, no Posto de Atendimento na X Fire Lan House, localizada na Av Júlio de Castilhos, 1188, Térreo – Centro - Caxias do Sul (quase esquina com a Rua Andrade Neves), no horário das 9h às 18h de segunda-feira a sexta-feira, onde serão disponibilizados computadores e pessoal treinado para a realização de inscrições.
O valor das inscrições é de R$ 25,00 para os empregos de ensino fundamental completo e incompleto; de R$ 30,00 para os empregos de ensino médio e técnico; e de R$ 60,00 para os empregos de nível superior.
As provas objetivas serão realizadas em Caxias do Sul, no dia 18 de setembro.
Tags: Concurso Companhia de Desenvolvimento de Caxias do Sul
Friday, March 11, 2011
no image

Concurso Público em TI: BDMG – Banco de Desenvolvimento de Minas Gerais S.A.

Publicada em: 10/03/2011

ANALISTA DE DESENVOLVIMENTO - FUNÇÃO ANALISTA DE SISTEMAS (4 vagas)
Levantar, diagnosticar, propor, projetar e implementar soluções de Tecnologia de Informação alinhadas à estratégia do BDMG; coordenar a implantação de novos sistemas, tanto desenvolvidos internamente, terceirizados ou adquiridos de terceiros; definir requisitos técnicos e acompanhar o processo para a aquisição de hardware e software, nas fases de conferência, instalação, teste, treinamento, migração, implantação e monitoramento pós-implantação; atuar como facilitador junto aos usuários prestando esclarecimentos sobre as funcionalidades dos hardware e software disponíveis no BDMG; acompanhar a manutenção preventiva e corretiva do hardware instalado; atuar no cumprimento dos procedimentos de desenvolvimento e da metodologia adotada pelo BDMG; participar de trabalhos em equipe; dentre outras tarefas que, por sua natureza, enquadrem-se em sua área de competência.

Remuneração Mensal: R$ 3.911,25 (três mil, novecentos e onze reais e vinte e cinco centavos).

A inscrição para este Concurso Público se dará somente pela intemet, no endereço eletrônico: www.fumarc.org.br, das 09 horas do dia 02 de maio de 2011 às 22 horas do dia 02 de junho de 2011 (horário de Brasília)

Mais informações no edital

Wednesday, February 9, 2011
no image

Desenvolvimento Web: Os melhores frameworks para CSS

Frameworks são conjuntos de códigos prontos para você usar no desenvolvimento do seu projeto. Eles foram criados para ajudar os designers e programadores a otimizarem o tempo de produção.

Existem frameworks de diversos tipos como bibliotecas de códigos PHP, ASP, Javascript, Ajax, CSS e etc. Veja alguns desses frameworks no post “Uma seleção de frameworks para você otimizar o seu processo de desenvolvimento“. Neste post não colocamos nenhum framework de CSS, então fizemos uma lista com os melhores frameworks CSS para vocês.

YUI Grids CSS
Framework desenvolvido pelo Yahoo que possui um preset com 6 modelos pré-definidos de página. Um simples arquivo de 4KB fornece mais de 1000 combinações diferentes de paginação.

YAML CSS Framework
Dirk Jesse’s extensive (X)HTML/CSS Framework oferece modelos para uma série de layouts, sejam eles simples ou complexos. YAML é baseado em padrões web e suporta os mais variados browsers. Todas as correções de bugs do Internet Explorer você pode encontrar nesse Framework.

Blueprint CSS
Blueprint CSS é um Frameork criado para diminuir o tempo gasto com desenvolvimento em CSS. Possui uma estrutura sólida para que você possa construir seus projetos, além de possuir folhas de estilo para tipografia e impressão.

CleverCSS
CleverCSS é uma pequena linguagem de marcação CSS inspirada em Python que pode ser usada para o desenvolvimento de uma folha de estilos limpa e clara. Em muitos aspectos é mais limpa e clara do que CSS2. A mais óbvia diferença é a sintaxe: trata-se de identação e não com base plena.

Tripoli CSS Framework
Tripoli é um padrão genérico de CSS e HTML para renderização, tornando crossbrowser e mais estáveis seus projetos.

WYMstyle CSS Framework
O objetivo desse Framework é fornecer um conjunto de arquivos para tornar seu CSS modular, que pode ser usado para o desenvolvimento de web sites rápidos. Ele também visa suprimir a incompatibilidade entre browsers através de módulos CSS.

Logicss Framework
Logicss é uma coleção de arquivos CSS e PHP para reduzir o tempo de desenvolvimento de aplicações Standard Compliance. Possui também folhas de estilo para Tipografia.

960 Grid System
Framework desenvolvido com base em uma largura de 960 pixels. Possui 2 variantes de 12 e 16 colunas, que podem ser utilizadas separadamente ou em conjunto.

Emastic CSS Framework
Ele é leve e possui larguras de página personalizadas. Utiliza unidades de medida “em” para o desenvolvimento dos layouts.

Origo CSS
Framework baseado no desenvolvimento em Grids. A chave está no desenvolvimento utilizando blocos e colunas. As colunas permitem ordenar os elementos de forma horizontal. Enquanto os blocos de informação são ordenados na vertical.

SenCSS
Pode ser pronunciado como “bom senso”, onde aqui a tarefa de ser repetitivo é deixada de lado e o desenvolvimento com CSS fica mais prazeroso. É otimizado para deixar o CSS o mais funcional possível. Possui estilos básicos para Tipografia e Formulários.

Taffy
Taffy foi desenvolvido para lhe poupar tempo. Como desenvolvedor web, existem várias coisas que você deve fazer por padrão a cada projeto: Sobrepor os estilos padrão de cada navegador, tipografia, entre outras coisas. Taffy cuida disso e de outras tarefas para que você possa ser semântico e produtivo.

Hartija CSS Print Framework
Hartija é Framework CSS desenvolvido para impressão, seu objetivo é criar um arquivo css para otimizar da melhor forma possível seu site para impressão.

Formy CSS Form Framework
Formy foi criado para lhe auxiliar na criação de formulários acessíveis. Funciona nos principais browsers: IE 6 / 7, o Firefox 2 / 3, Opera 9.23/9.5, Safari 3.1 (Win).

Construct
Construct é uma espécie de editor visual baseado no Blueprint em conjunto com o Framework jQuery.

Espero que tenhamos ajudado vocês com essa lista e se alguém souber de mais algum framework, compartilhe com a gente, deixe um comentário!

Fonte: 72DPI / Crédito ao @pinceladasdaweb, que foi quem escreveu originalmente o post para o iMasters.

Thursday, January 20, 2011
no image

Desenvolvimento de Sistemas: o essencial da análise

Vemos hoje na internet, principalmente em fóruns da área, pessoas procurando ou discutindo qual a melhor linguagem de programação para se desenvolver sistemas. Discussões tipo: uma é mais voltada para Web, outra não, uma é mais flexível e mais rápida.

Temos que ter em mente o seguinte: que o início de tudo não é qual linguagem usar, mas sim a análise do sistema que deve vir antes da programação em si, é um passo fundamental, devemos seguir uma linha de raciocínio que definirá a metodologia do desenvolvimento que engloba as técnicas que serão utilizadas ao longo do processo.

A seguir vamos descrever o ciclo de vida de um sistema que deve ter no mínimo três fases: análise, projeto e implementação.

Segundo S. Pompilho no seu livro Análise Essencial:

Análise – é a fase de desenvolvimento em que se determinam quais os e quesitos do sistema, isto é, dizer “o que” o sistema deve fazer, ou que o usuário espera que ele faça, essa fase é a que o analista deve ter mais contato com o usuário ou cliente, pois é nela que ele dirá o que espera do sistema, suas características e funções.

Projeto – no mesmo livro, Análise Essencial, S. Pompilho descreve como projeto de sistemas “A fase em que se determinará “como” o sistema funcionará para atender aos requisitos especificados na fase de análise”. Podemos entender que nesta etapa do desenvolvimento do sistema utilizaremos os dados obtidos no estágio de analise para descrever o funcionamento do sistema tendo a preocupação com o desempenho e com os recursos tecnológicos disponíveis pelo cliente/empresa/usuário.

Implementação “é a fase de construção do sistema”. Essa construção levará como base o modelo gerado na fase de projeto, neste estágio e que será então implementado todo o trabalho feito nas fases anteriores, sendo feito também a simulação e os teste do sistema.

Devemos lembrar também que além dessas fases existem outras que podemos chamar subfases e outras fases posteriores à implementação, tais como a implantação, mas que para uma análise essencial não viria a ser mencionada. Então podemos concluir que devemos não só nos preocupar com que linguagem utilizar, mas um bom analista se preocupa com cada fase de desenvolvimento do sistema.