Eu li a seguinte frase no wiki do Fluent NHibernate :
...; entretanto, para a maioria das aplicações greenfield (e algumas brownfield também) o mapeamento automático será mais do que capaz.
O que são aplicações greenfield e brownfield?
Eu li a seguinte frase no wiki do Fluent NHibernate :
...; entretanto, para a maioria das aplicações greenfield (e algumas brownfield também) o mapeamento automático será mais do que capaz.
O que são aplicações greenfield e brownfield?
Respostas:
em outras disciplinas como engenharia de software, um greenfield também é um projeto que não possui quaisquer restrições impostas pelo trabalho anterior. A analogia é com a construção em um terreno greenfield, onde não há necessidade de reformar ou demolir uma estrutura existente.
(de http://en.wikipedia.org/wiki/Greenfield_project )
Desenvolvimento brownfield é um termo comumente usado na indústria de TI para descrever espaços de problemas que precisam do desenvolvimento e implantação de novos sistemas de software na presença imediata de aplicativos / sistemas de software existentes (legados). Isso implica que qualquer nova arquitetura de software deve levar em consideração e coexistir com o software ativo já in situ.
(de http://en.wikipedia.org/wiki/Brownfield_(software_development) )
Eu acho que pode estar relacionado aos termos de planejamento urbano "terras verdes" e "terras brownfield" . Terras verdes são terras não desenvolvidas - agrícolas, paisagísticas ou naturais. A terra brownfield é uma terra desenvolvida.
Um aplicativo brownfield é um aplicativo existente, enquanto um aplicativo greenfield é aquele que ainda não foi feito ou está nos estágios iniciais de desenvolvimento.
Aplicativos greenfield: novo desenvolvimento, nenhum trabalho anterior feito que impõe restrições à sua solução. Acho que o termo vem de campo não "não arado, verde".
Brownfield: aplicativo existente, muitas coisas existentes a serem consideradas, etc.
Eu acho que é uma analogia com a construção
Com base no que sei de James Gregory (o cara por trás do Fluent NHibernate), acho que a entrada da Wikipedia para brownfield é um pouco teórica. No desenvolvimento de aplicativos brownfield , nós o definimos como:
um projeto, ou base de código, que foi criado anteriormente e pode estar contaminado por práticas, estrutura e design inadequados, mas tem o potencial de ser revivido por meio de refatoração abrangente e direcionada
Versão resumida: um projeto existente que precisa ser trabalhado, mas ainda está desenvolvido ativamente (ao contrário da maioria dos sistemas legados).
Há muito debate em torno da decisão de uma empresa de 'greenfield' ou 'brownfield' ou refatorar o código legado.
A decisão deve ser tomada levando em consideração muitos fatores - não menos importante, os fundos disponíveis para desenvolver uma aplicação greenfield. Em muitos casos, o aplicativo legado é a fonte de renda atual da empresa e qualquer substituição greenfield desse código legado não renderá um único dólar vermelho até que esteja totalmente desenvolvido e nas mãos do primeiro cliente pagante.
Embora a preferência da maioria dos engenheiros de software seja INICIAR UM NOVO PROJETO GREENFIELD, porque eles geralmente odeiam o OPC (Código de Outras Pessoas), nem sempre pode ser no longo prazo financeiro da empresa.
Escrevi um artigo que analisa os riscos envolvidos em projetos greenfield, baseando-me em uma experiência muito real em uma empresa em que trabalhei mais de 20 anos atrás (mostrando minha idade agora;). Você pode lê-lo aqui:
http://stepaheadsoftware.blogspot.com.au/2012/09/greenfield-or-refactor-legacy-code-base.html