¿Qué son las aplicaciones greenfield y brownfield?

89

Leí la siguiente oración en el wiki de Fluent NHibernate :

...; sin embargo, para la mayoría de las aplicaciones totalmente nuevas (y también algunas de las zonas abandonadas ), el mapeo automático será más que capaz.

¿Qué son las aplicaciones greenfield y brownfield?

Svish
fuente

Respuestas:

130

Greenfield

en otras disciplinas, como la ingeniería de software, un greenfield también es un proyecto que carece de las limitaciones impuestas por trabajos anteriores. La analogía es la de la construcción en terrenos totalmente nuevos donde no hay necesidad de remodelar o demoler una estructura existente.

(de http://en.wikipedia.org/wiki/Greenfield_project )

Brownfield

El desarrollo brownfield es un término comúnmente utilizado en la industria de TI para describir espacios problemáticos que necesitan el desarrollo y la implementación de nuevos sistemas de software en la presencia inmediata de aplicaciones / sistemas de software existentes (heredados). Esto implica que cualquier nueva arquitectura de software debe tener en cuenta y convivir con el software en vivo ya in situ.

(de http://en.wikipedia.org/wiki/Brownfield_(software_development) )

Bombe
fuente
29
"Afortunadamente, Google no estaba mal para mí, así que pude encontrar las siguientes definiciones en cuestión de segundos". - ¿Exactamente por qué se necesita esta declaración? Puedo entender que estés molesto por una pregunta 'simple' y agregue esto por frustración o algo así, pero ¿por qué agregar la declaración nuevamente después de que se haya eliminado?
AgentConundrum
8
Estoy de acuerdo con @AgentConundrum. Este es ahora el segundo resultado que devuelve Google. Pierde el comentario.
Rob Bell
5
Es porque todavía soy de la opinión de que la gente necesita aprender a usar Google antes de intentar otras cosas. Ya sabes, darle un pescado a un hombre versus enseñarle a pescar a un hombre.
Bombe
17
@Bombe ¿no eres consciente de que es contenido el que puebla google? Por lo tanto, necesita las respuestas en algún lugar para que se puedan encontrar en Google ... Encontraste el artículo wiki en Google, pero si Google tuviera la respuesta, ¿por qué habría necesitado escribir el artículo wiki?
Día de Robin
29
Lo curioso es. Encontré esto ahora, a través de Google. Primer enlace. ;)
Ibsonic
12

Creo que podría estar relacionado con los términos de planificación urbana "terreno nuevo" y "terreno abandonado" . La tierra nueva es tierra sin desarrollar: agrícola, paisajística o natural. Los terrenos abandonados son terrenos urbanizados.

Una aplicación brownfield es una aplicación existente, mientras que una aplicación greenfield es una que aún no se ha realizado o se encuentra en etapas muy tempranas de desarrollo.

Thomas Owens
fuente
Tiene mucho sentido al menos. Pero, ¿cómo obtendría una aplicación brownfield? ¿No se crean las aplicaciones desde cero originalmente? ¿Cuándo se convierte en un terreno abandonado?
Svish
2
Por lo general, una aplicación brownfield se refiere a una actualización importante o al redesarrollo de una aplicación existente donde existen problemas de compatibilidad con formatos de archivo, interfaces, módulos, etc. compatibilidad y empezar de nuevo.
Jeremy Bourque
1
Brownfield sería una mejora importante o una reescritura menos que completa de una aplicación en vivo existente. En otras palabras, código heredado.
APC
4

Aplicaciones totalmente nuevas: nuevo desarrollo, no se ha realizado ningún trabajo previo que suponga limitaciones para su solución. Creo que el término proviene de un campo "verde sin arar".

Brownfield: aplicación existente, muchas cosas existentes a considerar, etc.

Vea esta publicación .

tijmenvdk
fuente
2

Supongo que es una analogía con la construcción

  • un sitio totalmente nuevo es terreno virgen, es decir, un nuevo proyecto, iniciando un nuevo proyecto de software desde cero
  • un sitio brownfield es aquel en el que las estructuras existentes deben desmantelarse primero, es decir, construir dentro de un proyecto de software existente
Paul Dixon
fuente
2

Basado en lo que sé de James Gregory (el tipo detrás de Fluent NHibernate), creo que la entrada de Wikipedia para brownfield es un poco teórica. En Brownfield Application Development , lo definimos como:

un proyecto, o código base, que fue creado previamente y puede estar contaminado por prácticas, estructura y diseño deficientes, pero que tiene el potencial de ser revivido a través de una refactorización integral y dirigida

Versión corta: un proyecto existente que necesita trabajo pero que aún se desarrolla activamente (a diferencia de la mayoría de los sistemas heredados).


fuente
2

Existe un gran debate en torno a la decisión de una empresa de 'greenfield' o 'brownfield' o refactorizar el código heredado.

La decisión debe tomarse teniendo en cuenta muchos factores, entre los que destacan los fondos disponibles para desarrollar una aplicación nueva. En muchos casos, la aplicación heredada es la fuente de ingresos actual de la compañía y cualquier reemplazo nuevo de ese código heredado no generará un solo dólar rojo hasta que se haya desarrollado por completo y esté en manos del primer cliente que pague.

Si bien la preferencia de la mayoría de los ingenieros de software es EMPEZAR UN NUEVO PROYECTO GREENFIELD porque generalmente odian el OPC (Código de otras personas), puede que no siempre sea en el largo plazo financiero de la empresa.

Escribí un artículo que analiza los riesgos que implican los proyectos greenfield basándome en una experiencia muy real en una empresa para la que trabajé hace más de 20 años (mostrando mi edad ahora;). Puede leerlo aquí:

http://stepaheadsoftware.blogspot.com.au/2012/09/greenfield-or-refactor-legacy-code-base.html

Volksman
fuente