Metodologias de desenvolvimento de Software
Autor: Analistas de Sistema | Publicado: 2011-08-11T12:28:00-07:00



Vinicius da Silva Lourenço
&nbsp; Quando os programadores começaram a construir softwares, perceberam que uma&nbsp;abordagem&nbsp;informal de desenvolvimento não era suficiente e codificar sistemas apenas&nbsp;eficientes não era o correto, pois projetos grandes e importantes estavam sem qualidade, com&nbsp;orçamento altíssimo e, além disso, sofreriam atrasos de anos.&nbsp;&nbsp; Tendo em vista as dificuldades inerentes a elaboração de um software e o aumento no grau&nbsp;de complexidade dos softwares ao longo do tempo os desenvolvedores perceberam a necessidade de&nbsp;se adotar padrões que servissem de guia durante o projeto e garantissem a qualidade do produto,&nbsp;surgindo assim às metodologias de desenvolvimento.Segundo Sommerville (2000) em seu livro Software Engineering,&nbsp;"Metodologia de Desenvolvimento &nbsp;é&nbsp;um&nbsp;conjunto&nbsp;de&nbsp;práticas recomendadas&nbsp;para&nbsp;o&nbsp;Desenvolvimento de&nbsp;Softwares,sendo que essas práticas,geralmente,passam por&nbsp;fases ou&nbsp;passos,que&nbsp;são&nbsp;&nbsp;subdivisões do&nbsp;processo&nbsp;para&nbsp;ordená-lo&nbsp;e melhor gerenciá-lo."&nbsp; &nbsp;Dentre essas técnicas destacam-se o modelo em cascata, modelo espiral, RUP, sigla de&nbsp;Rational Unified Process e as metodologias ágeis, por exemplo, o Extreme Programming ou XP. A&nbsp;primeira é a mais antiga, criada em no final da década de 60 e popularizada na década de 70, a&nbsp;segunda surgiu na década de 80 para solucionar&nbsp;deficiências&nbsp;do modelo cascata, já&nbsp;o RUP surgiu em 1998 pela Rational Software Corporation a partir das experiências de IvarJacobson, Grady Booch e James Rumbaugh com o desenvolvimento de sistemas com o objetivo de&nbsp;aumentar a qualidade dos softwares gerados pelas empresas, por último os métodos ágeis são a nova&nbsp;tendencia de desenvolvimento prometendo um gerenciamento mais&nbsp;dinâmico&nbsp;e preparado para&nbsp;mudanças.&nbsp; &nbsp;A primeira metodologia criada foi o modelo Cascato ou Waterfall, que ainda é utilizado,&nbsp;estabelecendo um ciclo de desenvolvimento de software semelhante ao de outros produtos com&nbsp;inicio, meio e fim estabelecidos, definindo que uma etapa só iniciaria após o fim da anterior. Omodelo Cascata divide o processo de desenvolvimento em cinco etapas:· Análide de Requisitos: Onde são definidos os requisitos do sistema a ser desenvolvido, a&nbsp;documentação começa a ser produzida, é feito o estudo de facilidades e viabilidade do&nbsp;projeto para determinar o inicio do desenvolvimento do projeto do software.· Projeto do Sistema: Onde são definidas, a estrutura de dados, arquitetura do software,detalhes das funções e&nbsp;características&nbsp;das interfaces. O processo de projeto representa os&nbsp;requisitos de uma forma que permita a codificação do produto.· Programação: Transforma as especificações de projeto produzidas na etapa anterior em&nbsp;programas.· Instalação: Consiste na etapa final de colocação do novo sistema ou modificação de um&nbsp;existente em operação. Testes de validação de suas funções são atividades típicas desta fase.· Pós-Implementação: Utilização e avaliação do sistema após sua instalação. Inclui&nbsp;atualizações, correções, etc.
&nbsp; &nbsp;Embora tenha trazido uma maior organização ao processo de desenvolvimento, por exigiruma elaboração de projeto antes da codificação, esse modelo possui alguns probelmas, poissegundo Pressman (1995):
· Os projetos raramente seguem o fluxo&nbsp;sequencial;· É muito difícil para o cliente declarar todas as suas necessidades corretamente e de forma&nbsp;clara logo no início do projeto;· O risco de insucesso é alto, visto que, se um erro de grande impacto for cometido e não&nbsp;detectado, provavelmente só será descoberto muito tarde, sendo desastroso para o projeto.
&nbsp; Tentando resolver os probelmas do processo em cascata surgiu o modelo espiral que divide a&nbsp;tarefa de levantar requisitos em etapas que não ocorrem todas de uma vez, no início do&nbsp;desenvolvimento.&nbsp; Ele mantém as mesmas etapas do modelo Cascata, mas elas são executadas várias vezes ao longo&nbsp;do processo de desenvolvimento, permitindo revisões do usuário à medida que o desenvolvimento&nbsp;avança, pois é mais fácil detectar os requisitos à medida que o projeto ganha maturidade.&nbsp;&nbsp;&nbsp; Esse modelo é semelhante as metodologias ágeis que são&nbsp;amplamente&nbsp;discutidas na&nbsp;atualidade e serviu de base para o RUP. Embora esse modelo apresente vantagens significativas se comparado ao processo em cascata, ele apresenta problemas gerenciais para acompanhamento e&nbsp;controle do projeto, uma vez que o modelo em espiral pode levar ao desenvolvimento em paralelo&nbsp;de múltiplas partes do projeto, cada uma sendo abordada de modo diferenciado. É necessário o uso&nbsp;de técnicas específicas para estimar e sincronizar cronogramas, bem como para determinar os&nbsp;indicadores de custo e progresso mais adequados.&nbsp; &nbsp;&nbsp; Baseado no modelo espiral surgiu o RUP, o qual é dividido em quatro fases Inception, onde&nbsp;se define o escopo total do projeto, sua viabilidade econômica e se ele atingiria os objetivos&nbsp;esperados, Elaboration, pretende eliminar os principais riscos e definir a arquitetura que o sistema&nbsp;será desenvolvido, Construction, onde se começa a codificar o sistema de maneira iterativa e ao&nbsp;final de cada ciclo, pode ser gerada uma versão utilizável, Transition, é quando se implanta o&nbsp;sistema e o software é passado aos usuários. Segundo Daniel Teófilo Vasconcelos (2005) em sua&nbsp;publicação no site Linha de Código os benefícios dessa metodologia são;
· Desenvolvimento iterativo de software – é a realização do software em várias iterações,identificando riscos para o projeto, desenvolvendo soluções para os riscos selecionados e&nbsp;verificando a eliminação dos riscos ao fim de cada iteração;· Gerenciamento de requisitos – descreve como extrair, organizar e documentar&nbsp;funcionalidades exigidas. É utilizada nesta etapa a noção de casos de uso e cenários para&nbsp;capturar exigências funcionais;· Arquitetura baseada em componentes – descreve como projetar uma arquitetura flexível,que acomode mudanças e seja intuitivamente compreensível, promovendo efetivamente a&nbsp;reutilização de software;· Modelagem visual do software – é a utilização de elementos gráficos e diagramas na&nbsp;modelagem de software, isto é, a representação dos elementos estruturais e&nbsp;comportamentais do sistema através de modelos visuais;· Verificação da qualidade de software – é a constante preocupação com a qualidade dos&nbsp;artefatos da aplicação e o software propriamente dito. Atividades de garantia da qualidade&nbsp;devem ser realizadas durante o processo de desenvolvimento;· Controle de mudanças do software – normalmente os requisitos de uma aplicação mudam e&nbsp;controlar as mudanças dos requisitos e do software é importante para o sucesso do processo&nbsp;de desenvolvimento;
&nbsp; O RUP tem como uma de suas características o incentivo a documentação do projeto a todo&nbsp;instante, em oposição a isso nos últimos anos vem ganhado força os processos ágeis defendendo&nbsp;que o tempo gasto em documentação é desnecessário diante da necessidade do cliente de ver o&nbsp;software funcional, o expoente maior dessa nova tendência é o Manifesto for Agile Software&nbsp;Development que valoriza,

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;
&nbsp; &nbsp; Dentre essas técnicas a mais conhecida é o XP, Vinícius Manhães Teles(2004) ressalta que o&nbsp;mercado é muito dinâmico e as metodologias tradicionais visam blindar o sistema contra mudanças,&nbsp;é nesse cenário que a Extreme Programming se inseri,&nbsp; &nbsp;&nbsp;"O XP concentra os esforços da equipe de desenvolvimento em atividades que geram&nbsp;resultados rapidamente na forma de software intensamente testado e alinhado às&nbsp;necessidades de seus usuários. Além disso, simplifica e organiza o trabalho combinando&nbsp;técnicas comprovadamente eficazes e eliminando atividades redundantes. Por fim, reduz o&nbsp;risco dos projetos desenvolvendo software de forma iterativa e reavaliando&nbsp;permanentemente as prioridades dos usuários."&nbsp; &nbsp; Essa técnica se fundamenta em quatro valores o Feedback, constante contato e troca de&nbsp;informações entre o cliente e a equipe de desenvolvimento garantindo assim que o sistema esteja de&nbsp;acordo com as reais necessidades do freguês, essa característica também está presente nas metodologias&nbsp;tradicionais a diferença é que no XP o feedback é mais constante que no RUP por exemplo.&nbsp;&nbsp; &nbsp;O segundo&nbsp;valor é a Comunicação, para que o Feedback se torne efetivo é necessário que as partes mantenham um&nbsp;diálogo sobre suas opiniões a respeito do projeto, para essa comunicação seja eficiente o XP recomenda&nbsp;as conversas sejam presenciais, frente-a-frente, por considerar que essa modalidade fornece subsídios,&nbsp;como gestos, expressões faciais, postura, tom de voz, etc. que facilitam o entendimento entre as partes.&nbsp; O terceiro valor é a Simplicidade, o qual prega que o sistema só deve implementar as funcionalidades&nbsp;necessárias para cliente, mesmo que existam outras funções implícitas na evolução do software elas só&nbsp;serão codificadas quando forem necessárias.
&nbsp; O ultimo valor é a Coragem, pelo fato do XP ter&nbsp;características diferentes das metodologias tradicionais a equipe deve ter coragem para permitir que o&nbsp;cliente defina prioridades, fazer os desenvolvedores trabalharem em pares, propor contratos de escopo&nbsp;variável, colocar desenvolvedores e clientes frente a frente e modelar e documentar apenas quando for&nbsp;de extrema necessidade.