Jakie są aplikacje typu greenfield i brownfield?

90

Przeczytałem następujące zdanie na wiki Fluent NHibernate :

...; Jednak dla większości greenfield aplikacji (i całkiem kilku poprzemysłowych nich zbyt) mapowanie auto będzie bardziej niż zdolny.

Jakie są aplikacje typu greenfield i brownfield?

Svish
źródło

Odpowiedzi:

133

Zielone pole

w innych dyscyplinach, takich jak inżynieria oprogramowania, greenfield jest również projektem, w którym brakuje jakichkolwiek ograniczeń narzuconych wcześniejszą pracą. Analogia jest do budowy na terenach niezagospodarowanych, gdzie nie ma potrzeby przebudowy lub wyburzania istniejącej konstrukcji.

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

Brązowe pole

Rozwój terenów zdegradowanych jest terminem powszechnie używanym w branży IT do opisania przestrzeni problemowych wymagających rozwoju i wdrażania nowych systemów oprogramowania w bezpośredniej obecności istniejących (starszych) aplikacji / systemów. Oznacza to, że każda nowa architektura oprogramowania musi uwzględniać i współistnieć z oprogramowaniem już istniejącym.

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

Bombe
źródło
30
„Na szczęście Google nie działało, więc mogłem znaleźć następujące definicje w ciągu zaledwie kilku sekund”. - Dokładnie dlaczego to oświadczenie jest potrzebne? Rozumiem, że denerwuje Cię „proste” pytanie i dodawanie tego z frustracji lub czegoś w tym rodzaju, ale po co dodawać to oświadczenie po usunięciu?
AgentConundrum
8
Zgadzam się z @AgentConundrum. To jest teraz drugi wynik zwracany przez Google. Zapomnij o uwadze.
Rob Bell
6
To dlatego, że nadal uważam, że ludzie muszą nauczyć się korzystać z Google, zanim spróbują innych rzeczy. Wiesz, dać człowiekowi rybę vs. uczenie człowieka łowienia.
Bombe
17
@Bombe, czy nie wiesz, że to treść wypełnia Google? Dlatego potrzebujesz gdzieś odpowiedzi, aby można je było znaleźć w google ... Znalazłeś artykuł wiki w Google, ale jeśli Google ma odpowiedź, to dlaczego artykuł wiki miałby wymagać pisania?
Robin Day
31
To zabawne. Znalazłem to teraz, dzięki Google. Pierwszy link. ;)
Ibsonic
13

Myślę, że może to być związane z terminami planowania urbanistycznego „tereny niezagospodarowane” i „tereny zdegradowane” . Grunty niezagospodarowane to tereny niezabudowane - rolne, krajobrazowe lub naturalne. Tereny zdegradowane to tereny zabudowane.

Aplikacja dla terenów zdegradowanych to istniejąca aplikacja, podczas gdy aplikacja od podstaw to taka, która nie została jeszcze stworzona lub jest na bardzo wczesnym etapie rozwoju.

Thomas Owens
źródło
Ma to przynajmniej dużo sensu. Ale jak uzyskać podanie o teren zdegradowany? Czy aplikacje nie są pierwotnie tworzone od podstaw? Kiedy staje się terenem zdegradowanym?
Svish
2
Aplikacja terenów zdegradowanych zwykle odnosi się do poważnej aktualizacji lub przebudowy istniejącej aplikacji, w przypadku której występują problemy z kompatybilnością wsteczną z istniejącymi formatami plików, interfejsami, modułami itp. Czasami aplikacja terenów zdegradowanych będzie od podstaw, jeśli zdecyduje się zignorować wszystkie kwestie wsteczne zgodność i zacznij od nowa.
Jeremy Bourque
1
Brownfield byłby głównym ulepszeniem lub mniej niż całkowitym przepisaniem istniejącej aplikacji. Innymi słowy, starszy kod.
APC
4

Aplikacje typu greenfield: nowy program, brak wcześniejszej pracy, która ogranicza Twoje rozwiązanie. Myślę, że to określenie pochodzi od nieoranego, zielonego pola.

Brownfield: istniejąca aplikacja, wiele istniejących rzeczy do rozważenia itp.

Zobacz ten post .

tijmenvdk
źródło
2

Myślę, że to analogia do budowania

  • greenfield strona jest dziewicą ziemia - czyli nowy projekt, rozpoczynając nowy projekt oprogramowania od podstaw
  • teren poprzemysłowy to taki, w którym należy najpierw zdemontować istniejące konstrukcje, tj. budynek w ramach istniejącego projektu oprogramowania
Paul Dixon
źródło
2

Opierając się na tym, co wiem o Jamesie Gregorym (człowieku stojącym za Fluent NHibernate), myślę, że wpis w Wikipedii dotyczący brownfield jest trochę teoretyczny. W Brownfield Application Development definiujemy to jako:

projekt lub kod źródłowy, który został wcześniej utworzony i może być skażony kiepskimi praktykami, strukturą i projektem, ale może zostać wskrzeszony poprzez kompleksową i ukierunkowaną refaktoryzację

Wersja skrócona: istniejący projekt, który wymaga pracy, ale jest nadal aktywnie rozwijany (w przeciwieństwie do większości starszych systemów).


źródło
2

Toczy się wiele dyskusji wokół decyzji firmy o wprowadzeniu kodu „greenfield” lub „brownfield” lub refaktoryzacji starego kodu.

Decyzja musi być podjęta z uwzględnieniem wielu czynników - nie tylko dostępnych środków na opracowanie aplikacji typu greenfield. W wielu przypadkach starsza aplikacja jest obecną krową dojną firmy, a każda zamiana od podstaw tego starego kodu nie przyniesie ani jednego czerwonego dolara, dopóki nie zostanie w pełni opracowana i nie będzie w rękach pierwszego płacącego klienta.

Podczas gdy większość inżynierów oprogramowania preferuje START NEW GREENFIELD PROJECT, ponieważ zazwyczaj nienawidzą OPC (Kodeksu Innych Ludzi), nie zawsze może to dotyczyć długoterminowych finansów firmy.

Napisałem artykuł analizujący ryzyko związane z projektami greenfield w oparciu o bardzo realne doświadczenie w firmie, w której pracowałem ponad 20 lat temu (pokazując mój wiek;). Możesz to przeczytać tutaj:

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

Volksman
źródło