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ôaIntroduçã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
- Singleton - Padrão de Projeto com Microsoft .NET C SharpC#
- Novidades no MVC 4.0Metodologias e Processos
- Vai abrir um negócio? - 10 dicas de como a tecnologia pode ser usada a seu favorMetodologias e Processos
- Regras de Negócio-Por que você deveria se importar com isso?Metodologias e Processos
- Governança, redução de custos e domínio da informação nas instituições financeiras: é possível?Network