Gerência - Metodologias e Processos

Evolução da metodologia do desenvolvimento de sistemas

O artigo tem como objetivo esclarecer aos desenvolvedores o funcionamento das metodologias no desenvolvimento de software e o modo como elas evoluíram no decorrer dos anos.

por Juliana Prado Uchôa



Introdução: Tem como objetivo esclarecer aos desenvolvedores o funcionamento das metodologias no desenvolvimento de software e o modo como elas evoluíram no decorrer dos anos.

Em meados da primeira guerra mundial tivemos uma evolução significativa no segmento corporativo.

Nesta época o mundo passava por intensas transformações e isto provocou drásticas mudanças no ciclo produtivo das empresas e percebeu-se a necessidade de controlar o seu processo de trabalho.

Baseado nestas transformações houve a necessidade de se aplicar o conceito de dinamização de processos e daí surgiu à necessidade de se administrar grandes volumes de dados em organizações de todas as esferas.

Com a criação dos computadores comerciais após a segunda guerra mundial tivemos um aumento significativo na  dinamização da indústria de computadores e, conseqüentemente, o processo de construção de softwares, para que os mesmos automatizassem processos manuais e pudessem avaliar situações complexas que são parte integrante do cotidiano das organizações.

E a partir desse cenário, criou-se modelos de desenvolvimento de softwares que atendessem a determinadas necessidades específicas e ao mesmo tempo pudessem ser utilizados na elaboração softwares sem grandes complexidades.

A seguir são apresentados os modelos de desenvolvimento de softwares.

Modelo Cascata


O Modelo Cascata, também chamado de Clássico ou Linear, caracteriza-se por possuir uma tendência na progressão seqüencial entre uma fase e a seguinte. Eventualmente, pode haver uma retroalimentação de uma fase para a fase anterior, mas de um ponto de vista macro, as fases seguem fundamentalmente de forma seqüencial.

A figura abaixo nos dá uma idéia visual do conceito apresentado acima.

Modelo Iterativo e Incremental

O Modelo de ciclo de vida Iterativo e Incremental foi proposto justamente para ser a resposta aos problemas encontrados no Modelo em Cascata. Um processo de desenvolvimento, segundo essa abordagem, divide o desenvolvimento de um produto de software em ciclos. Em cada ciclo de desenvolvimento, podem ser identificadas as fases de análise, projeto, implementação e testes.

Essa característica contrasta com a abordagem clássica, na qual as fases de análise, projeto, implementação e testes são realizados uma única vez.

No Modelo de ciclo de vida iterativo e incremental, um sistema de software é desenvolvido em vários passos similares (iterativo). Em cada passo, o sistema é estendido com mais funcionalidades (incremental).

Existe um processo de desenvolvimento de software que é o principal representante da abordagem de desenvolvimento incremental e iterativo. Conhecido como RUP - Rational Unified Process (Processo Unificado Racional). E foi patenteado pela empresa Rational, onde trabalham os famosos três amigos (Jacobson, Booch e Rumbaugh).

Agora vamos explanar um pouco da metodologia em espiral que consiste é desenvolvido em uma seqüência de iterações e nisso cada iteração corresponde a uma volta na espiral e cada fase ou atividade é um setor, um “ângulo” da volta.

A figura abaixo nos dá uma idéia visual do conceito apresentado acima.

E com o surgimento desse modelo podemos realizar a construção de versões básicas dos produtos em prazos curtos e deixar novos requisitos para implementação futura, no momento em que se tornam essenciais.

Conforme o avanço tecnológico foi ocorrendo à mudança de paradigma no desenvolvimento de sistemas aconteceu e atualmente trabalhamos com o conceito de metodologia ágil.

Muitos ainda se perguntam o que é e qual é a função desta metodologia e em que ela irá melhorar os processos existentes na elaboração de um software.

Vamos entender o que seria primeiramente esse Desenvolvimento ágil de software (do inglês Agile software development) ou Método ágil é um conjunto de metodologias de desenvolvimento de software.

O desenvolvimento ágil, tal como qualquer metodologia de software, providencia uma estrutura conceitual para reger projetos de engenharia de software.

A figura abaixo nos dá uma idéia visual do conceito apresentado acima.

Porém existem vários modelos desta metodologia que são:

Cleanroom

XP

Scrum

Estarei detalhando cada um deles abaixo.

Cleanroom é uma metodologia muito utilizada no desenvolvimento de software. É considerada "pesada" pelos padrões da Engenharia de Software, mas muito difundida no desenvolvimento de grandes projetos corporativos.

O processo é baseado no projeto apurado das funções, que são analisadas pelo método de revisão-par com o objetivo de verificar se fazem realmente o que foram especificadas a fazer. Por analogia, podemos comparar esta metodologia com as salas limpas na fabricação de semicondutores, que eliminam a necessidade de se limpar wafers de silício pelo fato de que eles nunca começam sujos. O desenvolvimento Cleanroom remove a necessidade de depuração do programa, assegurando que os erros nunca começam introduzidos no sistema.

Programação Extrema (do inglês eXtreme Programming), ou simplesmente XP, é uma metodologia ágil para equipes pequenas e médias e que irão desenvolver software com requisitos vagos e em constante mudança. Para isso, adota a estratégia de constante acompanhamento e realização de vários pequenos ajustes durante o desenvolvimento de software.

Scrum é um método ágil que foi concebido como um estilo de gerenciamento de projetos em empresas de fabricação de automóveis e produtos de consumo, por Takeuchi e Nonaka no artigo "The New New Product Development Game”.Eles notaram que projetos usando equipes pequenas e multidisciplinares (cross-functional) produziram os melhores resultados, e associaram estas equipes altamente eficazes à formação Scrum do Rugby (utilizada para reinício do jogo em certos casos).

Jeff Sutherland, John Scumniotales, e Jeff McKenna documentaram, conceberam e implementaram o Scrum, como descrito abaixo, na empresa Easel Corporation em 1993, incorporando estilos de gerenciamento observados por Takeuchi e Nonaka. Em 1995, Ken Schwaber formalizou a definição de Scrum e ajudou a implantá-lo em desenvolvimento de software em todo o mundo.

Por estarmos vivendo em constante transformação neste cenário de desenvolvimento de software precisamos realizar uma análise do que foi vivido no passado para assim aprendermos com os erros e percebemos que podemos sempre inovar.

Vejam o cenário que antes era a realidade dos desenvolvedores de software.

As linguagens de programação eram bastante complexas e, além de não existir o conceito de linguagem visual, envolviam inúmeros cálculos matemáticos e isso exigia que os desenvolvedores possuíssem conhecimentos avançados nas áreas de matemática e física, tornando, assim, uma difícil manipulação delas.

A interação do usuário ao software se dava através do teclado e isto fazia com que o usuário que fosse utilizar o computador passasse muito tempo para aprender a manipular o sistema.

Pelo que se pode perceber que com a evolução dos paradigmas o cenário mudou significativamente como apresentado abaixo.

Com a introdução do mouse nos PCs e o surgimento da interface gráfica surgiu o conceito de linguagens visuais e disso temos atualmente um cenário complexo para o desenvolvimento de sistemas.

Por isso o conhecimento das metodologias acima e de sua aplicação no cenário de desenvolvimento pode muitas vezes economizar ciclos de trabalho e como conseqüência há uma economiza significativa de dinheiro e trabalho.

Não importa se você adotar um ou outra de forma isolada ou integrada o importante que desenvolver soluções vai além de linhas de código depende mais do trabalho das pessoas e de como é tratado cada ciclo deste trabalho.

Bibliografia

http://pt.wikipedia.org/wiki/Desenvolvimento_%C3%A1gil_de_software

http://www.esab.edu.br

http://www.isegi.unl.pt/LABNT/papers/ESIG_1999_MDA.pdf

http://www.mjv.com.br

Juliana Prado Uchôa

Juliana Prado Uchôa - Estudante de ciência da computação na Uninove- VL.MARIA – atualmente ministra palestras em universidades sobre a tecnologia .NET.