Monalisa e o Desenvolvimento de Software
A figura abaixo é bem famosa atualmente, provavelmente você já viu várias vezes.
A sua empresa deve (ou deveria) usar um processo incremental e iterativo para desenvolver os softwares.
Trabalhar de forma incremental e iterativa é bem comum em tarefas criativas, por exemplo: escrever esse post.
Estou no tópico Monalisa e o Desenvolvimento de Software, e este é o tópico onde irei falar sobre o processo incremental e iterativo, no final pretendo juntar esse assunto com o de qualidade interna, focando em refatoração. Também pretendo falar sobre o papel dos testes num processo incremental e iterativo. E quando comecei o post eu não tinha definida a estrutura dele, só sabia que ia escrever sobre qualidade externa e interna, por isso já tive que retirar várias partes e refatorar outras.
A figura apresentada mostra de uma forma bem clara a diferença entre um processo incremental para um iterativo. No primeiro já temos melhor definido o que queremos, já no segundo temos apenas uma ideia genérica do que queremos.
Na prática o processo iterativo acaba sendo também incremental, e vice-versa, pois ao desenvolver as partes no processo incremental, iremos fazer uma iteração. Meio confuso neh? Vamos para um exemplo:
O Joãozinho pegou o post-it da funcionalidade de enviar e-mail de confirmação do cadastro. Joãozinho implementou essa funcionalidade realizando os seguintes passos:
- Implementou o envio de e-mail;
- Implementou a ativação do usuário, apenas quando ele tiver acessado o link de confirmação da conta;
- Adicionou a implementação do envio de e-mail no cadastro do usuário;
- Adicionou o corpo do e-mail com as informações de bem-vindo e ativação da conta.
- Joãozinho percebeu que o envio de e-mail estava demorando, e deixou ele de forma assíncrona;
- Houve uma melhora no corpo do e-mail, pois o Joãozinho não gostou muito do primeiro layout.
Podemos observar que o Joãozinho já sabia como seria essa funcionalidade, e foi desenvolvendo ela de forma incremental. Porém, ao finalizar a implementação ele teve que ainda realizar algumas iterações, de acordo com o comportamento que a funcionalidade teve. Se o Joãozinho não tivesse percebido tais comportamentos, ele teria apresentado essa funcionalidade para o cliente, e esse poderia ter pedido a alteração do envio de e-mail de forma assíncrona e a melhora do layout.
Ou seja, no processo incremental já sabemos bem o que queremos (ex.: um bolo de chocolate), já no processo iterativo temos apenas uma vaga ideia, e iremos descobrir mais detalhes do que queremos, ao longo do desenvolvimento (ex.: um portal de Internet).
P.S.: Como notaram, retirei a parte sobre qualidade externa e interna, fica para o próximo post. Acabei me alongando muito no assunto do processo incremental X iterativo, e então optei por deixar apenas essa parte no post. Essa é uma das vantagens de usar um processo incremental e iterativo, com a mentalidade ágil. 😉
Muito bom, esclareceu bem a diferença entre processo incremental e iterativo.
Apesar de serem conceitos existentes há um bom tempo, sempre gera dúvidas em suas definições.
Esse post foi mais um tentativa de esclarecer a diferença entre os conceitos. E conseguiu. Foi muito bom!
Forte abraço!
Renato Borges
http://qualidademanaus.sopixel.com.br
Pingback: Tweets that mention Processo Incremental x Iterativo « QualidadeBR -- Topsy.com
Pingback: A importância da qualidade interna « QualidadeBR
Faço Sistema de Informação, e no momento estou fazendo um trabalho sobre processo Iterativo e Incremental.
Agradeço, pois tirou-me algumas duvidas
Pingback: A importância da qualidade interna | QualidadeBR