O processo de desenvolvimento de software

Existem tantas maneiras de desenvolver software quanto existem desenvolvedores. Entretanto, uma equipe de desenvolvimento de software precisa de uma estratégia unificada para desenvolver software. Nada será feito, se cada desenvolvedor fizer sua própria atividade. As metodologias de software definem uma maneira comum de encarar o desenvolvimento de software. Uma metodologia frequentemente conterá uma linguagem de modelagem (como a UML) e um processo.

Novo Termo Um processo de software mostra os vários estágios do desenvolvimento de software.

Um exemplo familiar de processo de software é o processo de cascata

Figura 9.1 

    O processo de cascata. 



Conforme a Figura 9.1 ilustra, o processo de cascata é sequencial e unidirecional. O processo é constituído de quatro estágios distintos: 

1. Análise de requisitos 

2. Projeto 

3. Implementação 

4. Teste

Quando segue o processo de cascata, você vai de um estágio para o próximo. Entretanto, uma vez que você complete um estágio, não há volta — exatamente como descer uma cascata ou um penhasco escarpado! O processo de cascata tenta evitar alteração, proibindo mudar quando um estágio está concluído. Tal estratégia protege os desenvolvedores de requisitos que mudam constantemente. Entretanto, tal processo rígido frequentemente resulta em software que não é o que você ou seu cliente quer.

Quando você analisa um problema, projeta uma solução e começa a implementar, seu entendimento do problema é continuamente aprofundado. O melhor entendimento de seu problema pode muito bem invalidar uma análise ou projeto anterior. Os requisitos podem até mudar enquanto você desenvolve (talvez um concorrente tenha acrescentado um novo recurso em seu produto). Infelizmente, o processo de cascata não pode enfrentar a realidade do moderno desenvolvimento de software — requisitos que mudam constantemente.

Embora este livro não tente impor nenhuma metodologia específica, há um processo que tem se mostrado muito eficiente para desenvolvimento orientado a objetos: o processo iterativo. Este livro impõe esse processo!

O processo iterativo

O processo iterativo é o oposto do processo de cascata. O processo iterativo permite alterações em qualquer ponto do processo de desenvolvimento. O processo iterativo permite alteração adotando uma estratégia iterativa e incrementai para o desenvolvimento de software.

Novo Termo: Um processo iterativo é uma estratégia iterativa e incrementai para desenvolvimento de software. Outro modo de pensar a respeito do processo é como uma estratégia ‘evolutiva’. Cada iteração aperfeiçoa e elabora gradualmente um produto básico em um produto amadurecido. 

Uma estratégia iterativa

Ao contrário do processo de cascata, o processo iterativo permite que você continuamente volte e refine cada estágio do desenvolvimento. Por exemplo, se você descobrir que o projeto simplesmente não funciona ao executar a implementação, pode voltar e fazer um projeto adicional e uma nova análise. E esse refinamento contínuo que torna o processo iterativo. A Figura 9.2 ilustra a estratégia.

Uma estratégia incremental

Ao seguir um processo iterativo, você não conclui simplesmente uma iteração grande que constrói o programa inteiro. Em vez disso, o processo iterativo divide o trabalho de desenvolvimento em várias iterações pequenas. A Figura 9.3 ilustra essa estratégia incrementai.



Cada iteração do processo introduz uma pequena melhoria incremental no programa. Essa melhoria pode ser um novo recurso ou um refinamento de um recurso já existente. 

De qualquer modo, a iteração tem um objetivo específico e, no final da iteração, você tem uma melhoria notável na funcionalidade. 

Imagine que você esteja criando um MP3 player. Durante uma iteração do projeto, você pode terminar o componente que reproduz um arquivo MP3. Para determinar se o componente funciona, você pode codificá-lo de modo que abra e reproduza um arquivo de música específico. Na próxima iteração, você pode adicionar a capacidade de escolher qual arquivo vai ser reproduzido. Em cada iteração, você tem um progresso mensurável. No final da primeira iteração, você pode ouvir o componente reproduzir uma música. No final da iteração seguinte, você tem um mecanismo que permite escolher dinamicamente uma música para tocar. 

Seguindo uma estratégia iterativa, você vê o progresso constantemente. Por outro lado, se você tentar fazer tudo simultaneamente, poderá ser difícil ver qualquer forma mensurável de progresso. Em vez disso, o projeto parecerá constantemente atolado em um único lugar — nunca há qualquer resultado. Se um projeto nunca for adiante, o moral vai baixar e se tornará difícil determinar o que precisa ser feito em seguida. Moral baixa e confusão sobre o que fazer em seguida fragmentará e matará um projeto.

Os processos iterativos precisam ser cuidadosamente monitorados para se garantir que eles não sejam simplesmente reduzidos a ‘cavar’ uma solução. A AOO e o POO fornecem tal verificação de sanidade.

O progresso constante fornece a você retomo constante. Você pode usar esse retorno como um modo de garantir se está no caminho certo. Se você tentar completar o projeto inteiro de uma vez, não saberá se criou a solução correta até terminar. Voltar e corrigir algo que não foi feito corretamente será muito mais dispendioso se você precisar voltar e reescrever o programa inteiro! A iteração, por outro lado, toma muito mais barato voltar e corrigir algo. Como você recebe retomo constante, é mais provável que identifique um problema mais cedo. Se você identificar seus problemas mais cedo, será mais fácil refazer uma iteração ou duas para corrigi-lo. É sempre mais desejável reescrever uma iteração do que reescrever um programa inteiro! Se você mantiver suas iterações pequenas, não perderá muito tempo, caso tenha de se desfazer de alguma delas.

Se um problema chegar à base da iteração original, uma estratégia iterativa não poderá salvá-lo. Tal problema fundamental pode ser dispendioso demais para corrigir e pode danificar a qualidade do produto.

Uma metodologia de alto nível

Este livro apresenta uma metodologia de desenvolvimento orientada a objetos informal. A metodologia seleciona e escolhe as técnicas que se mostraram eficazes a partir de outras metodologias. A metodologia consiste em um processo iterativo, no qual uma iteração tem quatro estágios:

• Análise 
• Projeto 
• Implementação 
• Teste

Comentários

Postagens mais visitadas deste blog

Conceitos de Linguagens de Programação e POO

Comparação entre programação estruturada e a POO

Vantagens e desvantagens da linguagem Java