Archive for outubro \30\UTC 2008

Resumo Geral do Falando em Agile

outubro 30, 2008

Pessoal,

No blog http://andrefaria.com, foi colocado um post muito bom sobre tudo o que aconteceu no evento Falando em Agile 2008.

E no blog do pessoal da Sea Tecnologia, que fez uma apresentação bem completa sobre um case de utilização do scrum na Aeronáutica. http://blog.seatecnologia.com.br/

Até mais,

André

Anúncios

O desenvolvimento de software da Voice no Basix

outubro 27, 2008

Neste post falaremos sobre algumas melhorias que implantamos no processo de desenvolvimento aqui no Basix. Nestas melhorias  (Eu, Fontes, Antonio e o pessoal de desenvolvimento) fomos fortemente influenciados pelas metodologias ágeis, em especial o Scrum. Mas, não prentendíamos seguir nada “by the book”, à ferro e fogo. Estamos tentando implementar aos poucos e vendo o que melhor se adequa a nossas necessidades. Vou listar agora alguns pontos que trabalhamos:

Primeiro: era preciso mensurar de alguma forma o trabalho, criar um ritmo.

  • Dividimos o trabalho em iterações de uma semana. O tempo de iteração não foi maior porque teoricamente tínhamos somente duas semanas para desenvolver este release (o prazo era muito curto). Ao início do projeto, o pessoal estimou as tarefas que iriam executar nesta semana.
  • Para que todos visualizassem o progresso, colocamos uma folha A3 impressa na parede, com as tarefas daquela semana. Assim que alguém terminava, riscava ali as tarefas. Preferimos começar assim ao invés do quadro de tarefas com post-it.
  • Definimos o conceito de pronto. Um código do desenvolvedor só estaria pronto depois que fosse testado por ele (mesmo que manual). Este conceito ficou claro para todos os desenvolvedores.
  • Definimos que todo commit deveria ser comentado no SVN e que cada commit só poderia conter alteração referente a uma tarefa. Recomendou-se que baixasse o código do SVN todas as manhãs (mas isto não foi cobrado).
  • Ao começo de cada iteração,

    Imagem da Avaliação de Impacto

    avaliamos como as tarefas previstas iriam afetar o produto. Agrupávamos as tarefas por produto e por nível (classificados de 1 a 5) e gerávamos uma Avaliação de Impacto. Esta avaliação foi útil para informar para todos quais módulos sofreram as alterações mais graves. Isto é muito importante visto que não possuímos testes automatizados para todo o produto.

  • Ao final de uma semana, juntamos a equipe para rever o que ocorreu e planejar a próxima semana. Identificamos o porquê das tarefas não terem sido cumpridas e quais tarefas serão feitas na próxima.

Resultados:

Na segunda iteração a equipe estimou com mais precisão e, principalmente, aprovou o novo método. As padronizações no SVN foram seguidas e elogiadas por todos. Em três iterações, a grande maioria das tarefas estavam entregues.

Porém, diversos aspectos poderiam ter sido melhores: maior integração com a área de qualidade, definir antes o que seria testado, produzir mais testes automatizados e principalmente uma quantidade menor de bugs encontrados pela área de qualidade. Mas acreditamos que estamos no caminho certo, é só continuar trabalhando.

Ao final do trabalho, montamos um “livro” da versão, que continha tudo que aconteceu nas 5 iterações, todos os impedimentos que foram encontrados ao longo do caminho.  Quem quiser é só falar que eu envio.

Próximos Passos

  • Ao planejar a iteração, envolver a equipe de qualidade, definindo como um item será testado.
  • Maior integração com área de qualidade.
  • Automatização de testes.

Próximo Post

Falaremos sobre a reunião de lições aprendidas que realizamos.

Até mais,

André

P.S. : Fontes, Antonio e todo mundo, fiquem à vontade para complementar este artigo.

Falando em Agile 2008 – Impressões

outubro 23, 2008

Pessoal,

Hoje eu e o Joemir fomos ao Falando em Agile, um evento organizado pela Caelum e que tinha por objetivo falar um pouco mais sobre Agile, Scrum, XP e tudo que envolve o mundo de desenvolvimento ágil.

Tivemos diversas palestras, quase todas muito boas(com exceção de uma). Neste primeiro post vou colocar minhas impressões sobre a primeira palestra.

Achieving Success with Agile Management
por David Anderson, participou do projeto onde foi criado o FDD (Feature-Driven Design), trabalha ultimamente no mundo Microsoft e é antigo entusiasta do Agile.

Um time mal gerenciado, mas que entrega os projetos

Um time mal gerenciado, mas que entrega os projetos

Ele fez uma citação bacana, na verdade não era dele, era de alguém que eu não lembro:

“Um gerenciamento ruim pode aumentar os custos do software mais rápido que qualquer outro fator.”

Por isso, a culpa não é só dos programadores e testadores. Mas, para terminar um projeto mal conduzido, é necessário que estes sejam heróis. E em um projeto curto até podemos ser heróis, mas é difícil sustentar o heroísmo no longo prazo.

Antes de contratar a Liga da Justiça, é preciso reduzir a variação no processo e seu fluxo. Garantir que todos façam sempre igual. Não com um processo rígido bem definido no papel, mas passando a filosofia para todos, o que é importante.

Ele passa uma receita para o sucesso, não é uma fórmula imbatível, mas dá um bom direcionamento:

  • Foco na Qualidade: dê permissão para o seu time produzir bug zero. Se um programador ou tester estiver em dúvida entre a forma mais rápida e a de melhor qualidade permita a eles escolher a de melhor qualidade.
  • Reduza o Work in Progress: tenha um conceito bem definido de pronto para cada etapa do processo. Não deixe muitos itens sendo trabalhados ao mesmo tempo. Isto aumenta a complexidade, diminui a qualidade e aumenta a quantidade de defeitos. E quanto mais defeitos, mais Work in Progress.
  • Balanceie a demanda e o que é produzido: Tenha controle sobre o que está sendo produzido, tente achar uma previsibilidade. É preciso achar qual o ritmo de sua equipe. Isto deixará o cliente mais confortável, a equipe e superiores mais confiantes. E não altere este ritmo na primeira ventania que aparecer, tente não saturar a equipe, trabalhar no ritmo.
  • Priorização: Uma boa priorização é fundamental para o sucesso do projeto. Devemos ser capazes de priorizar os itens mais importantes para o cliente. Não precisamos gastar tempo priorizando itens que só serão tratados no futuro. No caso de produto, uma boa priorização seria: primeiro o que é commodity, depois o que reduzirá custo, em seguida features legais que concorrentes tem e por último o que seria diferencial do seu produto.

E depois de fazer tudo isto, Reduza a variação! Treine a equipe, faça tabalho colaborativo, feedback rápido, pair programming, crie padrões de codificação e design, faça retrospectiva e corrija o que deu errado, etc… Vá criando um ambiente colaborativo, com feedback e que “aprenda”.

Nesta palestra ele abordou diversos conceitos que são úteis para qualquer equipe de desenvolvimento, depois vou postando outras coisas que achei legal.

Até mais,

André Pantalião Ferreira

As 15 habilidades essenciais que todo profissional de TI deve ter

outubro 15, 2008

Segue abaixo um artigo retirado da lista de e-mails JavaList que eu acredito ser bem interessante para nós profissionais de T.I.

Diante de um artigo chamado “75 habilidades que todo homem deve ter”,
um CIO achou que poderia ser mais exigente com ele mesmo. E nesse
espírito, resolveu montar uma lista das habilidades que todo
profissional de TI deveria ter.

1. Ser capaz de consertar pequenos problemas no PC. Isto vai de mapear
a impressora na rede, fazer back up de arquivos ou configurar uma rede
sem fio. Você não precisa ser especialista em tarefas super técnicas,
mas, se você trabalha com TI, as pessoas esperam que você saiba fazer
coisas básicas.

2. Trabalhar no help desk. Todos, do CIO ao arquiteto-sênior, precisam
poder sentar e atender o telefone. Você será admirado pelos colegas de
help desk e poderá ensiná-los mais sobre o processo.

3. Falar em público. Ao menos uma vez, você deveria fazer uma
apresentação para seus pares. Pode ser um simples tutorial de cinco
minutos, mas ser capaz de explicar algo e ficar confortável frente à
uma platéia é uma habilidade que você precisa ter.

4. Treinar alguém.  A melhor maneira de aprender é ensinando.

5. Escutar mais do que você fala. Muito raramente eu falo algo que não
saiba, mas freqüentemente escuto alguém falando coisas e penso
“Gostaria de saber disso há uma semana.”

6. Saber o básico sobre redes. Mesmo que você não seja um engenheiro
de redes ou um técnico de help desk, você precisa entender como as
redes funcionam e resolver problemas simples.

7. Saber o básico sobre administração de sistemas. Entenda sobre
permissões de arquivos, níveis de acesso e porque as máquinas falam
com os controladores de domínio.

8. Saber seguir uma trilha de rede. Todos em TI devem ser capazes de
usar alguma ferramenta de captura de rede – ao menos saber como
conseguir as informações que serão analisadas por um engenheiro de
rede.

9. Saber a diferença entre latência e largura de banda. Latência é o
tempo que um pacote leva para chegar ao seu destino; largura de banda
é o máximo de dados que um link pode suportar. São assuntos
relacionados, mas diferentes.

10. Fazer um script. Todo profissional de TI tem de saber executar um
script para ter resultados rápidos. Isto não significa que você deve
ser um programador.

11. Fazer back up. Antes de fazer qualquer coisa, para o seu próprio
bem, faça o back up.

12. Testar os backups. Se você não tentou recuperar o back up, ele não
está completo.

13. Documentar. Nenhum de nós quer ter que adivinhar o que você fez.
Escreva e deixe guardado em um local onde todos possam encontrar.
Mesmo se o que você fez for algo óbvio, documente.

14. Ter lido “The Cuckoo’s Egg”. Este é, provavelmente, o melhor livro
de securança que já foi publicado. Não porque ele é muito técnico, mas
exatamente por que ele não é.

15. Trabalhar a noite toda em um projeto em equipe. Ninguém gosta de
fazer isso, mas é parte do trabalho de TI. Além disso, essa
experiência constrói um bom nível de camaradagem.

Pobreza – Blog Action Day

outubro 15, 2008

Talvez você esteja se perguntando “o que pobreza tem haver com um blog sobre TI?”
Bem, hoje é o Blog Action Day 2008, e o tema dessa vez é pobreza. O assunto a princípio pode não estar ligado a tecnologia da informação, porém analisando melhor percebemos que um dos grandes diferenciais para que o ser humano tenha condição de sobreviver é a informação.

Com esse pensamento percebemos o quanto que é importante a educação, mesmo para nós que temos uma cultura de assistencialismo, onde acreditamos que ajudando os mais necessitados com doações (esmolas) estamos fazendo o bem e contribuindo para a sociedade, quando na verdade, estamos apenas alimentando uma prática que não tem fim.

Afinal, temos que dar condição as pessoas para que elas mesmas possam se ajudar, o famoso “ensinar a pescar e não dar o peixe”. Por isso vamos aproveitar essa data para expor nossas opiniões sobre essa que é umas das maiores batalhas já enfrentadas na nossa história, contra a pobreza. Uma batalha que tem como objetivo a própria sobrevivência e não a matança do próximo.

Agora escrevendo esse post, me lembro de outras redações que fiz com essa tema (tirando as redações de “minhas férias” esse foi o tema que mais escrevi), e o que me entristece é saber que o mundo pouco mudou.
Mesmo com o boom da tecnologia e do progresso, ainda há pessoas passando fome e morrendo por causa da falta de alimentos. Um dos dados mais preocupantes é o de que a cada 2 segundos uma pessoa morre de fome.

O intuito do post não é ser sensacionalista, principalmente em uma época de eleições onde todos tem boas intenções e poucas ações, e sim de refletir sobre como nós profissionais de TI podemos contribuir contra a pobreza, e quando digo contribuir não é mudarmos totalmente nossa rotina e começarmos a ajudar as pessoas necessitadas de uma forma desordenada. Lógico, se você puder fazer uma contribuição desse tipo, participação em ONGs e etc, será excelente.

Uma das desculpas mais usadas para não ajudar é a de falta de tempo, por isso temos que pensar em como acrescentar algo em nossa própria rotina que possa vir a contribuir com os mais necessitados. Mesmo sendo pouco o importante é ajudar. Para citar alguns exemplos:

  • Doação de computadores para a inclusão digital;
  • Ministrar cursos em instituições carentes;
  • Discutir o assunto em fóruns, blogs, mesas de café, etc (pois você poderá influenciar ou até criar novas idéias);
  • Fazer comunidades que tratam sobre o assunto;

Abaixo segue alguns links interessantes:

http://www.mutiraodigital.org.br/

http://www.inclusaodigital.gov.br/inclusao/outros-programas

http://www.portaldovoluntario.org.br/site/

Muitas vezes queremos mudar tudo no mundo de uma só vez e isso é algo praticamente impossível, por isso temos que buscar executar ações que possam primeiramente causar mudanças no nosso mundo (trabalho, faculdade, amigos, etc). E uma ajuda indireta, como por exemplo, a do You Tube, que criou o “In My Name” (Em Meu Nome, em inglês), um esforço global para chamar a atenção em relação aos oito objetivos fixados pelas Nações Unidas em 2000 para combater a pobreza mundial, pode causar “comoção” de empresas e governos, estes últimos sendo os verdadeiros responsáveis pela execução das ações diretas na sociedade.

Revisado por:

Rodrigo Ribeiro

Ubuntu 8.04 Server no VirtualBox 2.0.2

outubro 14, 2008

Após instalar o Ubuntu 8.04 LTS Server Edition no Virtual Box 2.0.2 é exibida a seguinte mensagem durante o boot da máquina virtual:

Starting up …
This kernel requires the following features not present on the CPU:
0:6
Unable to boot – please use a kernel appropriated for your CPU.

Isso acontece pois o kernel padrão do Ubuntu Server utiliza o recurso PAE e a configuração padrão do VirtualBox não habilita suporte a esse recurso na máquina virtual.

Para ativar o PAE edite a configuração da máquina virtual (botão direito, Settings) e ative a opção Enable PAE/NX como indicado abaixo:

Agora é só ligar e se divertir!

Postado originalmente em http://marcoshack.blogspot.com/

Sun Tech Days

outubro 13, 2008

Foram dois dias de evento em primeiro momento houve a recepção de boas vindas em seguida uma explicação geral e demonstrações sobre alguns dos temas que seriam abordados nas demais palestras dentre os quais destaquei aqueles que mais me interessaram e onde pude assimiliar mais conhecimento. Fiz uma explicação rápida e resumida sobre estes assuntos e os pontos que achei mais interessantes.

EJB 3.1 , GlassFish V3 , NetBeans

Foi apresentado o Glassfish V3 que vem com a opção de instalar um container EJB e plugin para o NetBeans. Em seguida foi destacado que na nova especificação de EJB s ( EJB 3.1 )um cliente pode invocar um session bean de maneira síncrona ou assíncrona. Invocações assíncronas são as novidades que nos permite efetuar uma chamada a um método remoto ou seja um metódo assíncrono que leva a assinatura @Asynchronous e não precisarmos esperar o seu retorno, a assinatura do método deve ser void, ou o método pode retornar um objeto do tipo java.util.concurrent.Future que fornece métodos para verificar se o retorno já chegou permitindo verificar as exceções ou cancelar a chamada ao método durante a sua execução.

Outra novidade comentada com relação ao EJB 3.1 foi o fim das interafces para objetos locais, ou seja, o cliente que irá chamar o método deve estar na mesma JVM. Um session bean sem interface é uma variação de um EJB local, expondo os métodos públicos da classe bean sem utilizar uma interface de negócio separada para isso. A referência para o Bean sem interface pode ser passada como um parâmetro, método de uma classe ejb sem interface ou retorno de uma interface de negócio local. A implementação do contêiner para estes Beans é a mesma que fazemos quando acessamos um método qualquer de uma classe pela referência, o método de negócio da instância do session bean e seus interceptors são invocados conforme necessário. Somente os métodos públicos da classe bean podem ser invocados através do Bean sem interface. Invocar métodos com outros modificadores lançarão javax.ejb.EJBException. Assim fica mais simples criar EJBs, o código fica mais limpo sem as interfaces e a programação mais próxima de objetos POJO, mas não podemos usar operador new para instaciar objetos, podemos usar apenas jndi ou injeção. A palestra sobre EJB falou sobre utilizar JPA (Java Persistency Api) uma api para persistência de dados em java, que eu particularmente acho bem interessante. E falou também sobre AOP Aspect-Oriented Programming recurso com o qual é possível fazer coisas bem interessantes como separar o log da camada de lógica de negócios.

NetBeans

A nova verão do NetBeans possui muitas novas funcionalidades como a possibilidade de editar códigos em Ruby, C/C++ e PHP que são alguns dos destaques assim como o debug de código javascript e o fato de estar mais leve. A versão completa tem 183 MB e já vem com o servidor do Apache Tomcat. O objetivo é combater o Eclipse que possui cada vez mais usuários.

PHP – Quercus Quercus é uma tecnologia, open-source, para implementação da linguagem PHP. Os desenvolvedores podem utilizar PHP sem ter que instalar o interpretador padrão PHP já que o Quercus assume o papel de motor do PHP. Quercus implementa PHP 5 e possui internacionalização / localização (i18n/l10n). Quercus nativamente suporta Unicode e a nova sintaxe Unicode do PHP 6. Quercus implementa uma crescente lista de extensões PHP (APC ou seja, iconv, GD, gettext, JSON, MySQL, Oracle, PDF, Postgres, etc). Na minha opinião muito interessante para migrações PHP – JAVA e também já ouvi falar em MVC utilizando Quercus onde o View seria feito em PHP e os demais em JAVA o que geralmente é usado como parte de um processo de migração PHP – JAVA.

Diamond Powder

O desenvolvedor de MIDlets deve conhecer bem LCDUI e RMS – duas APIs fundamentais do profile MIDP. Enquanto LCDUI é usado para a construção de interfaces simples, RMS efetua a persistência de dados no dispositivo. Muitas vezes uma aplicação MIDlet, dentre outras responsabilidades, tem que implementar funcionalidades de coleta de dados. Coletor de dados é o componente de software que, auxília o usuário a tomar notas de informações, além de gerenciar o armazenamento e posterior recuperação das mesmas. Diamond Powder é um framework open source para Java ME que acelera a criação de coletores de dados em aplicações baseadas em MIDlets. Um coletor de dados gerencia uma seqüência de formulários, com campos de texto, calendários, listas de opções e telas de help. Para descrever um coletor de dados o Diamond Powder utiliza um formato de configuração bastante simples e direto montando o formulario com campos para entrada de dados em tempo de execução, caso seja necessária alguma alteração é possível entregar uma nova versão de um schema em tempo de execução (via SMS, HTTPConnection, …) para o MIDlet, dispensando o redeployment do mesmo.

Super Crud

Uma ferramenta open source, claro que gera um CRUD bem customizado. Funciona on line e trabalha com tecnologias como JSF É possivel clonar e/ou herdar a arquitetura de outros desenvolvedores , a comunidade já possui 52 desenvolvedores e pretendem incluir o diamond powder futuramente

Ajax

Após a introdução que explica o que é o ajax ,a sua importância e o quanto este esta sendo utilizado nos dias atuais foram citadas diversas ferramentas para trabalhar com ajax como DWR , GWT , Jquery entre outras.

JQuery é um framework java para trabalhar com ajax assim como dwr e os demais citados acima, alem de todas as vantagens de trabalhar com ajax foram mostradas algumas vantagens do jquery JQuery possui ferramentas úteis para a manipulação de históricos de páginas. Ou seja, a cada evento ocorrido na mudança de conteúdo ele automaticamente adiciona um momento” no histórico. Trabalha com handlers, animações, eventos, e interações Ajax Facilidade de uso e portabilidade Plugins como LightBox

Comet e Ajax – foi exibida a técnica de Push Ajax, onde o servidor envia informações ao browser sem requisição do usuário.

JMaki – um conjunto de widgets ajax prontos para serem utilizados em páginas web Foram exibidos dois exemplos: Um deles eram exibidas fotos em dois browsers e quando alterava -se em um a foto era trocada no segundo browser também O segundo exemplo foi um jogo da velha onde cada usuário poderia jogar em um browser e dois veriam as mesmas alterações pois a jogada de um aparecia em um browser e vice – versa.

JAVA SE 6 Update 10

a caracteristica mais citada e mais interessante na minha opiniao foi o download do JRE on demand, onde não é necessário instalar todo o JRE , apenas as bibliotecas necessarias para a aplicação, podem ser adicionadas mais bibliotecas com o tempo se necessário podem ser utilizados arquivos sh , bat e js para este fim.

JAVAFX

Uma plataforma open source para desenvolvimento em java onde é possivel criar animações e aplicativos ricos para internet e interação com o usuário. Oferece todos os recursos encontrados em swing java, trabalha com cenas, frames e timelines , possui as mesmas opções de deploy de uma aplicação comum , um sistema JavaFX Mobile para dispositivos móveis e uma linguagem própia chamada JAVAFX Script

JavaFX Mobile é um novo sistema operacional baseado no kernel do Linux e com uma JVM portátil que pretende levar o Java ao mercado dos smartphones

JavaFX Script é uma linguagem de programação de script e orientada a objetos , diferente do java comum para o desenvolvimento de interfaces Swing/AWT/Java2D de forma mais fácil com sintaxe simplificada. Já existem plugins para NetBeans e Eclipse

Encontro Ágil 2008

outubro 13, 2008

Neste sábado, dia 11 de outubro, eu e o Joemir fomos ao Encontro Ágil. Este é um evento gratuito sobre desenvolvimento ágil de software. O evento aconteceu no IME-USP, Institudo de Matemática e Estatística da USP. Os professores do IME foram um dos primeiros a abordar o XP e as metodologias ágeis dentro das universidades, criando inclusive uma disciplina dentro do curso de ciência da computação.

O evento foi organizado pela Agilcoop. Criada em 2005, a Agilcoop é uma cooperativa de alunos, ex-alunos e professores do IME. Eles disponibilizam muito conteúdo no site deles (www.agilcoop.org.br). Muito boa a iniciativa deles, produzindo conteúdo que possa ser utilizado por outras pessoas, espalhando o conhecimento sobre as metodologias ágeis.

O conteúdo das palestras foi muito bom e a organização também. Teve até almoço e coffee-break, hehe…
Irei comentar um pouquinho sobre as palestras que assisti.

Planejamento Ágil de Projetos

O Dairton falou sobre como podemos planejar um projeto ágil, quais as características e benefícios deste tipo de planejamento.Palestra muito boa!

Ele mostrou o principal problema do planejamento tradicional que é o fato de planejarmos tudo que iremos fazer em detalhes no início do projeto, justamente o momento que conhecemos menos do que devemos fazer.

Mostrou também algumas causas para falhas nos projetos atuais e como podemos planejar um projeto de forma ágil. Vale a pena dar uma olhada na apresentação dele, foi muito boa!

Debate sobre CMM, RUP X metodologias ágeis

Este debate foi bom e como em todo debate encontramos opções variadas. Resumidamente, minha opinião sobre este assunto é:

CMMi é um selo muito bom para empresas que desejam desenvolver software aqui ou no exterior. Porém, muitas empresas não focam em qualidade, cliente bem atendido e só no procedimento. Aí, o CMMi vira um elefante branco. E o mesmo pode acontecer com as práticas ágeis, principalmente se as pessoas que estão implementando não acham a simplicidade do processo algo importante.

Acho que não podemos dizer que o CMM e RUP não prestam para nada e metodologias ágeis são o futuro, embora eu goste muito mais das metologias ágeis. As metodologias ágeis estão à frente em um quesito, a satisfação do cliente em primeiro lugar.

Seja para RUP, XP, Scrum ou CMM, temos que nos esforçar em produzir métricas que indiquem o quanto de valor e qualidade estamos entregando para o cliente, e não se estamos fazendo certo ou não uma determinada tarefa.

O debate foi polêmico, bem conduzido e muito agradável de assistir.

Dificuldade na implantação de métodos ágeis
O professor Dr. Fabio Kon do IME fez uma apresentação das dificuldades encontradas na apresentação dos métodos ágeis. Ele já trabalha e estuda métodos ágeis desde 2001. Nesta apresentação ele iria apresentar somente problemas e não soluções.

Resumidamente, os problemas encontrados são: Apoio de instâncias superiores, a equipe não quer implementar, iteração com outros departamentos e clientes que não conhecem ou estão adaptados ao uso do XP.

A maior parte das dificuldades não estão relacionada ao código, tecnologia ou metodologia e sim as pessoas. É muito importante se preocupar com elas e como elas enxergam a metodologia que está sendo implantada.

De negativo somente o fato que ele focou muito em XP, polemizando com Scrum e outras técnicas. Acho que não se deve levantar a bandeira que somente o XP é bom, RUP é ruim, Scrum é mais ou menos. Temos que enxergar os benefícios que cada técnica traz.

Bate-papo sobre testes automatizados

O Jorge Diz da Globalcode estava fazendo uma apresentação sobre Desconfiométricas. Ele é um bom palestrante, já havia visto uma palestra dele no OpenTDC. Algo muito importante em sua palestra é o que ele diz que mais do que focar em métricas, temos que entender qual a dinâmica do processo, para saber realmente quais informações devem ser medidas.

Depois iniciou-se um debate sobre testes e testes automatizados. Foi um debate morno em que era possível ver que todos possuem problemas em criar e principalmente manter os testes automatizados. E de acordo com o perfil e a posição que defendiam, era possível ver aqueles que eram testers e os desenvolvedores (hehe).

Não ficamos para a última palestra, mas o evento foi muito bom e podemos ver que muitas pessoas estão interessadas e estudando o assunto.

Até mais,

André

Renovar é preciso

outubro 13, 2008

Durante as décadas de 1950 e 1960, as indústrias siderúrgicas dos Estados Unidos eram criticadas pela falta de investimentos em suas instalações físicas. A administração dessas indústrias tomava decisões contrárias a se fazer os investimentos de capital necessários para que elas pudessem se manter competitivas em seus principais negócios.

Na mesma época pessoas diziam “Se eles não estão dispostos a investir em seus próprios negócios merecem perder participação no mercado”. Essas palavras podem voltar para nos assombrar.

Ainda hoje há milhares de aplicações críticas que se encontram em dramática necessidade de renovação, como por exemplo, softwares escritos a mais de 20 anos que já passaram por 40 gerações de mudanças e que agora são virtualmente impossíveis de ter manutenção. E que em muitas vezes a manutenção só pode ser feita pelo desenvolvedor do software que já deve está aposentado ou nos piores dos casos a sete palmos do chão.

Bem, o meu intuito não é ser um sonhador inocente e dizer que as aplicações DEVEM ser mudadas e atualizadas, afinal muitas das aplicações feitas em COBOL, funcionam muito bem e o risco de uma migração para outra linguagem torna inviável tal migração. O que gostaria de passar aos caros leitores é que renovação é algo extremamente necessário na nossa área, TI num todo, o surgimento de novas tecnologias conseguem fazer brotar novas necessidades nos consumidores, exemplo disso, o iPod que se fosse mostrado para o seu pai há 20 anos atrás ele provavelmente diria “para que vou precisar disso se tenho a minha TV de 32 polegadas!?”. Hoje o iPod é um dos produtos mais vendidos e populares no meio do público jovem, mesmo que muitos ainda o usem, na maioria das vezes, como um tocador de música, por causa do medo de ser assaltado.

A renovação é necessária tanto para uma pequena empresa, quanto para uma grande empresa. E se a sua empresa não costuma ter essa preocupação, é melhor ele começar a se preocupar, afinal você acha que o Google oferece um ambiente descontraído e ainda 20% do tempo de trabalho para os seus profissionais se dedicarem a projetos próprios, porque eles são bonzinhos? Eles sabem que a renovação, assim como a inovação, não é algo que depende apenas do alto escalão da empresa, mas também dos demais funcionários e ela só poderá se manifestar quando levantarmos a nossa cabeça, do teclado, e começarmos a pensar.

Coloco abaixo, um trecho extraído do livro de Engenharia de Software do Pressman, sendo ele na verdade uma citação do texto de Feigenbaum e Mccormick no livro The Fifth Generation, que deixa no final uma pergunta, cuja resposta podemos encontrar em qualquer manchete de jornal nos dias de hoje:

Conhecimento é poder, e o computador é um amplificador desse poder… A indústria americana de computadores tem sido inovadora, vital, bem-sucedida, Ela é, de certa forma, a indústria ideal. Ela cria valor ao transformar o poder cerebral de trabalhadores que detêm conhecimentos, com pouco consumo de energia e de matérias-primas. Hoje [1983], dominamos as idéias e os mercados mundiais nesta que é a mais importante de todas as tecnologias modernas. Mas o que acontecerá amanhã?

Para encerrar vou deixar uma frase baseada na seguinte frase popular: “Obter o sucesso é fácil o difícil e se mantê-lo“. Frase que pode se adaptada da seguinte maneira:

Inovar não é o mais difícil, o difícil é renovar.

Fonte:

Pressman R., Engenharia de Software (terceira edição), São Paulo, Pearson Makron Books, 2006. São Paulo.

VoIP, O que é isso?

outubro 8, 2008

Segundo wikipédia…

Voz sobre IP, também chamado VoIP, telefonia IP, telefonia Internet, telefonia em banda larga e voz sobre banda larga é o roteamento de conversação humana usando a Internet ou qualquer outra rede de computadores baseada no Protocolo de Internet, tornando a transmissão de voz mais um dos serviços suportados pela rede de dados.

Loucura não? Repetindo a pergunta.. O que é isso ?

Voz sobre Protocolo de Internet. É um método para transmitir sinais de áudio analógicos, como aqueles que você ouve quando fala ao telefone, e transformá-los em pacotes de dados IP, que podem ser transmitidos pela internet.

Hum… Tá! E pra que isso serve?

O VoIP pode transformar uma conexão de internet em uma maneira de fazer ligações telefônicas gratuitas. Ou seja, usando algum dos vários softwares VoIP gratuitos que estão disponíveis na internet, você pode dispensar os serviços de companhias telefônicas e suas tarifas.

Aaaah, entendi. Mas, como funciona isso?

O interessante do VoIP, é que não há apenas uma maneira de fazer uma ligação. Hoje em dia, temos três maneiras de utilizar este serviço. São elas:

  • ATA: Maneira simples e comum. Trata-se de uma Adaptador Telefônico Analógico, que permite conectar um telefone comum ao seu computador ou a sua conexão de internet. O ATA é um conversor analógico-digital, que pega o sinal analógico de seu telefone e converte em dados digitais para a transmissão via internet.
  • Telefones IP: São telefones específicos, parecem com os telefone comuns, possuem monofone, gancho e teclas. Os telefones IP são conectados diretamente em seu roteador e contêm todo o hardware e software integrado para fazer uma ligação VOIP.
  • Softphones: Esta é a maneira mais fácil de utilizar o VOIP.Tudo que você precisa é de um software (programa de computador), um microfone, alto-falantes, uma placa de som e uma conexão com a internet, preferencialmente uma conexão rápida a cabo ou com modem DSL(obs: acho que não é preciso falar que é necessário o computador também, né?). Existem várias empresas oferecendo esse tipo de software gratuitamente ou de baixo custo.

Certo… E, porquê VOIP é mais barato ou até mesmo de graça ?

Bem, essa é a parte onde ocorre muitos falsos entendimentos, vamos por parte.
Assumindo que o Voip consiste na transmissão da voz sobre a rede de dados IP (Internet), em uma ligação que ultilize somente essa estrutura (ex. Skype p/ Skype) ou seja, não são ligações que tem terminação na PSTN(rede de telefonia convencional), essas GERALMENTE não são cobradas. Pelo simples fato de que
trafegar pacotes pela rede Internet não requer grandes custos. Por que nao? Porque a estrutura já existe. Ela pode chegar a qualquer lugar, desde que conectado a Internet. Nesse tipo de ligação, é como se não houvesse distinção geográfica. Essa é a grande “sacada” do Voip.

Mas, e se eu quizer ligar para um número normal (DID / DDR), vai ser cobrado?

Claro que sim. Só que bem mais barato.
Por que? Porque na maior parte da ligação, utiliza-se a estrutura IP (Internet, porque ela abrange todo o globo e nao requer custos adicionais) e so então perto do destino ela “cai” para outro tipo de estrutura, que é a PSTN, e enfim é direcionada para o destino desejado. Esse interfaceamento de, digamos, mundos (VOIP / PSTN) é feito por meio de um gateway, este converte os protocolos Voip em outros que a PSTN entende e vice-versa, possibilitando ligações originadas do serviço VoIP para PSTN e vice-versa.
Em outras palavras, em uma ligação originada de um serviço VoIP no Japão para um DID de Sao Paulo, Brasil, ela chega ao Brasil por meio do VoIP e só entao é entregue à operadora (utilizando o interfaceamento do Gateway) que detem o DID. No final das contas a tarifação desta chamada é Local, pois percorreu pouco a estrutura da telefonia convencional.

Ok… Vamos aos Pontos Positivos….

Com a utilização da telefonia VoIP, é possível uma grande flexibilidade em relação a usabilidade. Por exemplo: encaminhamento de chamadas(quando ocupado, não atendido ou até mesmo para todas as chamadas recebidas, enviando-as para uma caixa de mensagem, ou para outro telefone qualquer), conferências, transferências e tudo isso com um custo bem mais acessível. Essas funcionalidades, variam de acordo com sistema VoIP utilizado.

Tem Pontos Negativos?! É claro que sim, nem tudo é perfeito…

Podemos considerar os pontos negativos, como desafios, problemas a serem resolvidos. No caso da telefonia VoIP, alguns deles são variações de atraso, perda de pacotes, eco e segurança. A grande causa do atraso e perda de pacotes (resultando na falha momentânea de áudio em uma conversa) é o congestionamento, que pode ser controlado por gerenciadores de congestionamento de rede.
O principal problema é que qualquer falha na rede em si ou em queda de energia, o sistema de telefonia ficará parcialmente, ou até mesmo totalmente indisponível, em outras palavras nem o “190” irá funcionar.

Mas então, se acabar a energia e eu precisar fazer uma ligação de emergência…?

Esse é um dos fatos que fazem o VoIP ser bem mais utilizado por empresas do que em casas. Empresas geralmente possuem nobreaks ou geradores de energia para que seus sistemas em si, não parem em caso de falta de energia, sendo assim, é possível manter o VoIP funcionando.
Para usar em casa, ficaria um tanto quanto caro, manter uma estrutura só por causa do VoIP, mas mesmo assim, muitas pessoas aderem esse serviço. Porque? Todo mundo hoje tem celular, ou seja, em caso de emergência, ligue do celular. 😉

Concluindo…

Na medida em que a tecnologia vem se desenvolvendo, conexões mais rápidas, novos sistemas VoIP mais flexíveis e até mesmo mais estáveis surgem fazendo com que os desafios sejam superados.No próximo post, iremos debater um pouco sobre os dois tipos de telefonia.

Espero que tenham gostado! : )

Escrito por:

Adelson Junior
Juliana Taguchi
Wesley Volcov