O que é desenvolvimento de software iterativo?

Saiba o que significa desenvolvimento iterativo e como ele pode lhe ajudar a entregar software com qualidade e dentro dos prazos

Bom dia pessoal, hoje é terça-feira, e vou iniciar uma nova série de posts aqui no blog que tem como tema engenharia de software, assunto que pretendo estudar bastante nos próximos meses e pretendo compartilhar o que aprender aqui nestes espaço.

Basicamente, segundo a definição de Margaret Rouse, desenvolvimento iterativo é uma forma de “quebrar” o desenvolvimento de uma grande aplicação em pequenos pedaços de software.

No desenvolvimento iterativo, cada ciclo de desenvolvimento deve contemplar:

  • Levantamento de requisitos
  • Análise a arquitetura da solução
  • Implementação
  • Testes
  • Distribuição
Abaixo você pode ver uma abordagem visual do conceito proposto pelo RUP:
RUP - Desenvolvimento Iterativo

O produto de cada iteração apesar de incompleto do ponto de vista visual e de integração deve permitir seu uso total e testes pelo usuário final mantendo qualidade de produto final.

Cada nova iteração de incluir novas funcionalidades as iterações anteriores, ampliando desta forma o escopo da solução. Normalmente o desenvolvimento iterativo é usado em conjunto com uma metodologia Agil de desenvolvimento que irá controlar o escopo da implementação daquela iteração.

De forma geral cada iteração ou ciclo tem um período e escopo curtos que giram em torno de duas semanas e ao seu final deve gerar código funcional que dever ser demonstrado e validado pelo cliente.

O desenvolvimento iterativo contrasta com o modelo tradicional de desenvolvimento de software baseado em cascata e que envolve o usuário final apenas nas etapas inicial, durante o levantamento de requisitos e final após a entrega do produto, e tem demonstrado uma melhor capacidade de entrega de projetos de software com sucesso.

Veja abaixo o modelo Waterfall:

O propósito do desenvolvimento iterativo esta em permitir um processo mais flexível a mudanças de escopo durante o processo de desenvolvimento do produto reduzindo desta forma os riscos de falha no projeto de desenvolvimento de software.

Para vinalizar veja o vídeo abaixo uma pequena explicação sobre este conceito:

É isso pessoal, essa é apenas uma pequena introdução ao assunto que pretendo abordar aqui no blog todas as terças-feiras, até a próxima.

Melhorando o desempenho de seu banco de dados do Opencart!

Saiba como você pode de forma simples aumentar o desempenho de sua loja Opencart com alguns pequenos ajustes no banco de dados.

Oi pessoal tudo bom? Hoje é terça-feira, dia de colocar a mão na massa, ou melhor, no código aqui no blog e como ultimamente tenho falado bastante do Opencart, hoje vou continuar no assunto, mas antes leia alguns dos posts que já fiz sobre a plataforma.

O problema com o banco de dados do Opencart

Nesse período de mais de dois anos que venho trabalhando diariamente com o Opencart, consegui conhecer algumas de suas vantagens e desvantagens e posso dizer com tranquilidade que um dos maiores problemas da plataforma esta em seu banco de dados, porém esse problema pode ser minimizado aplicando algumas pequenas alterações no banco.

Vamos a elas?

Índices, sim eles existem

Por incrível que pareça o pessoal que desenvolveu o Opencart não teve muita preocupação com a criação de índices a grande maioria das tabelas possui apenas um único em indice que contempla apenas a chave primária.

Quem já lidou com grandes bancos de dados sabe da importância desta prática e o quanto ela reduz o tempo das consultas.

Você pode criar índices em todas as tabelas do banco de dados, mas vou listar aqui as que julgo mais importante e o comando para você criar os índices:

Tabela de Produtos (product)

#Indice para fabricantes
 CREATE INDEX manufacturer ON `oc_product` (`manufacturer_id`)
#Indice para status de estoque
 CREATE INDEX stock_status ON `oc_product` (`stock_status_id`)
#Indice para o status
 CREATE INDEX status ON `oc_product` (`status`)

Tabela de Pedidos (order)

#Indice para loja
 CREATE INDEX store ON `oc_order` (`store_id`)
#indice para cliente
 CREATE INDEX customer ON `oc_order` (`customer_id`)

Chaves estrangeiras, elas podem ajudar

Outra boa prática é a criação de chaves estrangeira e que tenham remoção de dados em cascata, desta forma se você remover um produto diretamente no banco todas os dados vinculados ao produto em outras tabelas serão também removidos.

Esse é um processo longo e um pouco mais complexo pois envolve mexer em diversas tabelas, no caso de produto são 16 tabelas vinculadas, mas pode ter certeza que o esforço vai valer a pena, pois sua base de dados vai ficar sempre homogênea.

Veja abaixo o exemplo da criação da chave na tabela product_to_category que é responsável por vincular os produtos as categorias do sistema.

O primeiro passo é alteras as tabelas envolvidas pra o tipo Innodb:
 ALTER TABLE `product` ENGINE=InnoDB
 ALTER TABLE `product_to_category` ENGINE=InnoDB
#cria a chave estrangeira com a tabela produto
 ALTER TABLE `oc_product_to_category` ADD CONSTRAINT `product_id` FOREIGN KEY ( `product_id` ) REFERENCES `oc_product` ( `product_id` ) ON DELETE CASCADE ON UPDATE CASCADE ;

Não altere o banco!

Por fim a última dica que eu tenho sobre melhorar o desempenho do banco de dados é: não altere o banco de dados e sobre alterar estou falando em criar campos, renomear colunas etc…

Fazendo isso você pode quebrar referências e prejudicar e muito sua loja Opencart além de dificultar e muito o processo de atualização.

Se precisar crie novas tabelas, mas não altere as tabelas do sistema.

É isso pessoal essas foram algumas dicas que podem melhorar o desempenho da base de dados do Opencart e consequentemente aumentar a velocidade e os resultados de sua loja Opencart.

Até amanhã!!!

Conheça o Hello e nunca mais perca nenhum contato!

Saiba como esse aplicativo vai aumentar sua produtividade na organização de contatos e manutenção do histórico de reuniões

Bom dia pessoal, como foi o fim de semana? Espero que muito bem, como vocês sabem segunda-feira é dia de trazer dicas de produtividade aqui no blog. Se você não acompanhou os últimos posts não perca:

  • Aumente sua produtividade com Alfred no Mac
  • Descubra onde você gasta seu tempo com RescueTime

Mas vamos a dica do dia:

O problema…

Todas as semanas fazemos diversas reuniões, conhecemos pessoas e discutimos diversos assuntos, porém, não raro é comum encontrarmos depois de algum tempo um “bolo” de cartões de visita na mesa ou na gaveta, sem conseguir ligar mais o nome a pessoa.

Até pior do que isso é quando em uma segunda reunião você não se lembra o nome de alguém ou o assunto discutido ou até quando você conheceu a pessoa.

A solução…

Para resolver esse problema o pessoal que criou o Evernote, um dos mais famosos softwares de produtividade desenvolveu um aplicativo chamado Hello que permite a você apenas tirar uma foto do cartão de visita e o App identifica todos os dados e te permite criar um contato diretamente na sua agenda além de permitir que você descreva quando, onde e como conheceu aquele contato.

Outro ponto muito interessante do aplicativo é já integrar com o Linkedin e Facebook permitindo que você já se conecte ao perfil do novo conhecido, tudo em poucos toques e da forma mais simples possível.

Ah, todos os seus dados vão para nuvem em sua conta Evernote que fica acessível em todas as plataformas.

Ficou curioso? Assista o vídeo sobre o aplicativo abaixo:

O Hello pode ser baixado gratuitamente na AppStore e no Android MarketPlace.

Bom por hoje é isso pessoal, espero que a dica ajude vocês a não perder mais nenhum contato, até amanhã!

Tags x Meta-tags no Opencart em 3 minutos!

Saiba como utilizar as Tags e as Meta-tags de forma correta para melhorar o desempenho de sua loja.

Bom dia pessoal, hoje é sexta feira, dia de falar sobre dicas de usabilidade, seo e interface aqui no blog, e dessa vez quero falar em 3 minutos de um tema simples e que diversas vezes se torna um ponto de confusão para administradores de lojas que utilizam a plataforma Opencart, trata-se do uso de Tags e de Meta-tags.

 Tags x Meta-tags

As meta-tags

Apesar de gerar alguma dúvida essa é uma questão muito simples, as meta-tags são palavras que definem o conteúdo da página e que serão utilizadas pelos buscadores (Google, Bing) para indexar o seu site, ou seja quanto mais descritivas melhor.

Veja a definição do W3c para as meta-tags:

The <meta> tag provides metadata about the HTML document. Metadata will not be displayed on the page, but will be machine parsable.

Ou seja é um conteúdo destinado a leitura por máquinas e não aparecerá no conteúdo da página, desta forma preocupações com formatação e etc são desnecessárias, sendo o foco principal a contextualização do conteúdo.

As tags do Opencart

Talvez o ponto principal de dúvida seja o nome adotado pelo Opencart, pois as tags do sistema nada mais são do que uma taxonomia que agrupa produtos que tenha alguma relação, por exemplo: Você possui uma loja de roupas, em quer exibir produtos relacionados ao inverno, ao invés de criar uma categoria Inverno você simplesmente utiliza uma TAG com o nome inverno em todos os produtos que tem relação com esta tag.

Desta forma todos os produtos serão agrupados em uma url própria, e o link para as tags que o produto participa será exibido no rodapé da página de produto, de forma similar ao que ocorre no sistema WordPress.

É isso simples e fácil, meta-tags buscador, tags agrupamento, e você aproveita melhor sua loja Opencart, até sexta que vem com mais dicas de usabilidade e SEO.

5 coisas que você não sabia sobre o Opencart

Conheça um pouco mais sobre o Opencart, plataforma de comércio eletrônico que não para de crescer

Olá leitores, depois de um longo inverno, estou de volta ao blog e com força total e para começar quero trazer pra vocês um texto rápido com 5 coisas que você provavelmente não sabe sobre o Opencart, minha plataforma de e-commerce favorita.

Mas antes leia algumas dicas que já trouxe aqui no blog sobre o Opencart:

Vamos as curiosidades?

Você pode apagar os produtos da sua loja Opencart,

Muita gente tem dúvida sobre apagar ou não produtos de sua loja virtual com receio que seja perdida a referência para pedidos antigos e que envolvam tais produtos.

Keep Calm! O Opencart salva praticamente todos os dados do produto e do cliente na tabela order que é destinada ao armazenamento de pedidos, desta forma mesmo que o produto seja removido a referência não é perdida.

É possível atualizar o sistema sem grandes problemas,

Outro mito esta na possibilidade de atualização do sistema, apesar do opencart não possuir uma forma de atualização simples como o WordPress a ferramenta pode sim ser atualizada sem grandes impactos, desde que o desenvolvedor tenha tido o cuidado de não mexer em arquivos do core do sistema e também não tenha alterado tabelas do sistema.

Para aprender a alterar o sistema sem “quebrar” o core veja esse post aqui sobre o VQmod.

O sistema praticamente não atualiza dados no banco (No UPDATE),

Não sei o que aconteceu com o pessoal que desenvolveu o sistema mas parece que eles não conheciam o comando update do SQL.
Praticamente todas as atualizações de dados do sistema passam por remover o conteúdo e inserir novamente, isso vale para produtos, endereços, etc… Bizarro

Dá pra melhorar performance,

Eu gosto muito do Opencart, mas ele não é muito legal com os servidores, claro, nada que se compare com o Magento que é um elefante, mas a falta de updates e uma modelagem de dados muito digamos discutível, tornam o sistema um pouco exigente em questões de hardware.

Uma boa forma de melhorar isso é realizar um tunning em seu banco de dados, criando índices e tomando cuidado com a quantidade de atributos, categorias e opções de produtos.

Não existem chaves estrangeiras

Por incrível que pareça o banco de dados do Opencart não possui chaves estrangeiras ou seja se você apagar um dado diretamente no banco de dados, coisa que desenvolvedor adora fazer, você provavelmente vai ficar com vários dados “sobrando” no banco.

Um exemplo, se você apagar um produto, o banco não irá remover suas referências de categoria, atributos e etc…

Solução para isso: ou você nunca apaga nada direto no banco de dados, ou investe um tempo criando todos os relacionamentos do banco 🙂

É isso essas são algumas curiosidades do sistema, lembrando que elas valem para a versão 1.5.1 do Opencart, em versões mais recentes isso pode ter mudado, ou não 🙂

Até a próxima

Instalando Zend Server no Mac Os

Saiba como instalar o Zend Server 6 no Mac Os Mavericks

Pessoal, a dica de hoje é bem direta e vem em vídeo, é um simples vídeo-tutorial sobre como instalar e ativar o Zend Server 6 no Os X Mavericks, como eu não uso o Zend Server não tenho muito o que falar dele, apenas que a instalação foi simples e que ele utiliza agora como webserver o Ngix que é extremente rápido!!!

Nos próximos dias vou fazer alguns testes com ele e se valer a pena coloco aqui para vocês quais foram as minhas impressões… Com certeza a galera do Zend Framework vai gostar do Zend Server…

Até a próxima!

Validação de formulários com Jquery, uma abordagem simples… | Parte 2

Confira um exemplo de implementação de validação de formulário simples com html, css e jQuery.

Oi pessoal, semana passada publiquei aqui no blog a primeira parte deste tutorial sobre a validação de formulários utilizando html, css e jQuery.

Como eu expliquei na semana passada utilizo uma lógica simples baseada em 3 princípios:

  • As mensagens de erro são inclusas no html e ocultas via css
  • Quando algum critério não é atendido o contador de erros é aumentado em um e a mensagem é exibida
  • Caso não exista nenhum erro o formulário é postado

O arquivo CSS

Em nosso arquivo css temos o estilo das mensagens de erro que serão exibidas em vermelho abaixo dos inputs.

Confira o código abaixo:

O arquivo JS

O arquivo JS é responsável por controlar o fluxo da aplicação e possui uma lógica bem simples que segue o fluxo:

  • Inicia o contador de erros em zero
  • Valida se o nome esta vazio
  • Valida se o email esta vazio
  • Valida se a senha esta vazia
  • Valida se a senha confere com a confirmação de senha
  • Caso qualquer validação esteja incorreta aumenta 1 no contador de erros
  • Caso o contador de erros seja igual a zero posta o formulario

Para validar e invalidar campos utiliza as funções setValid e setInvalid que você pode ver abaixo

As funções setValid e setInvalid

São as funções responsáveis por alterar os inputs para verde ou vermelho de acordo com a situação do input.

Veja as funções abaixo:

É isso pessoal espero que tenha ficado clara a mecânica para validação de formulários com jQuery e CSS. Essa base pode ser utilizada para quase qualquer situação, adicionando novas validações como formatos de CPF, Email etc, até validações de back-end que utilizam o Ajax do Jquery, mas isso é assunto para os próximos posts…

 

Validação de formulários com Jquery, uma abordagem simples… | Parte 1

Saiba mais sobre Validação de formulários de uma forma simples e elegante sem complicar seu código.

Bom dia pessoal, hoje é terça-feira dia de falar de código aqui no blog e colocar a mão na massa, hoje vou  abordar um assunto que apesar de ser básico no desenvolvimento web: Validação de formulários,porém ainda gera muitas dúvidas e dor de cabeça para os desenvolvedores, principalmente os iniciantes, a validação de dados em formulários.

Nesses mais de 10 anos na área já vi todo tipo de validação, com JS, no Backend, Híbrida e feita das formas mais entranhas possíveis. Bom, depois de penar bastante com esse assunto consegui definir um padrão para o meu desenvolvimento que facilitou muito a minha vida, o modelo é baseado em Jquery, Html e css puros e se necessário alguma validação de banco de dados utilizo um script de back end.

A construção do HTML

Como minha Validação de formulários é baseada apenas em HTML, Js e Css, o primeiro passo é a construção do html, nesse exemplo do artigo vamos construir um formulário bem simples para cadastro de nome, cpf, e-mail e senha com um campo para confirmação da senha, veja o exemplo de construção do html abaixo:

 

Como você pode ver no exemplo acima, cada campo é composto de 3 elementos a label ou nome do campo, o campo efetivamente através do elemento input e uma mensagem de erro que é inserida dentro do elemento span.

A lógica de validação

A lógica para validação exibição de erros e efetiva postagem dos dados seguem algumas premissas simples:

  • O texto das mensagens de erro constantes nos elementos SPAN com a class erro são ocultas inicialmente
  • Quando algum critério de validação não é respeitado a mensagem é exibida
  • Caso não exista nenhum erro o formulário é postado

Esses são o 3 princípios utilizados nessa validação, no próximo artigo vou trazer para vocês o exemplo do css e do script Jquery responsável pela validação.

Até a próxima!

Leaf, o meu substituto para o Reeader

Leaf

Bom dia pessoal, segunda feira, dia de trazer dicas de software aqui no blog. Quem me conhece sabe que sou um grande fã da tecnologia RSS, e confesso que nos últimos anos essa foi a minha forma preferida de consumir notícias, mais especificamente utilizando o aplicativo Reeader, que não vou nem linkar aqui, integrado ao Google Reader.

Porém como vocês sabe o Google com toda a sua “sabedoria” resolveu matar o Google Reader no mês passado e acabou me deixando na mão assim como milhares de usuários, pra melhorar um pouco o Reeder meu client preferido e que eu já havia comprado no Mac no Ipad e no Iphone, não vai ser corrigido 😐

Bom esse cenário, me fez buscar novas opções para continuar lendo os feeds dos meus sites preferidos, e nessa busca, testando algumas opções optei pelo Leaf.

Simples e direto

O Leaf é um leitor simples se comparado ao Reeder porém extremamente bem desenhado e focado no que interessa, consumir conteúdo.

Como destaques do Leaf coloco além do design, a integração com o sistema de notificações do OSx, o que facilita o acompanhamento dos feeds além da abertura direta de arquivos de RSS.

O Aplicativo ainda conta com algumas opções de compartilhamento integradas ao sistema e que facilitam a vida.

Veja no vídeo abaixo um pouco mais sobre o funcionamento do Leaf:

No geral o Leaf consegue atender ao que se propõe mas ainda esta longe do conforto que era proporcionado pela dupla anterior, em todo caso passou a ser minha opção.

E você fã de RSS o que fez com a morte do Google Reader?

Sublime Text 3, primeiras impressões.

Conheça algumas das novidades da versão 3 do Sublime Text, o melhor editor de código já criado, eu testei e gostei, mas ainda não é hora de migrar

Bom dia pessoal, como vocês já sabem eu sou um grande fã do Sublime Text, editor de texto que na minha opinião é a melhor opção existente para profissionais que trabalham com desenvolvimento para web, e depois de muito tempo foi lançada a versão 3 do editor e que ainda esta em beta, porém bem estável e com algumas novidades que vou destacar abaixo…

Auto-completar

Muitos comportamentos que antes eram possíveis apenas através do Emmet, agora se tornaram nativos do editor, veja no vídeo abaixo alguns exemplos na prática em um arquivo html.

 

Novo sistema de auto update para Windows 

Pra quem utiliza o editor no Windows agora essa versão conta com o mesmo auto-updater que já era disponibilizado na versão para OSX

Aumento da velocidade

Quem já conhece o Sublime, sabe que o seu ponto forte esta justamente na velocidade, e mesmo assim a nova versão consegue ser ainda mais rápida mesmo na utilização de múltiplos painéis como você pode ver no exemplo abaixo:

 

Além disso foram implementadas dezenas de melhorias além da disponibilização da API em Python que permite aos desenvolvedores criar dezenas de plugins

Package Manager

Porém quem utiliza o Sublime sabe que boa parte de seu poder de fogo está no package manager e em sua centenas de plugins e como não poderia ser diferente o Sublime Text 3 já possui o seu package manager, porém a versão é ALPHA e a instalação nada simples como você pode verificar aqui http://wbond.net/sublime_packages/package_control/installation#ST3

Resumo da Ópera

O SublimeText 3 vai manter toda a simplicidade que tornou o editor uma ferramenta indispensável, porém ainda não é hora do Upgrade, com a incompatibilidade de pacotes de problemas ainda existentes no package manager recomendo esperar a versão final para começar a pensar em atualizar

Até a próxima!