Conheça a Informant          RSS

Posts Tagged: Desenvolvimento ágil


16
May 14

Uma introdução ao Behavior-Driven Development (BDD)

girl typing

Um dos problemas mais corriqueiros de todo desenvolvedor é conseguir explicar para leigos como seu trabalho funciona. Isso, aliado à velocidade com que os serviços se multiplicam pela internet, criaram uma falsa impressão de que os softwares são fáceis se serem feitos. Ainda mais quando estão na web.

Este fato se torna um problema quando o desenvolvedor precisa interagir com clientes e usuários em busca de uma melhor solução para algum projeto. De fato, incluir esse tipo de colaboração pode ajudar a desenvolvedor ferramentas melhores, mas também trazer uma série de dores de cabeça para os programadores.

Neste sentido, há algumas décadas, criou-se uma metodologia de desenvolvimento guiada por testes, onde uma aplicação era feita, testada e melhorada. Apesar de útil, a metodologia não estava de acordo com o desenvolvimento ágil, já que aumentava o número de interações e tornava o processo mais lento.

Com esses problemas em mente, em 2003, Dan North criou a Behavior Driven Development (BDD), que significa desenvolvimento guiado por comportamento e é adotada atualmente como uma técnica de desenvolvimento ágil. Nela, a colaboração entre os diversos agentes que serão impactados pelo software é largamente encorajada. Assim, todos participam do desenvolvimento desde o primeiro dia do projeto.

Como o BDD funciona

A BDD foca na criação de código através das interações entre desenvolvedores e usuários através de um processo denominado outside-in development, que significa desenvolvimento de fora para dentro. Na prática, a ideia é criar exemplos que descrevam o comportamento do software para que esteja seja avaliado pelos seus utilizadores.

Ao guiar o desenvolvimento do software através da metodologia de BDD é fundamental que os gestores do projeto esclareçam as responsabilidades de cada um e permitam que a construção da ferramenta seja questionada. Também é indicado que sejam usados mock-ups para simular módulos do sistema antes que esses sejam escritos.

O uso destes testes deve servir para criar a oportunidade de feedbacks rápidos antes do início do desenvolvimento. As vantagens da metodologias são muitas, desde econômicas (ao se permitir testes é mais provável que o software se encaixe na necessidade do cliente); até de usabilidade e eficiência da ferramenta.

A vantagem do Outside-in Development

O BDD deixa claro que o desenvolvimento do software deve ser feito a partir da interface que terá contato com o usuário final. Ou seja, o software é desenvolvido da parte externa para a interna, daí o nome outside-in develoment.

BDD é uma metodologia focada nos benefícios que a aplicação trará para o negócio e a única maneira disso ser percebido é implementando a interface e a entregando para que os usuários finais façam suas próprias considerações. Essas opiniões, quando avaliadas pelos desenvolvedores, devem guiar a construção do código. Alie isso à participação de um profissional do setor de qualidade da empresa, ajudando a criar os requisitos mínimos da ferramenta, e as chances do investimento ser bem aplicado disparam.

Conhecer metodologias de desenvolvimento ágil como BDD farão sua empresa muito mais eficiente e a qualidade das suas entregas muito maior.

Precisa de ajuda para agilizar o desenvolvimento do seu software? Fale com a Informant!


01
Nov 13

Série os 7 princípios do desenvolvimento ágil de software: Parte 3

softwareAgora que você já conhece os dois primeiros princípios do desenvolvimento ágil, eliminar o desperdício (LINK) e ampliar o aprendizado (LINK), continuamos nossa série falando sobre o terceiro preceito da metodologia: decidir o mais tardiamente possível.

Em um cenário em que as decisões são tomadas de forma cada vez mais rápida para que as empresas estejam sempre um passo a frente de seus concorrentes, poderia parecer ilógico que o desenvolvimento ágil tenha as escolhas tardias como um de seus princípios.

No entanto, é exatamente a possibilidade de fazer opções mais adiante que proporciona melhores resultados na metodologia ágil.

Decisões em tempo hábil

As startups atuam em mercados sujeitos a mudanças bruscas. Isso significa que toda decisão tomada com excesso de antecedência pode engessar a solução que está sendo desenvolvida para o cliente. O trabalho gasto para resolver um problema, antes mesmo que ele ocorra, pode provocar desperdícios de tempo e recursos.

Nos métodos tradicionais de desenvolvimento, os requisitos devem ser bem definidos desde o início do projeto. Esse modelo não é adequado para muitas startups, tendo em vista que o aprendizado que ocorre ao longo de cada ciclo do desenvolvimento do software é fundamental para o bom andamento das etapas seguintes.

Já que o desenvolvimento de softwares, de forma geral, sempre envolve incertezas, o melhor a fazer é adiar as decisões importantes até o último momento que elas possam ser tomadas. Desta forma, a empresa fará escolhas baseadas em dados e fatos e não em previsões e suposições.

Menores custos

Mesmo no desenvolvimento ágil de softwares, algumas decisões críticas podem gerar problemas e custos desnecessários caso sejam modificadas adiante. Ainda assim, elas devem ser tomadas o mais tardiamente possível, pois, desta forma, a chance de que precisem ser alteradas é reduzida.

No entanto, a grande maioria das decisões não possui tanto impacto sobre os custos e o andamento do projeto caso sejam tomadas tardiamente e alteradas quando necessário. Por sua natureza flexível, o desenvolvimento ágil aceita mudanças nos requisitos com menores esforços, riscos e custos.

Boas alternativas

Um dos grandes trunfos do desenvolvimento ágil é seu modelo iterativo, que permite a adaptação a mudanças e a correção de erros que poderiam ser muito mais caros após a finalização do software.

Nesse modelo de trabalho, o cliente já entra em contato com a primeira versão das aplicações logo no início do projeto, fazendo com que as opções disponíveis fiquem claras desde o começo e permitindo que os desenvolvedores observem esse processo de interação e aprendizagem.

Desta forma, a equipe de desenvolvimento pode focar primeiramente em soluções mais simples, escrevendo um código que possa ser ampliado e refeito sem dificuldades nos ciclos posteriores.

Lembre-se que quanto mais você adiar uma decisão, mais informações terá à sua disposição para escolher o caminho mais adequado. No entanto, isso não significa que as escolhas podem ser postergadas indefinidamente, mas somente até o ponto em que não provoquem perdas ou atrasos no projeto.

Essa forma de agir reduz os riscos, pois as decisões tomadas muito cedo têm grande chance de se tornarem equivocadas posteriormente.

Para aprender mais sobre os outros princípios do desenvolvimento ágil, acompanhe o blog da Informant!


20
Jul 12

Por que o Scrum é melhor para a sua empresa e seus clientes?

Já faz muito tempo que as empresas investem em inovação para poder responder às constantes mudanças do mercado. Estas empresas precisam adaptar processos, de forma mais rápida, e diminuir o time-to-market de produtos, respondendo as necessidades de clientes, e assim, se mantendo competitivas no segmento de atuação. No momento em que os softwares utilizados por elas se tornam a peça chave em processos produtivos e de inovação, é quando diretores e gestores descobrem que o sucesso do negócio depende diretamente da agilidade do departamento de TI.

Nesse contexto, em que organizações precisam replanejar constantemente decisões estratégicas, reduzir custos operacionais, além de adaptar processos e serviços para poder atender clientes cada vez mais exigentes, investir em uma forma de gerenciamento de projetos mais ágil, com o Scrum, pode se tornar um diferencial competitivo fundamental. O Scrum é uma metodologia de gerenciamento de projetos, baseada no desenvolvimento iterativo e incremental de software, que beneficia empresas e clientes, basicamente, em três pontos principais:

1. Aumento do Retorno Sobre o Investimento (ROI)
O Scrum prioriza a entrega de requisitos de maior valor de negócio, ou que apresentam maior risco estratégico para a empresa. Isso significa que o dono do produto (product owner) sempre manterá uma lista priorizada (backlog), com todas as funcionalidades que deverão ser implementadas antes pelo time de desenvolvimento. Dessa forma, garantimos que tudo aquilo que for mais importante para o negócio do cliente, será desenvolvido, testado e entregue primeiro. Isso permite agregar mais valor ao negócio, em menos tempo, diminuindo custos de operação e aumentando o retorno sobre o investimento (ROI) destes projetos.

2. Mais Flexibilidade às Mudanças do Mercado
A pesquisa do PMI (Project Management Institute), realizada em 2010, com 300 grandes organizações no Brasil, colocou mudanças de escopo constantes como o segundo problema mais comum na gerência de projetos, sendo citada em mais de 70% das organizações entrevistadas. Não é incomum projetos serem concebidos e encerrados no meio da execução, por inúmeros fatores, como: mudança de mercado, reposição de concorrentes, ou mudanças de expectativas dos clientes finais. O mercado vai mudar sempre. O que faz uma empresa ser competitiva é responder rápido a estas mudanças. O Scrum, como a maioria das metodologias ágeis de desenvolvimento, incentiva o desenvolvimento incremental e as entregas parciais do produto que está sendo desenvolvido. Estas entregas (chamadas de sprints), geralmente tem duração de duas a quatro semanas, e contemplam o ciclo completo de desenvolvimento do produto, com as fases de planejamento, design, implementação e testes de aceitação de cada requisito que está sendo desenvolvido. Se o cliente mudar, se o mercado mudar, se o que ontem era tão importante hoje não fazer mais sentido, sem problemas. Podemos mudar nosso planejamento e repriorizar nosso backlog já no próximo sprint.

3. Redução do Time-to-market
Nesta mesma pesquisa, o não cumprimento de prazos é campeão entre os problemas em projetos, citado por mais de 72%, das 300 organizações pesquisadas. A maioria dos projetos é desenvolvida para criação ou melhoria de um produto ou serviço, que atende alguma necessidade identificada no mercado. Isso significa que esta necessidade de mercado tem data de validade, que geralmente é curta, pois pode se modificar, ou deixar de existir rapidamente, em questão de semanas ou dias, dependendo do segmento de negócio do cliente. Como o Scrum promove a entrega de funcionalidades completas a cada sprint, o produto vai sendo construído e entregue à medida que o projeto avança, e novas funcionalidades vão sendo disponibilizadas no mercado. Esta característica do Scrum permite que produtos sejam lançados e validados no mercado muito rapidamente, reduzindo drasticamente o time-to-market de produtos, e atendendo prazos de forma mais eficaz. Estes fatores fazem com que o Scrum já seja aplicado por empresas de diversos segmentos no Brasil, além de ser visto com bons olhos por grande parte dos de gestores, líderes e gerentes de projeto da área de TI.

Prontos para uma metodologia ágil?

Artigo redigido por Eduardo Kruger – sócio da Informant
Publicado no Portal CIO


16
Aug 11

Palestra da Informant na Semana de Computação do IFC-Araquari

Acontece nos dias 15 a 19 de agosto de 2011, no Instituto Federal Catarinense, campus de Araquari/SC, a Semana de computação do IFC-Araquari (SCIFC2011). A programação inclui palestras com profissionais da área de Computação e personalidades da comunidade de software livre.

A Informant marcará presença com a Palestra: Agilidade além dos post-it’s, ministrada por Eduardo Kruger, team leader e responsável pela nossa área de desenvolvimento.

Eduardo vai compartilhar a sua perspectiva de como equipes podem ser mais ágeis, baseado nas suas experiências de trabalho com Scrum e XP. No decorrer do bate papo, também irá apresentar algumas idéias de como o desenvolvimento ágil difere dos métodos tradicionais, e como a filosofia ágil atua em todas as áreas de uma empresa.

A palestra acontece no dia 19 às 13:30 no auditório do IFC e é aberta ao público. Compareça!