Você está na página 1de 40

Sumrio

04 :. Acessando o MySql com Asp.net


Edio 09 Nmero 09 Ano 03 2009 EDITORES Alexandre Tarifa Diego Nogare Emerson Facunte Sergio Gonalves REVISO Fernanda Sallai Giaccomo Sabino MONTAGEM / FORMATAO Milton Carvalhaes EDITORAO E DIAGRAMAO Adriano Almeida COLABORADORES Anderson Bermar Demetrio Silva Edson Aparecido do Nascimento Fbio Cmara Ivan Sampaio Juliana Prado Juliano Schimiguel Roni A. Marcello
Veja neste artigo como acessar com ASP.NET um banco MySql atravs da Data Access Layer.
Por: Anderson Bermar / Juliano Schimiguel

08 :. Tutorial XNA - Hello Word


Demonstrao de como se faz para se animar uma sprite no XNA.
Por: Edson Aparecido do Nascimento

13 :. Uma Metodologia gil Scrum


Conceituao SCRUM. sobre metodologias geis e

Por: Fbio Cmara

18 :. SQL Server Audit


Neste artigo, abordaremos o SQL Server Audit, que mais uma feature disponvel no SQL Server 2008 para a realizao de auditoria.
Por: Demetrio Silva

Fale com Editor


muito importante para a equipe saber a sua opinio sobre a revista, caso tenha alguma critica, sugesto, ou elogio entre em contato. Caso tenha interesse em publicar um artigo na revista envie o ttulo e um resumo do tema em formato Word.
site@codificandomagazine.net

22 :. Utilizao de Mashups com Silverlight


O Objetivo deste artigo demonstrar a utilizao de mashups dentro do contexto e advento da Web 2.0 .
Por: Roni A. Marcello / Juliano Schimiguel

29:. Evoluo da Metodologia do Desenvolvimento de Sistemas


Metodologias no desenvolvimento de software e o modo como elas evoluram no decorrer dos anos.
Por: Juliana Prado

Produzido por:

33:. Criando um Cubo Olap


www.codificando.net Carga de um cubo OLAP utilizando o Microsoft SQL Server 2005 Analysis Services.
Por: Ivan Sampaio / Juliano Schimiguel

03:. Editorial

40:. .Close( )

Edio 09 Nmero 09 Ano 03 2009

Editorial
Depois de mais de um ano fazendo a revista da forma que conseguamos, finalmente montamos uma equipe profissional para a editorao! Atravs do Portal Codificando .Net ns convidamos todos os membros da comunidade para participar, e aps os candidatos mostrarem interesse, ns selecionamos alguns para fazer o trabalho. A nova equipe de editorao da nova revista Codificando .Net e-Magazine composta por dois revisores tcnicos (Fernanda Sallai e Giaccomo Sabino), por um revisor geral (Milton Filho) e por um editor de diagramao e formatao (Adriano Almeida). Esta nova equipe mostrou uma maturidade e desempenho muito acima do que espervamos, tenho certeza que a nova revista ter uma aceitao e credibilidade muito mais forte do que tnhamos antes. Muito obrigado por participarem e acreditarem nesta famlia. Grande abrao, Diego Nogare site@codificandomagazine.net

e-magazine

Acessando o MySql com ASP .NET


Veja neste artigo como acessar com ASP.NET um banco MySql atravs da Data Access Layer.
Por: Anderson Bermar / Juliano Schimiguel

Neste artigo iremos apresentar como acessar com ASP.NET um banco MySql atravs da Data Access Layer, vamos utilizar tambm o componente chamado ObjectDataSource que ser responsvel em fazer a comunicao entre a Interface e a Data Access Layer, o artigo no ir abordar a instalao do MySql, mas ir mostrar como criar o banco, tabela, stored procedure e criar a camada de acesso a dados ou Data Access Layer para acessarmos com .net, tudo de forma rpida e de fcil acesso. Ferramentas Para esse artigo foi usado o Visual Studio 2005, MySql 5.1 e o connector para .net, uso tambm uma ferramenta free chamada HeidiSQL para criao do banco, tabela e stored procedure. Um pouco mais sobre Data Access Layer DAL A Data Access Layer ou camada de acesso a dados, uma camada que tem por finalidade acessar o banco de dados, deixando as consultas SQL diretamente no banco, e fazendo o acesso atravs de stored procedure, ela se comunica com a camada lgica ou Business Logic Layer(BLL), deixando o sistema mais especfico e com uma maior facilidade em manuteno e atualizao do sistema, pois uma camada no interfere diretamente na outra, ou seja, em alguns casos, podemos atualizar uma regra de negcio sem ter que atualizar a camada de acesso a dados e vice-

versa, e podemos reaproveitar as camadas para qualquer tipo de aplicao seja ela para desktop, web ou mobile. Vamos a Prtica Criando o banco de dados O script abaixo a criao do banco de dados, tabela, incluso de registros e as stored procedures. O script tambm apresenta alguns comandos SQL para insero na tabela PRODUTO, voc pode usar qualquer ferramenta que faz a criao do banco, tabela e stored procedure no MySql.
CREATE DATABASE LOJA

e-magazine Codificando.net

USE LOJA; CREATE TABLE IF NOT EXISTS PRODUTO ( ID INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, DESCRICAO VARCHAR(30) NOT NULL, PRECO DOUBLE(6,2) ); INSERT PRECO) INSERT PRECO) INSERT PRECO) INSERT PRECO) INTO PRODUTO (DESCRICAO, VALUES('TV PLASMA',1200.00); INTO PRODUTO (DESCRICAO, VALUES('GELADEIRA',950.00); INTO PRODUTO (DESCRICAO, VALUES('MICROONDAS',370.00); INTO PRODUTO (DESCRICAO, VALUES('FERRO',150.00);

CREATE PROCEDURE SELECTPRODUTO() SELECT * FROM PRODUTO;

www.codificando.net

Abril / Maio 2009

Acessando o MySql com ASP .NET.

e-magazine

CREATE PROCEDURE INSEREPRODUTO ( IN D VARCHAR(30), IN P DOUBLE(6,2) )

INSERT INTO PRODUTO (DESCRICAO, PRECO) VALUES(D,P);

Na figura 1 mostra como ficou a criao do banco.


Figura: 03

Figura: 01

Criando a DAL Agora abra o Visual Studio 2005, e crie um projeto do tipo Class Library conforme a figura 2, na linguagem C#, salve o projeto onde desejar. Renomeie a classe Class1 para Produtos, e clique com o boto direito na pasta References e escolha a opo Add Reference figura 3. Abrir uma caixa de dialogo, e na aba .net, localize a opo MySql.Data figura 4, selecione e clique em ok, a Solucion ficar conforme a figura 5. O script 2 apresenta o cdigo da classe Produtos.
Figura: 04

using System; using System.Collections.Generic; using System.Text; using System.Data; //manespace para conexo com MySql using MySql.Data.MySqlClient;

e-magazine Codificando.net

namespace DAL { public class Produtos { //string de conexo para o banco MySql public string str = "database=loja; data source=localhost; user id=root; password=mysql"; //Mtodo para selecionar os dados, atravs da procedure SELECTPRODUTO retorna um DataSet public DataSet Select() { MySqlConnection conn = new MySqlConnection(str); MySqlCommand cmd = new MySqlCommand("SELECTPRODUTO", conn);

Figura: 02

www.codificando.net

Abril / Maio 2009

Acessando o MySql com ASP .NET.


cmd.CommandType = CommandType.StoredProcedure; MySqlDataAdapter dtAdapter = new MySqlDataAdapter (cmd); DataSet ds = new DataSet(); dtAdapter.Fill(ds); return ds; } //Mtodo para inserir na tabela PRODUTOS, atravs da procedure INSEREPRODUTO public void Insert(string desc, double preco) { MySqlConnection conn = new MySqlConnection(str); MySqlCommand cmd = new MySqlCommand("INSEREPRODUTO", conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("D", desc); cmd.Parameters.AddWithValue("P", preco); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); } } }

e-magazine

Na caixa de dialogo que abrir, escolha ASP.NET Web Site, linguagem C#, File System, e escolha a mesma pasta do projeto que foi salvo a DAL. A figura 6 apresenta a pgina Default.aspx, que a pgina onde vamos trabalhar, crie uma semelhante .

Figura: 06 Componente TextBox TextBox Button GridView ObjectDataSource ID txtDescricao txtPreco btnEnviar GridProdutos ObjectDataSource Enviar Text

e-magazine Codificando.net

Aps criar a pgina, temos que referenciar a DAL no projeto web, na aba Solution Explorer, clique com o boto direito em cima do projeto do web site e escolha a opo Add Reference. Na janela Add Reference, na aba Projects escolha DAL conforme figura 7.
Figura: 05

Compile a aplicao em Build>Build Solution ou Ctrl + Schift + B. Criando o WebSite Depois de compilado o projeto DAL, no Visual Studio clique em File>Add>New Web Site. www.codificando.net

Figura: 07

Abril / Maio 2009

Acessando o MySql com ASP .NET.


Volte na pgina Default.aspx, no componente ObjectDataSource clique na Smart tag (seta que fica em cima do componente), e escolha a opo Configure Data Source. Ir aparecer um wizard, e na primeira tela em Choose your business object selecione o Class Library DAL, a Class Library DAL j traz a classe Produtos automaticamente. Clique em Next, na prxima tela na aba Select defina o mtodo que criamos na classe Produtos, clique em finish. Clique na Smart tag do GridView e em Choose Data Source escolha o Object Data Source. Pronto j fizemos a conexo com o banco de dados.
Figura: 09

e-magazine

Concluso Este artigo teve por finalidade mostrar como podemos acessar com .net o MySql. Criamos as stored procedures para separar as consultas SQL da camada DAL, camada que faz a conexo com o banco, e acessamos o banco de dados de duas formas, uma foi criando um objeto da classe Produtos e chamando o mtodo Insert, passando os argumentos descrio e preo, e a outra maneira foi com o componente ObjectDataSource que fez a comunicao entre a interface e a camada de acesso a dados, um componente muito poderoso da verso 2.0 que faz a comunicao com o GridView e a classe produtos.

Figura: 08

D um duplo clique no boto enviar e digite o cdigo do script abaixo.


protected void btnEnviar_Click (object sender, EventArgs e) { //Criao do objeto da classe DAL DAL.Produtos produto = new DAL.Produtos(); //Mtodo da stored procedure produto.Insert (txtDescricao.Text.Trim(), double.Parse(txtPreco.Text.Trim ())); }

e-magazine Codificando.net

Compile o web site, e na aba solution Explorer, clique com o boto direito em cima do projeto web e selecione a opo Set as StartUp Project , execute e teste a sua aplicao.

www.codificando.net

Abril / Maio 2009

e-magazine

Tutorial XNA - Hello Word


Demonstrao de como se faz para se animar uma sprite no XNA.
Por: Edson Aparecido do Nascimento

Estou aqui para demonstrar como se faz para se animar uma sprite no XNA. Primeiro vamos definir o que uma sprite. Segundo a wikipdia (onde achei a melhor definio), uma sprite (do latim spiritus, significando "duende", "fada") um objeto grfico bi ou tridimensional que se move numa tela sem deixar traos de sua passagem (como se fosse um "esprito"). Os sprites foram inventados originalmente como um mtodo rpido de animao de vrias imagens agrupadas numa tela, em jogos de computador bidimensionais, usando hardware especial. A medida que a performance dos computadores melhorou, esta otimizao tornou-se desnecessria e o termo evoluiu para referir-se especificamente s imagens bidimensionais que eram integradas numa determinada cena, isto , figuras geradas por hardware ou software eram todas referenciadas como sprites. A medida que grficos tridimensionais tornaram-se mais comuns, o termo passou a descrever uma tcnica elementar de simulao de imagens em 2.5D ou 3D que prescinde do uso de renderizaes complexas. Bom, vamos animao, primeiramente vamos abrir um novo projeto no XNA e dar a ele o nome de Hello World. Na janela Solution Explorer veremos que dentre os objetos criados existem dois arquivos de classe, um o Program.cs no qual no iremos mexer, o outro o Game1.cs no qual faremos o nosso cdigo. Assim que abrirmos o Game1.cs veremos que parte do cdigo j vem escrita para facilitar nosso entendimento.

Na primeira parte do cdigo veremos as bibliotecas que o XNA estar usando. Para quem est acostumado com a linguagem C, o termo using do XNA o mesmo que o #include. Logo abaixo temos a nomenclatura do projeto definida pelo termo namespace. Depois temos a definio de uma classe do tipo public public class Game1 : Microsoft.Xna.Framework.Game (esses dois pontos colocados aps o nome da classe tem a mesma funo que o termo extends usado em Java, ou seja, ele estende os termos dessa classe biblioteca de frameworks do XNA). Seguindo nosso projeto temos:
GraphicsDeviceManager graphics; SpriteBatch spritebatch;

A primeira linha se refere criao de uma varivel graphics do tipo GraphicsDeviceManager, na qual iremos declarar as propriedades grficas da tela. Na segunda linha declaramos uma varivel spritebatch do tipo spritebatch. Aqui faremos a primeira alterao, para facilitar o nosso entendimento alteramos o nome dessa varivel para sb, deixando a linha assim:
SpriteBatch sb;

e-magazine Codificando.net

Agora vamos declarar as outras variveis a serem utilizadas, e isso que vamos fazer na linha abaixo da declarao de SpriteBatch. Digitaremos as seguintes variveis:
Texture2D globo; int linha = 0; int coluna = 0; int largura, altura;

www.codificando.net

Abril / Maio 2009

Tutorial XNA - Hello Word

e-magazine

Double tempo; GameTime tempojogo;

Seguindo no nosso projeto vemos que logo abaixo existe a declarao de public game j estruturada, e abaixo temos a Initialize() onde iremos comear a carregar nosso jogo. J temos declarado a linha base.Initialize() e em seguida vamos declarar o ttulo da janela, sua altura e sua largura. Ficar assim:
base.Initialize(); Window.Title = "Hello World"; \\ aqui definimos o nome da janela graphics.PreferredBackBufferHeight = 512; \\ definio da altura em 512 pixels graphics.PreferredBackBufferWidth = 512; \\ definio da largura em 512 pixels graphics.ApplyChanges(); \\ aplicamos as mudanas

Assim nossa imagem ser anexada no projeto. Nela tambm devemos clicar com o boto direito e depois em properties, na janela properties deveremos verificar a propriedade Asset Name, essa propriedade se refere que nome iremos instanciar a imagem para podermos cham-la no projeto. Deixe como animatedsprite mesmo. Agora sim podemos voltar ao cdigo. Antes de sb = new SpriteBatch(GraphicsDevice) colocaremos o cdigo:
globo = Content.Load<Texture2D> (@"Imagens\animatedsprite"); largura = (globo.Width / 4); altura = (globo.Height / 4);

Nesse cdigo, em sua primeira linha, estamos carregando a imagem, na segunda linha definimos que existe dentro da sprite 4 imagens de largura e 4 de altura.

Na sequncia temos o mdulo LoadContent onde carregaremos a imagem, l j existe linha:


spritebatch = new SpriteBatch (GraphicsDevice);

A qual devemos lembrar de alterar o nome da varivel, pois o altermos no incio do programa, ento a linha fica assim:
sb = new SpriteBatch (GraphicsDevice);

e-magazine Codificando.net

Mas, antes dessa linha devemos chamar nossa figura. Primeiramente vamos na Solution Explorer e clicar com o boto direito em cima de content, no menu que se abre clique em add e depois em new folder. Nomearemos essa pasta criada com o nome de Imagens. Depois clicamos com o boto direito em cima da pasta Imagens e no menu clicamos em add e existing item, uma caixa de busca ser aberta e selecionaremos a imagem AnimetedSprite. Igual a figua 01.

Figura: 01

Em seguida vemos o mtodo UnloadContent() no qual no faremos nenhuma alterao, pois ele no ser utilizado nesse projeto. Aps ele temos o mtodo Update(GameTime gameTime) no qual j existe uma expresso do tipo if, essa expresso no ter utilidade nese projeto, ento podemos apag-la. No lugar delas vamos escrever o seguinte:

www.codificando.net

Abril / Maio 2009

Tutorial XNA - Hello Word

e-magazine

tempoJogo = gameTime; if (tempoJogo.TotalGameTime.TotalMilli seconds - tempo > 150) { coluna++; if (coluna > 3) { coluna = 0; linha++; } if (linha > 3) linha = 0; tempo = gameTime.TotalGameTime.TotalMillise conds; }

qualquer cor que lhe interesse, para isso basta apagar o nome de CornflowerBlue e digitar outra cor no lugar, no nosso caso utilizaremos o preto (Black). Assim nossa linha de cdigo dever ficar assim:
graphics.GraphicsDevice.Clear (Color.Black);

Agora vamos dar sequencia ao cdigo para inicializar o programa, ento digitaremos:
sb.Begin(); int x = largura * coluna; int y = altura * linha; Rectangle retImagem = new Rectangle (x, y, largura, altura); sb.Draw(globo, Vector2.Zero, retImagem, Color.White); sb.End();

Nessas linhas declaramos que a varivel gameTime do mtodo update vai se tornar a varivel tempojogo que criamos no incio. Definimos dentro do mtodo if o tempo de 150 milissegundos para a mudana de quadro da imagem. Lendo o que est escrito seria algo assim:
se o tempo for maior que 150 milissegundos ento muda-se a coluna (coluna++) se a coluna for maior que 3 ento voltamos coluna 0 (coluna = 0) (lembre-se que em programao o primeiro item o 0) e mudamos de linha (linha++) e se a linha for maior que 3 voltamos linha 0.

No fim temos a linha: base.Draw (gameTime); a qual j existe no projeto. Agora s apertar F5 ou ir ao menu Debug > Start Debugging e ver nosso projeto sendo executado. Dever aparecer uma pequena tela com fundo preto e um globo com os dizeres Hello World girando. Para melhor entendimento abaixo deixo o cdigo completo:
using System; using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Net; using Microsoft.Xna.Framework.Storage; namespace GameHelloWorld { public class Game1 : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; SpriteBatch sb; Texture2D globo; int linha = 0;

e-magazine Codificando.net

Logo abaixo desse cdigo temos:


base.update(gameTime);

O qual j est escrito no nosso projeto. Por ltimo temos o mtodo Draw() que responsvel por fazer o nosso projeto aparecer na tela. Na primeira linha deles temos:
graphics.GraphicsDevice.Clear (Color.CornflowerBlue);

Essa linha serve para definir a cor de fundo da tela, onde est CornflowerBlue pode-se colocar www.codificando.net

Abril / Maio 2009

10

Tutorial XNA - Hello Word

e-magazine
base.Update(gameTime);

int coluna = 0; int largura, altura; Double tempo; GameTime tempoJogo; public Game1() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; } protected override void Initialize() { base.Initialize(); Window.Title = "Hello World"; graphics.PreferredBackBufferHeight = 512; } graphics.PreferredBackBufferWidth = 512; graphics.ApplyChanges(); } protected override void LoadContent() { globo = Content.Load<Texture2D> (@"Imagens\animatedsprite"); largura = (globo.Width / 4); altura = (globo.Height / 4); sb = new SpriteBatch (GraphicsDevice); } protected override void UnloadContent() { } protected override void Update (GameTime gameTime) { tempoJogo = gameTime; if (tempoJogo.TotalGameTime.TotalMilliseco nds - tempo > 150) { coluna++; if (coluna > 3) { coluna = 0; linha++; } if (linha > 3) linha = 0; tempo = gameTime.TotalGameTime.TotalMillisecond s; } }

} protected override void Draw (GameTime gameTime) { graphics.GraphicsDevice.Clear (Color.Black); sb.Begin(); int x = largura * coluna; int y = altura * linha; Rectangle retImagem = new Rectangle(x, y, largura, altura); sb.Draw(globo, Vector2.Zero, retImagem, Color.White); sb.End(); base.Draw(gameTime); }

Abaixo segue a tela do programa, onde se intercalam as imagens mostrando o globo girando e a palavra Hello World girando tambm:

e-magazine Codificando.net

Figura: 02

www.codificando.net

Abril / Maio 2009

11

e-magazine

Uma Metodologia gil Scrum


Conceituao sobre metodologias geis e SCRUM.
Por: Fbio Cmara

Introduo Das muitas definies sobre agilidade que podemos encontrar em livros, revistas e na internet, uma das que mais gosto : _ Agilidade a habilidade de criar e responder a mudanas com respeito ao resultado financeiro do projeto em um turbulento ambiente de negcios. Agilidade a habilidade de balancear flexibilidade com estabilidade. (Highsmith, Jim. Agile Project Management, 2002) Agilidade uma proposta de desenvolver projetos com uma estrutura e organizao suficientes. Muita estrutura e organizao reduz a criatividade e a flexibilidade de suportar mudanas, pouca estrutura e organizao permeia a ineficincia e resulta em esforos maiores que os necessrios. A diferena entre caos e agilidade pode ser verificada nos produtos resultantes. Considerando o mesmo cenrio turbulento de negcios, nas equipes que convivem com o caos verificamos atrasos constantes, baixissma qualidade dos sistemas, problemas com estimativas e estouro de oramento. Nas equipes que utilizam-se de mtodos geis percebemos entregas parciais constantes, interao com clientes para reviso de estimativas e oramento conjuntamente com antecedncia salutar ao projeto e principalmente dois pontos fundamentais: compromisso com a satisfao do cliente e responsabilidade com o resultado financeiro do projeto.

Empresas procuram mtodos geis As metodologias geis esto disponveis desde a dcada passada, porm foi no ano de 2001 que houve a formalizao com a assinatura do manifesto gil (Manifesto for Agile Software Development-http:// agilemanifesto.org/). Inicialmente houve uma desconfiana geral por parte da indstria de software, certamente impulsionada pelas diferenas aos mtodos tradicionais e as questes das dificuldades de quebra de paradigmas por parte das pessoas. Nesta poca tornou-se bastante famosa a metodologia XP (eXtreme Programming), pois propunha sem hipocrisia uma srie de mtodos polmicos, muitos deles questionveis at hoje como por exemplo a programao em pares e o cliente ao lado do desenvolvedor durante o projeto. Lentamente, a indstria de software impulsionada pela necessidade de obter resultados diferentes dos obtidos pelos mtodos tradicionais, verificou que pessoas vlidas estavam propondo mtodos srios e factveis. Desta forma, determinadas prticas geis comearam a ser utilizadas em projetos de software sem a agressividade pela adoo plena de uma

e-magazine Codificando.net

O autor entende como cenrio turbulento de negcios as demandas oriundas de empresas no qual a necessidade de prazos rpidos e a competitividade so predominantes como regra de sobrevivncia no seu prprio mercado de atuao. O autor define como agressividade neste contexto, a quantidade de procedimentos que deveriam ser mudados no caso da adoo plena da metodologia ao invs da adoo de apenas alguns dos mtodos propostos pela

metodologia.

www.codificando.net

Abril / Maio 2009

13

Uma Metodologia gil - Scrum

e-magazine

metodologia gil. Alguns destes mtodos, compreendidos de forma inadequada, causavam uma dificuldade de percepo dos resultados. Um timo exemplo disto a iterao. Iterao (iteration), que em traduo simples quer dizer repetio, confundido com interao ou compreendido como processos repetveis. Na verdadeira definio gil, iterao est mais para processos confiveis do que processos repetveis. Na lingua inglesa tambm verificamos este desentendimento quando estudamos em textos geis as palavras repeatable e reliable. A confuso entre confivel e repetvel acontece porque muitos gestores de empresas gostam de formalizar processos muito estruturados e precisos (repetveis) no lugar de formalizar processos suficientemente estruturados e flexveis (confiveis). Processos repetveis focam na entrada das atividades, processos confiveis focam no resultado das atividades. Outros mtodos, por oferecerem propostas mais simples de compreenso e apurao de resultado, comearam a chamar a ateno positivamente da indstria de software. Face a isso, iniciou-se um movimento liderado pelas universidades no Brasil (hoje sou consultor de metodologias geis da USP) que objetiva esclarecer os mtodos e gerar contedos prticos que facilitem a implantao de tais propostas metodolgicas. Certificadas de que estes mtodos funcionam, as empresas de software comearam a estudar uma proposta de metodologia classificada como gil, que prope novos mtodos em substituio aos mtodos praticados tradicionalmente. Este critrio de escolha, que em minha opinio est suficientemente maduro, buscou primeiramente resolver as questes acerca da organizao, distribuio e controle das atividades de um projeto de

software. Eis a explicao da escolha da metodologia SCRUM pelo mercado de empresas desenvolvedoras de software. SCRUM, muito simples de usar A metodologia SCRUM est entrando na moda aqui no Brasil, aps j haver conquistados inmeras empresas da indstria de software na Amrica do Norte. Particularmente, eu considero o SCRUM uma proposta extremamente prtica e honesta. Defino por prtica neste contexto a facilidade de compreenso e aplicao em nosso ambiente de desenvolvimento de software. Defino por honesta a fidelidade entre a proposta do mtodo e o resultado que podemos obter aps aplic-lo. SCRUM, nome utilizado inicialmente pelos japoneses Hirotaka Takeuchi e Ikujiro Nonaka, descrevia um tipo de processo de desenvolvimento de produto utilizado no Japo.Tambm o nome SCRUM foi escolhido pela similaridade entre o jogo de Rugby e o tipo de desenvolvimento de produto comentado. Ambos so adaptativos, rpidos e promovem a auto-organizao. Para explicar SCRUM, utilizarei uma estratgia que foi usada pelo Ken Schwaber em seu livro chamado Agile Project Development with SCRUM. Na minha leitura, este o melhor livro disponvel lanado at a presente data. Iniciando um projeto, h uma formalizao de todas as coisas que se pretende fazer ou que se precisar construir no projeto. Cada item desta lista representa um requisito funcional, ou requisito no funcional, ou questo de tecnologia / infra-estrutura. Esta lista denominada Product Backlog. Podemos traduzir Product Backlog como uma

e-magazine Codificando.net
|

Ken Schwaber junto com Jeff Sutherland foram os formalizadores das primeiras verses de SCRUM como metodologia para desenvolvimento de projetos de software. Ken est trabalhando neste projeto desde o incio dos anos 90.

www.codificando.net

Abril / Maio 2009

14

Uma Metodologia gil - Scrum

e-magazine

lista de todos os requisitos de um produto priorizados, ou, em outras palavras, qualquer coisa que represente um trabalho que precisa ser feito para o produto. Os itens com maior prioridade nesta lista so os requisitos mais desejados pelo produto. No projeto real, o Product Backlog nunca finalizado. Existe uma natural evoluo e maturidade dos requisitos nesta lista. Requisitos novos podem aparecer, requisitos existentes podem perder prioridade e podem at serem eliminados. Apesar de se permitir que reas usurias manifestem seus pedidos nesta lista, somente o Product Owner pode priorizar o Backlog. O Product Owner possui a responsabilidade de definir a ordem que os requisitos sero produzidos pela equipe de desenvolvimento. Esta equipe deve ser pequena, multidisciplinar e capaz de desenvolver todos os requisitos. Esta equipe recebe o nome de SCRUM Teams. A preparao dos trabalhos denominada SPRINT Planning. SPRINT Planning composta dos seguintes ingredientes: Product Backlog, a capacidade de desenvolvimento da equipe, as condies e exigncias do negcio, as caractersticas da tecnologia a ser usada e o comprometimento em entregar produtos executveis incrementais. A mistura so revises, administrao e organizao. Os resultados so SPRINT Goal e SPRINT.

O SCRUM Team deve desenvolver os itens separados pelo Product Owner em um determinado prazo previamente combinado. Este prazo definido como Time Box e o trabalho de desenvolver os itens separados neste time box denominado SPRINT. Estes itens separados do Product Backlog fazem parte de uma nova lista. Esta lista, chamada SPRINT Backlog, ser de total responsabilidade do SCRUM Team que dever mant-la e organiz-la de tal forma a atender os objetivos do especfico SPRINT. permitido ter mais de um SCRUM Team trabalhando no mesmo Product Backlog, por isso os requisitos so devidamente separados em SPRINT Backlog distintos por equipe. Uma idia deste ciclo verificada na figura 01. A liderana destas equipes exercida por um papel denominado SCRUM Master. O SCRUM Master um facilitador da gesto dos requisitos e direcionador da gesto das equipes. Este papel deve garantir a correta utilizao das prticas de SCRUM, deve ajudar a equipe a tomar decises e apoiar a equipe para adquirir os recursos necessrios para o desenvolvimento do produto. Este mtodo de liderana exercido atravs de 3 recorrentes tipos de reunio: SCRUM Daily Meeting, SPRINT Review e Retrospective. Comeando pelo SPRINT Review que a reunio tpica de final de SPRINT (alguns SCRUM Team tambm a fazem no meio do

e-magazine Codificando.net

Figura: 01

www.codificando.net

Abril / Maio 2009

15

Uma Metodologia gil - Scrum

e-magazine

artigo, temos observado que a utilizao de KANBAN (ver figura abaixo) ajuda a maximizar o comprometimento da equipe e a comunicao de todos os comprometidos e envolvidos com o projeto. Figura 2- Nossa implementao de KANBAN na empresa REPOM dirigida pelo SCRUM Master Marcelo Martins. As cores amarela e laranja representam diferentes complexidades das atividades. A cor pink representa atividades no planejadas no SPRINT que foram includas por motivo de fora maior. Por se tratar de um extenso assunto, abordaremos detalhes explicativos sobre o que KANBAN e como se utiliza em projetos de software no nosso prximo artigo tcnico. Consideraes Finais Ns, praticantes das metodologias geis, acreditamos que todos os projetos so diferentes. A tecnologia destes projetos so diferentes. As pessoas, os requisitos idem. Ns no queremos ser indivduos crticos do que existe h muito tempo na engenharia de software, ns queremos sugerir, proporcionar e fundamentar alternativas novas para resolver problemas antigos.

SPRINT) para validar o produto executvel que a equipe conseguiu incrementar. Explicando a Retrospective, uma reunio que tambm acontece ao final do SPRINT com o objetivo de fortalecer a unidade de ao da equipe. Trs perguntas devero ser respondidas com seriedade por todos os membros do SCRUM Team: 1. 2. 3. O que voc fez e gostou neste SPRINT? O que voc fez e no gostou neste SPRINT? O que voc vai fazer diferente no prximo SPRINT?

O desenvolvimento de projetos de software um desafio constante, uma atividade complexa. Todo processo complexo exige uma intensa comunicao entre todos os membros do projeto. SCRUM Daily Meeting a resposta para promover a comunicao da equipe. Todos os dias, obrigatoriamente, todo o SCRUM Team ir se reunir por 15 minutos aproximadamente para responder a 3 importantes perguntas. Sugerimos que est reunio seja de p, pois temos verificado bons resultados em nossas prticas. As perguntas so: 1. O que eu fiz desde a ltima SCRUM Daily Meeting at agora? 2. O que eu vou fazer hoje? 3. O que pode me impedir? Adicionalmente as tcnicas apresentadas neste

e-magazine Codificando.net

Na grande maioria das consultorias que ministro sob a titulao de coaching para fins de crescimento dos resultados qualitativos e produtivos de equipes de desenvolvimento de software, encontro pessoas que utilizandoPara saber mais recomendamos os livros: Agile Project Management by Jim Highsmith. Agile Software Development with SCRUM by Ken Schwaber e Mike Beedle. Agile Project Management with SCRUM by Ken Schwaber. Treinamento MSF Agile + SCRUM + Agile Methods em http://www.fcamara.com.br

www.codificando.net

Abril / Maio 2009

16

Uma Metodologia gil - Scrum

e-magazine

se de mtodos tradicionais ou simplesmente de improviso dirio (tambm denominado ausncia de mtodos) revelam-me uma estranha e frustrante sensao A Sndrome do Trabalho Vazio. A STV a sensao que ocorre depois de um intenso dia de trabalho repleto de aborrecimentos e de atividades urgentes, quando percebe-se que no final todas as atividades planejadas para aquele dia no puderam ser implementadas. uma constatao que se uma espcie de marionete do tempo, da empresa e dos clientes. A utilizao de mtodos geis, com a adequao mental conforme os princpios estabelecidos pelas metodologias geis,

mudaram minha vida profissional perante o cenrio anteriormente descrito. Eu consigo fazer atividades planejadas, consigo priorizar atividades importantes e tenho um pequeno ndice de atividades urgentes no meu dia-adia. Eu me sinto protagonista do meu dia. As metodologias geis so uma positiva proposta para as empresas desgastadas com os resultados proporcionados por waterfall approach to software development ou pela ausncia de mtodos. Para iniciantes em metodologias geis, eu recomendo o SCRUM. Para praticantes de mtodos geis que no conhecem o SCRUM, permitam-se mais uma evoluo. Sucesso em seus projetos.

e-magazine Codificando.net
|

www.codificando.net

Abril / Maio 2009

17

e-magazine

SQL Server Audit


Neste artigo, abordaremos o SQL Server Audit, que mais uma feature disponvel no SQL Server 2008 para a realizao de auditoria.
Por: Demetrio Silva

A verso do SQL Server 2008 trouxe diversas novas features que h muito tempo a comunidade aguardava. Neste artigo, abordaremos a SQL Server Audit, que mais uma feature disponvel no SQL Server 2008 para a realizao de auditoria. O que auditoria? uma forma de registrar dados das aes realizadas pelos usurios, como por exemplo:

select, insert, update e delete em determinadas tabelas ou esquemas; logins bem ou mal sucedidos; backup e restore; dentre outros.

Para uma lista detalhada sobre operaes que podem ser auditadas, a nvel de instncia, database e auditoria, consulte audit-level audit actions [SQL Server] no BOL. Como funciona?

Alteraes no esquema do banco de dados; Alteraes de logins; Consulta, alterao, excluso e incluso de dados.

O SQL Server Audit usa a infraestrutura do SQL Server Extended Events introduzida no SQL Server 2008. Os Extended Events registram todas as aes auditveis ocorridas no servidor. Para mais informaes consulte Extended Events no BOL. Os dados auditados podem ser gravados nos seguintes locais:
Nota: O processo de gravao dos dados da auditoria pode trabalhar de duas formas: 1. Sncrona: Os dados auditados so gravados antes de terminar uma transao ou ao; 2. Assncrona: Os dados auditados so gravados aps o trmino de uma transao ou ao. O parmetro QUEUE_DELAY, que ser demonstrado adiante, define a forma de gravao dos dados da auditoria. Caso o valor do parmetro seja zero a auditoria ser sncrona, do contrrio, ser assncrona.

Auditoria muito importante para sistemas que trabalham com dados confidenciais ou crticos, visto que ela visa controlar data, hora, usurio e demais informaes das aes realizadas. Por lei, sistemas da rea financeira e de sade, precisam realizar auditoria das aes realizadas. Enfim, uma auditoria pode nos ajudar a rastrear uma gama enorme de informaes sobre as aes realizadas em um sistema como um todo. O que o SQL Server Audit? Um mecanismo que permite a realizao de auditoria de diversas aes a nvel instncia e de database, aes essas como:

e-magazine Codificando.net
|

www.codificando.net

Abril / Maio 2009

18

SQL Server Audit

e-magazine
Disabling a C2 audit.

Application Event Log; File System; Security Event Log.

As aes auditadas, como citado anteriormente, podem ser a nvel de instncia ou de database. Neste artigo, iremos mostrar como auditar aes nos dois nveis e tambm como recuperar os dados auditados. Antes de iniciarmos a parte prtica, iremos falar sobre alguns objetos que fazem parte do SQL Server Audit. So eles: 1 - Server Audit um Container para os audit specifications. Ele est associado instncia, visto que, SQL Server Audit no trabalha com mltiplas instncias. no Server Audit que ficam guardadas informaes sobre onde sero gravados os arquivos de auditoria, o tamanho mximo de cada arquivo, se o modo de auditoria ser Sncrono ou Assncrono, dentre outros. 2 - Audit Specifications Determinam quais aes sero auditadas. Esto divididos em dois tipos: 2.1 Server Audit Specifications: determina as aes a serem auditadas para uma instncia, portanto, existe somente no banco master. Ele usa grupos de aes para determinar quais aes devero ser auditadas. Aplica-se quando necessitamos realizar auditoria de aes a nvel de servidor, como por exemplo, um login bem sucedido. Exemplo: TRACE_CHANGE_GROUP um grupo de aes que audita as seguintes aes:

2.2 Database Audit Specifications: em alguns cenrios possumos instncias com diversos databases funcionando, no entanto, necessitamos auditar apenas um ou alguns databases nesta instncia. Nestes casos, ao invs de usar a auditoria a nvel de servidor ( instncia), podemos us-la a nvel de database. Diferente do Server Audit Specification, que s trabalha com grupos de aes, o Database Audit Specification nos permite, tanto auditar grupos de aes, como tambm apenas algumas aes de determinados grupos. Por exemplo: Para auditar selects apenas em um database chamado DB1 atravs do Server Audit Specification, deveramos usar o grupo de aes chamado SCHEMA_OBJECT_ ACCESS_GROUP. No entanto, este grupo iria auditar no somente selects mas tambm inserts, updates e todas as outras aes contidas neste grupo. A auditoria tambm seria feita para essas aes em todos os demais databases desta instncia. Isso poderia gerar uma carga extra desnecessria nos demais databases, visto que, a necessidade de auditoria era apenas para o database DB1. Para contornar este problema, podemos usar o Database Audit Specification e auditarmos apenas as aes de SELECT no database DB1 Diferente do Server Audit Specifications, usando o Database Audit Specifications, podemos auditar as aes individuais e no apenas atravs de grupos de ao. 2.3 Database e Server Audit Specifications: so grupos de ao no nvel de auditoria, ou seja, possvel auditar a criao de um Server Audit ou Server Audit Specification por exemplo. Sendo auditar as aes no processo de auditoria a nvel de database e servidor.

e-magazine Codificando.net

Starting a trace; Stopping a trace; Altering a trace; Enabling a C2 audit;

www.codificando.net

Abril / Maio 2009

19

SQL Server Audit

e-magazine

Prtica 1 - Criando um Server Audit O comando abaixo cria um objeto Server Audit Assncrono, chamado srvAudit que armazenar os dados auditados em um FILE SYSTEM, com tamanho mximo de 10 MB por arquivo num total de 100 arquivos. Aps criado, necessrio alterar seu state para ON.
USE MASTER; GO CREATE SERVER AUDIT srvAudit TO FILE ( FILEPATH = 'c:\', MAXSIZE = 10MB, MAX_ROLLOVER_FILES = 100, RESERVE_DISK_SPACE = ON )
Descrio dos parmetros FILEPATH Pasta onde sero gravados os arquivos de dados da auditoria. Tamanho mximo de cada arquivo de auditoria. Quantidade de arquivos que podem ser criados. Para o nosso exemplo, sero criados 100 arquivos de 10MB cada, sendo possvel o armazenamento de 1GB ( 10 arquivos X 100 MB ) de dados de auditoria. Se necessrio pr-alocar espao no disco. Este espao igual ao valor do parmetro MAXSIZE. Somente deve ser setado como ON quando o valor de MAXSIZE for diferente de UNLIMITED. Este valor especifica o tempo de gravao dos dados. Caso seja passado o valor zero, o modo de auditoria passa a ser Sncrona. Indica se a instncia ser derrubada ou continuar em caso de falha. Para dar suporte em cenrios de Espelhamento, o SQL Server Audit precisa de um GUID. Ele no pode ser alterado aps criada a auditoria.

WITH ( QUEUE_DELAY = 1000,--caso o valor fosse 0 a forma de gravao seria sncrona ON_FAILURE = CONTINUE, AUDIT_GUID = '0D54EF3D-90204AE7-A0A3-31D9D43ACAA4' ) GO ALTER SERVER AUDIT srvAudit WITH (STATE = ON);

2 Criando um Server Audit Specification O comando abaixo cria um Server Audit Specification, no container srvAudit que audita falhas de Login.
USE MASTER GO CREATE SERVER AUDIT SPECIFICATION srvAuditSpecification FOR SERVER AUDIT srvAudit ADD ( FAILED_LOGIN_GROUP ) WITH ( STATE = ON )

MAXSIZE MAX_ROLLOV ER_FILES

Mas, suponhamos que aps criar o srvAuditSpecification acima, fosse necessrio adicionar o grupo de aes SUCCESSFUL_LOGIN_GROUP ( logins bem sucedidos ).

e-magazine Codificando.net

RESERVE_DIS K_SPACE

Antes de adicionar o novo grupo ao srvAuditSpecification, devemos setar seu state como OFF. O seguinte script realiza este procedimento:
USE MASTER GO ALTER SERVER AUDIT SPECIFICATION srvAuditSpecification WITH ( STATE = OFF ) GO ALTER SERVER AUDIT SPECIFICATION srvAuditSpecification ADD (SUCCESSFUL_LOGIN_GROUP ) WITH ( STATE = ON )

QUEUE_DELA Y

ON_FAILURE

AUDIT_GUID

E, por fim, caso fosse necessrio dropar, por

www.codificando.net

Abril / Maio 2009

20

SQL Server Audit

e-magazine

exemplo, GROUP:

grupo

FAILED_LOGIN_

USE MASTER GO ALTER SERVER AUDIT SPECIFICATION srvAuditSpecification WITH ( STATE = OFF ) GO ALTER SERVER AUDIT SPECIFICATION srvAuditSpecification DROP (FAILED_LOGIN_GROUP ) WITH ( STATE = ON )

SELECT STATEMENT AS comando, * FROM SYS.fn_Get_Audit_file('c:\*', DEFAULT, DEFAULT) ORDER BY event_time DESC

Esta funo retorna uma tabela contendo informaes sobre as aes auditadas. Mais informaes sobre o contedo de cada coluna podem ser vistas no BOL [fn_Get_Audit_file]. Vale lembrar que, como a auditoria pode trabalhar de forma sncrona e assncrona, os dados auditados podem no estar gravados no momento do select, isso vai depender do parmetro QUEUE_DELAY configurado na criao do Server Audit. Concluso SQL Server Audit uma nova feature do SQL Server 2008, que comparada com outros mecanismos, como C2 Audit, SQL Trace, Event Notifications e DDL Triggers, possui uma enorme flexibilidade e facilidade, alm de gerar um menor overhead que os outros citados.

3 Criando um Database Audit Specification Iremos mostrar agora como criar um Database Audit Specification para auditar selects para a tabela Person.Address e selects no Schema HumanResources.
USE AdventureWorks GO CREATE DATABASE AUDIT SPECIFICATION dasSelect FOR SERVER AUDIT srvAudit ADD ( SELECT ON Person.Address BY PUBLIC ), ADD ( SELECT ON SCHEMA::HumanResources BY PUBLIC ) WITH ( STATE = ON ) GO

e-magazine Codificando.net

Visualizando os dados auditados Por fim, para visualizarmos os dados gerados, que no nosso caso esto gravados em arquivo, existem duas formas: 1. 2. Usando o SSMS: em <instncia>\ Security\Audits, clicando com o boto direito e ento View Audit Logs. Usando a funo de sistema fn_Get_ Audit_file: com esta funo, podemos visualizar os dados auditados de apenas um arquivo ou de todo um diretrio.

Exemplo:

www.codificando.net

Abril / Maio 2009

21

e-magazine

Utilizao de Mashups com Silverlight


O Objetivo deste artigo demonstrar a utilizao de mashups dentro do contexto e advento da Web 2.0 .
Por: Roni A. Marcello / Juliano Schimiguel

Resumo Os mashups ganharam aceitao nos ltimos anos, impulsionados pela Web 2.0. Inicialmente, os mashups adotaram dados de fontes como Craigslist (http:// www.craigslist.org), combinando-os com servios de mapeamento ou fotografia, para criar visualizaes dos dados (por exemplo, http://housingmaps.com). Muitos desses primeiros mashups tinham o consumidor como objetivo mas, em anos recentes, a empresa tambm comeou a se interessar e aceitar os mashups corporativos. As organizaes comeam a perceber que podem colocar seus servios bem definidos para produzir bits distintos de lgica do negcio com outros servios existentes, internos ou externos organizao, para fornecer vises novas e interessantes dos dados. 1. Introduo

desenvolvimento Web, e.g. [MSDN 2008] , alm de aplicativos interativos e sofisticados para a Web . 2. Conceituao sobre Mashups
2.1 Definio

Mashup, e.g. [MSDN 2008], uma tcnica para a construo de aplicativos que combina dados de vrias fontes para criar uma experincia integrada. Atualmente, h muitos mashups hospedados em sites da Internet que oferecem representaes visuais de dados abertos ao pblico.
2.2 Histrico

e-magazine Codificando.net

O Objetivo deste artigo demonstrar a utilizao de mashups dentro do contexto e advento da Web 2.0, e.g. [WEB2.0 2008] , segunda gerao de comunidades e servios baseados na plataforma Web, como wikis, aplicaes baseadas em folksonomia e redes sociais , juntamente com a utilizao do plugin de desenvolvimento para a plataforma .NET; Microsoft Silverlight, e.g. [MSDN 2008], que um plug-in para vrios navegadores, vrias plataformas e vrios dispositivos, destinado a oferecer a prxima gerao de experincias de mdia baseadas em .NET framework para

Na medida em que as tcnicas para a criao de mashups amadureceram, comeamos a ver nas empresas a construo de modelos do negcio baseados nesta tecnologia. No mercado imobilirio norte-americano, Redfin (http:// www.redfin. com) e Zillow (http:// www.zillow.com) utilizam grandes volumes de dados imobilirios, pblicos e privados, (de fontes como autarquias de registro municipais e Multiple Listing Service) combinados com servios internos de "valor agregado", cujo resultado apresentado ao usurio em um mapa (utilizando o Virtual Earth da Microsoft e o Google Maps, respectivamente). H muitos outros tipos de informaes que podem ser acrescentadas a um site do setor imobilirio: outras listagens similares, informaes sobre escolas e hospitais locais, ndices recentes de
Abril / Maio 2009

www.codificando.net

22

Utilizao de Mashups com Silverlight

e-magazine

criminalidade, classificados para colocaes de trabalho e muito mais.

dos locais externos de armazenamento de dados.


2.3.2 "Feeds" RSS

O uso de "feeds" RSS (Really Simple Syndication) uma fonte comum de dados primrios ou suplementares . Os "feeds" RSS so fceis de serem consumidos pois so documentos XML e muitas bibliotecas existem para manipular esses "feeds". A extensibilidade do RSS tambm bastante conhecida, como demonstra a quantidade de extenses em uso atualmente, como a adio de vnculos aos "feeds", informaes de localizao e licenciamento da Creative Commons.
2.3 Arquitetura de um mashup prototpico 2.3.4 Web Services

Embora haja grande variao na IU e nas fontes de dados de muitos mashups, ainda assim podemos derivar padres arquiteturais comuns, compartilhados por todos. Por exemplo, todos os mashups so de natureza Restful (obedecem aos princpios do protocolo de transferncia de estado representacional). A Figura 1 ilustra um processamento arquitetural tpico.
2.3.1 Dados

Dados agregados e apresentados ao usurio so o principal elemento de qualquer mashup. Embora o diagrama acima descreva a fonte de dados como um banco de dados, para utilizao do conceito no necessrio a utilizao deste recurso no local, nem para o aplicativo mashup nem para o cliente. Os dados podem vir estritamente dos Web Services serializados para XML ou JSON (este o padro mais comum em mashups baseados em Internet). Existem compensaes arquiteturais a serem feitas, do armazenamento de dados primrios no local ao acesso aos dados feito a cada solicitao. Na medida em que os aplicativos mashups deixam de ser baseados em Internet para serem internos empresa, tendem a depender menos

tambm comum incluir chamadas para Web Services . fcil ver Web Services baseados em WSDL e outros, baseados em REST, com alguns servios expondo os dois estilos. Os Web Services podem ser usados para oferecer dados adicionais ou transformar os dados submetidos ao aplicativo. Para um mashup baseado em mapa, os dados s podem conter endereos de ruas e uma chamada para Web Service baseado em WSDL ou REST pode ser feita para converter o endereo de rua em uma coordenada longitudinal/latitudinal para o mapa.
2.4 Servios da plataforma

e-magazine Codificando.net

A Figura 2 representa uma classe especial de servios, usadas para criar mashups. Estamos chamando estes servios de plataforma porque fornecem funcionalidade alm do modelo tpico solicitao/resposta dos Web Services tradicionais. Um exemplo tpico disso o mapeamento de servios fornecido pelo Virtual Earth. Inclui uma lista completa de capacidades de processamento dos dois lados, cliente e servidor, assim como "servios na nuvem". Estamos presenciando o surgimento de servios de bloco de construo baseados na nuvem que comeam a criar valor. Por exemplo, o servio Amazon S3 oferece
Abril / Maio 2009

www.codificando.net

23

Utilizao de Mashups com Silverlight

e-magazine

armazenamento "na nuvem": facilita a exposio de todos os dados estticos por meio de upload para provedor de armazenamento hospedado. O BizTalk Services da Microsoft uma plataforma de servios que oferece uma capacidade diferente: transmite comunicaes da Internet por meio de um firewall corporativo e, assim, expe servios internos para o consumo de parceiros de negcio ou terceiros que constroem os prprios mashups corporativos. Comunicaes transmitidas como fornecidas pelo BizTalk Services tambm um servio til mesmo dentro de uma nica empresa, com muitas unidades de negcio ou com inmeros segmentos de rede. Uma transmisso de comunicaes baseada em Internet pode eliminar a topologia de rede fsica como um obstculo s comunicaes.

quela de muitos aplicativos de desktop. Tipicamente, no exigem uma instalao do lado do cliente, alm de um plugin genrico, como o Adobe Flash ou Microsoft Silverlight.
2.6 Aplicativo cliente

O mashup distribudo e apresentado ao usurio como aplicativo cliente. Para mashups pblicos de Internet, o aplicativo cliente mais comum um navegador web que recebe HTML e JavaScript distribudos de um servidor web sobre HTTP. Contudo, comeamos a ver os mesmos sendo distribudos tambm com plataformas RIA. Neste modelo, o cliente pode fornecer mais riqueza visual e at algum processamento.
2.7 Direo futura dos mashups

Nas primeiras verses , grande parte da implementao era muito ente diante e demorada. Muitos deles usavam o processamento do lado do servidor (quase sempre com PHP ou PERL) e o cansativo scripting do lado do cliente, na forma de JavaScript, para criar a experincia de mashup. Era comum para a pessoa que os criava criar cdigo personalizado para analisar os conjuntos de retorno XML que recebiam das respectivas fontes de dados.

e-magazine Codificando.net

2.5 Aplicativos

Pense no aplicativo mashup como uma combinao de servios de camada intermediria e de lgica leve do negcio. Para aplicativos baseados na Internet, sua codificao usualmente escrita utilizando tecnologias web (como PHP ou ASP. NET), mas estamos comeando a ver a demarcao entre o processamento do servidor e a indefinio do aplicativo cliente, com o surgimento das Rich Internet Applications (RIAs). As RIAs so aplicativos executados no navegador com funcionalidade rica, similar

Na medida em que o tempo passou e o processo de desenvolvimento amadureceu, uma boa parte do trabalho ente diante de codificao foi substituda por frameworks e melhores padres de codificao. Os scripts personalizados no lado do servidor comearam a ser substitudos por bibliotecas padronizadas que automaticamente geram o necessrio script do lado do cliente. Presenciamos tambm a padronizao dos formatos de mensagens. Um exemplo disso a extenso GeoRSS, para o padro RSS, que permite especificar a longitude e a latitude correlatas dos itens do "feed". Os trs principais provedores de servio de mapeamento (Google, Microsoft e Yahoo) so compatveis com GeoRSS e isso significa que os mashups com essa extenso RSS
Abril / Maio 2009

www.codificando.net

24

Utilizao de Mashups com Silverlight

e-magazine

praticamente no exigem codificao. Por algum tempo a criao de mashups foi domnio exclusivo do desenvolvedor, mas existe um movimento para colocar a habilidade de cri-los diretamente nas mos do cliente final. Como os frameworks para sua criao tornaram-se cada vez mais simples de usar e os formatos de mensagens tornam-se mais padronizados, o prximo passo lgico ser o de construir ferramentas que possam criar mashups. Algumas dessas ferramentas sero destinadas ao consumidor final. Pipes da Yahoo e Popfly da Microsoft so exemplos de frameworks e ferramentas que permitem aos usurios criar seus prprios mashups. Observamos um crescimento na importncia do esquema comum e dos meta dados no desenvolvimento. Atualmente, j observamos o surgimento de outros esquemas-padro, como a linguagem de marcao de keyhole (KML - Keyhole Markup Language) para descrever dados geoespaciais. Ainda mais interessante ser o Microformats, framework de grande potencial, destinado distribuio de significado semntico, que pode ser facilmente lido por software do tipo mashup.
2.8 Mashups na empresa

equipes de esportes do local e os resultados dos seus jogos recentes como incio de conversao ou passatempo em chamadas de longa durao.
2.8.1 Aproveitar os servios j construdos por voc

O retorno imediato de uma SOA pode ser concretizado quando as organizaes comeam a mesclar e fazer a correspondncia desses servios entre objetivos novos e existentes. Pode ser instigante iniciar o aproveitamento dos servios ou aplicativos nos modos jamais imaginados no momento em que foram escritos. (Quicken Loans mashups para resultados mais rpidos)
2.8.9 Aproveitar os servios construdos por terceiros

importante compreender que no se pode ter todas as informaes do mundo e que h um retorno sobre o investimento bastante alto quando voc simplesmente aproveita o trabalho rduo de outra pessoa, em lugar de reinventar a roda.
2.8.10 Construir servios que terceiros possam aproveitar

Imagine-se arquiteto de aplicativos de um sistema de call center que recebe chamadas sobre assistncia tcnica de garantia e peas sobressalentes. Utilizando o nmero de telefone do cliente, poderamos exibir seus registros incluindo um histrico de compras. Esse interessante aplicativo j est implantado em muitas centrais de chamadas. Mas se alm de pesquisar as informaes do cliente, pudssemos associar o nmero do telefone em um mapa, utilizando um servio disponvel ao pblico e tambm exibir uma lista de centros de assistncia tcnica do local ou fornecedores de peas dos produtos includos no mapa. Com esses dados em mos, poderamos responder as perguntas dos clientes em segundos. E se tambm pesquisssemos as condies atuais do tempo nessa rea ou as

Outra oportunidade para as empresas, na medida em que os mashups tornam-se cada vez mais populares, a de construir servios que possam ser facilmente consumidos por aplicativos. Voltando ao exemplo que citamos, o atendente do servio de chamadas pode deixar o cliente feliz informando o endereo da loja mais prxima. Mas, imagine se as prprias lojas expusessem seus inventrios e disponibilidade de produtos para o mashup. Agora, o atendente do servio de chamadas pode fornecer informaes ainda mais detalhadas e valiosas ao cliente. Esse tipo de servio seria importante para o cliente, para a central de chamadas e para a prpria loja.
2.9 Plataforma gil

e-magazine Codificando.net

Muitos

mashups

foram

criados

para

www.codificando.net

Abril / Maio 2009

25

Utilizao de Mashups com Silverlight

e-magazine

distribuio na plataforma web baseada em padres (HTML e Java Script). Isto no uma limitao , mas apenas a forma padro de distribuir aplicativos na Internet. medida que vemos os mashups entrarem na empresa, observamos tambm um nmero crescente dos mesmos sendo construdos em plataformas RIA (como o Flash da Adobe e o Silverlight da Microsoft) e at mesmo o seu surgimento para desktop , completos e construdos em Windows Presentation Foundation. O processamento em 3-D completo, em plataforma de cliente rica, pode aumentar o se apelo visual. Os mashups corporativos podem aproveitar totalmente essas plataformas mais ricas pois muitas tero maior controle dos desktops.
2.10 Riscos

outro risco-chave. Na medida em que os dados so visualizados, existe uma tendncia de adaptar os dados aos limites da superfcie de apresentao. Haver uma tendncia natural de no visualizar pequenos volumes de dados ou de agrupar dados em colees maiores para economizar espao na superfcie de apresentao. Isso pode "distorcer" a viso que o usurio final tem dos dados.

2.10.3 Poltica

Ao implementar mashups, quatro reas de risco devem ser consideradas.


2.10.1 Dependncias dos servios

Um dos principais riscos de sua criao para o ambiente corporativo ocorre quando se cria uma dependncia dos servios externos sua empresa ("servios nas nuvens - cloud computing ). Os termos dos acordos de servio deveriam ser analisados antes de se criar uma dependncia. Por exemplo, alguns servios exigem que o software que o usa seja de um site da Internet de acesso pblico; isto pode ocorrer quando o servio tem um modelo de receita baseada em publicidade. Os termos tambm podem estar sujeitos s mudanas, em alguns casos, de formas que poderiam impedir de us-lo . Para minimizar essa preocupao, procure provedores de servio cujo modelo se adapte ao seu uso.
2.10.2 Perda de fidelidade dos dados

A poltica tambm pode ser um obstculo criao de mashups. Se o servio foi criado por terceiros, talvez faa (ou no) exatamente o que voc desejou e, para fazer com que o desenvolvedor do servio modifique-o de acordo com suas necessidades, demora muito. Essa mentalidade fatal para os mashups. Isso tambm se manifesta em confiana; se no confia no provedor do servio, voc tambm no confiar nesse servio para o seu aplicativo de misso crtica.
2.10.4 "Consumerizao" no controlada

e-magazine Codificando.net

A perda de fidelidade dos dados exibidos

De acordo com um recente relatrio do Gartner, Inc. as tecnologias de consumo esto cada vez mais sendo utilizadas pelas empresas sem conscincia, governana ou TI corporativo. Ferramentas voltadas ao consumidor tm enfoque rgido na criao e visualizao de um mashup, assim, pode ser muito fcil sua criao inicial, mas a manuteno de longo prazo no

www.codificando.net

Abril / Maio 2009

26

Utilizao de Mashups com Silverlight

e-magazine

considerada. Veja, tambm, como seria perigoso ter um usurio final carregando dados corporativos em uma ferramenta pblica de mashup como Pipes ou Popfly. Existem muitas formas de minimizar esses riscos. Primeiramente, para servios internos ou externos, implemente um contrato de nvel de servio (SLA) que descreva claramente as responsabilidades das duas partes, tempos de resposta para requisies de mudana, exigncias de tempo de processamento, restries de largura de banda e todos os outros detalhes relevantes. Depois, esquematize as possveis exigncias de emergncia do seu aplicativo, caso haja falha na chamada de determinado servio. Para alguns servios, pode ser aceitvel simplesmente no apresentar esses dados; com outros servios, voc pode deixar os dados em cach aos quais poder recorrer sempre que houver uma falha. Talvez seja preciso ter um servio secundrio alinhado como backup, a ser chamado caso alguma coisa horrvel acontea. Por fim, ser preciso abordar as questes e a poltica de consumerizao. Ao contrrio da crescente confiabilidade e redundncia dos servios, isto exige um processo de governana. Se a sua organizao tiver um processo amadurecido para governar o uso dos servios, esse processo tambm dever ser aproveitado para a criao e o consumo de mashups. 3.Conceituao Silverligth
3.1 Silverligth (anteriormente "WPF/E")

interativas e visualmente impressionantes que podem ser executadas em qualquer lugar; em navegadores ou em vrios dispositivos e sistemas operacionais de desktop (como o Apple Macintosh). De acordo com o WPF (Windows Presentation Foundation), o XAML (eXtensible Application Markup Language) a base do recurso de apresentao "WPF/E". O XAML uma tecnologia de apresentao do Microsoft .NET Framework 3.0 (infra-estrutura de programao Windows). No modelo "WPF/E", os designers podem criar a experincia de usurio que desejarem usando o XAML. Um desenvolvedor pode ento incorporar diretamente o documento XAML em uma pgina da Web usando o tempo de execuo "WPF/E". Portanto, os dois podem trabalhar mais de perto do que nunca para proporcionar uma experincia de usurio de alto nvel. No ncleo do "WPF/E" est o mdulo de aprimoramento de navegador que processa o XAML e desenha os elementos grficos resultantes na superfcie do navegador. Tratase de um download pequeno (menos de 2 MB) que pode ser instalado quando o usurio

e-magazine Codificando.net

Definio : "WPF/E" o nome de uma nova tecnologia de apresentao na Web criada para ser executada em diversas plataformas. Ele permite a criao de experincias elaboradas,

Figura 03 - Microsoft Expression Graphic Designer : ferramenta da Microsoft. Permite que elementos grficos de outros aplicativos e elementos de design de exportao sejam incorporados em uma variedade de ferramentas de software, incluindo XAML para WPF e "WPF/E". [MSDN 2008]

www.codificando.net

Abril / Maio 2009

27

Utilizao de Mashups com Silverlight

e-magazine

acessa o site com contedo "WPF/E". Esse mdulo expe a estrutura subjacente da pgina XAML aos desenvolvedores JavaScript, de modo que a interao com o contedo no nvel da pgina torna-se possvel e, portanto, o desenvolvedor pode, por exemplo, gravar manipuladores de eventos, ou manipular o contedo da pgina XAML usando cdigo JavaScript. 4. Utilizao Silverligth para criao de Mashups Com a criao do Silverligth plugin, a Microsoft vem apostando na utilizao de mashups para competir diretamente com a utilizao do Adobe Flash para criao de interface e utilizao de componentizao para Web 2.0 rica. Um exemplo de utilizao e desenvolvimento j iniciado juntando os dois conceitos pode ser visualizado nas ferramentas Silverlight Photo Carousel e a ferramenta mais difundida Popfly.[Silverligth 2008] O Popfly permite combinar diversas fontes de dados em uma s aplicao on-line. Pode-se, por exemplo, usar fotos do Flickr como base para a montagem de um slide show. Cada componente do Popfly representado por um mdulo. Para montar o mashup, o usurio arrasta os mdulos at a rea central da tela e cria links entre as caixas. 5. Concluso A idia principal demonstrar que com a utilizao de web interfaces ricas surge um novo conceito no desenvolvimento de softwares e aplicativos para o usurio final com a possibilidade e poder para ele criar e montar (modularmente) a aplicao que mais se assemelhe a sua necessidade de mercado. A Microsoft atravs deste novo conceito vem instituindo ferramentas e plataformas para o desenvolvimento e utilizao total sobre o conceito de mashups corporativos ou de uso para pblico.

Referncias
WEB 2.0 World Wide 2.0 Disponvel em : < http://pt.wikipedia.org/wiki/Web_2.0 >.Acessado em:dezembro 2008. MSDN Microsoft Developer Network Library Disponvel em: < http:// msdn.microsoft.com/pt-br/library/ default.aspx >.Acessado em:dezembro 2008. Quarterly , The McKinsey (2007) , How Businesses are Using Web 2.0: A McKinsey Global Survey Disponvel em : < http://www.mckinseyquarterly.com/ article_abstract_visitor.aspx?ar=1913 > .Acessado em: dezembro 2008 Silverligth Disponvel em : < http:// blog.programmableweb.com/2007/10/11/ silverlight-mashups/ >.Acessado em: dezembro 2008.

e-magazine Codificando.net
|

www.codificando.net

Abril / Maio 2009

28

e-magazine

Evoluo da Metodologia do Desenvolvimento de Sistemas


Metodologias no desenvolvimento de software e o modo como elas evoluram no decorrer dos anos.
Por: Juliana Prado

Evoluo da metodologia do desenvolvimento de sistemas Introduo: Tem como objetivo esclarecer aos desenvolvedores o funcionamento das metodologias no desenvolvimento de software e o modo como elas evoluram no decorrer dos anos. Em meados da primeira guerra mundial tivemos uma evoluo significativa no segmento corporativo. Nesta poca o mundo passava por intensas transformaes e isto provocou drsticas mudanas no ciclo produtivo das empresas e percebeu-se a necessidade de controlar o seu processo de trabalho. Baseado nestas transformaes houve a necessidade de se aplicar o conceito de dinamizao de processos e da surgiu necessidade de se administrar grandes volumes de dados em organizaes de todas as esferas. Com a criao dos computadores comerciais aps a segunda guerra mundial tivemos um aumento significativo na dinamizao da indstria de computadores e, conseqentemente, o processo de construo de softwares, para que os mesmos automatizassem processos manuais e pudessem avaliar situaes complexas que so parte integrante do cotidiano das organizaes. E partir desse cenrio, criou-se modelos de desenvolvimento de softwares que atendessem a determinadas necessidades especficas e ao

mesmo tempo pudessem ser utilizados na elaborao softwares sem grandes complexidades. A seguir so apresentados os modelos de desenvolvimento de softwares. Modelo Cascata O Modelo Cascata, tambm chamado de Clssico ou Linear, caracteriza-se por possuir uma tendncia na progresso seqencial entre uma fase e a seguinte. Eventualmente, pode haver uma retroalimentao de uma fase para a fase anterior, mas de um ponto de vista macro, as fases seguem fundamentalmente de forma seqencial. A figura abaixo nos d uma idia visual do conceito apresentado acima.

e-magazine Codificando.net

Figura 01

Modelo Iterativo e Incremental O Modelo de ciclo de vida Iterativo e Incremental foi proposto justamente para ser a resposta aos problemas encontrados no Modelo
Abril / Maio 2009

www.codificando.net

29

Evoluo da Metodologia do Desenvolvimento de Sistemas

e-magazine

em Cascata. Um processo de desenvolvimento, segundo essa abordagem, divide o desenvolvimento de um produto de software em ciclos. Em cada ciclo de desenvolvimento, podem ser identificadas as fases de anlise, projeto, implementao e testes. Essa caracterstica contrasta com a abordagem clssica, na qual as fases de anlise, projeto, implementao e testes so realizados uma nica vez. No Modelo de ciclo de vida iterativo e incremental, um sistema de software desenvolvido em vrios passos similares (iterativo). Em cada passo, o sistema

amigos (Jacobson, Booch e Rumbaugh). Agora vamos explanar um pouco da metodologia em espiral que consiste desenvolvido em uma seqncia de iteraes e nisso cada iterao corresponde a uma volta na espiral e cada fase ou atividade um setor, um ngulo da volta. A figura 03 nos d uma idia visual do conceito apresentado acima. E com o surgimento desse modelo podemos realizar a construo de verses bsicas dos produtos em prazos curtos e deixar novos requisitos para implementao futura, no momento em que se tornam essenciais. Conforme o avano tecnolgico foi ocorrendo mudana de paradigma no desenvolvimento de sistemas aconteceu e atualmente trabalhamos com o conceito de metodologia gil. Muitos ainda se perguntam o que e qual a funo desta metodologia e em que ela ir melhorar os processos existentes na elaborao de um software.

e-magazine Codificando.net

Figura 02

estendido com mais funcionalidades (incremental).

Existe um processo de desenvolvimento de software que o principal representante da abordagem de desenvolvimento incremental e iterativo. Conhecido como RUP - Rational Unified Process (Processo Unificado Racional). E foi patenteado pela empresa Rational, onde trabalham os famosos trs

Vamos entender o que seria primeiramente esse Desenvolvimento gil de software (do ingls Agile software development) ou Mtodo gil um conjunto de metodologias de desenvolvimento de software. O desenvolvimento gil, tal como qualquer metodologia de software, providencia uma estrutura conceitual para reger projetos de engenharia de software.

www.codificando.net

Abril / Maio 2009

30

Evoluo da Metodologia do Desenvolvimento de Sistemas

e-magazine

A figura 04 nos d uma idia visual do conceito apresentado acima. Porm existem vrios metodologia que so: 1. 2. 3. Cleanroom XP Scrum modelos desta

Estarei detalhando cada um deles abaixo. Cleanroom uma metodologia muito utilizada no desenvolvimento de software. considerada "pesada" pelos padres da Engenharia de Software, mas muito difundida no desenvolvimento de grandes projetos corporativos.

Figura 03

e-magazine Codificando.net

Figura 04

www.codificando.net

Abril / Maio 2009

31

Evoluo da Metodologia do Desenvolvimento de Sistemas

e-magazine

O processo baseado no projeto apurado das funes, que so analisadas pelo mtodo de reviso-par com o objetivo de verificar se fazem realmente o que foram especificadas a fazer. Por analogia, podemos comparar esta metodologia com as salas limpas na fabricao de semicondutores, que eliminam a necessidade de se limpar wafers de silcio pelo fato de que eles nunca comeam sujos. O desenvolvimento Cleanroom remove a necessidade de depurao do programa, assegurando que os erros nunca comeam introduzidos no sistema. Programao Extrema (do ingls eXtreme Programming), ou simplesmente XP, uma metodologia gil para equipes pequenas e mdias e que iro desenvolver software com requisitos vagos e em constante mudana. Para isso, adota a estratgia de constante acompanhamento e realizao de vrios pequenos ajustes durante o desenvolvimento de software. Scrum um mtodo gil que foi concebido como um estilo de gerenciamento de projetos em empresas de fabricao de automveis e produtos de consumo, por Takeuchi e Nonaka no artigo "The New New Product Development Game.Eles notaram que projetos usando equipes pequenas e multidisciplinares (cross-functional) produziram os melhores resultados, e associaram estas equipes altamente eficazes formao Scrum do Rugby (utilizada para reincio do jogo em certos casos). Jeff Sutherland, John Scumniotales, e Jeff McKenna documentaram, conceberam e implementaram o Scrum, como descrito abaixo, na empresa Easel Corporation em 1993, incorporando estilos de gerenciamento observados por Takeuchi e Nonaka. Em 1995, Ken Schwaber formalizou a definio de Scrum e ajudou a implant-lo em desenvolvimento de software em todo o mundo. Por estarmos vivendo em constante

transformao neste cenrio de desenvolvimento de software precisamos realizar uma anlise do que foi vivido no passado para assim aprendermos com os erros e percebemos que podemos sempre inovar. Vejam o cenrio que antes era a realidade dos desenvolvedores de software. As linguagens de programao eram bastante complexas e, alm de no existir o conceito de linguagem visual, envolviam inmeros clculos matemticos e isso exigia que os desenvolvedores possussem conhecimentos avanados nas reas de matemtica e fsica, tornando, assim, uma difcil manipulao delas. A interao do usurio ao software se dava atravs do teclado e isto fazia com que o usurio que fosse utilizar o computador passasse muito tempo para aprender a manipular o sistema. Pelo que se pode perceber que com a evoluo dos paradigmas o cenrio mudou significativamente como apresentado abaixo. Com a introduo do mouse nos PCs e o surgimento da interface grfica surgiu o conceito de linguagens visuais e disso temos atualmente um cenrio complexo para o desenvolvimento de sistemas. Por isso o conhecimento das metodologias acima e de sua aplicao no cenrio de desenvolvimento pode muitas vezes economizar ciclos de trabalho e como conseqncia h uma economia significativa de dinheiro e trabalho. No importa se voc adotar um ou outra de forma isolada ou integrada o importante que desenvolver solues vai alm de linhas de cdigo depende mais do trabalho das pessoas e de como tratado cada ciclo deste trabalho.

e-magazine Codificando.net
|

www.codificando.net

Abril / Maio 2009

32

e-magazine

Criando um Cubo Olap


Carga de um cubo OLAP utilizando o Microsoft SQL Server 2005 Analysis Services.
Por: Ivan Sampaio / Juliano Schimiguel

Introduo Quando comecei a pesquisar sobre Business Intelligence, para incluir essa funcionalidade em um ERP, foi bastante difcil descobrir o caminho. No incio, parti para procurar uma ferramenta free e no obtive sucesso, principalmente pela falta de documentao, foram dois meses de trabalho intensos sem obter um bom resultado. Ento tomei a deciso de analisar o Microsoft SQL Server Analysis Services, em menos de uma semana estava montando meus primeiros cubos. Aqueles dois meses me ajudaram bastante a consolidar os conceitos sobre o assunto, mas com certeza o trabalho com o Analysis Services foi muito gratificante. J se passaram dez meses e agora tenho a oportunidade de escrever um artigo para passar, de uma forma prtica, um caminho a ser seguido para iniciar em um ambiente de Business Intelligence. O objetivo desse artigo mostrar a criao e carga de um cubo OLAP utilizando o Microsoft SQL Server 2005 Analysis Services. Partindo-se de uma estrutura de informaes sobre Notas Fiscais de Vendas, onde a base de dados xBase, ser definida a estrutura multidimensional, tabelas Fato e Dimenses, utilizando o Microsoft SQL Server. Para fazer a carga dos dados, ser utilizado um programa escrito em Microsoft Visual FoxPro, transferindo os dados da base xBase para a base de dados multidimensional estruturada no

SQL Server. Para criar o cubo sero definidos todos os passos no Analysis Services, a partir das tabelas Fato e Dimenses criadas no SQL Server. Desenvolvimento Na prtica, quando se pensa em utilizar um cubo para anlise de informaes, os dados geralmente no esto modelados na forma multidimensional, ento partimos do princpio que esto na forma relacional em uma base de dados xBase. Poderiam estar em qualquer outra base de dados, mas para mostrar detalhes de um programa de carga, escolhemos a estrutura xBase que pode ser usada de forma nativa por um programa desenvolvido em Visual FoxPro, que, pela sua simplicidade de codificao, facilitar o seu entendimento.

e-magazine Codificando.net

A seguir, mostramos as estruturas originais das tabelas em uma base de dados xBase. Estrutura das Tabelas em xBase
Notas_Fiscais NUMNTF CODCLI Numeric Caracter 07 06 08

DTAEMINTF Date

Itens_das_Notas_Fiscais NUMNTF CODPRD Numeric Caracter 07 10 13 13 02 03

VLRPRDNTF Numeric QTDPRDNTF Numeric

www.codificando.net

Abril / Maio 2009

33

Criando um Cubo Olap

e-magazine

Produtos CODPRD NOMPRD Caracter Caracter Clientes CODCLI NOMCLI NOMCID CODEST Caracter Caracter Caracter Caracter 06 50 50 02 10 50

Produtos (Dimenso) IDT_Produto Nome do Produto Serial Caracter 50

Programa de Carga Para criar o programa para carga das tabelas da base de dados multidimensional, foi utilizado o Visual FoxPro, por que atravs dele possvel acessar nativamente uma base de dados xBase e atravs de ODBC acessar uma base de dados SQL Server. Esse programa um exemplo, no pretende ser um modelo ideal para programas de carga de tabelas multidimensionais. Nas observaes desse artigo, foram colocados alguns detalhes sobre certos cuidados que devem ser tomados para que a sua base de dados multidimensional seja consistente e de fcil e rpida atualizao. A seguir, mostramos o programa para a carga de dados em tabelas multidimensionais definidas no SQL Server, a partir de uma base relacional em xBase. Listagem do Programa de Carga
clear * Execuo da Evento de Carga do Banco de Dados Multidimensional. local oVendas oVendas=createobject ("NOTAS_FISCAIS","NOTAS_FISCAIS") oVendas.EvtAtuCub() return .t. * * Classe para atualizao do Banco de Dados Multidimensional. define class Notas_Fiscais as Custom * Propriedades da Classe. STRCON="DSN=SQLServer;SERVER=ssss;UID=uuuu;P WD=pppp" IDTCON=0 * Evento para atualizao do Banco de Dados Multidimensional. procedure EvtAtuCub * Conexo ao Banco de Dados. this.IDTCON=SqlStringConnect(this.STRCON) if this.IDTCON<1 ? "O Servidor SQLServer no foi encontrado." return .t. endif * Tabelas Originais em xBase.

Para criar a base de dados multidimensional, que ser utilizada na construo do cubo, usamos o SQL Server. Optamos por ele porque iremos utilizar o Analysis Services para construo do cubo e ambos fazem parte do Microsoft Visual Studio 2005, facilitando em muito o desenvolvimento. A seguir, mostramos as estruturas das tabelas na forma multidimensional em uma base de dados SQL. Estrutura das Tabelas Fato e Dimenses
Notas Fiscais (Fato) IDT_Nota_Fiscal IDT_Emisso_da_Nota_Fiscal IDT_Cliente IDT_Cidade IDT_Produto Valor das Vendas Quantidade das Vendas Serial Serial Serial Serial Serial Numeric Numeric

e-magazine Codificando.net

Clientes (Dimenso) IDT_Cliente Cliente Cidades (Dimenso) IDT_Cidade Estado Cidade Serial Caracter 02 Caracter 50 Emisses (Dimenso) IDT_Emisso_da_Nota_Fiscal Ano Ms Dia Serial Numeric Numeric Numeric Serial Caracter 50

www.codificando.net

Abril / Maio 2009

34

Criando um Cubo Olap

e-magazine

use Clientes alias CLI_TBL in select(1) use Produtos alias PRD_TBL in select(1) use Cidades alias CID_TBL in select(1) use Notas_Fiscais alias NTF_TBL in select(1) select NTF_TBL index on DTEMINNTF tag NTF_TBL use Itens_das_Notas_Fiscais alias INF_TBL in select(1) select INF_TBL index on NUMNTF tag INF_TBL * Selecionando as Notas Fiscais. select NTF_TBL go top do while not eof() ? " * Notas Fiscais..... "+dtoc (NTF_TBL.DTAEMINTF) * Clientes. select CLI_TBL locate for CLI_TBL.CODCLI=NTF_TBL.CODCLI * Atualizao da Dimenso Clientes. if sqlexec(this.IDTCON,"select * from [Clientes]"+; " where [Nome do Cliente]='"+CLI_TBL.NOMCLI+"'")#1 sqlexec(this.IDTCON,"insert into [Clientes]([Nome do Cliente])"+; " values ('"+CLI_TBL.NOMCLI+"')") endif * Atualizao da Dimenso Cidades/Estados. if sqlexec(this.IDTCON,"select * from [Cidades]"+; " where [Cidade]='"+CLI_TBL.NOMCID+"'"+; " and [Estado]='"+CLI_TBL.CODEST+"'")#1 sqlexec(this.IDTCON,"insert into [Cidades]([Cidade],[Estado]"+; " values ('"+CLI_TBL.NOMCID+"','"+CLI_TBL.CODEST+"')") endif * Atualizao da Dimenso Emisses. if sqlexec(this.IDTCON,"select * from [Emisses]"+; " where [Ano]="+str(year(NTF_TBL.DTAEMINTF))+; " and [Ms]="+str(month(NTF_TBL.DTAEMINTF))+; " and [Dia]="+str(day(NTF_TBL.DTAEMINTF))#1 sqlexec(this.IDTCON,"insert into [Emisso]([Ano],[Ms],[Dia])"+; " values ("+str(year(NTF_TBL.DTAEMINTF))+","+; +str(month(NTF_TBL.DTAEMINTF))+","+; +str(day(NTF_TBL.DTAEMINTF))+")") endif * Acessando as Dimenses para pegar o IDT_ para atualizao da Tabela Fato. sqlexec(this.IDTCON,"select * from [Clientes]"+; " where [Nome do Cliente]='"+CLI_TBL.NOMCLI+"'",TMP_CLI) sqlexec(this.IDTCON,"select * from [Cidades]"+; " where [Cidade]='"+CLI_TBL.NOMCID+"'"+; " and [Estado]='"+CLI_TBL.CODEST+"'",TMP_CID) sqlexec(this.IDTCON,"select * from [Emisses]"+; " where [Ano]="+str(year(NTF_TBL.DTAEMINTF))+;

" and [Ms]="+str(month(NTF_TBL.DTAEMINTF))+; " and [Dia]="+str(day(NTF_TBL.DTAEMINTF),TMP_EMI) * select INF_TBL locate for INF_TBL.NUMNTF=NTF_TBL.NUMNTF do while not eof() and INF_TBL.NUMNTF=NTF_TBL.NUMNTF * Produtos. select PRD_TBL locate for PRD_TBL.CODPRD=INF_TBL.CODPRD * Atualizao da Dimenso Produtos. if sqlexec(this.IDTCON,"select * from [Produtos]"+; " where [Nome do Produto]='"+PRD_TBL.NOMPRD+"'")#1 sqlexec(this.IDTCON,"insert into [Produtos]([Nome do Produto])"+; " values ('"+PRD_TBL.NOMPRD+"')") endif sqlexec(this.IDTCON,"select * from [Produtos]"+; " where [Nome do Produto]='"+PRD_TBL.NOMPRD+"'",TMP_PRD) * Atualizao da Tabela Fato Notas Fiscais. sqlexec(this.IDTCON,"insert into [Notas Fiscais]([Valor das Vendas],"+; "[Quantidade das Vendas],"+; "[IDT_Cliente],"+; "[IDT_Cidade],"+; "[IDT_Produto],"+; "[IDT_Emisso_da_Nota_Fiscal])"+; " values ("+str(INF_TBL.QTDPRDNTF)+","+; +str(INF_TBL.VLRPRDNTF)+","+; +str(TMP_CLI.IDT_Cliente)+","+; +str(TMP_LOC.IDT_Cidade)+","+;

e-magazine Codificando.net

+str(TMP_PRD.IDT_Produto)+","+; +str(TMP_EMI.IDT_Emisso)+")") select INF_TBL skip enddo select TMP_NTF skip enddo * Fechando as Tabelas. close databases all endproc * enddefine

Criao do Cubo Para criar o cubo utilizaremos o Visual Studio. Optamos por fazer de forma descrita e no mostrar as telas, pois a quantidade de telas muito grande e artigo ficaria extenso. Para poder seguir a forma descrita necessrio estar com o Banco de Dados e as

www.codificando.net

Abril / Maio 2009

35

Criando um Cubo Olap

e-magazine

tabelas na forma multidimensional criadas no SQL Server. Para isso est sendo disponibilizado abaixo um script para ser executado no SQL Server. Esse script ir criar o Banco de Dados e as respectivas tabelas, como descritas acima. Script para gerao do Banco de Dados com as tabelas Fato e Dimenses
/* Criao do Banco de Dados Notas_Fiscais */ CREATE DATABASE [Vendas] ON PRIMARY ( NAME = N'Vendas', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1 \MSSQL\DATA\Vendas.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) GO /* */ USE [Vendas] GO /* Criao da Tabelas Notas_Fiscais */ CREATE TABLE [dbo].[Notas Fiscais]( [IDT_Nota_Fiscal] [int] IDENTITY(1,1) NOT NULL, [IDT_Emisso_da_Nota_Fiscal] [int] NOT NULL, [IDT_Cliente] [int] NOT NULL, [IDT_Cidade] [int] NOT NULL, [IDT_Produto] [int] NOT NULL, [Valor das Vendas] [numeric](15, 2) NOT NULL, [Quantidade das Vendas] [numeric](15, 2) NOT NULL, CONSTRAINT [IDX_Notas_Fiscais] UNIQUE NONCLUSTERED ([IDT_Nota_Fiscal] ASC ) ON [PRIMARY]) /* Criao da Tabelas Clientes */ CREATE TABLE [dbo].[Clientes]( [IDT_Cliente] [int] IDENTITY(1,1) NOT NULL, [Cliente] [char](50) NOT NULL, CONSTRAINT [IDX_Clientes] UNIQUE NONCLUSTERED ([IDT_Cliente] ASC ) ON [PRIMARY]) /* Criao da Tabelas Cidades */ CREATE TABLE [dbo].[Cidades]( [IDT_Cidade] [int] IDENTITY(1,1) NOT NULL, [Cidade] [char](50) NOT NULL, [Estado] [char](02) NOT NULL, CONSTRAINT [IDX_Cidades] UNIQUE NONCLUSTERED ([IDT_Cidade] ASC ) ON [PRIMARY]) /* Criao da Tabelas Emisses */ CREATE TABLE [dbo].[Emisses]( [IDT_Emisso_da_Nota_Fiscal] [int] IDENTITY(1,1) NOT NULL, [Ano] [numeric](04,0) NOT NULL, [Ms] [numeric](02,0) NOT NULL, [Dia] [numeric](02,0) NOT NULL, CONSTRAINT [IDX_Emisses] UNIQUE NONCLUSTERED ([IDT_Emisso_da_Nota_Fiscal] ASC ) ON [PRIMARY]) /* Criao da Tabela Produtos */ CREATE TABLE [dbo].[Produtos](

[IDT_Produto] [int] IDENTITY(1,1) NOT NULL, [Produto] [char](50) NOT NULL, CONSTRAINT [IDX_Produtos] UNIQUE NONCLUSTERED ([IDT_Produto] ASC ) ON [PRIMARY])

Descrio dos passos necessrios para criar um Cubo no Visual Studio Utilizando o Visual Studio, vamos descrever passo a passo como criar um cubo baseado nas tabelas acima descritas. - Execute o Visual Studio. - Selecione: File / New / Project... / Business Intelligence Projects Coloque em Name: ..... Notas Fiscais e clique em OK. Ir aparecer no formulrio Solution Explorer o seu projeto Notas Fiscais. - No Solution Explorer - Notas Fiscais, aparecero as seguintes pastas: Data Sources, Data Source Views, Cubes e Dimensions. So essas pastas que utilizaremos para criar o Cubo. Data Sources Clicar com o boto direito sobre essa pasta e escolha: New Data Source. No formulrio Data Source Wizard, clicar no boto New. No formulrio Connection Manager No Server Name: selecione o servidor SQL Server instalado. No Select or enter a database name: selecione Vendas. Clicar no Test Connection para verificar se a conexo est correta. Clicar em OKNext No Impersonation Information: selecione Default. Clicar em NextFinish. Data Source View Clicar com o boto direito sobre essa pasta e escolha: New Data Source View.
Abril / Maio 2009

e-magazine Codificando.net
|

www.codificando.net

36

Criando um Cubo Olap

e-magazine

Clicar em NextNext. Transferir todas as tabelas de Available Objects para Included Objects. Clicar em NextFinish. Cubes Clicar com o boto direito sobre essa pasta e escolha: New Cube. Clicar em Next... Next... Next... Next... Next......... Finish. Dimensions Clicar na primeira Dimenso. Em Atributos, painel mais a esquerda, clicar com o boto direito no atributo chave. Escolher Propriedades e mudar AtributeHierarchyVisible para False. Repetir esse processo para todas as Dimenses. Processar o Cubo Clicar com o boto direito sobre o Projeto Notas Fiscais escolha: Process. Escolha em seguida clicar em Yes. Obs.: nesse processo podem ocorrer erros, eles so erros provavelmente de definies quanto ao acesso ao servidor SQL. Devem ser analisados e corrigidos por pessoas que tenham domnio do SQL Server. Navegao no Cubo Navegar no cubo pode ser feito atravs do Visual Studio ou desenvolver uma interface e utilizar a PivotTable que um objeto do Excel. No nosso caso vamos utilizar Visual Studio. Abaixo ser descrito passo a passo como navegar no Cubo. Clicar na pasta Cubes. Devem aparecer vrias pginas no formulrio a esquerda. Clicar na pgina Browse. Ir aparecer um formulrio que possui quatro reas:

Solte campos de totais ou de detalhes aqui. Nessa rea podem ser arrastados as measures que esto no painel a esquerda. As measures so os valores que temos nos cubos. Solte campos de linha aqui. Nessa rea podem ser arrastadas as Dimenses que esto no painel a esquerda. As dimenses aqui colocadas sero as linhas da tabela. No nosso cubo temos as dimenses Cidades/Estados, Clientes, Emisses e Produtos. Solte campos de coluna aqui. Nessa rea podem ser arrastadas as Dimenses que esto no painel a esquerda. As dimenses aqui colocadas sero as colunas da tabela. No nosso cubo temos as dimenses Cidades/Estados, Clientes, Emisses e Produtos. Se voc colocou a dimenso na linha no ir conseguir colocar na coluna, mas pode arrastar de um lugar para o outro. Solte campos de filtro aqui. Nessa rea podem ser arrastadas as Dimenses que esto no painel a esquerda. As dimenses aqui colocadas sero filtros da tabela, no iro aparecer. No nosso cubo temos as dimenses Cidades/Estados, Clientes, Emisses e Produtos. Se voc colocou a dimenso na linha ou coluna no ir conseguir colocar no filtro, mas pode arrastar de um lugar para o outro. Todas essas tarefas, aps a primeira vez, ficam bastante intuitivas. Existem vrias opes e recursos nesse formulrio, vale a pena exploralas. Para se ter uma melhor idia da Navegao no Cubo, popule as tabelas com dados e voc ter uma idia muito melhor do poder dessa ferramenta para anlise das informaes. Concluses Utilizando o esquema descrito anteriormente, hoje, tenho vrios cubos desenvolvidos sendo utilizados pelos usurios do ERP ao qual foi
Abril / Maio 2009

e-magazine Codificando.net
|

www.codificando.net

37

Criando um Cubo Olap

e-magazine

incorporado um Business Intelligence, de forma bastante satisfatria. Muito ainda tem que ser feito para que um conjunto de cubos se torne realmente um Business Intelligence, mas isso questo de estudo e tempo. Como foi observado na introduo, o objetivo desse artigo era mostrar, de forma prtica, a criao e carga de um cubo OLAP utilizando o Analysis Services do SQL Server, mas como o assunto extenso, no daria para ser esgotado em um nico artigo. Gostaria de deixar relacionadas algumas observaes, com o objetivo de facilitar o trabalho de quem for se aprofundar no assunto. Os campos das tabelas Fato e Dimenses, devem ser de fcil entendimento para o usurio final, pois elas iro aparecer nas Medidas e Dimenses do cubo. Na criao do cubo elas podem ser alteradas, mas se estiverem j no formato final facilitar a criao do cubo no Analysis Services. Uma das grandes dificuldades encontradas quando so disponibilizadas informaes em cubos, a sua atualizao. Os primeiros ambientes eram atualizados em processos batch, onde o programa que extraia os dados do ERP e atualizava a base de dados multidimensionais eram executados a noite por ser uma tarefa demorada pois tinha que excluir e inserir as informaes de um determinado perodo anterior pois as informaes no ERP poderiam ter sido alteradas. Uma forma de fazer essa tarefa mais rpida e fcil criar um campo data/hora em todas as tabelas do ERP e baseado nela atualizar a base de dados multidimensional, sem precisar excluir e inserir novamente informaes nas tabelas multidimensionais e sim atualiza-las baseando nas informaes atualizadas no ERP. Deve ser armazenada em uma tabela auxiliar, a data da ltima atualizao do cubo e o programa de carga deve se basear nela para fazer as prximas atualizaes. O programa de carga deve verificar e trazer da

base de dados original somente os dados alterados, como por exemplo, uma nota fiscal que foi cancelada ou uma devoluo de nota fiscal, devem ser alteradas e no excludas e inseridas novamente. Deve ser armazenada em uma tabela auxiliar a data da ltima atualizao do cubo e o programa de carga deve se basear nela para fazer as prximas atualizaes. O cubo pode ser atualizado de trs formas (ROLAP, MOLAP e HOLAP), eu sempre utilizo o MOLAP, pois minha base de dados no enorme e garanto com isso um bom tempo de resposta. No MOLAP, os dados da base de dados multidimensional transferida totalmente para os cubos e isso feito atravs de um processo (veja Processar o Cubo em Descrio dos passos necessrios para criar um Cubo no Visual Studio). Existe um componente no Visual Studio, o Integration Services que auxilia na criao de tarefas agendadas para fazer esse tipo de processo ser executado automaticamente, assim que for feita a carga de dados nas tabelas multidimensionais. Com um trabalho feito como o descrito para atualizao dos cubos, tenho obtido excelentes tempo de atualizaes, perto de 30 segundos para atualizar cubos de cerca de 1 milho de registros.

e-magazine Codificando.net

Quanto a navegao no cubo, crie um interface e use o PivotTable do Excel, os usurios ficaro bem mais satisfeitos. Os recursos do Microsoft SQL Server Analysis Services so imensos e devem ser explorados, o objetivo desse artigo dar uma idia de como e por onde comear. Referncias [1] W.H.Inmon, J.D. Welch, Katherine L. Glassey (1999) - Gerenciando Data Warehouse Makron Books do Brasil [2] W.H.Inmon, Richard D. Hackathorn (1997) - Como usar o Data Warehouse

www.codificando.net

Abril / Maio 2009

38

Criando um Cubo Olap

e-magazine

Livraria e Editora Infobook [3] Carlos Barbieri (2001) - BI Business Intelligence - Modelagem & Tecnologia Axcel Books do Brasil [4] Rebeca M. Riordan (2001) SQL Server Programando Passo a Passo Makron Books do Brasil [5] Reed Jacobson, Stacia Misner e Hitachi Consulting (2006) - Microsoft SQL Server 2005 Analysis Services Passo a Passo Bookman [6] Microsoft SQL Server 2005 Manual do software. Microsoft Corporation [7] Ricardo Peralva Costa (2001) - Visual FoxPro Editora rica [8] Microsoft Visual FoxPro release 8.0 Manual do software. Microsoft Corporation

e-magazine Codificando.net
|

www.codificando.net

Abril / Maio 2009

39

e-magazine

Como se tornar um bom desenvolvedor Web?!


Conhea o que o mercado espera do profissional de desenvolvimento Web.
Por: Alexandre Tarifa

O mercado de desenvolvedores Web vem crescendo cada vez mais, na mesma escala que a tecnologia. Os investimentos de publicidade, o nmero usurios, etc no param de crescer. HTML e CSS conhecer MUITO os padres, desenvolver HTMLs com qualidade e CSS tem se tornado um ponto muito relevante, e hoje vejo muita deficincia neste ponto na maioria dos desenvolvedores SEO, performance, funcionar em todos navegadores tem se tornado obrigao em sistemas web. Javascript e JQuery por mais que o ASP.NET nos ajude muito em validaes de campos, controles completo, existem muitos pontos que podem ser facilmente feitos em Javascript e principalmente JQuery, tornando sua aplicao mais rpida e evitando chamadas desnecessrias ao servidor mas cuidado, Javascript demais pode ser ruim para SEO. AJAX no basta conhecer o UpdatePanel do Asp.Net, jogar tudo l dentro, a tela no pisca e ponto! Existe muito conceito por trs disso e no basta a tela no piscar, tem que ser performtica!!! E para fazer aplicaes rpidas com AJAX tem que conhecer muito bem o framework e tambm usar em locais necessrios somente.

ASP.NET, C#/VB.Net e conceitos de programao conhecer muito! O Asp.Net tem uma infra-estrutura de cache muito boa e de uma simplicidade absurda de implementao perca tempo pensando em cache, pode ser a revoluo de seu site. Banco de Dados manipulao de dados muito comum busca dado daqui, insere ali, etc so rotinas comuns temos que conhecer muito bem tambm. Hoje o mercado exige cada vez mais bons profissionais de web e os desenvolvedores ASP.Net devem se preparar para ocupar esse mercado e no somente de sistemas internos de empresas.

www.codificando.net

Abril / Maio 2009

40