Arquivo da tag: software

Seja ágil ou seja esmagado!

agile-cloud

Desenvolvimento Ágil não é mais uma forma alternativa de desenvolver software. Com o ritmo de adoção de tecnologia acelerando em um ritmo frenético, desenvolvimento ágil está se tornando a única forma de desenvolver software. Isto é, se você quiser permanecer no, mercado.

Baixando a expectativa a cada release

Desenvolvimento ágil de software refere-se essencialmente a um processo incremental e iterativo de desenvolvimento de software, em oposição à velha escola do método “cascata”, que dependiam de um planejamento inicial de longa duração. Desenvolvimento Ágil pressupõe que os projetos de TI frequentemente falham, apesar de nossas melhores intenções. Ele é, consequentemente, uma forma de minimizar o custo de falhas fazendo com que o processo de desenvolvimento de software seja altamente sensível a alterações.

E, embora o desenvolvimento ágil possa ter sido exclusividade das empresas de tecnologia com pouca burocracia, notadamente as que desenvolvem de aplicações móveis ou web de ponta, ele tem ido agora para o mainstream. Como analista da Forrester Diego Lo Giudice observa:

Within the modern applications era, regardless of whether new software applications are being developed and delivered for mobile, tablets, or the Web, the truly successful app-dev leaders will be those who focus on delivering constant value and incremental improvement to their business. (Na era aplicações modernas, independentemente se novas aplicações de software estão sendo desenvolvidos e entregues para dispositivos móveis, tablets, ou para a Web, os desenvolvedores verdadeiramente bem sucedidos serão aqueles que se concentrarem em entregar valor constante e melhoria incremental para seus negócios.)

É importante ressaltar que as razões para abraçar o desenvolvimento ágil é tanto em razão do antigo método conservador e tedioso quanto o aumento de velocidade de desenvolvimento, como eu ouvi de um executivo da empresa de um (muito) grande serviços financeiros:

OH: “Product stability comes from releasing code more frequently, not less. You want each release to be a non-event, not a major launch.”

— Matt Asay (@mjasay) October 2, 2013

Os tempos estão mudando

Este tipo de abordagem iterativa para o desenvolvimento de software tem sido sempre uma boa ideia, mas está se tornando crítica com a mudança tecnológica e aumento de adoção, como Harvard Business Review mostra:

Tech Adoption Increasing

Tal aumento da adoção, por sua vez, é, sem dúvida conduzido por uma infraestrutura muito mais flexível, particularmente de software. Software de código aberto oferece um enorme conjunto de softwares de qualidade a partir do qual os desenvolvedores podem projetar os seus, uma vez que o hardware acessível por meio das nuvens (Infrastructure-as-a-Service -IaaS) torna trivial para escalar vertical e horizontalmente.

Com isto em mente, o mais novo de dados do Synergy Research Group sobre a adoção de IaaS é tão interessante tanto não porque demonstra que a Amazon domina completamente o mercado, o que nós sabíamos, mas porque mostra o crescimento em todos os principais provedores de nuvem:

iaas-paas-q313-release

Seja qual for o seu provedor, então, a infraestrutura existe para acelerar o desenvolvimento.

Big Data Exige uma abordagem ágil

Isto é particularmente importante em novas áreas de exploração, como Big Data. Como mostra a pesquisa da Gartner, as empresas estão obcecadas em começar com Big Data, mas muitas vezes não têm mais que de uma pista sobre como lidar com esses projetos.

Big Data é novo, e vamos enfrentá-lo: a maioria das empresas provavelmente irá falhar quando começarem seus projetos. Afinal, é quase garantido que as empresas não sabem quais dados capturar, ou a forma de aproveitá-lo, sem tentativa e erro. O desenvolvimento ágil, consequentemente, torna-se crítico para um projeto que venha a falhar, uma vez que tal abordagem reduz o custo de falhas, tanto em termos de tempo e dinheiro.

Isto poderia ser feito em uma abordagem em cascata tradicional? Claro. E muitas empresas quase certamente irão abordar o Big Data e outros projetos dessa maneira, porque eles simplesmente não conhecem nada melhor. Mas não seja essa empresa, ou esse desenvolvedor. O desenvolvimento ágil não é um Santo Graal que vai resolver todos os problemas de um desenvolvedor, mas é uma forma astuta de acompanhar a inovação tecnológica (como o Big Data) e para resolver projetos de desenvolvimento em larga escala.

Fonte: ReadWrite

Agile das equipes à organização: o papel do gerente, estratégias e dicas para a adoção

Para os gerentes de projetos de TI seguindo a linha tradicional, não resta muito tempo até que ouçam algo como “Lembra-se daquele projeto? Decidimos usar nele método ágeis”, e na semana seguinte chegar à empresa uma consultoria em Agile e começar a explicar Scrum, XP, User Stories, Sprints, TDD e uma série de outras técnicas e conceitos. Enquanto isso, o gerente provavelmente irá começar a revirar a internet tentando entender o que fazer, e pode se surpreender ao descobrir que gerentes de projetos aparentemente não são indispensáveis nessas metodologias.

Tenho presenciado muitos gerentes nesta situação, alguns chegando a temer seriamente os métodos ágeis. Por isso a inspiração de escrever um artigo que apresente o Agile para os gerentes de projetos que estão usando práticas mais tradicionais.

Benefícios das metodologias ágeis

Metodologias ágeis, nunca é demais lembrar, são um conjunto de práticas baseados em princípios e valores descritos no Manifesto Ágil. Em 2001 um grupo de experientes líderes de TI, insatisfeitos com o gerenciamento tradicional de projetos de software, reuniu-se e compartilhou novas maneiras para se fazer bom software. Entre as várias metodologias consideradas ágeis, o Scrum e o Extreme Programming (XP) são as mais utilizadas.

O Agile pode resolver alguns dos principais problemas encontrados por um gerente de projetos e trazer diversas vantagens; por exemplo:

  • Identificar, com facilidade e clareza, as funcionalidades do software sendo construído e o que ainda falta fazer;
  • Mostrar de forma efetiva os resultados e o progresso real do projeto;
  • Entregar versões funcionais do sistema, ao invés de somente anunciar atrasos e problemas;
  • Lançar o software antes da data final e mostrar aos usuários que podem contar com novas funcionalidades poucas semanas após a requisição, ao invés de meses ou até anos depois.

O objetivo das metodologias ágeis, portanto, é simples mas ao mesmo tempo desafiador: satisfazer o cliente por meio de entregas contínuas e antecipadas de software, com valor agregado. Entre os benefícios podemos citar:

  • Disponibilizar uma nova versão do software regularmente, a cada duas ou quatro semanas;
  • Poder lidar com pedidos de mudanças e replanejar o projeto em poucas horas;
  • Descobrir os principais riscos e problemas de integração durante as primeiras semanas do projeto, enquanto ainda há tempo de lidar com eles;
  • Visualizar o progresso e o resultado efetivo do projeto a partir de versões intermediárias do software;
  • Manter um alto comprometimento da equipe de TI durante todo o projeto;
  • Conseguir um maior grau de satisfação e de comprometimento da equipe do projeto em sua execução;
  • Reduzir a necessidade de microgerenciamento das atividades.

Para potencializar esses benefícios, é preciso uma grande mudança na forma de pensar e de agir, por parte de todos os envolvidos no projeto e na organização.

O escopo do projeto vai mudar

Tradicionalmente, para garantir um bom projeto o gerente gasta muito tempo reunindo todos os possíveis requisitos que os usuários possam ter em suas mentes. Com o intuito de evitar surpresas, é feito um grande esforço para se construir o plano perfeito. O trabalho é planejado para que tudo possa ser controlado rigorosamente, sem mudanças.

Mas isso quase sempre é impossível. No entanto, este tipo de pensamento tem se tornado comum em grandes empresas, onde planejar, especialmente em conjunto com outras equipes e áreas, é algo muito difícil.

Em um projeto ágil, por outro lado, podemos:

  • Lançar o software regularmente e em datas marcadas (pelo menos em um ambiente de testes), para que os usuários possam verificar rapidamente o trabalho realizado;
  • Permitir aos usuários finais que solicitem mudanças e novas funcionalidades, desde que deixem as menos importantes para depois;
  • Disponibilizar versões intermediárias com frequência, para que os usuários possam utilizar antecipadamente as primeiras funcionalidades do sistema.

Além disso, surpresas são bem-vindas, pois podem criar ideias e favorecer a inovação.

Em projetos ágeis, para controlar o projeto e comunicar o progresso, são contabilizadas as funcionalidades implementadas e não a porcentagem de realização das tarefas, o que é muito mais fácil de entender. Em um projeto tradicional o gerente de projetos diria algo como, “consumimos 45% do orçamento e estamos duas semanas atrasados”. Em um projeto ágil, poderia dizer: “com 45% do orçamento temos hoje uma aplicação capaz de executar estas 12 funcionalidades das 20 previstas”.


A adoção de uma metodologia ágil é um verdadeiro projeto de mudanças

Os métodos ágeis, entretanto, podem ser difíceis de implementar em grandes empresas. Normalmente a gestão de TI acredita que os métodos ágeis dizem respeito apenas aos desenvolvedores e à equipe técnica. Isto é um grande erro, pois elas também envolvem as equipes de gestão e de negócios.

O uso de práticas ágeis apenas no âmbito dos desenvolvedores não vai necessariamente reduzir os prazos globais dos projetos. Os ganhos de produtividade podem ser desperdiçados por outras equipes em outras funções. Se as atividades de testes de integração, por exemplo, durarem muito tempo, os desenvolvedores terão que fazer vários merges das diferentes versões de testes realizadas.

Em muitos casos, o primeiro projeto na adoção de uma metodologia ágil falha devido à falta de envolvimento do patrocinador, à falta de capacitação e treinamento, ou a uma má atuação de alguns “falsas consultorias” em Agile. (Existem consultores que simplesmente rotulam suas ofertas de serviços com a palavra “ágil” sem ter o conhecimento apropriado.)

Negociação do escopo

A negociação de um contrato em Agile é talvez o ponto mais complexo na adoção de práticas ágeis em uma empresa. Isso porque em Agile as mudanças no escopo são bem vindas e constantes. Mas os gerentes de projetos têm muitas dúvidas e resistência ao trabalhar com um escopo variável, principalmente quando não existe uma relação de confiança com o fornecedor.

Há no entanto novos modelos de contratos que procuram criar uma relação de confiança. Entre os pontos abordados nesses contratos, podem estar a definição de escopo fechado por iteração; medidas precisas para controlar a qualidade das entregas; e a possibilidade de o cliente cancelar o projeto ao final de qualquer iteração, sem multas ou penalidades.

A adoção de uma metodologia ágil é na verdade um “projeto de gestão de mudanças”, que requer um forte comprometimento dos patrocinadores e gestores. Esse processo de mudanças pode ser feito gradualmente, implementando-se primeiro as práticas ágeis para desenvolvimento de software, e depois seguindo com práticas mais avançadas e focadas em planejamento, organização e gestão.

O papel do gerente de projetos

O gerente de projetos ganha novas atribuições em um contexto ágil, pois a filosofia do time e os novos papéis exigem uma nova postura e uma nova forma de lidar com as atividades do dia a dia.

Para ganhar em rapidez, as metodologias ágeis dão grande importância à equipe de projetos e à forma como ela pode colaborar de modo eficiente para a resposta às mudanças. Busca-se desenvolver equipes autônomas, capazes de lidar com todas as questões sob sua alçada. Além disso, as equipes têm a liberdade de tratar diretamente com os usuários e alguns patrocinadores.

Outro papel que cresce e ganha importância, a medida que cresce o Scrum, é o de Product Owner (PO), que é responsável pelo produto sendo construído e pelos benefícios e o valor que serão proporcionados ao negócio e aos usuários finais. O Product Owner pode complementar o trabalho do gerente de projetos focando nas funcionalidades já entregues e analisando os benefícios do lançamento do produto em cada iteração.

Mas com equipes autônomas e a presença do Product Owner, quais seriam as responsabilidades de um gerente de projetos? O gerente de projetos continua responsável por várias áreas da gestão, como integração, gestão do tempo, orçamento, qualidade, recursos humanos, comunicação, risco e contratos. E aparecem outras atividades importantes em um contexto ágil; por exemplo:

  • Integrar o projeto ágil com outros projetos da empresa: Em empresas grandes e complexas como bancos e operadoras de telecomunicações, projetos ágeis terão sempre alguma dependência com projetos ditos mais tradicionais.Se você precisa que uma equipe “não-ágil” crie um novo serviço na web, terá que entregar a especificação do projeto com meses de antecedência. O gerente de projetos ágil precisa buscar, nesse contexto, envolver e “evangelizar” outros gerentes, buscando disseminar a filosofia e o funcionamento das equipes ágeis, além de coordenar atividades entre diversas áreas.
  • Proteger a equipe na empresa: Departamentos externos e outros funcionários certamente demandarão suporte e manutenção de sua equipe em outros projetos. Muitas vezes questões urgentes podem levar dias, e gerar atrasos e quebras no ritmo da equipe. Conseguir “blindar” o time de interferências externas e criar mecanismos para tratar estas questões é outro papel importante do gerente de projetos.
  • Aperfeiçoar o processo e as práticas: Metodologias ágeis estimulam o aperfeiçoamento das práticas, técnicas e ferramentas de forma continuada. O gerente de projetos é convidado a criar iniciativas que aprimorem os processos que vão além da sua equipe, e podem buscar otimizar até práticas e processos mais estratégicos. (Em Scrum, o Scrum Master assume esta última responsabilidade.)

Voltando ao Scrum, um gerente de projetos pode assumir o papel do Scrum Master desde que esteja disposto a trabalhar perto da equipe, e a auxiliá-la a aperfeiçoar processos e práticas e a desenvolver suas habilidades. (Veja definições em português de Product Owner e Scrum Master)

Em grandes projetos, um gerente pode assumir o papel de Scrum Master, mas atuando em nível mais estratégico. Em um projeto simples (por exemplo, com uma equipe interna de quatro a oito pessoas), o gerente pode até assumir o papel do Product Owner também. Mas isso somente se conseguir ao mesmo tempo pensar no projeto e no produto em construção.

Comece com um projeto piloto

Como todo projeto de mudanças, a adoção das metodologias ágeis deve ser planejada e ter patrocinadores importantes dentro da organização. É recomendável que o primeiro passo seja um projeto piloto, que permita aos patrocinadores entender melhor as metodologias envolvidas, e identificar possíveis benefícios e dificuldades na sua implementação em larga escala na empresa.

A seguir é apresentada uma lista de ações que podem ajudar o gerente de projetos a organizar um primeiro projeto piloto com metodologias ágeis. São incluídas também algumas dicas gerais que podem ajudar os projetos ágeis a serem bem-sucedidos.

  • Defina o projeto piloto com o objetivo de testar o uso de métodos ágeis. Deixe claro que um dos objetivos é experimentar uma nova metodologia. Custos, cronogramas e riscos devem ser avaliados neste contexto.
  • Explicite os motivos para utilizar o Agile. Evite metodologias ágeis, se não houver um real motivo no momento. As dificuldades em adotá-las podem desencorajar a equipe e a gestão. Documente os motivos e analise, junto aos usuários finais e patrocinadores, quais benefícios são possíveis com a entrega do projeto, meses antes.
  • Garanta o comprometimento dos patrocinadores. Envolva-os em revisões regulares do projeto e em reuniões de duas a quatro horas por semana. Com esse grau de envolvimento, os patrocinadores poderão ajudar a obter apoio de outros departamentos mais rapidamente, entre outras vantagens. Também é importante que os patrocinadores avaliem junto com você os passos seguintes ao projeto piloto.
  • Faça treinamentos em Agile, com empresas com experiência comprovada. O Agile parece simples, mas leva algum tempo para dominar práticas reais. Uma opção complementar é o Coaching: existem empresas com profissionais experientes que podem ajudar na condução de projetos seguindo práticas ágeis. Verifique a experiência destas empresas e considere adquirir seus serviços para um primeiro projeto piloto.
  • Avalie a experiência em métodos ágeis reais dos fornecedores que contratar. Algumas empresas de serviços de TI utilizam o termo Agile com propósitos comerciais, mas suas equipes não possuem conhecimento ou capacidade para trabalhar efetivamente com as práticas ágeis. Para reduzir o risco de cair nessas armadilhas, é importante entender os principais conceitos e acompanhar as decisões sobre a metodologia ágil a ser utilizada, além de ter uma noção geral das práticas de planejamento, desenvolvimento e testes mais adequados à realidade da empresa.
  • Construa uma equipe com pessoas orientadas a resultados e dispostas a tentar coisas novas.

Conclusões

As metodologias ágeis continuam ganhando popularidade e aceitação. A pergunta não é mais se funcionam ou não, e sim se podem ajudar sua empresa a realizar mais e melhores projetos de TI. A melhor maneira de testar estas metodologias é realizando um projeto piloto para identificar os potencias benefícios e as prováveis dificuldades na sua implementação.

A adoção do Agile é um verdadeiro projeto de mudanças para o departamento de TI e para as áreas de negócio. Nesse processo, o gerente de projetos pode cumprir um papel fundamental, assumindo a liderança das mudanças e ajudando as equipes técnicas a entregar software de maior qualidade em menor tempo, e com funcionalidades de maior valor para a empresa.

Fonte: Ignacio Lizarralde/InfoQ

Ferramenta de buscas open source vai concorrer com Google e Bing

Após mais de cinco anos de desenvolvimento, ativistas de software livre lançaram o YaCy, uma ferramenta de busca descentralizada para concorrer com Google e Bing.

O serviço é gratuito e produz os resultados de busca em uma rede P2P (ponto a ponto), que seriam os usuários. O objetivo disso é fazer com que empresas não tenham controle sobre as buscas.

O projeto tem apoio da FSFE (Free Software Foundation Europe), e a rede do YaCy conta, atualmente, com cerca de 600 pontos. Além disso, ele já tem atualmente 1.4 bilhões de documentos em seu índice e trata cerca de 130 mil pedidos de busca por dia.

Os organizadores do projeto esperam que a ferramenta de buscas cresça junto com outras opções de software livres, como identi.ca e Diáspora, que são redes sociais alternativas ao Twitter e ao Facebook.

Alguns motores de busca são baseados na tecnologia do YaCy, como o sciencenet, do Karlsruhe Institute of Technology, que oferece buscas por conteúdo científico.

Com informações de Inter IT e de Notícias Linux

Fonte: IMasters

Desenvolvimento de software não é construção civil

Ao longo dos últimos anos, uma das áreas que mais cresceu foi justamente a de tecnologia voltada para o desenvolvimento de software e, com esse grande impulso, vieram junto enormes problemas que vão desde qualidade, prazos e, principalmente, expectativas de todos os envolvidos no processo, levando grande parte dos projetos a algum tipo de fracasso, conforme podemos observar nos principais estudos relacionados, como o “Chaos report”, promovido pelo The Standish Group.

A arte de desenvolver software é baseada em um modelo completamente criativo e dinâmico, sujeito a mudanças em cada passo, sejam oriundas de uma amplificação no entendimento do valor de negócio por parte do cliente ou em atividades emergentes que surgem logo nos primeiros minutos de codificação em qualquer projeto de desenvolvimento de software.

As disciplinas tradicionais de gestão baseiam-se em muitas ideias aplicadas na própria construção civil e tentam, usando esses princípios, determinar os mesmos fundamentos para projetos de desenvolvimento de software desconsiderando que são modelos completamente diferentes e conduzidos por pessoas criativas. Eu costumo dizer que, ao projetar um prédio nós costumamos ver a evolução da construção, desde a fundação e paredes que vão aparecendo aos nossos olhos. Rapidamente você consegue pegar e medir quanto é necessário de investimento e esforço para atingir o objetivo. Já no software a realidade é completamente diferente, pois é emergente e adaptável em cada passo dado.

É hora de mudar e adotar atitudes mais ágeis que provoquem a colaboração e comprometimento entre todos os envolvidos no ciclo produtivo do software. Estamos falando de pessoas altamente criativas e não de máquinas ou “recursos”.

Em meados de 2001 os principais pensadores da época deram um grande passo reunindo-se para formação do “Manifesto para Desenvolvimento Ágil de Software” que representou um grande marco de mudança contra os modelos tradicionais de desenvolvimento de software com 4 pilares importantes:

  1. Indivíduos e interações mais que processos e ferramentas
  2. Software em funcionamento mais que documentação abrangente
  3. Colaboração com o cliente mais que negociação de contratos
  4. Responder a mudanças mais que seguir um plano

A base principal disso tudo são pessoas felizes colaborando com o processo produtivo que requer adaptação frequente e muita atenção para atender a expectativa do cliente dentro dos objetivos do projeto. No modelo ágil, direcionamos todas as energias em criar um software funcionando orientado aos desejos do cliente que, sabemos, nunca são iguais aos pensamentos originais. Eles emergem e amadurecem junto com as entregas frequentes de software que são apresentadas em cada final de Sprint.

Ao questionar diversos desenvolvedores sobre documentação de software durante a manutenção, nenhum deles confirmou que abre qualquer documentação e sim vai direto ao código fonte resolver o problema. Imagina agora um cenário onde precisa fazer uma mudança, seja qualquer for o tamanho, como terá certeza que não gerou nenhum tipo de impacto no projeto? Não encontrará nenhum documento word que lhe dará essa garantia no código.

Para isso nós usamos outras abordagens no desenvolvimento ágil como TDD (Test Driven Development), orientando o desenvolvimento a testes unitários, gerando uma documentação de negócio no formato de testes que são executados automaticamente, garantindo que aquele código coberto pelos testes não sofreu impacto com a mudança de negócio. Na prática nós desenvolvemos primeiro os testes e depois as regras de negócios, já validando as mesmas com os testes, diminuindo inclusive o tempo de desenvolvimento.

Para alinhar a visão do cliente com as implementações realizadas, temos uma abordagem em desenvolvimento ágil conhecida como BDD (Behavior Driven Development) que permite orientar o desenvolvimento baseando-se no comportamento de negócio desejado escrito em histórias pelo cliente, fortalecendo mais ainda um dos princípios em desenvolvimento ágil que é o valor de negócio.

Para integrar o código fonte desenvolvido usamos a abordagem de CI (Continuous integration), tendo um mecanismo automático para geração de versão e entrega do software funcionando, permitindo uma visibilidade do produto que está sendo entregue e indo além, usando os testes unitários produzidos e outras abordagens para garantir a integridade do código fonte e sua fidelidade aos valores de negócio garantidos dentro dos testes e outros padrões de projeto, como arquitetura em camadas favorecendo a reutilização de software.

A informação mais importante que devemos passar ao nosso cliente é que estamos aptos a fazer mudanças no software e adaptar ao final de cada ciclo para juntos atingirmos os valores de negócio do projeto. Ter o cliente próximo esclarecendo as dúvidas faz a diferença e reduz todo o ruído de diferenças de entendimento, permitindo esclarecer o mais breve possível sempre que aparecer qualquer impedimento ou mudança de rumo.

As pessoas tratadas como pessoas e incentivadas a colaborar produzem cerca de 10 vezes mais, pois são desafiadas a dar o melhor de si e valorizadas pelos resultados proporcionados à equipe de uma maneira rápida, pois com ciclos curtos de projetos conseguirmos alinhar rapidamente qual o resultado de cada equipe de projeto. É muito importante que todos se sintam importantes no processo. Por isso incentivar a participação e compartilhamento de informações resulta em comprometimento.

O desenvolvimento de software como um trabalho criativo e intelectual requer uma atenção dobrada na equipe, motivando e alinhando expectativas, além de iniciativas que valorizem cada entrega de projeto com sucesso, mesmo que seja tirando uma foto da equipe e uma Coca-Cola gelada para cada. Na maioria das vezes a intensão vale mais que a força empregada e, ter um ambiente de trabalho feliz é o maior impulsionador de qualquer projeto.

Compartilhe, escute e provoque criando desafios animadores nas pessoas para que juntas formem uma grande força em prol de uma causa e não de uma regra. Conquiste liderando e multiplique a visão por todos do projeto removendo impedimentos e burocracia que não contribuem em nada com o resultado.

Para ter a melhor estratégia de desenvolvimento em um projeto de software inicie pela formação da equipe e crie mecanismos de qualificação e demais incentivos para manter um grupo forte e orientado a resultados. Acabo por acompanhar muita gente preocupada com quanto tempo uma pessoa está parada na frente do computador e não com o resultado que essa pessoa proporciona ao projeto.

Até hoje venho observando em projetos de “software civis tradicionais” gerentes e analistas estimando atividades para outras pessoas assumirem o compromisso de programar. É logico que sabemos de antemão que os desenvolveres vão concordar e que você já vai dar o prazo sabendo que não será entregue, criando o que eu batizei de mundo “Alice do Software”, onde todos sabem que não vai dar certo, mas continuam vivendo até não aguentarem viver mais dentro do caos e darem o grito de mudança.

De uma vez por todas vamos entender que resultado em um projeto de software se dá pela energia criativa para construir uma solução simples e rápida e não pela quantidade de força empregada ao longo do tempo. Para ter comprometimento é fundamental compartilhar com todos do projeto as informações e objetivos e abrir espaço para escutar e colaborar.

O dia que descobrirem, finalmente, que desenvolvimento de software é empírico, mutável e não pode ser encarado como um projeto de uma obra civil, teremos atitudes diferentes com pessoas felizes desenvolvendo com qualidade desde o início e entregas rápidas alinhando a expectativa de negócio.

Para saber mais:

Fonte: Ramon Durães/IMasters

Gartner lista dez tendências tecnológicas para 2012

De acordo com estudo recém-divulgado pelo Gartner, das dez áreas de TI que merecem mais atenção das empresas, mobilidade está em primeiro lugar. Isso porque ela força as empresas a prepararem o seu software de modo a disponibilizarem acesso às aplicações de todas as formas possíveis e promover a consumerização das TICs ou a abordagem “Bring Your own Device” (BYOD) ou “Bring Your own Technology” (BYOT).

Não por acaso, a segunda maior preocupação para a estratégica dos CIOs centra-se nas aplicações e interfaces e sua adaptação ao novo ambiente de mobilidade. O Gartner observa que os parâmetros válidos há 20 anos (baseados em janelas, menus e ícones) devem ser substituídos por tecnologias com enfoque na mobilidade, que incluem sistemas de interação por toque, por vídeo ou por voz, priorizando novos padrões como o HTML5.

A experiência do usuário de redes sociais e as tecnologias contextuais também serão um ponto extremamente importante na agenda dos líderes de TI para o ano de 2012, na lista da consultoria, junto com a chamada Internet das Coisas, que ocupa a quarta posição na lista. Nesse sentido, as tecnologias de comunicação em proximidade ou Near Field Communication (NFC), para pagamentos móveis, começará a ter projetos concretos.

Também relacionada com a mobilidade, está a quinta tendência a ser considerada pelos CIOs no próximo ano: as lojas on-line de aplicações. A App Store e o Android Market, em conjunto, deverão distribuir cerca de 70 mil milhões de aplicações móveis até 2014. Da perspectiva do ambiente corporativo, isso significa passar de um planejamento mais centralizado para uma abordagem na qual é necessário ter em conta um mercado onde existem vários fornecedores e aplicações. Assim as empresas terão de avaliar melhor os riscos e o valor que cada uma traz para a organização como um todo.

BI e análise de dados

Muitas empresas já usam plataformas de Business Intelligence e soluções de análise de dados. Mas na verdade, diversos estudos têm mostrado que nem todas conseguem extrair o máximo de benefícios a partir delas. Por isso, existe ainda um longo caminho a percorrer nessa área. Considerando a conjuntura econômica, as empresas não podem deixar de investir em soluções capazes de permitir conhecer em profundidade as necessidades e o comportamento dos seus clientes.

Isso permite a cada uma delas responder de acordo com as necessidades de seus clientes, melhorando assim os negócios. Face à contenção nos orçamentos de investimento em TI, as empresas devem procurar extrair o máximo das soluções de BI que já têm. Nesse ponto, o enfoque no Big Data pode ser enganador.

A expressão Big Data é usada para reconhecer o crescimento exponencial de dados, a disponibilidade e o uso da informação em ambientes futuros. Esse conceito dá um peso indevido ao volume de informações a ser gerido, segundo o Gartner.

Muitos CIOs focaram-se simplesmente na gestão de grandes volumes de dados, esquecendo-se muitas outras dimensões relacionadas com a gestão da informação. Deixam no ar, assim, muitos desafios a serem abordados mais tarde, muitas vezes com maiores dificuldades. Questões de acesso e classificação de dados não podem ser negligenciadas. Caso contrário, segundo os analistas do Gartner, a empresa se verá obrigada a um novo investimento massivo – em dois ou três anos – para resolver problemas negligenciados quando da implantação de infraestrutura.

Nova fase para o modelo de cloud computing

Completam a lista compilada pelo Gartner as tecnologias in-memory, e os servidores de baixo consumo energético para cloud computing – a tendência mais comentada no mundo das TIC, desde que apareceu há cinco anos.

Apesar de ser um importante fator no setor das TIC, cloud computing ainda não está produzindo os resultados esperados. De acordo com estudo da Symantec, organizações que já investiram em tecnologias de virtualização e em plataformas de cloud, híbridas ou privadas, tendem a seguir um caminho semelhante: evoluir da virtualização de aplicações menos críticas para as mais importantes (como o e-mail e as aplicações de colaboração, de comércio eletrônico e da cadeia de abastecimento, bem como as de planejamento de recursos empresariais e de gestão das relações clientes).

Nesse sentido, mais da metade (59%) pretende virtualizar as aplicações de bases de dados ao longo dos próximos 12 meses. Cerca de 55% pretende virtualizar aplicações Web e 47% consideram virtualizar aplicações de correio electrónico e calendário. Apenas 41% tencionam virtualizar aplicações ERP, segundo o Gartner.

E, à medida que as tecnologias de virtualização e as clouds privadas são cada vez mais adotadas, o custo e o desempenho dos sistemas de armazenamento crescem de importância na hora de escolher um ou outro sistema. Mais da metade dos entrevistados pela Symantec (56%) afirmou que os custos de armazenamento aumentaram com a virtualização de servidores.

Portanto, as três principais razões para a implementação de virtualização de sistemas de armazenamento, incluem redução dos custos operacionais (55%), melhorias de desempenho dos sistemas de armazenamento (54%), e melhorias do potencial de recuperação de desastres (53 %). Embora a tendência seja imparável, a implantação real de cloud computing nem sempre satisfaz os critérios previamente estabelecidos. O estudo observa ainda que os projetos de virtualização de servidores são os mais bem sucedidos.

Normalmente, existe uma diferença média de 4% entre os objetivos propostos e os alcançados. É uma diferença muito menor do que a registada para os sistemas de virtualização de armazenamento, em torno de 33%, com grandes decepções em termos de capacidades de escala, flexibilidade e redução dos custos operacionais.

Informações publicada originalmente em Computer World

Fonte: IMasters

Scrum

Scrum é uma metodologia ágil para gestão e planejamento de projetos de software. Onde os projetos são dividos em 4 ciclos como mostra abaixo:

  • Definição do Backlog: todas as funcionalidades ou mudanças no produto são definidas pelo Product Owner no Product Backlog. Esta lista é priorizada para refletir a necessidade dos clientes ou demandas do mercado. Os itens do topo da lista são destacados para serem entregues no final do próximo Sprint.
  • Andamento do Sprint: durante o Sprint, os itens do Product Backlog que devem ser entregues são agora tratados no Sprint Backlog. As tarefas agora são responsabilidade da Equipe, que tem autonomia para decidir como elas devem ser executadas.
  • Reuniões Diárias: o Scrum Master se reune diariamente com a Equipe num mesmo horário, para que se reporte:
  • O que foi feito ontem?
  • O que se pretende fazer hoje?
  • Quais são os impedimentos que estão atrapalhando a execução das tarefas?
  • Revisões: no final do Sprint a Equipe demonstra os resultados para o Product Owner e demais interessados, de forma que os itens do Backlog sejam considerados prontos e então possa se iniciar um novo Sprint.

Algumas pessoas que trabalham diretamente no dia-a-dia do Scrum:

  • Equipe: responsável por entregar soluções, geralmente é formada por um grupo pequeno (entre 5 e 9 pessoas) e que trabalha de forma auto-gerenciada;
  • Product Owner: responsável pela visão de negócios do projeto, é ele quem define e prioriza o Product Backlog. Geralmente é o papel desempenhado pelo cliente;
  • Scrum Master: é uma mistura de gerente, facilitador e mediador. Seu papel é remover obstáculos da equipe e assegurar que as práticas de Scrum estão sendo executadas com eficiência.

Fonte: Alex/BitMasters

IBM oferecerá Hadoop em seu serviço de nuvem

A IBM anunciou que em breve vai oferecer o seu software de analytics baseado no Hadoop, InfoSphere BigInsights, como serviço (Software as a Service – SaaS), dentro da plataforma SmartCloud. Duas versões estarão disponíveis, uma básica e gratuita, e outra paga, com características mais avançadas.

O serviço gratuito vai permitir que usuários iniciantes na análise de grandes quantidades de dados aprendam como o processo funciona. Recentemente, a IBM adquiriu especialistas na plataforma Hadoop para melhorar sua experiência na área.

O Apache Hadoop se tornou o padrão open source na área de “big data”, implantando um algoritmo MapReduce para aproveitar o poder dos grandes aglomerados de máquinas para analisar grandes quantidades de dados. Desenvolvido originalmente pelo Yahoo, ele se tornou um projeto Apache e desenvolveu seu próprio ecossistema de ferramentas e tecnologias relacionadas.

No início do mês, a Oracle anunciou que o seu Oracle Big Data Appliance rodaria Hadoop e a Microsoft revelou planos de dar suporte ao Hadoop no Azure e no Windows Server. O serviço de cloud Elastic MapReduce, da Amazon, também é baseado no Hadoop.

Com informações de The H

Fonte: IMasters

Manifesto é lançado para proteger direitos dos desenvolvedores sobre seus códigos

O software é considerado a pedra fundamental da ciência. Sem ele, a ciência do século XXI seria impossível, já que a ausência de softwares melhores impede o progresso da ciência.

Entretanto, a cultura e as instituições ainda não se adequaram a essa realidade. Para mudar essa situação, foi criado o Science Code Manifesto. O autor é Nick Barnes, da Climate Code Foundation. Segundo ele, a iniciativa é uma resposta ao estudo “Science as a Public Enterprise”da Royal Society e foi inspirada nos Panton Principles.

O Science Code Manifesto tem como base estes cinco princípios:

  • Código: todo código-fonte escrito especificamente para processar dados para um trabalho publicado tem que ser avaliado pelos revisores e pelos leitores do material.
  • Direitos autorais: os direitos autorais de qualquer código-fonte liberado precisam estar claramente estabelecidos.
  • Citação: pesquisadores que usam ou adaptam código-fonte em suas pesquisas precisam dar os respectivos códigos aos autores em seus trabalhos publicados.
  • Crédito: contribuições de software precisam ser incluídas em sistemas de avaliação cientídica, crédito e reconhecimento.
  • Curadoria: o código-fonte deve permanecer disponível, linkado para materiais relacionados, para a vida útil da publicação.

Os interessados em conhecer o manifesto podem acessá-lo aqui. Para apoiá-lo, basta clicar neste link.

Fonte: IMasters

Os diferentes tipos de Web Hosting

A escolha do serviço de alojamento pode tornar-se uma dor de cabeça grande para os Webmasters, principalmente no que respeita ao operador escolhido. Em Portugal este é um mercado que, na minha opinião, está saturado – muito por culpa de operadores menos bons que desaparecem do mapa sem deixar contacto. Como é óbvio, uma atitude dessas pode causar muitos constrangimentos a muitos Webmasters, e até a empresas. Eu sou da opinião que mais vale gastar mais alguns escudos para não ter más surpresas. Mas deixo essa discussão para mais tarde.

Outra escolha pertinente é o tipo de alojamento que se deve escolher. Esta escolha pode depender dos mais variados factores, como por exemplo o retorno que tem o site, ou a utilização de recursos do site. Apenas para dar um exemplo, o Moodle é um sistema pesado, especialmente se tiver integrados alguns módulos, sendo aconselhável uma solução mais dedicada.

Alojamento gratuito

Era bom todos termos um serviço de alojamento fiável e gratuito. Mas podem esquecer… para evitar dissabores, não recomendo alojamentos gratuitos a quem deseja ter o mínimo de garantias. Normalmente quem oferece este tipo de serviço tem os servidores com centenas de sites, o que causa muita instabilidade no serviço. Também por norma não existe suporte técnico qualificado, pelo que qualquer problema que tenha pode demorar alguns dias para se resolver, isto se conseguir resolvê-lo.

Alojamento partilhado

Este é o serviço utilizado por cerca de 90% dos sites. Normalmente são dadas garantias básicas de funcionamento e de suporte técnico. Não obstante, não nos esqueçamos que estamos a falar de um serviço partilhado por vários clientes, e que infelizmente há clientes mal intencionados, ou então sem saber o que estão a fazer, e que em poucos minutos podem sobre-carregar o serviço, ao enviar uma simples newsletter. Em Portugal, já a maioria dos operadores proíbem o envio de newsletters em ambiente partilhado. No entanto, esse processo só é verificado quando o servidor já está com um load alto, o que gera incapacidade no servidor.

VPS – Virtual Private Servers

Os VPS são uma espécie de servidor dedicado, mas com dependência de uma máquina principal, que também pode ter anomalias que interfiram com a VM (virtual machine). A nível de software, normalmente é configurado pelo cliente, vindo com uma instalação base. Alguns operadores podem ajudar noutras configurações iniciais, mas depois o trabalho é, regra geral, feito pelo cliente. Para ter um VPS, é recomendado ter alguns conhecimentos de como funciona o sistema ou o painel de controlo, já que em caso de falha é pouco provável ter a ajuda da empresa de hosting, a menos que se chegue a algum acordo, que normalmente inclui pagamentos extra.

Servidor Dedicado

Ao contrário do VPS, em que os recursos de um servidor principal são divididos por várias VM’s, num servidor dedicado o normal é ter um servidor (máquina) exclusiva, em que os recursos de hardware são garantidos. É apenas aconselhável para quem já tem conhecimentos suficientes para administrar a máquina sem ajuda de terceiros. Infelizmente já encontrei por aí empresas que falam em servidor dedicado, mas na verdade depois somos confrontados com nada mais do que um servidor virtualizado, embora com hardware dedicado.

Cloud Hosting

Este é o futuro. O Cloud Hosting é aplicado quando temos uma garantia de 100% de uptime de hardware, uma vez que temos vários servidores a funcionar em conjunto, e uma máquina é automaticamente substituída quando tem problemas ou está mais carregada de pedidos. Mais uma vez, há empresas que confundem as coisas… fornecem um serviço de alojamento partilhado, e chamam-lhe Cloud Hosting. É necessário ter alguma atenção ao nome que damos aos produtos.

Resumo

Na prática, estamos perante vários tipo de Web Hosting que, embora o objectivo seja o mesmo em 95% dos casos (colocar um site online), diferem no que toca à capacidade de alteração de configurações, dependência e partilha de recursos e, claro, o preço.

Apesar de existirem ainda mais algumas formas de alojamento (Cluster por exemplo), não as vamos explicar agora, até porque são soluções normalmente utilizadas apenas por empresas já com uma dimensão razoavelmente grande, e com uma equipa informática.

Fonte: Bruno Miguel/phpportugal

Versão 3.4.3 do LibreOffice é lançada e corrige vários bugs

A Document Foundation lançou a versão 3.4.3 do LibreOffice, que traz várias correções de bugs na suíte de software livre.

De acordo com o wiki do projeto, o quarto release da série 3.4.x não adiciona novas funcionalidades. Ele oferece correções no processador de textos Writer, no programa de planilhas Calc e no gerenciador de apresentação Impress, e em bugs em filtros e em bibliotecas. Entretanto, os desenvolvedores alertam que ainda há alguns problemas na atualização, incluindo um classificado como crítico e que será corrigido na versão 3.4.4, esperada para o início de outubro.

Mais detalhes sobre a atualização podem ser vistos nas notas de lançamento, na página da nova versão e no post do blog da Document Foundation. O LibreOffice 3.4.3 está disponível para download para Windows, Mac OS X e Linux.

Fonte: H-online

Ferramenta de Gerenciamento para PostgreSQL

O novo Postgres Enterprise Manager da especialista em bancos de dados PostgreSQL EnterpriseDB, tem como objetivo simplificar o gerenciamento de implementações de banco de dados. Esta ferramenta pode gerenciar tanto o open source PostgreSQL e o comercial da EnterpriseDB, Postgres Plus Advanced Server.

Além das funções voltadas para o monitoramento de desempenho de de banco de dados, ele também inclui um gerenciador de capacidade, o que gera relatórios sobre a utilização, um profiler do SQL, que identifica e corrige código SQL, e uma função de alarme. O software está disponível como parte de uma assinatura do próprio banco de dados PostgreSQL ou como uma assinatura standalone.

Informaões extras sobre Postgres Enterprise Manager podem ser encontradas em uma postagem publicada no blog EnterpriseDB e através de um comunicado oficial. Os release notes, um guia de instalação e os links para download, estão disponíveis na página Download Postgres Enterprise Manager.

Fonte: Under-Linux

Fedora 16 Alfa está disponível para download

A versão alfa do Fedora 16 foi liberada ontem e trouxe várias novidades. Com o codinome Verne, o Fedora 16 Alfa já vem com o Kernel 3.0, a última versão de desenvolvimento do GNOME 3, e o KDE 4.7. Ou seja, é possível escolher entre dois grandes ambientes de desktop, além de baixar e instalar vários outros, como o XFCE.

Também há várias novidades do lado de servidores e desenvolvimento, como suporte a computação na nuvem e suporte ao Xen renovado. Dependendo da necessidade do usuário, pode ser muito mais interessante montar um servidor (ou até mesmo uma instalação Desktop para toda a empresa) a partir do Fedora, em vez de usar o Ubuntu.

Segundo o calendário de lançamento, além desse Alfa, haverá uma versão beta no dia 27 de setembro, e a versão final será lançada no dia 1º de novembro.

É válido lembrar que versões Alfha e Beta de distribuições e até mesmo de softwares não devem ser utilizados em ambientes de produção.

O download do Fedora 16 Alpha pode ser feito no site do projeto, e é possível ver as notas de lançamento na wiki que está sendo montada para a distro.

Fonte: IMaster