Escolar Documentos
Profissional Documentos
Cultura Documentos
por
GRUPO 5
Fábio Dayrell Ferreira Martins Rosa
Jéssica Taís Carvalho Rodrigues
Maria Isná Alencar de Castro
Priscila Izabelle De - Stefano Santos
Rômulo Rafael da Silva
Belo Horizonte
2017 / 2º semestre
1. INTRODUÇÃO
2
custos para a execução de projetos, rentabilidade dos projetos etc. Na realidade de
um projeto mudanças ocorrem, o cliente não sabe o que quer, as estimativas não se
confirmam, as pessoas da equipes são diferentes e os recursos são escassos.
Diante deste cenário, as metodologias ágeis propõem crenças e princípios: (i)
retorno sobre o investimento, (ii) melhoria de processos, (iii) desenvolvimento
de pessoas e da cultura, (iv) comunicação, (v) adaptação e (vi) inovação.
O Manifesto Ágil (2001) tem por principais pontos: (i) indivíduos e interação
mais que processos e ferramentas, (ii) software funcional mais que
documentação abrangente, (iii) colaboração do cliente mais que negociação
de contrato, (iv) responder a mudanças mais que seguir um plano, (v)
mudança de postura dando mais ênfase às pessoas do que a processos, (vi)
desenvolvimento iterativo e incremental, e (vii) visão ágil, ou seja, prioriza o que
é mais importante e foca nisso.
Assim, enquanto as metodologias tradicionais têm um planejamento para
prevenção de mudanças, as metodologias ágeis incorporam as mudanças ao
projeto devido à necessidade, oportunidade, requisitos incompletos e outros fatores
geradores de mudanças. Daí, faz-se necessário entender os princípios, técnicas e
ferramentas das metodologias ágeis, pontuando-se as vantagens e desvantagens
delas que não implique numa “defesa cega” destas metodologias em oposição às
metodologias tradicionais, uma vez que ambas podem contribuir para projetos de
desenvolvimento de software que gere produtos finais de melhor qualidade e maior
valor percebido pelo cliente.
1.2.1 Objetivos
1.2.2 Justificativa
3
tempo possível”.
1.2.3 Motivação
4
Assim, é possível considerar que há uma série de fatores que podem
influenciar direta ou indiretamente os projetos de desenvolvimento em um quadro
ágil. A adoção de metodologias de desenvolvimento ágil tem um impacto positivo na
produtividade e na qualidade: Tore et al. (2009) articularam que o desenvolvimento
ágil de software teve um enorme impacto em como o software é desenvolvido em
todo o mundo e em uma pesquisa de 2005 nos EUA e Europa, por exemplo, revelou
que 14% das empresas que usavam métodos ágeis e 49% das empresas estavam
cientes dos métodos ágeis e estavam interessadas em adotá-los. Outras pesquisas,
como a já citada por Mah (2008), trata sobre produtividade em projetos ágeis e
indica que projetos ágeis são 16% mais produtivos.
Atualmente, as metodologias ágeis estão se tornando cada vez mais
requeridas nas atividades relacionadas ao desenvolvimento de software. Do outro
lado, as metodologias tradicionais estão em um panorama de declínio, porém
convém destacar que as metodologias ágeis são produtos das metodologias
tradicionais, a partir do momento que estas contribuíram de diferentes maneiras:
● seja pelas necessidades que emergiram com os avanços das
tecnologias;
● os problemas e os desafios originados da aplicação de antigas
metodologias que não suportavam eficientemente o desenvolvimento
de software;
● pesquisas em engenharia de software com as finalidades de
desenvolver novas práticas ou de aperfeiçoá-las para atender as
demandas dos clientes e;
● as necessidades das equipes de desenvolvimento entre outros fatores.
3. MÉTODO DE PESQUISA
5
realizadas mediante alguma necessidade - foi realizado o
desenvolvimento do trabalho ao longo do mês de Outubro;
5. Revisão do artigo: as duas primeiras semanas de Novembro
compreenderam atividades de revisão do desenvolvimento do
trabalho, apresentação e discussão dos resultados e conclusão do
artigo;
6. Apresentação do artigo: em 13/11/2017, como requisito de avaliação
da disciplina de Engenharia de Software, uma apresentação do artigo
desenvolvido foi realizada ao professor e alunos;
7. Revisão final: a partir dos feedbacks da apresentação do artigo,
novas revisões das partes de Desenvolvimento, Resultados e
Conclusão foram realizadas, para se obter uma versão final e
qualificada para submissão como entrega final;
8. Entrega final: a entrega final ocorreu através do ambiente Moodle da
disciplina em 20/11/2017.
Este artigo trata-se de uma pesquisa bibliográfica, não se fazendo
necessárias ferramentas, metodologias ou outros recursos sofisticados para o
desenvolvimento deste trabalho. Portanto, compreende um artigo de revisão da
literatura disponível sobre metodologias ágeis. Não é considerado uma revisão
sistemática por não utilizar os métodos fundamentais para este tipo de trabalho.
É importante destacar que, a partir dos objetivos, o artigo recorre a
referências bibliográficas acadêmicos e de mercado, uma vez que se trata de um
tema de interesse e de pesquisas por atores destes dois conjuntos. Ciente dos
objetivos e da importância de assegurar qualidade das fontes bibliográficas
utilizadas, a revisão e seleção demandou maior tempo e esforço por parte dos
autores para originar um trabalho final com qualidade.
4. DESENVOLVIMENTO DO TRABALHO
6
ponto de inflexão na indústria de desenvolvimento de software emerge no início da
década de 1990 através de duas reportagens: uma da Newsweek, “Podemos
Confiar em Nosso Software”, e pelo Wall Street Journal em “Criar Software Novo:
Era uma Tarefa Agonizante…”.
A história da computação é marcada por três desafiantes períodos descritos
por Pressman (1995): inicialmente, o principal desafio era desenvolver o hardware
que reduzisse o custo de processamento e armazenagem de dados, então a década
de 1980 apresenta avanços na microeletrônica que resultam em maior poder de
computação com menor custo. Na década de 1990, o desafio foi melhorar a
qualidade e reduzir os custos das soluções baseadas em computador - isto é,
soluções em software.
Atualmente, quando se trata de desenvolvimento de software (e de
engenharia de software) se percebe que estes assuntos estão em constante e
rápido desenvolvimento, pois softwares de qualidade são cada vez mais requeridos.
A engenharia e o desenvolvimento de software possuem ferramentas novas e
poderosas que são suporte para o processo de desenvolvimento (Peters, 2001).
Entre 1950 e 2000, o desenvolvimento de software passou por importantes
desafios e mudanças para acompanhar as diferentes necessidades que surgiam.
Pressman (1995), divide este intervalo em quatro grandes períodos, conforme figura
1 abaixo:
7
projeto, análise crítica (Prikladnicki, 2004).
Ainda por Prikladnicki (2004), quanto aos desafios do desenvolvimento de
software, é possível considerar os novos ambientes de desenvolvimento
(e-business, desenvolvimento Web, outsourcing, ambientes fisicamente
distribuídos), gerenciamento de riscos, capacitação de pessoal, planejamento,
padrões de desenvolvimento de software, certificação, aprendizagem
organizacional, produtividade e motivação.
A evolução da tecnologia resolveu desafios anteriores ao que se refere às
áreas da Engenharia de Software, mas ao mesmo tempo novos desafios emergiram
devido às diferentes formas possíveis de desenvolver um sistema. Ficar preso a
uma abordagem, a um modelo ou a alguma metodologia já não é mais possível
quanto à atividade de desenvolvimento de software, então é possível considerar que
a combinação de diferentes abordagens, técnicas e ferramentas podem
potencializar resultados mais precisos, adequados, elegantes e econômicos.
O bom uso e integração das partes ferramentas, métodos e processo é
necessário para que a qualidade final do software atenda aos requisitos e às
necessidades do cliente, uma vez que este é uma das principais partes
interessadas. As relações entre o proprietário do produto (e equipe) e o cliente,
entretanto, não são sempre amistosas e positivas. Para além disso, o ambiente, a
organização e as interações entre os membros da equipe de desenvolvimento
(fatores internos) e fatores externos também corroboram.
Neste breve histórico descrito sobre a Engenharia de Software, mais
especificamente para o processo de desenvolvimento de software, as metodologias
ágeis surgem como um tema recorrente entre os atores envolvidos com esse
processo. A área de Engenharia de Software é especificamente grande, com vários
assuntos integrantes, uma gama de abordagens, técnicas, ferramentas e
metodologias existentes, relacionadas e complementares para fazer frente aos
desafios e problemas inerentes da área.
Este trabalho está organizando da seguinte forma: após esse breve histórico,
discorre-se sobre o processo de desenvolvimento de software; em seguida, sobre
as metodologias tradicionais do processo de desenvolvimento de software; depois,
com maior foco, as metodologias ágeis são abordadas; trata-se, também, dos
principais problemas do desenvolvimento de software e, finalmente, os atuais
desafios quanto ao desenvolvimento de software e as conclusões e considerações
que os autores chegaram ao fim do trabalho.
8
stakeholders, em alguns casos, interesses conflituosos.
A literatura apresenta diferentes definições sobre a Engenharia de Software,
muitas delas complementares entre si. Das definições encontradas, considera-se a
mais apropriada a este artigo ao definir a Engenharia de Software como “(...) o
estabelecimento e o uso de bons princípios de engenharia e boas práticas de
gerenciamento, além da evolução de ferramentas e métodos para uso apropriado, a
fim de obter, dentro dos limites existentes, um software de alta qualidade” (Macro,
1990).
A partir da definição anterior, destaca-se os seguinte trechos: (i) “uso de
bons princípios”, (ii) “boas práticas de gerenciamento”, (iii) “além da evolução
de ferramentas e métodos” e (iv) “dentro dos limites existentes, um software
de alta qualidade”. Estes trechos destacados da definição permite importantes
considerações, as quais podem ser extensivas às metodologias ágeis:
1. em (i) fundamenta que bons princípios são necessários no processo de
desenvolvimento de software, independente dos métodos, abordagens,
ferramentas e metodologias adotadas e vai de encontro das capacidades e
habilidades dos membros que compõem as equipes de desenvolvimento;
2. já (ii), orienta para a importância de boas práticas de gerenciamento. Em
nível macro, o Gerente de Projetos e, em nível micro, dos membros da
equipe. Gerenciar não compreende apenas uma atividade do Gerente de
Projetos / Scrum Master (que, no caso dele, é um dos seus papéis
fundamentais), mas também da equipe por adotar boas práticas ao gerenciar
suas tarefas dentro do processo de desenvolvimento;
3. o trecho (iii) orienta para as melhorias e evoluções que são promovidas nas
áreas da Engenharia de Software, indicando dinamismo constante destes
elementos, para fazer frente aos desafios e problemas inerentes e
emergentes da área, especialmente nos dias atuais: necessidades urgentes,
redução de custos, alta competitividade, múltiplos interesses das partes
direta ou indiretamente envolvidas etc.;
4. provável que um dos trechos mais importantes, (iv) ao mencionar as
limitações que existem quando se trata de desenvolvimento de software, pois
há vários fatores que influenciam a qualidade final (tempo, recursos,
legislações, competidores, evoluções tecnológicas etc.). Ao reconhecer as
limitações, pois não é possível se fazer tudo, os atores envolvidos,
especialmente aqueles ligados diretamente ao desenvolvimento do software,
podem dedicar esforços para a qualidade final do software, sem despender
energias desnecessariamente em tarefas que, por ora, possuem limitações.
9
Figura 2 - Camadas da Engenharia de Software (Pressman, 2001)
10
4.3 METODOLOGIAS TRADICIONAIS DE CICLOS DE VIDA DO PROCESSO DE
DESENVOLVIMENTO DE SOFTWARE
Figura 3 - Modelo de Ciclo de Vida Clássico ou Modelo Cascata (Peters e Pedrycz, 2001)
11
Carvalho e Chiossi (2001), este modelo tem como vantagens: (i) caracteriza
fases estanques para as quais podem ser descritas técnicas para o seu
desenvolvimento de forma clara e (ii) é o ciclo de vida mais amplamente utilizado da
Engenharia de Software. Quanto às desvantagens, enumeram-se: (i) os projetos
reais raramente seguem o fluxo sequencial proposto pelo modelo, (ii) o cliente não
saber declarar todas as suas exigências, (iii) o cliente deve ter paciência, pois
qualquer erro detectado após a revisão do programa de trabalho pode ser
desastroso.
12
4.3.3 MODELO DE CICLO DE VIDA ESPIRAL
13
4.4 METODOLOGIAS ÁGEIS DE CICLOS DE VIDA DO PROCESSO DE
DESENVOLVIMENTO DE SOFTWARE
Tabela 1 - Avaliações de projetos entregues nas últimas duas décadas (Standish Group - Chaos
Report, s.d.)
14
regularmente (entregas constantes de partes operacionais), aproximação e
colaboração da Equipe de Desenvolvimento com aqueles com significativo
know-how do negócio, comunicação, redução dos riscos associados às
incertezas do projeto (integração e testes contínuos), adaptativa (respostas às
mudanças de forma mais rápida e natural) e, por fim, satisfação final do cliente
devido à adoção de práticas de gestão (como, por exemplo, feedbacks) e
engenharia de software baseados nos valores e princípios do Lean e do Agile.
Reconhece-se, assim, que o desenvolvimento de software é um processo
complicado e imprevisíveis, mas com mecanismos voltados para ações corretivas.
16
Consultants (2015). Neste trabalho, serão destacadas as evidências que são
congruentes aos nosso objetivos e com considerações sobre os resultados
evidenciados.
Gráfico 1 - Introdução ágil mundial por número de organizações por fase de adoção da tecnologia
(Reifer e Hastie, 2017)
17
Gráfico 2 - Introdução ágil mundial por número de organizações por fase de adoção da
tecnologia (Reifer e Hastie, 2017)
Gráfico 3 - Taxa de reversão de Metodologias Ágeis por Ano (Reifer e Hastie, 2017)
19
necessariamente os custos foram traduzidos por redução de equipe, mas por
redução nos esforços, em geral, para se obter bons resultados. Porém, em
projetos ágeis em escala, os custos de gerenciamento são maiores para
projetos maiores, pois as despesas ágeis variam amplamente ao considerar o
domínio e contexto da aplicação;
● distribuição ágil de esforços e duração diferentes das metodologias
tradicionais: a partir de dados analisados por Reifer e Hastie (2017), a
maneira como o tempo e os esforços são distribuídos durante o
desenvolvimento de software usando metodologias ágeis difere daquela
experimentada em projetos direcionados por metodologias tradicionais.
Segundo eles, o principal motivo para essa diferença é que aqueles que
utilizam ágil enfocam seus esforços na criação de produtos funcionais em
intervalos curtos, em vez de criar documentação. Os desenvolvedores ágeis
criam e revisam o código de trabalho com o usuário, ao invés de dedicar
tempo e esforços para gerar requisitos e especificações de projeto antes do
início da codificação;
20
abordagens contínuas de integração e teste, além da qualidade ser abordada
pelo próprio time e não por terceiros;
● valor ágil (agile value) é difícil de quantificar: as metodologias ágeis
colocam ênfase no fornecimento aos seus usuários/clientes com valor,
fornecendo produtos de software de trabalho continuamente ao longo do ciclo
de vida do desenvolvimento. O valor é geralmente medido em termos do
benefício financeiro e/ou competitivo que as organizações recebem para suas
despesas. Embora existam algumas orientações disponíveis para o
planejamento de valor, segundo Reifer e Hastie (2017), é oferecida pouca
ajuda sobre como quantificar o valor derivado desses esforços. Os autores,
sugerem então medidas clássicas devido à falta de clareza: custo/benefícios,
retorno ou retorno sobre o investimento para quantificar os retornos derivados
das abordagens ágeis;
● ágil continua a oferecer aos seus usuários uma vantagem competitiva:
muitas conclusões parecem acreditar que metodologias ágeis podem
representar uma vantagem competitiva quando as organizações aproveitam
plenamente os pontos fortes e compensam suas fraquezas. Não só as
metodologias ágeis proporcionam recompensas de produtividade, custo e
tempo de mercado, proporcionam aos usuários a capacidade de atrair e reter
o talento. Reifer e Hastie (2017) recomendam a institucionalização destas
metodologias em toda a empresa para aproveitar aqueles e outros
benefícios, estar atento ao futuro e aproveitar as melhores abordagens que
tenham funcionado para a empresa e nos projetos bem-sucedidos;
● os impactos ágeis nas práticas de aquisição do governo podem ser
importantes: Reifer e Hastie (2017) destaca que o impacto das metodologias
ágeis não se limita às práticas de desenvolvimento. Quando ágil é usado em
contratos, os impactos quanto ao planejamento, tempo, orçamentos,
requisitos, gerenciamento, progresso e o desempenho geral podem obter
benefícios significativos, principalmente quando governo e os fornecedores
estabelecem um gerenciamento colaborativo.
Outras evidências são descritas por Reifer e Hastie (2017) em seus estudos,
porém estes não serão aqui tratados. As 12 evidências apresentadas neste
trabalho, com destaque para as 3 primeiras permitem elucidar o atual cenário da
aplicação de metodologias ágeis seja no desenvolvimento de software seja em toda
a organização.
21
aos ganhos de valor para o cliente e stakeholders.
22
Gráfico 6 - Proposta de valor em desenvolvimento ágil
23
4.4.5 METODOLOGIAS ÁGEIS E INOVAÇÃO
5. RESULTADOS E DISCUSSÃO
24
os valores, princípios e valores possam fluir com maior qualidade e potencializar
benefícios quanto ao desenvolvimento de softwares (ou outras atividades que se
possa apropriar da metodologia).
A atual dinâmica para o desenvolvimento de software é fortemente
influenciado por fatores externos e, em outra medida, pelos internos também.
Softwares úteis, de boa qualidade e eficientes são traduzidos em competitividade,
eficiência e eficácia para as organizações que deles necessitam para suportar ou
executar muitas de suas tarefas. Competitividade significa, no atual contexto, estar a
frente da concorrência, acompanhar tendências, gerar / entregar valor aos clientes e
outras partes interessadas e, potencialmente, aumentos de lucratividade,
rentabilidade e retornos sobre investimentos.
Nos tópicos anteriores, é possível identificar evidências positivas quanto às
metodologias e quando a adoção delas: ganho de produtividade, redução de custos,
distribuição de esforços, aumento da capacidade para cumprimento de prazos,
potencializada aumento da qualidade, permite a geração de vantagens competitivas
e a adoção das metodologias em outras atividades pode se apresentar benéfica.
Essas evidências positivas, porém, não são consequências naturais ao se adotar o
ágil. Como qualquer metodologia, ágil também possui suas limitações e orientações
(como, quando, onde, por que) ao se adotar.
Os trabalhos relacionados neste artigo elucidam sobre as vantagens,
desvantagens e orientações sobre a adoção de metodologias ágeis. Não é só
adotar e os problemas de desenvolvimento de softwares estarão solucionados. As
própria metodologias ágeis estão sujeitas a erros e outros efeitos colaterais e
compreender isso faz toda diferença. Os variados contextos, as diferentes partes
interessadas, as possíveis limitações e outros desafios são fatores que sempre
afetarão a qualidade final de um software e, as metodologias ágeis (bem como as
tradicionais) não foram desenvolvidas para solucioná-los, mas sim para prover
orientações e caminhos para agir. Pode-se destacar dois desafios que as
metodologias ágeis ainda não consegue tratar facilmente: escalabilidade e
controle de custos.
Por fim, é relevante destacar que, ao se aplicar e adotar metodologias ágeis
seja no desenvolvimento de software ou em outras atividades nas quais elas
possam gerar benefícios, identificar os contextos em que os projetos e as equipes
de desenvolvimento estão / serão inseridos é pertinente para que se minimizem
erros, falhas, defeitos e outros efeitos colaterais nas atividades que serão
suportadas pelo ágil ou pelo tradicional. Dois focos importantes podem nortear nas
decisões: qualidade final para o software e agregar / gerar valor para o cliente
(e, por consequência, para a pessoa, equipe ou organização responsáveis pelo
desenvolvimento do software).
6. CONCLUSÃO
25
economia, educação etc.).
Este artigo se propôs a apresentar as principais metodologias ágeis, suas
vantagens e desvantagens, sem se ater especificamente a uma ou outra. Contextos,
análises e evidências foram apresentados para contextualizar as metodologias
ágeis quanto à engenharia de software, pois elas foram desenvolvidas com a
finalidade de fornecer orientações, princípios e valores para a complexidade cada
vez maior quanto ao desenvolvimento de softwares.
Pesquisas recentes, especialmente de Reifer e Hastie (2017) por sua
atualidade e análise profunda a partir de diferentes fontes de dados, caracterizam
com boa referência e claridade o cenário atual de implantação, desenvolvimento e
desafios quanto às metodologias ágeis, permitindo projetar um futuro quanto estas
abordagens e a área de engenharia de software que, é importante considerar, não
pode ser estudada e compreendida isoladamente. Tecnologias emergentes
(aprendizagem de máquina, inteligência artificial, internet das coisas etc.) gerarão
impactos sobre a engenharia software e consequentemente em assuntos que
tangenciam esta área.
Apesar de um foco maior em metodologias ágeis, não se pode desmerecer
as contribuições que as metodologias tradicionais conceberam e foram úteis para o
desenvolvimento do ágil. Ainda, em algumas situações, é preferível adoção de
abordagens tradicionais ou, alternativamente, metodologias híbridas que se utilizam
de princípios, valores, ferramentas e outros subsídios advindos das tradicionais e/ou
ágeis. Além disso, metodologias ágeis estão em implementação em outros setores
relacionados ou nada relacionados com o desenvolvimento de software, focalizando
assim os conceitos, princípios e valores de inovação.
O artigo também dá referências e indicativos de quão importante é considerar
o contexto da aplicação, as partes interessadas, o ambiente da organização, o
histórico de projetos, as características (técnicas e relacionais) da equipe de
desenvolvimento, os processos da empresa, as ferramentas de suporte e vários
outros fatores para que, ao se adotar o ágil, não seja feito somente por
conveniências, modismos ou outros interesses que, mais a frente, poderão minar ou
reduzir a qualidade dos projetos e os resultados finais. Gerar valor ao cliente com
um projeto de qualidade é competitivamente importante, mas antes de se alcançar
isso, o caminho que as organizações e as equipes precisam seguir exige esforços
de vários atores.
7. BIBLIOGRAFIA CITADA
DENNING, Steve. “Agile: The World’s Most Popular Innovation Engine”. Forbes.
26
Acessado 18 de novembro de 2017.
https://www.forbes.com/sites/stevedenning/2015/07/23/the-worlds-most-popular-inno
vation-engine/.
REIFER, Donald J., Shane Hastie. “Quantitative Analysis of Agile Methods Study
(2017): Twelve Major Findings”. InfoQ. Acessado 18 de novembro de 2017.
https://www.infoq.com/articles/reifer-agile-study-2017.
STEFFEN, Juliana B. “O que são essas tais de metodologias Ágeis ?”. Blog da IBM
- 23 de janeiro 2012. Disponível em:
<https://www.ibm.com/developerworks/community/blogs/rationalbrasil/entry/mas_o_
que_s_c3_a3o_essas_tais_de_metodologias__c3_a1geis?lang=en> Acesso em
27
outubro-novembro / 2017
28