web-dev-qa-db-fra.com

Quelles sont les applications de greenfield et brownfield?

J'ai lu la phrase suivante dans le wiki Fluent NHibernate :

...; cependant, pour la plupart des applications greenfield (et pas mal brownfield aussi) ) le mappage automatique sera plus que capable.

Quelles sont les applications de greenfield et brownfield?

77
Svish

Greenfield

dans d'autres disciplines comme le génie logiciel, un greenfield est aussi un projet qui ne présente aucune contrainte imposée par les travaux antérieurs. L'analogie est avec celle de la construction sur un terrain vierge où il n'est pas nécessaire de rénover ou de démolir une structure existante.

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

Brownfield

Le développement de friches industrielles est un terme couramment utilisé dans l'industrie informatique pour décrire les espaces problématiques nécessitant le développement et le déploiement de nouveaux systèmes logiciels en présence immédiate d'applications/systèmes logiciels existants (hérités). Cela implique que toute nouvelle architecture logicielle doit prendre en compte et coexister avec des logiciels vivants déjà in situ.

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

110
Bombe

Je pense que cela pourrait être lié aux termes d'urbanisme "greenfield land" et "brownfield land" . Les terres vierges sont des terres non développées - agricoles, paysagères ou naturelles. Les friches industrielles sont des terres aménagées.

Une application en friche est une application existante, tandis qu'une application en friche est une application qui n'est pas encore faite ou qui est à un stade très précoce de développement.

12
Thomas Owens

Applications Greenfield: nouveau développement, aucun travail préalable effectué qui pose des contraintes sur votre solution. Je pense que le terme vient d'un champ non "non labouré, vert".

Brownfield: application existante, beaucoup de choses existantes à considérer, etc.

Voir cet article .

3
tijmenvdk

Je suppose que c'est une analogie avec la construction

  • a greenfield le site est vierge - c'est-à-dire un nouveau projet, démarrer un nouveau projet logiciel à partir de zéro
  • un brownfield site est celui où les structures existantes doivent d'abord être démantelées, c'est-à-dire construire dans un projet logiciel existant
2
Paul Dixon

Il y a beaucoup de débats autour de la décision d'une entreprise de "greenfield" ou "brownfield" ou refactor code hérité.

La décision doit être prise en tenant compte de nombreux facteurs - et non des moindres, les fonds disponibles pour développer une application entièrement nouvelle. Dans de nombreux cas, l'application héritée est la vache à lait actuelle de l'entreprise et tout remplacement de ce code hérité ne fera pas un seul dollar rouge tant qu'il n'aura pas été entièrement développé et entre les mains du premier client payant.

Bien que la préférence pour la plupart des ingénieurs logiciels soit START NEW GREENFIELD PROJECT parce qu'ils détestent généralement OPC (Other People's Code), cela peut ne pas toujours être à long terme pour l'entreprise.

J'ai écrit un article qui analyse les risques liés aux projets greenfield en me basant sur une expérience très réelle dans une entreprise où j'ai travaillé il y a plus de 20 ans (montrant mon âge maintenant;). Vous pouvez le lire ici:

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

2
Volksman

Sur la base de ce que je sais de James Gregory (le gars derrière Fluent NHibernate), je pense que l'entrée Wikipedia pour brownfield est un peu théorique. Dans Brownfield Application Development , nous le définissons comme:

un projet, ou base de code, qui a été créé précédemment et qui peut être contaminé par de mauvaises pratiques, une structure et une conception médiocres, mais qui peut être relancé grâce à une refactorisation complète et dirigée

Version courte: Un projet existant qui a besoin de travail mais qui est toujours activement développé (contrairement à la plupart des systèmes hérités).

2
Kyle Baley