BUSCA

Links Patrocinados



Buscar por Título
   A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z


O Design está Morto?
(Martin Fowler)

Publicidade
Existem dois estilos de como o design é realizado no desenvolvimento de software : design planejado e design evolutivo.

Podemos definir Design Planejado como o sendo o estilo que busca dedicar grande parte do tempo de desenvolvimento no design do software, desta forma, haverá além de uma boa documentação, uma maior independência entre a equipe responsável pelo design e a equipe de implementação do software.
Entretanto, um Design Evolutivo, também conhecido como code and fix, significa que o sistema cresce à medida que for implementado, ou seja, o desenvolvimento é ágil e requer uma proporção menor de documentação, permitindo dar um maior feedback ao cliente em cada iteração. Porém, segundo Fowler, o design evolutivo é um desastre no uso comum, sendo assim, os erros gerados tornam-se mais caros para corrigir exponencialmente à medida que o projeto prossegue. Portanto, o autor deixa evidente a sua preferência pelo o design planejado.

O autor faz uma interessante comparação entre o trabalho de um engenheiro em construir um arranha-céu e o trabalho de um designer em construir um software (usando o estilo do design planejado). Podemos dizer que ambos têm características em comum e devem funcionar da mesma maneira: diante de um problema devem, primeiramente, pensar numa possível solução e fazer um projeto bem documentado com todas as especificações necessárias para o seu desenvolvimento. O projeto será entregue a outro grupo de pessoas ou até mesmo a outra empresa para ser desenvolvido.
Desde a sua criação, muitas pessoas têm usado o design planejado, porém nele há algumas falhas, como por exemplo, a deficiência que o ser humano tem de pensar em todas as questões necessárias para enfrentar quando estiver na fase de programação. A partir daí podem ocorrer problemas que talvez acarretem alterações no design e no código, dentre eles podemos citar a mudança de requisitos.

O XP (eXtreme Programming), com o seu conceito de design evolutivo, aconselha que não sejam construídos frameworks e componentes flexíveis no primeiro momento do desenvolvimento do software, mesmo que exista a certeza de que determinada funcionalidade será implementada numa próxima iteração ou que ela realmente possa ser construída rapidamente, pois em cada iteração há um prazo para se cumprir, não havendo tempo para implementações eventuais. No entanto, estas novas estruturas crescerão à medida que forem necessárias. Este comportamento vai ao encontro do significado do slogan “YAGNI” (You Aren't Going to Need It): Não se deve adicionar nenhum código hoje que será usado apenas por algum recurso que é necessário amanhã.

Vejamos abaixo, de uma maneira geral, um comparativo entre algumas vantagens e desvantagens do design planejado e evolutivo.

Design Planejado
Vantagens :


- Documentação completa do sistema;
- Facilidade na manutenção;
- Independência entre a equipe de design e a equipe de implementação;
- Impacto minimizado quando há alteração na equipe de desenvolvimento.

Desvantagens :

- Burocracia;
- Muito tempo gasto com o design.

Design Evolutivo
Vantagens :

- Desenvolvimento ágil;
- Programação em par;
- Iterações bem definidas;
- Simplicidade do código, colocar o que realmente é necessário;
- O programador XP adquire mais experiência por ter mais responsabilidades;
- Abraça as mudanças.

Desvantagens :

- Dificuldade de gerenciar projetos de grande porte;
- Pouca documentação.

REFERÊNCIA:

Fowler, Martin. Is Design Dead? ThoughtWorks, 2004. Acessado em: 23 de Março de 2008. Disponível em: <http://martinfowler.com/articles/designDead.html>.



Resumos Relacionados


- O Design De Embalagens

- Novos Métodos De Design De Iluminação

- A Importância Do Bom Design

- On The Design Of Buildings With Composite Structures

- Web Style Guide - Basic Design Principles For Creating Web Sites



Passei.com.br | Biografias

FACEBOOK


PUBLICIDADE




encyclopedia