Was sind Greenfield- und Brownfield-Anwendungen?

89

Ich habe den folgenden Satz im Fluent NHibernate-Wiki gelesen :

...; Für die meisten Greenfield- Anwendungen (und auch für einige Brownfield- Anwendungen ) ist die automatische Zuordnung jedoch mehr als möglich.

Was sind Greenfield- und Brownfield-Anwendungen?

Svish
quelle

Antworten:

130

Greenfield

In anderen Disziplinen wie dem Software-Engineering ist eine grüne Wiese auch ein Projekt, dem jegliche Einschränkungen fehlen, die durch vorherige Arbeiten auferlegt wurden. Die Analogie ist die des Baus auf der grünen Wiese, wo keine bestehende Struktur umgebaut oder abgerissen werden muss.

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

Braunes Feld

Brownfield Development ist ein Begriff, der in der IT-Branche häufig verwendet wird, um Problembereiche zu beschreiben, die die Entwicklung und Bereitstellung neuer Softwaresysteme in unmittelbarer Gegenwart vorhandener (älterer) Softwareanwendungen / -systeme erfordern. Dies bedeutet, dass jede neue Softwarearchitektur die bereits vorhandene Live-Software berücksichtigen und mit dieser koexistieren muss.

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

Bombe
quelle
28
"Glücklicherweise war Google für mich nicht inaktiv, sodass ich die folgenden Definitionen innerhalb von Sekunden finden konnte." - Warum genau wird diese Aussage benötigt? Ich kann verstehen, dass Sie sich über eine „einfache“ Frage ärgern und diese aus Frustration oder so etwas hinzufügen, aber warum sollten Sie die Aussage wieder hinzufügen, nachdem sie entfernt wurde?
AgentConundrum
8
Ich stimme @AgentConundrum zu. Dies ist nun das zweite Ergebnis, das Google zurückgibt. Verliere die Bemerkung.
Rob Bell
5
Das liegt daran, dass ich immer noch der Meinung bin, dass die Leute lernen müssen, Google zu verwenden, bevor sie andere Dinge ausprobieren können. Weißt du, einem Mann einen Fisch geben oder einem Mann das Fischen beibringen.
Bombe
17
@Bombe Ist Ihnen nicht bewusst, dass es Inhalte sind, die Google bevölkern? Daher benötigen Sie die Antworten irgendwo, damit sie auf Google gefunden werden können ... Sie haben den Wiki-Artikel auf Google gefunden, aber wenn Google die Antwort hätte, warum hätte der Wiki-Artikel dann geschrieben werden müssen?
Robin Day
28
Lustige Sache ist. Ich habe das jetzt über Google gefunden. Erster Link. ;)
Ibsonic
12

Ich denke, es könnte mit den städtebaulichen Begriffen "Greenfield Land" und "Brownfield Land" zusammenhängen . Greenfield Land ist unbebautes Land - landwirtschaftlich, landschaftlich oder natürlich. Brownfield Land ist entwickeltes Land.

Eine Brownfield-Anwendung ist eine vorhandene Anwendung, während eine Greenfield-Anwendung noch nicht erstellt wurde oder sich in einem sehr frühen Entwicklungsstadium befindet.

Thomas Owens
quelle
Macht zumindest sehr viel Sinn. Aber wie würden Sie eine Brownfield-Bewerbung bekommen? Werden Anwendungen nicht ursprünglich von Grund auf neu erstellt? Wann wird es Brachfläche?
Svish
2
Eine Brownfield-Anwendung bezieht sich normalerweise auf ein größeres Upgrade oder eine Neuentwicklung einer vorhandenen Anwendung, bei der Probleme mit der Abwärtskompatibilität mit vorhandenen Dateiformaten, Schnittstellen, Modulen usw. auftreten Kompatibilität und neu anfangen.
Jeremy Bourque
1
Brownfield wäre eine wesentliche Verbesserung oder eine weniger als vollständige Neufassung einer vorhandenen Live-Anwendung. Mit anderen Worten, Legacy-Code.
APC
4

Greenfield-Apps: Neuentwicklung, keine vorherige Arbeit, die Ihre Lösung einschränkt. Ich denke, der Begriff stammt aus einem nicht "ungepflügten, grünen" Feld.

Brownfield: vorhandene Anwendung, viele vorhandene Dinge zu berücksichtigen, etc.

Siehe diesen Beitrag .

tijmenvdk
quelle
2

Ich würde vermuten, dass es eine Analogie zum Bauen ist

  • Ein Standort auf der grünen Wiese ist Neuland - dh ein neues Projekt, bei dem ein neues Softwareprojekt von Grund auf neu gestartet wird
  • Auf einer Brachfläche müssen vorhandene Strukturen zuerst abgebaut werden, dh innerhalb eines vorhandenen Softwareprojekts
Paul Dixon
quelle
2

Basierend auf dem, was ich über James Gregory (den Mann hinter Fluent NHibernate) weiß, denke ich, dass der Wikipedia-Eintrag für Brownfield ein wenig theoretisch ist. In der Brownfield-Anwendungsentwicklung definieren wir Folgendes:

Ein Projekt oder eine Codebasis, die zuvor erstellt wurde und möglicherweise durch schlechte Praktiken, Struktur und Design kontaminiert ist, aber das Potenzial hat, durch umfassendes und gezieltes Refactoring wiederbelebt zu werden

Kurzversion: Ein vorhandenes Projekt, das Arbeit benötigt, aber noch aktiv entwickelt wird (im Gegensatz zu den meisten Legacy-Systemen).


quelle
2

Es gibt viele Debatten über die Entscheidung eines Unternehmens, "Greenfield" oder "Brownfield" zu verwenden oder Legacy-Code zu überarbeiten.

Die Entscheidung muss unter Berücksichtigung vieler Faktoren getroffen werden - nicht zuletzt der verfügbaren Mittel für die Entwicklung einer Greenfield-Anwendung. In vielen Fällen handelt es sich bei der Legacy-App um die aktuelle Cash Cow des Unternehmens, und jeder Ersatz dieses Legacy-Codes auf der grünen Wiese bringt keinen einzigen roten Dollar, bis er vollständig entwickelt ist und in den Händen des ersten zahlenden Kunden liegt.

Während die meisten Softwareentwickler START NEW GREENFIELD PROJECT bevorzugen, weil sie normalerweise OPC (Other People's Code) hassen, ist dies möglicherweise nicht immer langfristig finanziell für das Unternehmen.

Ich habe einen Artikel geschrieben, der die mit Greenfield-Projekten verbundenen Risiken analysiert und auf einer sehr realen Erfahrung in einem Unternehmen basiert, für das ich vor über 20 Jahren gearbeitet habe (und mein Alter jetzt zeigt;). Sie können es hier lesen:

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

Volksman
quelle