Qual a melhor metodologia?

Essa é uma questão polêmica, e vejo muitos profissionais tentando responder e justificar a sua resposta. E a cada vez, que eu leio algo sobre o assunto, fico com uma outra dúvida: Será que existe a melhor metodologia para o desenvolvimento de software?

Mas antes de abordar as metodologias de software, vamos definir o que é metodologia.

De acordo com a Wikipédia, “Metodologia é o estudo dos métodos”. Hmmm, não ajudou muito, neh…

Vamos agora ver o que o Michaelis tem a dizer sobre metodologia:

1 Estudo científico dos métodos. 2 Arte de guiar o espírito na investigação da verdade. 3 Filos Parte da Lógica que se ocupa dos métodos do raciocínio, em oposição à Lógica Formal. M. didática: teoria dos procedimentos de ensino, geral ou particular para cada disciplina; didática teórica.

Essa segunda definição é bem profunda, e ajudaria bastante os marqueteiros, imagina só um falando: “A metodologia da nossa empresa, representa a arte de guiar o espírito ao cumprimento dos requisitos.”

Juntando as definições que foram apresentadas, podemos dizer que metodologia é um conjunto de procedimentos que são realizados visando um objetivo maior.

Vamos agora, ir para o mundo do desenvolvimento de software, no qual há várias metodologias que podem ser seguidas. Podemos dividir as principais metodologias em três categorias:

  • Cascata: Cascata Clássica, Cascata Modificada e Modelo V;
  • Iterativa: Modelo Espiral e RUP;
  • Ágil: Extreme Programming (XP) e Scrum.

Cada uma dessas metodologias, como tudo na vida, tem suas vantagens e desvantagens, abaixo apresento uma comparação das metodologias, de acordo com alguns cenários:

comparacao_metodologias

Como pode ser visto na figura acima, de acordo com os cenários apresentados, a melhor metodologia seria o RUP. A razão para esse fato, é que a figura foi retirada do material para a certificação IBM Certified Specialist – Software Quality, e o RUP é um processo proprietário criado pela Rational Software Corporation, adquirida pela IBM. Logo a IBM apresenta o RUP como melhor metodologia, o que pode até ser verdade, dependendo do projeto de software.

Agora você pode está se perguntando: “Como assim, pode até ser verdade, ou uma metodologia é a melhor ou não é!”.

Aí está justamente o erro: tentar definir a melhor metodologia. Buscar a melhor metodologia para a sua empresa é algo louvável, afinal, boa parte das empresas de TI, ainda usam a metodologia VAMO QUE VAMO, ou pior ainda, a EMPURRANDO COM A BARRIGA. Mas selecionar a melhor e colocá-la goela abaixo na sua empresa, com certeza não é o melhor caminho, e ao invés de achar uma solução, você vai achar mais problemas.

Para tentar explicar melhor o meu ponto de vista, vou fazer uma analogia com os eletrodomésticos e eletrônicos da sua casa. Você como um consumidor atento e sempre buscando a qualidade, alinhada ao custo-benefício, tem eletrodomésticos e eletrônicos das diversas marcas: LG, Sony, Arno, Brastemp, Consul, Bosch, Philips, etc. Cada um dos eletrodomésticos e eletrônicos atende uma necessidade da sua família, e para cada um há um melhor fabricante, portanto, você não vai comprar tudo de uma única marca, até porque uma única marca não fabrica todos os tipos de eletrodomésticos e eletrônicos.

Ao escolher uma metodologia você também tem diversas necessidades e várias metodologias que buscam saciar a sua necessidade. Você até pode encontrar tudo o que você precisa em uma única metodologia, mas dificilmente você vai seguir todos os seus conceitos e métodos. O melhor a ser fazer é tentar encontrar um meio-termo, ver o  que há de melhor em cada metodologia e o que se adapta a sua realidade. E quando a sua realidade mudar, mude também a sua metodologia, devemos sempre lembrar que a mudança não é ruim, e sim uma grande oportunidade.

E lembre-se que se uma metodologia funcionou bem em um projeto, era poderá não funcionar tão bem em outro projeto, e vice-versa.

Fique por dentro das novidades, assine o feed do QualidadeBR.
Assine o feed

Fonte:

Engineering Quality in Software Development, Module 1: Overview of Software Development Practices (AzIT)

TRIZ – Teoria da Resolução de Problemas Inventivos

Pessoal, hoje vou falar sobre essa metodologia que se propõe a ajudar em algo que é muito comum em nosso dia a dia, os problemas.

Os problemas em uma organização de TI, geralmente são os geradores de conflitos, que podem ser entendidos como situações de oposição, desacordo ou incompatibilidade entre pelo menos duas pessoas ou grupos.

E podemos ter duas visões a respeito dos conflitos:

  • Conservadora: Eles tendem a considerar os conflitos como indesejáveis. Sendo causados por pessoas problemáticas, que insistem em não ajustar-se e devem ser, sempre e assim que possível, suprimidos.
  • Progressista: Os conflitos são encarados como inevitáveis. Se geridos com habilidade, podem ser muito benéficos, contribuir para o desenvolvimento das pessoas e organizações e revelar questões importantes, como, por exemplo, as falhas que uma determinada solução que estava para ser adotada continha.

Na área de Teste de Software estamos sempre descobrindo problemas e ao relatar tais, podemos acabar gerando conflitos, devido a existência de pontos de vista diferentes, por exemplo: a equipe de Teste percebeu uma inconsistência e falta de padrão na maneira de validação dos campos, que hora é feita com caixa de mensagens (message box)  e hora utilizando rótulos (labels)  e decide reportar tal problema para a equipe de desenvolvimento, que por sua vez entende que isso não é um problema, pois a validação é feita de acordo com cada formulário, podendo portanto ser diferente. Surgi assim um impasse, entre a equipe de Teste e a de Desenvolvimento, que dependendo dos grupos, só poderá se resolvido com a ação do gestor do projeto.

Quanto a resolução de conflitos há cinco possíveis abordagens:

  1. Enfrentamento –  é o método mais utilizado pelos gestores de projeto. Envolve a cooperação franca no sentido de criar uma solução que satisfaça a todas as partes envolvidas (ganha-ganha).
  2. Compromisso – quando o enfrentamento não funciona, costuma-se tentar o compromisso, onde as partes conflitantes barganham até chegar a uma solução aceitável por todas. Pode ser adequado quando há um impasse, todas as partes precisam ganhar alguma coisa e não há tempo.
  3. Moderação – corresponde a acomodar ou favorecer. Busca-se desarmar o contexto emocional e focar no objetivo a ser atingido, mesmo que seja necessário uma das partes sacrificar suas próprias demandas para satisfazer as das outras partes.
  4. Imposição – é um estilo competitivo, controlador ou dominador de resolver os conflitos. Podendo ser legítima, quando a situação é crítica, há muito em jogo, princípios importantes estão em risco, a relação entre as partes não é muito importante e uma resolução rápida é necessária.
  5. Recuo – aqui tenta-se evitar completamente o conflito ou adiá-lo. Será uma solução temporária, porque o problema não é resolvido. Podendo ser uma opção quando não se poderia ganhar, acredita-se que o problema pode desaparecer por si só ou o atraso é, em si, um ganho.

Como vimos o método do enfrentamento é o mais utilizado e juntamente com ele podemos adotar a metodologia sistemática TRIZ (Teoria da Resolução de Problemas Inventivos), criada por G. S. Altshuller, um brilhante pensador de origem judaico-russa. Ela é orientada ao ser humano e baseada em conhecimento, para a resolução de problemas inventivos.

Pela TRIZ os conflitos são contradições, ou seja, declarações que afirmar coisas aparentemente incompatíveis ou opostas. Ela configura-se como a abstração, compilação e organização das melhores formas de resolver problemas na forma de estratégias e princípios. Isso aconteceu, primeiro, nas engenharias mais antigas (os primeiros estudos de Altshuller envolveram soluções da engenharia mecânica, civil, elétrica e química) e, atualmente, acontece em todas as áreas do conhecimento (publicidade, artes, pedagogia, administração, etc.).

O primeiro passo é a identificação das contradições, lembrando que quanto mais a contradição parecer impossível de resolver, melhor. Isso significa que o pano de fundo está posicionado para que não sejam facilmente aceitas as soluções de compromisso e, portanto, que cresce o potencial de chegar a solução verdadeiramente inventiva.

Após formular a contradição, necessitamos resolvê-la. A solução envolve quatro possibilidades, apontadas pelos princípios de separação: no espaço, no tempo, no sistema e conforme  a condição.

Para entender melhor, vamos utilizar essa metodologia para solucionar o seguinte problema:

A fábrica de software TXY é reconhecida por entregar os projetos no tempo hábil, porém há um projeto que está com atraso e a gerência de projeto já está preocupada com tal atraso e para tentar evitá-lo, foi decidido o encerramento dos testes prematuramente. No entanto a equipe de Testes está relutante a essa decisão e se justifica dizendo que o encerramento prematuro dos testes trará como  conseqüência uma maior necessidade de manutenção do sistema o que custará muito mais caro para a empresa, portanto percebeu-se que o encerramento dos testes prematuramente resultará em mais custos no futuro.

No exemplo acima, encontramos a seguinte contradição: Precisamos garantir a qualidade do software, mas não temos tempo hábil para isso. Formulada a contradição vamos tentar utilizar os princípios de separação em busca de idéias:

  • Separação no espaço
    • Aumentar a equipe de desenvolvimento, em busca de uma aceleração do desenvolvimento para que haja um maior tempo para os testes.
  • Separação no tempo
    • Expandir a capacidade no tempo: trabalhar até mais tarde e se necessário trabalho durante o final de semana.
  • Separação conforme a condição
    • Negociar com cliente um maior prazo, justificando com a garantia de maior qualidade do software.
  • Separação no sistema
    • Alguns recursos do desenvolvimento executarão testes em paralelo com a equipe Testes.

Como podemos perceber existem diversas possibilidades de solucionar os problemas sem que o projeto precise ser atrasado e sem encerrar a etapa de testes prematuramente. E as idéias de solução que não sejam imediatamente viáveis podem ser novamente analisadas com o uso do método de separação, até que alternativas “ganha-ganha” sejam encontradas.

Concluirmos que a utilização da metodologia TRIZ é capaz de gerar idéias inventivas em um curto espaço de tempo, a fim de encontrar a melhor maneira para solucionar os problemas. E percebemos que a resolução dos problemas muitas vezes, depende apenas de boa vontade das partes e da capacidade de pensar em conjunto, tendo como foco o bem para todos e não o de um único ser.

Fique por dentro das novidades, assine o feed do QualidadeBR.

Fonte:

De Carvalho, M. A. Resolvendo Conflitos na Gestão de Projetos através da metodologia TRIZ. Revista Mundo Project Management (Mundo PM), Rio de Janeiro, Ano4, nº20, p. 18-22, Abr/Mai 2008.

http://www.decarvalho.eng.br/triz.html