codificando 09

Upload: ricardo-palma

Post on 06-Apr-2018

242 views

Category:

Documents


1 download

TRANSCRIPT

  • 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.

    [email protected]

    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 [email protected]

    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