Existe Arquitetura de Software em Projetos XP?

Quando se trata de Extreme Programming, arquitetura de software é um assunto polêmico. Vários críticos da metodologia afirmam que não existem atividades para o estabelecimento da arquitetura de software – constituindo assim seu “calcanhar de Aquiles”. Por outro lado, seus praticantes respondem que a arquitetura é representada pela Metáfora Sistêmica (System Metaphor), criada durante o Jogo de Planejamento (Planning Game). Mas adeptos e críticos concordam em uma coisa: existe muito pouca informação sobre como obter uma boa Metáfora Sistêmica.

A prática da Metáfora Sistêmica é uma forma de explicar a arquitetura lógica através de uma analogia familiar tanto aos desenvolvedores quanto aos usuários. Até aí, ótimo! O maior problema é como conseguir uma boa metáfora. Das 190 páginas de “Extreme Programming Explained”, Kent Beck endereça somente duas delas para explicar o que é a Metáfora Sistêmica e deixa uma lacuna real em como atingí-la. Martin Fowler, um adepto não radical de XP, afirma em “Extreme Programming Examined” que, apesar da Metáfora Sistêmica ter funcionado bem para o projeto C3 (descrito no mesmo livro), ele próprio não faz a mínima idéia em como explicar a forma de obtê-la. Ainda na série XP da Addison-Wesley, os autores de “Extreme Programming Examined” declaram que a metáfora “é uma lacuna real no XP e que os XPmistas precisam resolvê-la” (desculpe, traduzimos “XPers” por “XPmistas”).

Com a polêmica carregada pela Metáfora Sistêmica e pelo fato de boa parte dos programadores praticantes de XP afirmarem que constroem software de sucesso mesmo sem tal metáfora, Kent Beck comentou publicamente que cogita a hipótese de remover esta prática da metodologia. No site de Ron Jeffries (outro guru radical do XP), arquitetura e desenho chegam a ser tratados com um certo tom de deboche.

Por ser um dos mais proeminentes métodos de desenvolvimento da atualidade, existem muitas propostas para preencher a lacuna arquitetural do XP. A seguir, citaremos algumas.

  • Estórias do Desenvolvedor (Developer stories) é um prática proposta no artigo “Architecture and Design in eXtreme Programming” dos pesquisadores da Aalborg Universitet. O principal objetivo dessas estórias é introduzir um planejamento arquitetural ao XP. É uma abordagem é razoavelmente simples e, ao mesmo tempo, apresenta razoável eficiência no tratamento de requisitos de qualidade.
  • Pesquisadores da Universidade de Wellington, na Nova Zelândia e da Univerdade de Carleton, no Canadá, propõem, através de uma abordagem semiótica, técnicas para desenvolver e avaliar a Metáfora Sistêmica. A Semiótica, mesmo parecendo um termo complicado para alguns, é o estudo formal dos sinais. Ao contrário do nome, a proposta desses pesquisadores é bem simples. Contudo não encontramos referências de sua aplicação na indústria.
  • O SEI publicou um artigo descrevendo possíveis aplicações de seus métodos arquiteturais em projetos XP. Sem dúvida, o uso dos consagrados métodos do SEI oferece uma forte e excelente abordagem para arquiteturas dos projetos XP. Entretanto o uso intensivo dos métodos conforme descrito no artigo pode desagradar a alguns agilistas. Mas possivelmente vale a adaptação. A tempo: postamos recentemente um pequeno texto comentando sobre a aplicação do QAW em projetos XP e RUP.
  • Martin Fowler, apesar de não apresentar nenhuma teoria inédita, no artigo “Is Design Dead?“, aconselha a não ignorar aspectos arquiteturais já conhecidos e, já no início do projeto, começar com uma arquitetura que aparenta ser necessária. E, em seguida, mesmo que pareça uma contradição ao princípio YAGNI, evoluir a arquitetura simplificando-a ou adicionando complexidades na medida da necessidade.
  • A Modelagem Ágil, apresentada no livro de Scott Ambler, pode ser utilizada em aderência ao processo do XP e traz alguns poucos (mas bons) conselhos em como desenvolver a metáfora sistêmica de forma a representar uma arquitetura inicial. Vale a pena também consultar a idéia de Arquitetura Inicial Ágil do Ambler.
  • David West propõe a Arquitetura Mandala, um método exótico para tratar a questão arquitetural no XP. Programadores místicos devem simpatizar com o nome.

Os valores e a filosofia de Extreme Programming visam de uma forma “extrema” a simplicidade e a acomodação das mudanças. Mudanças são de fato inevitáveis. Mas, mesmo acreditando nos princípios ágeis, devemos admitir que uma reestruturação arquitetural é uma atividade cara e de alto risco. Um esforço de investigação arquitetural um pouco maior que a indicada pelo XP “puro” pode minimizar boa parte dos riscos – não vale a pena ignorar aspectos estruturais já conhecidos no início do projeto. As abordagens indicadas podem ser um bom caminho para preencher a lacuna da arquitetura de software no XP. Resta ainda a questão: basta uma boa metáfora sistêmica para termos uma arquitetura completa?

Para obter mais visões críticas sobre como a arquitetura pode ser desenvolvida em projetos XP, sugerimos as seguintes referências:

5 comments to Existe Arquitetura de Software em Projetos XP?

  • Paulo Merson

    A metáfora sistêmica é uma das práticas do XP que não pegou. Quando há uma metáfora, ela ajuda. Porém, mesmo que se encontre uma boa metáfora sistêmica, ela não serve para descrever a arquitetura inteiramente. Apenas ajuda a comunicar a idéia geral do design.

    Numa entrevista recente, fui perguntado:
    “With several software development teams using Agile methodologies now-a-days, what can the software architects do to be Agile and pragmatic in documenting the application architectures?”

    Veja minha resposta (que contém alguns links) em:
    http://www.infoq.com/news/2008/11/paulo-merson-architecture

  • Excelente comentário, Paulo! Em verdade, temos ainda a intenção de postar alguma idéia sobre a eficácia da metáfora sistêmica.

    Das propostas citadas, algumas visam obter sistematicamente a metáfora sistema, sem dependência de um “insight”. Mesmo assim, conforme você comentou, ainda será uma arquitetura incompleta. Outras complementam o XP de forma a descrever a arquitetura com maior ou menor completude. Por exemplo, a nota técnica de Nord, Tomayko e Wojcik apresenta uma abordagem consistente e o resultado possivelmente será uma arquitetura bem descrita. Mas… enfim, deixemos aos navegantes a escolha do método mais adequado a cada caso :)

    E, aproveitando, muito boas suas respostas na entrevista (li há alguns dias). Fiquei curioso a respeito da sua apresentação e, em particular, da documentação do Duke’s Bank. Consigo obtê-la em algum lugar?

    Obrigado pela sua participação!

    Eros
    ps: estamos aguardando ansiosamente pela terceira edição de “Documenting SA”

  • [...] de Software Enviado em arquitetura de software by Eros Viggiano em Novembro 1st, 2008 Existe Arquitetura de Software em Projetos XP? – 12 de Dezembro de [...]

  • [...] Metáfora é um “quebra galho” arquitetural Há algum tempo, comentamos em relação a como obter a metáfora sistêmica prescrita pelo XP e deixamos uma questão sobre o quanto ela contribui para a [...]

  • [...] Existe Arquitetura de Software em Projetos XP? Postado em arquitetura de software, ágil. Tags: agilidade, arquitetura de software. Nenhum comentário » [...]

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>