Metodologias de Desenvolvimento Ágil – Parte 1: Introdução


Metodologias AgeisEstamos começando hoje uma série de artigos sobre Metodologias de Desenvolvimento Ágil. Estes artigos são baseados no Trabalho de Conclusão de Curso apresentado como exigência para a obtenção do grau de Bacharel em Ciência da Computação da Faculdade Anhanguera de Campinas – Unidade 3, denominado “Metodologias de Desenvolvimento Ágil Aplicadas No Desenvolvimento De Softwares Em Empresas De Pequeno Porte“, escrito por Felipe Morandin, Fernando Fonte e Tiago Souza.

Espero que você aproveite a leitura.

1 – INTRODUÇÃO:

1.1 – Apresentação:

O desenvolvimento de software é algo relativamente recente e desde o seu surgimento procura sempre facilitar a execução de tarefas que são feitas com frequência. Os primeiros programas eram criados para realizar funções simples como fazer cálculos ou criar pequenos textos; com o tempo e com o desenvolvimento das tecnologias utilizadas nos computadores, os programas começaram a ser maiores, mais complexos e mais funcionais.

Com essa evolução dos softwares, as software houses[1] começaram a buscar novas metodologias, como por exemplo as metodologias ágeis, para o desenvolvimento de programas visando, entre outras coisas, a redução de risco nos projetos e uma maior produtividade.

Segundo alguns dados (Grey, 1995) o desenvolvimento de software é uma atividade cada vez mais passível de erros de projeto e de execução e, entre seus principais riscos, pode-se citar os gastos que sempre superam o orçamento, o consumo de tempo que supera o cronograma, os requisitos mal elaborados (o que faz com que o “problema” do usuário dificilmente seja solucionado) e a baixa qualidade nos sistemas desenvolvidos (Fowler, 2003).

Todos esses riscos podem gerar diversos problemas dentro da empresa, pois no caso dos prazos terminarem, os funcionários sofrerão mais uma pressão para terminar o programa e com isso a qualidade do código, consequentemente cairá, fazendo com que o cliente ou não receba seu produto no prazo, ou o receba com má qualidade. Tudo isso fará com que ele não volte a confiar nessa empresa para prover novas soluções.

Todos esses fatores incentivaram uma busca constante por uma melhora, por uma solução para esses problemas (Braga). Essa busca teve como marco inicial a criação da chamada Engenharia de Software, e desde sua criação, o processo de desenvolvimento de software vem recebendo inúmeras propostas para melhorar os seus passos. Essas propostas podem ser dividas em três grandes processos. São eles:

  • Processo em cascata: todo o processo é feito em etapas rígidas que só podem ser começadas quando a anterior já estiver finalizada. Além de ter as etapas bem definidas, esse processo é caracterizado por ter os papéis dentro da equipe bem definidos. Nesse tipo de processo cada pessoa realiza a sua atividade preocupando-se somente com uma parte do processo, com a sua tarefa entregue. Nesse tipo de processo é comum também que as pessoas envolvidas com o processo não saibam exatamente tudo o que é feito, tudo o que é usado dentro do projeto e, em alguns casos, qual será o resultado final.
  • Processo iterativo: este processo visa à construção de uma pequena parcela do projeto, assim reduz o tempo em que os problemas são encontrados, facilitando a correção e evitando o atraso do projeto.
  • Processo ágil: esse processo é baseado no processo iterativo, mas usam como comunicação o mecanismo de controle primário, que vem de testes e uso das versões do software desenvolvido.

Esses processos buscam o aperfeiçoamento e o adequamento do projeto dentro das necessidades apresentadas pelo mercado. É sempre o mercado o responsável pelas mudanças de processos, pois, esse sempre está em movimento, sempre está sofrendo alterações e, com isso, sempre pede uma alteração não esperada ou novas funcionalidades para que o projeto continue atendendo as expectativas do cliente. Para atender ao mercado de maneira rápida e eficiente, é importante adequar o desenvolvimento de software a essas mudanças.

No processo de desenvolvimento de software convencional, o resultado de requisições para adicionar uma nova funcionalidade ao sistema, ou mesmo para efetuar uma correção, só é disponibilizada quando uma nova versão do software é liberada. Na metodologia ágil, a evolução é vista a todo o momento, seja em uma reunião, seja ao final de cada semana de trabalho.

Hoje podemos encontrar diversas metodologias para desenvolvimento de software ágil como SCRUM[2] (Wells, 2006), Extreme Programming (XP[3]) (Jeffries, 2008), FDD[4] (Web Site a, 2008), DSDM[5] (Alexandrou, 2008) entre outras. Grande parte dessas metodologias tem como foco principal o desenvolvimento de software em períodos curtos que são chamados iterações. Essas iterações duram em média de duas a quatro semanas e são tratadas como miniaturas do projeto. Ao final de cada período de iteração é possível ter um software já com partes funcionais, possível de ser usado.  Além disso, elas possuem todas as etapas necessárias para o desenvolvimento do software.

A metodologia de desenvolvimento ágil realça a comunicação frente a frente entre os integrantes da equipe. Para tornar essa comunicação um item positivo para o projeto, os integrantes essenciais para conclusão do mesmo (clientes, gerentes, analistas de negócios, etc.) são reunidos em uma única sala para discutir as necessidades do software e esclarecer as dúvidas que ainda restam para seu desenvolvimento.

Os métodos de desenvolvimento ágil visam, principalmente, os aspectos humanos dentro de um projeto e, justamente por isso, que eles demonstram sucesso.

O objetivo deste trabalho é apresentar a utilização e aplicação da metodologia SCRUM em empresas de pequeno porte que utilizam metodologias de desenvolvimento em cascata ou iterativos, visando a agilidade no desenvolvimento de software, e assim fazendo com que o processo comum de desenvolvimento (que visa o levantamento total dos requisitos, compreensão e domínio do problema antes do inicio do desenvolvimento), seja substituído pelo processo de desenvolvimento ágil que visa o levantamento parcial e planejamento constantes.

Essa metodologia vem para, como foi dito anteriormente, trazer agilidade para o processo e para a produção de resultados satisfazendo o cliente em uma menor fração de tempo. O uso dessa metodologia tem sido amplamente divulgado por todo o mundo e vem causando grandes modificações nas formas de pensar e agir de gerentes, clientes e todas pessoas que estão diretamente ligadas com o projeto.

No capítulo 2 deste trabalho são apresentadas as principais características das metodologias Extreme Programming (XP) e SCRUM. No capítulo 3 é discutido como as empresas de pequeno porte estão utilizando estas metodologias. Nele ainda, são apresentadas as dificuldades de implantação e ganhos e, por fim, no capítulo 4 são demonstrados os resultados além de apresentar conclusões e possíveis sugestões.

 


[1]              Software houses são empresas que se dedicam a produzir esses produtos

[2]              SCRUM é uma  metodologia de questão baseia-se em atividades de monitoramento e feedback, com reuniões rápidas e diárias com suas equipes de poucos integrantes, visando a identificação e correção de qualquer problema no processo de desenvolvimento.

[3]              Extreme Programmimg é uma metodologia é voltada para equipes pequenas e médias, que desenvolvem software baseado em requisitos não totalmente definidos e que se modificam rapidamente.

[4]              Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma das seis metodologias ágeis originais, cujos representantes redigiram o Manifesto Ágil para Desenvolvimento de Software, em 2001.

[5]              Dynamic Systems Development Method (DSDM) é uma metodologia de desenvolvimento de software inicialmente baseada na metodologia Rapid Application Development, sendo iterativa e incremental, com uma abordagem que enfatiza a continuidade do envolvimento dos utilizadores.

Índice:

Últimos 5 artigos de Fernando Fonte

Sobre Fernando Fonte

De Campinas-SP, bacharel em Ciência da Computação. Atua como Analista Programador em uma empresa de tecnologia. Tem experiência no desenvolvendo de softwares para comunicação e controle de hadware via porta serial e sistemas ERP. Possui conhecimento em sistemas operacionais Windows, programação Delphi e Visual Basic 6 e Banco de Dados SQL Server e MySQL. Atualmente estuda C# e Android. Tem interesse em Jogos, Celulares, Smartphones, Notebooks e tudo que for relacionado a tecnologia. Fundador deste site e editor chefe, convidou amigos para lhe ajudar com este projeto.

Deixe uma resposta