Ciclo de Vida Iterativo e Incremental

De MediaWiki do Campus São José
Revisão de 09h07min de 20 de outubro de 2006 por Afonso (discussão | contribs) (→‎O que é)
Ir para navegação Ir para pesquisar

O que é

Arquivo:Iterativo e Incremental.jpeg
Diagrama do Ciclo de Vida Iterativo e Incremental

O modelo de ciclo de vida incremental e iterativo foi proposto como uma res¬posta 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 realizadas uma única vez.

Cada um dos ciclos considera um subconjunto de requisitos. Os requisitos são desenvolvidos uma vez que sejam alocados a um ciclo de desenvolvimento. No próximo ciclo, um outro subconjunto dos requisitos é considerado para ser desenvolvido, o que produz um novo incremento do sistema que contém exten¬sões e refinamentos sobre o incremento anterior.

Assim, o desenvolvimento evolui em versões, através da construção incre¬mental e iterativa de novas funcionalidades até que o sistema completo esteja construído. Note que apenas uma parte dos requisitos é considerada em cada ci¬clo de desenvolvimento. Na verdade, um modelo de ciclo de vida iterativo e in¬cremental pode ser visto como uma generalização da abordagem em cascata: o software é desenvolvimento em incrementos e cada incremento é desenvolvido em cascata (figura).

A abordagem incremental e iterativa somente é possível se existir um meca¬nismo para dividir os requisitos do sistema em partes, para que cada parte seja alocada a um ciclo de desenvolvimento. Essa alocação é realizada em função do grau de importância atribuído a cada requisito.

Tipos de Ciclos de Processos

O PROCESSO ITERATIVO

A noção de Processo Iterativo corresponde à ideia de “ melhorar (ou refinar) pouco - a - pouco ” o sistema ( iterações ). Em cada iteração a equipe de desenvolvimento identifica e especifica os requisitos relevantes, cria um projeto utilizando a arquitetura escolhida como guia, implementa o projeto em componentes e verifica se esses componentes satisfazem os requisitos. Se uma iteração atinge os seus objectivos, o desenvolvimento prossegue com a próxima iteração, caso contrário a equipa deve rever as suas decisões e tentar uma nova abordagem.

Portanto, o âmbito do sistema não é alterado, mas o seu detalhe vai aumentando em iterações sucessivas. Um excelente exemplo de aplicação do processo iterativo encontra-se no trabalho artístico, em que o resultado final de uma obra sofre inúmeras iterações.

Ciclo de Vida Iterativo

O PROCESSO INCREMENTAL

A noção de processo incremental corresponde à ideia de “ aumentar (alargar) pouco-a-pouco ” o âmbito do sistema. Uma boa imagem para este atributo é a de uma mansão que foi construída por sucessivos incrementos a partir de uma primeira casa com apenas duas divisões.

Ciclo de Vida Incremental

Funcionamento

Temos portanto que o processo iterativo e incremental é a interacção dos dois processos anteriormente descritos e apresenta como principais vantagens:

  • Redução de riscos envolvendo custos a um único incremento. Se a equipa precisar de repetir a iteração, a organização perde somente o esforço mal direccionado de uma iteração, não o valor de um produto inteiro;
  • Redução do risco de lançar o projecto no mercado fora da data planejada. Identificando os riscos numa fase inicial o esforço despendido para gerenciá-los ocorre cedo, quando as pessoas estão sob uma menor pressão do que na fase final do projecto;
  • Aceleração do tempo de desenvolvimento do projecto como um todo, porque a equipa trabalha de forma mais eficiente quando procura resultados de escopo mais pequeno e claro;
  • Reconhecimento de uma realidade frequentemente ignorada: as necessidades do cliente e os requisitos correspondentes não podem ser totalmente definidos no início do processo. Eles são tipicamente refinados em sucessivas iterações. Este modelo de operação facilita a adaptação de requisitos;
  • As inconsistências entre a análise, o desenho e a implementação são identificadas atempadamente;
  • Esta abordagem encoraja a participação activa dos utilizadores de modo a identificar os verdadeiros requisitos do sistema.

Vantagens

PORQUÊ ESCOLHER UM PROCESSO DE DESENVOLVIMENTO ITERATIVO E INCREMENTAL?

  • Porque hoje, é considerado errado ter um processo que gere um “Big Bang!”;
  • Porque sempre temos algo para mostrar ao cliente mais apressado;
  • Porque os requisitos mudam com o tempo e um processo iterativo mantém frequentes contactos com o cliente, o que ajuda a manter os requisitos sincronizados;
  • Porque é altamente motivador para a equipa de desenvolvimento (e para o cliente) ver o software a funcionar cedo.

Desvantagens

No que diz respeito às desvantagens, apenas encontrámos uma que foi a principal causa para o surgimento do modelo em espiral e que tem haver com o não favorecimento da utilização de prototipagem e reutilização de software.

Julgamos que não deverão existir muitas mais, uma vez que o desenvolvimento do produto é acompanhado desde o início pelo cliente e futuros utilizadores

Modelo de um Processo

Modelo de Projeto.PNG

DESENVOLVIMENTO ITERATIVO E INCREMENTAL

O desenvolvimento de um produto comercial de software é uma grande tarefa que pode ser alargada por vários meses, possivelmente um ano ou mais.

É mais fácil dividir o trabalho em partes menores (iterações) tendo cada uma como resultado um incremento (processo incremental).

Assim sendo, o princípio subjacente a este processo é que a equipa envolvida pode refinar e alargar pouco-a-pouco a qualidade, detalhe e âmbito do sistema envolvido.

Referências Bibliográficas

  • Eduardo BEZERRA. Princípio de Análise e Projeto de Sistemas com UML . . : Campus, 2002 . ISBN 8535210326

Links Úteis

Ciclo de Vida - Wikipedia

Iterativo e Incremental

O desenvolvimento de um produto comercial de software é uma grande tarefa que pode ser estendida por vários meses, possivelmente um ano ou mais. É mais prático dividir o trabalho em pedaços menores ou miniprojetos. Cada miniprojeto é uma iteração que resulta em um incremento. Iterações são passos em um fluxo de trabalho e incrementos são crescimentos do produto.

Os desenvolvedores selecionam o que deve ser feito em cada iteração baseados em dois fatores. Primeiro, a iteração deve trabalhar com um grupo de casos de uso que juntos estendam a usabilidade do produto em desenvolvimento. Segundo, a iteração deve tratar os riscos mais importantes.

Um incremento não é necessariamente a adição do código executável correspondente aos casos de uso que pertencem à iteração em andamento. Especialmente nas primeiras fases do ciclo de desenvolvimento, os desenvolvedores podem substituir um projeto superficial por um mais detalhado ou sofisticado. Em fases avançadas os incrementos são tipicamente aditivos.

Em cada iteração, os desenvolvedores identificam e especificam os casos de uso relevantes, criam um projeto utilizando a arquitetura escolhida como guia, implementam o projeto em componentes e verificam se esses componentes satisfazem os casos de uso. Se uma iteração atinge seus objetivos, e isso normalmente ocorre, o desenvolvimento prossegue com a próxima iteração, caso contrário, os desenvolvedores devem rever suas decisões e tentar uma nova abordagem.

Há vários benefícios em se adotar um processo iterativo controlado, entre os quais podemos destacar:

  • Redução dos riscos envolvendo custos a um único incremento. Se os desenvolvedores precisarem repetir a iteração, a organização perde somente o esforço mal direcionado de uma iteração, não o valor de um produto inteiro.
  • Redução do risco de lançar o projeto no mercado fora da data planejada. Identificando os riscos numa fase inicial o esforço despendido para gerenciá-los ocorre cedo, quando as pessoas estão sob menos pressão do que numa fase final de projeto.
  • Aceleração do tempo de desenvolvimento do projeto como um todo, porque os desenvolvedores trabalham de maneira mais eficiente quando buscam resultados de escopo pequeno e claro.
  • Reconhecimento de uma realidade freqüentemente ignorada: as neces-sidades dos usuários e os requisitos correspondentes não podem ser totalmente definidos no início do processo. Eles são tipicamente refinados em sucessivas iterações. Este modelo de operação facilita a adaptação a mudanças de requisitos.