»
S
I
D
E
B
A
R
«
Frameworks Arquiteturais
26/06/09

Confesso que antes mesmo de aprender Flex eu já queria usar Cairngorm, simplesmente porque os caras que eu admirava usavam ou porque isto era sinônimo de melhores práticas, e eu queria fazer o melhor. E muito me intrigou quando um de meus mentores disse que primeiramente precisa enfrentar os problemas que o Cairngorm se propõe a resolver, e hoje posso dizer que já os dolorosamente enfrentei.

Cairngorm, PureMVC, Mate e Swiz são os mais usados, discutidos e criticados frameworks arquiteturais para Flex, estes provem uma coleção de design patterns, soluções para problemas recorrentes de programação orientada a objetos, que define um problema, implementação, quando aplicar e suas conseqüências. De forma bem sucinta, Jeremy Wischusen escreveu o artigo Choosing a Flex framework, onde compara estes frameworks entre si e o cenário que melhor se encaixa, relacionando prós e contras de cada um.

Podemos dizer que design patters é um conjunto de regras que lhe forçam a implementar soluções conhecidas para problemas recorrentes, a fim de se obter um padrão. Cabe aqui citação direta ao post do Beck Novaes na FlexDev sobre o assunto:

Não há problema algum em dois programadores terem soluções distintas. Isto é, de fato, a regra e não a exceção. Agora, o que acontece quando vemos uma determinada solução e pensamos: “eu jamais faria assim”; “esta solução é tão distinta da minha que não consigo ver sentido algum em fazer deste modo”. Pior, o que acontece quando não entendemos porque aquela solução que jamais imaginaríamos é a melhor? É aqui que entram as Conceptual Constraints.

Conceptual Constraints são conceitos que você mantém na mente e que lhe obrigam a procurar alternativas para resolver um problema, pois você sabe que as soluções que lhe ocorreram num primeiro instante irão violar estes conceitos.

Basicamente, se dois programadores tem em mente as mesmas Conceptual Constraints, ou seja, se eles sabem principalmente as coisas que eles NÃO DEVEM fazer, isto irá permitir que, no mínimo, um entenda a solução do outro – não descarto a hipótese que estes dois programadores cheguem a soluções semelhantes graças ao fato de ambos saberem o que NÃO DEVE ser feito.

Exemplos de Conceptual Constraints do Cairngorm:

  • O ModelLocator não deve saber nada do Command nem da View;
  • O Command não deve saber nada da View;
  • A View não deve saber nada do Command;
  • O ModelLocator é possível manter o estado no cliente, mas os dados nele armazenados devem ter um significado semântico. No lugar de preço, nome e descrição, devemos ter um objeto Produto no ModelLocator. Além disto, estes objetos, muitas vezes devem encapsular lógica de negócio – o que possibilita a realização de testes unitários;
  • Os Commands são as Worker Classes do Cairngorm, como tal, elas devem prover a funcionalidade de negócios do seu aplicativo e nada impede que o Command tenha apenas um método “execute”.

Aplicar fundamentais design patterns sem adotar um framework arquitetural é correr o risco de inventar a roda. Tenho experimentado Cairngorm e PureMVC, e o que mais me agradada é o primeiro, principalmente porque se baseia em técnicas importantes da arquitetura do Flex, com o DataBinding e Event Driven Programming. Por outro lado, o PureMVC é muito interessante para programadores que possuem ótimo conhecimento em orientação a objetos.

Os benefícios são grandes, mas nunca nos atende completamente, motivo que não deve ser usado para não usar framework algum. Talvez seja muito mais fácil construir uma aplicação orientada a gambiarras (POG), desde que seja o único programador e se lembre depois o que aprontou!

Flex 4 e pt_BR
09/06/09

Uma das novidades do Flex 4 é que já vem incluído na instalação do SDK as bibliotecas de internacionalização dos componentes nativos. Antes era necessário baixar a biblioteca (ou criar) e copiá-la para o diretório locale do framework ({install dir}sdks\{version}\frameworks\locale).

Porém, parece que conhecidos erros de pt_BR (português – Brasil) persistem.

  • No SharedResources.properties do framework_rb.swc, ao invés de dateFormat=DD/MM/YYYY está dateFormat=DD/MM/AAAA. Isto impede o bom funcionamento do DateField, por exemplo;
  • No datavisualization_rb.swc, ao invés do diretório ser pt_BR está ja_JP.

Estou disponibilizando o locale pt_BR com estas correções. Vale destacar que nem todas as chaves estão traduzidas, uma sugestão para a comunidade brasileira se unir e tomar conta desta biblioteca.

Estes bugs foram notificados a Adobe através desta e esta Bug Issue.

Flex 4 e AIR Update Framework – Error #1007
04/06/09

Já estou utilizando em novos projetos o Flex 4 SDK e o Flash Builder 4 (FB4), ambos em versão beta lançados no início desta semana pela Adobe. As novas features são surpreendestes e um tanto diferentes da versões anteriores, que demanda estudo da documentação e provas de conceito para certificarmos que não teremos problemas com estes por estarem ainda em homologação.

Ao desenvolver uma POC (prova de conceito) do update framework do Adobe AIR, seguindo todo passo-a-passo do artigo de Mihai Corlan, me deparei com um erro assustador ao chamar o método initialize de uma instância de ApplicationUpdaterUI.

Continue lendo este post »

Surpreenda seus usuários
21/03/09

No cotidiano de um desenvolvedor de software, nos constantes desafios entre tecnologia e negócio, pensar diferente e a busca pelo surpreendente não é nada fácil, principalmente quando há um cronograma lhe apertando. Muitas vezes deixamos de lado o desejo de encantar nossos usuários, e criamos algo dentro do comum, que apenas muda o status do desenvolvimento de um caso de uso para finalizado.

Não que cronograma e gestão de requisitos não sejam importantes, mas não consigo imaginar um software com qualidade, que tenha sido desenvolvido dentro do cronograma e escopo, mas que não traz aos usuários o gosto pelo seu uso. Também de nada vale entregar algo aparentemente surpreendente, que custou o dobro do previsto e possui brechas de negócio.

E tenho vivenciado que encantar usuários pode não ser difícil se centrarmos o desenvolvimento na experiência dele, e fazer com que a interação com o aplicativo seja inovadora e divertida, e que cada clique reflita e justifique a existência do sistema.

Tenho buscado soluções que me ajudem nesta tarefa, e numa destas buscas encontrei o Degrafa, uma biblioteca de componentes para trabalhar de forma mais amigável com gráficos no Adobe Flex, que tem me ajudado a construir as coisas que aparecem em minha mente nos constantes momentos de matutação. Insisti comigo mesmo em criar algo pensando no que serial o ideal e não com que aquilo que tenho em mãos para construir. Ou seja, desenhei uma interface sem levar em conta os componentes que tenho, e a grande surpresa foi que não demorei mais tempo programando porque fiz algo diferente, pelo contrário, a programação foi mais ágil porque sabia exatamente qual deveria ser o resultado final. 

E nesta missão de criar aquilo que temos em mente, há componentes e bibliotecas interessantes para Adobe Flex. Selecionei meus favoritos:

Penso que fazer coisas diferentes não custa mais num projeto de software, e pode ser uma tática para arrancar um sorriso do usuário.

»  Substance: WordPress   »  Style: Ahren Ahimsa