Reliavelmente reengenharia de ambientes de negócios e TI existentes em arquiteturas modernas, competitivas e integradas é não trivial. A complexidade dos ambientes de negócios e TI vem se acumulando há quase quarenta anos sem controle, tornando as mudanças cada vez mais caras. Isto acontece porque:
- A complexidade ambiental é muitas vezes expressa em código legado. A falta de habilidades legadas está aumentando os custos de manutenção e integração.
- Existing complex environments must be re-engineered in phases that make operational sense to their associated business function. Estas fases muitas vezes são padrão para substituições por atacado e arriscadas de sistemas por ignorância da complexidade existente, o que significa que mudanças incrementais potenciais são muito difíceis de entender e de projetar.
- Métodos de desenvolvimento acelerado têm deixado as empresas com sistemas legados modernos. Aplicações complexas Java e .NET têm muitos dos mesmos problemas que aplicações COBOL mais antigas.
Como resultado, uma proporção crescente do esforço de desenvolvimento de novas capacidades de negócios é gasta na compreensão e integração com o sistema complexo existente e o cenário de negócios, em vez de entregar valor. Tem sido observado que até 75% do esforço total do projeto agora é gasto na integração e migração de software ao invés de novas funcionalidades.
O setor de TI como um todo tem uma taxa de sucesso baixa na entrega de mudanças em tão grande escala para seus clientes. A pesquisa CHAOS do Standish Group tem acompanhado uma melhoria geral no sucesso da entrega de projetos de TI nos últimos vinte anos, mas mesmo em 2006, grandes projetos de TI ainda falharam com mais freqüência do que foram bem-sucedidos. As mudanças de engenharia e em tais ambientes têm muitos paralelos com as preocupações da indústria da construção civil no re-desenvolvimento de locais industriais ou contaminados. Eles estão cheios de perigos, complexidades inesperadas e tendem a ser arriscados e caros para se desenvolverem de novo. A complexidade acumulada dos ambientes de TI fez deles locais “Brownfield”.
Não é a complexidade da nova função ou qualquer nova característica do sistema que é a raiz de grandes falhas do projeto – é o nosso entendimento e comunicação da exigência geral (como identificado no Mês do Homem Mítico). Para ter sucesso, os requisitos precisam incluir uma compreensão precisa e completa das restrições do negócio existente e da TI. As ferramentas e métodos atuais “Greenfield” utilizam abstrações precoces, informais e muitas vezes imprecisas, que essencialmente ignoram tal complexidade. As abstrações precoces e mal informadas são geralmente erradas e são frequentemente detectadas tardiamente na construção, resultando em atrasos, retrabalho caro e até mesmo desenvolvimentos fracassados. Uma abordagem Brownfield-oriented abraça a complexidade existente, e é usada para acelerar de forma confiável o processo de engenharia de soluções em geral, incluindo permitir mudanças graduais e incrementais sempre que possível.
Brownfield adota o modelo padrão OMG/abordagem orientada por padrões e o vira de cabeça para baixo. Ao invés de adotar a abordagem convencional de começar com um Modelo Conceptual e descer para Modelos Específicos de Plataforma e geração de código, a Brownfield começa com a coleta de código e outros artefatos existentes e usa padrões para abstrair formalmente para cima em direção à camada de Arquitetura e Negócios.
Standard Greenfield techniques are then used in combination to define the preferred business target. Esta técnica “meet in the middle” é familiar de outros métodos de desenvolvimento, mas o uso extensivo da abstração formal e o uso de padrões tanto para a descoberta quanto para a geração é novidade.
A arquitetura conceitual subjacente a todas as ferramentas Brownfield é conhecida como VITA. VITA significa Views, Inventory, Transformation and Artifacts (Vistas, Inventário, Transformação e Artefatos). Em uma arquitetura VITA, a definição do problema do espaço alvo pode ser mantida como “headfulls” nativos separados (embora relacionados) do conhecimento conhecido como Views. A principal vantagem de uma View é que ela pode ser baseada em praticamente qualquer ferramenta formal. Brownfield não impõe uma única ferramenta ou linguagem em um espaço problemático – um princípio fundamental é que os headfulls continuam a ser mantidos em suas formas e ferramentas nativas.
Vistas Nativas são então reunidas e ligadas em um único Inventário. O Inventário é então usado com uma série de recursos de Transformação para produzir os artefatos que a solução precisa.
Vistas podem atualmente ser importadas de uma grande variedade de fontes incluindo UML, fontes XML, DDL, planilhas eletrônicas, etc. A ferramenta Analysis and Renovation Catalyst da IBM levou esta capacidade ainda mais longe através do uso de gramáticas formais e Árvores de Sintaxe Abstrata para permitir que quase todos os programas sejam analisados e marcados em uma View para inclusão no Inventory.
A natureza cíclica rápida da descoberta, reengenharia, geração e ciclo de teste usado nesta abordagem significa que as soluções podem ser refinadas iterativamente em termos de suas definições lógicas e físicas à medida que mais das restrições se tornam conhecidas e a arquitetura da solução é refinada.
O desenvolvimento interactivo de Brownfield pode permitir o refinamento gradual das arquitecturas lógica e física e testes incrementais para toda a abordagem, resultando na aceleração do desenvolvimento, na melhoria da qualidade da solução e na remoção mais barata dos defeitos. Brownfield também pode ser usado para gerar documentação da solução, garantindo que está sempre atualizado e consistente entre diferentes pontos de vista.
O Inventário que é criado através de Brownfield processado pode ser altamente complexo, sendo uma rede semântica multidimensional interconectada multi-dimensional. O nível de conhecimento no Inventário pode ser muito fino, altamente detalhado e inter-relacionado. Tais coisas são difíceis de entender e podem fornecer barreiras à comunicação, no entanto. Brownfield resolve este problema abstraindo conceitos através do melhor palpite de um artesão, usando padrões conhecidos em seus Inventários para extrair e inferir relações de maior nível.
A abstração formal permite que a complexidade do Inventário seja traduzida em representações mais simples, mas inerentemente precisas, para facilitar o consumo por aqueles que precisam entender o espaço do problema. Esses modelos abstraídos do Inventário podem ser usados para renderizar automaticamente representações de arquiteturas em várias camadas em ferramentas como o Second Life.
Suas visualizações permitem que informações complexas sejam compartilhadas e experimentadas por vários indivíduos de todo o mundo em tempo real. Isso melhora tanto a compreensão quanto a sensação de uma única equipe.