Falhas e críticas: formatação
Etiqueta: visualeditor
Etiqueta: visualeditor
 
(5 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 1: Linha 1:
== Desenvolvimento ágil ==
== '''Conceito''' ==
* O desenvolvimento ágil é um termo que se define pelas melhores metodologias segundo os princípios de desenvolvimento segundo o Manifesto para o Desenvolvimento Ágil de Software (também conhecido como Manifesto Ágil), toda metodologia que segue os princípios desse manifesto pode ser considerado como desenvolvimento ágil. Tal manifesto são os princípios comuns entre os projetos de sucesso, ele foi criado durante uma reunião de diversos profissionais da área de desenvolvimento de software no início de 2001 durante um workshop realizado em Snowbird, Utah, EUA.
* No desenvolvimento ágil o desenvolvimento do software é feito em forma de espiral e de forma interativa diferente do modelo tradicional (modelo em cascata), ou seja, no desenvolvimento ágil o projeto é dividido em partes e gerando ciclos de repetição para cada parte do sistema. Em cada ciclo é gerado um sistema funcional, testado e aprovado, com novas funcionalidades.


==== '''Introdução''' ====
== '''Vantagens ao Cliente''' ==
Segundo a Standish Group, até o ano de 2009
* Esse tipo de desenvolvimento se adequa bem a mudanças de projeto, já que possui apenas uma idealização básica das funções e do sistema em si, achando assim natural as mudanças de projeto, surgimento de novas funções e erros no projeto (já que eles estimulam a criatividade e aprendizado do programador). Diferente do desenvolvimento tradicional, que busca a definição no inicio do projeto de um sistema que será a meta final, separando o projeto em fases que devem ser seguidas a risca segundo o plano de desenvolvimento, onde cada pessoa tem seu papel totalmente definido, tendo que realizar apenas o que lhe foi exigido, considerando erros e alterações de projeto como falhas, que atrapalham o rendimento do projeto e assim como aumento do custo do mesmo.
apenas 32% dos projetos tinham sucesso, sendo 44% com atraso ou defeito e 24%
* No desenvolvimento ágil o cliente tem maior afinidade com o projeto, devido ao fato de poder interferir e opinar no sistema durante o decorrer de sua criação, já que é possível retirar duvidas de funcionamento do sistema e inserir com facilidade ideias e funções que surjam nesse processo de criação. Algo que não ocorre no desenvolvimento padrão, que o plano já foi definido e dependendo da etapa em que o projeto se encontra seria necessário um retorno de etapas da cascata para redefinição de projeto e desenvolvimento, atrapalhando a data de entrega do sistema e seu custo, sendo assim o cliente tem que se adequar ao sistema entregue e não o contrário.
são falhos. Surgiu então os métodos ágeis, para suprir a necessidade de melhorias na forma como se desenvolver um software, afim de satisfazer o cliente, elevar o índice de sucesso e já inicializar um novo projeto.


Durante o desenvolvimento de um projeto, novas tecnologias e técnicas são descobertas, novos requisitos são exigidos pelo mercado, desta forma, os métodos "rígidos" de desenvolvimento acabam impedindo alterações no projeto durante a sua construção, o que pode resultar em projetos obsoletos ou que não atendem as novas necessidades do mercado.
== '''Vantagens para os desenvolvedores''' ==
* No desenvolvimento ágil por conta de como os erros são tratados (como possibilidades de aprendizado), os desenvolvedores possuem a chance de testar novas funcionalidades para os programas, incentivando a criatividade nas maneiras para solucionar os eventuais erros, assim como na criação de designs e funcionalidades no decorrer do projeto. Sendo assim os desenvolvedores que participam desse modo de desenvolvimento tem uma maior chance de experimentação de desenvolvimento, tendo desse modo uma maior capacitação, já que são forçados a encontrar erros e suas respectivas soluções, além de possuírem mais criatividade, por serem incentivados a criar novas maneiras de efetivação do projeto.
* Desse modo os desenvolvedores ágeis são melhores tratados, já que não tem a pressão de seguir a risca um padrão de desenvolvimento, que não suporta erros ou mudanças, ou seja, que em caso de erro o trabalhador pode ser o causador do prolongamento da entrega do projeto e/ou possível cancelamento.


==== '''Conceito''' ====
== '''Princípios''' ==
* Os princípios do Manifesto Ágil são:
** Indivíduos e interação entre eles mais que processos e ferramentas.
** Software em funcionamento mais que documentação abrangente.
** Colaboração com o cliente mais que negociação de contratos.
** Responder a mudanças mais que seguir um plano.
* Os 12 princípios do Desenvolvimento Ágil são:
** A maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software de valor.
** Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que o cliente possa tirar vantagens competitivas.
** Entregar software funcionando com freqüencia, na escala de semanas até meses, com preferência aos períodos mais curtos.
** Pessoas relacionadas à negócios e desenvolvedores devem trabalhar em conjunto e diariamente, durante todo o curso do projeto.
** Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte necessário, e confiar que farão seu trabalho.
** O Método mais eficiente e eficaz de transmitir informações para, e por dentro de um time de desenvolvimento, é através de uma conversa cara a cara.
** Software funcional é a medida primária de progresso.
** Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e usuários, devem ser capazes de manter indefinidamente, passos constantes.
** Contínua atenção à excelência técnica e bom design, aumenta a agilidade.
** Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito.
** As melhores arquiteturas, requisitos e designs emergem de times auto organizáveis.
** Em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e otimizam seu comportamento de acordo.


Desenvolvimento Ágil é uma forma de gestão e desenvolvimento de Software que usa uma forma de planejar e executar
== '''Metodologias''' ==
iterativa e incremental, voltado para processos empíricos, ou seja, complexos, caóticos ou com incerteza e até mesmo confusos, com mudanças ao longo do processo de desenvolvimento, não são repetitivos e são imprevisíveis.
* XP (Extreme Programming) e SCRUM são as metodologias ágeis mais conhecidas e usadas, porém também existem outras, como: Adaptive Software Process, Feature Driven Development (FDD), Crystal, Agile Modeling e Win-Win Spiral.


Essa forma de gestão e desenvolvimento divide o problema (software) em produtos menores, para ao final entregá-lo funcionando regularmente. Esta técnica aproxima a equipe, proporcionando maior colaboração entre os desenvolvedores e os experts de negócios, comunicação face a face, reduz os riscos dos projetos, reage as mudanças de forma mais rápida e natural e a satisfação final dos clientes através da adoção de práticas de gestão e de engenharia de software baseadas nos valores e princípios do Lean e do agile. Desta forma, o principal objetivo é a entrega do um produto que realmente atenda o cliente e que será útil e de qualidade.
== '''Referências''' ==
 
* INTRODUÇÃO AO DESENVOLVIMENTO ÁGIL. Disponível em: < http://www.devmedia.com.br/introducao-ao-desenvolvimento-agil/5916 >. Acesso em 22 de Maio de 2017.
Segundo Hishsmith, 2004, agilidade em TI é “a habilidade de criar e responder a mudanças, buscando a obtenção de lucro em um ambiente de negócio turbulento” ou seja, o equilíbrio entre flexibilidade e estabilidade.
* DESENVOLVIMENTO ÁGIL. Aprenda a desenvolver software com foco em entregáveis, agilizando o processo de entregas e comercialização do produto. Disponivel em: < http://ead.parceriapositiva.com.br/site/curso/desenvolvimento-agil >. Acesso em 05 de Junho de 2017.
 
* O QUE É DESENVOLVIMENTO ÁGIL? – FAQ SCRUM. Disponível em: <   http://blog.myscrumhalf.com/2011/05/faq-scrum-o-que-e-desenvolvimento-agil/ >. Acesso em 05 de Junho de 2017.
O desenvolvimento ágil defende que a melhor maneira de atender às necessidades dos clientes é através do trabalho em
* MANIFESTO PARA O DESENVOLVIMENTO ÁGIL DE SOFTWARE. Disponível em: < http://www.manifestoagil.com.br >. Acesso em 05 de Junho de 2017.
equipe, de um grupo comprometido, que foca nos resultados com rapidez e o menor desgaste possível.
* PRINCÍPIOS POR TRÁS DO MANIFESTO ÁGIL. Disponível em: < http://www.manifestoagil.com.br/principios.html >. Acesso em 05 de Junho de 2017.
 
* AGILE DEVELOPMENT: XP E SCRUM EM UMA ABORDAGEM COMPARATIVA. Nesse artigo veremos como um apanhado geral sobre as duas principais metodologias ágeis usadas no mercado e ao final faremos um comparativo entre elas. Disponível em: < http://www.devmedia.com.br/agile-development-xp-e-scrum-em-uma-abordagem-comparativa/30808 >. Acesso em 06 de Junho de 2017.
A confiança nas pessoas e na sua capacidade de colaboração é fundamental ao desenvolvimento ágil. Não há desenvolvimento ou sucesso sem as pessoas. Deve-se criar um processo ágil baseado nas habilidades dos membros da equipe, e não depender tanto de uma estrutura de processo para atingir o seu sucesso.
* APRENDA SOBRE DESENVOLVIMENTO ÁGIL DE SOFTWARE. Este é um guia Open Source sobre Desenvolvimento Ágil feito pela comunidade de Desenvolvimento Ágil do Brasil. Disponível em: < http://www.desenvolvimentoagil.com.br/ >. Acesso em 06 de Junho de 2017.
 
* METODOLOGIAS ÁGEIS DE DESENVOLVIMENTO DE SOFTWARE. Disponível em: < http://www.brq.com/metodologias-ageis/ >. Acesso em 06 de Junho de 2017.
Essa metodologia possibilita que a equipe trabalhe mais sua criatividade. Não há tanta pressão de uma gerência pesada e rígida, que impõe os afazeres. Todos são incentivados a estudar e aprender ao longo do projeto e tem liberdade para tomar decisões que melhor representem o consenso da equipe.
 
Dessa forma, o processo ágil não tem mais aquela antiga hierarquia, ou uma estrutura tradicional de comando e controle e sim uma relação de confiança e colaboração acima de tudo.
 
==== '''Vantagens ao cliente''' ====
 
Dentre os benefícios do desenvolvimento ágil para os clientes, podemos destacar o foco no valor do negócio e no retorno do investimento, na entrega mais rápida e regular do projeto, foco no que é prioritário e que traz mais retorno/lucro, transparência e visibilidade do desenvolvimento, flexibilidade para mudanças de requisitos e mais agilidade nas tomadas de decisões, melhoria na qualidade final do produto, maior produtividade e redução dos riscos. 
 
==== '''Vantagens para os desenvolvedores''' ====
 
O desenvolvimento ágil também é vantajoso para os desenvolvedores. Dentre as vantagens, é possível enfatizar a criação de
escopos claros, maximizar o comprometimento, estabelecer equipes com maior autonomia, disciplina e regularidade com mais comunicação entre si e com o cliente, busca de melhorias, redução de desperdícios, antecipação de problemas e agilidade na tomada de decisões.
 
==== '''História e filosofia''' ====
Desenvolvimento ágil não é algo novo, existe desde 2001, ganhando destaque através do movimento denominado Manifesto ágil, o qual reuniu 17 pessoas para formar uma aliança durante um workshop realizado em Snowbird, Utah, EUA., que assinaram e estipularam as seguintes filosofias/diretrizes a serem seguidas no desenvolvimento de projetos:
 
* ·     Indivíduos e interações mais que processos e ferramentas;
* ·     Software em funcionamento mais que documentação abrangente;
* ·     Colaboração com o cliente mais que negociação de contratos;
* ·     Responder a mudanças mais que seguir um plano;
* ·     Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda."
 
==== '''Princípios''' ====
 
O desenvolvimento ágil funciona baseado em 12 princípios, citados a seguir:
 
1.     Nossa maior prioridade é satisfazer o cliente através da entrega contínua e adiantada de software com valor agregado.
 
2.     Mudanças nos requisitos são bem-vindas, mesmo tardiamente no desenvolvimento. Processos ágeis tiram vantagem das
mudanças visando vantagem competitiva para o cliente.
 
3.     Entregar frequentemente software funcionando, de poucas semanas a poucos meses, com preferência à menor escala de tempo.  
 
4.     Pessoas de negócio e desenvolvedores devem trabalhar diariamente em conjunto por todo o projeto.
 
5.     Construa projetos em torno de indivíduos motivados. Dê a eles o ambiente e o suporte necessário e confie neles para fazer o trabalho.
 
6.     O método mais eficiente e eficaz de transmitir informações para e entre uma equipe de desenvolvimento é através de conversa face a face.
 
7.     Software funcionando é a medida primária de progresso.
 
8.     Os processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente.
 
9.     Contínua atenção à excelência técnica e bom design aumenta a agilidade.
 
10.  Simplicidade--a arte de maximizar a quantidade de trabalho não realizado--é essencial.  
 
11.  As melhores arquiteturas, requisitos e designs emergem de equipes auto-organizáveis.
 
12.  Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e então refina e ajusta seu comportamento de acordo.
 
==== '''Metodologias''' ====
 
O termo “Desenvolvimento ágil" é usado por diversas metodologias e frameworks que desenvolvem software de forma iterativa e incremental. Mas o mais adequado é dizer que existem várias metodologias ágeis, ou seja, existem vários métodos de desenvolvimento que aplicam a filosofia, os princípios e as técnicas do desenvolvimento ágil.
 
Metodologias ágeis de desenvolvimento de software são iterativas, ou seja, o trabalho é dividido em iterações e as mais conhecidas são: Extreme Programming (XP), Scrum, Lean Development, Feature-Driven Development (FDD), Kanban, RUP e OpenUP.
 
Embora cada uma tenha sua particularidade e suas vantagens para cada projeto, o Scrum é considerado o mais simples, fácil e utilizado mundialmente.
 
==== '''Falhas e críticas''' ====
O desenvolvimento ágil também possui falhas e críticas. Dentre as principais, podemos destacar:
* ·        Filosofia ou a cultura da empresa pode conflitar com os valores e princípios do ágil;
* ·        Pode faltar suporte gerencial para apoiar as mudanças. É preciso desejar as mudanças;
* ·        Pode faltar experiência ou o treinamento ser insuficiente no novo processo. É preciso tornar-se capaz de trabalhar de maneira ágil;
* ·        Pode ocorrer boicote ou falta de comprometimento da própria equipe. É preciso reconhecer que há espaço para melhorias e desejá-las;
* ·        Pode faltar estrutura e documentação necessárias;
* ·        Na maioria das vezes trabalha apenas com desenvolvedores de nível sênior;
* ·        Poder levar a maiores dificuldades nas negociações contratuais.
 
==== '''Conclusão''' ====
Embora o desenvolvimento ágil seja considerado um avanço no sistema e na metodologia de programação e desenvolvimento de projetos e traga grandes vantagens, não se deve afirmar que este seja o melhor método. Cada projeto pode possui um método com características particulares que se enquadram melhor no seu desenvolvimento e cada equipe ou programador possui características e preferências que podem se enquadrar em um ou outro método de desenvolvimento. A escolha de uma metodologia deve ser algo bem pensado e estruturado pois esta fará total diferença nos resultados.
 
==== '''Referências''' ====
 
<Ref.: <nowiki>http://www.cprime.com/about/scrum_faq.html</nowiki>>
 
<<nowiki>http://blog.myscrumhalf.com/2011/05/faq-scrum-o-que-e-desenvolvimento-agil/</nowiki>>
 
<<nowiki>http://agilemanifesto.org/iso/ptbr/principles.html</nowiki>>
 
<<nowiki>https://www.ibm.com/developerworks/community/blogs/rationalbrasil/entry/mas_o_que_s_c3_a3o_essas_tais_de_metodologias__c3_a1geis?lang=em</nowiki>>
 
<<nowiki>http://www.ambysoft.com/artwork/graphs/agileCriteria2010Value.jpg</nowiki>>
 
<<nowiki>http://www.devmedia.com.br/login/login.asp?ret=articles/viewcomp.asp?comp=5916</nowiki>>
 
<www.agilemanifesto.org>

Edição atual tal como às 00h09min de 7 de junho de 2017

Conceito

  • O desenvolvimento ágil é um termo que se define pelas melhores metodologias segundo os princípios de desenvolvimento segundo o Manifesto para o Desenvolvimento Ágil de Software (também conhecido como Manifesto Ágil), toda metodologia que segue os princípios desse manifesto pode ser considerado como desenvolvimento ágil. Tal manifesto são os princípios comuns entre os projetos de sucesso, ele foi criado durante uma reunião de diversos profissionais da área de desenvolvimento de software no início de 2001 durante um workshop realizado em Snowbird, Utah, EUA.
  • No desenvolvimento ágil o desenvolvimento do software é feito em forma de espiral e de forma interativa diferente do modelo tradicional (modelo em cascata), ou seja, no desenvolvimento ágil o projeto é dividido em partes e gerando ciclos de repetição para cada parte do sistema. Em cada ciclo é gerado um sistema funcional, testado e aprovado, com novas funcionalidades.

Vantagens ao Cliente

  • Esse tipo de desenvolvimento se adequa bem a mudanças de projeto, já que possui apenas uma idealização básica das funções e do sistema em si, achando assim natural as mudanças de projeto, surgimento de novas funções e erros no projeto (já que eles estimulam a criatividade e aprendizado do programador). Diferente do desenvolvimento tradicional, que busca a definição no inicio do projeto de um sistema que será a meta final, separando o projeto em fases que devem ser seguidas a risca segundo o plano de desenvolvimento, onde cada pessoa tem seu papel totalmente definido, tendo que realizar apenas o que lhe foi exigido, considerando erros e alterações de projeto como falhas, que atrapalham o rendimento do projeto e assim como aumento do custo do mesmo.
  • No desenvolvimento ágil o cliente tem maior afinidade com o projeto, devido ao fato de poder interferir e opinar no sistema durante o decorrer de sua criação, já que é possível retirar duvidas de funcionamento do sistema e inserir com facilidade ideias e funções que surjam nesse processo de criação. Algo que não ocorre no desenvolvimento padrão, já que o plano já foi definido e dependendo da etapa em que o projeto se encontra seria necessário um retorno de etapas da cascata para redefinição de projeto e desenvolvimento, atrapalhando a data de entrega do sistema e seu custo, sendo assim o cliente tem que se adequar ao sistema entregue e não o contrário.

Vantagens para os desenvolvedores

  • No desenvolvimento ágil por conta de como os erros são tratados (como possibilidades de aprendizado), os desenvolvedores possuem a chance de testar novas funcionalidades para os programas, incentivando a criatividade nas maneiras para solucionar os eventuais erros, assim como na criação de designs e funcionalidades no decorrer do projeto. Sendo assim os desenvolvedores que participam desse modo de desenvolvimento tem uma maior chance de experimentação de desenvolvimento, tendo desse modo uma maior capacitação, já que são forçados a encontrar erros e suas respectivas soluções, além de possuírem mais criatividade, por serem incentivados a criar novas maneiras de efetivação do projeto.
  • Desse modo os desenvolvedores ágeis são melhores tratados, já que não tem a pressão de seguir a risca um padrão de desenvolvimento, que não suporta erros ou mudanças, ou seja, que em caso de erro o trabalhador pode ser o causador do prolongamento da entrega do projeto e/ou possível cancelamento.

Princípios

  • Os princípios do Manifesto Ágil são:
    • Indivíduos e interação entre eles mais que processos e ferramentas.
    • Software em funcionamento mais que documentação abrangente.
    • Colaboração com o cliente mais que negociação de contratos.
    • Responder a mudanças mais que seguir um plano.
  • Os 12 princípios do Desenvolvimento Ágil são:
    • A maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software de valor.
    • Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que o cliente possa tirar vantagens competitivas.
    • Entregar software funcionando com freqüencia, na escala de semanas até meses, com preferência aos períodos mais curtos.
    • Pessoas relacionadas à negócios e desenvolvedores devem trabalhar em conjunto e diariamente, durante todo o curso do projeto.
    • Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte necessário, e confiar que farão seu trabalho.
    • O Método mais eficiente e eficaz de transmitir informações para, e por dentro de um time de desenvolvimento, é através de uma conversa cara a cara.
    • Software funcional é a medida primária de progresso.
    • Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e usuários, devem ser capazes de manter indefinidamente, passos constantes.
    • Contínua atenção à excelência técnica e bom design, aumenta a agilidade.
    • Simplicidade: a arte de maximizar a quantidade de trabalho que não precisou ser feito.
    • As melhores arquiteturas, requisitos e designs emergem de times auto organizáveis.
    • Em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e otimizam seu comportamento de acordo.

Metodologias

  • XP (Extreme Programming) e SCRUM são as metodologias ágeis mais conhecidas e usadas, porém também existem outras, como: Adaptive Software Process, Feature Driven Development (FDD), Crystal, Agile Modeling e Win-Win Spiral.

Referências