logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!
Mar 7

Combine SEO e CRO para aumentar sua conversão

Escrito por Igor Musardo em .NET, 1, 2.0, 4, 6, AR, BI, blog, busca, C#, camp, campanha, class, cliente, consultoria, Dica, engine, err, for, IE, if, image, int, internet, mg, O, on, online, Otimização, Outros, Pessoal, procura, produto, pt, RIA, Ria’s Geral, S+S, SEO, site, TAT, Teste, UI, UX, web, XP @ 03 7th, 2012 | via http://www.igormusardo.com.br | Sem comentários
Igor Musardo
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Muitos lojistas na Internet buscam descobrir qual a estrat?gia mais importante para melhorar suas taxas de convers?o: Search Engine Optimization (SEO) ou Conversion Rate Optimization (CRO). Mas ao contr?rio do se discute, SEO e CRO devem andar de m?os dadas e devem trabalhar juntos para que um site seja bem sucedido.

O que ? CRO?

Voc? reconhece esse termo? Otimiza??o taxa de convers?o (CRO) ? simplesmente focado em convers?o ao otimizar qualquer p?gina particular. Eu, pessoalmente, vejo isso como um desdobramento de Otimiza??o de Landing Page, Landing Page Optimization, (LPO) e ?s vezes ? visto como apenas uma outra maneira de dizer LPO.

Mas o que realmente define Sucesso para o Website?

Convers?o! A inten??o de converter um internauta casual da SERP para um visitante em seu site atrav?s do SEO, e converter esse visitante em um cliente atrav?s do CRO, ? claro que estas estrat?gias est?o intimamente ligadas.

Funil de Otimização da Taxa de Conversão

Vamos come?ar pela defini??o das metas mais b?sicas de SEO e CRO. O objetivo do SEO ? conseguir ranking alto nos buscadores para as palavras-chave que mais se aproximam de uma consulta do usu?rio, e o objetivo do CRO ? aumentar o n?mero de visitantes que s?o convertidos em clientes. Estes s?o obviamente, defini??es simplificadas, mas desmonstram a estreita liga??o entre SEO e CRO e o papel que cada uma dessas estrat?gias desempenha para melhorar as taxas de convers?o.

Tanto o SEO e o CRO focam os visitantes do site. SEO quer encontrar perspectivas com base no que e onde eles est?o procurando e proporcionar uma raz?o para visitar o site, e o CRO quer criar a melhor experi?ncia de usu?rio poss?vel quando eles chegam. Para ter sucesso em ambos ? preciso entender a inten??o do usu?rio, o que tamb?m ir? ajudar a determinar a qualidade dos visitantes. Visitantes qualificados s?o muito mais propensos a estar pronto para fazer uma decis?o de compra do que os visitantes n?o qualificados, que s? est?o em busca de informa??es ou at? mesmo n?o tem consci?ncia de por que ele acabou naquela p?gina em especial.

Vamos dar uma olhada em como e por que SEO e CRO podem e devem trabalhar juntos para melhorar as taxas de convers?o.

Integrar SEO e CRO inclui:

  • Estrat?gia no uso de palavras-chave. Antes que voc? possa otimizar uma p?gina para melhorar as taxas de convers?o, voc? deve entender a inten??o do visitante, e palavras-chave s?o a maneira mais f?cil e r?pido para obter esse entendimento. Uma p?gina de destino eficaz usa palavras-chave para permitir que os visitantes saibam que est?o no lugar certo, o que torna mais f?cil para eles ver o por que e como fazer uma compra;
  • Focar um ?nico produto ou servi?o. Esta estrat?gia vai conseguir rankings melhores nos buscadores e melhores taxas de convers?o. Seus produtos e servi?os n?o devem competir uns com os outros nos buscadores. Mantenha-o simples. Os motores de busca querem saber exatamente o que uma p?gina ? e os visitantes querem encontrar o que procuravam;
  • Ter um t?tulo, claro, relevante, atraente e palavras-chave. O t?tulo meta nas SERPs deve coincidir com o t?tulo da p?gina de destino, e devem incluir palavras-chaves e o principal benef?cio do produto;
  • Teste. SEO e estrat?gias de CRO devem ser testadas para garantir um fluxo constante de visitantes mais qualificados para uma p?gina de destino mais amig?vel para o usu?rio.

Aumentar os Resultados

Ao iniciar uma campanha de marketing online, CRO deve vir em primeiro lugar (a menos que seu site n?o esteja recebendo tr?fego suficiente para executar testes v?lidos). Uma vez que a p?gina de destino esteja otimizada para melhorar as taxas de convers?o, voc? pode desenvolver um programa de SEO que continuamente encontra e visitantes qualificados para o site. Pense em CRO como uma a??o de tampar buracos em um balde (website) antes de derramar mais ?gua (tr?fego desejado).

Para encerrar, sem CRO, todo esfor?o de SEO pode ser em v?o se os visitantes tiverem uma experi?ncia negativa quando chegaram no site. Mas sem SEO, CRO te dar? apenas uma p?gina otimizada sem visitantes.

N?o esque?a, para maximizar visitantes, melhorar as taxas de convers?o e aumentar a receita, SEO e CRO devem trabalhar juntos e em harmonia.

N?o est? satisfeito com os resultados atuais de seu Site ou eCommerce? Entre em contato.

Refer?ncias:

  • ClickZ;
  • SEOMoz;
  • Wikipedia.

Jan 12

The future of the Flex framework

Escrito por Fabio da Silva em .NET, 1, 2.0, 4, 6, Adobe, app, AR, BI, blog, Blogs, C#, camp, Flex, for, framework, futuro, Google, int, mg, O, on, Ria’s Geral, S+S, web @ 01 12th, 2012 | via http://fabiophx.blogspot.com | Sem comentários
Fabio da Silva
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Mihai Corlan postou informações interessantes sobre o futuro próximo do Flex.

Veja mais neste post.

Ele mostra ainda em outro post que o Tour de Flex agora está disponível para iPad.

Dez 10

Como evitar fraudes em minha loja virtual?

Escrito por Igor Musardo em .NET, 1, 2.0, 4, 6, AR, auto, back, BI, C#, camp, class, cliente, consultoria, control, dados, demo, Dica, Dicas, email, empresas, err, exemplo, Exemplos, Ferramenta, fonte, for, game, git, html, ide, IE, if, image, int, internet, mg, moip, O, on, on-line, online, pagamento, pagSeguro, problema, processo, procura, prova, pt, RIA, Ria’s Geral, S+S, Segurança, serviço, Serviços, site, TAT, Tema, UI, uint @ 12 10th, 2011 | via http://www.igormusardo.com.br | Sem comentários
Igor Musardo
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Voc? sabia que em m?dia 9 entre cada 10 novas lojas virtuais deixam de existir no primeiro ano de vida? E que em sua grande maioria devido as fraudes on-line.

As grandes causas de fraudes sofridas pelo comercio eletr?nico est?o, de um lado a escassa seguran?a e as limita??es dos meios de pagamento e de outro a grande dificuldade pr?tica em verificar e garantir a identidade do cliente/comprador.

Compras com cart?es de cr?dito fraudulentos.

compra-online-seguraNeste caso o comprador golpistas aproveita os dados de um cart?o de cr?dito que foi clonado ou roubado ou cujos dados estejam dispon?veis por alguma raz?o (muitas vezes basta um xerox frente e verso), se passando pelo titular do mesmo e realizando a compra em nome dele. Alguns golpistas mais sofisticados procuram ter um cadastro completo do verdadeiro titular do cart?o de forma a estar pronto em caso de liga??o.

Como enfrentar as fraudes?

Existem basicamente duas alternativas para enfrentar o problema das fraudes no com?rcio eletr?nico.

Terceirizar a transa??o eletr?nica

Terceirizar para empresas de meios de pagamento pois est?o estruturadas para garantir a seguran?a nas transa??es.

Alguns exemplos de empresas deste tipo (para o Brasil) s?o os seguintes:

• http://www.pagseguro.com.br
• http://www.moip.com.br
• http://www.braspag.com.br
• http://www.ipagare.com.br

Realizar a transa??o eletr?nica na pr?pria estrutura da empresa

comprarCaso escolha criar uma estrutura de verifica??o interna, vale levar em conta os seguintes fatores e dicas.

O ponto principal ? a valida??o da identidade do cliente, e conseq?entemente de seus meios de pagamento. Para isso voc? pode utilizar usadas ferramentas e fontes de valida??o de cadastro, tal qual Zip Code. Os dados solicitados no cadastro devem ser escolhidos com base nas necessidades do neg?cio. O uso de ferramentas autom?ticas de scoring ou de detec??o de ind?cios de fraudes ? muito recomend?vel.

? ?til, quando poss?vel, utilizar ferramentas de an?lise de risco e preven??o de fraudes ou ainda sistemas de scoring automaticos ou n?o.

Solicitar c?pias de determinados documentos ou comprovantes por fax ou email pode ser uma ?tima alternativa para alguns tipos de neg?cios. Uma longa demora no envio dos documentos ? sinal de suspeita.

Em caso de suspeita de fraude poder?o ser realizadas entre outras, as seguintes verifica??es:

  • Valida??o do nome do cliente em rela??o ao CPF/CNPJ junto ao site da Receita Federal.
  • Valida??o de dados do cliente junto a sistemas de prote??o ao credito (SPC, Serasa…).
  • Valida??o do BIN do cart?o de credito (que indica qual o banco emissor do mesmo e ? representado normalmente entre os primeiros 6 d?gitos do n?mero) que pode ser comparado com um campo solicitado no cadastro ou atrav?s de perguntas por telefone. Esta valida??o pode normalmente ser realizada atrav?s dos sites das operadoras dos cart?es.

Ferramentas de preven??o de fraudes

Automatize o processo de verifica??o e preven??o de fraudes em seu ecommerce atrav?s dessas ferramentas:

crivo

fcontrol

clearsale
http://www.crivo.com.br http://www.fcontrol.com.br

http://www.clearsale.com.br

L?gico que o melhor caminho sem d?vida ? quando sua empresa mescla a utiliza??o de v?rias formas e t?cnicas de verifica??es e valida??es dos compradores e suas compras em tempo real para identificar e previnir o preju?zo com fraudes no ecommerce.

E a sua empresa como trabalha para previnir as fraudes? Comente logo abaixo.

Sua empresa n?o utiliza nenhuma forma de preven??o contra fraudes? Entre em contato comigo.

Dez 6

FMDS 2011

Escrito por Igor Musardo em 1, 2.0, 3.5, 4, 6, AR, C#, camp, class, Curitiba, event, Evento, FMDS, git, IE, image, int, Mac, mg, O, on, programação, RIA, Ria’s Geral, S+S, site @ 12 6th, 2011 | via http://www.igormusardo.com.br | Sem comentários
Igor Musardo
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Pelo terceiro ano consecutivo estarei presente no FMDS (F?rum de M?dias Digitais e Sociais) em Curitiba. Este ano ser? nos dias 06 e 07 de Dezembro (ter?a e quarta-feira).

O evento ser? realizado no mesmo local de 2010, na FIEP – Federa??o das Ind?strias do Estado do Paran? (Av. Comendador Franco, 1.341 – Jardim Bot?nico), que fica pr?ximo dos principais campi da UFPR e da PUCPR, na rota para a Rodovi?ria e do Aeroporto Internacional Afonso Pena.

Confira a programa??o no site do evento.

Nos encontraremos l?!

Dez 6

JodaTime – Java Date que funciona!

Escrito por DClick Team em .NET, 1, 2.0, 4, 6, api, AR, bar, BI, blog, C#, camp, class, classe, classes, código, control, Curso, Cursos, Design, Design Pattern, Diversos, Documentação, efeito, err, exemplo, Exemplos, falha, for, Google, Hibernate, html, ide, IE, if, image, int, interface, internet, Java, lógica, map, mg, O, on, online, Opinião, padrão, pattern, print, problema, RIA, Ria’s Geral, S+S, Sem categoria, singleton, string, Sun, TAT, Tema, Teste, try, Twitter, UI, uint, Vários, XP, zend @ 12 6th, 2011 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!


JodaTime



Não existe segredo quando se fala da implementação de datas no Java: é ruim de usar. Alguns chegam a dizer que é errado usar inclusive, mas não serei tão extremo.
A API de datas do Java é ruim por vários motivos, como por exemplo, é mal documentada, não é Thread Safe, é difícil de manipular datas, e o comportamento nem sempre é o esperado.
Vamos ver como susbtituir a API de datas que vem Out of the Box no Java, por uma mais efetiva, amigável e confiável: JodaTime.


Lembrando do Calendar



Todo programador Java conhece o Calendar, e sabe que para usá-lo, basta seguir o Design Pattern singleton, ou seja, basta chamar o método de classe em Calendar que devolve a instância única do sistema para o Calendar.


Problema: não funciona.


Não funciona porque se a instância é singleton, e não utiliza threadlocking no código, então não é uma instância ThreadSafe. Logo toda vez que chamamos o getInstance() do Calendar, obtemos uma nova instância. Para ilustrar, crie um teste em JUnit 4 com o seguinte código:

1
2
3
4
5
6
7
Calendar calendar = Calendar.getInstance();

System.out.println(calendar.getTime());

Calendar calendar2 = Calendar.getInstance();

Assert.assertTrue(calendar == calendar2);



Rode o teste e veja a barra do JUnit ficar vermelha. O comparador ‘==’ usado em objetos, compara pelo endereço de memória, o que deveria ser o mesmo se fosse seguido o padrão singleton de verdade.
Pra piorar, todos os métodos que alteram as intâncias do Date estão expostos (por mais que estejam depreciados) para mantêr compatibilidade com versões anteriores da VM. Portanto o Date também não é ThreadSafe, pois não existe controle de concorrência em sua implementação.
Agora vamos deixar o Date e o Calendar de lado, e vamos ao JodaTime.

DateTime



O JodaTime diferencia muito bem os conceitos de data, instante de tempo, período, etc. A classe mais básica (interface no caso) é a ReadableInstant. Não precisa dizer que todas as modelagens de data implementam essa interface, permitindo comparar todos os tipos de modelagem de tempo pontuais. Um período não descreve um único instante ou ponto no tempo, por exemplo.
DateTime é talvez o ReadableInstant mais conhecido, e funciona muito parecido com o Date do Java.
Fatores que tornam o DateTime mais amigável são: é ThreadSafe pois é imutável, é muito bem documentado, e é muto fácil realizar operações com data. Vamos escrever um pouco de código para entender o que se passa.
Comece criando um DateTime. Como no Java, este DateTime criado possui o instante atual do sistema. Em seguida para efeito de teste (o teste pode falhar dependendo de quando for executado), adicione um dia na data criada, e verifique que o novo date aponta para amanhã:

1
2
3
4
5
DateTime date = new DateTime();

date = date.plusDays(1);

Assert.assertEquals(new DateTime().getDayOfYear() + 1, date.getDayOfYear());



Repare que tive que reassociar o date para que ele pudesse ser alterado, afinal DateTime é imutável, o mesmo comportamento que o BinInteger possui. Repare também que pra adicionar um dia, basta chamar plusDays. Este método já se encarrega de fazer toda a lógica de adicionar um dia na data, como por exemplo mudar o mês ou ano se for preciso, por isso se esse teste for rodado no dia 31 de dezembro, ele irá falhar pois o DateTime irá adicionar mais um dia a data, e perceberá que se trata do ano seguinte, e portanto getDayOfYear irá devolver ’1′, e não ’366′ ou ’365′ como esperado.
O JodaTime também trata anos bissestos e horário de verão se for selecionado o fuzo correto.
Existe uma API bem completa em DateTime para manipular todos os campos possíveis da data, sendo assim fica muito mais fácil iterar ao longo dos dias, sem precisar delegar pro Calendar a tarefa, e depois recuperar o resultado.
Não vou abordar muito da API do JodaTime, pois está muito bem documentada e existem muitos exemplos nas internet. O objetivo desse post é tratar do assunto do próximo tópico.

JodaTime e Hibernate



Pior que manipular datas, é persistir datas. Cada banco persiste data do seu próprio jeito, e cada implementação de ORM trata o Date do seu próprio jeito. Mas se você está utilizando o Hibernate, o JodaTime tem uma solução de padronização pra você: JodaTime Hibernate.
Com o JodaTime Hibernate é possível mapear diversos tipos de representação de data em suas classes Java, com ou sem TimeZone, como String ou bigint, como período ou duração, etc.
Para se ter uma idéia do que é possível, basta verificar a documentação online.
E para utiliza é muito fácil. Imagine que você tenha uma entidade com um campo DateTime, que se chama entryDate, portanto temos o getter:

1
2
3
4
@Column(nullable = false)
public DateTime getEntryDate()
return entryDate;



Para tornar este DateTime uma data que é padrão do banco que será utilizado, por exemplo, basta adicionar a seguinte anotação:

1
2
3
4
5
@Column(nullable = false)
@Type(type = “org.joda.time.contrib.hibernate.PersistentDateTime”)
public DateTime getEntryDate()
return entryDate;



Estamos falando para o hibernate utilzar o tipo de coluna descrito pelo PersistentDateTime, e utilizar o mesmo para converter a data novamente para DateTime quando for recuperado.
Caso você esteja fazendo engenharia reversa de algum banco, recomendo ler a descrição de todos os tipo disponíveis pra fazer a melhor escolha.
Com isso conseguimos obter todos os benefícios do JodaTime em nossas entidades, facilitando controlar as datas no domínio de nossas aplicações.


Espero ter despertado sua curiosidade com o JodaTime. Na minha opinião é uma das melhores bibliotecas Java disponíveis, mas não quero falar muito sobre suas funcionalidades, pois um dos pontos mais fortes da biblioteca é a facilidade de se acostumar com ela, e principalmente utilizar todos seus recursos. Quero que vocês tenham um pouco desse gostinho :) .

Por @Gust4v0_H4xx0r

Dez 3

O que é Behavioral Targeting?

Escrito por Igor Musardo em .NET, 1, 2.0, 6, AR, Banco de Dados, Behavior, BI, busca, C#, camp, campanha, class, consultoria, dados, demo, err, Ferramenta, for, ide, IE, if, image, int, internet, Mercado, mg, novidade, O, on, online, player, portal, processo, procura, produto, pt, RIA, Ria’s Geral, S+S, Sun, tag, TAT, UI, web, XP, zend @ 12 3rd, 2011 | via http://www.igormusardo.com.br | Sem comentários
Igor Musardo
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

O in?cio

O conceito de segmenta??o comportamental, conhecido como Behavioral Targeting (BT), surgiu nos Estados Unidos dentre os profissionais de marketing direto como uma estrat?gia dirigida a conquistar uma parcela maior de vendas dentro um subgrupo espec?fico, ao inv?s de buscar uma participa??o mais limitada de compras por usu?rios de todas as categorias.

Em seguida surgiram as primeiras estrat?gias de Behavioral Targeting na internet, mas a imaturidade do mercado fez com que o assunto ficasse esquecido.

Atualmente a necessidade crescente de otimizar esfor?os de m?dia, aumentar o ROI de campanhas e a lealdade do consumidor est?o estimulando o crescimento de a??es dentro do Behavioral Targeting, que hoje j? ? um grande diferencial para portais e anunciantes, mas pouco explorado pelas lojas virtuais.

Mas afinal, o que ? segmenta??o “comportamental”?

Segmenta??o comportalmental n?o diz respeito ? aquela segmenta??o por regi?o, por perfil preenchido em cadastros, ou por IP, etc. O diferencial est? no foco dado aos h?bitos de navega??o e consumo dos usu?rios. Essa ? a novidade!

N?o h? invas?o de privacidade nesse tipo de estrat?gia. Muito pelo contr?rio. Os usu?rios deixam “rastros” ao navegar na web. Essas informa??es captadas geram um banco de dados an?nimo contendo centenas de vari?veis. A intelig?ncia est? na interpreta??o dessas informa??es e no agrupamento dos perfis de acordo com suas similaridades.

Qual ? a vantagem em se utilizar BT em campanhas online?

Individualizar o p?blico-alvo. O simples fato de conhecer previamente as atitudes de um usu?rio permite que o anunciante crie pe?as com linguagem direcionada a ele, demonstrando conhecimento de seus interesses.

Imagine que voc?, como consumidor, est? no processo de escolher um notebook. Compara pre?os, funcionalidades e ainda indeciso. Em algum momento, ao clicar em um portal qualquer para ler uma not?cia, se depara com um banner dizendo “Vai continuar procurando um Notebook a vida inteira? O Ponto Bahia resolveu te dar uma forcinha: 25% de desconto, mas ? s? pra voc?. Compre agora!“.
Essa segmenta??o ? boa para o anunciante, que pode fazer render mais seus investimentos em m?dia online aumentando o ROI, j? que poder? direcionar suas verbas diretamente para o p?blico-alvo, sem dispers?o de dinheiro.
Os ve?culos tamb?m lucram com essa ferramenta, que amplia seu invent?rio publicit?rio e aumenta o interesse na veicula??o em ?reas ainda pouco exploradas.
Como consequ?ncia de exibir an?ncios direcionados para o p?blico alvo, as taxa de cliques de uma campanha aumentam consideravelmente, pois atinge um p?blico realmente interessado no produto.
Essa modalidade de marketing ? muito explorada nos Estados Unidos, mas no Brasil apenas os grandes players de ecommerce utilizam, havendo uma grande oportunidades para os lojistas virtuais de m?dio e pequeno porte.
Sua loja n?o colhe os benef?cios de sugerir produtos utilizando segmenta??o comportamental? Entre em contato comigo.

Nov 3

Flash Camp SP

Escrito por Pedro Claudio em 1, 4, 6, ActionScript 3, AUG, blog, C#, camp, Eventos, flash, html, image, mg, O, Ria’s Geral, vs @ 11 3rd, 2011 | via http://blog.pcsilva.com/index.cfm | Sem comentários
Pedro Claudio
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

O AUG ASDev está organizando um Flash Camp em São Paulo, saiba mais.

Out 30

Windows Phone Mango – Local Database

Escrito por Alexandre Tadashi em .NET, 1, 2.0, 4, 6, abas, AMF, Aplicativos, app, AR, Arquitetura, arte, Artigo, auto, BI, blog, Blogs, botão, C#, camp, class, classe, classes, cliente, código, collection, cultura, Curso, Cursos, dados, demo, desempenho, Desenvolvedor, Design, designer, Documentação, dotnet, DRE, err, event, Evento, exemplo, Ferramenta, for, Formação, handle, html, ide, IE, if, int, interface, layout, library, Links, linq, Linq to Sql, map, mg, Microsoft, monitor, MSDN, mudanças, O, on, Otimização, Outros, Partilha, processo, pt, rest, RIA, Ria’s Geral, S+S, SDK, server, serviço, silverlight, SQL Server, state, string, TAT, Tecnologia, Tema, template, Treinamento, UI, UX, Ved, vs, window, windows, XAML @ 10 30th, 2011 | via http://alexandretadashi.net/ | Sem comentários
Alexandre Tadashi
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Na versão Mango do Windows Phone, você pode manipular uma base de dados localmente, chamada de local database na documentação oficial, o recurso permite que o desenvolvedor crie aplicativos com registros de dados em tabelas, além de manipular seus registros utilizando o LINQ to SQL.

Uma base de dados local no WP7 fica localizada no Isolated Storage, um local acessível somente pela aplicação corrente, a arquitetura fica conforme a figura abaixo, onde temos a aplicação que contém um DataContext e através de LINQ to SQL, fazemos o acesso a base de dados local no Isolated Storage

Arquitetura Local Database

Arquitetura Local Database

Para saber mais sobre Isolated Storage acessem os links:

http://msdn.microsoft.com/en-us/library/ff402541(v=vs.92).aspx

http://www.windowsphonebrasil.net/windowsphonebrasil/post/2010/10/08/Salvando-e-restaurando-o-Application-State-no-Windows-Phone-7.aspx

No WP7 as aplicações ficam eram áreas isoladas uma das outras, ou seja, uma aplicação não tem acesso ao Isolated Storage de outra aplicação, portanto até o momento não é possível compartilhar uma base de dados local com diversas aplicações. Diferente de uma base de dados SQL Server, um local database não pode rodar como um serviço continuo, visto que ele é executado somente durante o processo da aplicação.

Você pode criar um local database para manipular uma quantidade de dados razoável utilizando as facilidades de consultas do LINQ to SQL juntamente com o relacionamento de tabelas, similar a uma base de dados comum, o local database é uma implementação do SQL CE para o WP7, permitindo realizar facilmente tarefas com incluir, alterar , excluir e realizar consultas com LINQ.

Até o momento não existe uma ferramenta de designer visual e oficial para criar as tabelas, relacionamentos, etc, com a base de dados local, o que poderia facilitar muito, neste artigo faremos um exemplo simples, somente com uma tabela, porém, em um projeto mais complexo, essa tarefa poderia ser um pouco trabalhosa, uma forma não oficial de criar o modelo seria utilizar o SQL Metal, para mais informação, acessem o Centro de Treinamento Oficial do Windows Phone no MSDN ou através do link : http://windowsphonegeek.com/articles/Using-SqlMetal-to-generate-Windows-Phone-Mango-Local-Database-classes .

Com o SQL Metal podemos criar o Data Context através de um comando e com poucas modificações deixá-lo compatível com o Mango e poupar a codificação manual da criação de tabelas e relacionamentos.

Exemplo de comando do SQL Metal:

%ProgramFiles(x86)%Microsoft SDKsWindowsv7.0ABin>SqlMetal.exe
/code:”C:CaminhoClienteDC.cs” “C:CaminhoClienteDB.sdf”

Outras formas:

http://claudiufarcas.blogspot.com/2011/10/windows-phone-mango-sql-ce-tips-and.html

http://blogs.ugidotnet.org/corrado/archive/2011/06/05/using-local-database-in-wp7-mango.aspx

Nesta primeira parte do artigo vou criar uma base de dados muito simples, com uma tabela somente e um único campo, dessa forma podemos focar em como criar e entender os conceitos envolvidos Vou criar uma base de dados Cliente.sdf, com uma tabela chamada Cliente e um campo chamado Nome.

A primeira classe que vamos criar é a entidade Cliente e decorar com alguns atributos utilizados para a manipulação da base de dados, a classe servirá de apoio para a criação da tabela cliente. Para que você possa inserir os atributos nas propriedades da classe, é necessário adicionar o using System.Data.Linq.Mapping, em seguida adicione o atributo [Table] logo acima da criação da classe e adicione o atributo [Column()] em cada propriedade, na primary key da tabela, personalize com :

[Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]

Dessa forma a coluna será criada na tabela como sendo Primary Key, não permitindo registros duplicados e gerando automaticamente um número a cada inclusão. Com a adição do atributo Column() nas outras propriedades, cada coluna correspondente será criado na tabela.

Com os atributos de colunas você pode definir uma série de recursos, para saber quais são os atributos de colunas que você pode utilizar no LINQ to SQL para WP7 acesse o link http://msdn.microsoft.com/en-us/library/system.data.linq.mapping.columnattribute(VS.95).aspx

Um atributo em especial que adiciona uma coluna de versão pode auxiliar no desempenho de grandes atualizações de dados, apresentando uma significativa melhoria na aplicação, é o IsVersion=true, essa otimização é exclusiva para o LINQ to SQL do WP7 e usado internamente para identificar a versão da coluna modificada:

[Column (IsVersion = true)]
_VERSION Binary privado;

Igualmente importantes são os atributos de associações, que permitem realizar o relacionamento entre as tabelas, para mais informações acesse:

http://msdn.microsoft.com/en-us/library/system.data.linq.mapping.associationattribute(v=VS.95).aspx

Exemplo de Associação:

[Association(Storage = "_cliente", ThisKey = "_clienteId", OtherKey = "Id", IsForeignKey = true)]

Código da Classe Cliente:

? ? ?  [Table]
? ? ?  public class Cliente : INotifyPropertyChanged, INotifyPropertyChanging
? ? ?  
? 
? ? ? ? ? ? ?  #region INotifyPropertyChanged Members
? 
? ? ? ? ? ? ?  public event PropertyChangedEventHandler PropertyChanged;
? 
? ? ? ? ? ? ?  private void NotifyPropertyChanged(string propertyName)
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  if (PropertyChanged != null)
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ?  }
? 
? ? ? ? ? ? ?  #endregion
? 
? ? ? ? ? ? ?  #region INotifyPropertyChanging Members
? 
? ? ? ? ? ? ?  public event PropertyChangingEventHandler PropertyChanging;
? 
? ? ? ? ? ? ? 
? ? ? ? ? ? ?  private void NotifyPropertyChanging(string propertyName)
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  if (PropertyChanging != null)
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ?  }
? 
? ? ? ? ? ? ?  #endregion
? 
? 
? ? ? ? ? ? ?  [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
? ? ? ? ? ? ?  private string id;
? ? ? ? ? ? ?  public string Id
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  get
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  return id;
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  set
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  if (id != value)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  NotifyPropertyChanging("Id");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  id = value;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  NotifyPropertyChanged("Id");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  }
? 
? ? ? ? ? ? ?  }
? ? ? ? ? ? ? 
? ? ? ? ? ? ?  [Column()]
? ? ? ? ? ? ?  private string nome;
? ? ? ? ? ? ?  public string Nome
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  get
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ?  ? ? ? ? ? ? ? ? return nome;
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  set
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  if (nome != value)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  NotifyPropertyChanging("Nome");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  nome = value;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  NotifyPropertyChanged("Nome");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  }
? 
? ? ? ? ? ? ?  }
? ? ? ? ? ? ? 
? 
? ? ?  }

Em aplicações Silverlight é comum implementar a interface INotifyPropertyChanged para monitorar mudanças nas propriedades da classe , e tirar um melhor proveito do recursos de databinding da tecnologia, para auxiliar o LINQ to SQL, também vamos implementar a interface INotifyPropertyChanging, com ela é possível monitorar quando uma propriedade será modificada e com isso o DataContext é informado e pode identificar as mudanças e melhorar a performance da aplicação.

O Data Context é o local onde definimos o contexto dos dados que servirão para criar a base de dados local, o LINQ to SQL depende do mapeamento entre o modelo de objetos e o esquema da base de dados. Dependendo da complexidade do modelo, esse arquivo pode ser trabalhoso de ser criado manualmente, mas existem formas de utilizar alguma ferramenta para cria-lo, o SQL Metal é uma delas conforme comentado acima no artigo.

Crie uma classe chamada ClienteDataContext , ela vai herdar de DataContext, o DataContext contém diversas propriedades e métodos que auxiliam na manipulação de base de dados, como por exemplo, verificar se uma base de dados existe, criar e excluir uma base de dados, entre outros, mais adiante vamos utilizar o método CreateDatabase() para criar fisicamente a base de dados local no Windows Phone.

A próxima etapa é criar a string de conexão com a base de dados, utilizaremos a palavra chave “isostore” para informar que o arquivo ficará no Isolated Storage, após isso informaremos o nome da base de dados como Cliente.sdf. É na string de conexão que você pode inserir um senha de acesso a base de dados, informar uma cultura específica ou até mesmo criar uma base de dados somente leitura, para mais informações sobre string de conexões para o WP7 acesse http://msdn.microsoft.com/en-us/library/hh202861(v=vs.92).aspx

Por último vamos definir uma tabela Cliente de acesso público e única no DataContext através de public Table Cliente.

No App.xaml.cs da aplicação , localize o construtor da classe e no final adicione o código abaixo, neste momento vamos criar uma base de dados usando o DataContext criado anteriormente, o código verifica se existe uma base de dados e caso não exista ele já cria uma nova base de dados.

using (ClienteDataContext ctx = new ClienteDataContext(ClienteDataContext.DBConnectionString))

? ? ?  if (ctx.DatabaseExists() == false)
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ?  ctx.CreateDatabase();
? ? ? ? ? ? ?  
? 
}

Para finalizar o artigo vou criar uma tela simples em Silverlight, sem se preocupar com o layout, a tela tem um botão chamado “add” que vai adicionar um registro na base de dados e logo abaixo um ListBox chamado “lst”, que está ligado através de databinding a propriedade ItemSource com uma ObservableCollection chamada Items, na propriedade Text vamos mostrar o nome do cliente também ligando através de databinding.


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  ? Grid.Row="1" Margin="12,0,12,0">
? ? ? ? ? ? ? ? ? ? ?  ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? 
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? 

No constructor do MainPage vamos criar uma instância do DataContext chamado clienteDB :

clienteDB = new ClienteDataContext(ClienteDataContext.DBConnectionString);

No evento ? Loaded da MainPage, realizamos um consulta LINQ to SQL e já adicionamos o resultado em uma ObservableCollections chamada Items, que está ligado ao ItemSource da ListBox, veja como é prático ligar as informações na tela, neste exemplo como o foco é o conceito de local database, o projeto foi criado todo no code-behind da MainPage, mas você poderia criar usando o ViewModel e ligando o ObservableCollection com a View.

var result = from Cliente r in clienteDB.Cliente
select r;
Items = new ObservableCollection(result);

Para mais informações sobre LINQ:

http://msdn.microsoft.com/en-us/library/bb397897.aspx

http://msdn.microsoft.com/en-us/library/bb386976.aspx

http://msdn.microsoft.com/en-us/library/bb386913.aspx

Vamos agora para o código do botão “add” que vai adicionar os registros na base de dados, através do InsertOnSubmit() adicionamos o objeto ao DataContext e através do SubmitChanges(), o objeto é registrado na base de dados, por último, inserimos o objeto na coleção para que seja apresentado na tela.

Cliente c = new Cliente();
c.Nome = txtNome.Text;
clienteDB.Cliente.InsertOnSubmit(c);
clienteDB.SubmitChanges();
Items.Add(c);

?

Código completo da MainPage:

? ?  public partial class MainPage : PhoneApplicationPage, INotifyPropertyChanged
? ? ?  
? ? ? ? ? ? ? ?  ClienteDataContext clienteDB;
? ? ? ? ? ? ? ?  #region INotifyPropertyChanged Members
? ? ? ? ? ? ? ?  public event PropertyChangedEventHandler PropertyChanged;
? ? ? ? ? ? ? ?  private void NotifyPropertyChanged(string propertyName)
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  if (PropertyChanged != null)
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ?  }
? ? ? ? ? ? ? ?  #endregion
? ? ? 
? ? ? ? ? ? ?  private ObservableCollection _items;
? ? ? ? ? ? ?  public ObservableCollection Items
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  get
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  return _items;
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  set
? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  if (_items != value)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  _items = value;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  NotifyPropertyChanged("Items");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  }
? ? ? ? ? ? ?  }
? ? ? ? ? ? ? 
? ? ? ? ? ? ?  // Constructor
? ? ? ? ? ? ?  public MainPage()
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  InitializeComponent();
? ? ? ? ? ? ? ? ? ? ?  clienteDB = new ClienteDataContext(ClienteDataContext.DBConnectionString);
? ? ? ? ? ? ? ? ? ? ?  this.DataContext = this;
? ? ? ? ? ? ? ? ? ? ?  Loaded += new RoutedEventHandler(MainPage_Loaded);
? ? ? ? ? ? ?  
? ? ? ? ? ? ?  void MainPage_Loaded(object sender, RoutedEventArgs e)
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  var result = from Cliente r in clienteDB.Cliente
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  select r;
? ? ? ? ? ? ? ? ? ? ?  Items = new ObservableCollection(result);
? ? ? ? ? ? ?  
? ? ? ? ? ? ?  private void add_Click(object sender, RoutedEventArgs e)
? ? ? ? ? ? ?  
? ? ? ? ? ? ? ? ? ? ?  Cliente c = new Cliente();
? ? ? ? ? ? ? ? ? ? ?  c.Nome = txtNome.Text;
? ? ? ? ? ? ? ? ? ? ?  clienteDB.Cliente.InsertOnSubmit(c);
? ? ? ? ? ? ? ? ? ? ?  clienteDB.SubmitChanges();
? ? ? ? ? ? ? ? ? ? ?  Items.Add(c);
? ? ? ? ? ? ?  
? ? ?  }

Links:

Boas Práticas:

http://msdn.microsoft.com/en-us/library/hh286406(v=vs.92).aspx

Mais informações sobre local database no Windows Phone :

http://msdn.microsoft.com/en-us/library/hh202860(v=vs.92).aspx

http://msdn.microsoft.com/en-us/library/hh202876(v=VS.92).aspx

Alterações do esquema da base de dados:

http://msdn.microsoft.com/en-us/library/hh394018(v=VS.92).aspx

Out 8

Adobe Camp Brasil 2012

Escrito por Stefan Horochovec em .NET, 1, 2.0, 4, 6, action, Adobe, api, AR, blog, C#, camp, class, Curso, demo, empresas, err, event, Evento, Eventos, Excel, exemplo, facebook, flash, for, IE, if, image, imagens, int, internet, Mac, mg, MSN, O, on, Palestra, Palestras, Pessoal, produto, RIA, Ria’s Geral, runtime, S+S, site, super(), Tecnologia, Twitter, UI, Vídeo, Vídeos, Workshop @ 10 8th, 2011 | via http://www.horochovec.com.br/blog | Sem comentários
Stefan Horochovec
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Olá pessoal,

Esse ano eu tive a oportunidade de ir ao Flash Camp Brasil, em Maceió – AL, em Abril. Foi um evento bastante interessante, tivemos grandes palestras, foi muito legal conhecer pessoalmente muita gente que conversamos a anos via GTalk, Skype ou MSN e participei de um Workshop oferecido pela Blackberry para que tivessemos a chance de conhecer o poderoso Playbook.

Durante o evento em algumas apresentações foram mostradas algumas imagens do ano anterior, em 2010, e era visível a quantia que o evento tinha aumentado, não apenas em número de pessoas, mas em organização também e para nossa surpresa, no próximo ano teremos o Adobe Camp Brasil. Essa mudança de nome não mostra apenas que o número de pessoas aumentou no evento, mas mostra também que o Brasil entra definitivamente no cenário mundial de grandes eventos dos produtos Adobe.

Vale muito a pena conferir o evento, excelentes palestras para todos os gostos, algumas mais técnicas com um nível de aprofundamento maior, outras mais para iniciantes, palestras sobre depoimentos de empresários sobre o momento que suas grandes empresas vivem, etc. Esse ano tivemos a oportunidade de ouvir Arno Gourdol – Diretor de Engenharia do Adobe Flash Runtime, por exemplo, pessoas que encabeçam as tecnologias que utilizamos em nosso dia a dia vieram até o Brasil contar sobre o que estão e como estão criando os novos produtos, etc.

Todos sabem que a informática evolui muito e podemos acompanhar via internet, ou assistir gravações mais tarde, mas é uma oportunidade única você poder ouvir a palestra ao-vivo, fazer perguntas, e no corredor do evento se encontrar com o palestrante e conversar sobre algum detalhe da sua palestra, etc.

Esse ano com certeza teremos um evento ainda maior, eu vou estar lá e faço o convite para que você também vá, não perca essa grande oportunidade de ouvir muita coisa boa, fazer algum mini-curso e aumentar sua rede de relacionamentos real, e não a do facebook ou twitter ;)

As inscrições serão abertas no próximo mês, então não fique de fora, não perca essa oportunidade de participar de um super evento. Por favor, não façam comentários do tipo: “Eu não vou para Maceió”, “É muito caro viajar para o Nordeste”, essas coisas. São apenas 2 dias, a cidade é linda, as diárias de hotel são compatíveis com a de qualquer capital brasileira, e quem sabe você não vai no #soudevbuteco que aconteceu o ano passado com figuras como: @mariojunior, @jandesonfc, @igorcosta, @thalissonol e @jotaefe. Você vai dar muita risada até a madrugada :)

Aqui vão dois vídeos sobre o evento.

Primeiro dia:

Flash Camp Brasil 2011 #Day 1 from Action Creations on Vimeo.

Segundo dia:

Flash Camp Brasil 2011 #Day 2 from Action Creations on Vimeo.

Fotos: clique aqui.

Inscrições em breve, fique ligado no site: http://www.adobecampbrasil.com.br/

Set 26

Gestão 3.0 – Para Líderes Ágeis – Parte 2

Escrito por Edgard Davidson em 1, 2.0, 4, 6, Agile, AR, arte, auto, back, blog, C#, camp, class, dados, Desenvolvimento, Desenvolvimento de Software, developer, dynamic, e-learning, event, Evento, Eventos, for, game, gestão, ide, IE, if, image, int, jogo, Jogos, lite, Livro, Mate, Mestrado, mg, O, on, Outros, Pessoal, processo, Projetos, pt, RIA, Ria’s Geral, S+S, social, Software, Sun, TAT, Tema, UI, UX, XP, zend @ 09 26th, 2011 | via http://edgarddavidson.com | Sem comentários
Edgard Davidson
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Ol? Pessoal.

Este ? o segundo post de uma s?rie de post's que estou fazendo, em formato de resenha. Como partida, estou lendo o livro Management 3.0 Leading Agile Developers, Developing Agile Leaders e sintetizando ele aqui. Confira aqui a parte 1.

Teoria dos sistemas complexos


A teoria dos sistemas complexos ? uma teoria advinda da matem?tica que se concentra em entender porque alguns tipos de sistemas s?o est?veis e porque alguns outros tipos n?o s?o. Levando para o campo de desenvolvimento de software a referida teoria nos ajuda a explicar porque alguns projetos s?o est?veis e porque outros n?o s?o.

Desenvolvimento de software pode ser visto como um sistema complexo adaptativo, onde as intensas intera??es e feedbacks fornecem oportunidade de melhoria aprendizado e conhecimento.

MULTIDISCIPLINARIDADE

A ideia de segregar pessoas que fazem trabalhos diferente oferece um impacto negativo ? performance da organiza??o. Esse tipo de segrega??o promove silos/feudos funcionais que dificultam a comunica??o e a amplifica??o do aprendizado e conhecimento na dimens?o ontol?gica da organiza??o (veja a teoria da cria??o do conhecimento). Corroborando com os princ?pios do manifesto ?gil, a teoria da complexidade tamb?m ? a favor da forma??o de equipes multidisciplinares.

O CORPO DE CONHECIMENTO DE SISTEMAS

N?o h? uma ?nica defini??o gen?rica para explicar a complexidade, cada sistema ? diferente, peculiar e por vezes suas defini??es s?o complementares, as vezes sobrepostas e as vezes contradit?rias. No entanto, existem v?rios estudos que se concentram em diferentes ?reas e que trouxeram uma contribui??o significativa para o campo dos sistemas complexos: Entre esses estudos est?o: a teoria evolucion?ria (evolutionary theory), a teoria dos jogos (game theory) a teoria do caos (chaos theory), a teoria dos sistemas din?micos (dynamical systens theory), entre outras. A figura abaixo apresenta o corpo de conhecimento de sistemas.

SIMPLICIDADE: UM NOVO MODELO

“Simplicidade normalmente est? relacionada com peso (o qu?o dif?cil ?) para algu?m tentar explicar ou entender algo. Qualquer coisa que ? f?cil de entender ou explicar ? simples, em contraste com algo complicado.”

Antes de discutir simplicidade, faz-se necess?rio entender cada terminologia abaixo:

  • Simples: f?cil de entender
  • Complicado: muito dif?cil de entender
  • Ordenado: totalmente previs?vel
  • Complexo: um pouco previs?vel (mas com muitas surpresas)
  • Ca?tico: completamente imprevis?vel

Na literatura, alguns modelos diferenciam a referida terminologia, como os modelos de David Snowden, que descreve um modelo contendo quatro dom?nios(simples, complicado, complexo e ca?tico) e modelo de Ralph Stacey que cria algo similar. Ele mostra o simples, complicado, complexo, e ca?tico, como quatro ?reas com base em duas dimens?es: o grau de concord?ncia e o grau de incerteza.

A NOVA ERA: PENSAMENTO COMPLEXO (COMPLEXITY THINKING)

Quando voc? aplica a teoria de sistemas complexos (complex systems theory) em desenvolvimento e gerenciamento de software, voc? est? tratando sua organiza??o como um sistema.

A din?mica do sistemas(System dynamics) – n?o confunda com a teoria dos sistemas din?micos(dynamical systems theory), foi uma das primeiras t?cnicas criadas para mostrar como eventos aparentemente simples podem causar comportamentos inesperadas na organiza??o.

A System dynamics percebe a organiza??o como uma estrutura interligada e mutuamente dependente das partes. A System dynamics tem ajudados os gestores ? melhorar sua compreens?o dos processo de neg?cio.

Uma outra t?cnica similar ? chamada de pensamento sist?mico (systems thinking), popularizada no livro The Fifth Discipline (que tamb?m pretendo fazer resenhas dele aqui no blog :) ). Essa t?cnica aborda o entendimento de como o pensamento influencia o outras partes como um todo e defende que o primeiro passo para se tornar uma organiza??o de aprendizagem ? ela compreender, como um sistema hol?stico, o que ela faz e como realmente faz.

O estudo da complexidade em sistemas sociais ? chamado de complexidade social (social complexity). A complexidade social ? o estudo de grupos sociais em sistemas adaptativos complexos.

System dynamics e systems thinking percebem a n?o linearidade, mas eles ainda partem da ideia que, de alguma forma, a alta ger?ncia constr?i o “tipo certo” de organiza??o que produz o “tipo certo” de resultado. Entretanto, atualmente os gestores percebem que para gerenciar a complexidade social, eles precisam entender como as coisas “emergem” e n?o como elas s?o “constru?das”. O modelo de gest?o 3.0 aplica o pensamento complexo (complexity thinking) e assume que os gestores n?o podem construir nem dirigir uma equipe auto-organizada. Em vez disso, a equipe deve emergir naturalmente. O modelo reconhece que organiza??es produtivas n?o s?o gerenciadas dirigidas por modelos e planos. Em vez disso, deve emergir atrav?s do poder da evolu??o da auto-organiza??o.

Obs: Para mim esses assuntos s?o complicados. Portanto, sinta-se a vontade para criticar, corrigir ou acrescentar valor nos coment?rios.

« Entradas anteriores |

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2795 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com