View
247
Download
1
Category
Preview:
Citation preview
8/3/2019 codificando 09
1/40
8/3/2019 codificando 09
2/40
Fale com Editor
muito importante para a equipesaber a sua opinio sobre arevista, caso tenha alguma critica,sugesto, ou elogio entre emcontato.
Caso tenha interesse em publicarum artigo na revista envie o ttuloe um resumo do tema em formatoWord.
site@codificandomagazine.net
EDITORES
Alexandre TarifaDiego NogareEmerson FacunteSergio Gonalves
REVISOFernanda SallaiGiaccomo Sabino
MONTAGEM / FORMATAOMilton Carvalhaes
EDITORAO E DIAGRAMAOAdriano Almeida
COLABORADORESAnderson BermarDemetrio SilvaEdson Aparecido do NascimentoFbio CmaraIvan SampaioJuliana PradoJuliano SchimiguelRoni A. Marcello
Produzido por:
www.codificando.net
Edio 09 Nmero 09 Ano 03 2009
Sumrio
Demonstrao de como se faz para se animaruma sprite no XNA.
Por: Edson Aparecido do Nascimento
08 :. Tutorial XNA - Hello Word
O Objetivo deste artigo demonstrar autilizao de mashups dentro do contexto eadvento da Web 2.0.
Por: Roni A. Marcello / Juliano Schimiguel
22 :. Utilizao de Mashups comSilverlight
Neste artigo, abordaremos o SQL ServerAudit, que mais uma feature disponvel noSQL Server 2008 para a realizao deauditoria.
Por: Demetrio Silva
18 :. SQL Server Audit
Conceituao sobre metodologias geis eSCRUM.
Por: Fbio Cmara
13 :. Uma Metodologia gil Scrum
04 :. Acessando o MySql com Asp.net
Veja neste artigo como acessar com ASP.NETum banco MySql atravs da Data AccessLayer.
Por: Anderson Bermar / Juliano Schimiguel
Metodologias no desenvolvimento de softwaree o modo como elas evoluram no decorrerdos anos.
Por: Juliana Prado
29:. Evoluo da Metodologia doDesenvolvimento de Sistemas
Carga de um cubo OLAP utilizando o MicrosoftSQL Server 2005 Analysis Services.
Por: Ivan Sampaio / Juliano Schimiguel
33:. Criando um Cubo Olap
03:. Editorial 40:. .Close( )
8/3/2019 codificando 09
3/40
Diego Nogaresite@codificandomagazine.net
Depois de mais de um ano fazendo a revista da forma que conseguamos, finalmente montamos umaequipe profissional para a editorao! Atravs do Portal Codificando .Net ns convidamos todos osmembros da comunidade para participar, e aps os candidatos mostrarem interesse, ns selecionamosalguns 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 (MiltonFilho) e por um editor de diagramao e formatao (Adriano Almeida). Esta nova equipe mostrou umamaturidade e desempenho muito acima do que espervamos, tenho certeza que a nova revista ter umaaceitao e credibilidade muito mais forte do que tnhamos antes.
Muito obrigado por participarem e acreditarem nesta famlia.
Grande abrao,
Editorial
Edio 09 Nmero 09 Ano 03 2009
8/3/2019 codificando 09
4/40
www.codificando.net
e-mag
azineCodificand
o.net
e-magazine
Abril / Maio 2009 | 4444
Acessando o MySqlcom ASP.NET
Veja neste artigo como acessar com ASP.NET um
banco MySql atravs da Data Access Layer.
Neste artigo iremos apresentar como acessar comASP.NET um banco MySql atravs da DataAccess Layer, vamos utilizar tambm ocomponente chamado ObjectDataSource que serresponsvel em fazer a comunicao entre aInterface e a Data Access Layer, o artigo no irabordar a instalao do MySql, mas ir mostrarcomo criar o banco, tabela, stored procedure ecriar a camada de acesso a dados ou Data AccessLayer para acessarmos com .net, tudo de formarpida e de fcil acesso.
Ferramentas
Para esse artigo foi usado o Visual Studio 2005,MySql 5.1 e o connector para .net, uso tambmuma ferramenta free chamada HeidiSQL paracriao do banco, tabela e stored procedure.
Um pouco mais sobre Data
Access Layer DAL
A Data Access Layer ou camada de acesso adados, uma camada que tem por finalidadeacessar o banco de dados, deixando as consultasSQL diretamente no banco, e fazendo o acessoatravs de stored procedure, ela se comunica coma camada lgica ou Business Logic Layer(BLL),deixando o sistema mais especfico e com umamaior facilidade em manuteno e atualizao dosistema, pois uma camada no interferediretamente na outra, ou seja, em alguns casos,podemos atualizar uma regra de negcio sem terque atualizar a camada de acesso a dados e vice-
versa, e podemos reaproveitar as camadas paraqualquer tipo de aplicao seja ela para desktop,web ou mobile.
Vamos a PrticaCriando o banco de dados
O script abaixo a criao do banco de dados,tabela, incluso de registros e as storedprocedures. O script tambm apresenta algunscomandos SQL para insero na tabelaPRODUTO, voc pode usar qualquerferramenta que faz a criao do banco, tabela estored procedure no MySql.
CREATE DATABASE LOJA
USE LOJA;
CREATE TABLE IFNOT EXISTS PRODUTO
(
ID INTEGER PRIMARY KEYNOT
NULLAUTO_INCREMENT,DESCRICAO VARCHAR(30)NOT
NULL,
PRECO DOUBLE(6,2)
);
INSERT INTO PRODUTO (DESCRICAO,
PRECO) VALUES('TV PLASMA',1200.00);
INSERT INTO PRODUTO (DESCRICAO,
PRECO) VALUES('GELADEIRA',950.00);
INSERT INTO PRODUTO (DESCRICAO,
PRECO) VALUES('MICROONDAS',370.00);
INSERT INTO PRODUTO (DESCRICAO,
PRECO) VALUES('FERRO',150.00);
CREATE PROCEDURE SELECTPRODUTO()
SELECT*FROM PRODUTO;
Por: Anderson Bermar / Juliano Schimiguel
8/3/2019 codificando 09
5/40
www.codificando.net
e-mag
azineCodificand
o.net
e-magazine
Abril / Maio 2009 | 5555
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
//manespace para conexo com MySql
using MySql.Data.MySqlClient;
namespace DAL
{
publicclass Produtos
{
//string de conexo para o
banco MySql
publicstring 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);
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 dobanco.
Criando a DAL
Agora abra o Visual Studio 2005, e crie umprojeto do tipo Class Library conforme afigura 2, na linguagem C#, salve o projetoonde desejar.
Renomeie a classe Class1 para Produtos, eclique com o boto direito na pastaReferences e escolha a opo Add Referencefigura 3. Abrir uma caixa de dialogo, e naaba .net, localize a opo MySql.Data figura
4, selecione e clique em ok, a Solucion ficarconforme a figura 5.
O script 2 apresenta o cdigo da classeProdutos.
Acessando o MySql com ASP.NET.
Figura: 01
Figura: 02
Figura: 03
Figura: 04
8/3/2019 codificando 09
6/40
www.codificando.net
e-mag
azineCodificand
o.net
e-magazine
Abril / Maio 2009 | 6666
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
publicvoid 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();
}
}
}
Compile a aplicao em Build>Build Solutionou Ctrl + Schift + B.
Criando o WebSite
Depois de compilado o projeto DAL, noVisual Studio clique em File>Add>New WebSite.
Componente ID TextTextBox txtDescricao
TextBox txtPreco
Button btnEnviar Enviar
GridView GridProdutos
ObjectDataSource ObjectDataSource
Acessando o MySql com ASP.NET.
Figura: 05
Figura: 06
Na caixa de dialogo que abrir, escolha ASP.NETWeb Site, linguagem C#, File System, e escolha amesma pasta do projeto que foi salvo a DAL.
A figura 6 apresenta a pgina Default.aspx, que
a pgina onde vamos trabalhar, crie umasemelhante .
Aps criar a pgina, temos que referenciar a DALno projeto web, na aba Solution Explorer, cliquecom o boto direito em cima do projeto do website e escolha a opo Add Reference.
Na janela Add Reference, na aba Projects escolhaDAL conforme figura 7.
Figura: 07
8/3/2019 codificando 09
7/40
www.codificando.net
e-mag
azineCodificand
o.net
e-magazine
Abril / Maio 2009 | 7777
Acessando o MySql com ASP.NET.
Volte na pgina Default.aspx, no componenteObjectDataSource clique na Smart tag (setaque fica em cima do componente), e escolha aopo Configure Data Source. Ir aparecer umwizard, e na primeira tela em Choose your
business object selecione o Class Library DAL,a Class Library DAL j traz a classe Produtosautomaticamente.
Clique em Next, na prxima tela na aba Selectdefina o mtodo que criamos na classeProdutos, clique em finish.
Clique na Smart tag do GridView e emChoose Data Source escolha o Object Data
Source. Pronto j fizemos a conexo com obanco de dados.
D um duplo clique no boto enviar e digite ocdigo do script abaixo.
protectedvoid btnEnviar_Click
(object sender, EventArgs e)
{
//Criao do objeto da
classe DAL
DAL.Produtos produto = new
DAL.Produtos();
//Mtodo da storedprocedure
produto.Insert
(txtDescricao.Text.Trim(),
double.Parse(txtPreco.Text.Trim
()));
}
Compile o web site, e na aba solution Explorer,clique com o boto direito em cima do projetoweb e selecione a opo Set as StartUpProject , execute e teste a sua aplicao.
Concluso
Este artigo teve por finalidade mostrar comopodemos acessar com .net o MySql. Criamos asstored procedures para separar as consultas SQLda camada DAL, camada que faz a conexo como banco, e acessamos o banco de dados de duasformas, uma foi criando um objeto da classeProdutos e chamando o mtodo Insert, passandoos argumentos descrio e preo, e a outramaneira foi com o componente
ObjectDataSource que fez a comunicao entre ainterface e a camada de acesso a dados, umcomponente muito poderoso da verso 2.0 quefaz a comunicao com o GridView e a classeprodutos.
Figura: 08
Figura: 09
8/3/2019 codificando 09
8/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 8888
Tutorial XNA - Hello Word
Demonstrao de como se faz para se animar umasprite no XNA.
Por: Edson Aparecido do Nascimento
Estou aqui para demonstrar como se faz para seanimar uma sprite no XNA. Primeiro vamosdefinir o que uma sprite. Segundo a wikipdia(onde achei a melhor definio), uma sprite (dolatim spiritus, significando "duende", "fada") um objeto grfico bi ou tridimensional que semove numa tela sem deixar traos de suapassagem (como se fosse um "esprito").
Os sprites foram inventados originalmentecomo um mtodo rpido de animao de vriasimagens agrupadas numa tela, em jogos decomputador bidimensionais, usando hardware
especial. A medida que a performance doscomputadores melhorou, esta otimizaotornou-se desnecessria e o termo evoluiu parareferir-se especificamente s imagensbidimensionais que eram integradas numadeterminada cena, isto , figuras geradas porhardware ou software eram todas referenciadascomo sprites.
A medida que grficos tridimensionaistornaram-se mais comuns, o termo passou a
descrever uma tcnica elementar de simulaode imagens em 2.5D ou 3D que prescinde douso de renderizaes complexas.
Bom, vamos animao, primeiramente vamosabrir um novo projeto no XNA e dar a ele onome de Hello World. Na janela SolutionExplorer veremos que dentre os objetos criadosexistem dois arquivos de classe, um oProgram.cs no qual no iremos mexer, o outro
o Game1.cs no qual faremos o nosso cdigo.Assim que abrirmos o Game1.cs veremos queparte do cdigo j vem escrita para facilitarnosso entendimento.
Na primeira parte do cdigo veremos asbibliotecas que o XNA estar usando. Paraquem est acostumado com a linguagem C, otermo using do XNA o mesmo que o#include. Logo abaixo temos a nomenclaturado projeto definida pelo termo namespace.Depois temos a definio de uma classe do tipopublic public class Game1 :Microsoft.Xna.Framework.Game (esses doispontos colocados aps o nome da classe tem amesma 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 umavarivel graphics do tipoGraphicsDeviceManager, na qual iremosdeclarar as propriedades grficas da tela. Nasegunda linha declaramos uma varivel
spritebatch do tipo spritebatch. Aqui faremos aprimeira alterao, para facilitar o nossoentendimento alteramos o nome dessa varivelpara sb, deixando a linha assim:
SpriteBatch sb;
Agora vamos declarar as outras variveis a seremutilizadas, e isso que vamos fazer na linhaabaixo da declarao de SpriteBatch.Digitaremos as seguintes variveis:
Texture2D globo;int linha = 0;
int coluna = 0;
int largura, altura;
8/3/2019 codificando 09
9/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 9999
Double tempo;
GameTime tempojogo;
Seguindo no nosso projeto vemos que logo
abaixo existe a declarao de public game jestruturada, e abaixo temos a Initialize() ondeiremos comear a carregar nosso jogo. J temosdeclarado a linha base.Initialize() e em seguidavamos declarar o ttulo da janela, sua altura esua 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
Na sequncia temos o mdulo LoadContentonde carregaremos a imagem, l j existe linha:
spritebatch = new SpriteBatch
(GraphicsDevice);
A qual devemos lembrar de alterar o nome davarivel, pois o altermos no incio do programa,ento a linha fica assim:
sb = new SpriteBatch
(GraphicsDevice);
Mas, antes dessa linha devemos chamar nossafigura. Primeiramente vamos na SolutionExplorer e clicar com o boto direito em cimade content, no menu que se abre clique em adde depois em new folder. Nomearemos essapasta criada com o nome de Imagens. Depoisclicamos com o boto direito em cima da pastaImagens e no menu clicamos em add e existingitem, uma caixa de busca ser aberta e
selecionaremos a imagem AnimetedSprite.Igual a figua 01.
Assim nossa imagem ser anexada no projeto.Nela tambm devemos clicar com o botodireito e depois em properties, na janelaproperties deveremos verificar a propriedade
Asset Name, essa propriedade se refere quenome iremos instanciar a imagem parapodermos cham-la no projeto. Deixe comoanimatedsprite mesmo.
Agora sim podemos voltar ao cdigo. Antes desb = new SpriteBatch(GraphicsDevice)colocaremos o cdigo:
globo = Content.Load
(@"Imagens\animatedsprite");
largura = (globo.Width / 4);altura = (globo.Height / 4);
Nesse cdigo, em sua primeira linha, estamoscarregando a imagem, na segunda linhadefinimos que existe dentro da sprite 4imagens de largura e 4 de altura.
Em seguida vemos o mtodo UnloadContent()no qual no faremos nenhuma alterao, poisele no ser utilizado nesse projeto.
Aps ele temos o mtodo Update(GameTimegameTime) no qual j existe uma expresso do
tipo if, essa expresso no ter utilidade neseprojeto, ento podemos apag-la. No lugardelas vamos escrever o seguinte:
Figura: 01
Tutorial XNA - Hello Word
8/3/2019 codificando 09
10/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 10101010
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;
}
Nessas linhas declaramos que a varivelgameTime do mtodo update vai se tornar avarivel tempojogo que criamos no incio.Definimos dentro do mtodo if o tempo de150 milissegundos para a mudana de quadroda imagem. Lendo o que est escrito seria algoassim:
se o tempo for maior que 150
milissegundosento
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.
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 aparecerna tela. Na primeira linha deles temos:
graphics.GraphicsDevice.Clear
(Color.CornflowerBlue);
Essa linha serve para definir a cor de fundo datela, onde est CornflowerBlue pode-se colocar
qualquer cor que lhe interesse, para isso bastaapagar o nome de CornflowerBlue e digitaroutra cor no lugar, no nosso caso utilizaremoso preto (Black). Assim nossa linha de cdigo
dever ficar assim:
graphics.GraphicsDevice.Clear
(Color.Black);
Agora vamos dar sequencia ao cdigo parainicializar 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();
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 sendoexecutado. Dever aparecer uma pequena telacom fundo preto e um globo com os dizeresHello World girando.
Para melhor entendimento abaixo deixo ocdigo 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;
Tutorial XNA - Hello Word
8/3/2019 codificando 09
11/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 11111111
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
(@"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;
}
base.Update(gameTime);
}
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 seintercalam as imagens mostrando o globogirando e a palavra Hello World girandotambm:
Tutorial XNA - Hello Word
Figura: 02
8/3/2019 codificando 09
12/40
8/3/2019 codificando 09
13/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 13131313
Uma Metodologia gil
ScrumConceituao sobre metodologias geis e SCRUM.Por: Fbio Cmara
Introduo
Das muitas definies sobre agilidade que podemos
encontrar em livros, revistas e na internet, uma dasque mais gosto : _ Agilidade a habilidade de criare responder a mudanas com respeito ao resultadofinanceiro do projeto em um turbulento ambiente denegcios. Agilidade a habilidade de balancearflexibilidade com estabilidade. (Highsmith, Jim.Agile Project Management, 2002)
Agilidade uma proposta de desenvolver projetoscom uma estrutura e organizao suficientes.Muita estrutura e organizao reduz a criatividade e
a flexibilidade de suportar mudanas, poucaestrutura e organizao permeia a ineficincia eresulta em esforos maiores que os necessrios.
A diferena entre caos e agilidade pode ser verificadanos produtos resultantes. Considerando o mesmocenrio turbulento de negcios, nas equipes queconvivem com o caos verificamos atrasos constantes,baixissma qualidade dos sistemas, problemas comestimativas e estouro de oramento. Nas equipes que
utilizam-se de mtodos geis percebemos entregasparciais constantes, interao com clientes parareviso de estimativas e oramento conjuntamentecom antecedncia salutar ao projeto eprincipalmente dois pontos fundamentais:compromisso com a satisfao do cliente eresponsabilidade com o resultado financeiro doprojeto.
Empresas procurammtodos geis
As metodologias geis esto disponveisdesde a dcada passada, porm foi no anode 2001 que houve a formalizao com aassinatura do manifesto gil (Manifestofor Agile Software Development-http://agilemanifesto.org/).
Inicialmente houve uma desconfiana geralpor parte da indstria de software,certamente impulsionada pelas diferenasaos mtodos tradicionais e as questes dasdificuldades de quebra de paradigmas porparte das pessoas. Nesta poca tornou-sebastante famosa a metodologia XP(eXtreme Programming), pois propunhasem hipocrisia uma srie de mtodospolmicos, muitos deles questionveis athoje como por exemplo a programao empares e o cliente ao lado do desenvolvedordurante o projeto.
Lentamente, a indstria de softwareimpulsionada pela necessidade de obterresultados diferentes dos obtidos pelosmtodos tradicionais, verificou quepessoas vlidas estavam propondomtodos srios e factveis. Desta forma,determinadas prticas geis comearam aser utilizadas em projetos de software sema agressividade pela adoo plena de uma
O autor entende como cenrio turbulento de negcios as demandas oriundas de empresas no qual a necessidadede prazos rpidos e a competitividade so predominantes como regra de sobrevivncia no seu prprio mercadode 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.
8/3/2019 codificando 09
14/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 14141414
metodologia gil.
Alguns destes mtodos, compreendidos deforma inadequada, causavam uma dificuldade
de percepo dos resultados. Um timoexemplo disto a iterao. Iterao (iteration),que em traduo simples quer dizer repetio, confundido com interao oucompreendido como processos repetveis. Naverdadeira definio gil, iterao est maispara processos confiveis do que processosrepetveis. Na lingua inglesa tambmverificamos este desentendimento quandoestudamos em textos geis as palavras
repeatable e reliable.A confuso entre confivel e repetvel aconteceporque muitos gestores de empresas gostamde formalizar processos muito estruturados eprecisos (repetveis) no lugar de formalizarprocessos suficientemente estruturados eflexveis (confiveis). Processos repetveisfocam na entrada das atividades, processosconfiveis focam no resultado das atividades.
Outros mtodos, por oferecerem propostasmais simples de compreenso e apurao deresultado, comearam a chamar a atenopositivamente da indstria de software. Face aisso, iniciou-se um movimento liderado pelasuniversidades no Brasil (hoje sou consultor demetodologias geis da USP) que objetivaesclarecer os mtodos e gerar contedosprticos que facilitem a implantao de taispropostas metodolgicas.
Certificadas de que estes mtodos funcionam,as empresas de software comearam a estudaruma proposta de metodologia classificadacomo gil, que prope novos mtodos emsubstituio aos mtodos praticadostradicionalmente. Este critrio de escolha, queem minha opinio est suficientementemaduro, buscou primeiramente resolver asquestes acerca da organizao, distribuio econtrole das atividades de um projeto de
software. Eis a explicao da escolha dametodologia SCRUM pelo mercado deempresas desenvolvedoras de software.
SCRUM, muito simples de usar
A metodologia SCRUM est entrando namoda aqui no Brasil, aps j haverconquistados inmeras empresas da indstriade software na Amrica do Norte.
Particularmente, eu considero o SCRUMuma proposta extremamente prtica ehonesta. Defino por prtica neste contexto a
facilidade de compreenso e aplicao emnosso ambiente de desenvolvimento desoftware. Defino por honesta a fidelidadeentre a proposta do mtodo e o resultado quepodemos obter aps aplic-lo.
SCRUM, nome utilizado inicialmente pelos japoneses Hirotaka Takeuchi e IkujiroNonaka, descrevia um tipo de processo dedesenvolvimento de produto utilizado no
Japo.Tambm o nome SCRUM foi escolhido
pela similaridade entre o jogo de Rugby e otipo de desenvolvimento de produtocomentado. Ambos so adaptativos, rpidos epromovem a auto-organizao.
Para explicar SCRUM, utilizarei umaestratgia que foi usada pelo Ken Schwaberem seu livro chamado Agile ProjectDevelopment with SCRUM. Na minhaleitura, este o melhor livro disponvellanado at a presente data.
Iniciando um projeto, h uma formalizao detodas as coisas que se pretende fazer ou que seprecisar construir no projeto. Cada item destalista representa um requisito funcional, ourequisito no funcional, ou questo detecnologia / infra-estrutura. Esta lista denominada Product Backlog.
Podemos traduzir Product Backlog como uma
Uma Metodologia gil - Scrum
Ken Schwaber junto com Jeff Sutherland foram os formalizadores das primeiras verses de SCRUM comometodologia para desenvolvimento de projetos de software. Ken est trabalhando neste projeto desde o incio dosanos 90.
8/3/2019 codificando 09
15/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 15151515
lista de todos os requisitos de um produtopriorizados, ou, em outras palavras, qualquercoisa que represente um trabalho que precisaser feito para o produto. Os itens com maior
prioridade nesta lista so os requisitos maisdesejados pelo produto. No projeto real, oProduct Backlog nunca finalizado. Existeuma natural evoluo e maturidade dosrequisitos nesta lista. Requisitos novos podemaparecer, requisitos existentes podem perderprioridade e podem at serem eliminados.Apesar de se permitir que reas usuriasmanifestem seus pedidos nesta lista, somenteo Product Owner pode priorizar o Backlog.
O Product Owner possui a responsabilidadede definir a ordem que os requisitos seroproduzidos pela equipe de desenvolvimento.Esta equipe deve ser pequena, multi-disciplinar e capaz de desenvolver todos osrequisitos. Esta equipe recebe o nome deSCRUM Teams. A preparao dos trabalhos denominada SPRINT Planning.
SPRINT Planning composta dos seguintes
ingredientes: Product Backlog, a capacidadede desenvolvimento da equipe, as condies eexigncias do negcio, as caractersticas datecnologia a ser usada e o comprometimentoem entregar produtos executveisincrementais. A mistura so revises,administrao e organizao. Os resultadosso SPRINT Goal e SPRINT.
O SCRUM Team deve desenvolver os itensseparados pelo Product Owner em umdeterminado prazo previamente combinado.Este prazo definido como Time Box e o
trabalho de desenvolver os itens separadosneste time box denominado SPRINT. Estesitens separados do Product Backlog fazemparte de uma nova lista. Esta lista, chamadaSPRINT Backlog, ser de totalresponsabilidade do SCRUM Team quedever mant-la e organiz-la de tal forma aatender os objetivos do especfico SPRINT.
permitido ter mais de um SCRUM Team
trabalhando no mesmo Product Backlog, porisso os requisitos so devidamente separadosem SPRINT Backlog distintos por equipe.Uma idia deste ciclo verificada na figura 01.A liderana destas equipes exercida por umpapel denominado SCRUM Master. OSCRUM Master um facilitador da gestodos requisitos e direcionador da gesto dasequipes. Este papel deve garantir a corretautilizao das prticas de SCRUM, deveajudar a equipe a tomar decises e apoiar a
equipe para adquirir os recursos necessriospara o desenvolvimento do produto.
Este mtodo de liderana exercido atravs de3 recorrentes tipos de reunio: SCRUM DailyMeeting, SPRINT Review e Retrospective.Comeando pelo SPRINT Review que areunio tpica de final de SPRINT (algunsSCRUM Team tambm a fazem no meio do
Figura: 01
Uma Metodologia gil - Scrum
8/3/2019 codificando 09
16/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 16161616
SPRINT) para validar o produto executvelque a equipe conseguiu incrementar.
Explicando a Retrospective, uma reunioque tambm acontece ao final do SPRINTcom o objetivo de fortalecer a unidade de aoda equipe. Trs perguntas devero serrespondidas com seriedade por todos osmembros do SCRUM Team:
1. O que voc fez e gostou neste SPRINT?2. O que voc fez e no gostou neste
SPRINT?
3. O que voc vai fazer diferente noprximo SPRINT?
O desenvolvimento de projetos de software um desafio constante, uma atividadecomplexa. Todo processo complexo exige umaintensa comunicao entre todos os membrosdo projeto. SCRUM Daily Meeting aresposta para promover a comunicao daequipe.
Todos os dias, obrigatoriamente, todo oSCRUM Team ir se reunir por 15 minutosaproximadamente para responder a 3importantes perguntas. Sugerimos que estreunio seja de p, pois temos verificado bonsresultados 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
artigo, temos observado que a utilizao deKANBAN (ver figura abaixo) ajuda amaximizar o comprometimento da equipe e acomunicao de todos os comprometidos e
envolvidos com o projeto.
Figura 2- Nossa implementao deKANBAN na empresa REPOM dirigida peloSCRUM Master Marcelo Martins. As coresamarela e laranja representam diferentescomplexidades das atividades. A cor pinkrepresenta atividades no planejadas noSPRINT que foram includas por motivo defora maior.
Por se tratar de um extenso assunto,abordaremos detalhes explicativos sobre o que KANBAN e como se utiliza em projetos desoftware no nosso prximo artigo tcnico.
Consideraes Finais
Ns, praticantes das metodologias geis,acreditamos que todos os projetos sodiferentes. A tecnologia destes projetos so
diferentes. As pessoas, os requisitos idem.Ns no queremos ser indivduos crticos doque existe h muito tempo na engenharia desoftware, ns queremos sugerir, proporcionare fundamentar alternativas novas para resolverproblemas antigos.
Na grande maioria das consultorias queministro sob a titulao de coaching parafins de crescimento dos resultados qualitativose produtivos de equipes de desenvolvimentode software, encontro pessoas que utilizando-
Para saber mais recomendamos oslivros:
Agile Project Management by JimHighsmith.
Agile Software Development with SCRUMby Ken Schwaber e Mike Beedle.
Agile Project Management with SCRUM byKen Schwaber.
Treinamento MSF Agile + SCRUM + AgileMethods em http://www.fcamara.com.br
Uma Metodologia gil - Scrum
8/3/2019 codificando 09
17/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 17171717
se de mtodos tradicionais ou simplesmentede improviso dirio (tambm denominadoausncia de mtodos) revelam-me umaestranha e frustrante sensao A Sndrome
do Trabalho Vazio.
A STV a sensao que ocorre depois de umintenso dia de trabalho repleto deaborrecimentos e de atividades urgentes,quando percebe-se que no final todas asatividades planejadas para aquele dia nopuderam ser implementadas. umaconstatao que se uma espcie de marionetedo tempo, da empresa e dos clientes.
A utilizao de mtodos geis, com aadequao mental conforme os princpiosestabelecidos pelas metodologias geis,
Uma Metodologia gil - Scrum
mudaram minha vida profissional perante ocenrio anteriormente descrito. Eu consigofazer atividades planejadas, consigo priorizaratividades importantes e tenho um pequeno
ndice de atividades urgentes no meu dia-a-dia. Eu me sinto protagonista do meu dia.
As metodologias geis so uma positivaproposta para as empresas desgastadas com osresultados proporcionados por waterfallapproach to software development ou pelaausncia de mtodos. Para iniciantes emmetodologias geis, eu recomendo o SCRUM.Para praticantes de mtodos geis que no
conhecem o SCRUM, permitam-se mais umaevoluo.
Sucesso em seus projetos.
8/3/2019 codificando 09
18/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 18181818
SQL Server AuditNeste artigo, abordaremos o SQL Server Audit,que mais uma feature disponvel no SQL Server2008 para a realizao de auditoria.
Por: Demetrio Silva
A verso do SQL Server 2008 trouxe diversasnovas features que h muito tempo acomunidade aguardava. Neste artigo,abordaremos a SQL Server Audit, que maisuma feature disponvel no SQL Server 2008para a realizao de auditoria.
O que auditoria?
uma forma de registrar dados das aesrealizadas pelos usurios, como por exemplo:
Alteraes no esquema do banco dedados;
Alteraes de logins; Consulta, alterao, excluso e incluso
de dados.
Auditoria muito importante para sistemasque trabalham com dados confidenciais oucrticos, visto que ela visa controlar data, hora,usurio e demais informaes das aesrealizadas.
Por lei, sistemas da rea financeira e de sade,precisam realizar auditoria das aes realizadas.
Enfim, uma auditoria pode nos ajudar arastrear uma gama enorme de informaessobre as aes realizadas em um sistema comoum todo.
O que o SQL Server Audit?
Um mecanismo que permite a realizao de
auditoria de diversas aes a nvel instncia e dedatabase, aes essas como:
select, insert, update e delete emdeterminadas tabelas ou esquemas;
logins bem ou mal sucedidos; backup e restore; dentre outros.
Para uma lista detalhada sobre operaes quepodem ser auditadas, a nvel de instncia,database e auditoria, consulte audit-level auditactions [SQL Server] no BOL.
Como funciona?
O SQL Server Audit usa a infraestrutura do
SQL Server Extended Events introduzida noSQL Server 2008. Os Extended Eventsregistram todas as aes auditveis ocorridas noservidor.
Para mais informaes consulte ExtendedEvents no BOL.
Os dados auditados podem ser gravados nosseguintes locais:
Nota: O processo de gravao dos dados daauditoria pode trabalhar de duas formas:
1. Sncrona: Os dados auditados so gravados antesde terminar uma transao ou ao;
2. Assncrona: Os dados auditados so gravadosaps o trmino de uma transao ou ao.
O parmetro QUEUE_DELAY, que serdemonstrado adiante, define a forma de gravaodos dados da auditoria. Caso o valor do parmetroseja zero a auditoria ser sncrona, do contrrio, serassncrona.
8/3/2019 codificando 09
19/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 19191919
Application Event Log; File System; Security Event Log.
As aes auditadas, como citadoanteriormente, podem ser a nvel de instnciaou de database. Neste artigo, iremos mostrarcomo auditar aes nos dois nveis e tambmcomo recuperar os dados auditados.
Antes de iniciarmos a parte prtica, iremosfalar sobre alguns objetos que fazem parte doSQL Server Audit. So eles:
1 - Server Audit
um Container para os audit specifications.Ele est associado instncia, visto que, SQLServer Audit no trabalha com mltiplasinstncias. no Server Audit que ficamguardadas informaes sobre onde serogravados os arquivos de auditoria, o tamanhomximo de cada arquivo, se o modo deauditoria ser Sncrono ou Assncrono, dentreoutros.
2 - Audit Specifications
Determinam quais aes sero auditadas.Esto divididos em dois tipos:
2.1 Server Audit Specifications: determinaas aes a serem auditadas para uma instncia,portanto, existe somente no banco master. Eleusa grupos de aes para determinar quaisaes devero ser auditadas. Aplica-se quandonecessitamos realizar auditoria de aes a nvelde servidor, como por exemplo, um login bemsucedido.
Exemplo:
TRACE_CHANGE_GROUP um grupode aes que audita as seguintes aes:
Starting a trace;
Stopping a trace; Altering a trace; Enabling a C2 audit;
Disabling a C2 audit.
2.2 Database Audit Specifications: emalguns cenrios possumos instncias com
diversos databases funcionando, no entanto,necessitamos auditar apenas um ou algunsdatabases nesta instncia. Nestes casos, aoinvs de usar a auditoria a nvel de servidor( instncia), podemos us-la a nvel dedatabase.
Diferente do Server Audit Specification, ques trabalha com grupos de aes, o DatabaseAudit Specification nos permite, tanto auditargrupos de aes, como tambm apenasalgumas aes de determinados grupos.
Por exemplo: Para auditar selects apenas emum database chamado DB1 atravs do ServerAudit Specification, deveramos usar o grupode aes chamado SCHEMA_OBJECT_ACCESS_GROUP.
No entanto, este grupo iria auditar nosomente selects mas tambm inserts, updates e
todas as outras aes contidas neste grupo. Aauditoria tambm seria feita para essas aesem todos os demais databases desta instncia.Isso poderia gerar uma carga extradesnecessria nos demais databases, visto que,a necessidade de auditoria era apenas para odatabase DB1.
Para contornar este problema, podemos usaro Database Audit Specification e auditarmosapenas as aes de SELECT no database DB1
Diferente do Server Audit Specifications,usando o Database Audit Specifications,podemos auditar as aes individuais e noapenas atravs de grupos de ao.
2.3 Database e Server Audit Specifications:so grupos de ao no nvel de auditoria, ouseja, possvel auditar a criao de um ServerAudit ou Server Audit Specification porexemplo. Sendo auditar as aes no processode auditoria a nvel de database e servidor.
SQL Server Audit
8/3/2019 codificando 09
20/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 20202020
Prtica
1 - Criando um Server Audit
O comando abaixo cria um objeto ServerAudit Assncrono, chamado srvAudit quearmazenar os dados auditados em um FILESYSTEM, com tamanho mximo de 10 MBpor arquivo num total de 100 arquivos. Apscriado, necessrio alterar seu state para ON.
USEMASTER;
GO
CREATESERVER AUDIT srvAudit
TOFILE(
FILEPATH ='c:\',
MAXSIZE = 10MB,
MAX_ROLLOVER_FILES = 100,
RESERVE_DISK_SPACE =ON
)
WITH
(
QUEUE_DELAY = 1000,--caso o
valor fosse 0 a forma de gravao
seria sncrona
ON_FAILURE =CONTINUE,AUDIT_GUID ='0D54EF3D-9020-
4AE7-A0A3-31D9D43ACAA4'
)
GO
ALTERSERVER AUDIT srvAudit
WITH (STATE=ON);
2 Criando um Server AuditSpecification
O comando abaixo cria um Server AuditSpecification, no container srvAudit queaudita falhas de Login.
USEMASTER
GO
CREATESERVER AUDIT SPECIFICATION
srvAuditSpecification
FORSERVER AUDIT srvAudit
ADD ( FAILED_LOGIN_GROUP )
WITH (STATE=ON)
Mas, suponhamos que aps criar osrvAuditSpecification acima, fosse necessrioadicionar o grupo de aesSUCCESSFUL_LOGIN_GROUP ( loginsbem sucedidos ).
Antes de adicionar o novo grupo aosrvAuditSpecification, devemos setar seu statecomo OFF.
O seguinte script realiza este procedimento:
USEMASTER
GO
ALTERSERVER AUDIT SPECIFICATION
srvAuditSpecification
WITH (STATE=OFF)
GO
ALTERSERVER AUDIT SPECIFICATION
srvAuditSpecification
ADD (SUCCESSFUL_LOGIN_GROUP )
WITH (STATE=ON)
E, por fim, caso fosse necessrio dropar, por
FILEPATH Pasta onde sero gravados osarquivos de dados daauditoria.
MAXSIZE Tamanho mximo de cada
arquivo de auditoria.
MAX_ROLLOVER_FILES
Quantidade de arquivos quepodem ser criados. Para onosso exemplo, sero criados100 arquivos de 10MB cada,sendo possvel oarmazenamento de 1GB ( 10arquivos X 100 MB ) de dadosde auditoria.
RESERVE_DISK_SPACE
Se necessrio pr-alocarespao no disco. Este espao igual ao valor do parmetroMAXSIZE. Somente deve ser
setado como ON quando ovalor de MAXSIZE fordiferente de UNLIMITED.
QUEUE_DELAY
Este valor especifica o tempode gravao dos dados. Casoseja passado o valor zero, omodo de auditoria passa a serSncrona.
ON_FAILURE Indica se a instncia serderrubada ou continuar emcaso de falha.
AUDIT_GUID Para dar suporte em cenriosde Espelhamento, o SQL
Server Audit precisa de umGUID. Ele no pode seralterado aps criada aauditoria.
Descrio dos parmetros
SQL Server Audit
8/3/2019 codificando 09
21/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 21212121
exemplo, o grupo FAILED_LOGIN_GROUP:
USEMASTER
GO
ALTERSERVER AUDIT SPECIFICATION
srvAuditSpecification
WITH (STATE=OFF)
GO
ALTERSERVER AUDIT SPECIFICATION
srvAuditSpecification
DROP (FAILED_LOGIN_GROUP )
WITH (STATE=ON)
3 Criando um Database Audit
Specification
Iremos mostrar agora como criar um DatabaseAudit Specification para auditar selects para atabela Person.Address e selects no SchemaHumanResources.
USE AdventureWorks
GO
CREATEDATABASE AUDIT SPECIFICATION
dasSelectFORSERVER AUDIT srvAudit
ADD (SELECTON Person.AddressBY
PUBLIC),
ADD (SELECTON
SCHEMA::HumanResources BYPUBLIC)
WITH (STATE=ON)
GO
Visualizando os dados auditados
Por fim, para visualizarmos os dados gerados,que no nosso caso esto gravados em arquivo,existem duas formas:
1. Usando o SSMS: em \Security\Audits, clicando com o botodireito e ento View Audit Logs.
2. Usando a funo de sistema fn_Get_Audit_file: com esta funo, podemosvisualizar os dados auditados de apenasum arquivo ou de todo um diretrio.
Exemplo:
SELECTSTATEMENTAS comando,*FROM
SYS.fn_Get_Audit_file('c:\*',
DEFAULT,DEFAULT)
ORDERBY event_time DESC
Esta funo retorna uma tabela contendoinformaes sobre as aes auditadas. Maisinformaes sobre o contedo de cada colunapodem ser vistas no BOL [fn_Get_Audit_file].
Vale lembrar que, como a auditoria podetrabalhar de forma sncrona e assncrona, osdados auditados podem no estar gravados nomomento do select, isso vai depender doparmetro QUEUE_DELAY configurado na
criao do Server Audit.
Concluso
SQL Server Audit uma nova feature do SQLServer 2008, que comparada com outrosmecanismos, como C2 Audit, SQL Trace,Event Notifications e DDL Triggers, possuiuma enorme flexibilidade e facilidade, alm degerar um menor overhead que os outroscitados.
SQL Server Audit
8/3/2019 codificando 09
22/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 22222222
Utilizao de Mashups com
SilverlightO Objetivo deste artigo demonstrar a utilizao demashups dentro do contexto e advento da Web 2.0.
Por: Roni A. Marcello / Juliano Schimiguel
Resumo
Os mashups ganharam aceitao nos ltimosanos, impulsionados pela Web 2.0.Inicialmente, os mashups adotaram dados defontes como Craigslist (http://www.craigslist.org), combinando-os comservios de mapeamento ou fotografia, paracriar visualizaes dos dados (por exemplo,http://housingmaps.com). Muitos dessesprimeiros mashups tinham o consumidor como
objetivo mas, em anos recentes, a empresatambm comeou a se interessar e aceitar osmashups corporativos. As organizaescomeam a perceber que podem colocar seusservios bem definidos para produzir bitsdistintos de lgica do negcio com outrosservios existentes, internos ou externos organizao, para fornecer vises novas einteressantes dos dados.
1. Introduo
O Objetivo deste artigo demonstrar autilizao de mashups dentro do contexto eadvento da Web 2.0, e.g. [WEB2.0 2008] ,segunda gerao de comunidades e serviosbaseados na plataforma Web, como wikis,aplicaes baseadas em folksonomia e redessociais , juntamente com a utilizao do pluginde desenvolvimento para a plataforma .NET;Microsoft Silverlight, e.g. [MSDN 2008], que
um plug-in para vrios navegadores, vriasplataformas e vrios dispositivos, destinado aoferecer a prxima gerao de experincias demdia baseadas em .NET framework para
desenvolvimento Web, e.g. [MSDN 2008] ,
alm de aplicativos interativos e sofisticadospara a Web .
2. Conceituao sobre Mashups
2.1 Definio
Mashup, e.g. [MSDN 2008], uma tcnicapara a construo de aplicativos que combinadados de vrias fontes para criar uma
experincia integrada. Atualmente, h muitosmashups hospedados em sites da Internet queoferecem representaes visuais de dadosabertos ao pblico.
2.2 Histrico
Na medida em que as tcnicas para a criao demashups amadureceram, comeamos a ver nasempresas a construo de modelos do negciobaseados nesta tecnologia. No mercado
imobilirio norte-americano, Redfin (http://www.redfin. com) e Zillow (http://www.zillow.com) utilizam grandes volumes dedados imobilirios, pblicos e privados, (defontes como autarquias de registro municipais eMultiple Listing Service) combinados comservios internos de "valor agregado", cujoresultado apresentado ao usurio em ummapa (utilizando o Virtual Earth da Microsoft eo Google Maps, respectivamente). H muitosoutros tipos de informaes que podem seracrescentadas a um site do setor imobilirio:outras listagens similares, informaes sobreescolas e hospitais locais, ndices recentes de
8/3/2019 codificando 09
23/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 23232323
criminalidade, classificados para colocaes detrabalho e muito mais.
2.3 Arquitetura de um mashupprototpico
Embora haja grande variao na IU e nasfontes de dados de muitos mashups, aindaassim podemos derivar padres arquiteturaiscomuns, compartilhados por todos. Porexemplo, todos os mashups so de natureza
Restful (obedecem aos princpios do protocolode transferncia de estado representacional).A Figura 1 ilustra um processamentoarquitetural tpico.
2.3.1 Dados
Dados agregados e apresentados ao usurioso o principal elemento de qualquer mashup.Embora o diagrama acima descreva a fonte dedados como um banco de dados, parautilizao do conceito no necessrio autilizao deste recurso no local, nem para oaplicativo mashup nem para o cliente. Osdados podem vir estritamente dos WebServices serializados para XML ou JSON(este o padro mais comum em mashupsbaseados em Internet). Existem compensaesarquiteturais a serem feitas, doarmazenamento de dados primrios no localao acesso aos dados feito a cada solicitao. Na
medida em que os aplicativos mashups deixamde ser baseados em Internet para sereminternos empresa, tendem a depender menos
dos locais externos de armazenamento dedados.
2.3.2 "Feeds" RSS
O uso de "feeds" RSS (Really SimpleSyndication) uma fonte comum de dadosprimrios ou suplementares . Os "feeds" RSSso fceis de serem consumidos pois sodocumentos XML e muitas bibliotecasexistem para manipular esses "feeds". Aextensibilidade do RSS tambm bastanteconhecida, como demonstra a quantidade deextenses em uso atualmente, como a adiode vnculos aos "feeds", informaes delocalizao e licenciamento da CreativeCommons.
2.3.4 Web Services
tambm comum incluir chamadas paraWeb Services . fcil ver Web Servicesbaseados em WSDL e outros, baseados emREST, com alguns servios expondo os doisestilos. Os Web Services podem ser usados
para oferecer dados adicionais ou transformaros dados submetidos ao aplicativo. Para ummashup baseado em mapa, os dados s podemconter endereos de ruas e uma chamada paraWeb Service baseado em WSDL ou RESTpode ser feita para converter o endereo de ruaem uma coordenada longitudinal/latitudinalpara o mapa.
2.4 Servios da plataforma
A Figura 2 representa uma classe especial deservios, usadas para criar mashups. Estamoschamando estes servios de plataforma porquefornecem funcionalidade alm do modelotpico solicitao/resposta dos Web Servicestradicionais. Um exemplo tpico disso omapeamento de servios fornecido peloVirtual Earth. Inclui uma lista completa decapacidades de processamento dos dois lados,cliente e servidor, assim como "servios nanuvem". Estamos presenciando o surgimentode servios de bloco de construo baseadosna nuvem que comeam a criar valor. Porexemplo, o servio Amazon S3 oferece
Utilizao de Mashups com Silverlight
8/3/2019 codificando 09
24/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 24242424
armazenamento "na nuvem": facilita aexposio de todos os dados estticos pormeio de upload para provedor dearmazenamento hospedado. O BizTalk
Services da Microsoft uma plataforma deservios que oferece uma capacidade diferente:transmite comunicaes da Internet por meiode um firewall corporativo e, assim, expeservios internos para o consumo de parceirosde negcio ou terceiros que constroem osprprios mashups corporativos.Comunicaes transmitidas como fornecidaspelo BizTalk Services tambm um serviotil mesmo dentro de uma nica empresa,
com muitas unidades de negcio ou cominmeros segmentos de rede. Umatransmisso de comunicaes baseada emInternet pode eliminar a topologia de redefsica como um obstculo s comunicaes.
2.5 Aplicativos
Pense no aplicativo mashup como umacombinao de servios de camadaintermediria e de lgica leve do negcio. Paraaplicativos baseados na Internet, suacodificao usualmente escrita utilizandotecnologias web (como PHP ou ASP. NET),mas estamos comeando a ver a demarcaoentre o processamento do servidor e aindefinio do aplicativo cliente, com o
surgimento das Rich Internet Applications(RIAs). As RIAs so aplicativos executadosno navegador com funcionalidade rica, similar
quela de muitos aplicativos de desktop.Tipicamente, no exigem uma instalao dolado do cliente, alm de um plugin genrico,como o Adobe Flash ou Microsoft Silverlight.
2.6 Aplicativo cliente
O mashup distribudo e apresentado aousurio como aplicativo cliente. Para mashupspblicos de Internet, o aplicativo cliente maiscomum um navegador web que recebeHTML e JavaScript distribudos de umservidor web sobre HTTP. Contudo,comeamos a ver os mesmos sendodistribudos tambm com plataformas RIA.Neste modelo, o cliente pode fornecer maisriqueza visual e at algum processamento.
2.7 Direo futura dos mashups
Nas primeiras verses , grande parte daimplementao era muito ente diante edemorada. Muitos deles usavam oprocessamento do lado do servidor (quasesempre com PHP ou PERL) e o cansativo
scripting do lado do cliente, na forma deJavaScript, para criar a experincia de mashup.Era comum para a pessoa que os criava criarcdigo personalizado para analisar osconjuntos de retorno XML que recebiam dasrespectivas fontes de dados.
Na medida em que o tempo passou e oprocesso de desenvolvimento amadureceu,uma boa parte do trabalho ente diante decodificao foi substituda por frameworks e
melhores padres de codificao. Os scriptspersonalizados no lado do servidorcomearam a ser substitudos por bibliotecaspadronizadas que automaticamente geram onecessrio script do lado do cliente.Presenciamos tambm a padronizao dosformatos de mensagens. Um exemplo disso aextenso GeoRSS, para o padro RSS, quepermite especificar a longitude e a latitudecorrelatas dos itens do "feed". Os trsprincipais provedores de servio demapeamento (Google, Microsoft e Yahoo) socompatveis com GeoRSS e isso significa queos mashups com essa extenso RSS
Utilizao de Mashups com Silverlight
8/3/2019 codificando 09
25/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 25252525
praticamente no exigem codificao.
Por algum tempo a criao de mashups foidomnio exclusivo do desenvolvedor, mas
existe um movimento para colocar ahabilidade de cri-los diretamente nas mosdo cliente final. Como os frameworks para suacriao tornaram-se cada vez mais simples deusar e os formatos de mensagens tornam-semais padronizados, o prximo passo lgicoser o de construir ferramentas que possamcriar mashups. Algumas dessas ferramentassero destinadas ao consumidor final. Pipes daYahoo e Popfly da Microsoft so exemplos de
frameworks e ferramentas que permitem aosusurios criar seus prprios mashups.
Observamos um crescimento na importnciado esquema comum e dos meta dados nodesenvolvimento. Atualmente, j observamoso surgimento de outros esquemas-padro,como a linguagem de marcao de keyhole(KML - Keyhole Markup Language) paradescrever dados geoespaciais. Ainda maisinteressante ser o Microformats, framework
de grande potencial, destinado distribuiode significado semntico, que pode serfacilmente lido por software do tipo mashup.
2.8 Mashups na empresa
Imagine-se arquiteto de aplicativos de umsistema de call center que recebe chamadassobre assistncia tcnica de garantia e peassobressalentes. Utilizando o nmero detelefone do cliente, poderamos exibir seus
registros incluindo um histrico de compras.Esse interessante aplicativo j est implantadoem muitas centrais de chamadas. Mas se almde pesquisar as informaes do cliente,pudssemos associar o nmero do telefone emum mapa, utilizando um servio disponvel aopblico e tambm exibir uma lista de centrosde assistncia tcnica do local ou fornecedoresde peas dos produtos includos no mapa.Com esses dados em mos, poderamos
responder as perguntas dos clientes emsegundos. E se tambm pesquisssemos ascondies atuais do tempo nessa rea ou as
equipes de esportes do local e os resultadosdos seus jogos recentes como incio deconversao ou passatempo em chamadas delonga durao.
2.8.1 Aproveitar os servios jconstrudos por voc
O retorno imediato de uma SOA pode serconcretizado quando as organizaescomeam a mesclar e fazer a correspondnciadesses servios entre objetivos novos eexistentes. Pode ser instigante iniciar oaproveitamento dos servios ou aplicativos nosmodos jamais imaginados no momento emque foram escritos. (Quicken Loans -mashups para resultados mais rpidos)
2.8.9 Aproveitar os serviosconstrudos por terceiros
importante compreender que no se podeter todas as informaes do mundo e que hum retorno sobre o investimento bastante altoquando voc simplesmente aproveita o
trabalho rduo de outra pessoa, em lugar dereinventar a roda.
2.8.10 Construir servios queterceiros possam aproveitar
Outra oportunidade para as empresas, namedida em que os mashups tornam-se cadavez mais populares, a de construir serviosque possam ser facilmente consumidos poraplicativos. Voltando ao exemplo que citamos,
o atendente do servio de chamadas podedeixar o cliente feliz informando o endereoda loja mais prxima. Mas, imagine se asprprias lojas expusessem seus inventrios edisponibilidade de produtos para o mashup.Agora, o atendente do servio de chamadaspode fornecer informaes ainda maisdetalhadas e valiosas ao cliente. Esse tipo deservio seria importante para o cliente, para acentral de chamadas e para a prpria loja.
2.9 Plataforma gil
Muitos mashups foram criados para
Utilizao de Mashups com Silverlight
8/3/2019 codificando 09
26/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 26262626
distribuio na plataforma web baseada empadres (HTML e Java Script). Isto no uma limitao , mas apenas a forma padro dedistribuir aplicativos na Internet. medida
que vemos os mashups entrarem na empresa,observamos tambm um nmero crescentedos mesmos sendo construdos emplataformas RIA (como o Flash da Adobe e oSilverlight da Microsoft) e at mesmo o seusurgimento para desktop ,completos e construdos emWindows PresentationFoundation. O processamentoem 3-D completo, em
plataforma de cliente rica,pode aumentar o se apelovisual. Os mashupscorporativos podem aproveitartotalmente essas plataformasmais ricas pois muitas teromaior controle dos desktops.
2.10 Riscos
Ao implementar mashups, quatro reas de
risco devem ser consideradas.
2.10.1 Dependncias dos servios
Um dos principais riscos de sua criao para oambiente corporativo ocorre quando se criauma dependncia dos servios externos suaempresa ("servios nas nuvens - cloudcomputing ). Os termos dos acordos deservio deveriam ser analisados antes de secriar uma dependncia. Por exemplo, alguns
servios exigem que o software que o usa sejade um site da Internet de acesso pblico; istopode ocorrer quando o servio tem ummodelo de receita baseada em publicidade. Ostermos tambm podem estar sujeitos smudanas, em alguns casos, de formas quepoderiam impedir de us-lo . Para minimizaressa preocupao, procure provedores deservio cujo modelo se adapte ao seu uso.
2.10.2 Perda de fidelidade dosdados
A perda de fidelidade dos dados exibidos
outro risco-chave. Na medida em que osdados so visualizados, existe uma tendnciade adaptar os dados aos limites da superfciede apresentao. Haver uma tendncia
natural de no visualizar pequenos volumes dedados ou de agrupar dados em coleesmaiores para economizar espao na superfciede apresentao. Isso pode "distorcer" a visoque o usurio final tem dos dados.
2.10.3 Poltica
A poltica tambm pode ser um obstculo criao de mashups. Se o servio foi criado porterceiros, talvez faa (ou no) exatamente oque voc desejou e, para fazer com que odesenvolvedor do servio modifique-o deacordo com suas necessidades, demora muito.Essa mentalidade fatal para os mashups. Issotambm se manifesta em confiana; se noconfia no provedor do servio, voc tambmno confiar nesse servio para o seu aplicativode misso crtica.
2.10.4 "Consumerizao" nocontrolada
De acordo com um recente relatrio doGartner, Inc. as tecnologias de consumo estocada vez mais sendo utilizadas pelas empresassem conscincia, governana ou TIcorporativo. Ferramentas voltadas aoconsumidor tm enfoque rgido na criao e
visualizao de um mashup, assim, pode sermuito fcil sua criao inicial, mas amanuteno de longo prazo no
Utilizao de Mashups com Silverlight
8/3/2019 codificando 09
27/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 27272727
considerada. Veja, tambm, como seriaperigoso ter um usurio final carregandodados corporativos em uma ferramentapblica de mashup como Pipes ou Popfly.
Existem muitas formas de minimizar essesriscos. Primeiramente, para servios internosou externos, implemente um contrato de nvelde servio (SLA) que descreva claramente asresponsabilidades das duas partes, tempos deresposta para requisies de mudana,exigncias de tempo de processamento,restries de largura de banda e todos osoutros detalhes relevantes. Depois,
esquematize as possveis exigncias deemergncia do seu aplicativo, caso haja falhana chamada de determinado servio. Paraalguns servios, pode ser aceitvelsimplesmente no apresentar esses dados; comoutros servios, voc pode deixar os dados emcach aos quais poder recorrer sempre quehouver uma falha. Talvez seja preciso ter umservio secundrio alinhado como backup, aser chamado caso alguma coisa horrvelacontea.
Por fim, ser preciso abordar as questes e apoltica de consumerizao. Ao contrrio dacrescente confiabilidade e redundncia dosservios, isto exige um processo degovernana. Se a sua organizaotiver um processo amadurecidopara governar o uso dos servios,esse processo tambm dever seraproveitado para a criao e oconsumo de mashups.
3.ConceituaoSilverligth
3.1 Silverligth(anteriormente "WPF/E")
Definio : "WPF/E" o nome deuma nova tecnologia deapresentao na Web criada para
ser executada em diversasplataformas. Ele permite a criaode experincias elaboradas,
interativas e visualmente impressionantes quepodem ser executadas em qualquer lugar; emnavegadores ou em vrios dispositivos esistemas operacionais de desktop (como o
Apple Macintosh). De acordo com o WPF(Windows Presentation Foundation), oXAML (eXtensible Application MarkupLanguage) a base do recurso de apresentao"WPF/E". O XAML uma tecnologia deapresentao do Microsoft .NET Framework3.0 (infra-estrutura de programaoWindows).
No modelo "WPF/E", os designers podem
criar a experincia de usurio que desejaremusando o XAML. Um desenvolvedor podeento incorporar diretamente o documentoXAML em uma pgina da Web usando otempo de execuo "WPF/E". Portanto, osdois podem trabalhar mais de perto do quenunca para proporcionar uma experincia deusurio de alto nvel.
No ncleo do "WPF/E" est o mdulo deaprimoramento de navegador que processa o
XAML e desenha os elementos grficosresultantes na superfcie do navegador. Trata-se de um download pequeno (menos de 2MB) que pode ser instalado quando o usurio
Figura 03 - Microsoft Expression Graphic Designer : ferramenta da
Microsoft. Permite que elementos grficos de outros aplicativos eelementos de design de exportao sejam incorporados em uma variedadede ferramentas de software, incluindo XAML para WPF e "WPF/E". [MSDN2008]
Utilizao de Mashups com Silverlight
8/3/2019 codificando 09
28/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 28282828
acessa o site com contedo "WPF/E". Essemdulo expe a estrutura subjacente dapgina XAML aos desenvolvedores
JavaScript, de modo que a interao com o
contedo no nvel da pgina torna-se possvele, portanto, o desenvolvedor pode, porexemplo, gravar manipuladores de eventos, oumanipular o contedo da pgina XAMLusando cdigo JavaScript.
4. Utilizao Silverligth paracriao de Mashups
Com a criao do Silverligth plugin, a
Microsoft vem apostando na utilizao demashups para competir diretamente com autilizao do Adobe Flash para criao deinterface e utilizao de componentizao paraWeb 2.0 rica.
Um exemplo de utilizao e desenvolvimentoj iniciado juntando os dois conceitos pode servisualizado nas ferramentas Silverlight PhotoCarousel e a ferramenta mais difundidaPopfly.[Silverligth 2008]
O Popfly permite combinar diversas fontes dedados em uma s aplicao on-line. Pode-se,por exemplo, usar fotos do Flickr como basepara a montagem de um slide show. Cadacomponente do Popfly representado por ummdulo. Para montar o mashup, o usurioarrasta os mdulos at a rea central da tela ecria links entre as caixas.
5. Concluso
A idia principal demonstrar que com autilizao de web interfaces ricas surge umnovo conceito no desenvolvimento desoftwares e aplicativos para o usurio finalcom a possibilidade e poder para ele criar emontar (modularmente) a aplicao que maisse assemelhe a sua necessidade de mercado.A Microsoft atravs deste novo conceito veminstituindo ferramentas e plataformas para o
desenvolvimento e utilizao total sobre oconceito de mashups corporativos ou de usopara pblico.
Referncias
WEB 2.0 World Wide 2.0 Disponvelem : < http://pt.wikipedia.org/wiki/Web_2.0
>.Acessado em:dezembro 2008.
MSDN Microsoft Developer NetworkLibrary Disponvel em: < http://msdn.microsoft.com/pt-br/library/default.aspx >.Acessado em:dezembro2008.
Quarterly , The McKinsey (2007) , HowBusinesses are Using Web 2.0: AMcKinsey 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.
Utilizao de Mashups com Silverlight
8/3/2019 codificando 09
29/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 29292929
Evoluo da Metodologia do
Desenvolvimento de SistemasMetodologias no desenvolvimento de software e omodo como elas evoluram no decorrer dos anos.Por: Juliana Prado
Evoluo da metodologia dodesenvolvimento de sistemas
Introduo: Tem como objetivo esclarecer aosdesenvolvedores o funcionamento dasmetodologias no desenvolvimento de softwaree o modo como elas evoluram no decorrer dosanos.
Em meados da primeira guerra mundialtivemos uma evoluo significativa nosegmento corporativo.
Nesta poca o mundo passava por intensastransformaes e isto provocou drsticasmudanas no ciclo produtivo das empresas epercebeu-se a necessidade de controlar o seuprocesso de trabalho.
Baseado nestas transformaes houve anecessidade de se aplicar o conceito dedinamizao de processos e da surgiu necessidade de se administrar grandes volumesde dados em organizaes de todas as esferas.
Com a criao dos computadores comerciaisaps a segunda guerra mundial tivemos umaumento significativo na dinamizao daindstria de computadores e,conseqentemente, o processo de construode softwares, para que os mesmosautomatizassem processos manuais epudessem avaliar situaes complexas que soparte integrante do cotidiano das organizaes.
E partir desse cenrio, criou-se modelos dedesenvolvimento de softwares que atendessema determinadas necessidades especficas e ao
mesmo tempo pudessem ser utilizados naelaborao softwares sem grandescomplexidades.
A seguir so apresentados os modelos dedesenvolvimento de softwares.
Modelo Cascata
O Modelo Cascata, tambm chamado deClssico ou Linear, caracteriza-se por possuiruma tendncia na progresso seqencial entreuma fase e a seguinte. Eventualmente, podehaver uma retroalimentao de uma fase para a
fase anterior, mas de um ponto de vista macro,as fases seguem fundamentalmente de formaseqencial.
A figura abaixo nos d uma idia visual doconceito apresentado acima.
Modelo Iterativo e Incremental
O Modelo de ciclo de vida Iterativo eIncremental foi proposto justamente para ser aresposta aos problemas encontrados no Modelo
Figura 01
8/3/2019 codificando 09
30/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 30303030
em Cascata. Um processo dedesenvolvimento, segundo essa abordagem,divide o desenvolvimento de um produto desoftware em ciclos. Em cada ciclo de
desenvolvimento, podem ser identificadas asfases de anlise, projeto, implementao etestes.
Essa caracterstica contrasta com a abordagemclssica, na qual as fases de anlise, projeto,implementao e testes so realizados umanica 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
estendido com mais funcionalidades(incremental).
Existe um processo de desenvolvimento desoftware que o principal representante daabordagem de desenvolvimento incremental eiterativo. Conhecido como RUP - Rational
Unified Process (Processo UnificadoRacional). E foi patenteado pela empresaRational, onde trabalham os famosos trs
amigos (Jacobson, Booch e Rumbaugh).
Agora vamos explanar um pouco dametodologia em espiral que consiste
desenvolvido em uma seqncia de iteraes enisso cada iterao corresponde a uma volta naespiral e cada fase ou atividade um setor, umngulo da volta.
A figura 03 nos d uma idia visual do conceitoapresentado acima.
E com o surgimento desse modelo podemosrealizar a construo de verses bsicas dos
produtos em prazos curtos e deixar novosrequisitos para implementao futura, nomomento em que se tornam essenciais.
Conforme o avanotecnolgico foiocorrendo mudanade paradigma nodesenvolvimento desistemas aconteceu eatualmente
trabalhamos com oconceito demetodologia gil.
Muitos ainda seperguntam o que equal a funo destametodologia e emque ela ir melhoraros processosexistentes naelaborao de umsoftware.
Vamos entender o que seria primeiramente esseDesenvolvimento gil de software (do inglsAgile software development) ou Mtodo gil um conjunto de metodologias dedesenvolvimento de software.
O desenvolvimento gil, tal como qualquer
metodologia de software, providencia umaestrutura conceitual para reger projetos deengenharia de software.
Figura 02
Evoluo da Metodologia do Desenvolvimento de Sistemas
8/3/2019 codificando 09
31/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 31313131
A figura 04 nos d uma idia visual doconceito apresentado acima.
Porm existem vrios modelos desta
metodologia que so:
1. Cleanroom2. XP3. Scrum
Estarei detalhando cada um deles abaixo.
Cleanroom uma metodologia muitoutilizada no desenvolvimento de software.
considerada "pesada" pelos padres daEngenharia de Software, mas muito difundidano desenvolvimento de grandes projetoscorporativos.
Figura 03
Figura 04
Evoluo da Metodologia do Desenvolvimento de Sistemas
8/3/2019 codificando 09
32/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 32323232
O processo baseado no projeto apurado dasfunes, que so analisadas pelo mtodo dereviso-par com o objetivo de verificar sefazem realmente o que foram especificadas a
fazer. Por analogia, podemos comparar estametodologia com as salas limpas nafabricao de semicondutores, que eliminam anecessidade de se limpar wafers de silcio pelofato de que eles nunca comeam sujos. Odesenvolvimento Cleanroom remove anecessidade de depurao do programa,assegurando que os erros nunca comeamintroduzidos no sistema.
Programao Extrema (do ingls eXtremeProgramming), ou simplesmente XP, umametodologia gil para equipes pequenas emdias e que iro desenvolver software comrequisitos vagos e em constante mudana.Para isso, adota a estratgia de constanteacompanhamento e realizao de vriospequenos ajustes durante o desenvolvimentode software.
Scrum um mtodo gil que foi concebido
como um estilo de gerenciamento de projetosem empresas de fabricao de automveis eprodutos de consumo, por Takeuchi eNonaka no artigo "The New New ProductDevelopment Game.Eles notaram queprojetos usando equipes pequenas emultidisciplinares (cross-functional)produziram os melhores resultados, eassociaram estas equipes altamente eficazes formao Scrum do Rugby (utilizada para
reincio do jogo em certos casos). Jeff Sutherland, John Scumniotales, e JeffMcKenna documentaram, conceberam eimplementaram o Scrum, como descritoabaixo, na empresa Easel Corporation em1993, incorporando estilos de gerenciamentoobservados por Takeuchi e Nonaka. Em1995, Ken Schwaber formalizou a definiode Scrum e ajudou a implant-lo emdesenvolvimento de software em todo o
mundo.
Por estarmos vivendo em constante
transformao neste cenrio de desenvolvimentode software precisamos realizar uma anlise doque foi vivido no passado para assim aprendermoscom os erros e percebemos que podemos sempre
inovar.
Vejam o cenrio que antes era a realidade dosdesenvolvedores de software.
As linguagens de programao eram bastantecomplexas e, alm de no existir o conceito delinguagem visual, envolviam inmeros clculosmatemticos e isso exigia que os desenvolvedorespossussem conhecimentos avanados nas reas de
matemtica e fsica, tornando, assim, uma difcilmanipulao delas.
A interao do usurio ao software se dava atravsdo teclado e isto fazia com que o usurio que fosseutilizar o computador passasse muito tempo paraaprender a manipular o sistema.Pelo que se pode perceber que com a evoluo dosparadigmas o cenrio mudou significativamentecomo apresentado abaixo.
Com a introduo do mouse nos PCs e osurgimento da interface grfica surgiu o conceitode linguagens visuais e disso temos atualmente umcenrio complexo para o desenvolvimento desistemas.
Por isso o conhecimento das metodologias acimae de sua aplicao no cenrio de desenvolvimentopode muitas vezes economizar ciclos de trabalho ecomo conseqncia h uma economia significativade dinheiro e trabalho.
No importa se voc adotar um ou outra de formaisolada ou integrada o importante que desenvolversolues vai alm de linhas de cdigo dependemais do trabalho das pessoas e de como tratadocada ciclo deste trabalho.
Evoluo da Metodologia do Desenvolvimento de Sistemas
8/3/2019 codificando 09
33/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 33333333
Criando um Cubo OlapCarga de um cubo OLAP utilizando o MicrosoftSQL Server 2005 Analysis Services.
Por: Ivan Sampaio / Juliano Schimiguel
Introduo
Quando comecei a pesquisar sobre Business
Intelligence, para incluir essa funcionalidade emum ERP, foi bastante difcil descobrir ocaminho. No incio, parti para procurar umaferramenta free e no obtive sucesso,principalmente pela falta de documentao,foram dois meses de trabalho intensos semobter um bom resultado. Ento tomei a decisode analisar o Microsoft SQL Server AnalysisServices, em menos de uma semana estavamontando meus primeiros cubos. Aqueles dois
meses me ajudaram bastante a consolidar osconceitos sobre o assunto, mas com certeza otrabalho com o Analysis Services foi muitogratificante.
J se passaram dez meses e agora tenho aoportunidade de escrever um artigo para passar,de uma forma prtica, um caminho a serseguido para iniciar em um ambiente deBusiness Intelligence.
O objetivo desse artigo mostrar a criao ecarga de um cubo OLAP utilizando oMicrosoft SQL Server 2005 Analysis Services.Partindo-se de uma estrutura de informaessobre Notas Fiscais de Vendas, onde a base dedados xBase, ser definida a estruturamultidimensional, tabelas Fato e Dimenses,utilizando o Microsoft SQL Server.
Para fazer a carga dos dados, ser utilizado umprograma escrito em Microsoft Visual FoxPro,
transferindo os dados da base xBase para a basede dados multidimensional estruturada no
SQL Server.Para criar o cubo sero definidos todos ospassos no Analysis Services, a partir das tabelasFato e Dimenses criadas no SQL Server.
Desenvolvimento
Na prtica, quando se pensa em utilizar umcubo para anlise de informaes, os dadosgeralmente no esto modelados na formamultidimensional, ento partimos do princpioque esto na forma relacional em uma base dedados xBase. Poderiam estar em qualquer outrabase de dados, mas para mostrar detalhes de umprograma de carga, escolhemos a estruturaxBase que pode ser usada de forma nativa porum programa desenvolvido em Visual FoxPro,que, pela sua simplicidade de codificao,facilitar o seu entendimento.
A seguir, mostramos as estruturas originais dastabelas em uma base de dados xBase.
Estrutura das Tabelas em xBase
Notas_Fiscais
NUMNTF Numeric 07
CODCLI Caracter 06
DTAEMINTF Date 08
Itens_das_Notas_Fiscais
NUMNTF Numeric 07
CODPRD Caracter 10
VLRPRDNTF Numeric 13 02QTDPRDNTF Numeric 13 03
8/3/2019 codificando 09
34/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 34343434
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 paraconstruo do cubo e ambos fazem parte doMicrosoft Visual Studio 2005, facilitando emmuito o desenvolvimento.A seguir, mostramos as estruturas das tabelasna forma multidimensional em uma base dedados SQL.
Estrutura das Tabelas Fato eDimenses
Programa de Carga
Para criar o programa para carga das tabelasda base de dados multidimensional, foiutilizado o Visual FoxPro, por que atravsdele possvel acessar nativamente uma basede dados xBase e atravs de ODBC acessaruma base de dados SQL Server.
Esse programa um exemplo, no pretendeser um modelo ideal para programas de cargade tabelas multidimensionais. Nasobservaes desse artigo, foram colocadosalguns detalhes sobre certos cuidados quedevem ser tomados para que a sua base dedados multidimensional seja consistente e defcil e rpida atualizao.
A seguir, mostramos o programa para a cargade dados em tabelas multidimensionais
definidas no SQL Server, a partir de uma baserelacional em xBase.
Listagem do Programa deCarga
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
8/3/2019 codificando 09
35/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 35353535
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 inselect(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.NUMNTFdo 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)+","+;
+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 VisualStudio. Optamos por fazer de forma descrita eno 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
Criando um Cubo Olap
8/3/2019 codificando 09
36/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 36363636
tabelas na forma multidimensional criadas noSQL Server. Para isso est sendodisponibilizado abaixo um script para serexecutado no SQL Server. Esse script ir criar
o Banco de Dados e as respectivas tabelas,como descritas acima.
Script para gerao do Banco deDados com as tabelas Fato eDimenses
/* Criao do Banco de Dados Notas_Fiscais */
CREATEDATABASE[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 */
CREATETABLE[dbo].[Notas Fiscais](
[IDT_Nota_Fiscal] [int]
IDENTITY(1,1)NOTNULL,
[IDT_Emisso_da_Nota_Fiscal][int]
NOTNULL,
[IDT_Cliente] [int]
NOTNULL,
[IDT_Cidade] [int]
NOTNULL,
[IDT_Produto] [int]
NOTNULL,
[Valor das Vendas]
[numeric](15, 2)NOTNULL,
[Quantidade das Vendas]
[numeric](15, 2)NOTNULL,
CONSTRAINT[IDX_Notas_Fiscais]UNIQUE
NONCLUSTERED ([IDT_Nota_Fiscal]ASC)ON
[PRIMARY])
/* Criao da Tabelas Clientes */
CREATETABLE[dbo].[Clientes](
[IDT_Cliente][int]IDENTITY(1,1)NOT
NULL,
[Cliente] [char](50)NOTNULL,
CONSTRAINT[IDX_Clientes]UNIQUENONCLUSTERED
([IDT_Cliente]ASC)ON[PRIMARY])
/* Criao da Tabelas Cidades */
CREATETABLE[dbo].[Cidades](
[IDT_Cidade][int]IDENTITY(1,1)NOTNULL,
[Cidade] [char](50)NOTNULL,
[Estado] [char](02)NOTNULL,
CONSTRAINT[IDX_Cidades]UNIQUENONCLUSTERED
([IDT_Cidade]ASC)ON[PRIMARY])
/* Criao da Tabelas Emisses */
CREATETABLE[dbo].[Emisses](
[IDT_Emisso_da_Nota_Fiscal][int]
IDENTITY(1,1)NOTNULL,
[Ano] [numeric](04,0)NOT
NULL,
[Ms] [numeric](02,0)NOT
NULL,
[Dia] [numeric](02,0)NOT
NULL,
CONSTRAINT[IDX_Emisses]UNIQUENONCLUSTERED
([IDT_Emisso_da_Nota_Fiscal]ASC)ON
[PRIMARY])
/* Criao da Tabela Produtos */
CREATETABLE[dbo].[Produtos](
[IDT_Produto][int]IDENTITY(1,1)
NOTNULL,
[Produto] [char](50)NOTNULL,
CONSTRAINT[IDX_Produtos]UNIQUE
NONCLUSTERED ([IDT_Produto]ASC)ON
[PRIMARY])
Descrio dos passosnecessrios para criar um Cubono Visual Studio
Utilizando o Visual Studio, vamos descreverpasso a passo como criar um cubo baseado nastabelas acima descritas.
- Execute o Visual Studio.
- Selecione: File / New / Project... / BusinessIntelligence Projects
Coloque em Name: ..... Notas Fiscaise clique em OK.
Ir aparecer no formulrio SolutionExplorer o seu projeto Notas Fiscais.
- No Solution Explorer - Notas Fiscais,aparecero as seguintes pastas: Data Sources,Data Source Views, Cubes e Dimensions. Soessas pastas que utilizaremos para criar oCubo.
Data Sources
Clicar com o boto direito sobre essa pasta eescolha: New Data Source.No formulrio Data Source Wizard, clicar noboto New.No formulrio Connection ManagerNo Server Name: selecione o servidor SQL
Server instalado.No Select or enter a database name: selecioneVendas.Clicar no Test Connection para verificar se aconexo est correta.Clicar em OKNextNo Impersonation Information: selecioneDefault.Clicar em NextFinish.
Data Source View
Clicar com o boto direito sobre essa pasta eescolha: New Data Source View.
Criando um Cubo Olap
8/3/2019 codificando 09
37/40
www.codificando.net
e-mag
azineCodificando.net
e-magazine
Abril / Maio 2009 | 37373737
Clicar em NextNext.Transferir todas as tabelas de Available Objectspara Included Objects.Clicar em NextFinish.
CubesClicar com o boto direito sobre essa pasta eescolha: New Cube.Clicar em Next... Next... Next... Next...Next......... Finish.
Dimensions
Clicar na primeira Dimenso.
Em Atributos, painel mais a esquerda, clicarcom o boto direito no atributo chave.Escolher Propriedades e mudarAtributeHierarchyVisible para False.Repetir esse processo para todas as Dimenses.
Processar o Cubo
Clicar com o boto direito sobre o ProjetoNotas Fiscais escolha: Process.Escolha em seguida clicar em Yes.
Obs.: nesse processo podem ocorrer erros, elesso erros provavelmente de definies quantoao acesso ao servidor SQL. Devem seranalisados e corrigidos por pessoas que tenhamdomnio do SQL Server.
Navegao no Cubo
Navegar no cubo pode ser feito atravs doVisual Studio ou des
Recommended