Esta chegando o Just Java 2008, em Setembro no mês do Java a festa do Just Java será em São Paulo nos dias 10, 11 e 12 de Setembro. Será a 7a edição do principal evento da Comunidade Java Brasileira.
Serão 3 dias com várias palestras relacionadas a Java e agora com alguns temas sobre Agile, hora de aprender um pouco mais, rever os amigos e reforçar o Networking.
Eu vou representar no Just Java com duas palestras junto com meu grande amigo Renato Bellia, no dia 10 ás 15:00 hs com a palestra Java EE 6 / EJB 3.1 e o Futuro do Java Corporativo no auditório superior 2, e no dia 11 de Setembro será a vez de falar do framework Diamond Powder - Produtividade OpenSource para JavaME, que é um projeto criado pelo Bellia.
Neste projeto do Diamond Powder, tive a felicidade de participar com o desenvolvimento de um plugin para o NetBeans para facilitar a criação do Schema, que é um Hashtable que descreve o os campos do coletor, as páginas, fluxo de navegação com opção de persistência.
Você que desenvolve aplicativos embarcados vale a pena conhecer este framework!!
Site do Evento: http://www.sucesusp.org.br/justjava2008/
Grade de Palestras: http://soujava.org.br/display/v/Grade+de+Palestras
Diamond Powder no java.net: https://diamond-powder.dev.java.net/
Blog do Diamond Powder: https://diamond-powder.dev.java.net/
Participe, é diversão garantida !
Just Java 2008
domingo, 31 de agosto de 2008
Postado por Wagner Santos às domingo, agosto 31, 2008 0 comentários
Entendendo REST (REpresentational State Transfer)
quarta-feira, 27 de agosto de 2008
Você já precisou explicitamente utilizar algum método (PUT, DELETE, POST, GET) do protocolo HTTP, muito dificil, geralmente quando o fazemos, nós fazemos isto ao desenvolver uma aplicação web para especificar o tipo de submit, enfim, agora encontraram uma solução muito útil para utilizar os tais métodos, que é através de REST (REpresentational State Transfer), que é o nome dado por Roy Fielding em sua tese de doutorado, muita gente confunde REST com Web Services SOAP, mas ambos são totalmente diferentes.
REST são serviços stateless e arquiteturas baseadas nela são construídas a partir de "pedaços de informação" únicas identificadas por URIs. Em sistemas REST, os recursos são manipulados através da troca de representações do recurso.
Ex.:
http://netfeijao.blogspot.com/colecao/marvel/spiderman/3
Neste exemplo, atráves desta URI estamos definindo como a URI mapeia nossos recursos, no exemplo fica muito fácil entender como funciona, identificamos nossa chave primária (3) no último elemento, e o nome da coleção (spiderman), podemos ainda definir um serviço que me retorne uma coleção de objetos do spiderman caso seja omitido a chave primária,
Por as URIs serem únicas ganhamos uma busca otimizada e posso ter multiplas representações oferecendo esta informação em vários tipos de formatos como XML, JSON e XHTML.
Temos um DE-PARA dos métodos HTTP com as funções CRUD que queremos desempenhar em um sistema baseado em REST, conforme tabela abaixo:
Características dos métodos HTTP em REST
Método GET.
Utilizado para retornar informação de acordo com a URI informada.
Não deve uma mudança de estado
Fica no cache.
Método POST
Utilizado para adicionar uma nova inforamação
Métodp PUT
• Utilize PUT para alterar uma informação
• Controle total na entidade utilizada quando o ID ou chave primária é conhecido
Ex.: PUT /colecao/marvel/spiderman/3-456789012
Método DELETE
Remove (logicamente) uma entidade
Ex.: DELETE /colecao/marvel/spiderman/3 (Exclui Spiderman nº 3)
Benefícios do REST.
Serviços baseados em REST são muito fáceis de entender e de se trabalhar, pois o cliente que vai utilizar o serviço REST não precisa utilizar nenhuma API especializada, ele utiliza apenas HTTP padrão =), podemos usar nosso browser para testes e experimentos.
URI é uma maneira uniforme de identificar recursos e o HTTP é o meio utilizado para manipular estes recursos.
Fácil consumir e desenvolver com linguagens de scripting..
Web Services SOAP vs Serviços REST
SOAP WS.
- Poucas URIs, muitos métodos customizados
- comicsPort.getComics("spiderman")
- Utiliza HTTP para trafegar mensagens SOAP.
- Muitos padrões (WS-*)
- Deve seguir um contrato WSDL.
ex: Serviço de venda de quadrinhos
comicService.vender("spiderman", 3, 250);
RESTful WS.
- Muitos recursos (URIs), poucos métodos fixos.
- HTTP é o protocolo de transporte.
(Resource-Oriented Architecture)
ex: Recurso de venda de quadrinhos
POST /colecao/marvel/spiderman/3-250
Para a construção de serviços baseados em REST em Java, foi disponibilizada o JAX-RS, que é uma API para Web Services RESTful, em breve vou blogar com exemplos no GlassFish
Postado por Wagner Santos às quarta-feira, agosto 27, 2008 0 comentários
Marcadores: Artigos, REST, Web 2.0, Web Services
[Getting Real] Caindo na Real no Desenvolvimento de Software
sexta-feira, 15 de agosto de 2008
- Menos funcionalidades
- Menos opções/preferências
- Menos pessoas e estrutura empresarial
- Menos reuniões e abstrações
Postado por Wagner Santos às sexta-feira, agosto 15, 2008 0 comentários
Marcadores: Agile, Artigos, Engenharia
Engenharia de Software: 40 Anos de sofrimento e aprendizado
quinta-feira, 7 de agosto de 2008
Um pouco de história:
Modelo Cascata ou Waterfall:
Nas empresas que passei, pelo menos a maioria, posso dizer que trabalharam (ou trabalham) com o método cascata para o desenvolvimento de software, que tem seus prós e contras, o problema é que este modelo foi concebido nos anos 70 por W. W. Royce, e consiste na evolução de cada fase do projeto de forma sequencial (Figura 1), vemos na imagem que o primeiro quadrado inicia-se pelo "Requerimento", ou seja, é aquela fase do projeto que demora até meses para ser feita, onde o analista tem que coletar todas as informações pertinentes do projeto e definir os seus requisitos.
Pois bem, uma vez definido os requisitos e fechado o contrato ou a SLA, é montado o cronograma e iniciando a segunda fase deste modelo, a fase do "Projeto", e aí é que geralmente os problemas começam, pois muitas vezes, o cliente ao especificar um projeto não tem nem certeza do que quer, apenas uma idéia, ficando para o analista decifrar tudo o que cliente quer, e quando os requisitos chegam para os desenvolvedores, muitas vezes estes não tem nem contato com o usuário, e tem que se virar com o entendimento baseado nos documentos de especificação, o máximo é uma conversa rápida com o analista, e quando possível.
Outro problema é que estes projetos, são estimados em torno de 3 - 6 meses, e conforme o tempo vai passando, acontece coisas com o cliente e ele começa a esquecer o que foi acordado, sobrando para o pobre desenvolvedor que acaba tendo que refatorar o código para atender a necessidade do usuário, e no modelo cascata não podemos voltar uma fase, conclusão, projetos mal sucedidos, ou atrasados, ou o produto acaba não atendendo o cliente.
Modelo Espiral:
Para tentar acabar com estes problemas conhecidos do Modelo Cascata, em 1988 Barry Boehm escreveu um artigo “A Spiral Model of Software Develpement and Enhancement” , que propõe um desenvolvimento iterativo e incremental que podem chegar de 6 meses a 2 anos,
Vantagens deste modelo:
• O Modelo em espiral permite que ao longo de cada iteração se obtenham versões do sistema cada vez mais completas, recorrendo à prototipagem para reduzir os riscos.
• Este tipo de modelo permite a abordagem do refinamento seguido pelo modelo em cascata, mas que incorpora um enquadramento iterativo que reflete, de uma forma bastante realística, o processo de desenvolvimento.
Desvantagens:
• Pode ser difícil convencer grandes clientes (particularmente em situações de contrato) de que a abordagem evolutiva é controlável.
• A abordagem deste tipo de modelo exige considerável experiência na avaliação dos riscos e baseia-se nessa experiência para o sucesso. Se um grande risco não for descoberto, poderão ocorrer problemas.
• Este tipo de modelo é relativamente novo e não tem sido amplamente usado.
• É importante ter em conta que podem existir diferenças entre o protótipo e o sistema final. O protótipo pode não cumprir os requisitos de desempenho, pode ser incompleto, e pode refletir somente alguns aspectos do sistema a ser desenvolvido.
• O modelo em espiral pode levar ao desenvolvimento em paralelo de múltiplas partes do projeto, cada uma sendo abordada de modo diferenciado, por isso é necessário o uso de técnicas específicas para estimar e sincronizar cronogramas, bem como para determinar os indicadores de custo e progresso mais adequados.
RUP:
Nestes 3 últimos anos especificamente, tenho trabalhado com um híbrido de RUP, e nas minhas experiências não tenho tido o sucesso desejado, vendo a causa pude chegar a conclusão que para uma metodologia desta dar certo não dependendo só dos templates do método e das fases estabelecidas mas da cultura da empresa e das pessoas envolvidas, pelo menos nos locais onde trabalhei com esta metodologia as pessoas trabalham com RUP em uma forma cascata, e RUP pode será ágil, que é o que mostra o artigo RUP Ágil de José Papo em seu blog. Mas mesmo assim, as pessoas tendem a trabalhar com um RUP mais “pesado”, com um excesso de documentação a ser preenchida, onde para cada passo que é dado, é preciso de assinaturas dos envolvidos.
Ou seja, essa situação faz com que as pessoas envolvidas no processo (leia-se cliente, fornecedor, terceiro) acabam entrando em conflito, pois imagine a seguinte situação, eu tenho um determinado cliente que pede uma determinada funcionalidade no sistema DELE, após eu(analista) colher o requisito, eu tenho o trabalho de documentar isso em um documento definindo as fronteiras do sistema, identificando principais envolvidos/interessados e priorizando suas necessidades, e os requisitos funcionais e não funcionais, pois bem, depois de todo este trabalho, antes de fazer qualquer coisa eu tenho que pegar um documento assinado ou email, provando que foi uma solicitação real e será implementada de acordo com a especificação.
É normal que o cliente terá receio de assinar qualquer documento, pois na cabeça dele, ele pensa que se acontecer alguma coisa errada no processo, a culpa irá recair sobre ele por causa deste documento assinado. Isso vai gerando um desconforto muito grande entre os envolvidos, e o atraso é evidente pois para cada passo é preciso da aprovação do cliente, cada fase do projeto é auditada. Então me diga, Cadê a agilidade?
Lembro que estas foram as minhas experiências com RUP.
Será que não tem algo errado nisto ? Por quê muitas empresas utilizam processos de desenvolvimento de 40 anos atrás, sendo que todo ano é publicado o relatório do Caos pela Standish Group International, onde até o ano passado, 1 entre 3 projetos estouram o orçamento,
Foram por causa dessas perguntas que comecei a me interessar por meios alternativos de gerenciamento de projeto, foi quando conheci as metodologias ágeis. E descobri algo que o que realmente faltava nestes processos / modelos / metodologias, e é algo que é o ponto chave em metodologias como SCRUM, é que esta metodologia é centrada em PESSOAS, GENTE, SER HUMANO, agora que as outras não priorizam. Desenvolvimento LEAN. Veja alguns dos principios:
“Indivíduos e interações são mais importantes que processos e ferramentas.”
“Software funcional é mais importantes que excesso de documentação.”
Para uma idéia melhor sobre o que que é manifesto ágil, veja meu outro post Agile Manifesto – Metodologias Ágeis.
E essa descoberta mudou radicalmente o meu processo de pensar, é a solução para todos o problemas? NÃO.
Mas com certeza é um passo muito importante para quebrar o paradigma de desenvolvimento de software tradicional.
Aos poucos vou falar sobre estes processos ágeis, recomendo que você leia as seguintes matéria.
Blog:
Agile Manifesto – Metodologias Ágeis
TDD – Test Driven Development
SCRUM – Uma abordagem prática
Livros:
Agile Software Development with SCRUM
Extreme-Programming-Explained
User Stories Applied
Lean-Software-Development
Postado por Wagner Santos às quinta-feira, agosto 07, 2008 1 comentários
Marcadores: Agile, Artigos, Engenharia, Scrum
The Developers Conference 2008
sexta-feira, 1 de agosto de 2008
Nos dias 26 e 27 de Julho foi realizado o The Developers Conference 2008, um evento organizado pela Globalcode, com patrocinio da JBoss, UOL e a Locaweb. E posso dizer com certeza que este foi o melhor evento de Java no ano até o momento aqui no Brasil.
Caption: Sr. Rubens, Renato Bellia, Melissa e Wagner
O evento agradou ambos os mundos tanto os amantes de metologias ágeis, quanto os amantes do Java,
Pude conferir as seguintes palestras:
Dia 25/07
- KeyNote com Burr Suttler sobre a plataforma SOA da JBoss, passando um ótimo overview com algumas dicas práticas utilizando jBPM, Seam e Drools.
- Arquiteturas SOA com ferramentas Open-Source com Edgar Silva, também outra ótima palestra com direito a uma demo com Rest / jBPM e Seam.
- Depois fui ver a palestra do meu "guru" e amigo Renato Bellia, criador do framework Diamond Powder sobre arquiteturas de Persistência.
- Uma introdução a Restful WebServices com uma interessante palestra com Rafael Nunes.
- JSF 2.0 - Com o "pai da criança" Ed Burns, dando uma visão geral do que vem por aí..
- Java Module System e OSGi em uma palestra com Vinicius Senger, que roubou a cena apresentado OSGi com uma animação usando Sketch up da Google.
- Java EE 6: A Community Update com Reza Rahman, membro do expert group da JSR que define o EJB 3.1, dando uma geral nas novidades da plataforma Java EE 6.
Dia 26/07 Esse dia para mim foi muito produtivo também pude aproveitar muito bem as palestras, acompanhei o Key Note do Ed Burns, sobre o seu recente livro Secrets of the Rock Star Programmers nesta palestra Ed mostrou várias entrevistas com programadores famosos, um momento bem descontraído.
Depois assisti uma palestra muito boa do Manuel Pimentel sobre Modelagem Ágil, dando um overview sobre as metodologias ágeis. A seguir, acompanhei a palestra de Paulo Viragine da JBoss sobre o framework Seam, sem dúvida muito bem "mandada", dando várias dicas de produtividade com o JBoss Developer Studio.
Após a palestra sobre o JBoss Seam, assisti a palestra de Andre Piza da UOL, sobre SCRUM e o case de como eles trabalham e implementaram na UOL, para mim foi muito interessante também, pois pude ver de perto o que o pessoal esta fazendo e o que está dando certo na UOL, recentemente tirei a certificação de Scrum Master e estou tendo a oportunidade de aplicar esta metodologia na empresa que estou prestando serviços atualmente.
Depois acompanhei a palestra Dr. Spock e do Ricardo Jun sobre o leque de opções do Spring, para mim foi interessante, pois para ser sincero não tive a oportunidade de desenvolver com esta tecnologia ainda.
E por fim, acompanhei o que para mim foi um dos momentos mais interessantes do evento, que foi o Painel Gestão, metodologias e processos de software mediado muito bem pelo Jorge Diz da Globalcode, com a presença de vários caras feras no desenvolvimento ágil como Vinicius Teles da ImproveIT, Manoel Pimentel (Visão Agil), André Piza (UOL), Juan Bernabó (TeamWare), Enio Stein (Paggo), José Papo (BRQ) e o pobre Marcos Dorça da Borland levantando a bandeira do CMMI, tive o privilégio de ser o primeiro a fazer uma pergunta (que ficou sem resposta) ao grupo quando foi aberto para o público, e perguntei para o Marcos Dorça como o cara faz para aplicar um modelo de maturidade baseado em CMMI utilizando uma metodologia ágil como SCRUM sem ferir os princípios de agile (entendeu porque ficou sem resposta :D). O que acabou levantando uma polêmica e o pobre rapaz acabou sendo sufocado pelos colegas... mas falando sério, foi um painel muito legal onde todos interagiram e puderam dar os seus pontos de vista !
No geral o evento foi muito bom por outros fatores, pude encontrar amigos como Renato Bellia, Mauricio Leal, Leandro Vil, Vinicius e Yara Senger, Kleber, Melissa, Waldir, Ana, Luca, Edgar Silva, Ed Burns, Jorge Diz, Juan Bernabó, Alessandro Lazarotti, Jefferson Prestes, Fabiano Silva entre outros e também pude conhecer caras incríveis como Reza Rahman, Bruno Ghisi e o Ricardo do GUJSC, Manuel Pimentel e Felipe Rodrigues, este último acabei tendo um contato maior agora com a InfoQ Brasil por intermédio do Manuel Pimentel, ou seja, o evento foi um ótimo local para fazer um network, muito importante na nossa área.
Só achei uma pena uma coisa, pois não pude assistir as outras palestras, como a do Mister M sobre Java SE 7, o comparativo de frameworks, extreme programming e muitas outras.
No mais, parabéns para a Globalcode, e um parabéns especial para o Leandro Vil e para a Yara Senger que organizaram o evento na "unha", espero participar mais vezes desta festa !!!
Sucesso !!!
Fotos do evento
Postado por Wagner Santos às sexta-feira, agosto 01, 2008 0 comentários
Marcadores: Eventos, Globalcode