domingo, 26 de outubro de 2008

O que fazer com os riscos do projeto

Quando iniciamos o planejamento de um projeto, devemos verificar os riscos que podem comprometer a evolução do projeto e até mesmo torna-lo inviável. Um erro muito comum é subestimar os risco que envolvem o projeto, normalmente por acreditar que não irá acontecer conosco.

Ao elaborar o “Plano de Gerenciamento de Risco”, devemos levar em consideração:

  • Probabilidade: qual a chance do risco acontecer? Devemos identificar o risco e criar uma escala. Eu utilizo o tabela abaixo para mapear a probabilidade do risco. 

  • Impacto: O que pode acontecer ao meu projeto se esse risco acontecer? Assim como a probabilidade devemos identificar e criar uma escala. Veja a tabela abaixo que utilizo para mapear o impacto do risco.

Após o levantamento inicial podemos definir uma escala para este risco. Veja a tabela abaixo que utilizo.

Desta forma podemos identificar mais facilmente quais os riscos que devemos priorizar. Lembre que os riscos podem acontecer em uma determinada fase, minimizando assim o esforço no decorrer do projeto. Para isso podemos criar uma tabela contendo os riscos identificados e as fases do projeto e assim fazer um mapeamento.

Tão importante quanto mapear os riscos é saber o que fazer com eles. Então podemos classificar os riscos da seguinte forma:

  • Aceitação passiva: estamos preparado para o risco e não podemos fazer nada, é o exemplo de uma enchente na região onde estamos trabalhando.

  • Aceitação ativa: estamos preparados para o risco e prontos para agir, normalmente através de planos preventivos e de contingência, é o exemplo de um atraso na entrega de uma determinada aquisição do projeto.

  • Transferir: conhecemos os risco e não queremos assumir caso aconteça, é o exemplo de uma aquisição que deve ter um transporte marítimo com o risco de afundar, então podemos fazer um seguro. Caso aconteça, não teremos um prejuízo financeiro, apenas no cronograma.

  • Evitar: normalmente o risco possui um grande impacto no projeto e com uma probabilidade muito alto, que pode inviabilizar o projeto, desta forma devemos evitar este caminho, sendo necessário replanejar o projeto e seu for o caso cancelar.

Antes de finalizar este artigo, lembre que devemos ter para cada risco um plano preventivo, onde iremos planejar o que devemos fazer para o risco não aconteça e um plano de contingência, contendo as informação de como proceder para minimizar o risco no projeto, caso ele venha a acontecer.

Espero que tenha gosta, e até a próxima.

sexta-feira, 17 de outubro de 2008

Projeto de Software

Desde a década de 80, quando entrei neste mundo dos computadores, sempre escutei o termo Desenvolvimento de Software, utilizado até os dias de hoje. Quando observo o processo para a criação de um software dentro dos moldes de qualidade atuais, percebo que o correto seria Projeto de Software. Mas afinal, o que é realmente necessário para "desenvolver"?

Lembro que quando comecei a desenvolver, a documentação gerada pelo "analista de sistemas" era basicamente um lista de requisitos, o diagrama de blocos (acredito muito aqui não chegaram a conhecer), diagramação das telas e relatórios entre outros poucos documento. Também era feito o diagrama da estrutura de armazenamento. Com esta documentação, o programador dava início ao desenvolvimento. Observe que não era dado a devida importância de validar o que seria desenvolvido, deixando esta processo para ser feito com o usuário em uma etapa seguinte, fazendo assim as adequações necessária.

Poucos anos depois, não mais que 10 anos, vejo um cenário bastante diferente no Brasil, onde é realizado um planejamento de como será desenvolvido o software, tarefa esta realizada pelo gerente de projeto e utilizando as técnicas do PMBOK. Aprovado o planejamento, começa a Especificação do Software com o Analista de Sistemas elicitando os requisitos, elaborando os casos de uso, fazendo prototipagem do software e criando o Diagrama de Entidade Relacional (DER) do banco de dados. Toda a documentação gerada deve ser validada pelo usuário antes de ser desenvolvido, minimizando assim o trabalho que seria necessário para adequar a realidade do usuário.

Podemos observar que a principal mudança que ocorreu durante o tempo foi a importância para o planejamento do software (sei que alguns podem comentar sobre a evolução nos ambientes de programação, mas os problema continuariam existindo sem o planejamento), permitindo assim que as mudanças possam ser realizadas ainda na fase conceitual. Como vantagens podemos citar:

  1. Maior controle sobre o custo do Software
  2. Ajustes ainda na fase conceitual
  3. Controle dos riscos
  4. Entrega aderente ao escopo especificado, entre outros


E você, ainda continua desenvolvendo sistema? Deixe seu comentário sobre a evolução para a construção de software.

Espero que tenha gostado e até a próxima.

quinta-feira, 9 de outubro de 2008

WebIntegrator - Trabalhando com páginas

No último artigo do curso de WebIntegrator vimos como criar uma página. Neste artigo iremos nos aprofundar nas propriedades.

Da esquerda para a direita temos as seguintes opções:

  • Nova página: Como o próprio nome já diz, permite criar uma nova página no projeto
  • Definição: Mostra a página contendo as informações da página. Veja o artigo anterior para maiores informações.
  • Pré-Página: Utilizada para criar a regra de negócio ao ser carregado a página.
  • Pós-Página: Utilizada para criar a regra de negócio ao ser feito submissão da página para ela mesma.
  • Assistente: Chama um wiazrd para a criação das páginas usando componentes e templates. Este recurso permite uma produtividade muito alta quando estamos desenvolvendo uma aplicação. Porém se não souber usar de forma correta não vai fazer nenhum milagre.
  • Visualizar: Carreta a página no navegador. Lembrando que para funcionar é preciso estar sem segurança ativa e Acessar sem login.
  • HTML: Para os desenvolvedores mais experientes, podem utilizar este recurso. Será mostrado uma janela com o código da página. Ao contrário do Assistente, não podemos utilizar as vantagens de templates e componentes.

  • HTML: Parecido com o HTML, porém exibe o código jsp gerado pelo WebIntegrator. É possível editar o código da página, do pré-pagina e do pós-pagina.


O WebIntegrator utiliza o principio de pré e pós páginas para executar as regras de negócios. Iremos utilizar este recurso para realizar consulta em banco de dados, criar gráficos, chamar os conectores java entre outros recursos. Antes precisamos entendo como funciona. Veja a imagem a seguir.

Quando fazemos uma requisição para uma página .wsp, o WebIntegrator executa primeiro a pré-página, é lá que iremos colocar a nossa regra de negócio.

Como podemos ver na imagem, temos alguns elementos que podemos utilizar para compor nosso código. A grande vantagem que temos em utilizar o WebIntegrator é que iremos simplesmente preencher campos com as informações, enquanto que a ferramente gera o código JSP necessário para executar. Quando a execução do pré-página termina, será processado o conteúdo da página que iremos criar utilizando o assistente ou o próprio editor HTML.

Quando submetemos a página, seja por link ou por formulário, antes de executar o pré-página, o WebIntegrator executa o pós-pagina. Podemos utilizar para realizar inserts ou updates em um banco de dados, por exemplo.

Vou ficar por aqui neste artigo, no próximo iremos conhecer os elementos que fazem parte do pré e pós página. Abraços e até a próxima.

Projeto: Supermercado


Como você realiza suas compras no supermercado? Sempre escutamos que devemos utilizar uma lista com todos os itens que iremos comprar e procurar não levar nada que esteja fora dela, principalmente agora em época de aumentos dos preços. Agora, o que compra de supermercado tem a ver com planejamento e gestão de projetos?

Você conseguiu encontrar a ligação? Podemos considerar que cada ida ao supermercado pode ser tratado como um projeto, exigindo assim um planejamento, acompanhamento, e claro, encerramento.

Como podemos planejar nosso projeto Supermercado. Devemos começar com uma lista de produtos que podemos comprar no supermercado e verificando o que estamos precisando comprar ou que pode acabar até a compra seguinte. Verifique a quantidade de cada produto para garantir sua duração entre o período das compras, exceto se for perecível.

Não esqueça também de compor sua lista de compras com os produto e quantidades para não esquecer nada. Um dica que deixo é a forma de organizar a sua lista de compras. Normalmente sabemos qual o super mercado que iremos realizar nossas compras e de certa forma como ele é dividido. Normalmente é divido por material de limpeza, frutas e verduras, bebidas, frios, padaria entre outros setores. Desta forma podemos fazer nossa lista da seguinte forma:


  • Material de limpeza

    1. Sabão em pedra (1cx)
    2. Sabão em pó (3 pedaços)
    3. Desinfetante (2litros)

  • Padaria

    1. Pão frances (10 unidades)
    2. Torradas (1 pacote)
    3. Pão de caixa (2 pacotes)

  • Bebidas

    1. Suco de laranja (2 cx)
    2. Suco de limão (1cx)
    3. Chá gelado (3 x 1litro)



Claro que o planejamento de sua lista pode variar, incluindo outras informações como preço da última compra, por exemplo. Com a nossa lita pronta vamos para a etapa seguinte de nosso projeto que é a execução, ou seja, a compra.

Nesta etapa basta seguir o que foi planejado em nossas compras e tomar o devido cuidado para não fugir de nossa lista. Deixo a sugestão de anotar o valor dos produtos e com o uso de uma calculadora ou de um PDA e um programa de planilha ou especifico para compras como o HandShopp para Palm verificar o total de suas compras até para evitar surpresas no caixa. Caso você tenha um registro dos preços de suas últimas compras é possível calcular de forma antecipada o quanto irá gastar em sua próxima compra,além de poder verificar a váriação de preço.

Quando terminamos nossas compras e voltamos para casa, podemos imaginar que o nosso projeto Supermercado esta finalizado, porém não se esqueça de registrar as lições aprendidas.

Mas afinal, o que podemos aprender com nossas compras? Simples, muita das vezes ao realizar as compras nos deparamos com um produto e gostamos, então é bom registrar para que nas próximas compras você possa voltar a adquirir o mesmo produto. O mesmo acontece quando compramos uma determinada marca e acabamos não gostando. Para facilitar este trabalho, normalmente tiro foto dos produtos e crio um álbum no PDA ou celular.

Espero que este artigo facilite suas compras, da mesma forma que tem me ajudado em realizar as minhas. Até a próxima.

sábado, 4 de outubro de 2008

WebIntegrator - Criando página (Parte 1)

Continuando com o nosso curso, vamos ver hoje como criar uma página no WebIntegrator. Ao acessar o projeto, caso necessário veja a primeira parte do curso, vamos ver a tela principal do WebIntegrator, conforme a imagem abaixo.

Localize na área 1 o item páginas e clique. Observe que no espaço 2 vai aparecer a estrutura de páginas do projeto.
Esta estrutura é criada fisicamente em forma de estrutura dentro do diretório webapps do tomcat. Em outra oportunidade entrarei em detalhes sobre como o WebIntegrator guarda o projeto.







Vamos entender as informações que temos na imagem acima.

  • Título: Utilize este campo para colocar o título da página. Esta informação será armazenada em uma variável do WebIntegrator e é útil quando utilizamos o template de página.
  • Identificador: É o caminho da página que será criada, exemplo, cadastro. Não coloque a extensão .wsp, pois o webintegrator cria automaticamente para você. Caso você coloque a extensão .wsp o WebIntegrator irá criar a página cadastro.wsp.wsp. Se a página em questão ficar dentro de uma estrutura de diretórios, indique o caminho completo. Exemplo: usuario/cadastro, onde usuario é o diretório e cadastro o nome da página ser criado.
  • Segurança Ativa: Marque esta opção para aumentar a segurança de sua aplicação. Esta opção não permite que a página seja chamada de forma direta pelo navegador. Para acessar esta página deve ser criado uma página de acesso que contenha um link ou submissão de formulário para esta página.
  • Acessar sem login: Verifica se foi realizado o login antes de acessar esta página. Caso não tenha sido realizado, a aplicação será desviada para a página de login.

As demais opções estarei mostrando no decorrer do curso.

Para o nosso exemplo, vamos criar uma página chamada consulta, preenchendo os campos conforme mostrado abaixo:

  • Título: Consulta de informações
  • Identificação: consulta (cuidado com o nome de sua página pois é utilizado a estrutura de arquivos do sistema operacional)
  • Segurança ativa: Não
  • Acessar sem login: Sim

E clique no botão gravar

Parabéns, você acaba de criar a sua primeira página utilizando o webintegrator. Para não deixar este post muito longo, na aula seguinte continuarei falando sobre as página no WebIntegrator.

Espero que tenha gostado, comente ou envie e-mail. Abraços e até a próxima.

sexta-feira, 3 de outubro de 2008

Lições Aprendidas


Sempre que estamos envolvidos em um projeto nos preocupamos que todas as etapas sejam executadas de forma que as ações necessárias sejam cumpridas dentro do prazo, e acabamos esquecendo um detalhe muito importante, as lições aprendidas com o projeto.

Quando estamos concluindo o projeto, normalmente as pessoas envolvidas já estão se desligando da equipe, ou envolvidas realizando os ajustes necessários para a conclusão dentro do prazo estabelecido.

Mas porque é importante uma reunião para as lições aprendidas e o que fazer com elas? Como já expliquei em outros artigos, um projeto pode ser para atividades do cotidiano, como um passeio na serra, uma festa de amigos, um evento na empresa entre outros. Desta forma acabamos aprendendo com a evolução do projeto. Este aprendizado pode ser para o que foi útil ao projeto, bem como as dificuldades encontradas.

Logo após o encerramento do projeto, é importante reunir as principais pessoas que participaram do projeto e realizar um Brainstorming sobre o projeto, registrando todas as informações que sejam consideradas importantes, seja em um documento padronizado ou em uma simples memória de reunião. Esta informação deve ser guardada de forma a criar um banco de informações para referências em projetos similares futuros venham a ser realizados.

Vamos exemplificar a importância de registrar as lições aprendidas do projeto.

Projeto Férias de Final de Ano
Todos sonham com as férias de final de ano para conhecer ou retornar para um cantinho aconchegante do mundo. O planejamento começa meses antes da viagem, no nosso caso, 6 meses antes vamos começar a pesquisar nas agência de viagem nossas opções de destino. Não vou entrar muito em detalhes do projeto, procurando focar apenas os pontos principais.

Para a nossa viagem temos que nos preocupar com uma série de detalhes, como contas a pagar durante o período, segurança de nossa casa, alimentação de bicho de estimações, malas, roupas, enfim, muitos detalhes. Por mais que seja planejado alguma coisa acaba sendo esquecido.

Vou resumir em alguns exemplos nossa viagem. Primeiro caso é uma recomendação de nosso vizinho que já tinha visitado cidades parecidas com o nosso destino e sugeriu o tipo de programação que deveríamos fazer. Devemos registrar essa informação caso tenha sido boa para a nossa viagem para que nas próximas viagens similares possamos utilizar. Vamos agora a dois exemplos para que não sejam esquecidos nos próximos projetos. Na pressa de viajar, esquecemos o carregador de nossa câmera fotográfica e tivemos que comprar outro durante a viagem ou reduzir a quantidade de fotos registradas economizando a bateria. Outro exemplo é descobrir que esquecemos de suspender a entrega do jornal durante esse período.

As lições aprendidas devem ser registradas e guardadas em local seguro e fácil acesso, pois serve de referencia para outros projetos.

E você, registra as lições aprendidas de seus projetos?

Espero que tenha gostado e até a próxima.

quarta-feira, 1 de outubro de 2008

WebIntegrator - Manipulando Variáveis

Inicialmente gostaria de agradecer os comentários deixados no blog e a grande quantidade de e-mail que recebi parabenizando pelo curso. Devido a compromissos profissionais acabei demorando na publicação desta parte do curso, porém estarei priorizando seu andamento.
Vamos ver hoje como funciona as variáveis no WebIntegrator.

A manipulação de variáveis no WebIntegrator é simples. Não precisamos nos preocupar com o tipo de informação que estamos manipulando, sendo este procedimento realizado pelo WebIntegrator de forma transparente. Sempre que colocamos uma informação entre | (pipelines) o WebIntegrator processo retornando o valor armazenado. Exemplo, quando usamos |valor| o WebIntegrator procurar processar esta informação retornando seu valor. Este procedimento pode ser feito em diversos lugares dentro do WebIntegrator, e não apenas a nível de página, o que torna o ambiente muito poderoso para o desenvolvimento de aplicações.

Como podemos ver na figura abaixo, existem basicamente três tipos de variáveis.

Como podemos ver, as variáves do WebIntegrator pode ser criada em três níveis: Requisição, Sessão e Aplicação. Vamos entender como funciona cada nível.

Requisição

Este é tipo de variável mais utilizado nas aplicações WebIntegrator. O ciclo de vida inicia na requisição da página e terminar quando ela é visualizada. O prefixo tmp. determina o tipo da variável de requisição.

Exemplos de variáveis:

  • |tmp.nome|
  • |tmp.identificacao.usuario|
  • |tmp.valor.venda|
  • |tmp.data|

Caso seja necessário enviar o conteúdo de uma variável de requisição para a página seguinte, utilizamos campo oculto ou através do link, conforme abaixo:

  • input type="hidden" name="tmp.valor" value="|tmp.valor|"
  • a href="http://servidor:8080/aplicacao/pagina.wsp?tmp.valor=|tmp.valor|"


Sessão
As variáveis de sessão possuem um ciclo de vida maior que os de requisição, persistindo durante a sessão do usuário na aplicação. Utilizamos este tipo de variáveis quando precisamos guardar uma informação que deve ser utilizada na aplicação de uma forma geral.

Quando criamos a variável sem utilizarmos um prefixo, exemplo |nome|, estamos criando uma variável de sessão, que deve persistir até que sessão seja encerrada ou seja apagada pelo WebIntegrator. Se for utilizado o prefixo pvt. esta variável deve ser setada pela aplicação, não sendo alterada pela requisição. Um exemplo de uso é a identificação de um usuário logado no sistema.

As variáveis de sessão são individuais para cada sessão da conexão, ou seja, se a variável |identificacao| for setada pelo usuário 1 com o valor 123 não interfere com o valor setada pelo usuário 2 que poderia ser 456.

Exemplos de variáveis:

  • |login|
  • |pvt.identificacao|
  • |cadastro.valor|
  • |tmp.data|

Por ser uma variável de sessão, não precisamos enviar junto com a requisição da página.

Aplicação
Muito parecida com as variáveis de sessão, porém o ciclo de vida é extendido para a aplicação WebIntegrator. Utilizamos o prefixo app. para setar o valor da variável.

Este tipo de variável é útil quando precisamos manter informações para a aplicação. Podemos citar como exemplo o titulo da aplicação. Quando o valor desta variável é modificado, é refletido para o usuário assim que for realizado uma requisição de página. Ao contrário das variáveis de sessão, o valor é compartilhado para todos os usuários da aplicação WebIntegrator.

Exemplo de variável:

  • |app.titulo.aplicacao|
  • |app.email.administrador|


Manipulando as variáveis
O WebIntegrator permite agrupar as variáveis facilitando uma melhor manipulação das informações. Podemos criar a seguinte "árvore" de informações utilizando as variáveis:

  • |tmp.cadastro.nome|
  • |tmp.cadastro.telefone|
  • |tmp.cadastro.cidade|
  • |tmp.cadastro.uf|


O webintegrator possui também algumas variáveis internas que estarei abordando no decorrer do curso. Na próxima parte estaremos criando uma página e realizando algumas consultas de informações no banco de dados.

Deixem seus comentários ou enviem e-mail para brenomachado.aju@gmail. Até a próxma.